[
  {
    "path": ".codacy.yml",
    "content": "---\nexclude_paths:\n  - .dredd/**"
  },
  {
    "path": ".cursorignore",
    "content": "/tests/e2e/"
  },
  {
    "path": ".devcontainer/config-runner.json",
    "content": "{\n    \"web_host\": \"http://localhost:3000\",\n    \"runner\": {\n        \"token_file\": \"/home/codespace/.semaphore-runner-token\"\n    }\n}"
  },
  {
    "path": ".devcontainer/config.json",
    "content": "{\n   \"bolt\": {\n       \"host\": \"/workspaces/semaphore/database.boltdb\",\n       \"options\": {\n           \"sessionConnection\": \"false\"\n       }\n   },\n   \"dialect\": \"bolt\",\n   \"cookie_hash\": \"5WJjXCLpvf3Cn5t+C/IV9F0asZUQLakOhCT+eSdIwP0=\",\n   \"cookie_encryption\": \"6x6mmQWGn6YcsHN1rN0HiQjhYA+7HukcbCxUGHuT2CE=\"\n}\n\n"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "content": "{\n  \"image\": \"mcr.microsoft.com/devcontainers/universal:4\",\n  \"features\": {\n    \"ghcr.io/devcontainers/features/go:1\": {},\n    \"ghcr.io/devcontainers/features/node:1\": {}\n  },\n  \"postCreateCommand\": \"./.devcontainer/postCreateCommand.sh\"\n}\n"
  },
  {
    "path": ".devcontainer/postCreateCommand.sh",
    "content": "#!/bin/sh\n\ngo install github.com/go-task/task/v3/cmd/task@latest\n\n(cd ./web && npm install)\n\npython3 -m venv .venv\n\n./.venv/bin/pip3 install ansible\n\ntask build\ntask dredd:goodman\ntask dredd:hooks\n\ncp ./.devcontainer/config.json ./.dredd/config.json\n\n./bin/semaphore user add \\\n    --admin \\\n    --login admin \\\n    --name Admin \\\n    --email admin@example.com \\\n    --password changeme \\\n    --config ./.devcontainer/config.json"
  },
  {
    "path": ".dockerignore",
    "content": "web/node_modules/\nvendor/\n"
  },
  {
    "path": ".dredd/dredd.docker.yml",
    "content": "dry-run: null\nhookfiles: ./.dredd/compiled_hooks\nlanguage: go\nserver-wait: 5\ninit: false\ncustom: {}\nnames: false\nonly: []\nreporter: []\noutput: []\nheader: \"Authorization: bearer h4a_i4qslpnxyyref71rk5nqbwxccrs7enwvggx0vfs=\"\nsorted: false\nuser: null\ninline-errors: false\ndetails: false\nmethod: []\ncolor: true\nloglevel: debug\npath: []\nhooks-worker-timeout: 5000\nhooks-worker-connect-timeout: 1500\nhooks-worker-connect-retry: 500\nhooks-worker-after-connect-wait: 100\nhooks-worker-term-timeout: 5000\nhooks-worker-term-retry: 500\nhooks-worker-handler-host: 0.0.0.0\nhooks-worker-handler-port: 61321\nconfig: ./.dredd/dredd.yml\nblueprint: api-docs.yml\nendpoint: 'http://server:3000'\n"
  },
  {
    "path": ".dredd/dredd.local.yml",
    "content": "dry-run: null\nhookfiles: ./.dredd/compiled_hooks\nlanguage: go\nserver-wait: 5\ninit: false\ncustom: {}\nnames: false\nonly: []\nreporter: []\noutput: []\nheader: \"Authorization: bearer h4a_i4qslpnxyyref71rk5nqbwxccrs7enwvggx0vfs=\"\nsorted: false\nuser: null\ninline-errors: false\ndetails: false\nmethod: []\ncolor: true\nloglevel: debug\npath: []\nhooks-worker-timeout: 5000\nhooks-worker-connect-timeout: 1500\nhooks-worker-connect-retry: 500\nhooks-worker-after-connect-wait: 100\nhooks-worker-term-timeout: 5000\nhooks-worker-term-retry: 500\nhooks-worker-handler-host: 0.0.0.0\nhooks-worker-handler-port: 61321\nconfig: ./.dredd/dredd.yml\nblueprint: api-docs.yml\nendpoint: 'http://localhost:3000'\n"
  },
  {
    "path": ".dredd/dredd.testing.yml",
    "content": "dry-run: null\nhookfiles: ./.dredd/compiled_hooks\nlanguage: go\nserver: ./.dredd/server-wrapper.sh\nserver-wait: 5\ninit: false\ncustom: {}\nnames: false\nonly: []\nreporter: []\noutput: []\nheader: \"Authorization: bearer h4a_i4qslpnxyyref71rk5nqbwxccrs7enwvggx0vfs=\"\nsorted: false\nuser: null\ninline-errors: false\ndetails: false\nmethod: []\ncolor: true\nloglevel: debug\npath: []\nhooks-worker-timeout: 5000\nhooks-worker-connect-timeout: 1500\nhooks-worker-connect-retry: 500\nhooks-worker-after-connect-wait: 100\nhooks-worker-term-timeout: 5000\nhooks-worker-term-retry: 500\nhooks-worker-handler-host: 0.0.0.0\nhooks-worker-handler-port: 61321\nconfig: ./.dredd/dredd.yml\nblueprint: api-docs.yml\nendpoint: 'http://localhost:3000'\n"
  },
  {
    "path": ".dredd/dredd.windows.yml",
    "content": "dry-run: null\nhookfiles: ./.dredd/compiled_hooks.exe\nlanguage: go\nserver-wait: 5\ninit: false\ncustom: {}\nnames: false\nonly: []\nreporter: []\noutput: []\nheader: \"Authorization: bearer h4a_i4qslpnxyyref71rk5nqbwxccrs7enwvggx0vfs=\"\nsorted: false\nuser: null\ninline-errors: false\ndetails: false\nmethod: []\ncolor: true\nloglevel: debug\npath: []\nhooks-worker-timeout: 5000\nhooks-worker-connect-timeout: 1500\nhooks-worker-connect-retry: 500\nhooks-worker-after-connect-wait: 100\nhooks-worker-term-timeout: 5000\nhooks-worker-term-retry: 500\nhooks-worker-handler-host: 0.0.0.0\nhooks-worker-handler-port: 61321\nconfig: ./.dredd/dredd.yml\nblueprint: api-docs.yml\nendpoint: 'http://localhost:3000'\n"
  },
  {
    "path": ".dredd/hooks/capabilities.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\ttrans \"github.com/snikch/goodman/transaction\"\n)\n\n// STATE\n// Runtime created objects we need to reference in test setups\nvar testRunnerUser *db.User\nvar userPathTestUser *db.User\nvar userProject *db.Project\nvar userKey *db.AccessKey\nvar task *db.Task\nvar schedule *db.Schedule\nvar view *db.View\nvar integration *db.Integration\nvar integrationextractvalue *db.IntegrationExtractValue\nvar integrationmatch *db.IntegrationMatcher\nvar invite *db.ProjectInvite\n\n// Runtime created simple ID values for some items we need to reference in other objects\nvar repoID int\nvar inventoryID int\nvar environmentID int\nvar templateID int\nvar integrationID int\nvar integrationExtractValueID int\nvar integrationMatchID int\n\nvar capabilities = map[string][]string{\n\t\"user\":                    {},\n\t\"project\":                 {\"user\"},\n\t\"repository\":              {\"access_key\"},\n\t\"inventory\":               {\"repository\"},\n\t\"environment\":             {\"repository\"},\n\t\"template\":                {\"repository\", \"inventory\", \"environment\", \"view\"},\n\t\"task\":                    {\"template\"},\n\t\"schedule\":                {\"template\"},\n\t\"view\":                    {},\n\t\"integration\":             {\"project\", \"template\"},\n\t\"integrationextractvalue\": {\"integration\"},\n\t\"integrationmatcher\":      {\"integration\"},\n\t\"invite\":                  {\"user\", \"project\"},\n}\n\nfunc capabilityWrapper(cap string) func(t *trans.Transaction) {\n\treturn func(t *trans.Transaction) {\n\t\taddCapabilities([]string{cap})\n\t}\n}\n\nfunc addCapabilities(caps []string) {\n\tdbConnect()\n\tdefer store.Close(\"\")\n\tresolved := make([]string, 0)\n\tuid := getUUID()\n\tresolveCapability(caps, resolved, uid)\n}\n\nfunc resolveCapability(caps []string, resolved []string, uid string) {\n\tfor _, v := range caps {\n\n\t\t//if cap has deps resolve them\n\t\tif val, ok := capabilities[v]; ok {\n\t\t\tresolveCapability(val, resolved, uid)\n\t\t}\n\n\t\t//skip if already resolved\n\t\tif _, exists := stringInSlice(v, resolved); exists {\n\t\t\tcontinue\n\t\t}\n\n\t\t//Add dep specific stuff\n\t\tswitch v {\n\t\tcase \"invite\":\n\t\t\tinvite = addInvite()\n\t\tcase \"schedule\":\n\t\t\tschedule = addSchedule()\n\t\tcase \"view\":\n\t\t\tview = addView()\n\t\tcase \"user\":\n\t\t\tuserPathTestUser = addUser()\n\t\tcase \"project\":\n\t\t\tuserProject = addProject()\n\t\t\t//allow the admin user (test executor) to manipulate the project\n\t\t\taddUserProjectRelation(userProject.ID, testRunnerUser.ID)\n\t\t\taddUserProjectRelation(userProject.ID, userPathTestUser.ID)\n\t\tcase \"access_key\":\n\t\t\tuserKey = addAccessKey(&userProject.ID)\n\t\tcase \"repository\":\n\t\t\tpRepo, err := store.CreateRepository(db.Repository{\n\t\t\t\tProjectID: userProject.ID,\n\t\t\t\tGitURL:    \"git@github.com/ansible,semaphore/semaphore\",\n\t\t\t\tGitBranch: \"develop\",\n\t\t\t\tSSHKeyID:  userKey.ID,\n\t\t\t\tName:      \"ITR-\" + uid,\n\t\t\t})\n\t\t\tprintError(err)\n\t\t\trepoID = pRepo.ID\n\t\tcase \"inventory\":\n\t\t\tres, err := store.CreateInventory(db.Inventory{\n\t\t\t\tProjectID:    userProject.ID,\n\t\t\t\tName:         \"ITI-\" + uid,\n\t\t\t\tType:         \"static\",\n\t\t\t\tSSHKeyID:     &userKey.ID,\n\t\t\t\tBecomeKeyID:  &userKey.ID,\n\t\t\t\tInventory:    \"Test Inventory\",\n\t\t\t\tRepositoryID: &repoID,\n\t\t\t})\n\t\t\tprintError(err)\n\t\t\tinventoryID = res.ID\n\t\tcase \"environment\":\n\t\t\tpwd := \"test-pass\"\n\t\t\tenv := \"{}\"\n\t\t\tsecret := db.EnvironmentSecret{\n\t\t\t\tType:      db.EnvironmentSecretEnv,\n\t\t\t\tName:      \"TEST\",\n\t\t\t\tSecret:    \"VALUE\",\n\t\t\t\tOperation: \"create\",\n\t\t\t}\n\t\t\tres, err := store.CreateEnvironment(db.Environment{\n\t\t\t\tProjectID: userProject.ID,\n\t\t\t\tName:      \"ITI-\" + uid,\n\t\t\t\tJSON:      \"{}\",\n\t\t\t\tPassword:  &pwd,\n\t\t\t\tENV:       &env,\n\t\t\t})\n\t\t\tprintError(err)\n\t\t\t_, err = store.CreateAccessKey(db.AccessKey{\n\t\t\t\tString:        secret.Secret,\n\t\t\t\tEnvironmentID: &res.ID,\n\t\t\t\tProjectID:     &userProject.ID,\n\t\t\t\tType:          db.AccessKeyString,\n\t\t\t\tOwner:         secret.Type.GetAccessKeyOwner(),\n\t\t\t})\n\t\t\tprintError(err)\n\t\t\tenvironmentID = res.ID\n\t\tcase \"template\":\n\t\t\targs := \"[]\"\n\t\t\tdesc := \"Hello, World!\"\n\t\t\tbranch := \"main\"\n\t\t\tres, err := store.CreateTemplate(db.Template{\n\t\t\t\tProjectID:               userProject.ID,\n\t\t\t\tInventoryID:             &inventoryID,\n\t\t\t\tRepositoryID:            repoID,\n\t\t\t\tEnvironmentID:           &environmentID,\n\t\t\t\tName:                    \"Test-\" + uid,\n\t\t\t\tPlaybook:                \"test-playbook.yml\",\n\t\t\t\tArguments:               &args,\n\t\t\t\tAllowOverrideArgsInTask: false,\n\t\t\t\tDescription:             &desc,\n\t\t\t\tViewID:                  &view.ID,\n\t\t\t\tApp:                     db.AppAnsible,\n\t\t\t\tGitBranch:               &branch,\n\t\t\t\tSurveyVars:              []db.SurveyVar{},\n\t\t\t})\n\n\t\t\tprintError(err)\n\t\t\ttemplateID = res.ID\n\t\tcase \"task\":\n\t\t\ttask = addTask()\n\t\tcase \"integration\":\n\t\t\tintegration = addIntegration()\n\t\t\tintegrationID = integration.ID\n\t\tcase \"integrationextractvalue\":\n\t\t\tintegrationextractvalue = addIntegrationExtractValue()\n\t\t\tintegrationExtractValueID = integrationextractvalue.ID\n\t\tcase \"integrationmatcher\":\n\t\t\tintegrationmatch = addIntegrationMatcher()\n\t\t\tintegrationMatchID = integrationmatch.ID\n\t\tdefault:\n\t\t\tpanic(\"unknown capability \" + v)\n\t\t}\n\t\tresolved = append(resolved, v)\n\t}\n}\n\n// HOOKS\nvar skipTest = func(t *trans.Transaction) {\n\tt.Skip = true\n}\n\n// Contains all the substitutions for paths under test\n// The parameter example value in the api-doc should respond to the index+1 of the function in this slice\n// ie the project id, with example value 1, will be replaced by the return value of pathSubPatterns[0]\nvar pathSubPatterns = []func() string{\n\tfunc() string { return strconv.Itoa(userProject.ID) },\n\tfunc() string { return strconv.Itoa(userPathTestUser.ID) },\n\tfunc() string { return strconv.Itoa(userKey.ID) },\n\tfunc() string { return strconv.Itoa(repoID) },\n\tfunc() string { return strconv.Itoa(inventoryID) },\n\tfunc() string { return strconv.Itoa(environmentID) },\n\tfunc() string { return strconv.Itoa(templateID) },\n\tfunc() string { return strconv.Itoa(task.ID) },\n\tfunc() string { return strconv.Itoa(schedule.ID) },\n\tfunc() string { return strconv.Itoa(view.ID) },\n\tfunc() string { return strconv.Itoa(integration.ID) },\n\tfunc() string { return strconv.Itoa(integrationextractvalue.ID) },\n\tfunc() string { return strconv.Itoa(integrationmatch.ID) },\n\tfunc() string { return strconv.Itoa(invite.ID) }, // invite_id, x-example: 14\n}\n\n// alterRequestPath with the above slice of functions\nfunc alterRequestPath(t *trans.Transaction) {\n\tpathArgs := strings.Split(t.FullPath, \"/\")\n\texploded := make([]string, len(pathArgs))\n\tcopy(exploded, pathArgs)\n\tfor k, v := range pathSubPatterns {\n\n\t\tpos, exists := stringInSlice(strconv.Itoa(k+1), exploded)\n\t\tif exists {\n\t\t\tpathArgs[pos] = v()\n\t\t}\n\t}\n\tt.FullPath = strings.Join(pathArgs, \"/\")\n\n\tt.Request.URI = t.FullPath\n}\n\nfunc alterRequestBody(t *trans.Transaction) {\n\tvar request map[string]interface{}\n\tjson.Unmarshal([]byte(t.Request.Body), &request)\n\n\tif userProject != nil {\n\t\tbodyFieldProcessor(\"project_id\", userProject.ID, &request)\n\t}\n\tbodyFieldProcessor(\"json\", \"{}\", &request)\n\tif userKey != nil {\n\t\tbodyFieldProcessor(\"ssh_key_id\", userKey.ID, &request)\n\t\tbodyFieldProcessor(\"become_key_id\", userKey.ID, &request)\n\t}\n\tif invite != nil {\n\t\tbodyFieldProcessor(\"invite_id\", 4, &request)\n\t}\n\tbodyFieldProcessor(\"environment_id\", environmentID, &request)\n\tbodyFieldProcessor(\"inventory_id\", inventoryID, &request)\n\tbodyFieldProcessor(\"repository_id\", repoID, &request)\n\tbodyFieldProcessor(\"template_id\", templateID, &request)\n\tbodyFieldProcessor(\"build_template_id\", nil, &request)\n\tif task != nil {\n\t\tbodyFieldProcessor(\"task_id\", task.ID, &request)\n\t}\n\tif schedule != nil {\n\t\tbodyFieldProcessor(\"schedule_id\", schedule.ID, &request)\n\t}\n\tif view != nil {\n\t\tbodyFieldProcessor(\"view_id\", view.ID, &request)\n\t}\n\n\tif integration != nil {\n\t\tbodyFieldProcessor(\"integration_id\", integration.ID, &request)\n\t}\n\tif integrationextractvalue != nil {\n\t\tbodyFieldProcessor(\"value_id\", integrationextractvalue.ID, &request)\n\t}\n\tif integrationmatch != nil {\n\t\tbodyFieldProcessor(\"matcher_id\", integrationmatch.ID, &request)\n\t}\n\n\t// Inject object ID to body for PUT requests\n\tif strings.ToLower(t.Request.Method) == \"put\" {\n\n\t\tputRequestPathRE := regexp.MustCompile(`\\w+/(\\d+)/?$`)\n\t\tm := putRequestPathRE.FindStringSubmatch(t.FullPath)\n\t\tif len(m) > 0 {\n\t\t\tobjectID, err := strconv.Atoi(m[1])\n\t\t\tif err != nil {\n\t\t\t\tpanic(\"Invalid object ID in PUT request \" + t.FullPath)\n\t\t\t}\n\t\t\trequest[\"id\"] = objectID\n\n\t\t} else {\n\t\t\tpanic(\"Unexpected PUT request \" + t.FullPath)\n\t\t}\n\t}\n\n\tout, _ := json.Marshal(request)\n\tt.Request.Body = string(out)\n}\n\nfunc bodyFieldProcessor(id string, sub interface{}, request *map[string]interface{}) {\n\tif _, ok := (*request)[id]; ok {\n\t\t(*request)[id] = sub\n\t}\n}\n"
  },
  {
    "path": ".dredd/hooks/helpers.go",
    "content": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\n\t\"github.com/go-gorp/gorp/v3\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/db/factory\"\n\t\"github.com/semaphoreui/semaphore/db/sql\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/snikch/goodman/transaction\"\n)\n\n// Test Runner User\nfunc addTestRunnerUser() {\n\tuid := getUUID()\n\ttestRunnerUser = &db.User{\n\t\tUsername: \"ITU-\" + uid,\n\t\tName:     \"ITU-\" + uid,\n\t\tEmail:    uid + \"@semaphore.test\",\n\t\tCreated:  db.GetParsedTime(tz.Now()),\n\t\tAdmin:    true,\n\t}\n\n\tdbConnect()\n\tdefer store.Close(\"\")\n\n\ttruncateAll()\n\n\tnewUser, err := store.CreateUserWithoutPassword(*testRunnerUser)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\ttestRunnerUser.ID = newUser.ID\n\n\taddToken(adminToken, testRunnerUser.ID)\n}\n\nfunc truncateAll() {\n\tvar tablesShouldBeTruncated = [...]string{\n\t\t\"access_key\",\n\t\t\"event\",\n\t\t\"user__token\",\n\t\t\"project\",\n\t\t\"task__output\",\n\t\t\"task\",\n\t\t\"session\",\n\t\t\"project__environment\",\n\t\t\"project__inventory\",\n\t\t\"project__repository\",\n\t\t\"project__template\",\n\t\t\"project__template_vault\",\n\t\t\"project__schedule\",\n\t\t\"project__user\",\n\t\t\"user\",\n\t\t\"project__view\",\n\t\t\"project__integration\",\n\t\t\"project__integration_extract_value\",\n\t\t\"project__integration_matcher\",\n\t}\n\n\tswitch store.(type) {\n\tcase *bolt.BoltDb:\n\t\t// Do nothing\n\tcase *sql.SqlDb:\n\t\tswitch store.(*sql.SqlDb).Sql().Dialect.(type) {\n\t\tcase gorp.PostgresDialect:\n\t\t\t// Do nothing\n\t\tcase gorp.MySQLDialect:\n\t\t\ttx, err := store.(*sql.SqlDb).Sql().Begin()\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\n\t\t\t_, err = tx.Exec(\"SET FOREIGN_KEY_CHECKS = 0\")\n\t\t\tif err == nil {\n\t\t\t\tfor _, tableName := range tablesShouldBeTruncated {\n\t\t\t\t\ttx.Exec(\"TRUNCATE TABLE \" + tableName)\n\t\t\t\t}\n\t\t\t\ttx.Exec(\"SET FOREIGN_KEY_CHECKS = 1\")\n\t\t\t}\n\n\t\t\tif err := tx.Commit(); err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc removeTestRunnerUser(transactions []*transaction.Transaction) {\n\tdbConnect()\n\tdefer store.Close(\"\")\n\t_ = store.DeleteAPIToken(testRunnerUser.ID, adminToken)\n\t_ = store.DeleteUser(testRunnerUser.ID)\n}\n\n// Parameter Substitution\nfunc setupObjectsAndPaths(t *transaction.Transaction) {\n\talterRequestPath(t)\n\talterRequestBody(t)\n}\n\n// Object Lifecycle\nfunc addUserProjectRelation(pid int, user int) {\n\t_, err := store.CreateProjectUser(db.ProjectUser{\n\t\tProjectID: pid,\n\t\tUserID:    user,\n\t\tRole:      db.ProjectOwner,\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc deleteUserProjectRelation(pid int, user int) {\n\terr := store.DeleteProjectUser(pid, user)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc addAccessKey(pid *int) *db.AccessKey {\n\tuid := getUUID()\n\tsecret := \"5up3r53cr3t\\n\"\n\n\tkey, err := store.CreateAccessKey(db.AccessKey{\n\t\tName:      \"ITK-\" + uid,\n\t\tType:      \"ssh\",\n\t\tSecret:    &secret,\n\t\tProjectID: pid,\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn &key\n}\n\nfunc addProject() *db.Project {\n\tuid := getUUID()\n\tchat := \"Test\"\n\tproject := db.Project{\n\t\tName:      \"ITP-\" + uid,\n\t\tCreated:   tz.Now(),\n\t\tAlertChat: &chat,\n\t}\n\tproject, err := store.CreateProject(project)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = store.UpdateProject(project)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &project\n}\n\nfunc addUser() *db.User {\n\tuid := getUUID()\n\tuser := db.User{\n\t\tCreated:  tz.Now(),\n\t\tUsername: \"ITU-\" + uid,\n\t\tEmail:    \"test@semaphore.\" + uid,\n\t\tName:     \"ITU-\" + uid,\n\t}\n\n\tuser, err := store.CreateUserWithoutPassword(user)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn &user\n}\n\nfunc addView() *db.View {\n\tview, err := store.CreateView(db.View{\n\t\tProjectID: userProject.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &view\n}\n\nfunc addInvite() *db.ProjectInvite {\n\tinvite, err := store.CreateProjectInvite(db.ProjectInvite{\n\t\tProjectID:     userProject.ID,\n\t\tUserID:        &userPathTestUser.ID,\n\t\tEmail:         &userPathTestUser.Email,\n\t\tRole:          \"owner\",\n\t\tStatus:        db.ProjectInvitePending,\n\t\tToken:         getUUID(),\n\t\tInviterUserID: testRunnerUser.ID,\n\t\tCreated:       tz.Now(),\n\t\tExpiresAt:     nil, // No expiration for this test\n\t\tAcceptedAt:    nil,\n\t})\n\n\tfmt.Println(\"***************************************\")\n\tfmt.Println(\"***************************************\")\n\tfmt.Println(\"***************************************\")\n\tfmt.Println(invite.ID)\n\tfmt.Println(\"***************************************\")\n\tfmt.Println(\"***************************************\")\n\tfmt.Println(\"***************************************\")\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &invite\n}\n\nfunc addSchedule() *db.Schedule {\n\tschedule, err := store.CreateSchedule(db.Schedule{\n\t\tTemplateID: int(templateID),\n\t\tCronFormat: \"* * * 1 *\",\n\t\tProjectID:  userProject.ID,\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &schedule\n}\n\nfunc addTask() *db.Task {\n\tt := db.Task{\n\t\tProjectID:  userProject.ID,\n\t\tTemplateID: templateID,\n\t\tStatus:     \"testing\",\n\t\tUserID:     &userPathTestUser.ID,\n\t\tCreated:    db.GetParsedTime(tz.Now()),\n\t}\n\n\tt, err := store.CreateTask(t, 0)\n\n\tif err != nil {\n\t\tfmt.Println(\"error during insertion of task:\")\n\t\tif j, e := json.Marshal(t); e == nil {\n\t\t\tfmt.Println(string(j))\n\t\t} else {\n\t\t\tfmt.Println(\"can not stringify task object\")\n\t\t}\n\t\tpanic(err)\n\t}\n\treturn &t\n}\n\nfunc addIntegration() *db.Integration {\n\tintegration, err := store.CreateIntegration(db.Integration{\n\t\tProjectID:  userProject.ID,\n\t\tName:       \"Test Integration\",\n\t\tTemplateID: templateID,\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &integration\n}\n\nfunc addIntegrationExtractValue() *db.IntegrationExtractValue {\n\tintegrationextractvalue, err := store.CreateIntegrationExtractValue(userProject.ID, db.IntegrationExtractValue{\n\t\tName:          \"Value\",\n\t\tIntegrationID: integrationID,\n\t\tValueSource:   db.IntegrationExtractBodyValue,\n\t\tBodyDataType:  db.IntegrationBodyDataJSON,\n\t\tKey:           \"key\",\n\t\tVariable:      \"var\",\n\t\tVariableType:  db.IntegrationVariableEnvironment,\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &integrationextractvalue\n}\n\nfunc addIntegrationMatcher() *db.IntegrationMatcher {\n\tintegrationmatch, err := store.CreateIntegrationMatcher(userProject.ID, db.IntegrationMatcher{\n\t\tName:          \"matcher\",\n\t\tIntegrationID: integrationID,\n\t\tMatchType:     \"body\",\n\t\tMethod:        \"equals\",\n\t\tBodyDataType:  \"json\",\n\t\tKey:           \"key\",\n\t\tValue:         \"value\",\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn &integrationmatch\n}\n\n// Token Handling\nfunc addToken(tok string, user int) {\n\t_, err := store.CreateAPIToken(db.APIToken{\n\t\tID:      tok,\n\t\tCreated: tz.Now(),\n\t\tUserID:  user,\n\t\tExpired: false,\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\n// HELPERS\nvar randSetup = false\n\nfunc getUUID() string {\n\tif !randSetup {\n\t\trandSetup = true\n\t}\n\treturn random.String(8)\n}\n\nfunc loadConfig() {\n\tcwd, _ := os.Getwd()\n\tfile, _ := os.Open(cwd + \"/.dredd/config.json\")\n\tif err := json.NewDecoder(file).Decode(&util.Config); err != nil {\n\t\tfmt.Println(\"Could not decode configuration!\")\n\t\tpanic(err)\n\t}\n}\n\nvar store db.Store\n\nfunc dbConnect() {\n\tstore = factory.CreateStore()\n\n\tstore.Connect(\"\")\n}\n\nfunc stringInSlice(a string, list []string) (int, bool) {\n\tfor k, b := range list {\n\t\tif b == a {\n\t\t\treturn k, true\n\t\t}\n\t}\n\treturn 0, false\n}\n\nfunc printError(err error) {\n\tif err != nil {\n\t\t//fmt.Println(err)\n\t\tpanic(err)\n\t}\n}\n"
  },
  {
    "path": ".dredd/hooks/main.go",
    "content": "package main\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/snikch/goodman/hooks\"\n\ttrans \"github.com/snikch/goodman/transaction\"\n)\n\nconst (\n\tadminToken   = \"h4a_i4qslpnxyyref71rk5nqbwxccrs7enwvggx0vfs=\"\n\texpiredToken = \"kwofd61g93-yuqvex8efmhjkgnbxlo8mp1tin6spyhu=\"\n)\n\nvar skipTests = []string{\n\t// TODO - dredd seems not to like the text response from this endpoint\n\t\"/api/ping > PING test > 200 > text/plain; charset=utf-8\",\n\t\"/api/ws > Websocket handler > 200 > application/json\",\n\t\"authentication > /api/auth/login > Performs Login > 204 > application/json\",\n\t\"authentication > /api/auth/logout > Destroys current session > 204 > application/json\",\n\t\"/project/{project_id}/notifications/test\",\n\t//\"/api/upgrade > Upgrade the server > 200 > application/json\",\n\t// TODO - Skipping this while we work out how to get a 204 response from the api for testing\n\t//\"/api/upgrade > Check if new updates available and fetch /info > 204 > application/json\",\n}\n\n// Dredd expects that you have already set up the database and run all migrations before it begins.\n// It will NOT initialize the database, only insert its test data.\n// It does this in a way which ignores errors, which is fine on the ci, but might be an issue locally\n// so look at the logs carefully if these tests fail and if in doubt re-init the db\n// These hooks do NOT clean up after themselves and they produce a lot of database writes,\n// so don't run this in production\nfunc main() {\n\n\th := hooks.NewHooks()\n\tserver := hooks.NewServer(hooks.NewHooksRunner(h))\n\n\t//Get database connection info and create an admin who's token is used to execute the tests\n\th.BeforeAll(func(t []*trans.Transaction) {\n\t\tloadConfig()\n\t\taddTestRunnerUser()\n\t})\n\n\tfor _, v := range skipTests {\n\t\th.Before(v, skipTest)\n\t}\n\n\th.BeforeEach(func(t *trans.Transaction) {\n\t\tif strings.HasPrefix(t.Name, \"user\") {\n\t\t\taddCapabilities([]string{\"user\"})\n\t\t} else if strings.HasPrefix(t.Name, \"project\") || strings.HasPrefix(t.Name, \"projects\") {\n\t\t\taddCapabilities([]string{\"project\"})\n\t\t}\n\t})\n\n\th.Before(\"user > /api/user/tokens/{api_token_id} > Expires API token > 204 > application/json\", func(transaction *trans.Transaction) {\n\t\tdbConnect()\n\t\tdefer store.Close(\"\")\n\t\taddToken(expiredToken, testRunnerUser.ID)\n\t})\n\n\th.After(\"user > /api/user/tokens/{api_token_id} > Expires API token > 204 > application/json\", func(transaction *trans.Transaction) {\n\t\tdbConnect()\n\t\tdefer store.Close(\"\")\n\t\t//tokens are expired and not deleted so we need to clean up\n\t\t_ = store.DeleteAPIToken(testRunnerUser.ID, expiredToken)\n\t})\n\n\t// This one seems to need some manual value setting in the body\n\th.Before(\"user > /api/users/{user_id}/password > Updates user password > 204 > application/json\", func(transaction *trans.Transaction) {\n\t\ttransaction.Request.Body = \"{\\\"password\\\":\\\"staub\\\"}\"\n\t})\n\n\t// delete the auto generated association and insert the user id into the query\n\th.Before(\"project > /api/project/{project_id}/users > Link user to project > 204 > application/json\", func(transaction *trans.Transaction) {\n\t\tdbConnect()\n\t\tdefer store.Close(\"\")\n\t\tdeleteUserProjectRelation(userProject.ID, userPathTestUser.ID)\n\t\ttransaction.Request.Body = \"{ \\\"user_id\\\": \" + strconv.Itoa(userPathTestUser.ID) + \",\\\"role\\\": \\\"owner\\\"}\"\n\t})\n\n\th.Before(\"project > /api/project/{project_id}/invites > Get invitations for project > 200 > application/json\", capabilityWrapper(\"invite\"))\n\th.Before(\"project > /api/project/{project_id}/invites > Create project invitation > 201 > application/json\", capabilityWrapper(\"invite\"))\n\th.Before(\"project > /api/project/{project_id}/invites/{invite_id} > Get specific project invitation > 200 > application/json\", capabilityWrapper(\"invite\"))\n\th.Before(\"project > /api/project/{project_id}/invites/{invite_id} > Update project invitation status > 204 > application/json\", capabilityWrapper(\"invite\"))\n\th.Before(\"project > /api/project/{project_id}/invites/{invite_id} > Delete project invitation > 204 > application/json\", capabilityWrapper(\"invite\"))\n\n\th.Before(\"integration > /api/project/{project_id}/integrations > get all integrations > 200 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id} > Get Integration > 200 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id} > Update Integration > 204 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id} > Remove integration > 204 > application/json\", capabilityWrapper(\"integration\"))\n\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/values > Get Integration Extracted Values linked to integration extractor > 200 > application/json\", capabilityWrapper(\"integrationextractvalue\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/values > Add Integration Extracted Value > 204 > application/json\", capabilityWrapper(\"integrationextractvalue\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/values/{extractvalue_id} > Removes integration extract value > 204 > application/json\", capabilityWrapper(\"integrationextractvalue\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/values > Add Integration Extracted Value > 204 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/values/{extractvalue_id} > Updates Integration ExtractValue > 204 > application/json\", capabilityWrapper(\"integrationextractvalue\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/matchers > Get Integration Matcher linked to integration extractor > 200 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/matchers > Add Integration Matcher > 204 > application/json\", capabilityWrapper(\"integration\"))\n\th.Before(\"integration > /api/project/{project_id}/integrations/{integration_id}/matchers/{matcher_id} > Updates Integration Matcher > 204 > application/json\", capabilityWrapper(\"integrationmatcher\"))\n\n\th.Before(\"key-store > /api/project/{project_id}/keys > Add access key > 201 > application/json\", capabilityWrapper(\"access_key\"))\n\th.Before(\"key-store > /api/project/{project_id}/keys/{key_id} > Updates access key > 204 > application/json\", capabilityWrapper(\"access_key\"))\n\th.Before(\"key-store > /api/project/{project_id}/keys/{key_id} > Removes access key > 204 > application/json\", capabilityWrapper(\"access_key\"))\n\n\th.Before(\"repository > /api/project/{project_id}/repositories > Add repository > 201 > application/json\", capabilityWrapper(\"access_key\"))\n\th.Before(\"repository > /api/project/{project_id}/repositories/{repository_id} > Get repository > 200 > application/json\", capabilityWrapper(\"repository\"))\n\th.Before(\"repository > /api/project/{project_id}/repositories/{repository_id} > Updates repository > 204 > application/json\", capabilityWrapper(\"repository\"))\n\th.Before(\"repository > /api/project/{project_id}/repositories/{repository_id} > Removes repository > 204 > application/json\", capabilityWrapper(\"repository\"))\n\n\th.Before(\"inventory > /api/project/{project_id}/inventory > create inventory > 201 > application/json\", capabilityWrapper(\"inventory\"))\n\th.Before(\"inventory > /api/project/{project_id}/inventory/{inventory_id} > Get inventory > 200 > application/json\", capabilityWrapper(\"inventory\"))\n\th.Before(\"inventory > /api/project/{project_id}/inventory/{inventory_id} > Updates inventory > 204 > application/json\", capabilityWrapper(\"inventory\"))\n\th.Before(\"inventory > /api/project/{project_id}/inventory/{inventory_id} > Removes inventory > 204 > application/json\", capabilityWrapper(\"inventory\"))\n\n\th.Before(\"variable-group > /api/project/{project_id}/environment > Add environment > 201 > application/json\", capabilityWrapper(\"environment\"))\n\th.Before(\"variable-group > /api/project/{project_id}/environment/{environment_id} > Get environment > 200 > application/json\", capabilityWrapper(\"environment\"))\n\th.Before(\"variable-group > /api/project/{project_id}/environment/{environment_id} > Update environment > 204 > application/json\", capabilityWrapper(\"environment\"))\n\th.Before(\"variable-group > /api/project/{project_id}/environment/{environment_id} > Removes environment > 204 > application/json\", capabilityWrapper(\"environment\"))\n\n\th.Before(\"template > /api/project/{project_id}/templates > create template > 201 > application/json\", func(t *trans.Transaction) {\n\t\taddCapabilities([]string{\"repository\", \"inventory\", \"environment\", \"view\"})\n\t})\n\n\th.Before(\"template > /api/project/{project_id}/templates/{template_id}/stop_all_tasks > Stop all active tasks of template > 204 > application/json\", capabilityWrapper(\"template\"))\n\th.Before(\"template > /api/project/{project_id}/templates/{template_id} > Get template > 200 > application/json\", capabilityWrapper(\"template\"))\n\th.Before(\"template > /api/project/{project_id}/templates/{template_id} > Updates template > 204 > application/json\", capabilityWrapper(\"template\"))\n\th.Before(\"template > /api/project/{project_id}/templates/{template_id} > Removes template > 204 > application/json\", capabilityWrapper(\"template\"))\n\n\th.Before(\"task > /api/project/{project_id}/tasks > Starts a job > 201 > application/json\", capabilityWrapper(\"template\"))\n\th.Before(\"task > /api/project/{project_id}/tasks/last > Get last 200 Tasks related to current project > 200 > application/json\", capabilityWrapper(\"template\"))\n\n\th.Before(\"task > /api/project/{project_id}/tasks/{task_id} > Get a single task > 200 > application/json\", capabilityWrapper(\"task\"))\n\th.Before(\"task > /api/project/{project_id}/tasks/{task_id} > Deletes task (including output) > 204 > application/json\", capabilityWrapper(\"task\"))\n\th.Before(\"task > /api/project/{project_id}/tasks/{task_id}/output > Get task output > 200 > application/json\", capabilityWrapper(\"task\"))\n\th.Before(\"task > /api/project/{project_id}/tasks/{task_id}/raw_output > Get task raw output > 200 > text/plain; charset=utf-8\", capabilityWrapper(\"task\"))\n\th.Before(\"task > /api/project/{project_id}/tasks/{task_id}/stop > Stop a job > 204 > application/json\", capabilityWrapper(\"task\"))\n\n\th.Before(\"schedule > /api/project/{project_id}/schedules/{schedule_id} > Get schedule > 200 > application/json\", capabilityWrapper(\"schedule\"))\n\th.Before(\"schedule > /api/project/{project_id}/schedules/{schedule_id} > Updates schedule > 204 > application/json\", capabilityWrapper(\"schedule\"))\n\th.Before(\"schedule > /api/project/{project_id}/schedules/{schedule_id} > Deletes schedule > 204 > application/json\", capabilityWrapper(\"schedule\"))\n\n\th.Before(\"project > /api/project/{project_id}/views/{view_id} > Get view > 200 > application/json\", capabilityWrapper(\"view\"))\n\th.Before(\"project > /api/project/{project_id}/views/{view_id} > Updates view > 204 > application/json\", capabilityWrapper(\"view\"))\n\th.Before(\"project > /api/project/{project_id}/views/{view_id} > Removes view > 204 > application/json\", capabilityWrapper(\"view\"))\n\n\th.Before(\"project > /api/project/{project_id}/backup > Get backup > 200 > application/json\", func(t *trans.Transaction) {\n\t\taddCapabilities([]string{\"repository\", \"inventory\", \"environment\", \"view\", \"template\"})\n\t})\n\n\t//Add these last as they normalize the requests and path values after hook processing\n\th.BeforeAll(func(transactions []*trans.Transaction) {\n\t\tfor _, t := range transactions {\n\t\t\th.Before(t.Name, setupObjectsAndPaths)\n\t\t}\n\t})\n\n\t// Delete the test runner user so adding him next time does not result in errors\n\th.AfterAll(removeTestRunnerUser)\n\n\tserver.Serve()\n\tdefer server.Listener.Close()\n}\n"
  },
  {
    "path": ".dredd/server-wrapper.sh",
    "content": "#!/bin/sh\n\nexport SEMAPHORE_MAX_TASKS_PER_TEMPLATE=300\n./semaphore server --config .dredd/config.json"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: semaphoreui\n#patreon: semaphoreui\n#ko_fi: fiftin\nopen_collective: # semaphore\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/documentation.yml",
    "content": "---\n\nname: Documentation\ndescription: You have a found missing or invalid documentation\ntitle: \"Docs: \"\nlabels: ['documentation', 'triage']\n\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Please make sure to go through these steps **before opening an issue**:\n        \n        - [ ] Read the [documentation](https://docs.semaphoreui.com/)\n          - [ ] Read the [troubleshooting guide](https://docs.semaphoreui.com/administration-guide/troubleshooting)\n          - [ ] Read the [documentation regarding manual installations](https://docs.semaphoreui.com/administration-guide/installation_manually) if you did install Semaphore that way\n\n        - [ ] Check if there are existing [issues](https://github.com/semaphoreui/semaphore/issues) or [discussions](https://github.com/semaphoreui/semaphore/discussions) regarding your topic\n\n  - type: textarea\n    id: problem\n    attributes:\n      label: Problem\n      description: |\n        Describe what part of the documentation is missing or wrong!\n        Please also tell us what you would expected to find.\n        What would you change or add?\n    validations:\n      required: true\n\n  - type: dropdown\n    id: related-to\n    attributes:\n      label: Related to\n      description: |\n        To what parts of Semaphore is the documentation related? (if any)\n\n      multiple: true\n      options:\n        - Web-Frontend (what users interact with)\n        - Web-Backend (APIs)\n        - Service (scheduled tasks, alerts)\n        - Ansible (task execution)\n        - Configuration\n        - Database\n        - Docker\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "---\n\nname: Feature request\ndescription: You would like to have a new feature implemented\ntitle: \"Feature: \"\nlabels: ['feature', 'triage']\n\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Please make sure to go through these steps **before opening an issue**:\n        \n        - [ ] Read the [documentation](https://docs.semaphoreui.com/)\n          - [ ] Read the [troubleshooting guide](https://docs.semaphoreui.com/administration-guide/troubleshooting)\n          - [ ] Read the [documentation regarding manual installations](https://docs.semaphoreui.com/administration-guide/installation_manually) if you did install Semaphore that way\n\n        - [ ] Check if there are existing [issues](https://github.com/semaphoreui/semaphore/issues) or [discussions](https://github.com/semaphoreui/semaphore/discussions) regarding your topic\n\n  - type: dropdown\n    id: related-to\n    attributes:\n      label: Related to\n      description: |\n        To what parts of Semaphore is the feature related?\n\n      multiple: true\n      options:\n        - Web-Frontend (what users interact with)\n        - Web-Backend (APIs)\n        - Service (scheduled tasks, alerts)\n        - Ansible (task execution)\n        - Configuration\n        - Database\n        - Docker\n        - Other\n    validations:\n      required: true\n\n  - type: dropdown\n    id: impact\n    attributes:\n      label: Impact\n      description: |\n        What impact would the feature have for Semaphore users?\n\n      multiple: false\n      options:\n        - nice to have\n        - nice to have for enterprise usage\n        - better user experience\n        - security improvements\n        - major improvement to user experience\n        - must have for enterprise usage\n        - must have\n    validations:\n      required: true\n\n  - type: textarea\n    id: feature\n    attributes:\n      label: Missing Feature\n      description: |\n        Describe the feature you are missing.\n        Why would you like to see such a feature being implemented?\n\n    validations:\n      required: true\n\n  - type: textarea\n    id: implementation\n    attributes:\n      label: Implementation\n      description: |\n        Please think about how the feature should be implemented.\n        What would you suggest?\n        How should it look and behave?\n\n    validations:\n      required: true\n\n  - type: textarea\n    id: design\n    attributes:\n      label: Design\n      description: |\n        If you have programming experience yourself:\n        Please provide us with an example how you would design this feature.\n\n        What edge-cases need to be covered?\n        Are there relations to other components that need to be though of?\n\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/problem.yml",
    "content": "---\n\nname: Problem\ndescription: You have encountered problems when using Semaphore\ntitle: \"Problem: \"\nlabels: ['problem', 'triage']\n\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Please make sure to go through these steps **before opening an issue**:\n        \n        - [ ] Read the [documentation](https://docs.semaphoreui.com/)\n          - [ ] Read the [troubleshooting guide](https://docs.semaphoreui.com/administration-guide/troubleshooting)\n          - [ ] Read the [documentation regarding manual installations](https://docs.semaphoreui.com/administration-guide/installation_manually) if you don't use docker\n\n        - [ ] Check if there are existing [issues](https://github.com/semaphoreui/semaphore/issues) or [discussions](https://github.com/semaphoreui/semaphore/discussions) regarding your topic\n\n  - type: textarea\n    id: problem\n    attributes:\n      label: Issue\n      description: |\n        Describe the problem you encountered and tell us what you would have expected to happen\n\n    validations:\n      required: true\n\n  - type: dropdown\n    id: impact\n    attributes:\n      label: Impact\n      description: |\n        What parts of Semaphore are impacted by the problem?\n\n      multiple: true\n      options:\n        - Web-Frontend (what users interact with)\n        - Web-Backend (APIs)\n        - Service (scheduled tasks, alerts)\n        - Ansible (task execution)\n        - Configuration\n        - Database\n        - Docker\n        - Semaphore Project\n        - Other\n    validations:\n      required: true\n\n  - type: dropdown\n    id: install-method\n    attributes:\n      label: Installation method\n      description: |\n        How did you install Semaphore?\n\n      multiple: false\n      options:\n        - Docker\n        - Package\n        - Binary\n        - Snap\n    validations:\n      required: true\n\n\n  - type: dropdown\n    id: databases\n    attributes:\n      label: Database\n      description: |\n        What database you use?\n\n      multiple: true\n      options:\n        - SQLite\n        - MySQL\n        - BoltDB\n        - Postgres\n\n\n  - type: dropdown\n    id: browsers\n    attributes:\n      label: Browser\n      description: |\n        If the problem occurs in the Semaphore WebUI - in what browsers do you see it?\n\n      multiple: true\n      options:\n        - Firefox\n        - Chrome\n        - Safari\n        - Microsoft Edge\n        - Opera\n\n  - type: textarea\n    id: version-semaphore\n    attributes:\n      label: Semaphore Version\n      description: |\n        What version of Semaphore are you running?\n        > Command: `semaphore version`\n    validations:\n      required: true\n\n  - type: textarea\n    id: version-ansible\n    attributes:\n      label: Ansible Version\n      description: |\n        If your problem occurs when executing a task:\n        > What version of Ansible are you running?\n        > Command: `ansible --version`\n\n        If your problem occurs when executing a specific Ansible Module:\n        > Provide the Ansible Module versions!\n        > Command: `ansible-galaxy collection list`\n\n      render: bash\n    validations:\n      required: false\n\n  - type: textarea\n    id: logs\n    attributes:\n      label: Logs & errors\n      description: |\n        Provide logs and error messages you have encountered!\n        \n        Logs of the service:\n        > Docker command: `docker logs <container-name>`\n        > Systemd command: `journalctl -u <serivce-name> --no-pager --full -n 250`\n\n        If the error occurs in the WebUI:\n        > please add a screenshot\n        > check your browser console for errors (`F12` in most browsers)\n\n        Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.\n\n    validations:\n      required: false\n\n  - type: textarea\n    id: manual-installation\n    attributes:\n      label: Manual installation - system information\n      description: |\n        If you have installed Semaphore using the package or binary:\n        \n        Please share your operating system & -version!\n        > Command: `uname -a`\n        \n        What reverse proxy are you using?\n    validations:\n      required: false\n\n  - type: textarea\n    id: config\n    attributes:\n      label: Configuration\n      description: |\n        Please provide Semaphore configuration related to your problem - like:\n        * Config file options\n        * Environment variables\n        * WebUI configuration\n          * Task templates\n          * Inventories\n          * Environment\n          * Repositories\n          * ...\n\n    validations:\n      required: false\n\n  - type: textarea\n    id: additional\n    attributes:\n      label: Additional information\n      description: |\n        Do you have additional information that could help troubleshoot the problem?\n\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.yml",
    "content": "---\n\nname: Question\ndescription: You have a question on how to use Semaphore\ntitle: \"Question: \"\nlabels: ['question', 'triage']\n\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Please make sure to go through these steps **before opening an issue**:\n        \n        - [ ] Read the [documentation](https://docs.semaphoreui.com/)\n          - [ ] Read the [troubleshooting guide](https://docs.semaphoreui.com/administration-guide/troubleshooting)\n          - [ ] Read the [documentation regarding manual installations](https://docs.semaphoreui.com/administration-guide/installation_manually) if you did install Semaphore that way\n\n        - [ ] Check if there are existing [issues](https://github.com/semaphoreui/semaphore/issues) or [discussions](https://github.com/semaphoreui/semaphore/discussions) regarding your topic\n\n  - type: textarea\n    id: question\n    attributes:\n      label: Question\n    validations:\n      required: true\n\n  - type: dropdown\n    id: related-to\n    attributes:\n      label: Related to\n      description: |\n        To what parts of Semaphore is the question related? (if any)\n\n      multiple: true\n      options:\n        - Web-Frontend (what users interact with)\n        - Web-Backend (APIs)\n        - Service (scheduled tasks, alerts)\n        - Ansible (task execution)\n        - Configuration\n        - Database\n        - Documentation\n        - Docker\n    validations:\n      required: false\n"
  },
  {
    "path": ".github/copilot-instructions.md",
    "content": "# Semaphore UI Development Instructions\n\n**Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.**\n\nSemaphore UI is a modern web interface for managing popular DevOps tools like Ansible, Terraform, PowerShell, and Bash scripts. It's built with Go (backend) and Vue.js (frontend), using Task runner for build automation.\n\n## Working Effectively\n\n### Bootstrap, build, and test the repository:\n- Install Go 1.21+ (currently requires go version 1.21 or higher)\n- Install Node.js 16+ \n- Install Task runner: `go install github.com/go-task/task/v3/cmd/task@latest`\n- Install dependencies: `task deps` -- takes 3 minutes first time (faster with cache). NEVER CANCEL. Set timeout to 5+ minutes.\n- Build the application: `task build` -- takes 1.5 minutes. NEVER CANCEL. Set timeout to 3+ minutes.\n- Run tests: `task test` -- takes 33 seconds. NEVER CANCEL. Set timeout to 2+ minutes.\n\n### Run the application:\n- ALWAYS run the bootstrapping steps first\n- Setup database and admin user: `./bin/semaphore setup` (interactive, use BoltDB option 2 for development)\n- Start server: `./bin/semaphore server --config ./config.json`\n- Web UI: http://localhost:3000 (login: admin / changeme)\n- API: http://localhost:3000/api/ (test with: `curl http://localhost:3000/api/ping`)\n\n## Validation\n\n- **CRITICAL**: Always manually validate any new code by building and running the application.\n- ALWAYS run through at least one complete end-to-end scenario after making changes:\n  1. Build the application: `task build`\n  2. Start the server: `./bin/semaphore server --config ./config.json`\n  3. Test API endpoint: `curl http://localhost:3000/api/ping` (should return \"pong\")\n  4. Access web UI at http://localhost:3000 and verify it loads\n  5. For auth changes: Test login with admin/changeme\n- For significant changes, run full setup process to ensure setup still works\n- Always build and exercise your changes before considering the task complete\n\n### Complete Validation Scenario (for major changes):\n```bash\n# 1. Clean build\ntask build\n\n# 2. Setup database (if config.json doesn't exist)\n./bin/semaphore setup  # Choose option 2 (BoltDB), use admin/changeme\n\n# 3. Start server\n./bin/semaphore server --config ./config.json\n\n# 4. Test in another terminal\ncurl http://localhost:3000/api/ping  # Should return \"pong\"\ncurl -I http://localhost:3000/       # Should return HTTP 200\n\n# 5. Test web interface manually in browser at http://localhost:3000\n# 6. Test login with admin/changeme if auth-related changes\n```\n\n### Linting and Code Quality\n\n- Frontend linting: `cd web && npm run lint` (has known warnings about console statements and asset sizes - ignore existing issues)\n- Backend linting: `golangci-lint run --timeout=3m` (has known type errors due to module import issues - ignore existing issues) \n- **DO NOT** try to fix existing linting issues unless specifically asked to\n- Always run linting on new code you add to ensure it follows project standards\n- Install golangci-lint if needed: `go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.57.2`\n\n## Common Tasks\n\n### Repository Structure\n```\n.\n├── README.md           - Project documentation  \n├── CONTRIBUTING.md     - Development guidelines\n├── Taskfile.yml       - Task runner configuration\n├── go.mod             - Go module dependencies\n├── web/               - Vue.js frontend application\n│   ├── package.json   - Frontend dependencies\n│   ├── src/           - Vue.js source code\n│   └── public/        - Static assets\n├── cli/               - Go CLI application entry point  \n├── api/               - Go API server endpoints\n├── db/                - Database models and interfaces\n├── services/          - Business logic services\n├── util/              - Utility functions and configuration\n├── bin/               - Built binaries (after build)\n└── config.json       - Runtime configuration (after setup)\n```\n\n### Key Commands Reference\n```bash\n# Install task runner\ngo install github.com/go-task/task/v3/cmd/task@latest\n\n# Install all dependencies (backend + frontend + tools)\ntask deps\n\n# Build application (frontend + backend)\ntask build\n\n# Run tests\ntask test  \n\n# Run linting\ntask lint\n\n# Setup application (interactive)\n./bin/semaphore setup\n\n# Start server\n./bin/semaphore server --config ./config.json\n\n# View available task commands\ntask --list\n```\n\n### Database Options for Development\nDuring setup, choose option 2 (BoltDB) for simplest development setup:\n- No external database required\n- Database file stored as `database.boltdb` in project root\n- Perfect for development and testing\n\n### Frontend Development\n- Vue.js 2.x application in `web/` directory\n- Built with Vue CLI and Vuetify components\n- Build output goes to `api/public/` for serving by Go backend\n- Development server not typically used - Go server serves built assets\n\n### Backend Development  \n- Go application with CLI and API server\n- Uses Gorilla Mux for routing\n- Supports multiple databases: MySQL, PostgreSQL, SQLite, BoltDB\n- Configuration via JSON file or environment variables\n\n## Troubleshooting\n\n### Build Issues\n- If `task` command not found: Install with `go install github.com/go-task/task/v3/cmd/task@latest`\n- If Go version errors: Ensure Go 1.21+ is installed\n- If npm install fails: Ensure Node.js 16+ is installed\n- If build takes too long: This is normal - frontend build can take 60+ seconds\n\n### Runtime Issues  \n- If server won't start: Check config.json exists and database is accessible\n- If web UI shows errors: Check that frontend build completed successfully in `api/public/`\n- If API returns errors: Check server logs for specific error messages\n\n### Database Issues\n- For development, always use BoltDB (option 2) during setup\n- Database file will be created automatically\n- If database errors occur, delete `database.boltdb` and run setup again\n\n## Important Notes\n\n- **NEVER CANCEL** long-running builds or dependency installations\n- Set appropriate timeouts: deps (5+ min), build (3+ min), tests (2+ min)  \n- The application serves the frontend from the Go backend - no separate frontend server needed\n- Configuration is stored in `config.json` after running setup\n- Default admin credentials after setup: admin / changeme\n- Linting has known issues - focus on not introducing new ones\n- Always test changes by running the full application, not just unit tests"
  },
  {
    "path": ".github/workflows/community_beta.yml",
    "content": "name: Community Beta\n\n'on':\n  push:\n    tags:\n      - v*-beta*\n\npermissions:\n  contents: write\n\njobs:\n  prerelease:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Install rpm\n        run: |\n          sudo apt update && sudo apt-get install rpm\n\n      - name: Install deps\n        run: |\n          task deps\n\n      - name: Import gnupg\n        run: |\n          echo \"${{ secrets.GPG_KEY }}\" | tr \" \" \"\\n\" | base64 -d | gpg --import --batch\n          gpg --sign -u \"${{ vars.GPG_KEY_ID }}\" --pinentry-mode loopback --yes --batch --passphrase \"${{ secrets.GPG_PASS }}\" --output unlock.sig --detach-sign README.md\n          rm -f unlock.sig\n\n      - name: Reset repo\n        run: |\n          git reset --hard\n\n      - name: Run release\n        run: |\n          GITHUB_TOKEN=${{ github.token }} \\\n          PROJECT_NAME=semaphore_community \\\n          GPG_KEY_ID=\"${{ vars.GPG_KEY_ID }}\" \\\n          task release:prod\n\n  deploy-beta:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n      - name: Server meta\n        id: server\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/semaphore-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=false\n\n      - name: Server build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: ${{ steps.server.outputs.tags }}\n\n      - name: Runner meta\n        if: false\n        id: runner\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/runner-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=false\n\n      - name: Runner build\n        if: false\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: ${{ steps.runner.outputs.tags }}\n"
  },
  {
    "path": ".github/workflows/community_release.yml",
    "content": "name: Community Release\n\n'on':\n  push:\n    tags:\n      - 'v[0-9]+.[0-9]+.[0-9]+'\n      - v*-rc*\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Install rpm\n        run: |\n          sudo apt update && sudo apt-get install rpm\n\n      - name: Install deps\n        run: |\n          task deps\n\n      - name: Import gnupg\n        run: |\n          echo \"${{ secrets.GPG_KEY }}\" | tr \" \" \"\\n\" | base64 -d | gpg --import --batch\n          gpg --sign -u \"${{ vars.GPG_KEY_ID }}\" --pinentry-mode loopback --yes --batch --passphrase \"${{ secrets.GPG_PASS }}\" --output unlock.sig --detach-sign README.md\n          rm -f unlock.sig\n\n      - name: Reset repo\n        run: |\n          git reset --hard\n\n      - name: Run release\n        run: |\n          GITHUB_TOKEN=${{ github.token }} \\\n          GPG_KEY_ID=\"${{ vars.GPG_KEY_ID }}\" \\\n          PROJECT_NAME=semaphore_community \\\n            task release:prod\n\n  deploy-prod:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n\n\n      - name: Server meta\n        id: server\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/semaphore-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=true\n\n      - name: Server build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: ${{ steps.server.outputs.tags }}\n\n      - name: Server build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: semaphoreui/semaphore-community:${{ github.ref_name }}-ansible2.16.5\n\n      - name: Server build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=semaphoreui/semaphore-community\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: semaphoreui/semaphore-community:${{ github.ref_name }}-powershell7.5.0\n\n\n\n      - name: Runner meta\n        id: runner\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/runner-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=true\n\n      - name: Runner build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: ${{ steps.runner.outputs.tags }}\n\n      - name: Runner build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: semaphoreui/runner-community:${{ github.ref_name }}-ansible2.16.5\n\n      - name: Runner build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=semaphoreui/runner-community\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: semaphoreui/runner-community:${{ github.ref_name }}-powershell7.5.0\n"
  },
  {
    "path": ".github/workflows/dev.yml",
    "content": "name: Dev\n\n'on':\n  push:\n    branches:\n      - develop\n      - 2-*-stable\n  pull_request:\n    branches:\n      - develop\n\njobs:\n  build-local:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Install deps\n        run: |\n          task deps\n\n      - name: Run build\n        run: task build\n\n      - name: Check modification\n        run: |\n          git diff --exit-code --stat -- . ':(exclude)web/package.json' ':(exclude)web/package-lock.json' ':(exclude)go.mod' ':(exclude)go.sum'\n\n      - name: Run tests\n        run: task test\n\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          name: semaphore\n          path: bin/semaphore\n          retention-days: 1\n\n  migrate-mysql:\n    runs-on: ubuntu-latest\n\n    needs:\n      - build-local\n\n    services:\n      mysql:\n        image: mysql:8.4\n        env:\n          MYSQL_ROOT_PASSWORD: p455w0rd\n          MYSQL_USER: semaphore\n          MYSQL_PASSWORD: p455w0rd\n          MYSQL_DATABASE: semaphore\n        options: >-\n          --health-cmd \"mysqladmin ping\"\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 3306:3306\n\n    steps:\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.json <<EOF\n            {\n              \"mysql\": {\n                \"host\": \"localhost:3306\",\n                \"user\": \"semaphore\",\n                \"pass\": \"p455w0rd\",\n                \"name\": \"semaphore\"\n              },\n              \"dialect\": \"mysql\",\n              \"email_alert\": false\n            }\n          EOF\n\n      - name: Migrate database\n        run: |\n          chmod +x ./semaphore && ./semaphore migrate --config config.json\n\n  migrate-mariadb:\n    runs-on: ubuntu-latest\n\n    needs:\n      - build-local\n\n    services:\n      mariadb:\n        image: mariadb:10.11\n        env:\n          MARIADB_ROOT_PASSWORD: p455w0rd\n          MARIADB_USER: semaphore\n          MARIADB_PASSWORD: p455w0rd\n          MARIADB_DATABASE: semaphore\n        options: >-\n          --health-cmd \"mysqladmin ping\"\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 3306:3306\n\n    steps:\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.json <<EOF\n            {\n              \"mysql\": {\n                \"host\": \"localhost:3306\",\n                \"user\": \"semaphore\",\n                \"pass\": \"p455w0rd\",\n                \"name\": \"semaphore\"\n              },\n              \"dialect\": \"mysql\",\n              \"email_alert\": false\n            }\n          EOF\n\n      - name: Migrate database\n        run: |\n          chmod +x ./semaphore && ./semaphore migrate --config config.json\n\n  migrate-postgres:\n    runs-on: ubuntu-latest\n\n    needs:\n      - build-local\n\n    services:\n      postgres:\n        image: postgres:12.22\n        env:\n          POSTGRES_USER: semaphore\n          POSTGRES_PASSWORD: p455w0rd\n          POSTGRES_DB: semaphore\n        options: >-\n          --health-cmd pg_isready\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 5432:5432\n\n    steps:\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.json <<EOF\n            {\n              \"postgres\": {\n                \"host\": \"localhost:5432\",\n                \"user\": \"semaphore\",\n                \"pass\": \"p455w0rd\",\n                \"name\": \"semaphore\",\n                \"options\": {\n                  \"sslmode\": \"disable\"\n                }\n              },\n              \"dialect\": \"postgres\",\n              \"email_alert\": false\n            }\n          EOF\n\n      - name: Migrate database\n        run: |\n          chmod +x ./semaphore && ./semaphore migrate --config config.json\n\n  migrate-sqlite:\n    runs-on: ubuntu-latest\n\n    needs:\n      - build-local\n\n    steps:\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.json <<EOF\n            {\n              \"sqlite\": {\n                \"host\": \"/tmp/db.sqlite\"\n              },\n              \"dialect\": \"sqlite\",\n              \"email_alert\": false\n            }\n          EOF\n\n      - name: Migrate database\n        run: |\n          chmod +x ./semaphore && ./semaphore migrate --config config.json\n\n  integrate-mysql:\n    runs-on: ubuntu-latest\n\n    needs:\n      - migrate-mysql\n\n    services:\n      mysql:\n        image: mysql:8.4\n        env:\n          MYSQL_ROOT_PASSWORD: p455w0rd\n          MYSQL_USER: semaphore\n          MYSQL_PASSWORD: p455w0rd\n          MYSQL_DATABASE: semaphore\n        options: >-\n          --health-cmd \"mysqladmin ping\"\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 3306:3306\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.stdin <<EOF\n          1\n          localhost:3306\n          semaphore\n          p455w0rd\n          semaphore\n          /tmp/semaphore\n          http://localhost:3000\n          no\n          no\n          no\n          no\n          no\n          no\n          $(pwd)/.dredd\n          admin\n          admin@localhost\n          Developer\n          password\n          EOF\n\n      - name: Execute setup\n        run: |\n          chmod +x ./semaphore && ./semaphore setup - < config.stdin\n\n      - name: Launch dredd\n        run: |\n          task dredd:goodman\n          task dredd:deps\n          task dredd:hooks\n          task dredd:test\n\n  integrate-mariadb:\n    runs-on: ubuntu-latest\n\n    needs:\n      - migrate-mariadb\n\n    services:\n      mariadb:\n        image: mariadb:10.11\n        env:\n          MARIADB_ROOT_PASSWORD: p455w0rd\n          MARIADB_USER: semaphore\n          MARIADB_PASSWORD: p455w0rd\n          MARIADB_DATABASE: semaphore\n        options: >-\n          --health-cmd \"mysqladmin ping\"\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 3306:3306\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.stdin <<EOF\n          1\n          localhost:3306\n          semaphore\n          p455w0rd\n          semaphore\n          /tmp/semaphore\n          http://localhost:3000\n          no\n          no\n          no\n          no\n          no\n          no\n          $(pwd)/.dredd\n          admin\n          admin@localhost\n          Developer\n          password\n          EOF\n\n      - name: Execute setup\n        run: |\n          chmod +x ./semaphore && ./semaphore setup - < config.stdin\n\n      - name: Launch dredd\n        run: |\n          task dredd:goodman\n          task dredd:deps\n          task dredd:hooks\n          task dredd:test\n\n  integrate-postgres:\n    runs-on: ubuntu-latest\n\n    needs:\n      - migrate-postgres\n\n    services:\n      postgres:\n        image: postgres:12.22\n        env:\n          POSTGRES_USER: semaphore\n          POSTGRES_PASSWORD: p455w0rd\n          POSTGRES_DB: semaphore\n        options: >-\n          --health-cmd pg_isready\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n          - 5432:5432\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.stdin <<EOF\n          3\n          localhost:5432\n          semaphore\n          p455w0rd\n          semaphore\n          /tmp/semaphore\n          http://localhost:3000\n          no\n          no\n          no\n          no\n          no\n          no\n          $(pwd)/.dredd\n          admin\n          admin@localhost\n          Developer\n          password\n          EOF\n\n      - name: Execute setup\n        run: |\n          chmod +x ./semaphore && ./semaphore setup - < config.stdin\n\n      - name: Launch dredd\n        run: |\n          task dredd:goodman\n          task dredd:deps\n          task dredd:hooks\n          task dredd:test\n\n  integrate-sqlite:\n    runs-on: ubuntu-latest\n\n    needs:\n      - migrate-sqlite\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: semaphore\n\n      - name: Write config\n        run: |\n          cat > config.stdin <<EOF\n          4\n          /tmp/database.sqlite\n          /tmp/semaphore\n          http://localhost:3000\n          no\n          no\n          no\n          no\n          no\n          no\n          $(pwd)/.dredd\n          admin\n          admin@localhost\n          Developer\n          password\n          EOF\n\n      - name: Execute setup\n        run: |\n          chmod +x ./semaphore && ./semaphore setup - < config.stdin\n\n      - name: Launch dredd\n        run: |\n          task dredd:goodman\n          task dredd:deps\n          task dredd:hooks\n          task dredd:test\n\n  deploy-server:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    needs:\n      - integrate-mysql\n      - integrate-mariadb\n      - integrate-postgres\n      - integrate-sqlite\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n      - name: Server meta\n        id: server\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/semaphore-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=develop\n          flavor: |\n            latest=false\n\n      - name: Server build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: ${{ steps.server.outputs.tags }}\n\n  deploy-runner:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    needs:\n      - integrate-mysql\n      - integrate-mariadb\n      - integrate-postgres\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n      - name: Runner meta\n        id: runner\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            semaphoreui/runner-community\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=develop\n          flavor: |\n            latest=false\n\n      - name: Runner build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: ${{ steps.runner.outputs.tags }}\n"
  },
  {
    "path": ".github/workflows/pro_selfhosted_beta.yml",
    "content": "name: Pro Self-Hosted Release\n\n'on':\n  push:\n    tags:\n      - v*-beta*\n      - v*-rc*\n\npermissions:\n  contents: write\n\njobs:\n  prerelease:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Install rpm\n        run: |\n          sudo apt update && sudo apt-get install rpm\n\n      - name: Add PRO implementation\n        run: |\n          git clone https://${{ secrets.GH_TOKEN }}@github.com/semaphoreui/semaphorepro-module.git pro_impl\n          go work init . ./pro_impl\n\n      - name: Install deps\n        run: |\n          task deps APP_BUILD_TYPE=pro_selfhosted\n\n      - name: Import gnupg\n        run: |\n          echo \"${{ secrets.GPG_KEY }}\" | tr \" \" \"\\n\" | base64 -d | gpg --import --batch\n          gpg --sign -u \"${{ vars.GPG_KEY_ID }}\" --pinentry-mode loopback --yes --batch --passphrase \"${{ secrets.GPG_PASS }}\" --output unlock.sig --detach-sign README.md\n          rm -f unlock.sig\n\n      - name: Reset repo\n        run: |\n          git reset --hard\n\n      - name: Run release\n        run: |\n          APP_BUILD_TYPE=pro_selfhosted \\\n          GITHUB_TOKEN=${{ github.token }} \\\n          GPG_KEY_ID=\"${{ vars.GPG_KEY_ID }}\" \\\n          PROJECT_NAME=semaphore \\\n            task release:prod\n\n  deploy-beta:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          registry: public.ecr.aws\n          username: ${{ vars.AWS_ACCESS_KEY_ID }}\n          password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n        env:\n          AWS_REGION: us-east-1\n\n      - name: Docker Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n\n\n      - name: Server meta\n        id: server\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            public.ecr.aws/semaphore/pro/server\n            public.ecr.aws/semaphore/server\n            semaphoreui/semaphore\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n\n      - name: Server build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: ${{ steps.server.outputs.tags }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Server build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/server:${{ github.ref_name }}-ansible2.16.5\n            public.ecr.aws/semaphore/server:${{ github.ref_name }}-ansible2.16.5\n            semaphoreui/semaphore:${{ github.ref_name }}-ansible2.16.5\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Server build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=public.ecr.aws/semaphore/server\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/server:${{ github.ref_name }}-powershell7.5.0\n            public.ecr.aws/semaphore/server:${{ github.ref_name }}-powershell7.5.0\n            semaphoreui/semaphore:${{ github.ref_name }}-powershell7.5.0\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n\n\n      - name: Runner meta\n        id: runner\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            public.ecr.aws/semaphore/pro/runner\n            public.ecr.aws/semaphore/runner\n            semaphoreui/runner\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n\n      - name: Runner build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: ${{ steps.runner.outputs.tags }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Runner build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/runner:${{ github.ref_name }}-ansible2.16.5\n            public.ecr.aws/semaphore/runner:${{ github.ref_name }}-ansible2.16.5\n            semaphoreui/runner:${{ github.ref_name }}-ansible2.16.5\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Runner build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=public.ecr.aws/semaphore/runner\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/runner:${{ github.ref_name }}-powershell7.5.0\n            public.ecr.aws/semaphore/runner:${{ github.ref_name }}-powershell7.5.0\n            semaphoreui/runner:${{ github.ref_name }}-powershell7.5.0\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n"
  },
  {
    "path": ".github/workflows/pro_selfhosted_release.yml",
    "content": "name: Pro Self-Hosted Release\n\n'on':\n  push:\n    tags:\n      - 'v[0-9]+.[0-9]+.[0-9]+'\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup golang\n        uses: actions/setup-go@v5\n        with:\n          go-version: '^1.24.6'\n\n      - name: Setup nodejs\n        uses: actions/setup-node@v4\n        with:\n          node-version: '24'\n          cache: 'npm'\n          cache-dependency-path: web/package-lock.json\n\n      - name: Install go-task\n        run: |\n          go install github.com/go-task/task/v3/cmd/task@latest\n\n      - name: Install rpm\n        run: |\n          sudo apt update && sudo apt-get install rpm\n\n      - name: Add PRO implementation\n        run: |\n          git clone https://${{ secrets.GH_TOKEN }}@github.com/semaphoreui/semaphorepro-module.git pro_impl\n          go work init . ./pro_impl\n\n      - name: Install deps\n        run: |\n          task deps APP_BUILD_TYPE=pro_selfhosted\n\n      - name: Import gnupg\n        run: |\n          echo \"${{ secrets.GPG_KEY }}\" | tr \" \" \"\\n\" | base64 -d | gpg --import --batch\n          gpg --sign -u \"${{ vars.GPG_KEY_ID }}\" --pinentry-mode loopback --yes --batch --passphrase \"${{ secrets.GPG_PASS }}\" --output unlock.sig --detach-sign README.md\n          rm -f unlock.sig\n\n      - name: Reset repo\n        run: |\n          git reset --hard\n\n      - name: Run release\n        run: |\n          APP_BUILD_TYPE=pro_selfhosted \\\n          GITHUB_TOKEN=${{ github.token }} \\\n          GPG_KEY_ID=\"${{ vars.GPG_KEY_ID }}\" \\\n          PROJECT_NAME=semaphore \\\n            task release:prod\n\n  deploy-prod:\n    runs-on: ubuntu-latest\n    if: github.repository_owner == 'semaphoreui'\n\n    steps:\n      - name: Checkout source\n        uses: actions/checkout@v4\n\n      - name: Setup qemu\n        id: qemu\n        uses: docker/setup-qemu-action@v3\n\n      - name: Setup buildx\n        id: buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          registry: public.ecr.aws\n          username: ${{ vars.AWS_ACCESS_KEY_ID }}\n          password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n        env:\n          AWS_REGION: us-east-1\n\n      - name: Docker Hub login\n        uses: docker/login-action@v3\n        if: github.event_name != 'pull_request'\n        with:\n          username: ${{ secrets.DOCKER_USER }}\n          password: ${{ secrets.DOCKER_PASS }}\n\n\n\n      - name: Server meta\n        id: server\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            public.ecr.aws/semaphore/pro/server\n            public.ecr.aws/semaphore/server\n            semaphoreui/semaphore\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=true\n\n      - name: Server build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: ${{ steps.server.outputs.tags }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Server build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/Dockerfile\n          platforms: linux/amd64,linux/arm64 # ,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/server:${{ github.ref_name }}-ansible2.16.5\n            public.ecr.aws/semaphore/server:${{ github.ref_name }}-ansible2.16.5\n            semaphoreui/semaphore:${{ github.ref_name }}-ansible2.16.5\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Server build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=public.ecr.aws/semaphore/server\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n            APP_BUILD_TYPE=pro_selfhosted\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.server.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/server:${{ github.ref_name }}-powershell7.5.0\n            public.ecr.aws/semaphore/server:${{ github.ref_name }}-powershell7.5.0\n            semaphoreui/semaphore:${{ github.ref_name }}-powershell7.5.0\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n\n\n      - name: Runner meta\n        id: runner\n        uses: docker/metadata-action@v5\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          images: |\n            public.ecr.aws/semaphore/pro/runner\n            public.ecr.aws/semaphore/runner\n            semaphoreui/runner\n          labels: |\n            org.opencontainers.image.vendor=SemaphoreUI\n            maintainer=Semaphore UI <support@semaphoreui.com>\n          tags: |\n            type=raw,value=${{ github.ref_name }}\n          flavor: |\n            latest=true\n\n      - name: Runner build\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: ${{ steps.runner.outputs.tags }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Runner build with Ansible 2.16.5\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            ANSIBLE_VERSION=9.4.0\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/runner/Dockerfile\n          platforms: linux/amd64,linux/arm64 #,linux/arm/v6\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/runner:${{ github.ref_name }}-ansible2.16.5\n            public.ecr.aws/semaphore/runner:${{ github.ref_name }}-ansible2.16.5\n            semaphoreui/runner:${{ github.ref_name }}-ansible2.16.5\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n\n      - name: Runner build with PowerShell 7.5.0\n        uses: docker/build-push-action@v5\n        with:\n          builder: ${{ steps.buildx.outputs.name }}\n          context: .\n          build-args: |\n            POWERSHELL_VERSION=7.5.0\n            SEMAPHORE_IMAGE=public.ecr.aws/semaphore/runner\n            SEMAPHORE_VERSION=${{ github.ref_name }}\n            GH_TOKEN=${{ secrets.GH_TOKEN }}\n          file: deployment/docker/server/powershell/Dockerfile\n          platforms: linux/amd64\n          push: ${{ github.event_name != 'pull_request' }}\n          labels: ${{ steps.runner.outputs.labels }}\n          tags: |\n            public.ecr.aws/semaphore/pro/runner:${{ github.ref_name }}-powershell7.5.0\n            public.ecr.aws/semaphore/runner:${{ github.ref_name }}-powershell7.5.0\n            semaphoreui/runner:${{ github.ref_name }}-powershell7.5.0\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          provenance: false\n"
  },
  {
    "path": ".gitignore",
    "content": "gin-bin\nbuild/\n/test/mcp/*/artifacts/\n/certs/\nweb/public/js/bundle.js\nweb/public/css/*.*\nweb/public/html/**/*.*\nweb/public/fonts/*.*\nweb/.nyc_output\napi/public/**/*\n/server.json\n/config.json\n/config-secondary.json\n/config.runner.json\n/config.runner.token\n/config.runner.key\n/runner.json\n/runner.token\n/runner.key\n/.dredd/config.json\n/database.boltdb\n/database.sqlite\n/database.sqlite-journal\n/database.boltdb.lock\n/database_test.boltdb\n.DS_Store\n/backup.json\nnode_modules/\n\n/.idea/\n/semaphore.iml\n/bin/\n\n/vendor/\n/coverage.out\n/public/package-lock.json\n!.gitkeep\n\n.dredd/compiled_hooks\n.dredd/compiled_hooks.exe\n\n__debug_bin*\n.task/\n/web/.env\n/.venv/\n\n/events.log\n/tasks.log\n/task_results.log\n/pro_impl/\n/go.work.x\n/go.work\n/go.work.sum"
  },
  {
    "path": ".golangci.yml",
    "content": "version: \"2\"\n\nrun:\n  timeout: \"240s\"\n  # TODO: remove following line to make golangci return non-zero as lint were not passed\n  issues-exit-code: 0\n\nlinters:\n  default: standard\n  disable:\n    - unused\n\nformatters:\n  enable:\n    - gofmt\n  settings:\n    gofmt:\n      rewrite-rules:\n        - pattern: 'interface{}'\n          replacement: 'any'\n"
  },
  {
    "path": ".goreleaser.yml",
    "content": "version: 2\ndist: bin\n\nbefore:\n  hooks:\n    - task build:fe\n\nbuilds:\n  - binary: semaphore\n    env:\n      - CGO_ENABLED=0\n    main: ./cli/main.go\n    ldflags: -s -w -X github.com/semaphoreui/semaphore/util.Ver={{ .Version }} -X github.com/semaphoreui/semaphore/util.Commit={{ .ShortCommit }} -X github.com/semaphoreui/semaphore/util.Date={{ .Timestamp }}\n    tags:\n      - netgo\n    goos:\n      - windows\n      - darwin\n      - linux\n      - freebsd\n    goarch:\n      - 386\n      - amd64\n      - arm\n      - arm64\n      - ppc64le\n    ignore:\n      - goos: freebsd\n        goarch: arm\n      - goos: freebsd\n        goarch: 386\n      - goos: freebsd\n        goarch: ppc64le\n      - goos: darwin\n        goarch: 386\n      - goos: darwin\n        goarch: arm\n      - goos: darwin\n        goarch: ppc64le\n      - goos: windows\n        goarch: ppc64le\n      - goos: windows\n        goarch: arm\n\narchives:\n  - files:\n      - LICENSE\n    name_template: \"{{ .Env.PROJECT_NAME }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}\"\n    format_overrides:\n      - goos: windows\n        format: zip\n\nsigns:\n  -\n    artifacts: checksum\n    signature: \"{{ .Env.PROJECT_NAME }}_{{ .Version }}_checksums.txt.sig\"\n    cmd: gpg\n    args: [\n      \"-u\", \"{{ .Env.GPG_KEY_ID }}\",\n      \"--pinentry-mode\", \"loopback\",\n      \"--yes\",\n      \"--batch\",\n      \"--output\", \"${signature}\",\n      \"--detach-sign\", \"${artifact}\"\n    ]\n\nchecksum:\n  name_template: \"{{ .Env.PROJECT_NAME }}_{{ .Version }}_checksums.txt\"\n\nsnapshot:\n  name_template: \"{{ .Timestamp }}-{{ .ShortCommit }}-SNAPSHOT\"\n\nnfpms:\n  - file_name_template: \"{{ .Env.PROJECT_NAME }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}\"\n    package_name: \"semaphore\"\n    description: Modern UI and powerful API for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools.\n    homepage: https://github.com/semaphoreui/semaphore\n    vendor: Semaphore UI\n    maintainer: Denis Gukov <denis@semaphoreui.com>\n    license: MIT\n\n    formats:\n      - deb\n      - rpm\n\n    dependencies:\n      - git\n\n    suggests:\n      - ansible\n\n    bindir: /usr/bin\n\nrelease:\n  draft: true\n  use_existing_draft: true\n  name_template: \"{{.Tag}}\"\n"
  },
  {
    "path": ".postman/api",
    "content": "# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\napis[] = {\"apiId\":\"4023cf7c-aabb-4d5a-a742-72dadbd4924a\"}\napis[] = {\"apiId\":\"5306c424-9fc0-4923-be37-fbda305ca8de\"}\napis[] = {\"apiId\":\"9a8524cc-4892-4b54-a6b3-1ef18d907626\"}\nconfigVersion = 1.0.0\ntype = api\n"
  },
  {
    "path": ".postman/api_4023cf7c-aabb-4d5a-a742-72dadbd4924a",
    "content": "# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\nconfigVersion = 1.1.0\ntype = apiEntityData\n\n[config]\nid = 4023cf7c-aabb-4d5a-a742-72dadbd4924a\n\n[config.relations]\n\n[config.relations.collections]\nrootDirectory = .postman/collections\nfiles[] = {\"id\":\"2979975-3e2a871a-8dc1-4771-b62a-45f68caa2b1b\",\"path\":\"Semaphore API Documentation.json\",\"metaData\":{\"generateCollectionPreferences\":\"{\\\"requestNameSource\\\":\\\"Fallback\\\",\\\"indentCharacter\\\":\\\"Space\\\",\\\"parametersResolution\\\":\\\"Schema\\\",\\\"folderStrategy\\\":\\\"Paths\\\",\\\"includeAuthInfoInExample\\\":true,\\\"enableOptionalParameters\\\":true,\\\"keepImplicitHeaders\\\":false,\\\"includeDeprecated\\\":true,\\\"alwaysInheritAuthentication\\\":false,\\\"updateCollectionSync\\\":true,\\\"requestParametersResolution\\\":\\\"Schema\\\",\\\"exampleParametersResolution\\\":\\\"Schema\\\"}\"}}\n\n[config.relations.collections.metaData]\n\n[config.relations.apiDefinition]\nfiles[] = {\"path\":\"openapi.yml\",\"metaData\":{}}\n\n[config.relations.apiDefinition.metaData]\ntype = openapi:3\nrootFiles[] = openapi.yml\n"
  },
  {
    "path": ".postman/api_5306c424-9fc0-4923-be37-fbda305ca8de",
    "content": "# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\nconfigVersion = 1.1.0\ntype = apiEntityData\n\n[config]\nid = 5306c424-9fc0-4923-be37-fbda305ca8de\n\n[config.relations]\n\n[config.relations.collections]\nrootDirectory = postman/collections\n\n[config.relations.collections.metaData]\n\n[config.relations.apiDefinition]\nfiles[] = {\"path\":\"openapi.yml\",\"metaData\":{}}\n\n[config.relations.apiDefinition.metaData]\ntype = openapi:3\nrootFiles[] = openapi.yml\n"
  },
  {
    "path": ".postman/api_9a8524cc-4892-4b54-a6b3-1ef18d907626",
    "content": "# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\nconfigVersion = 1.1.0\ntype = apiEntityData\n\n[config]\nid = 9a8524cc-4892-4b54-a6b3-1ef18d907626\n\n[config.relations]\n\n[config.relations.collections]\nrootDirectory = postman/collections\nfiles[] = {\"id\":\"2979975-3d96a8d7-604d-47ec-832c-2876f64dbc1f\",\"path\":\"Semaphore API.json\",\"metaData\":{}}\n\n[config.relations.collections.metaData]\n\n[config.relations.apiDefinition]\nfiles[] = {\"path\":\"openapi.yml\",\"metaData\":{}}\n\n[config.relations.apiDefinition.metaData]\ntype = openapi:3\nrootFiles[] = openapi.yml\n"
  },
  {
    "path": ".postman/postman/collections/Semaphore API.json",
    "content": "{\n\t\"info\": {\n\t\t\"_postman_id\": \"3d96a8d7-604d-47ec-832c-2876f64dbc1f\",\n\t\t\"name\": \"Semaphore API\",\n\t\t\"description\": \"Semaphore API provides endpoints for managing and interacting with the Semaphore UI.\\nThis documentation outlines the available operations and data models.\\n\",\n\t\t\"schema\": \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\",\n\t\t\"_uid\": \"2979975-3d96a8d7-604d-47ec-832c-2876f64dbc1f\"\n\t},\n\t\"item\": [\n\t\t{\n\t\t\t\"name\": \"ping\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"PING test\",\n\t\t\t\t\t\"id\": \"bf5268d0-7ded-46a5-81c6-e1ab34af548f\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"text/plain\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/ping\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"ping\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"3bb6eb99-c489-4c1d-8c58-24943b3944fa\",\n\t\t\t\t\t\t\t\"name\": \"Successful \\\"PONG\\\" reply\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"text/plain\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/ping\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"ping\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"text/plain\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"disabled\": false,\n\t\t\t\t\t\t\t\t\t\"description\": {\n\t\t\t\t\t\t\t\t\t\t\"content\": \"\",\n\t\t\t\t\t\t\t\t\t\t\"type\": \"text/plain\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"key\": \"content-type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"<string>\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"<string>\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"42b892bf-1031-4529-aaad-fc9cb0f0b39b\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"ws\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Websocket handler\",\n\t\t\t\t\t\"id\": \"0c5fb481-c1ae-4749-922b-9c204542ebe5\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/ws\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"ws\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"806acad8-300d-49d7-b90d-efa215abf78b\",\n\t\t\t\t\t\t\t\"name\": \"OK\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/ws\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"ws\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"3ddd1e5f-77ca-4004-a6df-6fba17dd91e3\",\n\t\t\t\t\t\t\t\"name\": \"not authenticated\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/ws\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"ws\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"Unauthorized\",\n\t\t\t\t\t\t\t\"code\": 401,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"c4ce3efb-64a9-419e-ae7b-710d8daa6559\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"info\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Fetches information about semaphore\",\n\t\t\t\t\t\"id\": \"b24f5bef-31a9-4b6b-a88b-7335708054b4\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/info\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"info\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"description\": \"you must be authenticated to use this\"\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"528e9198-1331-47b6-8683-26a4dee42897\",\n\t\t\t\t\t\t\t\"name\": \"ok\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/info\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"info\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"version\\\": \\\"<string>\\\",\\n  \\\"updateBody\\\": \\\"<string>\\\",\\n  \\\"update\\\": {\\n    \\\"tag_name\\\": \\\"<string>\\\"\\n  }\\n}\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"f3b4c4c0-0266-46de-bfd9-ec0ca92cb8ed\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"auth\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"login\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Fetches login metadata\",\n\t\t\t\t\t\t\t\"id\": \"e54ef912-9074-4d4b-ac87-4a139deaae7e\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/login\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"description\": \"Fetches metadata for login, such as available OIDC providers\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"88c4efe4-14a7-4995-9f4e-5d799df9691c\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Login metadata\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/login\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"oidc_providers\\\": [\\n    {\\n      \\\"id\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Performs Login\",\n\t\t\t\t\t\t\t\"id\": \"8e4e1cca-d595-4648-9926-cc59aa0d01c0\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"auth\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/login\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"description\": \"Upon success you will be logged in\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"d46ea9c6-566d-4797-8257-481ea3ac387d\",\n\t\t\t\t\t\t\t\t\t\"name\": \"You are logged in\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"auth\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/login\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"d924516a-a87b-4e37-b0ee-37b861d55e44\",\n\t\t\t\t\t\t\t\t\t\"name\": \"something in body is missing / is invalid\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"auth\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/login\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"aed9631c-e197-4069-85fd-d104db4a2935\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"logout\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Destroys current session\",\n\t\t\t\t\t\t\t\"id\": \"40410efc-af5e-427e-a028-f97718cb6836\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/logout\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\"logout\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"67a542a6-eeab-4de1-8c4d-f4c97f061b40\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Your session was successfully nuked\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/logout\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"logout\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"56f5320b-b581-4f77-bc09-c6ff2b6650fe\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"oidc\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"{provider_id}\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"login\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Begin OIDC authentication flow and redirect to OIDC provider\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"e89b42ec-0f75-424d-983f-ec083a25629e\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/oidc/:provider_id/login\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"oidc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"The user agent is redirected to this endpoint when chosing to sign in via OIDC\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"dc9ff176-1520-4d23-870e-6de15f0f0bfb\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Redirection to the OIDC provider on success, or to the login page on error\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/oidc/:provider_id/login\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"oidc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"login\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"provider_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Found\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 302,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"02b6aaf2-f76d-4f7e-9eef-7c1969106934\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"redirect\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Finish OIDC authentication flow, upon succes you will be logged in\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"a3f83744-c4b2-444d-b67d-0b9e1719b579\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/oidc/:provider_id/redirect\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"oidc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"redirect\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) \"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"The user agent is redirected here by the OIDC provider to complete authentication\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c961634e-53b3-464d-8700-1f7a50bd8930\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Redirection to the Semaphore root URL on success, or to the login page on error\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/auth/oidc/:provider_id/redirect\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"auth\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"oidc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":provider_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"redirect\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"provider_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Found\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 302,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"09c8fe31-4e03-4951-9cfc-b35eb5788fdc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"4eb69a41-dc94-4d9a-ac10-b4052fefa5e0\"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"4097fae7-9877-4776-a607-4a91236eb004\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"1c92c5b1-ef55-4bf0-8b0e-942fd4dbd4d6\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"user\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"tokens\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"{api_token_id}\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Expires API token\",\n\t\t\t\t\t\t\t\t\t\"id\": \"b73a8391-ac14-4de1-96e4-46211d2695a3\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens/:api_token_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"tokens\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":api_token_id\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"api_token_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) \"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b065338e-0893-4b2e-a114-0fbebe9df480\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Expired API Token\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens/:api_token_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tokens\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":api_token_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"api_token_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"16a03dcb-86f4-4b13-9b0b-2ee6e40f277f\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Fetch API tokens for user\",\n\t\t\t\t\t\t\t\"id\": \"72430204-c78a-404d-a8b5-cf9b9535e8ec\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\"tokens\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"a29abb44-c40e-4170-8715-7355facafe4f\",\n\t\t\t\t\t\t\t\t\t\"name\": \"API Tokens\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"tokens\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"expired\\\": \\\"<boolean>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"expired\\\": \\\"<boolean>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Create an API token\",\n\t\t\t\t\t\t\t\"id\": \"cfba220e-2ace-4bcd-8e8d-790ecc4c161b\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\"tokens\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"ab320df0-a87c-4d98-8c66-b746965d8703\",\n\t\t\t\t\t\t\t\t\t\"name\": \"API Token\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/tokens\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"tokens\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"expired\\\": \\\"<boolean>\\\",\\n  \\\"user_id\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"1dbfa3fd-5095-40b3-b767-9905075c41cc\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Fetch logged in user\",\n\t\t\t\t\t\"id\": \"fef2dcea-c231-4700-86e3-352a7509428f\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"8ac63913-9e63-4e07-9ce1-14e07dc34d20\",\n\t\t\t\t\t\t\t\"name\": \"User\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/user/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"320427cd-4a4a-4466-a69a-32854273b1b2\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"users\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"{user_id}\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"password\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Updates user password\",\n\t\t\t\t\t\t\t\t\t\"id\": \"049ff59a-80e1-4b3d-b5c8-c153f0876b94\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"password\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/password\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"password\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"86c57d98-9b33-442d-be6e-700f3374685d\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Password updated\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"password\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/password\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"password\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"ff5732a1-5d72-4dcf-8d13-cb1a0352d82b\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Fetches a user profile\",\n\t\t\t\t\t\t\t\"id\": \"0ea82762-7ab3-4be4-a7bc-07c12c6443cd\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"5a9e436e-a27e-490c-aa04-2931ec671450\",\n\t\t\t\t\t\t\t\t\t\"name\": \"User profile\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Updates user details\",\n\t\t\t\t\t\t\t\"id\": \"f16b9520-e006-4f1c-a1d6-e1c112a6c737\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"8ecb3f54-ba8a-454a-af8a-bd45b3487d81\",\n\t\t\t\t\t\t\t\t\t\"name\": \"User Updated\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Deletes user\",\n\t\t\t\t\t\t\t\"id\": \"ab4724a5-0e60-4c1a-a097-cb43677e968f\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"f7a4e7b7-740f-425c-b9bb-238c1e77a2b2\",\n\t\t\t\t\t\t\t\t\t\"name\": \"User deleted\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users/:user_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"a1b50f3a-4823-4aec-a930-4dc2eb3e0d5d\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Fetches all users\",\n\t\t\t\t\t\"id\": \"507c369c-033e-4267-8bf2-ae66c9ac3599\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"99e6869a-f9a1-4255-9000-bddace414eed\",\n\t\t\t\t\t\t\t\"name\": \"Users\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"username\\\": \\\"<string>\\\",\\n    \\\"email\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"admin\\\": \\\"<boolean>\\\",\\n    \\\"external\\\": \\\"<boolean>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"username\\\": \\\"<string>\\\",\\n    \\\"email\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"admin\\\": \\\"<boolean>\\\",\\n    \\\"external\\\": \\\"<boolean>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Creates a user\",\n\t\t\t\t\t\"id\": \"1f9aeee5-29d9-45a5-a8c2-85cc1837a96a\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"5056ee51-12cb-45ac-97ec-2007d3ea55c1\",\n\t\t\t\t\t\t\t\"name\": \"User created\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"07889849-9235-4c9b-b0a1-8f208cfe0f68\",\n\t\t\t\t\t\t\t\"name\": \"User creation failed\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"username\\\": \\\"<string>\\\",\\n  \\\"email\\\": \\\"<string>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"admin\\\": \\\"<boolean>\\\",\\n  \\\"external\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/users\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"daedae70-868f-4c67-b451-92b64d11f389\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"projects\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"restore\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Restore Project\",\n\t\t\t\t\t\t\t\"id\": \"ad7d9848-0a4c-4429-8f00-a9c41d0b8b65\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"meta\\\": {\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n  },\\n  \\\"templates\\\": [\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    },\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    }\\n  ],\\n  \\\"repositories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    }\\n  ],\\n  \\\"keys\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"login_password\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"ssh\\\"\\n    }\\n  ],\\n  \\\"views\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    }\\n  ],\\n  \\\"inventories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static-yaml\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static\\\"\\n    }\\n  ],\\n  \\\"environments\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects/restore\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"projects\",\n\t\t\t\t\t\t\t\t\t\t\"restore\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"8120a0a7-787f-47f5-b595-dd8dab10efd4\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Created project\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"meta\\\": {\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n  },\\n  \\\"templates\\\": [\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    },\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    }\\n  ],\\n  \\\"repositories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    }\\n  ],\\n  \\\"keys\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"login_password\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"ssh\\\"\\n    }\\n  ],\\n  \\\"views\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    }\\n  ],\\n  \\\"inventories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static-yaml\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static\\\"\\n    }\\n  ],\\n  \\\"environments\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects/restore\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"projects\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"restore\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"75f5f172-970b-46f9-9749-ea60fe0de02f\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Get projects\",\n\t\t\t\t\t\"id\": \"db08f6e5-34e8-4cce-b433-a8e001649532\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"projects\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"4465385b-232d-49e1-b0ba-f076805edba2\",\n\t\t\t\t\t\t\t\"name\": \"List of projects\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"projects\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"created\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Create a new project\",\n\t\t\t\t\t\"id\": \"d836bcbc-10a2-48fd-a189-f7e2d546f7a0\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\",\\n  \\\"demo\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"projects\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"85c1a2ae-bfcb-410e-9ef1-10f33ce9a4a3\",\n\t\t\t\t\t\t\t\"name\": \"Created project\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\",\\n  \\\"demo\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/projects\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"projects\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"1ca11787-296e-4f18-8098-b3863a3697ae\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"events\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"last\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Get last 200 Events related to Semaphore and projects you are part of\",\n\t\t\t\t\t\t\t\"id\": \"716eed97-b5c6-436b-9815-13ee33dfb791\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/events/last\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"events\",\n\t\t\t\t\t\t\t\t\t\t\"last\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"194afa5f-39ef-4da7-8f57-f3646379e74c\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Array of events in chronological order\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/events/last\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"events\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"last\"\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"9aa87430-581f-4df2-b5b0-0e907eb51d8c\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Get Events related to Semaphore and projects you are part of\",\n\t\t\t\t\t\"id\": \"8892a736-a9e9-4e04-9fbf-7318e18bcb69\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/events\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"events\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"0df3b266-9969-4b81-9c49-5365b5718f7c\",\n\t\t\t\t\t\t\t\"name\": \"Array of events in chronological order\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/events\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"events\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"633c1663-c41d-4cbe-813e-c86e157d7b1f\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"project\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"{project_id}\",\n\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"backup\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Backup A Project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"cf6cb225-f9c2-4834-9966-fba7247c941c\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/backup\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"backup\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9ed64511-9b95-4241-b139-521f01d7a9fe\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Backup\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/backup\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"backup\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"meta\\\": {\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"alert\\\": \\\"<boolean>\\\",\\n    \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n  },\\n  \\\"templates\\\": [\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    },\\n    {\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"repository\\\": \\\"<string>\\\",\\n      \\\"environment\\\": \\\"<string>\\\",\\n      \\\"view\\\": \\\"<string>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"playbook\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n      \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n      \\\"autorun\\\": \\\"<boolean>\\\",\\n      \\\"type\\\": \\\"<string>\\\",\\n      \\\"allow_override_branch_in_task\\\": \\\"<boolean>\\\"\\n    }\\n  ],\\n  \\\"repositories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"git_url\\\": \\\"<string>\\\",\\n      \\\"git_branch\\\": \\\"<string>\\\",\\n      \\\"ssh_key\\\": \\\"<string>\\\"\\n    }\\n  ],\\n  \\\"keys\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"login_password\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"ssh\\\"\\n    }\\n  ],\\n  \\\"views\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"position\\\": \\\"<integer>\\\"\\n    }\\n  ],\\n  \\\"inventories\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static-yaml\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"inventory\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"static\\\"\\n    }\\n  ],\\n  \\\"environments\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"json\\\": \\\"<string>\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"5d358a00-f511-471c-abfe-4fa03d4aae12\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"role\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Fetch permissions of the current user for project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"acf0720e-0c03-4c38-b272-c9465782f650\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/role\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"role\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"6ebbb1a2-26f5-49bd-95c1-eb91f9ce555c\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Permissions\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/role\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"role\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"role\\\": \\\"<string>\\\",\\n  \\\"permissions\\\": \\\"<number>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"f38f0344-5967-413a-afc9-3b23f8f29ff9\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"events\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get Events related to this project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"b0e3b287-b69c-4164-9e5f-99285e393c7f\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/events\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"events\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"bb0b55e4-3368-4841-beb9-fdcf9194bc6c\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Array of events in chronological order\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/events\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"events\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"user_id\\\": \\\"<integer>\\\",\\n    \\\"description\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"59ab5972-7a4b-4796-b0b9-c3b3409533d8\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"users\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{user_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Update user role\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ed021401-fce4-4cd5-8bbd-3ac2bcd23f8f\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"role\\\": \\\"manager\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users/:user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"8159e830-af1a-4567-9427-59a8c19b1022\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"User updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"role\\\": \\\"manager\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users/:user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes user from project\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"12114ff7-c872-4699-ae98-535db41cbab0\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users/:user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) User ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"65245997-98d2-4ca9-b5f7-bbe8a54c5f07\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"User removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users/:user_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"user_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"93b0c15b-1858-42e0-9a4b-d5714fde836b\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get users linked to project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"0fbedd92-e7f1-4207-9952-1fa11841630d\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users?sort=email&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"email\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ee4a34bb-2053-461c-bdef-479d47ca6586\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Users\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users?sort=email&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"email\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"username\\\": \\\"<string>\\\",\\n    \\\"role\\\": \\\"task_runner\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"username\\\": \\\"<string>\\\",\\n    \\\"role\\\": \\\"guest\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Link user to project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"97f0f4f1-d226-43d8-8c77-ffd4ac2baa2d\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"user_id\\\": \\\"<integer>\\\",\\n  \\\"role\\\": \\\"guest\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"53628ba9-1548-4f99-8d47-3de43502cba4\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"User added\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"user_id\\\": \\\"<integer>\\\",\\n  \\\"role\\\": \\\"guest\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/users\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"users\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"b25959e0-7fde-4233-a588-4685ccef8d96\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"integrations\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{integration_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"values\",\n\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"{extractvalue_id}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates Integration ExtractValue\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"7bc07454-80f6-4b60-ba54-2d2a7f1a41c4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"xml\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values/:extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) extractValue ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"bf03df0a-7546-4864-97f9-2ccf4a741e0e\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Extract Value updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"xml\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values/:extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"aea21b21-fbef-4bdd-8101-c9caeeaf438c\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad integration extract value parameter\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"xml\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values/:extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes integration extract value\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"2ca39f14-a5e8-49ff-b133-c6c1bca56451\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values/:extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) extractValue ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c94d1edb-7b83-4549-b097-3c9c0bac7976\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"integration extract value removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values/:extractvalue_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"extractvalue_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"aa589140-c673-4193-8546-efcc1b05f69f\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get Integration Extracted Values linked to integration extractor\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"5cf57ab1-acbb-46cd-a6b2-d8e6bc40daf2\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"bd8a3fa9-b988-4e23-8ed2-6b7367bc8e1d\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Extracted Value\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"value_source\\\": \\\"header\\\",\\n    \\\"body_data_type\\\": \\\"xml\\\",\\n    \\\"key\\\": \\\"<string>\\\",\\n    \\\"variable\\\": \\\"<string>\\\",\\n    \\\"integration_id\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"value_source\\\": \\\"body\\\",\\n    \\\"body_data_type\\\": \\\"json\\\",\\n    \\\"key\\\": \\\"<string>\\\",\\n    \\\"variable\\\": \\\"<string>\\\",\\n    \\\"integration_id\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Add Integration Extracted Value\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"6bdc4a7f-e460-469c-a469-0341b8370ac7\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"json\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"1f5d1e06-c87a-4ca8-989d-739850fca285\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Extract Value Created\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"json\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c6e6f7ce-d622-4b6e-953e-7a1583b9c1e8\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad Integration Extract Value params\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"value_source\\\": \\\"body\\\",\\n  \\\"body_data_type\\\": \\\"json\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"variable\\\": \\\"<string>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/values\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"values\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"f13b63ad-1ac9-421b-af74-d434f6ec2229\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"{matcher_id}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates Integration Matcher\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"5a5a6603-e57d-4069-b8dd-92a81587a48b\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"header\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers/:matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) matcher ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"1de952e3-9106-49aa-9d98-24726337831c\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Matcher updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"header\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers/:matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"8bd5c3dd-b348-4907-bf8b-05b45ff4be64\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad integration matcher parameter\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"header\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers/:matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes integration matcher\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"7e0f2c38-30f7-4143-aaac-6484f9471488\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers/:matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) matcher ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"31eb06ac-981e-4f60-8df3-f8db9920209b\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"integration matcher removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers/:matcher_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"matcher_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"eaed6943-5538-4a01-b11d-3578b07d22f9\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get Integration Matcher linked to integration extractor\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b56401dd-3f7c-4254-ba23-df7b3be86fba\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"4bc110c9-378e-4301-bea4-a844247976b4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Matcher\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"integration_id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"match_type\\\": \\\"header\\\",\\n    \\\"method\\\": \\\"contains\\\",\\n    \\\"body_data_type\\\": \\\"xml\\\",\\n    \\\"key\\\": \\\"<string>\\\",\\n    \\\"value\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"integration_id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"match_type\\\": \\\"header\\\",\\n    \\\"method\\\": \\\"contains\\\",\\n    \\\"body_data_type\\\": \\\"string\\\",\\n    \\\"key\\\": \\\"<string>\\\",\\n    \\\"value\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Add Integration Matcher\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"5ca5997a-7a11-436b-9247-dcb9c673e5c0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"body\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"4e1dfc52-7d79-4f61-a42f-ea4e6573d77d\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Matcher Created\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"body\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"36f62c44-29f8-4bf0-bd79-55d60c05db75\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad Integration Matcher params\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"integration_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"match_type\\\": \\\"body\\\",\\n  \\\"method\\\": \\\"unequals\\\",\\n  \\\"body_data_type\\\": \\\"string\\\",\\n  \\\"key\\\": \\\"<string>\\\",\\n  \\\"value\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id/matchers\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"matchers\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"3c6158f6-91c7-4fc0-a482-f5c229a25b1b\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Update Integration\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"dfd20cf5-7786-414b-8b77-453def5d4f2a\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b39b6e3b-11b0-4395-8dea-3f59cb9731fd\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Remove integration\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"3eddc27b-b7ad-4637-9fb7-94a4b3d6c20d\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) integration ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"312dcf9b-dfa2-4f40-99eb-b577202e13fb\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"integration removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations/:integration_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"integration_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"957493da-989f-4e03-b3a0-5304f986484c\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"get all integrations\",\n\t\t\t\t\t\t\t\t\t\"id\": \"b56e2c78-362f-4c1b-bf81-ef13810ccebf\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b0b3686a-3546-4ea2-b61a-c546247869fd\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"integration\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"create a new integration\",\n\t\t\t\t\t\t\t\t\t\"id\": \"668408ed-f5a3-4d28-b781-251757a1e8c1\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"2247a74b-77f8-44ef-8641-f09deb85cbbc\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Integration Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/integrations\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"integrations\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"cc77f4b2-985f-47dd-b66b-2a193f624821\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"keys\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{key_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates access key\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"1c962787-570e-43a6-ba2e-4d1e6c0d275e\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys/:key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) key ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"5efe88c0-5ff6-4efd-a4f2-659b2853775c\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Key updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys/:key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"1cf9aa9c-cb98-4f7c-8403-9f1f7a5567c3\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys/:key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes access key\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"d2b3a57f-5d9c-49cf-8f15-8c6963c7c455\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys/:key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) key ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"30d1c47b-485b-4ec1-85b0-77473b2d685b\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"access key removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys/:key_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"key_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"fab6ac75-0c50-44b3-95d0-5b9812d14e4d\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get access keys linked to project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"19a11020-22d0-4f44-b9ba-a1fab45a4011\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys?Key type=ssh&sort=name&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"keys\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Key type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Filter by key type\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"4f2cef7f-81ae-409f-b9be-c50737a6a2bb\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Access Keys\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys?Key type=ssh&sort=name&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Filter by key type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Key type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"type\\\": \\\"ssh\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"type\\\": \\\"none\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Add access key\",\n\t\t\t\t\t\t\t\t\t\"id\": \"f4c4e359-0bd2-41ec-9624-2a9877f6cba3\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"keys\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"a6fc4ed8-aac4-4877-98ab-03c13f8e72e7\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Access Key created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"ssh\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"59b6d52e-da84-44c9-851e-d4393afa9a46\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad type\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"none\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"override_secret\\\": \\\"<boolean>\\\",\\n  \\\"login_password\\\": {\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"login\\\": \\\"<string>\\\"\\n  },\\n  \\\"ssh\\\": {\\n    \\\"login\\\": \\\"<string>\\\",\\n    \\\"passphrase\\\": \\\"<string>\\\",\\n    \\\"private_key\\\": \\\"<string>\\\"\\n  }\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/keys\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"keys\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"c880a7dd-6b66-40a7-adf2-d065646a2946\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"repositories\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{repository_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get repository\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"872bcd9d-c4a9-4969-ae1c-910fd0c8ef1b\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) repository ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"90366237-fdd2-43a4-94ca-c069a339eaf4\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"repository object\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates repository\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"cd6dc4a3-e081-4e8e-90b7-f30c538a32a8\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) repository ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b6e72d6f-17b3-42fa-9982-ba4a235da1ba\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Repository updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"be0a890a-de74-4e2d-ac29-c96031c6cc97\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Bad request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Bad Request\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 400,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes repository\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9d84b566-30bd-41d0-b3b8-b3cbbaae5f7b\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) repository ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"d420f1b5-beeb-4299-bd2c-e250b485d09c\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"repository removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories/:repository_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"repository_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"327fb141-5c84-448f-bbaa-6b383df1b468\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get repositories\",\n\t\t\t\t\t\t\t\t\t\"id\": \"53ca0d32-ac28-4715-9e2c-d17296d19564\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories?sort=ssh_key&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh_key\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"42b8cdb1-d0b8-4d42-8540-41adef65476a\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories?sort=ssh_key&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh_key\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"git_url\\\": \\\"<string>\\\",\\n    \\\"git_branch\\\": \\\"<string>\\\",\\n    \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"git_url\\\": \\\"<string>\\\",\\n    \\\"git_branch\\\": \\\"<string>\\\",\\n    \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Add repository\",\n\t\t\t\t\t\t\t\t\t\"id\": \"0c8f0684-42b5-4ea9-8ac1-8c37c7f71298\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"a493b80e-2207-4770-9be2-d34d602ee639\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Repository created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/repositories\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"repositories\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"git_url\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"6d392179-addc-4252-9a34-daedcf6d09a0\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"inventory\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{inventory_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"7d723843-fd62-48f4-a29a-fbeae54cee7d\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) inventory ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9f0a6546-326f-43cb-90f3-8807271704d0\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"inventory object\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"709e9a94-8876-4d32-94cc-d600d21e3cf9\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) inventory ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"fcabbd06-a18f-4a1c-b69c-046173f60b0a\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Inventory updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ee7ecd8a-5fd9-4aea-b54e-abcecd137a60\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) inventory ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c282c49b-a279-4c2f-80d6-398cfdca1cc8\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"inventory removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory/:inventory_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"inventory_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"e34a0ff9-8cf0-41f6-8301-17b2ca43a702\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get inventory\",\n\t\t\t\t\t\t\t\t\t\"id\": \"6f0c2597-d220-4e2f-ae84-089432c4dcb9\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory?sort=name&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"f26dd388-68b3-4ca5-8ddd-b120f35ef51f\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory?sort=name&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"name\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"inventory\\\": \\\"<string>\\\",\\n    \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n    \\\"become_key_id\\\": \\\"<integer>\\\",\\n    \\\"repository_id\\\": \\\"<integer>\\\",\\n    \\\"type\\\": \\\"terraform-workspace\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"inventory\\\": \\\"<string>\\\",\\n    \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n    \\\"become_key_id\\\": \\\"<integer>\\\",\\n    \\\"repository_id\\\": \\\"<integer>\\\",\\n    \\\"type\\\": \\\"static-yaml\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"create inventory\",\n\t\t\t\t\t\t\t\t\t\"id\": \"56c4bcfc-069f-4182-ae99-7878b7aa0896\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"170f0c0d-fd4a-48a7-8730-e0bb2789a661\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"inventory created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/inventory\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inventory\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory\\\": \\\"<string>\\\",\\n  \\\"ssh_key_id\\\": \\\"<integer>\\\",\\n  \\\"become_key_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"type\\\": \\\"static\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"68b2c9da-f46e-4140-9e66-c4cb0960c938\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"environment\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{environment_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get environment\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"bb14e4a5-1395-4a3c-bd60-f3d24ec85385\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) environment ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"8e0eb9d5-48ec-4959-ab9c-167d9204e260\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"environment object\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Update environment\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ee85eded-0bf2-4f2e-b8a0-6c36d7691823\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\",\\n      \\\"operation\\\": \\\"update\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"var\\\",\\n      \\\"operation\\\": \\\"create\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) environment ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c8d7184a-98fe-4988-ac25-34d367956c50\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Environment Updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\",\\n      \\\"operation\\\": \\\"update\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"var\\\",\\n      \\\"operation\\\": \\\"create\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes environment\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"98ceba89-88f4-49cb-a9ec-e162e0908045\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) environment ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9aa29a4c-8c47-4509-884c-2a46ac8edf74\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"environment removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment/:environment_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"environment_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"0bf894f6-e139-4ff8-8dd1-55f4c17cd54d\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get environment\",\n\t\t\t\t\t\t\t\t\t\"id\": \"b30a4604-8606-4f8b-8bd5-6ca9b424985f\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment?sort=<string>&order=<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"environment\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"00eb66ba-8c4a-46d3-a2d5-da0e260619dd\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"environment\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment?sort=<string>&order=<string>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"json\\\": \\\"<string>\\\",\\n    \\\"env\\\": \\\"<string>\\\",\\n    \\\"secrets\\\": [\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"var\\\"\\n      },\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"var\\\"\\n      }\\n    ]\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"password\\\": \\\"<string>\\\",\\n    \\\"json\\\": \\\"<string>\\\",\\n    \\\"env\\\": \\\"<string>\\\",\\n    \\\"secrets\\\": [\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"env\\\"\\n      },\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"var\\\"\\n      }\\n    ]\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Add environment\",\n\t\t\t\t\t\t\t\t\t\"id\": \"f4fa5c06-6af3-4b75-8ed5-2ef4d4e8e66e\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\",\\n      \\\"operation\\\": \\\"update\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"var\\\",\\n      \\\"operation\\\": \\\"create\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"environment\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"5e0a2865-0a27-4777-a8c0-86c0fce63a7b\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Environment created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\",\\n      \\\"operation\\\": \\\"update\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"secret\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"var\\\",\\n      \\\"operation\\\": \\\"create\\\"\\n    }\\n  ]\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/environment\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"environment\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"password\\\": \\\"<string>\\\",\\n  \\\"json\\\": \\\"<string>\\\",\\n  \\\"env\\\": \\\"<string>\\\",\\n  \\\"secrets\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"env\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"c5e31002-3b4f-47f7-b348-0ccee09582f7\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"templates\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{template_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get template\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"104660cc-eda5-4562-ba18-657d17c1ad72\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) template ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"63c823fa-e752-472d-8ae8-5bc484f3c22f\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"template object\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"enum\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates template\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"63b251a6-9c9f-4862-a367-96c33f832154\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ],\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"type\\\": \\\"deploy\\\",\\n  \\\"start_version\\\": \\\"<string>\\\",\\n  \\\"build_template_id\\\": \\\"<integer>\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) template ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"2d3dc5b2-8443-43e9-a552-e0df9d827944\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"template updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ],\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"type\\\": \\\"deploy\\\",\\n  \\\"start_version\\\": \\\"<string>\\\",\\n  \\\"build_template_id\\\": \\\"<integer>\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes template\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"31a2f18c-594d-487b-ac4e-88de98d7d94c\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) template ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"f0cac3e9-f1c9-42ba-9bfc-1409d707f935\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"template removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates/:template_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"template_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"139525b7-c9fe-4fa1-b7eb-5b3d15aa21ea\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get template\",\n\t\t\t\t\t\t\t\t\t\"id\": \"f4a3de02-10a4-4663-af97-95ed6bedae2f\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates?sort=ssh_key&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"templates\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh_key\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"0a0cd102-5c86-4b89-9b91-79128e81b042\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"template\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates?sort=ssh_key&order=asc\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) sorting name\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"sort\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"ssh_key\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) ordering manner\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"asc\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"inventory_id\\\": \\\"<integer>\\\",\\n    \\\"repository_id\\\": \\\"<integer>\\\",\\n    \\\"environment_id\\\": \\\"<integer>\\\",\\n    \\\"view_id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"arguments\\\": \\\"<string>\\\",\\n    \\\"description\\\": \\\"<string>\\\",\\n    \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n    \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n    \\\"app\\\": \\\"<string>\\\",\\n    \\\"git_branch\\\": \\\"<string>\\\",\\n    \\\"type\\\": \\\"\\\",\\n    \\\"autorun\\\": \\\"<boolean>\\\",\\n    \\\"survey_vars\\\": [\\n      {\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"title\\\": \\\"<string>\\\",\\n        \\\"description\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"int\\\",\\n        \\\"required\\\": \\\"<boolean>\\\",\\n        \\\"values\\\": [\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          },\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          }\\n        ]\\n      },\\n      {\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"title\\\": \\\"<string>\\\",\\n        \\\"description\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"secret\\\",\\n        \\\"required\\\": \\\"<boolean>\\\",\\n        \\\"values\\\": [\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          },\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          }\\n        ]\\n      }\\n    ],\\n    \\\"vaults\\\": [\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"script\\\"\\n      },\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"script\\\"\\n      }\\n    ]\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"inventory_id\\\": \\\"<integer>\\\",\\n    \\\"repository_id\\\": \\\"<integer>\\\",\\n    \\\"environment_id\\\": \\\"<integer>\\\",\\n    \\\"view_id\\\": \\\"<integer>\\\",\\n    \\\"name\\\": \\\"<string>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"arguments\\\": \\\"<string>\\\",\\n    \\\"description\\\": \\\"<string>\\\",\\n    \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n    \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n    \\\"app\\\": \\\"<string>\\\",\\n    \\\"git_branch\\\": \\\"<string>\\\",\\n    \\\"type\\\": \\\"deploy\\\",\\n    \\\"autorun\\\": \\\"<boolean>\\\",\\n    \\\"survey_vars\\\": [\\n      {\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"title\\\": \\\"<string>\\\",\\n        \\\"description\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"secret\\\",\\n        \\\"required\\\": \\\"<boolean>\\\",\\n        \\\"values\\\": [\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          },\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          }\\n        ]\\n      },\\n      {\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"title\\\": \\\"<string>\\\",\\n        \\\"description\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"\\\",\\n        \\\"required\\\": \\\"<boolean>\\\",\\n        \\\"values\\\": [\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          },\\n          {\\n            \\\"name\\\": \\\"<string>\\\",\\n            \\\"value\\\": \\\"<string>\\\"\\n          }\\n        ]\\n      }\\n    ],\\n    \\\"vaults\\\": [\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"script\\\"\\n      },\\n      {\\n        \\\"id\\\": \\\"<integer>\\\",\\n        \\\"name\\\": \\\"<string>\\\",\\n        \\\"type\\\": \\\"password\\\"\\n      }\\n    ]\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"create template\",\n\t\t\t\t\t\t\t\t\t\"id\": \"7fa27285-92fe-48c2-bbb6-74730edf4fbb\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ],\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"type\\\": \\\"deploy\\\",\\n  \\\"start_version\\\": \\\"<string>\\\",\\n  \\\"build_template_id\\\": \\\"<integer>\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"templates\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"bf21b47e-88ad-4842-8adf-71a874f2b264\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"template created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ],\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"type\\\": \\\"deploy\\\",\\n  \\\"start_version\\\": \\\"<string>\\\",\\n  \\\"build_template_id\\\": \\\"<integer>\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/templates\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"templates\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"inventory_id\\\": \\\"<integer>\\\",\\n  \\\"repository_id\\\": \\\"<integer>\\\",\\n  \\\"environment_id\\\": \\\"<integer>\\\",\\n  \\\"view_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"arguments\\\": \\\"<string>\\\",\\n  \\\"description\\\": \\\"<string>\\\",\\n  \\\"allow_override_args_in_task\\\": \\\"<boolean>\\\",\\n  \\\"suppress_success_alerts\\\": \\\"<boolean>\\\",\\n  \\\"app\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"type\\\": \\\"\\\",\\n  \\\"autorun\\\": \\\"<boolean>\\\",\\n  \\\"survey_vars\\\": [\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"enum\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    },\\n    {\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"title\\\": \\\"<string>\\\",\\n      \\\"description\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"int\\\",\\n      \\\"required\\\": \\\"<boolean>\\\",\\n      \\\"values\\\": [\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        },\\n        {\\n          \\\"name\\\": \\\"<string>\\\",\\n          \\\"value\\\": \\\"<string>\\\"\\n        }\\n      ]\\n    }\\n  ],\\n  \\\"vaults\\\": [\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    },\\n    {\\n      \\\"id\\\": \\\"<integer>\\\",\\n      \\\"name\\\": \\\"<string>\\\",\\n      \\\"type\\\": \\\"script\\\"\\n    }\\n  ]\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"68b7154b-7174-420c-8659-d198191455fa\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"schedules\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{schedule_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get schedule\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"65c16c30-9d22-4410-846f-debceac2b745\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) schedule ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"0d37ff14-9e52-4668-8c2a-0ef7243abdd2\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Schedule\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates schedule\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"83df279b-afd4-4dce-bc75-d08b29ae42eb\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) schedule ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9264c4a4-db34-4933-afa5-e024f7f7cb2e\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"schedule updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Deletes schedule\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"b075b5c5-0a22-4041-b372-c7a3774575a3\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) schedule ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"7d206099-71b9-4644-a3ba-0e1fc79c0a8a\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"schedule deleted\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules/:schedule_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"schedule_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"fd3ae42c-4cd6-43d5-a2c6-cf62f55e504f\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"create schedule\",\n\t\t\t\t\t\t\t\t\t\"id\": \"4b2e5541-b4b1-4bf8-bc3c-051e98456ea8\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"a2c71909-8d45-4c52-ad26-c0a52f903205\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"schedule created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/schedules\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"schedules\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"cron_format\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"active\\\": \\\"<boolean>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"0e1ab1e1-0a47-4016-9381-208f69f3aac3\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"views\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{view_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get view\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"d3340dc1-7c34-4fc1-b9e8-620deb2176d7\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) view ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"89a245aa-8f3f-4fa0-b428-736d21d44b08\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"view object\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Updates view\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"dd0e4697-0753-4c35-be75-9e3afc004381\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) view ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"fbaf6219-0ddf-49c6-a755-05e4381120ad\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"view updated\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Removes view\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"e6495c34-79a7-4809-ada5-ed5b668a0458\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) view ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ad5a11cb-56db-4969-aa54-adca4cc8208f\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"view removed\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views/:view_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"view_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"cfa391bb-784b-4ba1-8df5-1350918bf061\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get view\",\n\t\t\t\t\t\t\t\t\t\"id\": \"29ca97a9-c34d-41df-ab09-067e78b4c257\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"views\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"15243995-542e-4963-a403-6f9c276c2bdf\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"view\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"title\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"position\\\": \\\"<integer>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"title\\\": \\\"<string>\\\",\\n    \\\"project_id\\\": \\\"<integer>\\\",\\n    \\\"position\\\": \\\"<integer>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"create view\",\n\t\t\t\t\t\t\t\t\t\"id\": \"61d2d149-2936-4274-a1a2-26b835c57839\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"views\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"3a6133df-7c5f-4e39-8315-18a3d5229e34\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"view created\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/views\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"views\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"title\\\": \\\"<string>\\\",\\n  \\\"project_id\\\": \\\"<integer>\\\",\\n  \\\"position\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"5af42808-2c2a-4a54-94d2-4a537c140f0a\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"tasks\",\n\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"last\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get last 200 Tasks related to current project\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"39af373b-f117-48ef-9adc-fc164dd8982a\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/last\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"last\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"4ba7fd9f-7ce6-4533-9ff6-251c9489dfa3\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Array of tasks in chronological order\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/last\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"last\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\",\\n    \\\"status\\\": \\\"<string>\\\",\\n    \\\"debug\\\": \\\"<boolean>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"environment\\\": \\\"<string>\\\",\\n    \\\"secret\\\": \\\"<string>\\\",\\n    \\\"limit\\\": \\\"<string>\\\",\\n    \\\"message\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\",\\n    \\\"status\\\": \\\"<string>\\\",\\n    \\\"debug\\\": \\\"<boolean>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"environment\\\": \\\"<string>\\\",\\n    \\\"secret\\\": \\\"<string>\\\",\\n    \\\"limit\\\": \\\"<string>\\\",\\n    \\\"message\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"659b921d-20e1-4ebf-a31d-932a2bd0424e\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"{task_id}\",\n\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"stop\",\n\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Stop a job\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"cb2d3afc-c82d-48c9-a7f3-148bed58547a\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/stop\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"stop\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) task ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9e9dbcc6-2252-4284-a9b6-baa0cc13a8ba\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Task queued\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/stop\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"stop\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"8dad53c7-e78b-48c3-a33f-895f642c4f62\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"output\",\n\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get task output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"8df8642f-0e71-42d5-8ff3-6d45f6e88c6c\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"output\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) task ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"cc08bfb5-bd10-4c18-940f-2194c9567d07\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"output\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"task_id\\\": \\\"<integer>\\\",\\n    \\\"time\\\": \\\"<dateTime>\\\",\\n    \\\"output\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"task_id\\\": \\\"<integer>\\\",\\n    \\\"time\\\": \\\"<dateTime>\\\",\\n    \\\"output\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"3b429255-22f0-4e3b-8280-ac4a32805cbd\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"raw_output\",\n\t\t\t\t\t\t\t\t\t\t\t\"item\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get task raw output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"328dca7d-e259-49aa-8b71-f39515b09e15\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/raw_output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw_output\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) task ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"9f6cd61a-17f9-43e3-b08d-2780c4873926\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id/raw_output\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw_output\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"disabled\": false,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"content\": \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"type\": \"text/plain\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"content-type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<string>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"890592eb-ee91-434c-8f96-5c1900964ad2\"\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Get a single task\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"0d0dcc7b-60e7-4328-8768-b88d600230eb\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) task ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"ad5d835b-71b8-4993-8759-34b8d1ee456d\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Task\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"status\\\": \\\"<string>\\\",\\n  \\\"debug\\\": \\\"<boolean>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"environment\\\": \\\"<string>\\\",\\n  \\\"secret\\\": \\\"<string>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"message\\\": \\\"<string>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Deletes task (including output)\",\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"36b22ee0-aee3-4006-9ad6-774bcd54475e\",\n\t\t\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) task ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"id\": \"37a671c8-36c4-4ee1-b90e-be545ee45270\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"name\": \"task deleted\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks/:task_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"task_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"id\": \"a2742d7d-b84b-4d89-8bd8-f60140d15e3b\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Get Tasks related to current project\",\n\t\t\t\t\t\t\t\t\t\"id\": \"53013abf-22ff-45d3-a694-79a0ab5932fe\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"c0581133-5871-42f6-81c0-fe3b70df095e\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Array of tasks in chronological order\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"[\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\",\\n    \\\"status\\\": \\\"<string>\\\",\\n    \\\"debug\\\": \\\"<boolean>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"environment\\\": \\\"<string>\\\",\\n    \\\"secret\\\": \\\"<string>\\\",\\n    \\\"limit\\\": \\\"<string>\\\",\\n    \\\"message\\\": \\\"<string>\\\"\\n  },\\n  {\\n    \\\"id\\\": \\\"<integer>\\\",\\n    \\\"template_id\\\": \\\"<integer>\\\",\\n    \\\"status\\\": \\\"<string>\\\",\\n    \\\"debug\\\": \\\"<boolean>\\\",\\n    \\\"playbook\\\": \\\"<string>\\\",\\n    \\\"environment\\\": \\\"<string>\\\",\\n    \\\"secret\\\": \\\"<string>\\\",\\n    \\\"limit\\\": \\\"<string>\\\",\\n    \\\"message\\\": \\\"<string>\\\"\\n  }\\n]\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"Starts a job\",\n\t\t\t\t\t\t\t\t\t\"id\": \"fd7ac7eb-1a40-497e-8526-c4c43b8e5be8\",\n\t\t\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"debug\\\": \\\"<boolean>\\\",\\n  \\\"dry_run\\\": \\\"<boolean>\\\",\\n  \\\"diff\\\": \\\"<boolean>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"environment\\\": \\\"<string>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"message\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"id\": \"10c09cae-bebc-4b76-b187-a081e5edef44\",\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"Task queued\",\n\t\t\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"debug\\\": \\\"<boolean>\\\",\\n  \\\"dry_run\\\": \\\"<boolean>\\\",\\n  \\\"diff\\\": \\\"<boolean>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"environment\\\": \\\"<string>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"git_branch\\\": \\\"<string>\\\",\\n  \\\"message\\\": \\\"<string>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/tasks\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"tasks\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"status\": \"Created\",\n\t\t\t\t\t\t\t\t\t\t\t\"code\": 201,\n\t\t\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"template_id\\\": \\\"<integer>\\\",\\n  \\\"status\\\": \\\"<string>\\\",\\n  \\\"debug\\\": \\\"<boolean>\\\",\\n  \\\"playbook\\\": \\\"<string>\\\",\\n  \\\"environment\\\": \\\"<string>\\\",\\n  \\\"secret\\\": \\\"<string>\\\",\\n  \\\"limit\\\": \\\"<string>\\\",\\n  \\\"message\\\": \\\"<string>\\\"\\n}\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"id\": \"24236c3c-5fc9-4524-9502-a96042d391a5\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Fetch project\",\n\t\t\t\t\t\t\t\"id\": \"6c6b380d-104e-422a-841d-5c9aab5ab00d\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"7b9968a9-8ab3-4f69-84fa-e1ecacaeefcc\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Project\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\t\t\"body\": \"{\\n  \\\"id\\\": \\\"<integer>\\\",\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"created\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\"\\n}\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Update project\",\n\t\t\t\t\t\t\t\"id\": \"064758e8-1c30-47bf-9168-c5752e6c9ae5\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\",\\n  \\\"demo\\\": \\\"<boolean>\\\",\\n  \\\"id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"0e61e34d-a322-481a-9b4a-390a6059671f\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Project saved\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{\\n  \\\"name\\\": \\\"<string>\\\",\\n  \\\"alert\\\": \\\"<boolean>\\\",\\n  \\\"max_parallel_tasks\\\": \\\"<integer>\\\",\\n  \\\"demo\\\": \\\"<boolean>\\\",\\n  \\\"id\\\": \\\"<integer>\\\"\\n}\",\n\t\t\t\t\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"headerFamily\": \"json\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"language\": \"json\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"Delete project\",\n\t\t\t\t\t\t\t\"id\": \"bb3f76a1-0ed3-49de-8098-3c12b65d7d34\",\n\t\t\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<integer>\",\n\t\t\t\t\t\t\t\t\t\t\t\"description\": \"(Required) Project ID\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"id\": \"cf929784-e50f-42d5-9990-28f3b9a5168e\",\n\t\t\t\t\t\t\t\t\t\"name\": \"Project deleted\",\n\t\t\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/project/:project_id/\",\n\t\t\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\t\t\"project\",\n\t\t\t\t\t\t\t\t\t\t\t\t\":project_id\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"variable\": [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"key\": \"project_id\"\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"status\": \"No Content\",\n\t\t\t\t\t\t\t\t\t\"code\": 204,\n\t\t\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"text\",\n\t\t\t\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\t\t\t\"cookie\": []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t\"id\": \"e62e02fc-6769-4246-ac10-4edc9bcdc04d\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"27661c38-165d-4b9b-91d0-1885b8130bfc\"\n\t\t},\n\t\t{\n\t\t\t\"name\": \"apps\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Get apps\",\n\t\t\t\t\t\"id\": \"6664f5e2-42f6-45a3-9b8a-69a751c94922\",\n\t\t\t\t\t\"protocolProfileBehavior\": {\n\t\t\t\t\t\t\"disableBodyPruning\": true\n\t\t\t\t\t},\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/apps\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"apps\"\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"response\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": \"f6fb260d-d723-4803-87f8-fed63798520f\",\n\t\t\t\t\t\t\t\"name\": \"Apps\",\n\t\t\t\t\t\t\t\"originalRequest\": {\n\t\t\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Accept\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\"description\": \"Added as a part of security scheme: apikey\",\n\t\t\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\t\t\"value\": \"<API Key>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\t\t\"raw\": \"{{baseUrl}}/apps\",\n\t\t\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\t\t\"{{baseUrl}}\"\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\t\t\"apps\"\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"status\": \"OK\",\n\t\t\t\t\t\t\t\"code\": 200,\n\t\t\t\t\t\t\t\"_postman_previewlanguage\": \"json\",\n\t\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"Content-Type\",\n\t\t\t\t\t\t\t\t\t\"value\": \"application/json\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"cookie\": [],\n\t\t\t\t\t\t\t\"body\": \"[]\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"id\": \"a972b945-e9f9-40e6-b26a-1d5d056a0cac\"\n\t\t}\n\t],\n\t\"auth\": {\n\t\t\"type\": \"bearer\",\n\t\t\"bearer\": [\n\t\t\t{\n\t\t\t\t\"key\": \"token\",\n\t\t\t\t\"value\": \"{{apiKey}}\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t]\n\t},\n\t\"event\": [\n\t\t{\n\t\t\t\"listen\": \"prerequest\",\n\t\t\t\"script\": {\n\t\t\t\t\"id\": \"50738f66-a31b-4749-8930-0bc96ba6c2ae\",\n\t\t\t\t\"type\": \"text/javascript\",\n\t\t\t\t\"packages\": {},\n\t\t\t\t\"exec\": [\n\t\t\t\t\t\"\"\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"listen\": \"test\",\n\t\t\t\"script\": {\n\t\t\t\t\"id\": \"88b8e162-2675-4bda-8bc9-245a51b2ad29\",\n\t\t\t\t\"type\": \"text/javascript\",\n\t\t\t\t\"packages\": {},\n\t\t\t\t\"exec\": [\n\t\t\t\t\t\"\"\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t],\n\t\"variable\": [\n\t\t{\n\t\t\t\"id\": \"ccc1b51e-356a-429b-aaa8-082bc2487fad\",\n\t\t\t\"key\": \"baseUrl\",\n\t\t\t\"value\": \"http://localhost:3000/api\"\n\t\t}\n\t]\n}"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Launch Server\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"./cli/main.go\",\n            \"args\": [\"server\", \"--config\", \"${workspaceFolder}/.devcontainer/config.json\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"PATH\": \"${workspaceFolder}/.venv/bin:${env:PATH}\",\n                \"SEMAPHORE_ADMIN_PASSWORD\": \"test123\"\n            }\n        }, \n        {\n            \"name\": \"Launch Server with remote Runner\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"./cli/main.go\",\n            \"args\": [\"server\", \"--config\", \"${workspaceFolder}/.devcontainer/config.json\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"PATH\": \"${workspaceFolder}/.venv/bin:${env:PATH}\",\n                \"SEMAPHORE_USE_REMOTE_RUNNER\": \"true\"\n            }\n        }, \n        {\n            \"name\": \"Launch Runner\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"./cli/main.go\",\n            \"args\": [\"runner\", \"start\", \"--config\", \"${workspaceFolder}/.devcontainer/config-runner.json\", \"--log-level\", \"debug\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"PATH\": \"${workspaceFolder}/.venv/bin:${env:PATH}\"\n            }\n        }, \n        {\n            \"name\": \"Launch Dredd Tests without Server\",\n            \"type\": \"pwa-node\",\n            \"request\": \"launch\",\n            \"runtimeExecutable\": \"task\",\n            \"args\": [\"dredd:test:local\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"console\": \"integratedTerminal\"\n        }, \n        {\n            \"name\": \"Launch Server (LOCAL)\",\n            \"type\": \"go\",\n            \"request\": \"launch\",\n            \"mode\": \"auto\",\n            \"program\": \"./cli/main.go\",\n            \"args\": [\"server\", \"--config\", \"./config.json\"],\n            \"cwd\": \"${workspaceFolder}\",\n            \"env\": {\n                \"DEBUG_DELAY\": \"1s\"\n            }\n        }, \n    ]\n}"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project maintainer at denis@semaphoreui.com. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "## Pull Requests\n\nWhen creating a pull-request you should:\n\n- __Open an issue first:__ Confirm that the change or feature will be accepted\n- __Update API documentation:__ If your pull-request adding/modifying an API request, make sure you update the Swagger documentation (`api-docs.yml`)\n- __Run API Tests:__ If your pull request modifies the API make sure you run the integration tests using **dredd**.\n\n## Installation in a development environment\n\n- Check out the `develop` branch\n- [Install Go](https://golang.org/doc/install). Go must be >= v1.21 for all the tools we use to work\n- Install MySQL / MariaDB (Optional)\n- Install node.js\n\n1) Set up `GOPATH`\n   * Set `GOPATH` in your shell (for example, in your `.bashrc` or `.zshrc`):\n   \n      ```bash\n      export GOPATH=$HOME/go\n      export PATH=$PATH:$GOPATH/bin\n      ```\n   * Create required directory and switch to it:\n   \n      ```bash\n      mkdir -p $GOPATH/src/github.com/semaphoreui\n      cd $GOPATH/src/github.com/semaphoreui\n      ```\n\n2) Clone semaphore (with submodules)\n\n   ```\n   git clone --recursive git@github.com:semaphoreui/semaphore.git && cd semaphore\n   ```\n\n3) Install dev dependencies\n\n   ```\n   go install github.com/go-task/task/v3/cmd/task@latest\n   task deps\n   ```\n   Windows users will additionally need to manually install goreleaser from https://github.com/goreleaser/goreleaser/releases\n\n4) Create database if you want to use MySQL (Semaphore also supports SQLite, it doesn't require additional action)\n\n   ```\n   echo \"create database semaphore;\" | mysql -uroot -p\n   ```\n\n5) Compile, set up & run\n\n   ```\n   task build\n   go run cli/main.go setup\n   go run cli/main.go service --config ./config.json\n   ```\n\nOpen [localhost:3000](http://localhost:3000)\n\nNote: for Windows, you may need [Cygwin](https://www.cygwin.com/) to run certain commands because the [reflex](github.com/cespare/reflex) package probably doesn't work on Windows.\nYou may encounter issues when running `task watch`, but running `task build` etc... will still be OK.\n\n## Integration tests\n\nDredd is used for API integration tests, if you alter the API in any way you must make sure that the information in the api docs\nmatches the responses.\n\nAs Dredd and the application database config may differ it expects it's own config.json in the .dredd folder.\n\n### How to run Dredd tests locally\n\n1) Build Dredd hooks:\n\n    ```bash\n    task dredd:hooks\n    ```\n2) Install Dredd globally\n\n    ```bash\n    npm install -g dredd\n    ```\n3) Create `./dredd/config.json` for Dredd. It must contain database connection same as used in Semaphore server.\n   You can use any supported database dialect for tests. For example BoltDB.\n    ```json\n   {\n        \"bolt\": {\n            \"host\": \"/tmp/database.boltdb\"\n        },\n        \"dialect\": \"bolt\"\n    }\n    ```\n4) Start Semaphore server (add `--config` option if required):\n\n5) ```bash\n    ./bin/semaphore server\n    ```\n5) Start Dredd tests\n\n    ```\n    dredd --config ./.dredd/dredd.local.yml\n    ```\n\n## Goland debug configuration\n\n<img width=\"700\" alt=\"image\" src=\"https://github.com/user-attachments/assets/cc6132ee-b31e-424c-8ca9-4eba56bf7fb0\" />\n\n## Manual testing with using Semaphore MCP and Cursor agent\n\n1. Install Semaphore MCP\n\n   ```bash\n   pipx install semaphore-mcp\n   ```\n\n   Upgrade:\n\n   ```bash\n   pipx upgrade semaphore-mcp\n   ```\n\n2. Install Cursor Agent CLI\n\n   ```bash\n   curl https://cursor.com/install -fsSL | bash\n   ```\n\n   You can check the agent using command:\n\n   ```bash\n   cursor-agent --version\n   ```\n\n3. Set up MCP server for Cursor\n\n   Add following block to `~/.cursor/mcp.json`:\n\n   ```json\n\t{\n\t  \"mcpServers\": {\n\t    \"semaphore\": {\n\t      \"command\": \"semaphore-mcp\",\n\t      \"args\": [],\n\t      \"env\": {\n\t        \"SEMAPHORE_URL\": \"http://localhost:3000\",\n\t        \"SEMAPHORE_API_TOKEN\": \"<TOKEN>\"\n\t      }\n\t    }\n\t  }\n\t}\n   ```\n\n4. Run tests\n\n   ```bash\n   cd tests/manual\n   ./run.sh\n   ```\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2021 Denis Gukov\nCopyright (c) 2014-2021 Castaway Labs LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Semaphore UI\n\nModern UI for Ansible, Terraform/OpenTofu/Terragrunt, PowerShell and other DevOps tools.\n\n[![roadmap](https://img.shields.io/badge/roadmap-gray?style=for-the-badge&logo=github)](https://github.com/orgs/semaphoreui/projects/11)\n[![telegram](https://img.shields.io/badge/discord_community-510b80?style=for-the-badge&logo=discord)](https://discord.gg/5R6k7hNGcH) \n[![youtube](https://img.shields.io/badge/youtube_channel-red?style=for-the-badge&logo=youtube)](https://www.youtube.com/@semaphoreui) \n<!-- [![docker](https://img.shields.io/badge/container_configurator-white?style=for-the-badge&logo=docker)](https://semaphoreui.com/install/docker/) -->\n\n![responsive-ui-phone1](https://user-images.githubusercontent.com/914224/134777345-8789d9e4-ff0d-439c-b80e-ddc56b74fcee.png)\n\nIf your project has grown and deploying from the terminal is no longer feasible, then Semaphore UI is the tool you need.\n\n## Gratitude\n\nThank you, [Stefan](https://github.com/stefanux) and [steadfasterX](https://github.com/steadfasterX), for supporting the project. Your support is invaluable.\n\nThank you, [Thomas](https://github.com/tboerger) and [Brian](https://github.com/Omicron7), for your excellent contributions. You solved issues that no one else would have taken on.\n\n<!--\n## Live Demo\n\nTry the latest version of Semaphore at [https://portal.semaphoreui.com](https://portal.semaphoreui.com).\n-->\n\n## What is Semaphore UI?\n\nSemaphore UI is a modern web interface for managing popular DevOps tools.\n\nSemaphore UI allows you to:\n* Easily run Ansible playbooks, Terraform and OpenTofu code, as well as Bash and PowerShell scripts.\n* Receive notifications about failed tasks.\n* Control access to your deployment system.\n\n## Key Concepts\n\n1. **Projects** is a collection of related resources, configurations, and tasks.\n2. **Task Templates** are reusable definitions of tasks that can be executed on demand or scheduled.\n3. **Task** is a specific instance of a job or operation executed by Semaphore.\n4. **Schedules** allow you to automate task execution at specified times or intervals.\n5. **Inventory** is a collection of target hosts (servers, virtual machines, containers, etc.) on which tasks will be executed.\n6. **Variable Group** refers to a configuration context that holds sensitive information such as environment variables and secrets used by tasks during execution.\n\n## Getting Started\n\nYou can install Semaphore using the following methods:\n* [Docker](https://semaphoreui.com/install/docker)\n* Deploy a VM from a marketplace:\n  * [AWS](https://aws.amazon.com/marketplace/pp/prodview-xavlsdkqybxtq)\n  * [DigitalOcean](https://marketplace.digitalocean.com/apps/semaphore?refcode=b55d7c0077b8&action=deploy)\n  * [Vultr](https://www.vultr.com/marketplace/apps/semaphore)\n  * [Yandex Cloud](https://yandex.cloud/ru/marketplace/products/fastlix/semaphore)\n* [Snap](http://snapcraft.io/semaphore)\n* [Binary file](https://semaphoreui.com/install/binary)\n* [Debian or RPM package](https://semaphoreui.com/install/binary)\n\n### Docker\n\nThe most popular way to install Semaphore is via Docker.\n\n```\ndocker run -p 3000:3000 --name semaphore \\\n\t-e SEMAPHORE_DB_DIALECT=bolt \\\n\t-e SEMAPHORE_ADMIN=admin \\\n\t-e SEMAPHORE_ADMIN_PASSWORD=changeme \\\n\t-e SEMAPHORE_ADMIN_NAME=Admin \\\n\t-e SEMAPHORE_ADMIN_EMAIL=admin@localhost \\\n\t-d semaphoreui/semaphore:latest\n```\n\nWe recommend using the [Container Configurator](https://semaphoreui.com/install/docker/) to get the ideal Docker configuration for Semaphore.\n\n<!--\n### SaaS\n\nWe offer a SaaS solution for using Semaphore UI without installation. Check it out at [Semaphore Cloud](https://portal.semaphoreui.com).\n-->\n\n### Other Installation Methods\n\nFor more installation options, visit our [Installation page](https://semaphoreui.com/install).\n\n## Documentation\n\n* [User Guide](https://docs.semaphoreui.com)\n* [API Reference](https://semaphoreui.com/api-docs)\n* [Postman Collection](https://www.postman.com/semaphoreui)\n\n## Awesome Semaphore\n\nA curated list of awesome things related to Semaphore UI.\n\n* [Ebdruplab — Ansible Collections](https://github.com/Ebdruplab/ansible-collection_ebdruplab) &mdash; Ansible modules and a role for managing Semaphore.\n* [SemaphoreUI MCP Server](https://github.com/cloin/semaphore-mcp) &mdash; A Model Context Protocol (MCP) server that provides AI assistants with powerful automation capabilities for SemaphoreUI.\n* [Terraform SemaphoreUI Provider](https://github.com/CruGlobal/terraform-provider-semaphoreui) &mdash; Manage Semaphore UI resources using Terraform.\n* [PSSemaphore](https://github.com/robinmalik/PSSemaphore) &mdash; A PowerShell module designed to work against the Ansible Semaphore REST API.\n\n[//]: # (* [Ansible UI Semaphore]&#40;https://github.com/morbidick/ansible-role-semaphore&#41; &mdash; Ansible role to install and configure the Ansible UI Semaphore.)\n\n## Contribution\n\n* [Contribution Guide](https://github.com/semaphoreui/semaphore/blob/develop/CONTRIBUTING.md)\n* [Dev Container](https://codespaces.new/semaphoreui/semaphore) (default user `admin` / `changeme`)\n\n## License\n\nMIT © [Denis Gukov](https://github.com/fiftin)\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 2.14.x  | :white_check_mark: |\n| 2.13.x  | :white_check_mark: |\n| < 2.13  | :x:                |\n\n## Reporting a Vulnerability\n\nIf you believe you’ve found a security vulnerability in Semaphore UI, we encourage you to let us know as soon as possible.\n\nPlease email us at security@semaphoreui.com with:\n\n- A clear description of the vulnerability\n- Steps to reproduce the issue\n- Any related logs, screenshots, or payloads\n\nWe take security seriously and will respond as quickly as possible. We aim to confirm receipt within 1 business day and provide a full response within 7 business days.\n\nWe ask that you **do not publicly disclose** the issue until we’ve had a chance to investigate and release a fix.\n\n## Scope\n\nThis policy applies to:\n\n- Semaphore UI (self-hosted)\n- Official installers, containers, and packages distributed through our GitHub or website\n\nThis policy does **not** apply to third-party plugins or custom modifications.\n"
  },
  {
    "path": "TERRAFORM_ARGS_IMPROVEMENT.md",
    "content": "# Terraform Multi-Stage Arguments Support\n\n## Overview\n\nEnhanced the argument handling system to support stage-specific CLI arguments for Terraform tasks. This allows providing different arguments for different Terraform stages (init, plan, apply) which is essential for complex Terraform workflows.\n\n## What Changed\n\n### 1. LocalAppRunningArgs Structure (`db_lib/LocalApp.go`)\n\nUnified to use map-based arguments with \"default\" key for backward compatibility:\n\n```go\ntype LocalAppRunningArgs struct {\n    CliArgs         map[string][]string     // Stage-specific args (e.g., \"init\", \"apply\", \"default\")\n    EnvironmentVars []string\n    Inputs          map[string]string\n    TaskParams      any\n    TemplateParams  any\n    Callback        func(*os.Process)\n}\n```\n\n**Key Change**: Array format arguments are automatically converted to map format with key \"default\".\n\n### 2. Argument Parsing (`services/tasks/LocalJob.go`)\n\nAdded `convertArgsJSONIfArray()` and `getCLIArgsMap()` functions that:\n- `convertArgsJSONIfArray()`: Checks JSON format and converts array format to map with \"default\" key **in-place**\n- `getCLIArgsMap()`: Parses arguments as map format (after conversion)\n- Array format is automatically converted to map format at runtime\n- Supports both Template and Task level arguments\n- Ensures consistent map-based interface throughout the system\n\n### 3. Terraform Argument Processing (`services/tasks/LocalJob.go`)\n\nUpdated `getTerraformArgs()` to:\n- Return map format only (unified interface)\n- Merge template and task arguments at the stage level\n- Apply common args (destroy, vars, secrets) to all stages\n- Ensure at least \"default\" stage exists with common args\n\n### 4. TerraformApp Enhancements (`db_lib/TerraformApp.go`)\n\nModified Terraform execution to:\n- Accept stage-specific init args during installation\n- Use different args for plan and apply stages\n- Fall back to \"default\" key when specific stage not defined\n- New method `InstallRequirementsWithInitArgs()` for init customization\n\n### 5. LocalJob Orchestration (`services/tasks/LocalJob.go`)\n\nEnhanced `Run()` method to:\n- Get args before prepareRun for Terraform apps\n- Pass init-specific args during installation\n- Provide plan/apply-specific args during execution\n- Convert all args to unified map format with \"default\" key for non-Terraform apps\n\n## Usage Examples\n\n### Legacy Format (Still Supported)\n\nArray format arguments are automatically converted to map with \"default\" key:\n\n```json\n{\n  \"arguments\": [\"-var\", \"environment=production\"]\n}\n```\n\n**Internally converted to:**\n```json\n{\n  \"arguments\": {\n    \"default\": [\"-var\", \"environment=production\"]\n  }\n}\n```\n\n### New Map Format\n\nStage-specific arguments for different Terraform operations:\n\n```json\n{\n  \"arguments\": {\n    \"init\": [\"-upgrade\"],\n    \"plan\": [\"-var\", \"foo=bar\"],\n    \"apply\": [\"-var\", \"foo=baz\"]\n  }\n}\n```\n\n### Real-World Example\n\nTemplate with stage-specific configurations:\n\n```json\n{\n  \"template\": {\n    \"arguments\": {\n      \"init\": [\"-backend-config=bucket=my-bucket\"],\n      \"plan\": [\"-out=tfplan\"],\n      \"apply\": [\"tfplan\"]\n    }\n  }\n}\n```\n\nTask override combining with template args:\n\n```json\n{\n  \"task\": {\n    \"arguments\": {\n      \"init\": [\"-reconfigure\"],\n      \"apply\": [\"-auto-approve\"]\n    }\n  }\n}\n```\n\nResult: Arguments are merged per stage\n- **init**: `-backend-config=bucket=my-bucket`, `-reconfigure`\n- **plan**: `-out=tfplan`\n- **apply**: `tfplan`, `-auto-approve`\n\n## Backward Compatibility\n\n✅ **100% Backward Compatible**\n\n- Existing array format continues to work\n- No changes required to existing templates/tasks\n- Array format arguments are used for all stages when no map is provided\n- Gradual migration path available\n\n## Implementation Details\n\n### Stage-Specific Argument Flow\n\n1. **Parse Phase**: Arguments parsed as array or map from JSON\n2. **Merge Phase**: Template and task args merged at stage level\n3. **Common Args**: Environment vars, secrets, and destroy flag added to all stages\n4. **Execution Phase**: Appropriate args used for each stage (init, plan, apply)\n\n### Key Functions\n\n- `getCLIArgsMap()`: Parses both formats from JSON\n- `getTerraformArgs()`: Builds stage-specific argument maps\n- `prepareRunTerraform()`: Passes init args to Terraform installation\n- `TerraformApp.Run()`: Uses plan/apply-specific args during execution\n\n### Supported Stages\n\n- **init**: Used during `terraform init` (via InstallRequirements)\n- **plan**: Used during `terraform plan`\n- **apply**: Used during `terraform apply`\n- **default**: Used as fallback when specific stage not defined\n\n### Stage Resolution Order (Terraform)\n\nFor each stage, arguments are resolved in this order:\n1. Stage-specific key (e.g., \"init\", \"plan\", \"apply\")\n2. Fall back to \"default\" key if stage-specific not found\n3. Empty array if neither exists\n\n### Backward Compatibility Details\n\n**Array Format → Map Conversion:**\n- **Runtime Conversion**: Array `[\"-var\", \"foo=bar\"]` is converted to `{\"default\": [\"-var\", \"foo=bar\"]}` **in-place** when the task runs\n- **No Database Changes**: Original JSON remains stored as array, conversion happens only during task execution\n- **Transparent**: Users don't see the conversion, it happens automatically\n- Ansible and Shell apps: Always use \"default\" key\n- Terraform apps: Use stage-specific keys, fall back to \"default\"\n\n## Testing\n\nThe implementation has been validated with:\n- Successful build of entire project\n- No linter errors\n- Backward compatibility verified\n- Both array and map formats tested\n\n## Benefits\n\n1. **Flexibility**: Different args for different Terraform stages\n2. **Security**: Keep sensitive args only in specific stages\n3. **Efficiency**: Optimize each stage independently\n4. **Clarity**: Clear separation of stage-specific configurations\n5. **Compatibility**: Works alongside existing array format\n\n## Migration Path\n\n### Phase 1: Keep using array format (no changes needed)\n```json\n{\"arguments\": [\"-var\", \"foo=bar\"]}\n```\n**Result:** Automatically converted to `{\"default\": [\"-var\", \"foo=bar\"]}` internally\n\n### Phase 2: Migrate to map format for multi-stage tasks\n```json\n{\"arguments\": {\"init\": [\"-upgrade\"], \"apply\": [\"-var\", \"foo=bar\"]}}\n```\n**Result:** Uses stage-specific args for init and apply\n\n### Phase 3: Mix default and stage-specific for flexibility\n```json\n{\n  \"arguments\": {\n    \"default\": [\"-var\", \"common=value\"],\n    \"init\": [\"-upgrade\"],\n    \"apply\": [\"-parallelism=20\"]\n  }\n}\n```\n**Result:** plan stage uses \"default\" args, init and apply use their specific args\n\n### Phase 4: Leverage full stage-specific capabilities\n```json\n{\n  \"arguments\": {\n    \"init\": [\"-backend-config=...\"],\n    \"plan\": [\"-out=tfplan\", \"-var-file=prod.tfvars\"],\n    \"apply\": [\"tfplan\", \"-parallelism=20\"]\n  }\n}\n```\n**Result:** Complete control over each stage independently\n\n"
  },
  {
    "path": "Taskfile.yml",
    "content": "version: \"3\"\n\nvars:\n  DOCKER_ORG: semaphoreui\n  DOCKER_SERVER: semaphore\n  DOCKER_RUNNER: runner\n  DOCKER_CMD: docker\n\ntasks:\n  all:\n    desc: Install, test and build Semaphore for local architecture\n    cmds:\n      - task: deps\n      - task: test\n      - task: build\n        vars:\n          GOOS: \"\"\n          GOARCH: \"\"\n          APP_BUILD_TYPE: \"\"\n\n  deps:\n    desc: Install all build dependencies\n    cmds:\n      - task: deps:tools\n      - task: deps:be\n      - task: deps:fe\n\n  deps:tools:\n    desc: Installs required tools to build and publish\n    vars:\n      SWAGGER_VERSION: v0.30.5\n      GORELEASER_VERSION: v2.11.2\n      GOLINTER_VERSION: v1.57.2\n    cmds:\n#      - go install github.com/go-swagger/go-swagger/cmd/swagger@{{ .SWAGGER_VERSION }}\n      - go install github.com/goreleaser/goreleaser/v2@{{ .GORELEASER_VERSION }}\n#      - go install github.com/golangci/golangci-lint/cmd/golangci-lint@{{ .GOLINTER_VERSION }}\n    dir: /tmp\n\n  deps:be:\n    desc: Vendor application dependencies\n    cmds:\n      - go {{ if eq .APP_BUILD_TYPE \"pro_selfhosted\" }}work{{ else }}mod{{ end }} vendor\n\n  deps:fe:\n    desc: Installs nodejs requirements\n    dir: web\n    cmds:\n      - npm install\n\n  build:\n    desc: Build a full set of release binaries and packages\n    cmds:\n      - task: build:fe\n      - task: build:be\n\n  build:debug:\n    desc: Build DEBUG server binary\n    cmds:\n      - >-\n        env CGO_ENABLED=0 GOOS={{ .GOOS }} GOARCH={{ .GOARCH }}\n        go build -o bin/semaphore{{ if eq OS \"windows\" }}.exe{{ end }}\n        -tags \"netgo\"\n        -gcflags=\"all=-N -l\"\n        -ldflags \"-X {{ .IMPORT }}/util.Ver={{ .VERSION }} -X {{ .IMPORT }}/util.Commit={{ .SHA }} -X {{ .IMPORT }}/util.Date={{ .DATE }}\" ./cli\n    vars:\n      TAG:\n        sh: git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD\n      SHA:\n        sh: git log --pretty=format:'%h' -n 1\n      VERSION: \"{{ if eq .GITHUB_REF_TYPE \\\"tag\\\" }}{{ .GITHUB_REF_NAME }}{{ else }}{{ .TAG }}{{ end }}\"\n      DATE: \"{{ now | unixEpoch }}\"\n      IMPORT: \"github.com/semaphoreui/semaphore\"\n\n  build:fe:\n    desc: Build VueJS project\n    dir: web\n    sources:\n      - src/*.*\n      - src/**/*.*\n      - public/index.html\n      - public/favicon.ico\n      - package.json\n      - package-lock.json\n      - babel.config.js\n      - vue.config.js\n    generates:\n      - ../api/public/css/*.css\n      - ../api/public/js/*.js\n      - ../api/public/index.html\n      - ../api/public/favicon.ico\n    cmds:\n      - >-\n        {{ if eq OS \"windows\" }}set VUE_APP_BUILD_TYPE={{ .APP_BUILD_TYPE }} && {{ else }}env VUE_APP_BUILD_TYPE={{ .APP_BUILD_TYPE }}{{ end }}\n        npm run build\n\n  build:be:\n    desc: Build server binary\n    cmds:\n      - >-\n        {{ if eq OS \"windows\" }}set CGO_ENABLED=0 && GOOS={{ .GOOS }} && GOARCH={{ .GOARCH }} && {{ else }}env CGO_ENABLED=0 GOOS={{ .GOOS }} GOARCH={{ .GOARCH }}{{ end }}\n        go build -o bin/semaphore{{ if eq OS \"windows\" }}.exe{{ end }}\n        -tags \"netgo\"\n        -ldflags \"-s -w -X {{ .IMPORT }}/util.Ver={{ .VERSION }} -X {{ .IMPORT }}/util.Commit={{ .SHA }} -X {{ .IMPORT }}/util.Date={{ .DATE }}\" ./cli\n    vars:\n      TAG:\n        sh: git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || git rev-parse --abbrev-ref HEAD\n      SHA:\n        sh: git log --pretty=format:'%h' -n 1\n      VERSION: \"{{ if eq .GITHUB_REF_TYPE \\\"tag\\\" }}{{ .GITHUB_REF_NAME }}{{ else }}{{ .TAG }}{{ end }}\"\n      DATE: \"{{ now | unixEpoch }}\"\n      IMPORT: \"github.com/semaphoreui/semaphore\"\n\n  lint:\n    cmds:\n      - task: lint:fe\n      - task: lint:be\n\n  lint:fe:\n    dir: web\n    cmds:\n      - npm run lint\n\n  lint:be:\n    cmds:\n      - golangci-lint run\n      - swagger validate ./api-docs.yml\n\n  test:\n    cmds:\n      # - task: test:fe\n      - task: test:be\n\n  test:fe:\n    dir: web\n    cmds:\n      - npm run test:unit\n\n  test:be:\n    desc: Run go code tests\n    cmds:\n      - go test -v -coverprofile=coverage.out ./...\n\n  dredd:goodman:\n    desc: Installs goodman which is required by dredd\n    cmds:\n      - go install github.com/snikch/goodman/cmd/goodman@latest\n\n  dredd:deps:\n    desc: Installs dredd dep for integration testing\n    dir: web\n    cmds:\n      - npm install dredd@13.1.2\n\n  dredd:hooks:\n    desc: Compile required dredd hooks built\n    dir: ./.dredd/hooks\n    cmds:\n      - go build -o ../compiled_hooks{{ if eq OS \"windows\" }}.exe{{ end }}\n\n  dredd:test:\n    desc: Run end to end test for API with dredd\n    cmds:\n      - ./web/node_modules/.bin/dredd --config .dredd/dredd.testing.yml\n\n  dredd:test:local:\n    desc: Run end to end test for API with dredd\n    cmds:\n      - ./web/node_modules/.bin/dredd --config .dredd/dredd.local.yml\n\n  release:prod:\n    desc: Create and publish a release\n    cmds:\n      - goreleaser\n\n  release:test:\n    desc: Create a local test release\n    cmds:\n      - goreleaser --auto-snapshot --clean --skip=sign\n\n  docker:test:\n    desc: Test containers by building, running, testing and deleting them\n    deps:\n      - task: docker:deps\n    cmds:\n      - task: docker:build\n        vars:\n          tag: test\n\n      - task: docker:goss\n      - task: docker:lint\n\n      - \"{{ .DOCKER_CMD }} rmi {{ .DOCKER_ORG }}/{{ .DOCKER_SERVER }}:test\"\n      - \"{{ .DOCKER_CMD }} rmi {{ .DOCKER_ORG }}/{{ .DOCKER_RUNNER }}:test\"\n\n  docker:lint:\n    desc: Lint all dockerfiles based on Hadolint\n    deps:\n      - task: docker:deps\n    cmds:\n      - task: docker:lint:server\n      - task: docker:lint:runner\n\n  docker:lint:server:\n    desc: Lint server dockerfile based on Hadolint\n    dir: deployment/docker/server\n    cmds:\n      - hadolint Dockerfile --ignore DL3018\n\n  docker:lint:runner:\n    desc: Lint runner dockerfile based on Hadolint\n    dir: deployment/docker/runner\n    cmds:\n      - hadolint Dockerfile --ignore DL3018\n\n  docker:goss:\n    desc: Check if container contains defined files\n    deps:\n      - task: docker:deps\n    cmds:\n      - task: docker:goss:server\n      - task: docker:goss:runner\n\n  docker:goss:server:\n    desc: Check if server contains defined files\n    dir: deployment/docker/server\n    env:\n      GOSS_FILES_STRATEGY: cp\n    cmds:\n      - dgoss run -it \"{{ .DOCKER_ORG }}/{{ .DOCKER_SERVER }}:test\"\n\n  docker:goss:runner:\n    desc: Check if runner contains defined files\n    dir: deployment/docker/runner\n    env:\n      GOSS_FILES_STRATEGY: cp\n    cmds:\n      - dgoss run -it \"{{ .DOCKER_ORG }}/{{ .DOCKER_RUNNER }}:test\"\n\n  docker:build:\n    desc: Build all defined images for Semaphore\n    vars:\n      tag: \"{{ if .tag }}{{ .tag }}{{ else }}latest{{ end }}\"\n    cmds:\n      - task: docker:build:server\n        vars:\n          tag: \"{{ .tag }}\"\n      - task: docker:build:runner\n        vars:\n          tag: \"{{ .tag }}\"\n\n  docker:build:debug:\n    desc: Build an DEBUG image for Semaphore server\n    vars:\n      tag: \"debug\"\n    cmds:\n      - \"{{ .DOCKER_CMD }} build -f deployment/docker/debug/Dockerfile -t {{ .DOCKER_ORG }}/{{ .DOCKER_SERVER }}:{{ .tag }} .\"\n\n  docker:build:server:\n    desc: Build an image for Semaphore server\n    vars:\n      tag: \"{{ if .tag }}{{ .tag }}{{ else }}latest{{ end }}\"\n    cmds:\n      - \"{{ .DOCKER_CMD }} build -f deployment/docker/server/Dockerfile -t {{ .DOCKER_ORG }}/{{ .DOCKER_SERVER }}:{{ .tag }} .\"\n\n  docker:build:runner:\n    desc: Build an image for Semaphore runner\n    vars:\n      tag: \"{{ if .tag }}{{ .tag }}{{ else }}latest{{ end }}\"\n    cmds:\n      - \"{{ .DOCKER_CMD }} build -f deployment/docker/runner/Dockerfile -t {{ .DOCKER_ORG }}/{{ .DOCKER_RUNNER }}:{{ .tag }} .\"\n\n  docker:push:\n    desc: Push the images to registry\n    cmds:\n      - docker push {{ .DOCKER_ORG }}/{{ .DOCKER_SERVER }}:{{ .tag }}\n      - docker push {{ .DOCKER_ORG }}/{{ .DOCKER_RUNNER }}:{{ .tag }}\n\n  docker:deps:\n    desc: Install docker testing dependencies\n    vars:\n      INSTALL_PATH: '{{ .INSTALL_PATH | default \"/usr/local/bin\" }}'\n      REQUIRE_SUDO: '{{ .REQUIRE_SUDO | default \"true\" }}'\n    cmds:\n      - task: docker:deps:hadolint\n        vars:\n          INSTALL_PATH: \"{{ .INSTALL_PATH }}\"\n          REQUIRE_SUDO: \"{{ .REQUIRE_SUDO }}\"\n      - task: docker:deps:goss\n        vars:\n          INSTALL_PATH: \"{{ .INSTALL_PATH }}\"\n          REQUIRE_SUDO: \"{{ .REQUIRE_SUDO }}\"\n      - task: docker:deps:dgoss\n        vars:\n          INSTALL_PATH: \"{{ .INSTALL_PATH }}\"\n          REQUIRE_SUDO: \"{{ .REQUIRE_SUDO }}\"\n\n  docker:deps:hadolint:\n    platforms:\n      - linux/amd64\n      - linux/arm64\n      - darwin/amd64\n      - darwin/arm64\n    vars:\n      HADOLINT_VERSION: v2.10.0\n    status:\n      - test -f \"{{ .INSTALL_PATH }}/hadolint\"\n    cmds:\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}curl -sSL https://github.com/hadolint/hadolint/releases/download/{{ .HADOLINT_VERSION }}/hadolint-{{ if eq OS \"linux\" }}Linux{{ end }}{{ if eq OS \"darwin\" }}Darwin{{ end }}-{{ if eq ARCH \"amd64\" }}x86_64{{ else }}{{ ARCH }}{{ end }} -o {{ .INSTALL_PATH }}/hadolint'\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}chmod +x {{ .INSTALL_PATH }}/hadolint'\n\n  docker:deps:goss:\n    platforms:\n      - linux\n      - darwin\n    vars:\n      GOSS_VERSION: v0.3.5\n    status:\n      - test -f \"{{ .INSTALL_PATH }}/goss\"\n    cmds:\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}curl -sSL https://github.com/aelsabbahy/goss/releases/download/{{ .GOSS_VERSION }}/goss-{{ OS }}-{{ ARCH }} -o {{ .INSTALL_PATH }}/goss'\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}chmod +x {{ .INSTALL_PATH }}/goss'\n\n  docker:deps:dgoss:\n    platforms:\n      - linux\n      - darwin\n    vars:\n      GOSS_VERSION: v0.3.5\n    status:\n      - test -f \"{{ .INSTALL_PATH }}/dgoss\"\n    cmds:\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}curl -sSL https://raw.githubusercontent.com/aelsabbahy/goss/{{ .GOSS_VERSION }}/extras/dgoss/dgoss -o {{ .INSTALL_PATH }}/dgoss'\n      - '{{ if eq .REQUIRE_SUDO \"true\" }}sudo {{ end }}chmod +x {{ .INSTALL_PATH }}/dgoss'\n"
  },
  {
    "path": "api/api_test.go",
    "content": "package api\n\nimport (\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n)\n\nfunc TestApiPing(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tDebugging: &util.DebuggingConfig{},\n\t}\n\n\treq, _ := http.NewRequest(\"GET\", \"/api/ping\", nil)\n\trr := httptest.NewRecorder()\n\n\tr := Route(\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t\tnil,\n\t)\n\n\tr.ServeHTTP(rr, req)\n\n\tif rr.Code != 200 {\n\t\tt.Errorf(\"Response code should be 200 %d\", rr.Code)\n\t}\n}\n"
  },
  {
    "path": "api/apps.go",
    "content": "package api\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/conv\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"sort\"\n)\n\nfunc validateAppID(str string) error {\n\treturn nil\n}\n\nfunc appMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tappID, err := helpers.GetStrParam(\"app_id\", w, r)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tif err := validateAppID(appID); err != nil {\n\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"app_id\", appID)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc getApps(w http.ResponseWriter, r *http.Request) {\n\n\ttype app struct {\n\t\tutil.App\n\t\tID string `json:\"id\"`\n\t}\n\n\tapps := make([]app, 0)\n\n\tfor k, a := range util.Config.Apps {\n\n\t\tapps = append(apps, app{\n\t\t\tApp: a,\n\t\t\tID:  k,\n\t\t})\n\t}\n\n\tsort.Slice(apps, func(i, j int) bool {\n\t\treturn apps[i].Priority > apps[j].Priority\n\t})\n\n\thelpers.WriteJSON(w, http.StatusOK, apps)\n}\n\nfunc getApp(w http.ResponseWriter, r *http.Request) {\n\tappID := helpers.GetFromContext(r, \"app_id\").(string)\n\n\tapp, ok := util.Config.Apps[appID]\n\tif !ok {\n\t\thelpers.WriteErrorStatus(w, \"app not found\", http.StatusNotFound)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, app)\n}\n\nfunc deleteApp(w http.ResponseWriter, r *http.Request) {\n\tappID := helpers.GetFromContext(r, \"app_id\").(string)\n\n\tstore := helpers.Store(r)\n\n\terr := store.DeleteOptions(\"apps.\" + appID)\n\tif err != nil && !errors.Is(err, db.ErrNotFound) {\n\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tdelete(util.Config.Apps, appID)\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc setAppOption(store db.Store, appID string, field string, val any) error {\n\tkey := \"apps.\" + appID + \".\" + field\n\n\tif val == nil {\n\t\treturn store.DeleteOptions(key)\n\t}\n\n\tv := fmt.Sprintf(\"%v\", val)\n\n\tif err := store.SetOption(key, v); err != nil {\n\t\treturn err\n\t}\n\n\topts := make(map[string]string)\n\topts[key] = v\n\n\toptions := db.ConvertFlatToNested(opts)\n\n\t_ = util.AssignMapToStruct(options, util.Config)\n\n\treturn nil\n}\n\nfunc setApp(w http.ResponseWriter, r *http.Request) {\n\tappID := helpers.GetFromContext(r, \"app_id\").(string)\n\n\tstore := helpers.Store(r)\n\n\tvar app util.App\n\n\tif !helpers.Bind(w, r, &app) {\n\t\treturn\n\t}\n\n\toptions := conv.StructToFlatMap(app)\n\n\tfor k, v := range options {\n\t\tt := reflect.TypeOf(v)\n\n\t\tif v != nil {\n\t\t\tswitch t.Kind() {\n\t\t\tcase reflect.String:\n\t\t\t\tif v == \"\" {\n\t\t\t\t\tv = nil\n\t\t\t\t}\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tnewV, err := json.Marshal(v)\n\t\t\t\tif err != nil {\n\t\t\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusInternalServerError)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tv = string(newV)\n\t\t\t\tif v == \"[]\" {\n\t\t\t\t\tv = nil\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t}\n\t\t}\n\n\t\tif err := setAppOption(store, appID, k, v); err != nil {\n\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc setAppActive(w http.ResponseWriter, r *http.Request) {\n\tappID := helpers.GetFromContext(r, \"app_id\").(string)\n\n\tstore := helpers.Store(r)\n\n\tvar body struct {\n\t\tActive bool `json:\"active\"`\n\t}\n\n\tif !helpers.Bind(w, r, &body) {\n\t\thelpers.WriteErrorStatus(w, \"Invalid request body\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif err := setAppOption(store, appID, \"active\", body.Active); err != nil {\n\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/apps_test.go",
    "content": "package api\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/pkg/conv\"\n\t\"testing\"\n)\n\nfunc TestStructToMap(t *testing.T) {\n\ttype Address struct {\n\t\tCity  string `json:\"city\"`\n\t\tState string `json:\"state\"`\n\t}\n\n\ttype Person struct {\n\t\tName    string  `json:\"name\"`\n\t\tAge     int     `json:\"age\"`\n\t\tEmail   string  `json:\"email\"`\n\t\tActive  bool    `json:\"active\"`\n\t\tAddress Address `json:\"address\"`\n\t}\n\n\t// Create an instance of the struct\n\tp := Person{\n\t\tName:   \"John Doe\",\n\t\tAge:    30,\n\t\tEmail:  \"johndoe@example.com\",\n\t\tActive: true,\n\t\tAddress: Address{\n\t\t\tCity:  \"New York\",\n\t\t\tState: \"NY\",\n\t\t},\n\t}\n\n\t// Convert the struct to a flat map\n\tflatMap := conv.StructToFlatMap(&p)\n\n\tif flatMap[\"address.city\"] != \"New York\" {\n\t\tt.Fail()\n\t}\n\t// Print the map\n\tfmt.Println(flatMap)\n}\n"
  },
  {
    "path": "api/auth.go",
    "content": "package api\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/pquerna/otp\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tproApi \"github.com/semaphoreui/semaphore/pro/api\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/pquerna/otp/totp\"\n)\n\nfunc getSession(r *http.Request) (*db.Session, bool) {\n\t// fetch session from cookie\n\tcookie, err := r.Cookie(\"semaphore\")\n\tif err != nil {\n\t\treturn nil, false\n\t}\n\n\tvalue := make(map[string]any)\n\tif err = util.Cookie.Decode(\"semaphore\", cookie.Value, &value); err != nil {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tuser, ok := value[\"user\"]\n\tsessionVal, okSession := value[\"session\"]\n\tif !ok || !okSession {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tuserID := user.(int)\n\tsessionID := sessionVal.(int)\n\n\t// fetch session\n\tsession, err := helpers.Store(r).GetSession(userID, sessionID)\n\n\tif err != nil {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tif time.Since(session.LastActive).Hours() > 7*24 {\n\t\t// more than week old unused session\n\t\t// destroy.\n\t\tif err = helpers.Store(r).ExpireSession(userID, sessionID); err != nil {\n\t\t\t// it is internal error, it doesn't concern the user\n\t\t\tlog.Error(err)\n\t\t}\n\n\t\treturn nil, false\n\t}\n\n\treturn &session, true\n\n}\n\ntype totpRequestBody struct {\n\tPasscode string `json:\"passcode\"`\n}\n\ntype totpRecoveryRequestBody struct {\n\tRecoveryCode string `json:\"recovery_code\"`\n}\n\n// recoverySession handles the recovery of a user session using a recovery code.\n// It validates the recovery code provided by the user and, if valid, verifies the session.\n// If the recovery code is invalid or recovery is not allowed, it returns an appropriate HTTP status code.\n//\n// HTTP Request:\n// - Method: POST\n// - Body: JSON object containing the recovery code (e.g., {\"recovery_code\": \"code\"}).\n//\n// Responses:\n// - 204 No Content: Recovery successful, session verified.\n// - 400 Bad Request: Invalid request body or user does not have TOTP enabled.\n// - 401 Unauthorized: Invalid recovery code or session not found.\n// - 403 Forbidden: TOTP recovery is disabled.\n// - 500 Internal Server Error: An unexpected error occurred.\n//\n// Preconditions:\n// - The session must exist and be valid.\n// - TOTP recovery must be enabled in the configuration.\n//\n// Parameters:\n// - w: The HTTP response writer.\n// - r: The HTTP request.\nfunc recoverySession(w http.ResponseWriter, r *http.Request) {\n\tsession, ok := getSession(r)\n\n\tif !ok {\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tswitch session.VerificationMethod {\n\tcase db.SessionVerificationTotp:\n\t\tif !util.Config.Auth.Totp.Enabled || !util.Config.Auth.Totp.AllowRecovery {\n\t\t\thelpers.WriteErrorStatus(w, \"TOTP_DISABLED\", http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tvar body totpRecoveryRequestBody\n\t\tif !helpers.Bind(w, r, &body) {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tstore := helpers.Store(r)\n\n\t\tuser, err := store.GetUser(session.UserID)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tif user.Totp == nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tif !util.VerifyRecoveryCode(body.RecoveryCode, user.Totp.RecoveryHash) {\n\t\t\thelpers.WriteErrorStatus(w, \"INVALID_RECOVERY_CODE\", http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\terr = store.DeleteTotpVerification(user.ID, user.Totp.ID)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\terr = store.VerifySession(session.UserID, session.ID)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tw.WriteHeader(http.StatusNoContent)\n\tcase db.SessionVerificationNone:\n\t\tw.WriteHeader(http.StatusNoContent)\n\t\treturn\n\tdefault:\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t}\n}\n\nfunc verifySession(w http.ResponseWriter, r *http.Request) {\n\tsession, ok := getSession(r)\n\n\tif !ok {\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tswitch session.VerificationMethod {\n\tcase db.SessionVerificationEmail:\n\t\tproApi.VerifySessionByEmail(session, w, r)\n\t\treturn\n\n\tcase db.SessionVerificationTotp:\n\t\tif !util.Config.Auth.Totp.Enabled {\n\t\t\thelpers.WriteErrorStatus(w, \"TOTP_DISABLED\", http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tvar body totpRequestBody\n\t\tif !helpers.Bind(w, r, &body) {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tuser, err := helpers.Store(r).GetUser(session.UserID)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tkey, err := otp.NewKeyFromURL(user.Totp.URL)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tif !totp.Validate(body.Passcode, key.Secret()) {\n\t\t\thelpers.WriteErrorStatus(w, \"INVALID_PASSCODE\", http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\terr = helpers.Store(r).VerifySession(session.UserID, session.ID)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\tcase db.SessionVerificationNone:\n\t\tw.WriteHeader(http.StatusNoContent)\n\t\treturn\n\tdefault:\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t}\n}\n\nfunc authenticationHandler(w http.ResponseWriter, r *http.Request) (ok bool, req *http.Request) {\n\tvar userID int\n\n\treq = r\n\n\tauthHeader := strings.ToLower(r.Header.Get(\"authorization\"))\n\n\tif len(authHeader) > 0 && strings.Contains(authHeader, \"bearer\") {\n\t\ttoken, err := helpers.Store(r).GetAPIToken(strings.Replace(authHeader, \"bearer \", \"\", 1))\n\n\t\tif err != nil {\n\t\t\tif !errors.Is(err, db.ErrNotFound) {\n\t\t\t\tlog.Error(err)\n\t\t\t}\n\n\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\tuserID = token.UserID\n\t} else {\n\t\tsession, found := getSession(r)\n\n\t\tif !found {\n\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\tif !session.IsVerified() {\n\t\t\tswitch session.VerificationMethod {\n\t\t\tcase db.SessionVerificationEmail:\n\t\t\t\thelpers.WriteErrorStatus(w, \"EMAIL_OTP_REQUIRED\", http.StatusUnauthorized)\n\t\t\tcase db.SessionVerificationTotp:\n\t\t\t\thelpers.WriteErrorStatus(w, \"TOTP_REQUIRED\", http.StatusUnauthorized)\n\t\t\tdefault:\n\t\t\t\thelpers.WriteErrorStatus(w, \"SESSION_NOT_VERIFIED\", http.StatusUnauthorized)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tuserID = session.UserID\n\n\t\tif err := helpers.Store(r).TouchSession(userID, session.ID); err != nil {\n\t\t\tlog.Error(err)\n\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\t}\n\n\tuser, err := helpers.Store(r).GetUser(userID)\n\tif err != nil {\n\t\tif !errors.Is(err, db.ErrNotFound) {\n\t\t\t// internal error\n\t\t\tlog.Error(err)\n\t\t}\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tok = true\n\treq = helpers.SetContextValue(r, \"user\", &user)\n\treturn\n}\n\n// nolint: gocyclo\nfunc authentication(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tok, r := authenticationHandler(w, r)\n\t\tif ok {\n\t\t\tnext.ServeHTTP(w, r)\n\t\t}\n\t})\n}\n\n// nolint: gocyclo\nfunc authenticationWithStore(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tstore := helpers.Store(r)\n\n\t\tvar ok bool\n\n\t\tdb.StoreSession(store, r.URL.String(), func() {\n\t\t\tok, r = authenticationHandler(w, r)\n\t\t})\n\n\t\tif ok {\n\t\t\tnext.ServeHTTP(w, r)\n\t\t}\n\t})\n}\n\nfunc adminMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\t\tif !user.Admin {\n\t\t\tw.WriteHeader(http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n"
  },
  {
    "path": "api/cache.go",
    "content": "package api\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc clearCache(w http.ResponseWriter, r *http.Request) {\n\tcurrentUser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tif !currentUser.Admin {\n\t\thelpers.WriteJSON(w, http.StatusForbidden, map[string]string{\n\t\t\t\"error\": \"User must be admin\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := util.Config.ClearTmpDir()\n\tif err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteJSON(w, http.StatusInternalServerError, map[string]string{\n\t\t\t\"error\": \"Can not clear cache\",\n\t\t})\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/debug/gc.go",
    "content": "package debug\n\nimport (\n\t\"net/http\"\n\t\"runtime\"\n)\n\nfunc GC(w http.ResponseWriter, r *http.Request) {\n\truntime.GC()\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/debug/pprof.go",
    "content": "package debug\n\nimport (\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"runtime/pprof\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc Dump(w http.ResponseWriter, r *http.Request) {\n\tif util.Config.Debugging.PprofDumpDir == \"\" {\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tf, err := os.Create(path.Join(util.Config.Debugging.PprofDumpDir, \"mem-\"+strconv.Itoa(int(time.Now().Unix()))+\".prof\"))\n\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": \"pprof\",\n\t\t}).Error(\"error creating mem.prof\")\n\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tdefer f.Close()\n\n\terr = pprof.WriteHeapProfile(f)\n\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": \"pprof\",\n\t\t}).Error(\"Failed to write memory profile\")\n\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/events.go",
    "content": "package api\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"net/http\"\n)\n\n// nolint: gocyclo\nfunc getEvents(w http.ResponseWriter, r *http.Request, limit int) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\tprojectObj, exists := helpers.GetOkFromContext(r, \"project\")\n\n\tvar err error\n\tvar events []db.Event\n\n\tif exists {\n\t\tproject := projectObj.(db.Project)\n\n\t\tif !user.Admin { // check permissions to view events\n\t\t\t_, err = helpers.Store(r).GetProjectUser(project.ID, user.ID)\n\t\t}\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tevents, err = helpers.Store(r).GetEvents(project.ID, db.RetrieveQueryParams{Count: limit})\n\t} else {\n\t\tevents, err = helpers.Store(r).GetUserEvents(user.ID, db.RetrieveQueryParams{Count: limit})\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, events)\n}\n\nfunc getLastEvents(w http.ResponseWriter, r *http.Request) {\n\tgetEvents(w, r, 200)\n}\n\nfunc getAllEvents(w http.ResponseWriter, r *http.Request) {\n\tgetEvents(w, r, 0)\n}\n"
  },
  {
    "path": "api/helpers/context.go",
    "content": "package helpers\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc GetFromContext(r *http.Request, key string) any {\n\treturn r.Context().Value(key)\n}\n\nfunc GetOkFromContext(r *http.Request, key string) (res any, ok bool) {\n\tres = r.Context().Value(key)\n\treturn res, res != nil\n}\n\nfunc SetContextValue(r *http.Request, key string, value any) *http.Request {\n\tctx := r.Context()\n\tctx = context.WithValue(ctx, key, value)\n\treturn r.WithContext(ctx)\n}\n\nfunc UserFromContext(r *http.Request) *db.User {\n\treturn GetFromContext(r, \"user\").(*db.User)\n}\n\nfunc GetGlobalRole(r *http.Request) db.Role {\n\treturn GetFromContext(r, \"role\").(db.Role)\n}\n"
  },
  {
    "path": "api/helpers/event_log.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\ntype EventLogItem struct {\n\tIntegrationID int\n\tUserID        int\n\tProjectID     int\n\n\tObjectType  db.EventObjectType\n\tObjectID    int\n\tDescription string\n}\n\ntype EventLogType string\n\nconst (\n\tEventLogCreate EventLogType = \"create\"\n\tEventLogUpdate EventLogType = \"update\"\n\tEventLogDelete EventLogType = \"delete\"\n)\n\nfunc EventLog(r *http.Request, action EventLogType, item EventLogItem) {\n\tevent := db.Event{\n\t\tObjectType:  &item.ObjectType,\n\t\tObjectID:    &item.ObjectID,\n\t\tDescription: &item.Description,\n\t}\n\n\tif item.IntegrationID > 0 {\n\t\tevent.IntegrationID = &item.IntegrationID\n\t}\n\n\tif item.UserID > 0 {\n\t\tevent.UserID = &item.UserID\n\t}\n\n\tif item.ProjectID > 0 {\n\t\tevent.ProjectID = &item.ProjectID\n\t}\n\n\tlogFields := event.ToFields()\n\tlogFields[\"action\"] = string(action)\n\n\tif _, err := Store(r).CreateEvent(event); err != nil {\n\t\tlog.WithFields(logFields).Error(\"Failed to store event\")\n\t}\n\n\tlogWriter := GetFromContext(r, \"log_writer\").(pro_interfaces.LogWriteService)\n\n\tif err := logWriter.WriteEventLog(pro_interfaces.EventLogRecord{\n\t\tAction:        string(action),\n\t\tProjectID:     event.ProjectID,\n\t\tUserID:        event.UserID,\n\t\tIntegrationID: event.IntegrationID,\n\t\tDescription:   event.Description,\n\t}); err != nil {\n\t\tlog.WithFields(logFields).Error(\"Failed to store event in log file\")\n\t}\n}\n"
  },
  {
    "path": "api/helpers/helpers.go",
    "content": "package helpers\n\nimport (\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc Store(r *http.Request) db.Store {\n\treturn GetFromContext(r, \"store\").(db.Store)\n}\n\nfunc isXHR(w http.ResponseWriter, r *http.Request) bool {\n\taccept := r.Header.Get(\"Accept\")\n\treturn !strings.Contains(accept, \"text/html\")\n}\n\n// H just a string-to-anything map\ntype H map[string]any\n\n// Bind decodes json into object\nfunc Bind(w http.ResponseWriter, r *http.Request, out any) bool {\n\terr := json.NewDecoder(r.Body).Decode(out)\n\tif err != nil {\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t}\n\n\treturn err == nil\n}\n"
  },
  {
    "path": "api/helpers/helpers_test.go",
    "content": "package helpers\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/gorilla/mux\"\n)\n\n// SetTestDelay sets a delay for testing slow network conditions\nfunc SetTestDelay(delay time.Duration) func() {\n\toriginalDelay := os.Getenv(\"DEBUG_DELAY\")\n\tos.Setenv(\"DEBUG_DELAY\", delay.String())\n\treturn func() {\n\t\tif originalDelay == \"\" {\n\t\t\tos.Unsetenv(\"DEBUG_DELAY\")\n\t\t} else {\n\t\t\tos.Setenv(\"DEBUG_DELAY\", originalDelay)\n\t\t}\n\t}\n}\n\nfunc TestGetIntParam(t *testing.T) {\n\treq, _ := http.NewRequest(\"GET\", \"/test/123\", nil)\n\trr := httptest.NewRecorder()\n\n\tr := mux.NewRouter()\n\tr.HandleFunc(\"/test/{test_id}\", mockParam)\n\tr.ServeHTTP(rr, req)\n\n\tif rr.Code != 200 {\n\t\tt.Errorf(\"Response code should be 200 %d\", rr.Code)\n\t}\n}\n\nfunc mockParam(w http.ResponseWriter, r *http.Request) {\n\t_, err := GetIntParam(\"test_id\", w, r)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tw.WriteHeader(200)\n}\n"
  },
  {
    "path": "api/helpers/query_params.go",
    "content": "package helpers\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"net/url\"\n\t\"slices\"\n\t\"strconv\"\n)\n\nfunc QueryParamsForProps(url *url.URL, props db.ObjectProps) (params db.RetrieveQueryParams) {\n\tsortBy := \"\"\n\n\tif url.Query().Get(\"sort\") != \"\" {\n\t\ti := slices.Index(props.SortableColumns, url.Query().Get(\"sort\"))\n\t\tif i != -1 {\n\t\t\tsortBy = props.SortableColumns[i]\n\t\t}\n\t}\n\n\tparams = db.RetrieveQueryParams{\n\t\tSortBy:       sortBy,\n\t\tSortInverted: url.Query().Get(\"order\") == \"desc\",\n\t}\n\n\treturn\n}\n\nfunc QueryParams(url *url.URL) db.RetrieveQueryParams {\n\treturn db.RetrieveQueryParams{\n\t\tSortBy:       url.Query().Get(\"sort\"),\n\t\tSortInverted: url.Query().Get(\"order\") == \"desc\",\n\t}\n}\n\nfunc QueryParamsWithOwner(url *url.URL, props db.ObjectProps) db.RetrieveQueryParams {\n\tres := QueryParamsForProps(url, props)\n\n\thasOwnerFilter := false\n\n\tfor _, ownership := range props.Ownerships {\n\t\ts := url.Query().Get(ownership.ReferringColumnSuffix)\n\t\tif s == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tid, err2 := strconv.Atoi(s)\n\t\tif err2 != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tres.Ownership.SetOwnerID(*ownership, id)\n\t\thasOwnerFilter = true\n\t}\n\n\tif !hasOwnerFilter {\n\t\tres.Ownership.WithoutOwnerOnly = true\n\t}\n\n\treturn res\n}\n"
  },
  {
    "path": "api/helpers/route_params.go",
    "content": "package helpers\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"strconv\"\n\n\t\"github.com/gorilla/mux\"\n)\n\n// GetStrParam fetches a parameter from the route variables as an integer\n// redirects to a 404 or writes bad request state depending on error state\nfunc GetStrParam(name string, w http.ResponseWriter, r *http.Request) (string, error) {\n\tstrParam, ok := mux.Vars(r)[name]\n\n\tif !ok {\n\t\tif !isXHR(w, r) {\n\t\t\thttp.Redirect(w, r, \"/404\", http.StatusFound)\n\t\t} else {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t}\n\n\t\treturn \"\", fmt.Errorf(\"parameter missed\")\n\t}\n\n\treturn strParam, nil\n}\n\nfunc HasParam(name string, r *http.Request) bool {\n\t_, ok := mux.Vars(r)[name]\n\treturn ok\n}\n\n// GetIntParam fetches a parameter from the route variables as an integer\n// redirects to a 404 or writes bad request state depending on error state\nfunc GetIntParam(name string, w http.ResponseWriter, r *http.Request) (int, error) {\n\tintParam, err := strconv.Atoi(mux.Vars(r)[name])\n\n\tif err != nil {\n\t\tif !isXHR(w, r) {\n\t\t\thttp.Redirect(w, r, \"/404\", http.StatusFound)\n\t\t} else {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t}\n\n\t\treturn 0, err\n\t}\n\n\treturn intParam, nil\n}\n"
  },
  {
    "path": "api/helpers/write_response.go",
    "content": "package helpers\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"net/http\"\n\t\"runtime/debug\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// WriteJSON writes object as JSON\nfunc WriteJSON(w http.ResponseWriter, code int, out any) {\n\tw.Header().Set(\"content-type\", \"application/json\")\n\tw.WriteHeader(code)\n\n\tif out == nil {\n\t\treturn\n\t}\n\n\tif err := json.NewEncoder(w).Encode(out); err != nil {\n\t\tlog.Error(err)\n\t\tdebug.PrintStack()\n\t}\n}\n\nfunc WriteErrorStatus(w http.ResponseWriter, err string, code int) {\n\tWriteJSON(w, code, map[string]string{\n\t\t\"error\": err,\n\t})\n}\n\nfunc WriteError(w http.ResponseWriter, err error) {\n\tif errors.Is(err, common_errors.ErrInvalidSubscription) {\n\t\tWriteErrorStatus(w, \"You have no subscription.\", http.StatusForbidden)\n\t\treturn\n\t}\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\tw.WriteHeader(http.StatusNotFound)\n\t\treturn\n\t}\n\n\tif errors.Is(err, db.ErrInvalidOperation) {\n\t\tWriteErrorStatus(w, err.Error(), http.StatusConflict)\n\t\treturn\n\t}\n\n\tvar validationError *db.ValidationError\n\tvar userVisibleError *common_errors.UserVisibleError\n\tswitch {\n\tcase errors.As(err, &userVisibleError):\n\t\tWriteErrorStatus(w, userVisibleError.Error(), http.StatusBadRequest)\n\tcase errors.As(err, &validationError):\n\t\tWriteErrorStatus(w, validationError.Error(), http.StatusBadRequest)\n\tdefault:\n\t\tlog.Error(err)\n\t\tdebug.PrintStack()\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t}\n}\n"
  },
  {
    "path": "api/integration.go",
    "content": "package api\n\nimport (\n\t\"crypto/hmac\"\n\t\"crypto/sha256\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/conv\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\ttask2 \"github.com/semaphoreui/semaphore/services/tasks\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"github.com/thedevsaddam/gojsonq/v2\"\n)\n\n// isValidHmacPayload checks if the GitHub payload's hash fits with\n// the hash computed by GitHub sent as a header\nfunc isValidHmacPayload(secret, headerHash string, payload []byte, prefix string) bool {\n\thash := hmacHashPayload(secret, payload)\n\n\tif !strings.HasPrefix(headerHash, prefix) {\n\t\treturn false\n\t}\n\n\theaderHash = headerHash[len(prefix):]\n\n\treturn hmac.Equal(\n\t\t[]byte(hash),\n\t\t[]byte(headerHash),\n\t)\n}\n\n// hmacHashPayload computes the hash of payload's body according to the webhook's secret token\n// see https://developer.github.com/webhooks/securing/#validating-payloads-from-github\n// returning the hash as a hexadecimal string\nfunc hmacHashPayload(secret string, payloadBody []byte) string {\n\thm := hmac.New(sha256.New, []byte(secret))\n\thm.Write(payloadBody)\n\tsum := hm.Sum(nil)\n\treturn fmt.Sprintf(\"%x\", sum)\n}\n\ntype IntegrationController struct {\n\tintegrationService server.IntegrationService\n}\n\nfunc NewIntegrationController(integrationService server.IntegrationService) *IntegrationController {\n\treturn &IntegrationController{\n\t\tintegrationService: integrationService,\n\t}\n}\n\nfunc (c *IntegrationController) ReceiveIntegration(w http.ResponseWriter, r *http.Request) {\n\n\tvar err error\n\n\tintegrationAlias, err := helpers.GetStrParam(\"integration_alias\", w, r)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn\n\t}\n\n\tlog.Info(fmt.Sprintf(\"Receiving Integration from: %s\", r.RemoteAddr))\n\n\tstore := helpers.Store(r)\n\n\tintegrations, level, err := store.GetIntegrationsByAlias(integrationAlias)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn\n\t}\n\n\tlog.Info(fmt.Sprintf(\"%d integrations found for alias %s\", len(integrations), integrationAlias))\n\n\tprojects := make(map[int]db.Project)\n\n\tvar payload []byte\n\n\tpayload, err = io.ReadAll(r.Body)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn\n\t}\n\n\tfor _, integration := range integrations {\n\n\t\tproject, ok := projects[integration.ProjectID]\n\t\tif !ok {\n\t\t\tproject, err = store.GetProject(integrations[0].ProjectID)\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tprojects[integration.ProjectID] = project\n\t\t}\n\n\t\tif integration.ProjectID != project.ID {\n\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\"context\":       \"integrations\",\n\t\t\t\t\"project_id\":    project.ID,\n\t\t\t\t\"integrationId\": integration.ID,\n\t\t\t}).Error(\"integration project mismatch\")\n\t\t\tcontinue\n\t\t}\n\n\t\terr = c.integrationService.FillIntegration(&integration)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t\treturn\n\t\t}\n\n\t\tswitch integration.AuthMethod {\n\t\tcase db.IntegrationAuthGitHub:\n\t\t\tok := isValidHmacPayload(\n\t\t\t\tintegration.AuthSecret.LoginPassword.Password,\n\t\t\t\tr.Header.Get(\"X-Hub-Signature-256\"),\n\t\t\t\tpayload,\n\t\t\t\t\"sha256=\")\n\n\t\t\tif !ok {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).Error(\"Invalid GitHub/HMAC signature\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.IntegrationAuthBitbucket:\n\t\t\tok := isValidHmacPayload(\n\t\t\t\tintegration.AuthSecret.LoginPassword.Password,\n\t\t\t\tr.Header.Get(\"x-hub-signature\"),\n\t\t\t\tpayload,\n\t\t\t\t\"sha256=\")\n\n\t\t\tif !ok {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).Error(\"Invalid Bitbucket/HMAC signature\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.IntegrationAuthHmac:\n\t\t\tok := isValidHmacPayload(\n\t\t\t\tintegration.AuthSecret.LoginPassword.Password,\n\t\t\t\tr.Header.Get(integration.AuthHeader),\n\t\t\t\tpayload,\n\t\t\t\t\"\")\n\n\t\t\tif !ok {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).Error(\"Invalid HMAC signature\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.IntegrationAuthToken:\n\t\t\tif integration.AuthSecret.LoginPassword.Password != r.Header.Get(integration.AuthHeader) {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).Error(\"Invalid verification token\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.IntegrationAuthBasic:\n\t\t\tvar username, password, auth = r.BasicAuth()\n\t\t\tif !auth || integration.AuthSecret.LoginPassword.Password != password || integration.AuthSecret.LoginPassword.Login != username {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).Error(\"Invalid BasicAuth: incorrect login or password\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.IntegrationAuthNone:\n\t\t\t// Do nothing\n\t\tdefault:\n\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\"context\": \"integrations\",\n\t\t\t}).Error(\"Unknown verification method: \" + integration.AuthMethod)\n\t\t\tcontinue\n\t\t}\n\n\t\tif level != db.IntegrationAliasSingle {\n\t\t\tvar matchers []db.IntegrationMatcher\n\t\t\tmatchers, err = store.GetIntegrationMatchers(integration.ProjectID, db.RetrieveQueryParams{}, integration.ID)\n\t\t\tif err != nil {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"integrations\",\n\t\t\t\t}).WithError(err).Error(\"Could not retrieve matchers\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar matched = false\n\n\t\t\tfor _, matcher := range matchers {\n\t\t\t\tif Match(matcher, r.Header, payload) {\n\t\t\t\t\tmatched = true\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tmatched = false\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !matched {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\ttask := RunIntegration(integration, project, r, payload)\n\t\tif task != nil {\n\t\t\tw.Header().Add(\"X-Semaphore-Task-ID\", strconv.Itoa(task.ID))\n\t\t\tw.Header().Add(\"X-Semaphore-Template-ID\", strconv.Itoa(task.TemplateID))\n\t\t\tw.Header().Add(\"X-Semaphore-Project-ID\", strconv.Itoa(task.ProjectID))\n\n\t\t\tif task.IntegrationID != nil {\n\t\t\t\tw.Header().Add(\"X-Semaphore-Integration-ID\", strconv.Itoa(*task.IntegrationID))\n\t\t\t}\n\n\t\t\tif task.InventoryID != nil {\n\t\t\t\tw.Header().Add(\"X-Semaphore-Inventory-ID\", strconv.Itoa(*task.InventoryID))\n\t\t\t}\n\t\t}\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc Match(matcher db.IntegrationMatcher, header http.Header, bodyBytes []byte) (matched bool) {\n\n\tswitch matcher.MatchType {\n\tcase db.IntegrationMatchHeader:\n\t\treturn MatchCompare(header.Get(matcher.Key), matcher.Method, matcher.Value)\n\tcase db.IntegrationMatchBody:\n\t\tvar body = string(bodyBytes)\n\t\tswitch matcher.BodyDataType {\n\t\tcase db.IntegrationBodyDataJSON:\n\t\t\tvalue := gojsonq.New().JSONString(body).Find(matcher.Key)\n\n\t\t\treturn MatchCompare(value, matcher.Method, matcher.Value)\n\t\tcase db.IntegrationBodyDataString:\n\t\t\treturn MatchCompare(body, matcher.Method, matcher.Value)\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc MatchCompare(value any, method db.IntegrationMatchMethodType, expected string) bool {\n\n\tif intValue, ok := conv.ConvertFloatToIntIfPossible(value); ok {\n\t\tvalue = intValue\n\t}\n\n\tstrValue := fmt.Sprintf(\"%v\", value)\n\n\tswitch method {\n\tcase db.IntegrationMatchMethodEquals:\n\t\treturn strValue == expected\n\tcase db.IntegrationMatchMethodUnEquals:\n\t\treturn strValue != expected\n\tcase db.IntegrationMatchMethodContains:\n\t\treturn strings.Contains(fmt.Sprintf(\"%v\", value), expected)\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc GetTaskDefinition(\n\tintegration db.Integration,\n\tpayload []byte,\n\th http.Header,\n\textractorCreator func(projectID, integrationID int) ([]db.IntegrationExtractValue, error),\n) (taskDefinition db.Task, err error) {\n\n\tvar envValues = make([]db.IntegrationExtractValue, 0)\n\tvar taskValues = make([]db.IntegrationExtractValue, 0)\n\n\textractValuesForExtractor, err := extractorCreator(integration.ProjectID, integration.ID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, val := range extractValuesForExtractor {\n\t\tswitch val.VariableType {\n\t\tcase \"\", db.IntegrationVariableEnvironment: // \"\" handles null/empty for backward compatibility\n\t\t\tenvValues = append(envValues, val)\n\t\tcase db.IntegrationVariableTaskParam:\n\t\t\ttaskValues = append(taskValues, val)\n\t\t}\n\t}\n\n\tvar extractedEnvResults = Extract(envValues, h, payload)\n\n\tif integration.TaskParams != nil {\n\t\ttaskDefinition = integration.TaskParams.CreateTask(integration.TemplateID)\n\t} else {\n\t\ttaskDefinition = db.Task{\n\t\t\tProjectID:  integration.ProjectID,\n\t\t\tTemplateID: integration.TemplateID,\n\t\t\tParams:     make(db.MapStringAnyField),\n\t\t}\n\t}\n\n\ttaskDefinition.IntegrationID = &integration.ID\n\n\tenv := make(map[string]any)\n\n\tif taskDefinition.Environment != \"\" {\n\t\terr = json.Unmarshal([]byte(taskDefinition.Environment), &env)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor k, v := range extractedEnvResults {\n\t\t//if _, exists := env[k]; !exists {\n\t\t//\tenv[k] = v\n\t\t//}\n\t\tenv[k] = v\n\t}\n\n\tenvStr, err := json.Marshal(env)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttaskDefinition.Environment = string(envStr)\n\n\textractedTaskResults := Extract(taskValues, h, payload)\n\tfor k, v := range extractedTaskResults {\n\t\ttaskDefinition.Params[k] = v\n\t}\n\n\treturn\n}\n\nfunc RunIntegration(integration db.Integration, project db.Project, r *http.Request, payload []byte) (taskRef *db.Task) {\n\ttaskRef = nil\n\n\tlog.Info(fmt.Sprintf(\"Running integration %d\", integration.ID))\n\n\ttaskDefinition, err := GetTaskDefinition(\n\t\tintegration, payload, r.Header, func(projectID, integrationID int) ([]db.IntegrationExtractValue, error) {\n\t\t\treturn helpers.Store(r).GetIntegrationExtractValues(projectID, db.RetrieveQueryParams{}, integrationID)\n\t\t})\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\":        \"integrations\",\n\t\t\t\"integration_id\": integration.ID,\n\t\t}).Error(\"Failed to get task definition\")\n\t\treturn\n\t}\n\n\ttpl, err := helpers.Store(r).GetTemplate(integration.ProjectID, integration.TemplateID)\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn\n\t}\n\n\tpool := helpers.GetFromContext(r, \"task_pool\").(*task2.TaskPool)\n\n\ttask, err := pool.AddTask(taskDefinition, nil, \"\", integration.ProjectID, tpl.App.NeedTaskAlias())\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn\n\t}\n\n\ttaskRef = &task\n\n\treturn\n}\n\nfunc Extract(extractValues []db.IntegrationExtractValue, h http.Header, payload []byte) (result map[string]string) {\n\tresult = make(map[string]string)\n\n\tfor _, extractValue := range extractValues {\n\t\tswitch extractValue.ValueSource {\n\t\tcase db.IntegrationExtractHeaderValue:\n\t\t\tresult[extractValue.Variable] = h.Get(extractValue.Key)\n\t\tcase db.IntegrationExtractBodyValue:\n\t\t\tswitch extractValue.BodyDataType {\n\t\t\tcase db.IntegrationBodyDataJSON:\n\t\t\t\tval := gojsonq.New().JSONString(string(payload)).Find(extractValue.Key)\n\t\t\t\tif val != nil {\n\t\t\t\t\tresult[extractValue.Variable] = fmt.Sprintf(\"%v\", val)\n\t\t\t\t}\n\t\t\tcase db.IntegrationBodyDataString:\n\t\t\t\tresult[extractValue.Variable] = string(payload)\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n"
  },
  {
    "path": "api/integration_test.go",
    "content": "package api\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"net/http\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestExtract_HeaderAndCaseInsensitive(t *testing.T) {\n\th := http.Header{}\n\th.Set(\"x-token\", \"abc123\") // lower-case to verify case-insensitive get\n\n\tvalues := []db.IntegrationExtractValue{\n\t\t{\n\t\t\tName:         \"Token header\",\n\t\t\tValueSource:  db.IntegrationExtractHeaderValue,\n\t\t\tKey:          \"X-Token\", // different case\n\t\t\tVariable:     \"TOKEN\",\n\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t},\n\t}\n\n\tgot := Extract(values, h, nil)\n\n\trequire.Equal(t, \"abc123\", got[\"TOKEN\"], \"TOKEN header value should match\")\n}\n\nfunc TestExtract_JSONBody_VariousTypesAndMissing(t *testing.T) {\n\tpayload := []byte(`{\n\t\t\"num\": 42,\n\t\t\"str\": \"hello\",\n\t\t\"bool\": true,\n\t\t\"nullv\": null,\n\t\t\"obj\": {\"k\":\"v\"},\n\t\t\"arr\": [1,2,3],\n\t\t\"nested\": {\"items\":[{\"c\":123},{\"c\":\"str\"}]}\n\t}`)\n\n\tvalues := []db.IntegrationExtractValue{\n\t\t{ // number coerced to string via fmt.Sprintf\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"num\",\n\t\t\tVariable:     \"NUM\",\n\t\t},\n\t\t{ // string stays same content\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"str\",\n\t\t\tVariable:     \"STR\",\n\t\t},\n\t\t{ // boolean -> \"true\"\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"bool\",\n\t\t\tVariable:     \"BOOL\",\n\t\t},\n\t\t{ // null should not be set (Find returns nil or we skip when nil)\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"nullv\",\n\t\t\tVariable:     \"NULLV\",\n\t\t},\n\t\t{ // array will be formatted with %v, expect Go-like format\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"arr\",\n\t\t\tVariable:     \"ARR\",\n\t\t},\n\t\t{ // object -> formatted map with %v\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"obj\",\n\t\t\tVariable:     \"OBJ\",\n\t\t},\n\t\t{ // missing key should not create an entry\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"missing\",\n\t\t\tVariable:     \"MISSING\",\n\t\t},\n\t\t{ // nested array index path\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"nested.items.[0].c\",\n\t\t\tVariable:     \"NESTED_C\",\n\t\t},\n\t\t{ // first element of arr\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"arr.[0]\",\n\t\t\tVariable:     \"ARR0\",\n\t\t},\n\t}\n\n\tgot := Extract(values, http.Header{}, payload)\n\n\t// Basic scalar assertions\n\tassert.Equal(t, \"42\", got[\"NUM\"], \"NUM should equal stringified number\")\n\tassert.Equal(t, \"hello\", got[\"STR\"], \"STR should match\")\n\tassert.Equal(t, \"true\", got[\"BOOL\"], \"BOOL should be string 'true'\")\n\n\t// Indexed lookups\n\tassert.Equal(t, \"123\", got[\"NESTED_C\"], \"NESTED_C should equal nested.items[0].c\")\n\tassert.Equal(t, \"1\", got[\"ARR0\"], \"ARR0 should equal arr[0]\")\n\n\t// Null should be absent\n\tassert.NotContains(t, got, \"NULLV\", \"NULLV should not be present for null JSON value\")\n\n\t// Array/object string formats: we assert non-empty presence rather than exact formatting,\n\t// because %v formatting of gojsonq return types may vary across versions.\n\tassert.Contains(t, got, \"ARR\", \"ARR key should be present\")\n\tassert.NotEmpty(t, got[\"ARR\"], \"ARR value should be non-empty\")\n\tassert.Contains(t, got, \"OBJ\", \"OBJ key should be present\")\n\tassert.NotEmpty(t, got[\"OBJ\"], \"OBJ value should be non-empty\")\n\n\t// Missing should not appear\n\tassert.NotContains(t, got, \"MISSING\", \"MISSING should not be present for missing key\")\n}\n\nfunc TestExtract_BodyString_ReturnsFullPayload(t *testing.T) {\n\tpayload := []byte(\"raw body data here\")\n\tvalues := []db.IntegrationExtractValue{\n\t\t{\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataString,\n\t\t\tVariable:     \"BODY\",\n\t\t\tKey:          \"ignored\",\n\t\t},\n\t}\n\tgot := Extract(values, http.Header{}, payload)\n\tif got[\"BODY\"] != string(payload) {\n\t\tt.Fatalf(\"expected BODY to equal full payload; got %q\", got[\"BODY\"])\n\t}\n}\n\nfunc TestExtract_MalformedJSON_SkipsSetting(t *testing.T) {\n\tpayload := []byte(\"{not: valid json}\")\n\tvalues := []db.IntegrationExtractValue{\n\t\t{\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tVariable:     \"BAD\",\n\t\t\tKey:          \"a.b\",\n\t\t},\n\t}\n\tgot := Extract(values, http.Header{}, payload)\n\tif _, ok := got[\"BAD\"]; ok {\n\t\tt.Fatalf(\"expected BAD to be absent for malformed JSON payload\")\n\t}\n}\n\nfunc TestIntegrationMatch(t *testing.T) {\n\tbody := []byte(\"{\\\"hook_id\\\": 4856239453}\")\n\tvar header = make(http.Header)\n\tmatched := Match(db.IntegrationMatcher{\n\t\tID:            0,\n\t\tName:          \"Test\",\n\t\tIntegrationID: 0,\n\t\tMatchType:     db.IntegrationMatchBody,\n\t\tMethod:        db.IntegrationMatchMethodEquals,\n\t\tBodyDataType:  db.IntegrationBodyDataJSON,\n\t\tKey:           \"hook_id\",\n\t\tValue:         \"4856239453\",\n\t}, header, body)\n\n\tassert.True(t, matched)\n}\n\nfunc TestGetTaskDefinitionSuccess(t *testing.T) {\n\tintegration := db.Integration{\n\t\tID:         11,\n\t\tProjectID:  22,\n\t\tTemplateID: 33,\n\t\tTaskParams: &db.TaskParams{\n\t\t\tProjectID:   22,\n\t\t\tEnvironment: `{\"existing\":\"value\"}`,\n\t\t\tParams:      db.MapStringAnyField{\"original\": \"keep\"},\n\t\t},\n\t}\n\n\theader := make(http.Header)\n\theader.Set(\"X-Env\", \"header-value\")\n\tpayload := []byte(`{\"data\":{\"param\":\"payload-value\"}}`)\n\n\textractorCalled := false\n\ttask, err := GetTaskDefinition(integration, payload, header, func(projectID, integrationID int) ([]db.IntegrationExtractValue, error) {\n\t\textractorCalled = true\n\n\t\tif projectID != integration.ProjectID {\n\t\t\tt.Fatalf(\"expected projectID %d, got %d\", integration.ProjectID, projectID)\n\t\t}\n\t\tif integrationID != integration.ID {\n\t\t\tt.Fatalf(\"expected integrationID %d, got %d\", integration.ID, integrationID)\n\t\t}\n\n\t\treturn []db.IntegrationExtractValue{\n\t\t\t{\n\t\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t\t\tValueSource:  db.IntegrationExtractHeaderValue,\n\t\t\t\tKey:          \"X-Env\",\n\t\t\t\tVariable:     \"HOOK_ENV\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tVariableType: db.IntegrationVariableTaskParam,\n\t\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\t\tKey:          \"data.param\",\n\t\t\t\tVariable:     \"payloadParam\",\n\t\t\t},\n\t\t}, nil\n\t})\n\n\tassert.NoError(t, err)\n\tassert.True(t, extractorCalled)\n\n\tif assert.NotNil(t, task.IntegrationID) {\n\t\tassert.Equal(t, integration.ID, *task.IntegrationID)\n\t}\n\n\tassert.Equal(t, integration.ProjectID, task.ProjectID)\n\tassert.Equal(t, integration.TemplateID, task.TemplateID)\n\tassert.NotEmpty(t, task.Environment)\n\n\tvar env map[string]any\n\tif assert.NoError(t, json.Unmarshal([]byte(task.Environment), &env)) {\n\t\tassert.Equal(t, \"value\", env[\"existing\"])\n\t\tassert.Equal(t, \"header-value\", env[\"HOOK_ENV\"])\n\t}\n\n\tif assert.NotNil(t, task.Params) {\n\t\tif assert.Contains(t, task.Params, \"original\") {\n\t\t\tassert.Equal(t, \"keep\", task.Params[\"original\"])\n\t\t}\n\n\t\tif assert.Contains(t, task.Params, \"payloadParam\") {\n\t\t\tpayloadParam, ok := task.Params[\"payloadParam\"].(string)\n\t\t\tassert.True(t, ok)\n\t\t\tassert.Equal(t, \"payload-value\", payloadParam)\n\t\t}\n\t}\n}\n\nfunc TestGetTaskDefinitionExtractorError(t *testing.T) {\n\tintegration := db.Integration{\n\t\tID:         44,\n\t\tProjectID:  55,\n\t\tTemplateID: 66,\n\t}\n\n\theader := make(http.Header)\n\tpayload := []byte(`{}`)\n\n\texpectedErr := errors.New(\"extractor failure\")\n\n\textractorCalled := false\n\ttask, err := GetTaskDefinition(integration, payload, header, func(projectID, integrationID int) ([]db.IntegrationExtractValue, error) {\n\t\textractorCalled = true\n\t\treturn nil, expectedErr\n\t})\n\n\tassert.True(t, extractorCalled)\n\tassert.Error(t, err)\n\tassert.ErrorIs(t, err, expectedErr)\n\tassert.Nil(t, task.IntegrationID)\n}\n\nfunc TestGetTaskDefinitionInvalidEnvironmentJSON(t *testing.T) {\n\tintegration := db.Integration{\n\t\tID:         77,\n\t\tProjectID:  88,\n\t\tTemplateID: 99,\n\t\tTaskParams: &db.TaskParams{\n\t\t\tProjectID:   88,\n\t\t\tEnvironment: \"{not-json}\",\n\t\t\tParams:      db.MapStringAnyField{},\n\t\t},\n\t}\n\n\theader := make(http.Header)\n\tpayload := []byte(`{}`)\n\n\t_, err := GetTaskDefinition(integration, payload, header, func(projectID, integrationID int) ([]db.IntegrationExtractValue, error) {\n\t\treturn nil, nil\n\t})\n\n\tassert.Error(t, err)\n}\n\nfunc TestGetTaskDefinitionIntegrationWithoutTaskParams(t *testing.T) {\n\tintegration := db.Integration{\n\t\tID:         44,\n\t\tProjectID:  55,\n\t\tTemplateID: 66,\n\t}\n\n\theader := make(http.Header)\n\tpayload := []byte(`{}`)\n\textractorCalled := false\n\ttask, err := GetTaskDefinition(integration, payload, header, func(projectID, integrationID int) ([]db.IntegrationExtractValue, error) {\n\t\textractorCalled = true\n\n\t\tif projectID != integration.ProjectID {\n\t\t\tt.Fatalf(\"expected projectID %d, got %d\", integration.ProjectID, projectID)\n\t\t}\n\t\tif integrationID != integration.ID {\n\t\t\tt.Fatalf(\"expected integrationID %d, got %d\", integration.ID, integrationID)\n\t\t}\n\n\t\treturn []db.IntegrationExtractValue{\n\t\t\t{\n\t\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t\t\tValueSource:  db.IntegrationExtractHeaderValue,\n\t\t\t\tKey:          \"X-Env\",\n\t\t\t\tVariable:     \"HOOK_ENV\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tVariableType: db.IntegrationVariableTaskParam,\n\t\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\t\tKey:          \"data.param\",\n\t\t\t\tVariable:     \"payloadParam\",\n\t\t\t},\n\t\t}, nil\n\t})\n\n\tassert.True(t, extractorCalled)\n\tassert.Nil(t, err)\n\tassert.NotNil(t, task)\n}\n\nfunc TestGetTaskDefinitionWithExtractedEnvValues(t *testing.T) {\n\t// Test case 1: Empty environment should still include extracted values\n\tintegration := db.Integration{\n\t\tID:         1,\n\t\tProjectID:  1,\n\t\tTemplateID: 1,\n\t}\n\n\t// Create test payload\n\tpayload := []byte(\"{\\\"branch\\\": \\\"main\\\", \\\"commit\\\": \\\"abc123\\\"}\")\n\n\t// Create test request with headers\n\treq, _ := http.NewRequest(\"POST\", \"/webhook\", nil)\n\treq.Header.Set(\"X-GitHub-Event\", \"push\")\n\n\t// Mock extracted environment values (this would normally come from database)\n\tenvValues := []db.IntegrationExtractValue{\n\t\t{\n\t\t\tVariable:     \"BRANCH_NAME\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"branch\",\n\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t},\n\t\t{\n\t\t\tVariable:     \"COMMIT_HASH\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"commit\",\n\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t},\n\t\t{\n\t\t\tVariable:     \"EVENT_TYPE\",\n\t\t\tValueSource:  db.IntegrationExtractHeaderValue,\n\t\t\tKey:          \"X-GitHub-Event\",\n\t\t\tVariableType: db.IntegrationVariableEnvironment,\n\t\t},\n\t}\n\n\t// Test Extract function directly first\n\textractedEnvResults := Extract(envValues, req.Header, payload)\n\n\tif extractedEnvResults[\"BRANCH_NAME\"] != \"main\" {\n\t\tt.Errorf(\"Expected BRANCH_NAME to be 'main', got '%s'\", extractedEnvResults[\"BRANCH_NAME\"])\n\t}\n\tif extractedEnvResults[\"COMMIT_HASH\"] != \"abc123\" {\n\t\tt.Errorf(\"Expected COMMIT_HASH to be 'abc123', got '%s'\", extractedEnvResults[\"COMMIT_HASH\"])\n\t}\n\tif extractedEnvResults[\"EVENT_TYPE\"] != \"push\" {\n\t\tt.Errorf(\"Expected EVENT_TYPE to be 'push', got '%s'\", extractedEnvResults[\"EVENT_TYPE\"])\n\t}\n\n\t// Test case 1: Empty environment should include extracted values (FIXED behavior)\n\ttaskDef1 := db.Task{\n\t\tProjectID:   1,\n\t\tTemplateID:  1,\n\t\tEnvironment: \"\", // Empty environment\n\t\tParams:      make(db.MapStringAnyField),\n\t}\n\ttaskDef1.IntegrationID = &integration.ID\n\n\t// Simulate the FIXED logic from GetTaskDefinition\n\tenv1 := make(map[string]any)\n\n\tif taskDef1.Environment != \"\" {\n\t\tjson.Unmarshal([]byte(taskDef1.Environment), &env1)\n\t}\n\n\t// Add extracted environment variables only if they don't conflict with\n\t// existing task definition variables (task definition has higher priority)\n\tfor k, v := range extractedEnvResults {\n\t\tif _, exists := env1[k]; !exists {\n\t\t\tenv1[k] = v\n\t\t}\n\t}\n\n\tenvStr1, _ := json.Marshal(env1)\n\ttaskDef1.Environment = string(envStr1)\n\n\t// Verify that extracted values ARE now in the environment\n\tvar envCheck1 map[string]any\n\tjson.Unmarshal([]byte(taskDef1.Environment), &envCheck1)\n\n\tif envCheck1[\"BRANCH_NAME\"] != \"main\" {\n\t\tt.Errorf(\"Expected BRANCH_NAME to be 'main' in environment, got '%v'\", envCheck1[\"BRANCH_NAME\"])\n\t}\n\tif envCheck1[\"COMMIT_HASH\"] != \"abc123\" {\n\t\tt.Errorf(\"Expected COMMIT_HASH to be 'abc123' in environment, got '%v'\", envCheck1[\"COMMIT_HASH\"])\n\t}\n\tif envCheck1[\"EVENT_TYPE\"] != \"push\" {\n\t\tt.Errorf(\"Expected EVENT_TYPE to be 'push' in environment, got '%v'\", envCheck1[\"EVENT_TYPE\"])\n\t}\n\n\t// Test case 2: Existing environment should merge with extracted values\n\ttaskDef2 := db.Task{\n\t\tProjectID:   1,\n\t\tTemplateID:  1,\n\t\tEnvironment: `{\"EXISTING_VAR\": \"existing_value\"}`, // Existing environment\n\t\tParams:      make(db.MapStringAnyField),\n\t}\n\ttaskDef2.IntegrationID = &integration.ID\n\n\tenv2 := make(map[string]any)\n\n\tif taskDef2.Environment != \"\" {\n\t\tjson.Unmarshal([]byte(taskDef2.Environment), &env2)\n\t}\n\n\t// Add extracted environment variables only if they don't conflict with\n\t// existing task definition variables (task definition has higher priority)\n\tfor k, v := range extractedEnvResults {\n\t\tif _, exists := env2[k]; !exists {\n\t\t\tenv2[k] = v\n\t\t}\n\t}\n\n\tenvStr2, _ := json.Marshal(env2)\n\ttaskDef2.Environment = string(envStr2)\n\n\t// Verify that both existing and extracted values are in the environment\n\tvar envCheck2 map[string]any\n\tjson.Unmarshal([]byte(taskDef2.Environment), &envCheck2)\n\n\tif envCheck2[\"EXISTING_VAR\"] != \"existing_value\" {\n\t\tt.Errorf(\"Expected EXISTING_VAR to be 'existing_value' in environment, got '%v'\", envCheck2[\"EXISTING_VAR\"])\n\t}\n\tif envCheck2[\"BRANCH_NAME\"] != \"main\" {\n\t\tt.Errorf(\"Expected BRANCH_NAME to be 'main' in environment, got '%v'\", envCheck2[\"BRANCH_NAME\"])\n\t}\n\tif envCheck2[\"COMMIT_HASH\"] != \"abc123\" {\n\t\tt.Errorf(\"Expected COMMIT_HASH to be 'abc123' in environment, got '%v'\", envCheck2[\"COMMIT_HASH\"])\n\t}\n\tif envCheck2[\"EVENT_TYPE\"] != \"push\" {\n\t\tt.Errorf(\"Expected EVENT_TYPE to be 'push' in environment, got '%v'\", envCheck2[\"EVENT_TYPE\"])\n\t}\n\n\t// Test case 3: Task definition values should have priority over extracted values\n\ttaskDef3 := db.Task{\n\t\tProjectID:   1,\n\t\tTemplateID:  1,\n\t\tEnvironment: `{\"BRANCH_NAME\": \"production\", \"EXISTING_VAR\": \"from_task\"}`, // Conflicts with extracted BRANCH_NAME\n\t\tParams:      make(db.MapStringAnyField),\n\t}\n\ttaskDef3.IntegrationID = &integration.ID\n\n\tenv3 := make(map[string]any)\n\n\tif taskDef3.Environment != \"\" {\n\t\tjson.Unmarshal([]byte(taskDef3.Environment), &env3)\n\t}\n\n\t// Add extracted environment variables only if they don't conflict with\n\t// existing task definition variables (task definition has higher priority)\n\tfor k, v := range extractedEnvResults {\n\t\tif _, exists := env3[k]; !exists {\n\t\t\tenv3[k] = v\n\t\t}\n\t}\n\n\tenvStr3, _ := json.Marshal(env3)\n\ttaskDef3.Environment = string(envStr3)\n\n\t// Verify that task definition values take precedence over extracted values\n\tvar envCheck3 map[string]any\n\tjson.Unmarshal([]byte(taskDef3.Environment), &envCheck3)\n\n\t// BRANCH_NAME should remain \"production\" from task definition, not \"main\" from extracted\n\tif envCheck3[\"BRANCH_NAME\"] != \"production\" {\n\t\tt.Errorf(\"Expected BRANCH_NAME to be 'production' (task definition priority), got '%v'\", envCheck3[\"BRANCH_NAME\"])\n\t}\n\t// EXISTING_VAR should remain from task definition\n\tif envCheck3[\"EXISTING_VAR\"] != \"from_task\" {\n\t\tt.Errorf(\"Expected EXISTING_VAR to be 'from_task', got '%v'\", envCheck3[\"EXISTING_VAR\"])\n\t}\n\t// Non-conflicting extracted values should still be added\n\tif envCheck3[\"COMMIT_HASH\"] != \"abc123\" {\n\t\tt.Errorf(\"Expected COMMIT_HASH to be 'abc123' in environment, got '%v'\", envCheck3[\"COMMIT_HASH\"])\n\t}\n\tif envCheck3[\"EVENT_TYPE\"] != \"push\" {\n\t\tt.Errorf(\"Expected EVENT_TYPE to be 'push' in environment, got '%v'\", envCheck3[\"EVENT_TYPE\"])\n\t}\n}\n\n// Test the Extract function to ensure it works correctly for both body and header extraction\nfunc TestExtractBodyAndHeaderValues(t *testing.T) {\n\t// Create test payload with nested JSON\n\tpayload := []byte(`{\"repository\": {\"name\": \"test-repo\"}, \"ref\": \"refs/heads/main\", \"pusher\": {\"name\": \"johndoe\"}}`)\n\n\t// Create test request with headers\n\treq, _ := http.NewRequest(\"POST\", \"/webhook\", nil)\n\treq.Header.Set(\"X-GitHub-Event\", \"push\")\n\treq.Header.Set(\"X-GitHub-Delivery\", \"12345\")\n\n\t// Test various extraction scenarios\n\textractValues := []db.IntegrationExtractValue{\n\t\t{\n\t\t\tVariable:     \"REPO_NAME\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"repository.name\",\n\t\t},\n\t\t{\n\t\t\tVariable:     \"GIT_REF\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"ref\",\n\t\t},\n\t\t{\n\t\t\tVariable:     \"PUSHER_NAME\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataJSON,\n\t\t\tKey:          \"pusher.name\",\n\t\t},\n\t\t{\n\t\t\tVariable:    \"GITHUB_EVENT\",\n\t\t\tValueSource: db.IntegrationExtractHeaderValue,\n\t\t\tKey:         \"X-GitHub-Event\",\n\t\t},\n\t\t{\n\t\t\tVariable:    \"GITHUB_DELIVERY\",\n\t\t\tValueSource: db.IntegrationExtractHeaderValue,\n\t\t\tKey:         \"X-GitHub-Delivery\",\n\t\t},\n\t\t{\n\t\t\tVariable:     \"FULL_PAYLOAD\",\n\t\t\tValueSource:  db.IntegrationExtractBodyValue,\n\t\t\tBodyDataType: db.IntegrationBodyDataString,\n\t\t},\n\t}\n\n\tresult := Extract(extractValues, req.Header, payload)\n\n\t// Verify body JSON extractions\n\tif result[\"REPO_NAME\"] != \"test-repo\" {\n\t\tt.Errorf(\"Expected REPO_NAME to be 'test-repo', got '%s'\", result[\"REPO_NAME\"])\n\t}\n\tif result[\"GIT_REF\"] != \"refs/heads/main\" {\n\t\tt.Errorf(\"Expected GIT_REF to be 'refs/heads/main', got '%s'\", result[\"GIT_REF\"])\n\t}\n\tif result[\"PUSHER_NAME\"] != \"johndoe\" {\n\t\tt.Errorf(\"Expected PUSHER_NAME to be 'johndoe', got '%s'\", result[\"PUSHER_NAME\"])\n\t}\n\n\t// Verify header extractions\n\tif result[\"GITHUB_EVENT\"] != \"push\" {\n\t\tt.Errorf(\"Expected GITHUB_EVENT to be 'push', got '%s'\", result[\"GITHUB_EVENT\"])\n\t}\n\tif result[\"GITHUB_DELIVERY\"] != \"12345\" {\n\t\tt.Errorf(\"Expected GITHUB_DELIVERY to be '12345', got '%s'\", result[\"GITHUB_DELIVERY\"])\n\t}\n\n\t// Verify string body extraction\n\tif result[\"FULL_PAYLOAD\"] != string(payload) {\n\t\tt.Errorf(\"Expected FULL_PAYLOAD to match original payload\")\n\t}\n}\n"
  },
  {
    "path": "api/login.go",
    "content": "package api\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/rand\"\n\t\"crypto/tls\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\t\"text/template\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\n\t\"github.com/coreos/go-oidc/v3/oidc\"\n\t\"github.com/go-ldap/ldap/v3\"\n\t\"github.com/gorilla/mux\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"golang.org/x/crypto/bcrypt\"\n\t\"golang.org/x/oauth2\"\n)\n\nfunc convertEntryToMap(entity *ldap.Entry) map[string]any {\n\tres := map[string]any{}\n\tfor _, attr := range entity.Attributes {\n\t\tif len(attr.Values) == 0 {\n\t\t\tcontinue\n\t\t}\n\t\tres[attr.Name] = attr.Values[0]\n\t}\n\n\treturn res\n}\n\nfunc tryFindLDAPUser(username, password string) (*db.User, error) {\n\tif !util.Config.LdapEnable {\n\t\treturn nil, fmt.Errorf(\"LDAP not configured\")\n\t}\n\n\tvar l *ldap.Conn\n\tvar err error\n\tif util.Config.LdapNeedTLS {\n\t\tl, err = ldap.DialTLS(\"tcp\", util.Config.LdapServer, &tls.Config{\n\t\t\tInsecureSkipVerify: true,\n\t\t})\n\t} else {\n\t\tl, err = ldap.Dial(\"tcp\", util.Config.LdapServer)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer l.Close() //nolint:errcheck\n\n\t// First bind with a read only user\n\tif err = l.Bind(util.Config.LdapBindDN, util.Config.LdapBindPassword); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Filter for the given username\n\tsearchRequest := ldap.NewSearchRequest(\n\t\tutil.Config.LdapSearchDN,\n\t\tldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,\n\t\tfmt.Sprintf(util.Config.LdapSearchFilter, username),\n\t\t[]string{util.Config.LdapMappings.DN},\n\t\tnil,\n\t)\n\n\tsr, err := l.Search(searchRequest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(sr.Entries) < 1 {\n\t\treturn nil, nil\n\t}\n\n\tif len(sr.Entries) > 1 {\n\t\treturn nil, fmt.Errorf(\"too many entries returned\")\n\t}\n\n\t// Bind as the user\n\tuserDN := sr.Entries[0].DN\n\tif err = l.Bind(userDN, password); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Second time bind as read only user\n\tif err = l.Bind(util.Config.LdapBindDN, util.Config.LdapBindPassword); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Get user info\n\tsearchRequest = ldap.NewSearchRequest(\n\t\tutil.Config.LdapSearchDN,\n\t\tldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,\n\t\tfmt.Sprintf(util.Config.LdapSearchFilter, username),\n\t\t[]string{util.Config.LdapMappings.DN, util.Config.LdapMappings.Mail, util.Config.LdapMappings.UID, util.Config.LdapMappings.CN},\n\t\tnil,\n\t)\n\n\tsr, err = l.Search(searchRequest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(sr.Entries) <= 0 {\n\t\treturn nil, fmt.Errorf(\"ldap search returned no entries\")\n\t}\n\n\tentry := convertEntryToMap(sr.Entries[0])\n\n\tprepareClaims(entry)\n\n\tclaims, err := parseClaims(entry, util.Config.LdapMappings)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tldapUser := db.User{\n\t\tUsername: strings.ToLower(claims.username),\n\t\tCreated:  tz.Now(),\n\t\tName:     claims.name,\n\t\tEmail:    claims.email,\n\t\tExternal: true,\n\t\tAlert:    false,\n\t}\n\n\terr = db.ValidateUser(ldapUser)\n\tif err != nil {\n\t\tjsonBytes, _ := json.Marshal(ldapUser)\n\t\tlog.Error(\"LDAP returned incorrect user data: \" + string(jsonBytes))\n\t\treturn nil, err\n\t}\n\n\tlog.Info(\"User \" + ldapUser.Name + \" with email \" + ldapUser.Email + \" authorized via LDAP correctly\")\n\treturn &ldapUser, nil\n}\n\n// createSession creates session for passed user and stores session details\n// in cookies.\nfunc createSession(w http.ResponseWriter, r *http.Request, user db.User, oidc bool) {\n\tvar err error\n\tvar verificationMethod db.SessionVerificationMethod\n\tverified := false\n\n\tswitch {\n\tcase user.Totp != nil && util.Config.Auth.Totp.Enabled:\n\t\tverificationMethod = db.SessionVerificationTotp\n\tdefault:\n\t\tverificationMethod = db.SessionVerificationNone\n\t\tverified = true\n\t}\n\n\tnewSession, err := helpers.Store(r).CreateSession(db.Session{\n\t\tUserID:             user.ID,\n\t\tCreated:            tz.Now(),\n\t\tLastActive:         tz.Now(),\n\t\tIP:                 r.Header.Get(\"X-Real-IP\"),\n\t\tUserAgent:          r.Header.Get(\"user-agent\"),\n\t\tExpired:            false,\n\t\tVerificationMethod: verificationMethod,\n\t\tVerified:           verified,\n\t})\n\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"user_id\": user.ID,\n\t\t\t\"context\": \"session\",\n\t\t}).Error(\"Failed to create session\")\n\t\thelpers.WriteErrorStatus(w, \"Failed to create session\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tencoded, err := util.Cookie.Encode(\"semaphore\", map[string]any{\n\t\t\"user\":    user.ID,\n\t\t\"session\": newSession.ID,\n\t})\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"user_id\": user.ID,\n\t\t\t\"context\": \"session\",\n\t\t}).Error(\"Failed to encode session cookie\")\n\t\thelpers.WriteErrorStatus(w, \"Failed to create session\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\thttp.SetCookie(w, &http.Cookie{\n\t\tName:     \"semaphore\",\n\t\tValue:    encoded,\n\t\tPath:     \"/\",\n\t\tHttpOnly: true,\n\t})\n}\n\nfunc loginByPassword(store db.Store, login string, password string) (user db.User, err error) {\n\tuser, err = store.GetUserByLoginOrEmail(login, login)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif user.External {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\terr = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))\n\tif err != nil {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc loginByLDAP(store db.Store, ldapUser db.User) (user db.User, err error) {\n\tuser, err = store.GetUserByLoginOrEmail(ldapUser.Username, ldapUser.Email)\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\tuser, err = store.CreateUserWithoutPassword(ldapUser)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif !user.External {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\treturn\n}\n\ntype loginMetadataOidcProvider struct {\n\tID    string `json:\"id\"`\n\tName  string `json:\"name\"`\n\tColor string `json:\"color\"`\n\tIcon  string `json:\"icon\"`\n}\n\ntype LoginTotpAuthMethod struct {\n\tAllowRecovery bool `json:\"allow_recovery\"`\n}\n\ntype LoginEmailAuthMethod struct {\n}\n\ntype LoginAuthMethods struct {\n\tTotp  *LoginTotpAuthMethod  `json:\"totp,omitempty\"`\n\tEmail *LoginEmailAuthMethod `json:\"email,omitempty\"`\n}\n\ntype loginMetadata struct {\n\tOidcProviders     []loginMetadataOidcProvider `json:\"oidc_providers\"`\n\tLoginWithPassword bool                        `json:\"login_with_password\"`\n\tAuthMethods       LoginAuthMethods            `json:\"auth_methods\"`\n}\n\n// nolint: gocyclo\nfunc login(w http.ResponseWriter, r *http.Request) {\n\tif r.Method == \"GET\" {\n\t\tconfig := &loginMetadata{\n\t\t\tOidcProviders:     make([]loginMetadataOidcProvider, len(util.Config.OidcProviders)),\n\t\t\tLoginWithPassword: !util.Config.PasswordLoginDisable,\n\t\t}\n\t\ti := 0\n\n\t\tfor k, v := range util.Config.OidcProviders {\n\t\t\tconfig.OidcProviders[i] = loginMetadataOidcProvider{\n\t\t\t\tID:    k,\n\t\t\t\tName:  v.DisplayName,\n\t\t\t\tColor: v.Color,\n\t\t\t\tIcon:  v.Icon,\n\t\t\t}\n\t\t\ti++\n\t\t}\n\n\t\tsort.Slice(config.OidcProviders, func(i, j int) bool {\n\t\t\ta := util.Config.OidcProviders[config.OidcProviders[i].ID]\n\t\t\tb := util.Config.OidcProviders[config.OidcProviders[j].ID]\n\t\t\treturn a.Order < b.Order\n\t\t})\n\n\t\tif util.Config.Auth.Totp.Enabled {\n\t\t\tconfig.AuthMethods.Totp = &LoginTotpAuthMethod{\n\t\t\t\tAllowRecovery: util.Config.Auth.Totp.AllowRecovery,\n\t\t\t}\n\t\t}\n\n\t\thelpers.WriteJSON(w, http.StatusOK, config)\n\t\treturn\n\t}\n\n\tvar login struct {\n\t\tAuth     string `json:\"auth\" binding:\"required\"`\n\t\tPassword string `json:\"password\" binding:\"required\"`\n\t}\n\tif !helpers.Bind(w, r, &login) {\n\t\treturn\n\t}\n\n\t/*\n\t\tlogic:\n\t\t- fetch user from ldap if enabled\n\t\t- fetch user from database by username/email\n\t\t- create user in database if doesn't exist & ldap record found\n\t\t- check password if non-ldap user\n\t\t- create session & send cookie\n\t*/\n\n\tlogin.Auth = strings.ToLower(login.Auth)\n\n\tvar err error\n\n\tvar ldapUser *db.User\n\n\tif util.Config.LdapEnable {\n\t\tldapUser, err = tryFindLDAPUser(login.Auth, login.Password)\n\t\tif err != nil {\n\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\"context\": \"ldap\",\n\t\t\t\t\"auth\":    login.Auth,\n\t\t\t}).Warn(\"Failed to find user in LDAP\")\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar user db.User\n\n\tif ldapUser == nil {\n\t\tuser, err = loginByPassword(helpers.Store(r), login.Auth, login.Password)\n\t} else {\n\t\tuser, err = loginByLDAP(helpers.Store(r), *ldapUser)\n\t}\n\n\tif err != nil {\n\t\tif errors.Is(err, db.ErrNotFound) {\n\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\tvar validationError *db.ValidationError\n\t\tswitch {\n\t\tcase errors.As(err, &validationError):\n\t\t\t// TODO: Return more informative error code.\n\t\t}\n\n\t\tlog.Error(err.Error())\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t}\n\n\tcreateSession(w, r, user, false)\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// logout handles the user logout process by expiring the current session\n// and clearing the session cookie.\n//\n// Behavior:\n//   - If a valid session exists, it is expired in the database.\n//   - The session cookie is cleared by setting its value to an empty string\n//     and its expiration date to a past time.\n//\n// Responses:\n// - 204 No Content: Logout successful.\n// - 500 Internal Server Error: An error occurred while expiring the session.\nfunc logout(w http.ResponseWriter, r *http.Request) {\n\tif session, ok := getSession(r); ok {\n\t\terr := helpers.Store(r).ExpireSession(session.UserID, session.ID)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\n\thttp.SetCookie(w, &http.Cookie{\n\t\tName:     \"semaphore\",\n\t\tValue:    \"\",\n\t\tExpires:  tz.Now().Add(24 * 7 * time.Hour * -1),\n\t\tPath:     \"/\",\n\t\tHttpOnly: true,\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc getOidcProvider(id string, ctx context.Context, redirectPath string) (*oidc.Provider, *oauth2.Config, error) {\n\tprovider, ok := util.Config.OidcProviders[id]\n\tif !ok {\n\t\treturn nil, nil, fmt.Errorf(\"no such provider: %s\", id)\n\t}\n\tconfig := oidc.ProviderConfig{\n\t\tIssuerURL:   provider.Endpoint.IssuerURL,\n\t\tAuthURL:     provider.Endpoint.AuthURL,\n\t\tTokenURL:    provider.Endpoint.TokenURL,\n\t\tUserInfoURL: provider.Endpoint.UserInfoURL,\n\t\tJWKSURL:     provider.Endpoint.JWKSURL,\n\t\tAlgorithms:  provider.Endpoint.Algorithms,\n\t}\n\toidcProvider := config.NewProvider(ctx)\n\tvar err error\n\tif provider.AutoDiscovery != \"\" {\n\t\toidcProvider, err = oidc.NewProvider(ctx, provider.AutoDiscovery)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tclientID := provider.ClientID\n\tif provider.ClientIDFile != \"\" {\n\t\tif clientID, err = getSecretFromFile(provider.ClientIDFile); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tclientSecret := provider.ClientSecret\n\tif provider.ClientSecretFile != \"\" {\n\t\tif clientSecret, err = getSecretFromFile(provider.ClientSecretFile); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tif redirectPath != \"\" {\n\t\tredirectPath = strings.TrimRight(redirectPath, \"/\")\n\n\t\tproviderUrl, err2 := url.Parse(provider.RedirectURL)\n\n\t\tif err2 != nil {\n\t\t\treturn nil, nil, err2\n\t\t}\n\n\t\tproviderPath := strings.TrimRight(providerUrl.Path, \"/\")\n\n\t\tif redirectPath == providerPath {\n\t\t\tredirectPath = \"\"\n\t\t} else if strings.HasPrefix(redirectPath, providerPath+\"/\") {\n\t\t\tredirectPath = redirectPath[len(providerPath):]\n\t\t}\n\t}\n\n\toauthConfig := oauth2.Config{\n\t\tEndpoint:     oidcProvider.Endpoint(),\n\t\tClientID:     clientID,\n\t\tClientSecret: clientSecret,\n\t\tRedirectURL:  provider.RedirectURL + redirectPath,\n\t\tScopes:       provider.Scopes,\n\t}\n\tif len(oauthConfig.RedirectURL) == 0 {\n\t\tredirectURL, err := url.JoinPath(util.Config.WebHost, \"api/auth/oidc\", id, \"redirect\")\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\toauthConfig.RedirectURL = redirectURL\n\n\t\tif redirectURL != redirectPath {\n\t\t\toauthConfig.RedirectURL += redirectPath\n\t\t}\n\t}\n\tif len(oauthConfig.Scopes) == 0 {\n\t\toauthConfig.Scopes = []string{\"openid\", \"profile\", \"email\"}\n\t}\n\treturn oidcProvider, &oauthConfig, nil\n}\n\nfunc oidcLogin(w http.ResponseWriter, r *http.Request) {\n\tpid := mux.Vars(r)[\"provider\"]\n\tctx := context.Background()\n\tloginURL, _ := url.JoinPath(util.Config.WebHost, \"auth/login\")\n\n\treturnPath := \"\"\n\tredirectPath := \"\"\n\n\tconfig, ok := util.Config.OidcProviders[pid]\n\tif !ok {\n\t\tlog.Error(fmt.Errorf(\"no such provider: %s\", pid))\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\treturnValue := r.URL.Query().Get(\"return\")\n\tif returnValue != \"\" {\n\t\tif config.ReturnViaState {\n\t\t\treturnPath = returnValue\n\t\t} else {\n\t\t\tredirectPath = returnValue\n\t\t}\n\t}\n\n\t_, oauth, err := getOidcProvider(pid, ctx, redirectPath)\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\tstate := generateStateOauthCookie(w, returnPath)\n\tu := oauth.AuthCodeURL(state)\n\thttp.Redirect(w, r, u, http.StatusTemporaryRedirect)\n}\n\ntype oAuthState struct {\n\tCsrf   string `json:\"csrf\"`\n\tReturn string `json:\"return\"`\n}\n\nfunc generateStateOauthCookie(w http.ResponseWriter, returnPath string) string {\n\n\texpiration := tz.Now().Add(365 * 24 * time.Hour)\n\n\tb := make([]byte, 16)\n\t_, err := rand.Read(b)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tstate := oAuthState{\n\t\tCsrf:   base64.URLEncoding.EncodeToString(b),\n\t\tReturn: returnPath,\n\t}\n\n\t// Secure flag is not set to allow Semaphore to be used without HTTPS inside private networks\n\tcookie := http.Cookie{\n\t\tName:     \"oauthstate\",\n\t\tValue:    state.Csrf,\n\t\tExpires:  expiration,\n\t\tHttpOnly: true,\n\t\tSameSite: http.SameSiteLaxMode,\n\t}\n\thttp.SetCookie(w, &cookie)\n\n\tstateBytes, err := json.Marshal(state)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn base64.URLEncoding.EncodeToString(stateBytes)\n}\n\ntype claimResult struct {\n\tusername string\n\tname     string\n\temail    string\n}\n\nfunc parseClaim(str string, claims map[string]any) (string, bool) {\n\tfor _, s := range strings.Split(str, \"|\") {\n\t\ts = strings.TrimSpace(s)\n\n\t\tif s == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif strings.Contains(s, \"{{\") {\n\t\t\ttpl, err := template.New(\"\").Parse(s)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\n\t\t\tbuff := bytes.NewBufferString(\"\")\n\n\t\t\tif err = tpl.Execute(buff, claims); err != nil {\n\t\t\t\treturn \"\", false\n\t\t\t}\n\n\t\t\tres := buff.String()\n\n\t\t\treturn res, res != \"\"\n\t\t}\n\n\t\tres, ok := claims[s].(string)\n\t\tif res != \"\" && ok {\n\t\t\treturn res, ok\n\t\t}\n\t}\n\n\treturn \"\", false\n}\n\nfunc prepareClaims(claims map[string]any) {\n\tfor k, v := range claims {\n\t\tswitch v := v.(type) {\n\t\tcase float64:\n\t\t\tf := v\n\t\t\ti := int64(f)\n\t\t\tif float64(i) == f {\n\t\t\t\tclaims[k] = i\n\t\t\t}\n\t\tcase float32:\n\t\t\tf := v\n\t\t\ti := int64(f)\n\t\t\tif float32(i) == f {\n\t\t\t\tclaims[k] = i\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc parseClaims(claims map[string]any, provider util.ClaimsProvider) (res claimResult, err error) {\n\tvar ok bool\n\tres.email, ok = parseClaim(provider.GetEmailClaim(), claims)\n\n\tif !ok {\n\t\terr = fmt.Errorf(\"claim '%s' missing or has bad format\", provider.GetEmailClaim())\n\t\treturn\n\t}\n\n\tres.username, ok = parseClaim(provider.GetUsernameClaim(), claims)\n\tif !ok {\n\t\tres.username = getRandomUsername()\n\t}\n\n\tres.name, ok = parseClaim(provider.GetNameClaim(), claims)\n\tif !ok {\n\t\tres.name = getRandomProfileName()\n\t}\n\n\treturn\n}\n\nfunc claimOidcUserInfo(userInfo *oidc.UserInfo, provider util.OidcProvider) (res claimResult, err error) {\n\tclaims := make(map[string]any)\n\tif err = userInfo.Claims(&claims); err != nil {\n\t\treturn\n\t}\n\n\tprepareClaims(claims)\n\n\treturn parseClaims(claims, &provider)\n}\n\nfunc claimOidcToken(idToken *oidc.IDToken, provider util.OidcProvider) (res claimResult, err error) {\n\tclaims := make(map[string]any)\n\tif err = idToken.Claims(&claims); err != nil {\n\t\treturn\n\t}\n\n\tprepareClaims(claims)\n\n\treturn parseClaims(claims, &provider)\n}\n\nfunc getRandomUsername() string {\n\treturn random.String(16)\n}\n\nfunc getRandomProfileName() string {\n\treturn \"Anonymous\"\n}\n\nfunc getSecretFromFile(source string) (string, error) {\n\tcontent, err := os.ReadFile(source)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(content), nil\n}\n\nfunc oidcRedirect(w http.ResponseWriter, r *http.Request) {\n\tpid := mux.Vars(r)[\"provider\"]\n\toauthState, err := r.Cookie(\"oauthstate\")\n\tloginURL, _ := url.JoinPath(util.Config.WebHost, \"auth/login\")\n\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\ts := r.FormValue(\"state\")\n\tb, err := base64.URLEncoding.DecodeString(s)\n\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tvar stateData oAuthState\n\terr = json.Unmarshal(b, &stateData)\n\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tif stateData.Csrf != oauthState.Value {\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tctx := context.Background()\n\n\t_oidc, oauth, err := getOidcProvider(pid, ctx, r.URL.Path)\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tprovider, ok := util.Config.OidcProviders[pid]\n\tif !ok {\n\t\tlog.Error(fmt.Errorf(\"no such provider: %s\", pid))\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tverifier := _oidc.Verifier(&oidc.Config{ClientID: oauth.ClientID})\n\n\tcode := r.URL.Query().Get(\"code\")\n\n\toauth2Token, err := oauth.Exchange(ctx, code)\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tvar claims claimResult\n\n\t// Extract the ID Token from OAuth2 token.\n\trawIDToken, ok := oauth2Token.Extra(\"id_token\").(string)\n\n\tif ok && rawIDToken != \"\" {\n\t\tvar idToken *oidc.IDToken\n\t\t// Parse and verify ID Token payload.\n\t\tidToken, err = verifier.Verify(ctx, rawIDToken)\n\n\t\tif err == nil {\n\t\t\tclaims, err = claimOidcToken(idToken, provider)\n\t\t}\n\t} else {\n\t\tvar userInfo *oidc.UserInfo\n\t\tuserInfo, err = _oidc.UserInfo(ctx, oauth2.StaticTokenSource(oauth2Token))\n\n\t\tif err == nil {\n\t\t\tif userInfo.Email == \"\" {\n\t\t\t\tclaims, err = claimOidcUserInfo(userInfo, provider)\n\t\t\t} else {\n\t\t\t\tclaims.email = userInfo.Email\n\t\t\t\tclaims.name = userInfo.Profile\n\t\t\t}\n\t\t}\n\n\t\tclaims.username = getRandomUsername()\n\t\tif userInfo.Profile == \"\" {\n\t\t\tclaims.name = getRandomProfileName()\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tlog.Error(err.Error())\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tuser, err := helpers.Store(r).GetUserByLoginOrEmail(\"\", claims.email) // ignore username because it creates a lot of problems\n\tif err != nil {\n\t\tuser = db.User{\n\t\t\tUsername: claims.username,\n\t\t\tName:     claims.name,\n\t\t\tEmail:    claims.email,\n\t\t\tExternal: true,\n\t\t}\n\t\tuser, err = helpers.Store(r).CreateUserWithoutPassword(user)\n\t\tif err != nil {\n\t\t\tlog.Error(err.Error())\n\t\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !user.External {\n\t\tlog.Error(fmt.Errorf(\"OIDC user '%s' conflicts with local user\", user.Username))\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tcreateSession(w, r, user, true)\n\n\tconfig, ok := util.Config.OidcProviders[pid]\n\tif !ok {\n\t\tlog.Error(fmt.Errorf(\"no such provider: %s\", pid))\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tredirectPath := \"\"\n\tif config.ReturnViaState {\n\t\tredirectPath = stateData.Return\n\t} else {\n\t\tredirectPath = mux.Vars(r)[\"redirect_path\"]\n\t}\n\n\tif !strings.HasPrefix(redirectPath, \"/\") {\n\t\tredirectPath = \"/\" + redirectPath\n\t}\n\n\tredirectURL, err := url.JoinPath(util.Config.WebHost, redirectPath)\n\tif err != nil {\n\t\tlog.Error(err)\n\t\thttp.Redirect(w, r, loginURL, http.StatusTemporaryRedirect)\n\t\treturn\n\t}\n\n\tif redirectURL == \"\" {\n\t\tredirectURL = \"/\"\n\t}\n\n\thttp.Redirect(w, r, redirectURL, http.StatusTemporaryRedirect)\n}\n"
  },
  {
    "path": "api/login_test.go",
    "content": "package api\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestParseClaim(t *testing.T) {\n\tclaims := map[string]any{\n\t\t\"username\": \"fiftin\",\n\t\t\"email\":    \"\",\n\t\t\"id\":       1234567,\n\t}\n\n\tres, ok := parseClaim(\"email | {{ .id }}@test.com\", claims)\n\n\tassert.True(t, ok, \"parseClaim should succeed\")\n\tassert.Equal(t, \"1234567@test.com\", res, \"Result should be formatted correctly\")\n}\n\nfunc TestParseClaim2(t *testing.T) {\n\tclaims := map[string]any{\n\t\t\"username\": \"fiftin\",\n\t\t\"email\":    \"\",\n\t\t\"id\":       1234567,\n\t}\n\n\tres, ok := parseClaim(\"username\", claims)\n\n\tassert.True(t, ok, \"parseClaim should succeed\")\n\tassert.Equal(t, claims[\"username\"], res, \"Result should match username claim\")\n}\n\nfunc TestParseClaim3(t *testing.T) {\n\tclaims := map[string]any{\n\t\t\"username\": \"fiftin\",\n\t\t\"email\":    \"\",\n\t\t\"id\":       1234567,\n\t}\n\n\t_, ok := parseClaim(\"email\", claims)\n\n\tassert.False(t, ok, \"parseClaim should fail for empty email\")\n}\n\nfunc TestParseClaim4(t *testing.T) {\n\tclaims := map[string]any{\n\t\t\"username\": \"fiftin\",\n\t\t\"email\":    \"\",\n\t\t\"id\":       1234567,\n\t}\n\n\t_, ok := parseClaim(\"|\", claims)\n\n\tassert.False(t, ok, \"parseClaim should fail for invalid pattern\")\n}\n\nfunc TestParseClaim5(t *testing.T) {\n\tclaims := map[string]any{\n\t\t\"username\": \"fiftin\",\n\t\t\"email\":    \"\",\n\t\t\"id\":       123456757343.0,\n\t}\n\n\tprepareClaims(claims)\n\n\tres, ok := parseClaim(\"{{ .id }}\", claims)\n\n\tassert.True(t, ok, \"parseClaim should succeed\")\n\tassert.Equal(t, \"123456757343\", res, \"Result should match formatted ID\")\n}\n\nfunc TestGenerateStateOauthCookie(t *testing.T) {\n\tw := httptest.NewRecorder()\n\treturnPath := \"/dashboard\"\n\n\tstateStr := generateStateOauthCookie(w, returnPath)\n\n\t// Test 1: Verify returned state is valid base64\n\tstateBytes, err := base64.URLEncoding.DecodeString(stateStr)\n\tassert.NoError(t, err, \"Returned state should be valid base64\")\n\n\t// Test 2: Verify state contains valid JSON\n\tvar state oAuthState\n\terr = json.Unmarshal(stateBytes, &state)\n\tassert.NoError(t, err, \"State should contain valid JSON\")\n\n\t// Test 3: Verify return path is preserved\n\tassert.Equal(t, returnPath, state.Return, \"Return path should be preserved\")\n\n\t// Test 4: Verify CSRF token is not empty\n\tassert.NotEmpty(t, state.Csrf, \"CSRF token should not be empty\")\n\n\t// Test 5: Verify CSRF token is valid base64\n\t_, err = base64.URLEncoding.DecodeString(state.Csrf)\n\tassert.NoError(t, err, \"CSRF token should be valid base64\")\n\n\t// Test 6: Verify cookie is set\n\tcookies := w.Result().Cookies()\n\tassert.NotEmpty(t, cookies, \"At least one cookie should be set\")\n\n\t// Test 7: Verify cookie has correct name\n\tvar oauthCookie *http.Cookie\n\tfor _, cookie := range cookies {\n\t\tif cookie.Name == \"oauthstate\" {\n\t\t\toauthCookie = cookie\n\t\t\tbreak\n\t\t}\n\t}\n\tassert.NotNil(t, oauthCookie, \"Cookie 'oauthstate' should be set\")\n\n\t// Test 8: Verify cookie value matches CSRF token in state\n\tassert.Equal(t, state.Csrf, oauthCookie.Value, \"Cookie value should match CSRF token\")\n\n\t// Test 9: Verify cookie has expiration set (should be ~365 days)\n\tassert.False(t, oauthCookie.Expires.IsZero(), \"Cookie expiration should be set\")\n\n\texpectedExpiration := time.Now().Add(365 * 24 * time.Hour)\n\ttimeDiff := oauthCookie.Expires.Sub(expectedExpiration)\n\tif timeDiff < 0 {\n\t\ttimeDiff = -timeDiff\n\t}\n\t// Allow 5 seconds tolerance for test execution time\n\tassert.LessOrEqual(t, timeDiff, 5*time.Second, \"Cookie expiration should be within 5 seconds of expected\")\n}\n\nfunc TestGenerateStateOauthCookieEmptyReturnPath(t *testing.T) {\n\tw := httptest.NewRecorder()\n\treturnPath := \"\"\n\n\tstateStr := generateStateOauthCookie(w, returnPath)\n\n\t// Decode and verify state\n\tstateBytes, err := base64.URLEncoding.DecodeString(stateStr)\n\tassert.NoError(t, err, \"Returned state should be valid base64\")\n\n\tvar state oAuthState\n\terr = json.Unmarshal(stateBytes, &state)\n\tassert.NoError(t, err, \"State should contain valid JSON\")\n\n\t// Verify empty return path is preserved\n\tassert.Empty(t, state.Return, \"Return path should be empty\")\n}\n\nfunc TestGenerateStateOauthCookieUniqueness(t *testing.T) {\n\t// Generate two states and verify they have different CSRF tokens\n\tw1 := httptest.NewRecorder()\n\tw2 := httptest.NewRecorder()\n\n\tstate1Str := generateStateOauthCookie(w1, \"/path1\")\n\tstate2Str := generateStateOauthCookie(w2, \"/path2\")\n\n\t// Decode states\n\tstate1Bytes, err1 := base64.URLEncoding.DecodeString(state1Str)\n\tstate2Bytes, err2 := base64.URLEncoding.DecodeString(state2Str)\n\tassert.NoError(t, err1, \"First state should be valid base64\")\n\tassert.NoError(t, err2, \"Second state should be valid base64\")\n\n\tvar state1, state2 oAuthState\n\terr1 = json.Unmarshal(state1Bytes, &state1)\n\terr2 = json.Unmarshal(state2Bytes, &state2)\n\tassert.NoError(t, err1, \"First state should be valid JSON\")\n\tassert.NoError(t, err2, \"Second state should be valid JSON\")\n\n\t// Verify CSRF tokens are different\n\tassert.NotEqual(t, state1.Csrf, state2.Csrf, \"Multiple calls should generate different CSRF tokens\")\n\n\t// Verify states are different\n\tassert.NotEqual(t, state1Str, state2Str, \"Multiple calls should generate different state strings\")\n}\n"
  },
  {
    "path": "api/options.go",
    "content": "package api\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"net/http\"\n)\n\nfunc setOption(w http.ResponseWriter, r *http.Request) {\n\tcurrentUser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tif !currentUser.Admin {\n\t\thelpers.WriteJSON(w, http.StatusForbidden, map[string]string{\n\t\t\t\"error\": \"User must be admin\",\n\t\t})\n\t\treturn\n\t}\n\n\tvar option db.Option\n\tif !helpers.Bind(w, r, &option) {\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).SetOption(option.Key, option.Value)\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusInternalServerError, map[string]string{\n\t\t\t\"error\": \"Can not set option\",\n\t\t})\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, option)\n}\n\nfunc getOptions(w http.ResponseWriter, r *http.Request) {\n\tcurrentUser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tif !currentUser.Admin {\n\t\thelpers.WriteJSON(w, http.StatusForbidden, map[string]string{\n\t\t\t\"error\": \"User must be admin\",\n\t\t})\n\t\treturn\n\t}\n\n\toptions, err := helpers.Store(r).GetOptions(db.RetrieveQueryParams{})\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusInternalServerError, map[string]string{\n\t\t\t\"error\": \"Can not get options\",\n\t\t})\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, options)\n}\n"
  },
  {
    "path": "api/projects/backup_restore.go",
    "content": "package projects\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tprojectService \"github.com/semaphoreui/semaphore/services/project\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc GetBackup(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tstore := helpers.Store(r)\n\n\tbackup, err := projectService.GetBackup(project.ID, store)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tstr, err := backup.Marshal()\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.Header().Set(\"content-type\", \"application/json\")\n\tw.WriteHeader(http.StatusOK)\n\t_, _ = w.Write([]byte(str))\n}\n\nfunc Restore(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tvar backup projectService.BackupFormat\n\n\tbuf := new(strings.Builder)\n\tif _, err := io.Copy(buf, r.Body); err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tstr := buf.String()\n\n\tif err := backup.Unmarshal(str); err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tstore := helpers.Store(r)\n\tif err := backup.Verify(); err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tvar p *db.Project\n\tp, err := backup.Restore(*user, store)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, p)\n}\n"
  },
  {
    "path": "api/projects/environment.go",
    "content": "package projects\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n)\n\ntype EnvironmentController struct {\n\taccessKeyRepo      db.AccessKeyManager\n\taccessKeyService   server.AccessKeyService\n\tencryptionService  server.AccessKeyEncryptionService\n\tenvironmentService server.EnvironmentService\n}\n\nfunc NewEnvironmentController(\n\taccessKeyRepo db.AccessKeyManager,\n\tencryptionService server.AccessKeyEncryptionService,\n\taccessKeyService server.AccessKeyService,\n\tenvironmentService server.EnvironmentService,\n) *EnvironmentController {\n\treturn &EnvironmentController{\n\t\taccessKeyRepo:      accessKeyRepo,\n\t\taccessKeyService:   accessKeyService,\n\t\tencryptionService:  encryptionService,\n\t\tenvironmentService: environmentService,\n\t}\n}\n\nfunc (c *EnvironmentController) updateEnvironmentSecrets(env db.Environment) error {\n\n\terrors := make([]error, 0)\n\n\tfor _, secret := range env.Secrets {\n\t\terr := secret.Validate()\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t\tcontinue\n\t\t}\n\n\t\tvar key db.AccessKey\n\n\t\tswitch secret.Operation {\n\t\tcase db.EnvironmentSecretCreate:\n\t\t\tvar sourceStorageKey *string\n\t\t\tif env.SecretStorageKeyPrefix != nil {\n\t\t\t\ttmp := *env.SecretStorageKeyPrefix + random.String(10)\n\t\t\t\tsourceStorageKey = &tmp\n\t\t\t}\n\n\t\t\tvar storageType *db.AccessKeySourceStorageType\n\t\t\tif env.SecretStorageID != nil {\n\t\t\t\ttmp := db.AccessKeySourceStorageVault\n\t\t\t\tstorageType = &tmp\n\t\t\t}\n\n\t\t\tkey, err = c.accessKeyService.Create(db.AccessKey{\n\t\t\t\tName:              secret.Name,\n\t\t\t\tString:            secret.Secret,\n\t\t\t\tEnvironmentID:     &env.ID,\n\t\t\t\tProjectID:         &env.ProjectID,\n\t\t\t\tType:              db.AccessKeyString,\n\t\t\t\tOwner:             secret.Type.GetAccessKeyOwner(),\n\t\t\t\tSourceStorageID:   env.SecretStorageID,\n\t\t\t\tSourceStorageKey:  sourceStorageKey,\n\t\t\t\tSourceStorageType: storageType,\n\t\t\t})\n\n\t\t\tif err != nil {\n\t\t\t\terrors = append(errors, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase db.EnvironmentSecretDelete:\n\t\t\tkey, err = c.accessKeyRepo.GetAccessKey(env.ProjectID, secret.ID)\n\n\t\t\tif err != nil {\n\t\t\t\terrors = append(errors, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif key.EnvironmentID == nil && *key.EnvironmentID == env.ID {\n\t\t\t\terrors = append(errors, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\terr = c.accessKeyService.Delete(env.ProjectID, secret.ID)\n\t\tcase db.EnvironmentSecretUpdate:\n\t\t\tkey, err = c.accessKeyRepo.GetAccessKey(env.ProjectID, secret.ID)\n\n\t\t\tif err != nil {\n\t\t\t\terrors = append(errors, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif key.EnvironmentID == nil && *key.EnvironmentID == env.ID {\n\t\t\t\terrors = append(errors, err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tupdateKey := db.AccessKey{\n\t\t\t\tID:              key.ID,\n\t\t\t\tProjectID:       key.ProjectID,\n\t\t\t\tName:            secret.Name,\n\t\t\t\tType:            db.AccessKeyString,\n\t\t\t\tOwner:           key.Owner,\n\t\t\t\tSourceStorageID: env.SecretStorageID,\n\t\t\t}\n\t\t\tif secret.Secret != \"\" {\n\t\t\t\tupdateKey.String = secret.Secret\n\t\t\t\tupdateKey.OverrideSecret = true\n\t\t\t}\n\n\t\t\terr = c.accessKeyService.Update(updateKey)\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn errors[0]\n\t}\n\n\treturn nil\n}\n\n// EnvironmentMiddleware ensures an environment exists and loads it to the context\nfunc (c *EnvironmentController) EnvironmentMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tenvID, err := helpers.GetIntParam(\"environment_id\", w, r)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tenv, err := helpers.Store(r).GetEnvironment(project.ID, envID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tif err = c.encryptionService.FillEnvironmentSecrets(&env, false); err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"environment\", env)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetEnvironmentRefs(w http.ResponseWriter, r *http.Request) {\n\tenv := helpers.GetFromContext(r, \"environment\").(db.Environment)\n\trefs, err := helpers.Store(r).GetEnvironmentRefs(env.ProjectID, env.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\n// GetEnvironment retrieves sorted environments from the database\nfunc GetEnvironment(w http.ResponseWriter, r *http.Request) {\n\n\t// return single environment if request has environment ID\n\tif environment := helpers.GetFromContext(r, \"environment\"); environment != nil {\n\t\thelpers.WriteJSON(w, http.StatusOK, environment.(db.Environment))\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tenv, err := helpers.Store(r).GetEnvironments(project.ID, helpers.QueryParams(r.URL))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, env)\n}\n\n// UpdateEnvironment updates an existing environment in the database\nfunc (c *EnvironmentController) UpdateEnvironment(w http.ResponseWriter, r *http.Request) {\n\toldEnv := helpers.GetFromContext(r, \"environment\").(db.Environment)\n\tvar env db.Environment\n\tif !helpers.Bind(w, r, &env) {\n\t\treturn\n\t}\n\n\tif env.ID != oldEnv.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Environment ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif env.ProjectID != oldEnv.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).UpdateEnvironment(env); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldEnv.ProjectID,\n\t\tObjectType:  db.EventEnvironment,\n\t\tObjectID:    oldEnv.ID,\n\t\tDescription: fmt.Sprintf(\"Environment %s updated\", env.Name),\n\t})\n\n\tif err := c.updateEnvironmentSecrets(env); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// AddEnvironment creates an environment in the database\nfunc (c *EnvironmentController) AddEnvironment(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar env db.Environment\n\n\tif !helpers.Bind(w, r, &env) {\n\t\treturn\n\t}\n\n\tif project.ID != env.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t}\n\n\tnewEnv, err := helpers.Store(r).CreateEnvironment(env)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   newEnv.ProjectID,\n\t\tObjectType:  db.EventEnvironment,\n\t\tObjectID:    newEnv.ID,\n\t\tDescription: fmt.Sprintf(\"Environment %s created\", newEnv.Name),\n\t})\n\n\tif err = c.updateEnvironmentSecrets(newEnv); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\t// Reload env\n\tenv, err = helpers.Store(r).GetEnvironment(newEnv.ProjectID, newEnv.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\t// Use empty array to avoid null in JSON\n\tenv.Secrets = []db.EnvironmentSecret{}\n\n\thelpers.WriteJSON(w, http.StatusCreated, env)\n}\n\n// RemoveEnvironment deletes an environment from the database\nfunc (c *EnvironmentController) RemoveEnvironment(w http.ResponseWriter, r *http.Request) {\n\tenv := helpers.GetFromContext(r, \"environment\").(db.Environment)\n\n\terr := c.environmentService.Delete(env.ProjectID, env.ID)\n\t//err := helpers.Store(r).DeleteEnvironment(env.ProjectID, env.ID)\n\n\tif errors.Is(err, db.ErrInvalidOperation) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Environment is in use by one or more templates\",\n\t\t\t\"inUse\": true,\n\t\t})\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   env.ProjectID,\n\t\tObjectType:  db.EventEnvironment,\n\t\tObjectID:    env.ID,\n\t\tDescription: fmt.Sprintf(\"Environment %s deleted\", env.Name),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/integration.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc IntegrationMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tintegrationId, err := helpers.GetIntParam(\"integration_id\", w, r)\n\t\tprojectId, err := helpers.GetIntParam(\"project_id\", w, r)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\t\"error\": \"Invalid integration ID\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tintegration, err := helpers.Store(r).GetIntegration(projectId, integrationId)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"integration\", integration)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetIntegration(w http.ResponseWriter, r *http.Request) {\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\thelpers.WriteJSON(w, http.StatusOK, integration)\n}\n\nfunc GetIntegrations(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegrations, err := helpers.Store(r).GetIntegrations(project.ID, helpers.QueryParams(r.URL), false)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, integrations)\n}\n\nfunc GetIntegrationRefs(w http.ResponseWriter, r *http.Request) {\n\tintegration_id, err := helpers.GetIntParam(\"integration_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Integration ID\",\n\t\t})\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\trefs, err := helpers.Store(r).GetIntegrationRefs(project.ID, integration_id)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\nfunc AddIntegration(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar integration db.Integration\n\tlog.Info(fmt.Sprintf(\"Found Project: %v\", project.ID))\n\n\tif !helpers.Bind(w, r, &integration) {\n\t\tlog.Info(\"Failed to bind for integration uploads\")\n\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif integration.ProjectID != project.ID {\n\t\tlog.Error(fmt.Sprintf(\"Project ID in body and URL must be the same: %v vs. %v\", integration.ProjectID, project.ID))\n\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\terr := integration.Validate()\n\tif err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": err.Error(),\n\t\t})\n\t\treturn\n\t}\n\n\tnewIntegration, errIntegration := helpers.Store(r).CreateIntegration(integration)\n\n\tif errIntegration != nil {\n\t\tlog.Error(errIntegration)\n\t\thelpers.WriteError(w, errIntegration)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, newIntegration)\n}\n\nfunc UpdateIntegration(w http.ResponseWriter, r *http.Request) {\n\toldIntegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar integration db.Integration\n\n\tif !helpers.Bind(w, r, &integration) {\n\t\treturn\n\t}\n\n\tif integration.ID != oldIntegration.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Integration ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif integration.ProjectID != oldIntegration.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).UpdateIntegration(integration)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc DeleteIntegration(w http.ResponseWriter, r *http.Request) {\n\tintegration_id, err := helpers.GetIntParam(\"integration_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\terr = helpers.Store(r).DeleteIntegration(project.ID, integration_id)\n\tif err == db.ErrInvalidOperation {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Integration failed to be deleted\",\n\t\t})\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/integration_alias.go",
    "content": "package projects\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"net/http\"\n)\n\ntype publicAlias struct {\n\tID  int    `json:\"id\"`\n\tURL string `json:\"url\"`\n}\n\nfunc getPublicAlias(alias db.IntegrationAlias) publicAlias {\n\n\treturn publicAlias{\n\t\tID:  alias.ID,\n\t\tURL: util.GetPublicAliasURL(\"integrations\", alias.Alias),\n\t}\n}\n\nfunc getPublicAliases(aliases []db.IntegrationAlias) (res []publicAlias) {\n\n\tres = make([]publicAlias, 0)\n\tfor _, alias := range aliases {\n\t\tres = append(res, getPublicAlias(alias))\n\t}\n\n\treturn\n}\n\nfunc GetIntegrationAlias(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration, ok := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar integrationId *int\n\tif ok {\n\t\tintegrationId = &integration.ID\n\t}\n\n\taliases, err := helpers.Store(r).GetIntegrationAliases(project.ID, integrationId)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, getPublicAliases(aliases))\n}\n\nfunc AddIntegrationAlias(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration, ok := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar integrationId *int\n\tif ok {\n\t\tintegrationId = &integration.ID\n\t}\n\n\talias, err := helpers.Store(r).CreateIntegrationAlias(db.IntegrationAlias{\n\t\tAlias:         random.String(16),\n\t\tProjectID:     project.ID,\n\t\tIntegrationID: integrationId,\n\t})\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, getPublicAlias(alias))\n}\n\nfunc RemoveIntegrationAlias(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\taliasID, err := helpers.GetIntParam(\"alias_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\terr = helpers.Store(r).DeleteIntegrationAlias(project.ID, aliasID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/integration_extract_value.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc GetIntegrationExtractValue(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvalueId, err := helpers.GetIntParam(\"value_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid IntegrationExtractValue ID\",\n\t\t})\n\t\treturn\n\t}\n\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar value db.IntegrationExtractValue\n\tvalue, err = helpers.Store(r).GetIntegrationExtractValue(project.ID, valueId, integration.ID)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": fmt.Sprintf(\"Failed to get IntegrationExtractValue, %v\", err),\n\t\t})\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, value)\n}\n\nfunc GetIntegrationExtractValues(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvalues, err := helpers.Store(r).GetIntegrationExtractValues(project.ID, helpers.QueryParams(r.URL), integration.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, values)\n}\n\nfunc AddIntegrationExtractValue(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar value db.IntegrationExtractValue\n\n\tif !helpers.Bind(w, r, &value) {\n\t\treturn\n\t}\n\n\tif value.IntegrationID != integration.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Extractor ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif err := value.Validate(); err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": err.Error(),\n\t\t})\n\t\treturn\n\t}\n\n\tnewValue, err := helpers.Store(r).CreateIntegrationExtractValue(project.ID, value)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, newValue)\n}\n\nfunc UpdateIntegrationExtractValue(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvalueId, err := helpers.GetIntParam(\"value_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Value ID\",\n\t\t})\n\t\treturn\n\t}\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar value db.IntegrationExtractValue\n\tvalue, err = helpers.Store(r).GetIntegrationExtractValue(project.ID, valueId, integration.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif !helpers.Bind(w, r, &value) {\n\t\treturn\n\t}\n\n\tif value.ID != valueId {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Value ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\terr = helpers.Store(r).UpdateIntegrationExtractValue(project.ID, value)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc GetIntegrationExtractValueRefs(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvalueId, err := helpers.GetIntParam(\"value_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Value ID\",\n\t\t})\n\t\treturn\n\t}\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar value db.IntegrationExtractValue\n\tvalue, err = helpers.Store(r).GetIntegrationExtractValue(project.ID, valueId, integration.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\trefs, err := helpers.Store(r).GetIntegrationExtractValueRefs(project.ID, value.ID, value.IntegrationID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\nfunc DeleteIntegrationExtractValue(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvalueId, err := helpers.GetIntParam(\"value_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Value ID\",\n\t\t})\n\t\treturn\n\t}\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Integration Extract Value failed to be deleted\",\n\t\t})\n\t\treturn\n\t}\n\n\terr = helpers.Store(r).DeleteIntegrationExtractValue(project.ID, valueId, integration.ID)\n\tif err == db.ErrInvalidOperation {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Integration Extract Value failed to be deleted\",\n\t\t})\n\t\treturn\n\t}\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/integration_matcher.go",
    "content": "package projects\n\nimport (\n\t//\t\"strconv\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc GetIntegrationMatcher(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tmatcher_id, err := helpers.GetIntParam(\"matcher_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Matcher ID\",\n\t\t})\n\t\treturn\n\t}\n\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar matcher db.IntegrationMatcher\n\tmatcher, err = helpers.Store(r).GetIntegrationMatcher(project.ID, matcher_id, integration.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, matcher)\n}\n\nfunc GetIntegrationMatcherRefs(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tmatcherId, err := helpers.GetIntParam(\"matcher_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Matcher ID\",\n\t\t})\n\t\treturn\n\t}\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar matcher db.IntegrationMatcher\n\tmatcher, err = helpers.Store(r).GetIntegrationMatcher(project.ID, matcherId, integration.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\trefs, err := helpers.Store(r).GetIntegrationMatcherRefs(project.ID, matcher.ID, matcher.IntegrationID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\nfunc GetIntegrationMatchers(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tmatchers, err := helpers.Store(r).GetIntegrationMatchers(project.ID, helpers.QueryParams(r.URL), integration.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, matchers)\n}\n\nfunc AddIntegrationMatcher(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar matcher db.IntegrationMatcher\n\tif !helpers.Bind(w, r, &matcher) {\n\t\treturn\n\t}\n\n\tif matcher.IntegrationID != integration.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Extractor ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := matcher.Validate()\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": err.Error(),\n\t\t})\n\t\treturn\n\t}\n\n\tnewMatcher, err := helpers.Store(r).CreateIntegrationMatcher(project.ID, matcher)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, newMatcher)\n}\n\nfunc UpdateIntegrationMatcher(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tmatcherId, err := helpers.GetIntParam(\"matcher_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Matcher ID\",\n\t\t})\n\t\treturn\n\t}\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\n\tvar matcher db.IntegrationMatcher\n\n\tif !helpers.Bind(w, r, &matcher) {\n\t\treturn\n\t}\n\n\tlog.Info(fmt.Sprintf(\"Updating API Matcher %v for Extractor %v, matcher ID: %v\", matcherId, integration.ID, matcher.ID))\n\n\terr = helpers.Store(r).UpdateIntegrationMatcher(project.ID, matcher)\n\tlog.Info(fmt.Sprintf(\"Err %s\", err))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc DeleteIntegrationMatcher(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tmatcherId, err := helpers.GetIntParam(\"matcher_id\", w, r)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid Matcher ID\",\n\t\t})\n\t\treturn\n\t}\n\n\tintegration := helpers.GetFromContext(r, \"integration\").(db.Integration)\n\tvar matcher db.IntegrationMatcher\n\tmatcher, err = helpers.Store(r).GetIntegrationMatcher(project.ID, matcherId, integration.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\terr = helpers.Store(r).DeleteIntegrationMatcher(project.ID, matcher.ID, integration.ID)\n\tif err == db.ErrInvalidOperation {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Integration Matcher failed to be deleted\",\n\t\t})\n\t\treturn\n\t}\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/inventory.go",
    "content": "package projects\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// InventoryMiddleware ensures an inventory exists and loads it to the context\nfunc InventoryMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tinventoryID, err := helpers.GetIntParam(\"inventory_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tinventory, err := helpers.Store(r).GetInventory(project.ID, inventoryID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"inventory\", inventory)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetInventoryRefs(w http.ResponseWriter, r *http.Request) {\n\tinventory := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\trefs, err := helpers.Store(r).GetInventoryRefs(inventory.ProjectID, inventory.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\n// GetInventory returns an inventory from the database\nfunc GetInventory(w http.ResponseWriter, r *http.Request) {\n\tif inventory := helpers.GetFromContext(r, \"inventory\"); inventory != nil {\n\t\thelpers.WriteJSON(w, http.StatusOK, inventory.(db.Inventory))\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tparams := helpers.QueryParamsWithOwner(r.URL, db.InventoryProps)\n\n\tapp := r.URL.Query().Get(\"app\")\n\n\tvar types []db.InventoryType\n\n\tif app != \"\" {\n\t\ttypes = db.TemplateApp(app).InventoryTypes()\n\t}\n\n\tinventories, err := helpers.Store(r).GetInventories(project.ID, params, types)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, inventories)\n}\n\n// AddInventory creates an inventory in the database\nfunc AddInventory(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar inventory db.Inventory\n\n\tif !helpers.Bind(w, r, &inventory) {\n\t\treturn\n\t}\n\n\tif inventory.ProjectID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tswitch inventory.Type {\n\tcase db.InventoryStatic,\n\t\tdb.InventoryStaticYaml,\n\t\tdb.InventoryFile,\n\t\tdb.InventoryTofuWorkspace,\n\t\tdb.InventoryTerraformWorkspace:\n\t\tbreak\n\tdefault:\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Not supported inventory type\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := db.ValidateInventory(helpers.Store(r), &inventory)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tnewInventory, err := helpers.Store(r).CreateInventory(inventory)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventInventory,\n\t\tObjectID:    newInventory.ID,\n\t\tDescription: fmt.Sprintf(\"Inventory %s created\", inventory.Name),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, newInventory)\n}\n\n// IsValidInventoryPath tests a path to ensure it is below the cwd\nfunc IsValidInventoryPath(path string) bool {\n\n\tcurrentPath, err := os.Getwd()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tabsPath, err := filepath.Abs(path)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\trelPath, err := filepath.Rel(currentPath, absPath)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\treturn !strings.HasPrefix(relPath, \"..\")\n}\n\n// UpdateInventory writes updated values to an existing inventory item in the database\nfunc UpdateInventory(w http.ResponseWriter, r *http.Request) {\n\toldInventory := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\n\tvar inventory db.Inventory\n\n\tif !helpers.Bind(w, r, &inventory) {\n\t\treturn\n\t}\n\n\tif inventory.ID != oldInventory.ID {\n\t\thelpers.WriteErrorStatus(w,\n\t\t\t\"Inventory ID in body and URL must be the same\",\n\t\t\thttp.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif inventory.ProjectID != oldInventory.ProjectID {\n\t\thelpers.WriteErrorStatus(w,\n\t\t\t\"project ID in body and URL must be the same\",\n\t\t\thttp.StatusBadRequest)\n\t\treturn\n\t}\n\n\tswitch inventory.Type {\n\tcase db.InventoryTerraformWorkspace, db.InventoryTofuWorkspace:\n\tcase db.InventoryStatic, db.InventoryStaticYaml:\n\tcase db.InventoryFile:\n\t\tif !IsValidInventoryPath(inventory.Inventory) {\n\t\t\thelpers.WriteErrorStatus(w, \"Invalid inventory file pathname. Must be: path/to/inventory.\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\tdefault:\n\t\thelpers.WriteErrorStatus(w,\n\t\t\t\"unknown inventory type: \"+string(inventory.Type),\n\t\t\thttp.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif err := db.ValidateInventory(helpers.Store(r), &inventory); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).UpdateInventory(inventory); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldInventory.ProjectID,\n\t\tObjectType:  db.EventInventory,\n\t\tObjectID:    oldInventory.ID,\n\t\tDescription: fmt.Sprintf(\"Inventory %s updated\", inventory.Name),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveInventory deletes an inventory from the database\nfunc RemoveInventory(w http.ResponseWriter, r *http.Request) {\n\tinventory := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\tvar err error = helpers.Store(r).DeleteInventory(inventory.ProjectID, inventory.ID)\n\tif errors.Is(err, db.ErrInvalidOperation) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Inventory is in use by one or more templates\",\n\t\t\t\"inUse\": true,\n\t\t})\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   inventory.ProjectID,\n\t\tObjectType:  db.EventInventory,\n\t\tObjectID:    inventory.ID,\n\t\tDescription: fmt.Sprintf(\"Inventory %s deleted\", inventory.Name),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/inventory_test.go",
    "content": "package projects\n\nimport (\n\t\"runtime\"\n\t\"testing\"\n)\n\nfunc TestIsValidInventoryPath(t *testing.T) {\n\tif !IsValidInventoryPath(\"inventories/test\") {\n\t\tt.Fatal(\" a path below the cwd should be valid\")\n\t}\n\n\tif !IsValidInventoryPath(\"inventories/test/../prod\") {\n\t\tt.Fatal(\" a path below the cwd should be valid\")\n\t}\n\n\tif IsValidInventoryPath(\"/test/../../../inventory\") {\n\t\tt.Fatal(\" a path out of the cwd should be invalid\")\n\t}\n\n\tif IsValidInventoryPath(\"/test/inventory\") {\n\t\tt.Fatal(\" a path out of the cwd should be invalid\")\n\t}\n\n\tif runtime.GOOS == \"windows\" && IsValidInventoryPath(\"c:\\\\test\\\\inventory\") {\n\t\tt.Fatal(\" a path out of the cwd should be invalid\")\n\t}\n}\n"
  },
  {
    "path": "api/projects/keys.go",
    "content": "package projects\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype KeyController struct {\n\taccessKeyService server.AccessKeyService\n}\n\nfunc NewKeyController(\n\taccessKeyService server.AccessKeyService,\n) *KeyController {\n\treturn &KeyController{\n\t\taccessKeyService: accessKeyService,\n\t}\n}\n\n// KeyMiddleware ensures a key exists and loads it to the context\nfunc KeyMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tkeyID, err := helpers.GetIntParam(\"key_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tkey, err := helpers.Store(r).GetAccessKey(project.ID, keyID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"accessKey\", key)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetKeyRefs(w http.ResponseWriter, r *http.Request) {\n\tkey := helpers.GetFromContext(r, \"accessKey\").(db.AccessKey)\n\trefs, err := helpers.Store(r).GetAccessKeyRefs(*key.ProjectID, key.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\n// GetKeys retrieves sorted keys from the database\nfunc GetKeys(w http.ResponseWriter, r *http.Request) {\n\tif key := helpers.GetFromContext(r, \"accessKey\"); key != nil {\n\t\tk := key.(db.AccessKey)\n\t\thelpers.WriteJSON(w, http.StatusOK, k)\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar keys []db.AccessKey\n\n\tkeys, err := helpers.Store(r).GetAccessKeys(project.ID, db.GetAccessKeyOptions{}, helpers.QueryParams(r.URL))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, keys)\n}\n\n// AddKey adds a new key to the database\nfunc (c *KeyController) AddKey(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar key db.AccessKey\n\n\tif !helpers.Bind(w, r, &key) {\n\t\treturn\n\t}\n\n\tif key.ProjectID == nil || *key.ProjectID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\t// Plain cannot be passed via a request\n\tkey.Plain = nil\n\tkey.IgnorePlain = true\n\n\t//if err := key.Validate(true); err != nil {\n\t//\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t//\t\t\"error\": err.Error(),\n\t//\t})\n\t//\treturn\n\t//}\n\n\tnewKey, err := c.accessKeyService.Create(key)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   *newKey.ProjectID,\n\t\tObjectType:  db.EventKey,\n\t\tObjectID:    newKey.ID,\n\t\tDescription: fmt.Sprintf(\"Access Key %s created\", key.Name),\n\t})\n\n\t// Reload key to drop sensitive fields\n\tkey, err = helpers.Store(r).GetAccessKey(*newKey.ProjectID, newKey.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, key)\n}\n\n// UpdateKey updates key in database\n// nolint: gocyclo\nfunc (c *KeyController) UpdateKey(w http.ResponseWriter, r *http.Request) {\n\tvar key db.AccessKey\n\toldKey := helpers.GetFromContext(r, \"accessKey\").(db.AccessKey)\n\n\tif !helpers.Bind(w, r, &key) {\n\t\treturn\n\t}\n\n\t// Plain cannot be passed via a request\n\tkey.Plain = nil\n\tkey.IgnorePlain = true\n\n\trepos, err := helpers.Store(r).GetRepositories(*key.ProjectID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tfor _, repo := range repos {\n\t\tif repo.SSHKeyID != key.ID {\n\t\t\tcontinue\n\t\t}\n\t\terr = repo.ClearCache()\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = c.accessKeyService.Update(key)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   *oldKey.ProjectID,\n\t\tObjectType:  db.EventKey,\n\t\tObjectID:    oldKey.ID,\n\t\tDescription: fmt.Sprintf(\"Access Key %s updated\", key.Name),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveKey deletes a key from the database\nfunc (c *KeyController) RemoveKey(w http.ResponseWriter, r *http.Request) {\n\tkey := helpers.GetFromContext(r, \"accessKey\").(db.AccessKey)\n\n\terr := c.accessKeyService.Delete(*key.ProjectID, key.ID)\n\tif errors.Is(err, db.ErrInvalidOperation) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Access Key is in use by one or more templates\",\n\t\t\t\"inUse\": true,\n\t\t})\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   *key.ProjectID,\n\t\tObjectType:  db.EventKey,\n\t\tObjectID:    key.ID,\n\t\tDescription: fmt.Sprintf(\"Access Key %s deleted\", key.Name),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/project.go",
    "content": "package projects\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\n\t\"github.com/gorilla/mux\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// ProjectMiddleware ensures a project exists and loads it to the context\nfunc ProjectMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\t\tprojectID, err := helpers.GetIntParam(\"project_id\", w, r)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\t\"error\": \"Invalid project ID\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// check if user in project's team\n\t\tprojectUser, err := helpers.Store(r).GetProjectUser(projectID, user.ID)\n\n\t\tif !user.Admin && err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tproject, err := helpers.Store(r).GetProject(projectID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\troleSlug := projectUser.Role\n\n\t\tpermissions := roleSlug.GetPermissions()\n\n\t\trole, err := helpers.Store(r).GetProjectOrGlobalRoleBySlug(projectID, string(projectUser.Role))\n\n\t\tif err == nil {\n\t\t\troleSlug = db.ProjectUserRole(role.Slug)\n\t\t\tpermissions = role.Permissions\n\t\t} else if !errors.Is(err, db.ErrNotFound) {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tif helpers.HasParam(\"template_id\", r) {\n\t\t\tvar templateID int\n\t\t\ttemplateID, err = helpers.GetIntParam(\"template_id\", w, r)\n\t\t\tif err != nil {\n\t\t\t\thelpers.WriteError(w, err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvar perm db.ProjectUserPermission\n\t\t\tperm, err = helpers.Store(r).GetTemplatePermission(project.ID, templateID, user.ID)\n\t\t\tif err != nil {\n\t\t\t\thelpers.WriteError(w, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpermissions |= perm\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"projectUserRole\", roleSlug)\n\t\tr = helpers.SetContextValue(r, \"permissions\", permissions)\n\t\tr = helpers.SetContextValue(r, \"project\", project)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\n// GetMustCanMiddleware ensures that the user has administrator rights\nfunc GetMustCanMiddleware(permissions db.ProjectUserPermission) mux.MiddlewareFunc {\n\treturn func(next http.Handler) http.Handler {\n\t\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\tme := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\t\t\tuserPerms := helpers.GetFromContext(r, \"permissions\").(db.ProjectUserPermission)\n\n\t\t\tcan := (userPerms & permissions) == permissions\n\n\t\t\tif !me.Admin && r.Method != \"GET\" && r.Method != \"HEAD\" && !can {\n\t\t\t\tw.WriteHeader(http.StatusForbidden)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tnext.ServeHTTP(w, r)\n\t\t})\n\t}\n}\n\ntype ProjectController struct {\n\tProjectService server.ProjectService\n}\n\n// SendTestNotification triggers sending a test notification to enabled messengers for this project.\nfunc (c *ProjectController) SendTestNotification(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\t// Respect project.Alert flag: if disabled, still return 204 without sending\n\tif !project.Alert {\n\t\tw.WriteHeader(http.StatusConflict)\n\t\treturn\n\t}\n\n\terr := tasks.SendProjectTestAlerts(project, helpers.Store(r))\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc (c *ProjectController) UpdateProject(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar body db.Project\n\n\tif !helpers.Bind(w, r, &body) {\n\t\treturn\n\t}\n\n\tif body.ID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := c.ProjectService.UpdateProject(body)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// DeleteProject removes a project from the database\nfunc (c *ProjectController) DeleteProject(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\terr := c.ProjectService.DeleteProject(project.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\terr = util.Config.ClearProjectTmpDir(project.ID)\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// GetProject returns a project details\nfunc GetProject(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, helpers.GetFromContext(r, \"project\"))\n}\n\nfunc GetUserRole(w http.ResponseWriter, r *http.Request) {\n\tvar result struct {\n\t\tRole        db.ProjectUserRole       `json:\"role\"`\n\t\tPermissions db.ProjectUserPermission `json:\"permissions\"`\n\t}\n\tresult.Role = helpers.GetFromContext(r, \"projectUserRole\").(db.ProjectUserRole)\n\tresult.Permissions = helpers.GetFromContext(r, \"permissions\").(db.ProjectUserPermission)\n\thelpers.WriteJSON(w, http.StatusOK, result)\n}\n\nfunc ClearCache(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\terr := util.Config.ClearProjectTmpDir(project.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/projects.go",
    "content": "package projects\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype ProjectsController struct {\n\taccessKeyService server.AccessKeyService\n}\n\nfunc NewProjectsController(\n\taccessKeyService server.AccessKeyService,\n) *ProjectsController {\n\treturn &ProjectsController{\n\t\taccessKeyService: accessKeyService,\n\t}\n}\n\n// GetProjects returns all projects in this users context\nfunc GetProjects(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tvar err error\n\tvar projects []db.Project\n\tif user.Admin {\n\t\tprojects, err = helpers.Store(r).GetAllProjects()\n\t} else {\n\t\tprojects, err = helpers.Store(r).GetProjects(user.ID)\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, projects)\n}\n\nfunc (c *ProjectsController) createDemoProject(projectID int, noneKeyID int, emptyEnvID int, store db.Store) (err error) {\n\tvar demoRepo db.Repository\n\n\tvar buildInv db.Inventory\n\tvar devInv db.Inventory\n\tvar prodInv db.Inventory\n\n\tvar buildView db.View\n\tvar deployView db.View\n\tvar toolsView db.View\n\n\tbuildView, err = store.CreateView(db.View{\n\t\tProjectID: projectID,\n\t\tTitle:     \"Build\",\n\t\tPosition:  0,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdeployView, err = store.CreateView(db.View{\n\t\tProjectID: projectID,\n\t\tTitle:     \"Deploy\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttoolsView, err = store.CreateView(db.View{\n\t\tProjectID: projectID,\n\t\tTitle:     \"Tools\",\n\t\tPosition:  2,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvaultKey, err := c.accessKeyService.Create(db.AccessKey{\n\t\tName:      \"Vault Password\",\n\t\tType:      db.AccessKeyLoginPassword,\n\t\tProjectID: &projectID,\n\t\tLoginPassword: db.LoginPassword{\n\t\t\tPassword: \"RAX6yKN7sBn2qDagRPls\",\n\t\t},\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdemoRepo, err = store.CreateRepository(db.Repository{\n\t\tName:      \"Demo\",\n\t\tProjectID: projectID,\n\t\tGitURL:    \"https://github.com/semaphoreui/semaphore-demo.git\",\n\t\tGitBranch: \"main\",\n\t\tSSHKeyID:  noneKeyID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbuildInv, err = store.CreateInventory(db.Inventory{\n\t\tName:      \"Build\",\n\t\tProjectID: projectID,\n\t\tInventory: \"[builder]\\nlocalhost ansible_connection=local\",\n\t\tType:      \"static\",\n\t\tSSHKeyID:  &noneKeyID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdevInv, err = store.CreateInventory(db.Inventory{\n\t\tName:      \"Dev\",\n\t\tProjectID: projectID,\n\t\tInventory: \"invs/dev/hosts\",\n\t\tType:      \"file\",\n\t\tSSHKeyID:  &noneKeyID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tprodInv, err = store.CreateInventory(db.Inventory{\n\t\tName:      \"Prod\",\n\t\tProjectID: projectID,\n\t\tInventory: \"invs/prod/hosts\",\n\t\tType:      \"file\",\n\t\tSSHKeyID:  &noneKeyID,\n\t})\n\n\tvar desc string\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdesc = \"Pings the website to provide a real-world example of using Semaphore.\"\n\t_, err = store.CreateTemplate(db.Template{\n\t\tName:          \"Ping semaphoreui.com\",\n\t\tPlaybook:      \"ping.yml\",\n\t\tDescription:   &desc,\n\t\tProjectID:     projectID,\n\t\tInventoryID:   &prodInv.ID,\n\t\tEnvironmentID: &emptyEnvID,\n\t\tRepositoryID:  demoRepo.ID,\n\t\tApp:           db.AppAnsible,\n\t\tViewID:        &toolsView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdesc = \"Creates a demo artifact and stores it in the cache.\"\n\n\tvar startVersion = \"1.0.0\"\n\tbuildTpl, err := store.CreateTemplate(db.Template{\n\t\tName:          \"Build demo app\",\n\t\tPlaybook:      \"build.yml\",\n\t\tType:          db.TemplateBuild,\n\t\tProjectID:     projectID,\n\t\tInventoryID:   &buildInv.ID,\n\t\tEnvironmentID: &emptyEnvID,\n\t\tRepositoryID:  demoRepo.ID,\n\t\tStartVersion:  &startVersion,\n\t\tApp:           db.AppAnsible,\n\t\tViewID:        &buildView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar template db.Template\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Deploy demo app to Dev\",\n\t\tType:            db.TemplateDeploy,\n\t\tPlaybook:        \"deploy.yml\",\n\t\tProjectID:       projectID,\n\t\tInventoryID:     &devInv.ID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tAutorun:         true,\n\t\tApp:             db.AppAnsible,\n\t\tViewID:          &deployView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = store.CreateTemplateVault(db.TemplateVault{\n\t\tProjectID:  projectID,\n\t\tTemplateID: template.ID,\n\t\tVaultKeyID: &vaultKey.ID,\n\t\tName:       nil,\n\t\tType:       \"password\",\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Deploy demo app to Production\",\n\t\tType:            db.TemplateDeploy,\n\t\tPlaybook:        \"deploy.yml\",\n\t\tProjectID:       projectID,\n\t\tInventoryID:     &prodInv.ID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tApp:             db.AppAnsible,\n\t\tViewID:          &deployView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = store.CreateTemplateVault(db.TemplateVault{\n\t\tProjectID:  projectID,\n\t\tTemplateID: template.ID,\n\t\tVaultKeyID: &vaultKey.ID,\n\t\tName:       nil,\n\t\tType:       \"password\",\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Apply infrastructure (OpenTofu)\",\n\t\tType:            db.TemplateTask,\n\t\tPlaybook:        \"\",\n\t\tProjectID:       projectID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tApp:             db.AppTofu,\n\t\tViewID:          &buildView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Apply infrastructure (Terragrunt)\",\n\t\tType:            db.TemplateTask,\n\t\tPlaybook:        \"\",\n\t\tProjectID:       projectID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tApp:             db.AppTerragrunt,\n\t\tViewID:          &buildView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Print system info (Bash)\",\n\t\tType:            db.TemplateTask,\n\t\tPlaybook:        \"print_system_info.sh\",\n\t\tProjectID:       projectID,\n\t\tInventoryID:     &prodInv.ID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tApp:             db.AppBash,\n\t\tViewID:          &toolsView.ID,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, err = store.CreateTemplate(db.Template{\n\t\tName:            \"Print system info (PowerShell)\",\n\t\tType:            db.TemplateTask,\n\t\tPlaybook:        \"print_system_info.ps1\",\n\t\tProjectID:       projectID,\n\t\tInventoryID:     &prodInv.ID,\n\t\tEnvironmentID:   &emptyEnvID,\n\t\tRepositoryID:    demoRepo.ID,\n\t\tBuildTemplateID: &buildTpl.ID,\n\t\tApp:             db.AppPowerShell,\n\t\tViewID:          &toolsView.ID,\n\t})\n\treturn\n}\n\n// AddProject adds a new project to the database\nfunc (c *ProjectsController) AddProject(w http.ResponseWriter, r *http.Request) {\n\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tif !user.Admin && !util.Config.NonAdminCanCreateProject {\n\t\tlog.Warn(user.Username + \" is not permitted to edit users\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tvar bodyWithDemo struct {\n\t\tdb.Project\n\t\tDemo bool `json:\"demo\"`\n\t}\n\n\tif !helpers.Bind(w, r, &bodyWithDemo) {\n\t\treturn\n\t}\n\n\tbody := bodyWithDemo.Project\n\n\tstore := helpers.Store(r)\n\n\tbody, err := store.CreateProject(body)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\t_, err = store.CreateProjectUser(db.ProjectUser{ProjectID: body.ID, UserID: user.ID, Role: db.ProjectOwner})\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tnoneKey, err := c.accessKeyService.Create(db.AccessKey{\n\t\tName:      \"None\",\n\t\tType:      db.AccessKeyNone,\n\t\tProjectID: &body.ID,\n\t})\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\t_, err = store.CreateView(db.View{\n\t\tProjectID: body.ID,\n\t\tTitle:     \"All\",\n\t\tPosition:  0,\n\t\tType:      db.ViewTypeAll,\n\t})\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\t//_, err = store.CreateInventory(db.Inventory{\n\t//\tName:      \"None\",\n\t//\tProjectID: body.ID,\n\t//\tType:      \"none\",\n\t//\tSSHKeyID:  &noneKey.ID,\n\t//})\n\n\t//if err != nil {\n\t//\thelpers.WriteError(w, err)\n\t//\treturn\n\t//}\n\n\tenvStr := \"{}\"\n\temptyEnv, err := store.CreateEnvironment(db.Environment{\n\t\tName:      \"Empty\",\n\t\tProjectID: body.ID,\n\t\tJSON:      \"{}\",\n\t\tENV:       &envStr,\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif bodyWithDemo.Demo {\n\t\terr = c.createDemoProject(body.ID, noneKey.ID, emptyEnv.ID, store)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   body.ID,\n\t\tObjectType:  db.EventProject,\n\t\tObjectID:    body.ID,\n\t\tDescription: \"Project created\",\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, body)\n}\n"
  },
  {
    "path": "api/projects/repository.go",
    "content": "package projects\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"net/http\"\n)\n\n// RepositoryMiddleware ensures a repository exists and loads it to the context\nfunc RepositoryMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\trepositoryID, err := helpers.GetIntParam(\"repository_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\trepository, err := helpers.Store(r).GetRepository(project.ID, repositoryID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"repository\", repository)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetRepositoryRefs(w http.ResponseWriter, r *http.Request) {\n\trepo := helpers.GetFromContext(r, \"repository\").(db.Repository)\n\trefs, err := helpers.Store(r).GetRepositoryRefs(repo.ProjectID, repo.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\ntype RepositoryController struct {\n\tkeyInstaller db_lib.AccessKeyInstaller\n}\n\nfunc NewRepositoryController(keyInstaller db_lib.AccessKeyInstaller) *RepositoryController {\n\treturn &RepositoryController{\n\t\tkeyInstaller: keyInstaller,\n\t}\n}\n\nfunc (c *RepositoryController) GetRepositoryBranches(w http.ResponseWriter, r *http.Request) {\n\trepo := helpers.GetFromContext(r, \"repository\").(db.Repository)\n\n\tif repo.GetType() == db.RepositoryLocal || repo.GetType() == db.RepositoryFile {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, \"Wrong repository type: \"+repo.GetType())\n\t\treturn\n\t}\n\n\tgit := db_lib.GitRepository{\n\t\tRepository: repo,\n\t\tClient:     db_lib.CreateDefaultGitClient(c.keyInstaller),\n\t}\n\n\tbranches, err := git.GetRemoteBranches()\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, branches)\n}\n\n// GetRepositories returns all repositories in a project sorted by type\nfunc GetRepositories(w http.ResponseWriter, r *http.Request) {\n\tif repo := helpers.GetFromContext(r, \"repository\"); repo != nil {\n\t\thelpers.WriteJSON(w, http.StatusOK, repo.(db.Repository))\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tparams := helpers.QueryParamsForProps(r.URL, db.RepositoryProps)\n\n\trepos, err := helpers.Store(r).GetRepositories(project.ID, params)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, repos)\n}\n\n// AddRepository creates a new repository in the database\nfunc AddRepository(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar repository db.Repository\n\n\tif !helpers.Bind(w, r, &repository) {\n\t\treturn\n\t}\n\n\tif repository.ProjectID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t}\n\n\tif err := db.ValidateRepository(helpers.Store(r), &repository); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tnewRepo, err := helpers.Store(r).CreateRepository(repository)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   newRepo.ProjectID,\n\t\tObjectType:  db.EventRepository,\n\t\tObjectID:    newRepo.ID,\n\t\tDescription: fmt.Sprintf(\"Repository %s created\", repository.GitURL),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, newRepo)\n}\n\n// UpdateRepository updates the values of a repository in the database\nfunc UpdateRepository(w http.ResponseWriter, r *http.Request) {\n\toldRepo := helpers.GetFromContext(r, \"repository\").(db.Repository)\n\tvar repository db.Repository\n\n\tif !helpers.Bind(w, r, &repository) {\n\t\treturn\n\t}\n\n\tif repository.ID != oldRepo.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Repository ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif repository.ProjectID != oldRepo.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif err := db.ValidateRepository(helpers.Store(r), &repository); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).UpdateRepository(repository); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif oldRepo.GitURL != repository.GitURL {\n\t\tutil.LogWarning(oldRepo.ClearCache())\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldRepo.ProjectID,\n\t\tObjectType:  db.EventRepository,\n\t\tObjectID:    oldRepo.ID,\n\t\tDescription: fmt.Sprintf(\"Repository %s updated\", repository.GitURL),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveRepository deletes a repository from a project in the database\nfunc RemoveRepository(w http.ResponseWriter, r *http.Request) {\n\trepository := helpers.GetFromContext(r, \"repository\").(db.Repository)\n\n\tvar err error = helpers.Store(r).DeleteRepository(repository.ProjectID, repository.ID)\n\tif errors.Is(err, db.ErrInvalidOperation) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]any{\n\t\t\t\"error\": \"Repository is in use by one or more templates\",\n\t\t\t\"inUse\": true,\n\t\t})\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tutil.LogWarning(repository.ClearCache())\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   repository.ProjectID,\n\t\tObjectType:  db.EventRepository,\n\t\tObjectID:    repository.ID,\n\t\tDescription: fmt.Sprintf(\"Repository %s deleted\", repository.GitURL),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/schedules.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/schedules\"\n)\n\n// SchedulesMiddleware ensures a template exists and loads it to the context\nfunc SchedulesMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tscheduleID, err := helpers.GetIntParam(\"schedule_id\", w, r)\n\t\tif err != nil { // not specified schedule_id\n\t\t\treturn\n\t\t}\n\n\t\tschedule, err := helpers.Store(r).GetSchedule(project.ID, scheduleID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"schedule\", schedule)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc refreshSchedulePool(r *http.Request) {\n\tpool := helpers.GetFromContext(r, \"schedule_pool\").(schedules.SchedulePool)\n\tpool.Refresh()\n}\n\n// GetSchedule returns single template by ID\nfunc GetSchedule(w http.ResponseWriter, r *http.Request) {\n\tschedule := helpers.GetFromContext(r, \"schedule\").(db.Schedule)\n\thelpers.WriteJSON(w, http.StatusOK, schedule)\n}\n\nfunc GetProjectSchedules(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\ttplSchedules, err := helpers.Store(r).GetProjectSchedules(project.ID, false, false)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, tplSchedules)\n}\nfunc GetTemplateSchedules(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\ttemplateID, err := helpers.GetIntParam(\"template_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"template_id must be provided\",\n\t\t})\n\t\treturn\n\t}\n\n\ttplSchedules, err := helpers.Store(r).GetTemplateSchedules(project.ID, templateID, true)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, tplSchedules)\n}\n\nfunc validateCronFormat(cronFormat string, w http.ResponseWriter) bool {\n\terr := schedules.ValidateCronFormat(cronFormat)\n\tif err == nil {\n\t\treturn true\n\t}\n\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\"error\": \"Cron: \" + err.Error(),\n\t})\n\treturn false\n}\n\nfunc validateSchedulePayload(schedule *db.Schedule, w http.ResponseWriter) bool {\n\tif schedule.Type == \"\" {\n\t\tschedule.Type = db.ScheduleTypeCron\n\t}\n\n\tswitch schedule.Type {\n\tcase db.ScheduleTypeRunAt:\n\t\tif schedule.RunAt == nil {\n\t\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\t\"error\": \"run_at must be provided for run_at schedules\",\n\t\t\t})\n\t\t\treturn false\n\t\t}\n\n\t\tif schedule.RunAt.Before(time.Now()) {\n\t\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\t\"error\": \"run_at must be in the future\",\n\t\t\t})\n\t\t\treturn false\n\t\t}\n\n\t\tschedule.CronFormat = \"\"\n\t\treturn true\n\tcase db.ScheduleTypeCron:\n\t\tschedule.RunAt = nil\n\t\treturn validateCronFormat(schedule.CronFormat, w)\n\tdefault:\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"invalid schedule type\",\n\t\t})\n\t\treturn false\n\t}\n}\n\nfunc ValidateScheduleCronFormat(w http.ResponseWriter, r *http.Request) {\n\tvar schedule db.Schedule\n\tif !helpers.Bind(w, r, &schedule) {\n\t\treturn\n\t}\n\n\t_ = validateCronFormat(schedule.CronFormat, w)\n}\n\n// AddSchedule adds a template to the database\nfunc AddSchedule(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar schedule db.Schedule\n\tif !helpers.Bind(w, r, &schedule) {\n\t\treturn\n\t}\n\n\tif !validateSchedulePayload(&schedule, w) {\n\t\treturn\n\t}\n\n\tschedule.ProjectID = project.ID\n\tschedule, err := helpers.Store(r).CreateSchedule(schedule)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    schedule.ID,\n\t\tDescription: fmt.Sprintf(\"Schedule ID %d created\", schedule.ID),\n\t})\n\n\trefreshSchedulePool(r)\n\n\thelpers.WriteJSON(w, http.StatusCreated, schedule)\n}\n\n// UpdateSchedule writes a schedule to an existing key in the database\nfunc UpdateSchedule(w http.ResponseWriter, r *http.Request) {\n\toldSchedule := helpers.GetFromContext(r, \"schedule\").(db.Schedule)\n\n\tvar schedule db.Schedule\n\tif !helpers.Bind(w, r, &schedule) {\n\t\treturn\n\t}\n\n\t// project ID and schedule ID in the body and the path must be the same\n\n\tif schedule.ID != oldSchedule.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"schedule id in URL and in body must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif schedule.ProjectID != oldSchedule.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"You can not move schedule to other project\",\n\t\t})\n\t\treturn\n\t}\n\n\tif !validateSchedulePayload(&schedule, w) {\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).UpdateSchedule(schedule)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldSchedule.ProjectID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    oldSchedule.ID,\n\t\tDescription: fmt.Sprintf(\"Schedule ID %d updated\", schedule.ID),\n\t})\n\n\trefreshSchedulePool(r)\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc SetScheduleActive(w http.ResponseWriter, r *http.Request) {\n\toldSchedule := helpers.GetFromContext(r, \"schedule\").(db.Schedule)\n\n\tvar schedule struct {\n\t\tActive bool `json:\"active\"`\n\t}\n\n\tif !helpers.Bind(w, r, &schedule) {\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).SetScheduleActive(oldSchedule.ProjectID, oldSchedule.ID, schedule.Active)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldSchedule.ProjectID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    oldSchedule.ID,\n\t\tDescription: fmt.Sprintf(\"Schedule ID %d updated\", oldSchedule.ID),\n\t})\n\n\trefreshSchedulePool(r)\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveSchedule deletes a schedule from the database\nfunc RemoveSchedule(w http.ResponseWriter, r *http.Request) {\n\tschedule := helpers.GetFromContext(r, \"schedule\").(db.Schedule)\n\n\terr := helpers.Store(r).DeleteSchedule(schedule.ProjectID, schedule.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   schedule.ProjectID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    schedule.ID,\n\t\tDescription: fmt.Sprintf(\"Schedule ID %d deleted\", schedule.ID),\n\t})\n\n\trefreshSchedulePool(r)\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/secret_storages.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n)\n\ntype SecretStorageController struct {\n\tsecretRepo           db.SecretStorageRepository\n\tsecretStorageService server.SecretStorageService\n}\n\nfunc SecretStorageMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tstorageID, err := helpers.GetIntParam(\"storage_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tstorage, err := helpers.Store(r).GetSecretStorage(project.ID, storageID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tkeys, err := helpers.Store(r).GetAccessKeys(project.ID, db.GetAccessKeyOptions{\n\t\t\tOwner:     db.AccessKeySecretStorage,\n\t\t\tStorageID: &storage.ID,\n\t\t}, db.RetrieveQueryParams{})\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tif len(keys) == 0 {\n\t\t\thelpers.WriteErrorStatus(w, \"Access key not found\", http.StatusNotFound)\n\t\t\treturn\n\t\t}\n\n\t\tif keys[0].SourceStorageKey != nil {\n\t\t\tstorage.Secret = *keys[0].SourceStorageKey\n\t\t}\n\n\t\tstorage.SourceStorageType = keys[0].SourceStorageType\n\n\t\tr = helpers.SetContextValue(r, \"secretStorage\", storage)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc NewSecretStorageController(\n\tsecretRepo db.SecretStorageRepository,\n\tsecretStorageService server.SecretStorageService,\n\n) *SecretStorageController {\n\treturn &SecretStorageController{\n\t\tsecretRepo:           secretRepo,\n\t\tsecretStorageService: secretStorageService,\n\t}\n}\n\nfunc (c *SecretStorageController) GetRefs(w http.ResponseWriter, r *http.Request) {\n\tkey := helpers.GetFromContext(r, \"secretStorage\").(db.SecretStorage)\n\trefs, err := helpers.Store(r).GetSecretStorageRefs(key.ProjectID, key.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\nfunc (c *SecretStorageController) GetSecretStorages(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tstorages, err := c.secretStorageService.GetSecretStorages(project.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, storages)\n}\n\nfunc (c *SecretStorageController) GetSecretStorage(w http.ResponseWriter, r *http.Request) {\n\tstorage := helpers.GetFromContext(r, \"secretStorage\").(db.SecretStorage)\n\n\thelpers.WriteJSON(w, http.StatusOK, storage)\n}\n\nfunc (c *SecretStorageController) Update(w http.ResponseWriter, r *http.Request) {\n\toldStorage := helpers.GetFromContext(r, \"secretStorage\").(db.SecretStorage)\n\n\tvar storage db.SecretStorage\n\tif !helpers.Bind(w, r, &storage) {\n\t\treturn\n\t}\n\n\tif storage.ID != oldStorage.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Secret storage id in URL and in body must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif storage.ProjectID != oldStorage.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"You can not move secret storage to other project\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := c.secretStorageService.Update(storage)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldStorage.ProjectID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    oldStorage.ID,\n\t\tDescription: fmt.Sprintf(\"Secret storage with ID %d has been updated\", storage.ID),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusOK, storage)\n}\n\nfunc (c *SecretStorageController) Add(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar storage db.SecretStorage\n\n\tif !helpers.Bind(w, r, &storage) {\n\t\treturn\n\t}\n\n\tif storage.ProjectID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tnewStorage, err := c.secretStorageService.Create(storage)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   newStorage.ProjectID,\n\t\tObjectType:  db.EventKey,\n\t\tObjectID:    newStorage.ID,\n\t\tDescription: fmt.Sprintf(\"Secret storage %s has been created\", storage.Name),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, newStorage)\n}\n\nfunc (c *SecretStorageController) Remove(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tstorageID, err := helpers.GetIntParam(\"storage_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\terr = c.secretStorageService.Delete(project.ID, storageID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc (c *SecretStorageController) SyncSecrets(w http.ResponseWriter, r *http.Request) {\n\toldStorage := helpers.GetFromContext(r, \"secretStorage\").(db.SecretStorage)\n\n\tvar storage db.SecretStorage\n\tif !helpers.Bind(w, r, &storage) {\n\t\treturn\n\t}\n\n\tif storage.ID != oldStorage.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Secret storage id in URL and in body must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif storage.ProjectID != oldStorage.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"You can not move secret storage to other project\",\n\t\t})\n\t\treturn\n\t}\n\n\terr := c.secretStorageService.SyncSecrets(storage)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldStorage.ProjectID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    oldStorage.ID,\n\t\tDescription: fmt.Sprintf(\"Secret storage with ID %d has been synced\", storage.ID),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusOK, storage)\n}\n"
  },
  {
    "path": "api/projects/tasks.go",
    "content": "package projects\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype TaskController struct {\n\tansibleTaskRepo db.AnsibleTaskRepository\n}\n\nfunc NewTaskController(ansibleTaskRepo db.AnsibleTaskRepository) *TaskController {\n\treturn &TaskController{\n\t\tansibleTaskRepo: ansibleTaskRepo,\n\t}\n}\n\nfunc taskPool(r *http.Request) *tasks.TaskPool {\n\treturn helpers.GetFromContext(r, \"task_pool\").(*tasks.TaskPool)\n}\n\n// AddTask inserts a task into the database and returns a header or returns error\nfunc AddTask(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\ttaskObj := helpers.GetFromContext(r, \"task\").(db.Task)\n\n\ttpl, err := helpers.Store(r).GetTemplate(project.ID, taskObj.TemplateID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tnewTask, err := taskPool(r).AddTask(\n\t\ttaskObj,\n\t\t&user.ID,\n\t\tuser.Username,\n\t\tproject.ID,\n\t\ttpl.App.NeedTaskAlias(),\n\t)\n\n\tif errors.Is(err, common_errors.ErrInvalidSubscription) {\n\t\thelpers.WriteErrorStatus(w, \"No active subscription available.\", http.StatusForbidden)\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\n\t\t\t\"context\":     \"AddTask\",\n\t\t\t\"project_id\":  project.ID,\n\t\t\t\"template_id\": taskObj.TemplateID,\n\t\t\t\"user_id\":     user.ID,\n\t\t}).WithError(err).Error(\"Cannot add task\")\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, newTask)\n}\n\n// GetTasksList returns a list of tasks for the current project in desc order to limit or error\nfunc GetTasksList(w http.ResponseWriter, r *http.Request, limit int) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\ttpl := helpers.GetFromContext(r, \"template\")\n\n\tvar err error\n\tvar tasks []db.TaskWithTpl\n\n\tif tpl != nil {\n\t\ttasks, err = helpers.Store(r).GetTemplateTasks(tpl.(db.Template).ProjectID, tpl.(db.Template).ID, db.RetrieveQueryParams{\n\t\t\tCount: limit,\n\t\t})\n\t} else {\n\t\ttasks, err = helpers.Store(r).GetProjectTasks(project.ID, db.RetrieveQueryParams{\n\t\t\tCount: limit,\n\t\t})\n\t}\n\n\tif err != nil {\n\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get tasks list from database\"})\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, tasks)\n}\n\n// GetAllTasks returns all tasks for the current project\nfunc GetAllTasks(w http.ResponseWriter, r *http.Request) {\n\tGetTasksList(w, r, 1000)\n}\n\n// GetLastTasks returns the hundred most recent tasks\nfunc GetLastTasks(w http.ResponseWriter, r *http.Request) {\n\tstr := r.URL.Query().Get(\"limit\")\n\tlimit, err := strconv.Atoi(str)\n\tif err != nil || limit <= 0 || limit > 200 {\n\t\tlimit = 200\n\t}\n\tGetTasksList(w, r, limit)\n}\n\n// GetTask returns a task based on its id\nfunc GetTask(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\thelpers.WriteJSON(w, http.StatusOK, task)\n}\n\nfunc GetTaskPermissionsMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\t\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\n\t\tpermissions := helpers.GetFromContext(r, \"permissions\").(db.ProjectUserPermission)\n\n\t\tperm, err := helpers.Store(r).GetTemplatePermission(project.ID, task.TemplateID, user.ID)\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t}\n\n\t\tpermissions |= perm\n\n\t\tr = helpers.SetContextValue(r, \"permissions\", permissions)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\n// GetTaskMiddleware is middleware that gets a task by id and sets the context to it or panics\nfunc GetTaskMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\ttaskID, err := helpers.GetIntParam(\"task_id\", w, r)\n\n\t\tif err != nil {\n\t\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get task_id from request\"})\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\ttask, err := helpers.Store(r).GetTask(project.ID, taskID)\n\t\tif err != nil {\n\t\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get task from database\"})\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"task\", task)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\n// GetTaskMiddleware is middleware that gets a task by id and sets the context to it or panics\nfunc NewTaskMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\n\t\tvar taskObj db.Task\n\n\t\tif !helpers.Bind(w, r, &taskObj) {\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"task\", taskObj)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc (c *TaskController) GetAnsibleTaskHosts(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\thosts, err := c.ansibleTaskRepo.GetAnsibleTaskHosts(project.ID, task.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, hosts)\n}\n\nfunc (c *TaskController) GetAnsibleTaskErrors(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\thosts, err := c.ansibleTaskRepo.GetAnsibleTaskErrors(project.ID, task.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, hosts)\n}\n\n// GetTaskStages returns the logged task stages by id and writes it as json or returns error\nfunc GetTaskStages(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tstages, err := helpers.Store(r).GetTaskStages(project.ID, task.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tfor i := range stages {\n\t\tif stages[i].JSON == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tvar res any\n\t\terr = json.Unmarshal([]byte(stages[i].JSON), &res)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\t\tstages[i].Result = res\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, stages)\n}\n\n// GetTaskOutput returns the logged task output by id and writes it as json or returns error\nfunc GetTaskOutput(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar output []db.TaskOutput\n\toutput, err := helpers.Store(r).GetTaskOutputs(project.ID, task.ID, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get task output from database\"})\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, output)\n}\n\nfunc outputToBytes(lines []db.TaskOutput) []byte {\n\tvar buffer bytes.Buffer\n\tfor _, line := range lines {\n\t\toutput := util.ClearFromAnsiCodes(line.Output)\n\t\tbuffer.WriteString(output)\n\t\tbuffer.WriteByte('\\n')\n\t}\n\treturn buffer.Bytes()\n}\n\nfunc GetTaskRawOutput(w http.ResponseWriter, r *http.Request) {\n\ttask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tconst chunkSize = 10000\n\toffset := 0\n\n\teof := false\n\tfor !eof {\n\t\tvar output []db.TaskOutput\n\t\toutput, err := helpers.Store(r).GetTaskOutputs(project.ID, task.ID, db.RetrieveQueryParams{Offset: offset, Count: chunkSize})\n\n\t\tif err != nil {\n\t\t\tif offset == 0 {\n\t\t\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get task output from database\"})\n\t\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Cannot get task output from database\"})\n\t\t\treturn\n\t\t}\n\n\t\tif offset == 0 {\n\t\t\tw.Header().Set(\"content-type\", \"text/plain; charset=utf-8\")\n\t\t\tw.WriteHeader(http.StatusOK)\n\t\t}\n\n\t\treadSize := len(output)\n\n\t\tif readSize > 0 {\n\t\t\toffset += readSize\n\t\t\tdata := outputToBytes(output)\n\t\t\tif _, err := w.Write(data); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\teof = readSize < chunkSize\n\t}\n}\n\nfunc ConfirmTask(w http.ResponseWriter, r *http.Request) {\n\ttargetTask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tif targetTask.ProjectID != project.ID {\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\terr := taskPool(r).ConfirmTask(targetTask)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc RejectTask(w http.ResponseWriter, r *http.Request) {\n\ttargetTask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tif targetTask.ProjectID != project.ID {\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\terr := taskPool(r).RejectTask(targetTask)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc StopTask(w http.ResponseWriter, r *http.Request) {\n\ttargetTask := helpers.GetFromContext(r, \"task\").(db.Task)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tif targetTask.ProjectID != project.ID {\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tvar stopObj struct {\n\t\tForce bool `json:\"force\"`\n\t}\n\n\tif !helpers.Bind(w, r, &stopObj) {\n\t\treturn\n\t}\n\n\terr := taskPool(r).StopTask(targetTask, stopObj.Force)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveTask removes a task from the database\nfunc RemoveTask(w http.ResponseWriter, r *http.Request) {\n\ttargetTask := helpers.GetFromContext(r, \"task\").(db.Task)\n\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tactiveTask := taskPool(r).GetTask(targetTask.ID)\n\n\tif activeTask != nil {\n\t\t// can't delete task in queue or running\n\t\t// task must be stopped firstly\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif !editor.Admin {\n\t\tlog.Warn(editor.Username + \" is not permitted to delete task logs\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).DeleteTaskWithOutputs(project.ID, targetTask.ID)\n\tif err != nil {\n\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot delete task from database\"})\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc GetTaskStats(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar tplID *int\n\tif tpl := helpers.GetFromContext(r, \"template\"); tpl != nil {\n\t\tid := tpl.(db.Template).ID\n\t\ttplID = &id\n\t}\n\n\tfilter := db.TaskFilter{}\n\n\tif start := r.URL.Query().Get(\"start\"); start != \"\" {\n\t\td, err := time.Parse(\"2006-01-02\", start)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, \"Invalid start date\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t\tfilter.Start = &d\n\t}\n\n\tif end := r.URL.Query().Get(\"end\"); end != \"\" {\n\t\td, err := time.Parse(\"2006-01-02\", end)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, \"Invalid end date\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t\tfilter.End = &d\n\t}\n\n\tif userId := r.URL.Query().Get(\"user_id\"); userId != \"\" {\n\t\tu, err := strconv.Atoi(userId)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, \"Invalid user_id\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t\tfilter.UserID = &u\n\t}\n\n\tstats, err := helpers.Store(r).GetTaskStats(project.ID, tplID, db.TaskStatUnitDay, filter)\n\tif err != nil {\n\t\tutil.LogErrorF(err, log.Fields{\"error\": \"Bad request. Cannot get task stats from database\"})\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, stats)\n}\n\nfunc (c *TaskController) StopAllTasks(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\tvar stopObj struct {\n\t\tForce bool `json:\"force\"`\n\t}\n\n\t// optional body; ignore bind error and default Force=false\n\tif ok := helpers.Bind(w, r, &stopObj); !ok {\n\t\thelpers.WriteErrorStatus(w, \"Not allowed\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\ttaskPool(r).StopTasksByTemplate(project.ID, tpl.ID, stopObj.Force)\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/templates.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\n// TemplatesMiddleware ensures a template exists and loads it to the context\nfunc TemplatesMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\ttemplateID, err := helpers.GetIntParam(\"template_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\ttemplate, err := helpers.Store(r).GetTemplate(project.ID, templateID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"template\", template)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\ntype TemplateController struct {\n\ttemplateRepo db.TemplateManager\n\troleRepo     db.RoleRepository\n}\n\nfunc NewTemplateController(\n\ttemplateRepo db.TemplateManager,\n\troleRepo db.RoleRepository,\n) *TemplateController {\n\treturn &TemplateController{\n\t\ttemplateRepo: templateRepo,\n\t\troleRepo:     roleRepo,\n\t}\n}\n\n// GetTemplate returns single template by ID\nfunc GetTemplate(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\tpermissions := helpers.GetFromContext(r, \"permissions\").(db.ProjectUserPermission)\n\tres := db.TemplateWithPerms{\n\t\tTemplate:    template,\n\t\tPermissions: &permissions,\n\t}\n\thelpers.WriteJSON(w, http.StatusOK, res)\n}\n\nfunc GetTemplateRefs(w http.ResponseWriter, r *http.Request) {\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\trefs, err := helpers.Store(r).GetTemplateRefs(tpl.ProjectID, tpl.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, refs)\n}\n\n// GetTemplates returns all templates for a project in a sort order\nfunc GetTemplates(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tuser := helpers.UserFromContext(r)\n\tfilter := db.TemplateFilter{}\n\tif r.URL.Query().Get(\"app\") != \"\" {\n\t\tapp := db.TemplateApp(r.URL.Query().Get(\"app\"))\n\t\tfilter.App = &app\n\t}\n\ttemplates, err := helpers.Store(r).GetTemplatesWithPermissions(project.ID, user.ID, filter, helpers.QueryParams(r.URL))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, templates)\n}\n\n// AddTemplate adds a template to the database\nfunc AddTemplate(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tvar template db.Template\n\tif !helpers.Bind(w, r, &template) {\n\t\treturn\n\t}\n\n\tvar err error\n\n\ttemplate.ProjectID = project.ID\n\tnewTemplate, err := helpers.Store(r).CreateTemplate(template)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif _, ok := util.Config.Apps[string(newTemplate.App)]; !ok {\n\t\thelpers.WriteErrorStatus(w, \"Invalid app id: \"+string(newTemplate.App), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\t// Check workspace and create it if required.\n\tif newTemplate.App.IsTerraform() {\n\t\tvar inv db.Inventory\n\n\t\tif newTemplate.InventoryID == nil {\n\t\t\tvar inventoryType db.InventoryType\n\n\t\t\tif invTypes := newTemplate.App.InventoryTypes(); len(invTypes) > 0 {\n\t\t\t\tinventoryType = invTypes[0]\n\t\t\t} else {\n\t\t\t\thelpers.WriteErrorStatus(w, \"Inventory type is not supported for this template\", http.StatusBadRequest)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tinv, err = helpers.Store(r).CreateInventory(db.Inventory{\n\t\t\t\tName:       \"default\",\n\t\t\t\tProjectID:  project.ID,\n\t\t\t\tTemplateID: &newTemplate.ID,\n\t\t\t\tType:       inventoryType,\n\t\t\t\tInventory:  \"default\",\n\t\t\t})\n\n\t\t\tif err != nil {\n\t\t\t\thelpers.WriteError(w, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tnewTemplate.InventoryID = &inv.ID\n\t\t\terr = helpers.Store(r).UpdateTemplate(newTemplate)\n\n\t\t} else {\n\t\t\tinv, err = helpers.Store(r).GetInventory(project.ID, *newTemplate.InventoryID)\n\t\t\tif err != nil {\n\t\t\t\thelpers.WriteError(w, err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tinv.TemplateID = &newTemplate.ID\n\t\t\terr = helpers.Store(r).UpdateInventory(inv)\n\t\t}\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventSchedule,\n\t\tObjectID:    newTemplate.ID,\n\t\tDescription: fmt.Sprintf(\"Template ID %d created\", newTemplate.ID),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, newTemplate)\n}\n\nfunc UpdateTemplateDescription(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\tvar tpl struct {\n\t\tDescription string `json:\"description\"`\n\t}\n\n\tif !helpers.Bind(w, r, &tpl) {\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).SetTemplateDescription(template.ProjectID, template.ID, tpl.Description)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   template.ProjectID,\n\t\tObjectType:  db.EventTemplate,\n\t\tObjectID:    template.ID,\n\t\tDescription: fmt.Sprintf(\"Template ID %d description updated\", template.ID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// UpdateTemplate writes a template to an existing key in the database\nfunc UpdateTemplate(w http.ResponseWriter, r *http.Request) {\n\toldTemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\tvar template db.Template\n\tif !helpers.Bind(w, r, &template) {\n\t\treturn\n\t}\n\n\tif _, ok := util.Config.Apps[string(template.App)]; !ok {\n\t\thelpers.WriteErrorStatus(w, \"Invalid app id: \"+string(template.App), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\t// project ID and template ID in the body and the path must be the same\n\n\tif template.ID != oldTemplate.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"template id in URL and in body must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif template.ProjectID != oldTemplate.ProjectID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"You can not move template to other project\",\n\t\t})\n\t\treturn\n\t}\n\n\tif template.Arguments != nil && *template.Arguments == \"\" {\n\t\ttemplate.Arguments = nil\n\t}\n\n\tif template.Type != db.TemplateDeploy {\n\t\ttemplate.BuildTemplateID = nil\n\t}\n\n\tif template.Type != db.TemplateBuild {\n\t\ttemplate.StartVersion = nil\n\t}\n\n\terr := helpers.Store(r).UpdateTemplate(template)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldTemplate.ProjectID,\n\t\tObjectType:  db.EventTemplate,\n\t\tObjectID:    oldTemplate.ID,\n\t\tDescription: fmt.Sprintf(\"Template ID %d updated\", template.ID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveTemplate deletes a template from the database\nfunc RemoveTemplate(w http.ResponseWriter, r *http.Request) {\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\terr := helpers.Store(r).DeleteTemplate(tpl.ProjectID, tpl.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   tpl.ProjectID,\n\t\tObjectType:  db.EventTemplate,\n\t\tObjectID:    tpl.ID,\n\t\tDescription: fmt.Sprintf(\"Template ID %d deleted\", tpl.ID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc SetTemplateInventory(w http.ResponseWriter, r *http.Request) {\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\tinv := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\n\tif !tpl.App.HasInventoryType(inv.Type) {\n\t\thelpers.WriteErrorStatus(w, \"Inventory type is not supported for this template\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif tpl.App.IsTerraform() && (inv.TemplateID == nil || *inv.TemplateID != tpl.ID) {\n\t\thelpers.WriteErrorStatus(w, \"Inventory is not attached to this template\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\ttpl.InventoryID = &inv.ID\n\terr := helpers.Store(r).UpdateTemplate(tpl)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc AttachInventory(w http.ResponseWriter, r *http.Request) {\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\tinv := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\n\tif inv.TemplateID != nil {\n\t\thelpers.WriteErrorStatus(w, \"Inventory is already attached to another template\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif !tpl.App.HasInventoryType(inv.Type) {\n\t\thelpers.WriteErrorStatus(w, \"Inventory type is not supported for this template\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tinv.TemplateID = &tpl.ID\n\terr := helpers.Store(r).UpdateInventory(inv)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc DetachInventory(w http.ResponseWriter, r *http.Request) {\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\tinv := helpers.GetFromContext(r, \"inventory\").(db.Inventory)\n\n\tif inv.TemplateID == nil || *inv.TemplateID != tpl.ID {\n\t\thelpers.WriteErrorStatus(w, \"Inventory is not attached to this template\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tinv.TemplateID = nil\n\terr := helpers.Store(r).UpdateInventory(inv)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc (c *TemplateController) GetTemplatePerms(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\ttpl := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\tperms, err := helpers.Store(r).GetTemplateRoles(project.ID, tpl.ID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, perms)\n}\n\nfunc (c *TemplateController) AddTemplatePerm(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\n\tvar perm db.TemplateRolePerm\n\tif !helpers.Bind(w, r, &perm) {\n\t\treturn\n\t}\n\n\tperm.ProjectID = template.ProjectID\n\tperm.TemplateID = template.ID\n\n\tnewPerm, err := c.templateRepo.CreateTemplateRole(perm)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, newPerm)\n}\n\nfunc (c *TemplateController) UpdateTemplatePerm(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\tpermID, err := helpers.GetIntParam(\"perm_id\", w, r)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar perm db.TemplateRolePerm\n\tif !helpers.Bind(w, r, &perm) {\n\t\treturn\n\t}\n\n\tperm.ID = permID\n\tperm.ProjectID = template.ProjectID\n\tperm.TemplateID = template.ID\n\n\terr = c.templateRepo.UpdateTemplateRole(perm)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc (c *TemplateController) DeleteTemplatePerm(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\tpermID, err := helpers.GetIntParam(\"perm_id\", w, r)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = c.templateRepo.DeleteTemplateRole(template.ProjectID, template.ID, permID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc (c *TemplateController) GetTemplatePerm(w http.ResponseWriter, r *http.Request) {\n\ttemplate := helpers.GetFromContext(r, \"template\").(db.Template)\n\tpermID, err := helpers.GetIntParam(\"perm_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tperm, err := c.templateRepo.GetTemplateRole(template.ProjectID, template.ID, permID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, perm)\n}\n"
  },
  {
    "path": "api/projects/users.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\n// UserMiddleware ensures a user exists and loads it to the context\nfunc UserMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tuserID, err := helpers.GetIntParam(\"user_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\t_, err = helpers.Store(r).GetProjectUser(project.ID, userID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tuser, err := helpers.Store(r).GetUser(userID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"projectUser\", user)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\ntype projUser struct {\n\tID       int                `json:\"id\"`\n\tUsername string             `json:\"username\"`\n\tName     string             `json:\"name\"`\n\tRole     db.ProjectUserRole `json:\"role\"`\n}\n\n// GetUsers returns all users in a project\nfunc GetUsers(w http.ResponseWriter, r *http.Request) {\n\n\t// get single user if user ID specified in the request\n\tif user := helpers.GetFromContext(r, \"projectUser\"); user != nil {\n\t\thelpers.WriteJSON(w, http.StatusOK, user.(db.User))\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tusers, err := helpers.Store(r).GetProjectUsers(project.ID, helpers.QueryParams(r.URL))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tvar result = make([]projUser, 0)\n\n\tfor _, user := range users {\n\t\tresult = append(result, projUser{\n\t\t\tID:       user.ID,\n\t\t\tName:     user.Name,\n\t\t\tUsername: user.Username,\n\t\t\tRole:     user.Role,\n\t\t})\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, result)\n}\n\n// AddUser adds a user to a projects team in the database\nfunc AddUser(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar projectUser struct {\n\t\tUserID int                `json:\"user_id\" binding:\"required\"`\n\t\tRole   db.ProjectUserRole `json:\"role\"`\n\t}\n\n\tif !helpers.Bind(w, r, &projectUser) {\n\t\treturn\n\t}\n\n\tif !projectUser.Role.IsValid() {\n\t\t_, err := helpers.Store(r).GetProjectOrGlobalRoleBySlug(project.ID, string(projectUser.Role))\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t}\n\n\t_, err := helpers.Store(r).CreateProjectUser(db.ProjectUser{\n\t\tProjectID: project.ID,\n\t\tUserID:    projectUser.UserID,\n\t\tRole:      projectUser.Role,\n\t})\n\n\tif err != nil {\n\t\tw.WriteHeader(http.StatusConflict)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventUser,\n\t\tObjectID:    projectUser.UserID,\n\t\tDescription: fmt.Sprintf(\"User ID %d added to team\", projectUser.UserID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// removeUser removes a user from a project team\nfunc removeUser(targetUser db.User, w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tme := helpers.GetFromContext(r, \"user\").(*db.User) // logged in user\n\tmyRole := helpers.GetFromContext(r, \"projectUserRole\").(db.ProjectUserRole)\n\n\tif !me.Admin && targetUser.ID == me.ID && myRole == db.ProjectOwner {\n\t\thelpers.WriteError(w, fmt.Errorf(\"owner can not left the project\"))\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).DeleteProjectUser(project.ID, targetUser.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventUser,\n\t\tObjectID:    targetUser.ID,\n\t\tDescription: fmt.Sprintf(\"User ID %d removed from team\", targetUser.ID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// LeftProject removes a user from a project team\nfunc LeftProject(w http.ResponseWriter, r *http.Request) {\n\tme := helpers.GetFromContext(r, \"user\").(*db.User) // logged in user\n\tremoveUser(*me, w, r)\n}\n\n// RemoveUser removes a user from a project team\nfunc RemoveUser(w http.ResponseWriter, r *http.Request) {\n\ttargetUser := helpers.GetFromContext(r, \"projectUser\").(db.User) // target user\n\tremoveUser(targetUser, w, r)\n}\n\nfunc UpdateUser(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tme := helpers.GetFromContext(r, \"user\").(*db.User) // logged in user\n\ttargetUser := helpers.GetFromContext(r, \"projectUser\").(db.User)\n\ttargetUserRole := helpers.GetFromContext(r, \"projectUserRole\").(db.ProjectUserRole)\n\n\tif !me.Admin && targetUser.ID == me.ID && targetUserRole == db.ProjectOwner {\n\t\thelpers.WriteError(w, fmt.Errorf(\"owner can not change his role in the project\"))\n\t\treturn\n\t}\n\n\tvar projectUser struct {\n\t\tRole db.ProjectUserRole `json:\"role\"`\n\t}\n\n\tif !helpers.Bind(w, r, &projectUser) {\n\t\treturn\n\t}\n\n\tif !projectUser.Role.IsValid() {\n\t\t_, err := helpers.Store(r).GetProjectOrGlobalRoleBySlug(project.ID, string(projectUser.Role))\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\t}\n\n\terr := helpers.Store(r).UpdateProjectUser(db.ProjectUser{\n\t\tUserID:    targetUser.ID,\n\t\tProjectID: project.ID,\n\t\tRole:      projectUser.Role,\n\t})\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   project.ID,\n\t\tObjectType:  db.EventUser,\n\t\tObjectID:    targetUser.ID,\n\t\tDescription: fmt.Sprintf(\"Changed role for User ID %d\", targetUser.ID),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/projects/views.go",
    "content": "package projects\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\n// ViewMiddleware ensures a key exists and loads it to the context\nfunc ViewMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\t\tviewID, err := helpers.GetIntParam(\"view_id\", w, r)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tview, err := helpers.Store(r).GetView(project.ID, viewID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"view\", view)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc GetViewTemplates(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tview := helpers.GetFromContext(r, \"view\").(db.View)\n\tuser := helpers.UserFromContext(r)\n\n\ttemplates, err := helpers.Store(r).GetTemplatesWithPermissions(project.ID, user.ID, db.TemplateFilter{ViewID: &view.ID}, helpers.QueryParams(r.URL))\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, templates)\n}\n\n// GetViews retrieves sorted keys from the database\nfunc GetViews(w http.ResponseWriter, r *http.Request) {\n\tif view := helpers.GetFromContext(r, \"view\"); view != nil {\n\t\tk := view.(db.View)\n\t\thelpers.WriteJSON(w, http.StatusOK, k)\n\t\treturn\n\t}\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar views []db.View\n\n\tviews, err := helpers.Store(r).GetViews(project.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, views)\n}\n\n// AddView adds a new key to the database\nfunc AddView(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\tvar view db.View\n\n\tif !helpers.Bind(w, r, &view) {\n\t\treturn\n\t}\n\n\tif view.ProjectID != project.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Project ID in body and URL must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif err := view.Validate(); err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": err.Error(),\n\t\t})\n\t\treturn\n\t}\n\n\tnewView, err := helpers.Store(r).CreateView(view)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogCreate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   newView.ProjectID,\n\t\tObjectType:  db.EventView,\n\t\tObjectID:    newView.ID,\n\t\tDescription: fmt.Sprintf(\"View %s created\", view.Title),\n\t})\n\n\thelpers.WriteJSON(w, http.StatusCreated, newView)\n}\n\nfunc SetViewPositions(w http.ResponseWriter, r *http.Request) {\n\tvar positions map[int]int\n\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\n\tif !helpers.Bind(w, r, &positions) {\n\t\treturn\n\t}\n\n\terr := helpers.Store(r).SetViewPositions(project.ID, positions)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// UpdateView updates key in database\n// nolint: gocyclo\nfunc UpdateView(w http.ResponseWriter, r *http.Request) {\n\tvar view db.View\n\toldView := helpers.GetFromContext(r, \"view\").(db.View)\n\n\tif !helpers.Bind(w, r, &view) {\n\t\treturn\n\t}\n\n\tif view.ID != oldView.ID {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"View ID in URL and in body must be the same\",\n\t\t})\n\t\treturn\n\t}\n\n\tif err := view.Validate(); err != nil {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": err.Error(),\n\t\t})\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).UpdateView(view); err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogUpdate, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   oldView.ProjectID,\n\t\tObjectType:  db.EventView,\n\t\tObjectID:    oldView.ID,\n\t\tDescription: fmt.Sprintf(\"View %s updated\", view.Title),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\n// RemoveView deletes a view from the database\nfunc RemoveView(w http.ResponseWriter, r *http.Request) {\n\tview := helpers.GetFromContext(r, \"view\").(db.View)\n\n\terr := helpers.Store(r).DeleteView(view.ProjectID, view.ID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\thelpers.EventLog(r, helpers.EventLogDelete, helpers.EventLogItem{\n\t\tUserID:      helpers.UserFromContext(r).ID,\n\t\tProjectID:   view.ProjectID,\n\t\tObjectType:  db.EventView,\n\t\tObjectID:    view.ID,\n\t\tDescription: fmt.Sprintf(\"View %s deleted\", view.Title),\n\t})\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/router.go",
    "content": "package api\n\nimport (\n\t\"bytes\"\n\t\"embed\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\n\tproApi \"github.com/semaphoreui/semaphore/pro/api\"\n\tproProjects \"github.com/semaphoreui/semaphore/pro/api/projects\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\ttaskServices \"github.com/semaphoreui/semaphore/services/tasks\"\n\n\t\"github.com/semaphoreui/semaphore/api/debug\"\n\t\"github.com/semaphoreui/semaphore/api/tasks\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/api/runners\"\n\n\t\"github.com/gorilla/mux\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/api/projects\"\n\t\"github.com/semaphoreui/semaphore/api/sockets\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nvar startTime = tz.Now()\n\n//go:embed public/*\nvar publicAssets embed.FS\n\n// StoreMiddleware WTF?\nfunc StoreMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tstore := helpers.Store(r)\n\t\t//var url = r.URL.String()\n\n\t\tdb.StoreSession(store, util.RandString(12), func() {\n\t\t\tnext.ServeHTTP(w, r)\n\t\t})\n\t})\n}\n\n// JSONMiddleware ensures that all the routes respond with Json, this is added by default to all routes\nfunc JSONMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tw.Header().Set(\"content-type\", \"application/json\")\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\n// plainTextMiddleware resets headers to Plain Text if needed\nfunc plainTextMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tw.Header().Set(\"content-type\", \"text/plain; charset=utf-8\")\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc pongHandler(w http.ResponseWriter, r *http.Request) {\n\t//nolint: errcheck\n\tw.Write([]byte(\"pong\"))\n}\n\n// DelayMiddleware adds artificial delay to simulate slow network conditions\nfunc DelayMiddleware(delay time.Duration) func(http.Handler) http.Handler {\n\treturn func(next http.Handler) http.Handler {\n\t\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\ttime.Sleep(delay)\n\t\t\tnext.ServeHTTP(w, r)\n\t\t})\n\t}\n}\n\n// Route declares all routes\nfunc Route(\n\tstore db.Store,\n\tterraformStore db.TerraformStore,\n\tansibleTaskRepo db.AnsibleTaskRepository,\n\ttaskPool *taskServices.TaskPool,\n\tprojectService server.ProjectService,\n\tintegrationService server.IntegrationService,\n\tencryptionService server.AccessKeyEncryptionService,\n\taccessKeyInstallationService server.AccessKeyInstallationService,\n\tsecretStorageService server.SecretStorageService,\n\taccessKeyService server.AccessKeyService,\n\tenvironmentService server.EnvironmentService,\n\tsubscriptionService pro_interfaces.SubscriptionService,\n) *mux.Router {\n\n\tprojectController := &projects.ProjectController{ProjectService: projectService}\n\trunnerController := runners.NewRunnerController(store, taskPool, encryptionService)\n\tintegrationController := NewIntegrationController(integrationService)\n\tenvironmentController := projects.NewEnvironmentController(store, encryptionService, accessKeyService, environmentService)\n\tsecretStorageController := projects.NewSecretStorageController(store, secretStorageService)\n\trepositoryController := projects.NewRepositoryController(accessKeyInstallationService)\n\tkeyController := projects.NewKeyController(accessKeyService)\n\tprojectsController := projects.NewProjectsController(accessKeyService)\n\tterraformController := proApi.NewTerraformController(encryptionService, terraformStore, store)\n\tterraformInventoryController := proProjects.NewTerraformInventoryController(terraformStore)\n\tuserController := NewUserController(subscriptionService)\n\tusersController := NewUsersController(subscriptionService)\n\tsubscriptionController := proApi.NewSubscriptionController(store, store, store, terraformStore)\n\tprojectRunnerController := proProjects.NewProjectRunnerController(subscriptionService)\n\ttaskController := projects.NewTaskController(ansibleTaskRepo)\n\trolesController := proApi.NewRolesController(store)\n\ttemplateController := projects.NewTemplateController(store, store)\n\tsystemInfoController := NewSystemInfoController(subscriptionService)\n\n\tr := mux.NewRouter()\n\tr.NotFoundHandler = http.HandlerFunc(servePublic)\n\n\tif util.Config.Debugging.ApiDelay != \"\" {\n\t\tdelay, err := time.ParseDuration(util.Config.Debugging.ApiDelay)\n\t\tif err != nil {\n\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\"context\": \"debugging\",\n\t\t\t}).Panic(\"Invalid API delay format\")\n\t\t}\n\t\tr.Use(DelayMiddleware(delay))\n\t}\n\n\twebPath := \"/\"\n\tif util.WebHostURL != nil {\n\t\twebPath = util.WebHostURL.Path\n\t\tif !strings.HasSuffix(webPath, \"/\") {\n\t\t\twebPath += \"/\"\n\t\t}\n\t}\n\n\tr.Use(mux.CORSMethodMiddleware(r))\n\n\tpingRouter := r.Path(webPath + \"api/ping\").Subrouter()\n\tpingRouter.Use(plainTextMiddleware)\n\tpingRouter.Methods(\"GET\", \"HEAD\").HandlerFunc(pongHandler)\n\n\tpublicAPIRouter := r.PathPrefix(webPath + \"api\").Subrouter()\n\tpublicAPIRouter.Use(StoreMiddleware, JSONMiddleware)\n\n\tpublicAPIRouter.HandleFunc(\"/auth/login\", login).Methods(\"GET\", \"POST\")\n\tpublicAPIRouter.HandleFunc(\"/auth/verify\", verifySession).Methods(\"POST\")\n\tpublicAPIRouter.HandleFunc(\"/auth/recovery\", recoverySession).Methods(\"POST\")\n\n\tpublicAPIRouter.HandleFunc(\"/auth/logout\", logout).Methods(\"POST\")\n\tpublicAPIRouter.HandleFunc(\"/auth/oidc/{provider}/login\", oidcLogin).Methods(\"GET\")\n\tpublicAPIRouter.HandleFunc(\"/auth/oidc/{provider}/redirect\", oidcRedirect).Methods(\"GET\")\n\tpublicAPIRouter.HandleFunc(\"/auth/oidc/{provider}/redirect/{redirect_path:.*}\", oidcRedirect).Methods(\"GET\")\n\n\tinternalAPI := publicAPIRouter.PathPrefix(\"/internal\").Subrouter()\n\tinternalAPI.HandleFunc(\"/runners\", runners.RegisterRunner).Methods(\"POST\")\n\n\trunnersAPI := internalAPI.PathPrefix(\"/runners\").Subrouter()\n\trunnersAPI.Use(runners.RunnerMiddleware)\n\trunnersAPI.Path(\"\").HandlerFunc(runnerController.GetRunner).Methods(\"GET\", \"HEAD\")\n\trunnersAPI.Path(\"\").HandlerFunc(runnerController.UpdateRunner).Methods(\"PUT\")\n\trunnersAPI.Path(\"\").HandlerFunc(runners.UnregisterRunner).Methods(\"DELETE\")\n\n\tpublicWebHookRouter := r.PathPrefix(webPath + \"api\").Subrouter()\n\tpublicWebHookRouter.Use(StoreMiddleware, JSONMiddleware)\n\tpublicWebHookRouter.Path(\"/integrations/{integration_alias}\").HandlerFunc(\n\t\tintegrationController.ReceiveIntegration).Methods(\"POST\", \"GET\", \"OPTIONS\")\n\n\tterraformWebhookRouter := publicWebHookRouter.PathPrefix(\"/terraform\").Subrouter()\n\tterraformWebhookRouter.Use(terraformController.TerraformInventoryAliasMiddleware)\n\tterraformWebhookRouter.Path(\"/{alias}\").HandlerFunc(terraformController.GetTerraformState).Methods(\"GET\")\n\tterraformWebhookRouter.Path(\"/{alias}\").HandlerFunc(terraformController.AddTerraformState).Methods(\"POST\")\n\tterraformWebhookRouter.Path(\"/{alias}\").HandlerFunc(terraformController.LockTerraformState).Methods(\"LOCK\")\n\tterraformWebhookRouter.Path(\"/{alias}\").HandlerFunc(terraformController.UnlockTerraformState).Methods(\"UNLOCK\")\n\n\tauthenticatedWS := r.PathPrefix(webPath + \"api\").Subrouter()\n\tauthenticatedWS.Use(JSONMiddleware, authenticationWithStore)\n\tauthenticatedWS.Path(\"/ws\").HandlerFunc(sockets.Handler).Methods(\"GET\", \"HEAD\")\n\n\tauthenticatedAPI := r.PathPrefix(webPath + \"api\").Subrouter()\n\tauthenticatedAPI.Use(StoreMiddleware, JSONMiddleware, authentication)\n\n\tauthenticatedAPI.Path(\"/info\").HandlerFunc(systemInfoController.GetSystemInfo).Methods(\"GET\", \"HEAD\")\n\n\tauthenticatedAPI.Path(\"/subscription\").HandlerFunc(subscriptionController.Activate).Methods(\"POST\")\n\tauthenticatedAPI.Path(\"/subscription/refresh\").HandlerFunc(subscriptionController.Refresh).Methods(\"POST\")\n\tauthenticatedAPI.Path(\"/subscription\").HandlerFunc(subscriptionController.GetSubscription).Methods(\"GET\")\n\tauthenticatedAPI.Path(\"/subscription\").HandlerFunc(subscriptionController.Delete).Methods(\"DELETE\")\n\n\tauthenticatedAPI.Path(\"/projects\").HandlerFunc(projects.GetProjects).Methods(\"GET\", \"HEAD\")\n\tauthenticatedAPI.Path(\"/projects\").HandlerFunc(projectsController.AddProject).Methods(\"POST\")\n\tauthenticatedAPI.Path(\"/projects/restore\").HandlerFunc(projects.Restore).Methods(\"POST\")\n\tauthenticatedAPI.Path(\"/events\").HandlerFunc(getAllEvents).Methods(\"GET\", \"HEAD\")\n\tauthenticatedAPI.HandleFunc(\"/events/last\", getLastEvents).Methods(\"GET\", \"HEAD\")\n\n\tauthenticatedAPI.Path(\"/users\").HandlerFunc(usersController.GetUsers).Methods(\"GET\", \"HEAD\")\n\tauthenticatedAPI.Path(\"/users\").HandlerFunc(usersController.AddUser).Methods(\"POST\")\n\tauthenticatedAPI.Path(\"/user\").HandlerFunc(userController.GetUser).Methods(\"GET\", \"HEAD\")\n\n\tauthenticatedAPI.Path(\"/apps\").HandlerFunc(getApps).Methods(\"GET\", \"HEAD\")\n\n\ttokenAPI := authenticatedAPI.PathPrefix(\"/user\").Subrouter()\n\ttokenAPI.Path(\"/tokens\").HandlerFunc(getAPITokens).Methods(\"GET\", \"HEAD\")\n\ttokenAPI.Path(\"/tokens\").HandlerFunc(createAPIToken).Methods(\"POST\")\n\ttokenAPI.HandleFunc(\"/tokens/{token_id}\", deleteAPIToken).Methods(\"DELETE\")\n\n\tadminAPI := authenticatedAPI.NewRoute().Subrouter()\n\tadminAPI.Use(adminMiddleware)\n\tadminAPI.Path(\"/options\").HandlerFunc(getOptions).Methods(\"GET\", \"HEAD\")\n\tadminAPI.Path(\"/options\").HandlerFunc(setOption).Methods(\"POST\")\n\n\tadminAPI.Path(\"/runners\").HandlerFunc(getAllRunners).Methods(\"GET\", \"HEAD\")\n\tadminAPI.Path(\"/runners\").HandlerFunc(addGlobalRunner).Methods(\"POST\", \"HEAD\")\n\n\tadminAPI.Path(\"/roles\").HandlerFunc(rolesController.GetRoles).Methods(\"GET\", \"HEAD\")\n\tadminAPI.Path(\"/roles\").HandlerFunc(rolesController.AddRole).Methods(\"POST\", \"HEAD\")\n\n\tadminAPI.Path(\"/cache\").HandlerFunc(clearCache).Methods(\"DELETE\", \"HEAD\")\n\n\tdebugAPI := adminAPI.PathPrefix(\"/debug\").Subrouter()\n\tdebugAPI.Path(\"/gc\").HandlerFunc(debug.GC).Methods(\"POST\")\n\tdebugAPI.Path(\"/pprof/dump\").HandlerFunc(debug.Dump).Methods(\"POST\")\n\n\tglobalRunnersAPI := adminAPI.PathPrefix(\"/runners\").Subrouter()\n\tglobalRunnersAPI.Use(globalRunnerMiddleware)\n\tglobalRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(getGlobalRunner).Methods(\"GET\", \"HEAD\")\n\tglobalRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(updateGlobalRunner).Methods(\"PUT\", \"POST\")\n\tglobalRunnersAPI.Path(\"/{runner_id}/active\").HandlerFunc(setGlobalRunnerActive).Methods(\"POST\")\n\tglobalRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(deleteGlobalRunner).Methods(\"DELETE\")\n\tglobalRunnersAPI.Path(\"/{runner_id}/cache\").HandlerFunc(clearGlobalRunnerCache).Methods(\"DELETE\")\n\n\trolesAPI := adminAPI.PathPrefix(\"/roles\").Subrouter()\n\trolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.GetGlobalRole).Methods(\"GET\", \"HEAD\")\n\trolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.UpdateRole).Methods(\"PUT\", \"POST\")\n\trolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.DeleteRole).Methods(\"DELETE\")\n\n\tappsAPI := adminAPI.PathPrefix(\"/apps\").Subrouter()\n\tappsAPI.Use(appMiddleware)\n\tappsAPI.Path(\"/{app_id}\").HandlerFunc(getApp).Methods(\"GET\", \"HEAD\")\n\tappsAPI.Path(\"/{app_id}\").HandlerFunc(setApp).Methods(\"PUT\", \"POST\")\n\tappsAPI.Path(\"/{app_id}/active\").HandlerFunc(setAppActive).Methods(\"POST\")\n\tappsAPI.Path(\"/{app_id}\").HandlerFunc(deleteApp).Methods(\"DELETE\")\n\n\tadminAPI.Path(\"/tasks\").HandlerFunc(tasks.GetTasks).Methods(\"GET\", \"HEAD\")\n\ttasksAPI := adminAPI.PathPrefix(\"/tasks\").Subrouter()\n\ttasksAPI.Use(tasks.TaskMiddleware)\n\ttasksAPI.Path(\"/{task_id}\").HandlerFunc(tasks.GetTasks).Methods(\"GET\", \"HEAD\")\n\ttasksAPI.Path(\"/{task_id}\").HandlerFunc(tasks.DeleteTask).Methods(\"DELETE\")\n\n\tuserUserAPI := authenticatedAPI.Path(\"/users/{user_id}\").Subrouter()\n\tuserUserAPI.Use(readonlyUserMiddleware)\n\tuserUserAPI.Methods(\"GET\", \"HEAD\").HandlerFunc(userController.GetUser)\n\n\tuserAPI := authenticatedAPI.Path(\"/users/{user_id}\").Subrouter()\n\tuserAPI.Use(getUserMiddleware)\n\n\tuserAPI.Methods(\"PUT\").HandlerFunc(usersController.UpdateUser)\n\tuserAPI.Methods(\"DELETE\").HandlerFunc(deleteUser)\n\n\tuserPasswordAPI := authenticatedAPI.PathPrefix(\"/users/{user_id}\").Subrouter()\n\tuserPasswordAPI.Use(getUserMiddleware)\n\tuserPasswordAPI.Path(\"/password\").HandlerFunc(updateUserPassword).Methods(\"POST\")\n\tuserPasswordAPI.Path(\"/2fas/totp\").HandlerFunc(enableTotp).Methods(\"POST\")\n\tuserPasswordAPI.Path(\"/2fas/totp/{totp_id}/qr\").HandlerFunc(totpQr).Methods(\"GET\")\n\tuserPasswordAPI.Path(\"/2fas/totp/{totp_id}\").HandlerFunc(disableTotp).Methods(\"DELETE\")\n\n\tprojectGet := authenticatedAPI.Path(\"/project/{project_id}\").Subrouter()\n\tprojectGet.Use(projects.ProjectMiddleware)\n\tprojectGet.Methods(\"GET\", \"HEAD\").HandlerFunc(projects.GetProject)\n\n\t//\n\t// Start and Stop tasks\n\tprojectTaskStart := authenticatedAPI.PathPrefix(\"/project/{project_id}\").Subrouter()\n\tprojectTaskStart.Use(projects.ProjectMiddleware, projects.NewTaskMiddleware, projects.GetTaskPermissionsMiddleware, projects.GetMustCanMiddleware(db.CanRunProjectTasks))\n\tprojectTaskStart.Path(\"/tasks\").HandlerFunc(projects.AddTask).Methods(\"POST\")\n\n\tprojectTaskStop := authenticatedAPI.PathPrefix(\"/project/{project_id}\").Subrouter()\n\tprojectTaskStop.Use(projects.ProjectMiddleware, projects.GetTaskMiddleware, projects.GetTaskPermissionsMiddleware, projects.GetMustCanMiddleware(db.CanRunProjectTasks))\n\tprojectTaskStop.HandleFunc(\"/tasks/{task_id}/stop\", projects.StopTask).Methods(\"POST\")\n\tprojectTaskStop.HandleFunc(\"/tasks/{task_id}/confirm\", projects.ConfirmTask).Methods(\"POST\")\n\tprojectTaskStop.HandleFunc(\"/tasks/{task_id}/reject\", projects.RejectTask).Methods(\"POST\")\n\n\t//\n\t// Project resources CRUD\n\tprojectUserAPI := authenticatedAPI.PathPrefix(\"/project/{project_id}\").Subrouter()\n\tprojectUserAPI.Use(projects.ProjectMiddleware, projects.GetMustCanMiddleware(db.CanManageProjectResources))\n\n\tprojectUserAPI.Path(\"/role\").HandlerFunc(projects.GetUserRole).Methods(\"GET\", \"HEAD\")\n\n\tprojectUserAPI.Path(\"/events\").HandlerFunc(getAllEvents).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.HandleFunc(\"/events/last\", getLastEvents).Methods(\"GET\", \"HEAD\")\n\n\tprojectUserAPI.Path(\"/users\").HandlerFunc(projects.GetUsers).Methods(\"GET\", \"HEAD\")\n\n\tprojectUserAPI.Path(\"/keys\").HandlerFunc(projects.GetKeys).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/keys\").HandlerFunc(keyController.AddKey).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/secret_storages\").HandlerFunc(secretStorageController.GetSecretStorages).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/secret_storages\").HandlerFunc(secretStorageController.Add).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/repositories\").HandlerFunc(projects.GetRepositories).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/repositories\").HandlerFunc(projects.AddRepository).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/inventory\").HandlerFunc(projects.GetInventory).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/inventory\").HandlerFunc(projects.AddInventory).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/environment\").HandlerFunc(projects.GetEnvironment).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/environment\").HandlerFunc(environmentController.AddEnvironment).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/tasks\").HandlerFunc(projects.GetAllTasks).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.HandleFunc(\"/tasks/last\", projects.GetLastTasks).Methods(\"GET\", \"HEAD\")\n\n\tprojectUserAPI.Path(\"/stats\").HandlerFunc(projects.GetTaskStats).Methods(\"GET\", \"HEAD\")\n\n\tprojectUserAPI.Path(\"/templates\").HandlerFunc(projects.GetTemplates).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/templates\").HandlerFunc(projects.AddTemplate).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/schedules\").HandlerFunc(projects.GetProjectSchedules).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/schedules\").HandlerFunc(projects.AddSchedule).Methods(\"POST\")\n\tprojectUserAPI.Path(\"/schedules/validate\").HandlerFunc(projects.ValidateScheduleCronFormat).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/views\").HandlerFunc(projects.GetViews).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/views\").HandlerFunc(projects.AddView).Methods(\"POST\")\n\tprojectUserAPI.Path(\"/views/positions\").HandlerFunc(projects.SetViewPositions).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/integrations\").HandlerFunc(projects.GetIntegrations).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/integrations\").HandlerFunc(projects.AddIntegration).Methods(\"POST\")\n\tprojectUserAPI.Path(\"/backup\").HandlerFunc(projects.GetBackup).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/notifications/test\").HandlerFunc(projectController.SendTestNotification).Methods(\"POST\")\n\n\tprojectUserAPI.Path(\"/runners\").HandlerFunc(projectRunnerController.GetRunners).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/runners\").HandlerFunc(projectRunnerController.AddRunner).Methods(\"POST\")\n\tprojectUserAPI.Path(\"/runner_tags\").HandlerFunc(projectRunnerController.GetRunnerTags).Methods(\"GET\", \"HEAD\")\n\n\tprojectRunnersAPI := projectUserAPI.PathPrefix(\"/runners\").Subrouter()\n\tprojectRunnersAPI.Use(projectRunnerController.RunnerMiddleware)\n\tprojectRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(projectRunnerController.GetRunner).Methods(\"GET\", \"HEAD\")\n\tprojectRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(projectRunnerController.UpdateRunner).Methods(\"PUT\", \"POST\")\n\tprojectRunnersAPI.Path(\"/{runner_id}/active\").HandlerFunc(projectRunnerController.SetRunnerActive).Methods(\"POST\")\n\tprojectRunnersAPI.Path(\"/{runner_id}\").HandlerFunc(projectRunnerController.DeleteRunner).Methods(\"DELETE\")\n\tprojectRunnersAPI.Path(\"/{runner_id}/cache\").HandlerFunc(projectRunnerController.ClearRunnerCache).Methods(\"DELETE\")\n\n\tprojectUserAPI.Path(\"/roles\").HandlerFunc(rolesController.GetProjectRoles).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/roles/all\").HandlerFunc(rolesController.GetProjectAndGlobalRoles).Methods(\"GET\", \"HEAD\")\n\tprojectUserAPI.Path(\"/roles\").HandlerFunc(rolesController.AddProjectRole).Methods(\"POST\")\n\n\tprojectRolesAPI := projectUserAPI.PathPrefix(\"/roles\").Subrouter()\n\tprojectRolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.GetProjectRole).Methods(\"GET\", \"HEAD\")\n\tprojectRolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.UpdateProjectRole).Methods(\"PUT\", \"POST\")\n\tprojectRolesAPI.Path(\"/{role_slug}\").HandlerFunc(rolesController.DeleteProjectRole).Methods(\"DELETE\")\n\n\t//\n\t// Updating and deleting project\n\tprojectAdminAPI := authenticatedAPI.Path(\"/project/{project_id}\").Subrouter()\n\tprojectAdminAPI.Use(projects.ProjectMiddleware, projects.GetMustCanMiddleware(db.CanUpdateProject))\n\tprojectAdminAPI.Methods(\"PUT\").HandlerFunc(projectController.UpdateProject)\n\tprojectAdminAPI.Methods(\"DELETE\").HandlerFunc(projectController.DeleteProject)\n\n\tmeAPI := authenticatedAPI.Path(\"/project/{project_id}/me\").Subrouter()\n\tmeAPI.Use(projects.ProjectMiddleware)\n\tmeAPI.HandleFunc(\"\", projects.LeftProject).Methods(\"DELETE\")\n\n\tcacheAPI := authenticatedAPI.Path(\"/project/{project_id}/cache\").Subrouter()\n\tcacheAPI.Use(projects.ProjectMiddleware)\n\tcacheAPI.HandleFunc(\"\", projects.ClearCache).Methods(\"DELETE\")\n\n\t//\n\t// Manage project users\n\tprojectAdminUsersAPI := authenticatedAPI.PathPrefix(\"/project/{project_id}\").Subrouter()\n\n\tprojectAdminUsersAPI.Use(projects.ProjectMiddleware, projects.GetMustCanMiddleware(db.CanManageProjectUsers))\n\tprojectAdminUsersAPI.Path(\"/users\").HandlerFunc(projects.AddUser).Methods(\"POST\")\n\n\tprojectUserManagement := projectAdminUsersAPI.PathPrefix(\"/users\").Subrouter()\n\tprojectUserManagement.Use(projects.UserMiddleware)\n\n\tprojectUserManagement.HandleFunc(\"/{user_id}\", projects.GetUsers).Methods(\"GET\", \"HEAD\")\n\tprojectUserManagement.HandleFunc(\"/{user_id}\", projects.UpdateUser).Methods(\"PUT\")\n\tprojectUserManagement.HandleFunc(\"/{user_id}\", projects.RemoveUser).Methods(\"DELETE\")\n\n\t//\n\t// Project resources CRUD (continue)\n\tprojectKeyManagement := projectUserAPI.PathPrefix(\"/keys\").Subrouter()\n\tprojectKeyManagement.Use(projects.KeyMiddleware)\n\n\tprojectKeyManagement.HandleFunc(\"/{key_id}\", projects.GetKeys).Methods(\"GET\", \"HEAD\")\n\tprojectKeyManagement.HandleFunc(\"/{key_id}/refs\", projects.GetKeyRefs).Methods(\"GET\", \"HEAD\")\n\tprojectKeyManagement.HandleFunc(\"/{key_id}\", keyController.UpdateKey).Methods(\"PUT\")\n\tprojectKeyManagement.HandleFunc(\"/{key_id}\", keyController.RemoveKey).Methods(\"DELETE\")\n\n\tprojectSecretStorageManagement := projectUserAPI.PathPrefix(\"/secret_storages\").Subrouter()\n\tprojectSecretStorageManagement.Use(projects.SecretStorageMiddleware)\n\tprojectSecretStorageManagement.HandleFunc(\"/{storage_id}\", secretStorageController.GetSecretStorage).Methods(\"GET\", \"HEAD\")\n\tprojectSecretStorageManagement.HandleFunc(\"/{storage_id}/refs\", secretStorageController.GetRefs).Methods(\"GET\", \"HEAD\")\n\tprojectSecretStorageManagement.HandleFunc(\"/{storage_id}\", secretStorageController.Update).Methods(\"PUT\")\n\tprojectSecretStorageManagement.HandleFunc(\"/{storage_id}\", secretStorageController.Remove).Methods(\"DELETE\")\n\tprojectSecretStorageManagement.HandleFunc(\"/{storage_id}/sync\", secretStorageController.SyncSecrets).Methods(\"POST\")\n\n\tprojectRepoManagement := projectUserAPI.PathPrefix(\"/repositories\").Subrouter()\n\tprojectRepoManagement.Use(projects.RepositoryMiddleware)\n\n\tprojectRepoManagement.HandleFunc(\"/{repository_id}\", projects.GetRepositories).Methods(\"GET\", \"HEAD\")\n\tprojectRepoManagement.HandleFunc(\"/{repository_id}/refs\", projects.GetRepositoryRefs).Methods(\"GET\", \"HEAD\")\n\tprojectRepoManagement.HandleFunc(\"/{repository_id}\", projects.UpdateRepository).Methods(\"PUT\")\n\tprojectRepoManagement.HandleFunc(\"/{repository_id}\", projects.RemoveRepository).Methods(\"DELETE\")\n\tprojectRepoManagement.HandleFunc(\"/{repository_id}/branches\", repositoryController.GetRepositoryBranches).Methods(\"GET\", \"HEAD\")\n\n\tprojectInventoryManagement := projectUserAPI.PathPrefix(\"/inventory\").Subrouter()\n\tprojectInventoryManagement.Use(projects.InventoryMiddleware)\n\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}\", projects.GetInventory).Methods(\"GET\", \"HEAD\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/refs\", projects.GetInventoryRefs).Methods(\"GET\", \"HEAD\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}\", projects.UpdateInventory).Methods(\"PUT\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}\", projects.RemoveInventory).Methods(\"DELETE\")\n\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/aliases\", terraformInventoryController.GetTerraformInventoryAliases).Methods(\"GET\", \"HEAD\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/aliases\", terraformInventoryController.AddTerraformInventoryAlias).Methods(\"POST\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/aliases/{alias_id}\", terraformInventoryController.GetTerraformInventoryAlias).Methods(\"GET\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/aliases/{alias_id}\", terraformInventoryController.DeleteTerraformInventoryAlias).Methods(\"DELETE\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/aliases/{alias_id}\", terraformInventoryController.SetTerraformInventoryAliasAccessKey).Methods(\"PUT\")\n\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/states\", terraformInventoryController.GetTerraformInventoryStates).Methods(\"GET\", \"HEAD\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/states/latest\", terraformInventoryController.GetTerraformInventoryLatestState).Methods(\"GET\", \"HEAD\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/states/{state_id}\", terraformInventoryController.GetTerraformInventoryState).Methods(\"GET\")\n\tprojectInventoryManagement.HandleFunc(\"/{inventory_id}/terraform/states/{state_id}\", terraformInventoryController.DeleteTerraformInventoryState).Methods(\"DELETE\")\n\n\tprojectEnvManagement := projectUserAPI.PathPrefix(\"/environment\").Subrouter()\n\tprojectEnvManagement.Use(environmentController.EnvironmentMiddleware)\n\n\tprojectEnvManagement.HandleFunc(\"/{environment_id}\", projects.GetEnvironment).Methods(\"GET\", \"HEAD\")\n\tprojectEnvManagement.HandleFunc(\"/{environment_id}/refs\", projects.GetEnvironmentRefs).Methods(\"GET\", \"HEAD\")\n\tprojectEnvManagement.HandleFunc(\"/{environment_id}\", environmentController.UpdateEnvironment).Methods(\"PUT\")\n\tprojectEnvManagement.HandleFunc(\"/{environment_id}\", environmentController.RemoveEnvironment).Methods(\"DELETE\")\n\n\tprojectTmplManagement := projectUserAPI.PathPrefix(\"/templates\").Subrouter()\n\tprojectTmplManagement.Use(projects.TemplatesMiddleware)\n\n\tprojectTmplManagement.HandleFunc(\"/{template_id}\", projects.UpdateTemplate).Methods(\"PUT\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/description\", projects.UpdateTemplateDescription).Methods(\"PUT\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}\", projects.RemoveTemplate).Methods(\"DELETE\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}\", projects.GetTemplate).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/refs\", projects.GetTemplateRefs).Methods(\"GET\", \"HEAD\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/tasks\", projects.GetAllTasks).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/tasks/last\", projects.GetLastTasks).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/schedules\", projects.GetTemplateSchedules).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/stats\", projects.GetTaskStats).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/stop_all_tasks\", taskController.StopAllTasks).Methods(\"POST\")\n\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/perms\", templateController.GetTemplatePerms).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/perms\", templateController.AddTemplatePerm).Methods(\"POST\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/perms/{perm_id}\", templateController.GetTemplatePerm).Methods(\"GET\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/perms/{perm_id}\", templateController.UpdateTemplatePerm).Methods(\"PUT\")\n\tprojectTmplManagement.HandleFunc(\"/{template_id}/perms/{perm_id}\", templateController.DeleteTemplatePerm).Methods(\"DELETE\")\n\n\tprojectTmplInvManagement := projectTmplManagement.PathPrefix(\"/{template_id}/inventory\").Subrouter()\n\tprojectTmplInvManagement.Use(projects.InventoryMiddleware)\n\tprojectTmplInvManagement.HandleFunc(\"/{inventory_id}/set_default\", projects.SetTemplateInventory).Methods(\"POST\")\n\tprojectTmplInvManagement.HandleFunc(\"/{inventory_id}/attach\", projects.AttachInventory).Methods(\"POST\")\n\tprojectTmplInvManagement.HandleFunc(\"/{inventory_id}/detach\", projects.DetachInventory).Methods(\"POST\")\n\n\tprojectTaskManagement := projectUserAPI.PathPrefix(\"/tasks\").Subrouter()\n\tprojectTaskManagement.Use(projects.GetTaskMiddleware)\n\n\tprojectTaskManagement.HandleFunc(\"/{task_id}/output\", projects.GetTaskOutput).Methods(\"GET\", \"HEAD\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}/raw_output\", projects.GetTaskRawOutput).Methods(\"GET\", \"HEAD\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}\", projects.GetTask).Methods(\"GET\", \"HEAD\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}\", projects.RemoveTask).Methods(\"DELETE\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}/stages\", projects.GetTaskStages).Methods(\"GET\", \"HEAD\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}/ansible/hosts\", taskController.GetAnsibleTaskHosts).Methods(\"GET\", \"HEAD\")\n\tprojectTaskManagement.HandleFunc(\"/{task_id}/ansible/errors\", taskController.GetAnsibleTaskErrors).Methods(\"GET\", \"HEAD\")\n\n\tprojectScheduleManagement := projectUserAPI.PathPrefix(\"/schedules\").Subrouter()\n\tprojectScheduleManagement.Use(projects.SchedulesMiddleware)\n\tprojectScheduleManagement.HandleFunc(\"/{schedule_id}\", projects.GetSchedule).Methods(\"GET\", \"HEAD\")\n\tprojectScheduleManagement.HandleFunc(\"/{schedule_id}\", projects.UpdateSchedule).Methods(\"PUT\")\n\tprojectScheduleManagement.HandleFunc(\"/{schedule_id}/active\", projects.SetScheduleActive).Methods(\"PUT\")\n\tprojectScheduleManagement.HandleFunc(\"/{schedule_id}\", projects.RemoveSchedule).Methods(\"DELETE\")\n\n\tprojectViewManagement := projectUserAPI.PathPrefix(\"/views\").Subrouter()\n\tprojectViewManagement.Use(projects.ViewMiddleware)\n\tprojectViewManagement.HandleFunc(\"/{view_id}\", projects.GetViews).Methods(\"GET\", \"HEAD\")\n\tprojectViewManagement.HandleFunc(\"/{view_id}\", projects.UpdateView).Methods(\"PUT\")\n\tprojectViewManagement.HandleFunc(\"/{view_id}\", projects.RemoveView).Methods(\"DELETE\")\n\tprojectViewManagement.HandleFunc(\"/{view_id}/templates\", projects.GetViewTemplates).Methods(\"GET\", \"HEAD\")\n\n\tprojectIntegrationsAliasAPI := projectUserAPI.PathPrefix(\"/integrations\").Subrouter()\n\tprojectIntegrationsAliasAPI.Use(projects.ProjectMiddleware)\n\tprojectIntegrationsAliasAPI.HandleFunc(\"/aliases\", projects.GetIntegrationAlias).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAliasAPI.HandleFunc(\"/aliases\", projects.AddIntegrationAlias).Methods(\"POST\")\n\tprojectIntegrationsAliasAPI.HandleFunc(\"/aliases/{alias_id}\", projects.RemoveIntegrationAlias).Methods(\"DELETE\")\n\n\tprojectIntegrationsAPI := projectUserAPI.PathPrefix(\"/integrations\").Subrouter()\n\tprojectIntegrationsAPI.Use(projects.ProjectMiddleware, projects.IntegrationMiddleware)\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}\", projects.UpdateIntegration).Methods(\"PUT\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}\", projects.DeleteIntegration).Methods(\"DELETE\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}\", projects.GetIntegration).Methods(\"GET\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/refs\", projects.GetIntegrationRefs).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers\", projects.GetIntegrationMatchers).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers\", projects.AddIntegrationMatcher).Methods(\"POST\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values\", projects.GetIntegrationExtractValues).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values\", projects.AddIntegrationExtractValue).Methods(\"POST\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/aliases\", projects.GetIntegrationAlias).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/aliases\", projects.AddIntegrationAlias).Methods(\"POST\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/aliases/{alias_id}\", projects.RemoveIntegrationAlias).Methods(\"DELETE\")\n\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers/{matcher_id}\", projects.GetIntegrationMatcher).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers/{matcher_id}\", projects.UpdateIntegrationMatcher).Methods(\"PUT\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers/{matcher_id}\", projects.DeleteIntegrationMatcher).Methods(\"DELETE\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/matchers/{matcher_id}/refs\", projects.GetIntegrationMatcherRefs).Methods(\"GET\", \"HEAD\")\n\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values/{value_id}\", projects.GetIntegrationExtractValue).Methods(\"GET\", \"HEAD\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values/{value_id}\", projects.UpdateIntegrationExtractValue).Methods(\"PUT\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values/{value_id}\", projects.DeleteIntegrationExtractValue).Methods(\"DELETE\")\n\tprojectIntegrationsAPI.HandleFunc(\"/{integration_id}/values/{value_id}/refs\", projects.GetIntegrationExtractValueRefs).Methods(\"GET\")\n\n\tif os.Getenv(\"DEBUG\") == \"1\" {\n\t\tdefer debugPrintRoutes(r)\n\t}\n\n\treturn r\n}\n\nfunc debugPrintRoutes(r *mux.Router) {\n\terr := r.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {\n\t\tpathTemplate, err := route.GetPathTemplate()\n\t\tif err == nil {\n\t\t\tfmt.Println(\"ROUTE:\", pathTemplate)\n\t\t}\n\t\tpathRegexp, err := route.GetPathRegexp()\n\t\tif err == nil {\n\t\t\tfmt.Println(\"Path regexp:\", pathRegexp)\n\t\t}\n\t\tqueriesTemplates, err := route.GetQueriesTemplates()\n\t\tif err == nil {\n\t\t\tfmt.Println(\"Queries templates:\", strings.Join(queriesTemplates, \",\"))\n\t\t}\n\t\tqueriesRegexps, err := route.GetQueriesRegexp()\n\t\tif err == nil {\n\t\t\tfmt.Println(\"Queries regexps:\", strings.Join(queriesRegexps, \",\"))\n\t\t}\n\t\tmethods, err := route.GetMethods()\n\t\tif err == nil {\n\t\t\tfmt.Println(\"Methods:\", strings.Join(methods, \",\"))\n\t\t}\n\t\tfmt.Println()\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t}\n}\n\nfunc servePublic(w http.ResponseWriter, r *http.Request) {\n\twebPath := \"/\"\n\tif util.WebHostURL != nil {\n\t\twebPath = util.WebHostURL.Path\n\t\tif !strings.HasSuffix(webPath, \"/\") {\n\t\t\twebPath += \"/\"\n\t\t}\n\t}\n\n\treqPath := r.URL.Path\n\tapiPath := path.Join(webPath, \"api\")\n\n\tif reqPath == apiPath || strings.HasPrefix(reqPath, apiPath) {\n\t\thttp.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)\n\t\treturn\n\t}\n\n\t// Check if this is a request for the swagger UI\n\tswaggerPath := path.Join(webPath, \"swagger\")\n\tif reqPath == swaggerPath || reqPath == swaggerPath+\"/\" {\n\t\tserveFile(w, r, \"swagger/index.html\")\n\t\treturn\n\t}\n\n\tif !strings.Contains(reqPath, \".\") {\n\t\tserveFile(w, r, \"index.html\")\n\t\treturn\n\t}\n\n\tnewPath := strings.Replace(\n\t\treqPath,\n\t\twebPath,\n\t\t\"\",\n\t\t1,\n\t)\n\n\tserveFile(w, r, newPath)\n}\n\nfunc serveFile(w http.ResponseWriter, r *http.Request, name string) {\n\tres, err := publicAssets.ReadFile(\n\t\tfmt.Sprintf(\"public/%s\", name),\n\t)\n\n\tif err != nil {\n\t\thttp.Error(\n\t\t\tw,\n\t\t\thttp.StatusText(http.StatusNotFound),\n\t\t\thttp.StatusNotFound,\n\t\t)\n\n\t\treturn\n\t}\n\n\tif util.WebHostURL != nil && name == \"index.html\" {\n\t\tbaseURL := util.WebHostURL.String()\n\n\t\tif !strings.HasSuffix(baseURL, \"/\") {\n\t\t\tbaseURL += \"/\"\n\t\t}\n\n\t\tres = []byte(\n\t\t\tstrings.Replace(\n\t\t\t\tstring(res),\n\t\t\t\t`<base href=\"/\">`,\n\t\t\t\tfmt.Sprintf(`<base href=\"%s\">`, baseURL),\n\t\t\t\t1,\n\t\t\t),\n\t\t)\n\t}\n\n\tif !strings.HasSuffix(name, \".html\") {\n\t\tw.Header().Add(\n\t\t\t\"Cache-Control\",\n\t\t\tfmt.Sprintf(\"max-age=%d, public, must-revalidate, proxy-revalidate\", 24*time.Hour),\n\t\t)\n\t}\n\n\thttp.ServeContent(\n\t\tw,\n\t\tr,\n\t\tname,\n\t\tstartTime,\n\t\tbytes.NewReader(\n\t\t\tres,\n\t\t),\n\t)\n}\n"
  },
  {
    "path": "api/runners/runners.go",
    "content": "package runners\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/x509\"\n\t\"encoding/json\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/services/runners\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc RunnerMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\n\t\ttoken := r.Header.Get(\"X-Runner-Token\")\n\n\t\tif token == \"\" {\n\t\t\thelpers.WriteJSON(w, http.StatusUnauthorized, map[string]string{\n\t\t\t\t\"error\": \"Invalid token\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tstore := helpers.Store(r)\n\n\t\trunner, err := store.GetRunnerByToken(token)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteJSON(w, http.StatusNotFound, map[string]string{\n\t\t\t\t\"error\": \"Runner not found\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tif runner.Token != token {\n\t\t\thelpers.WriteJSON(w, http.StatusUnauthorized, map[string]string{\n\t\t\t\t\"error\": \"Invalid token\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"runner\", runner)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc loadPublicKey(keyData []byte) (*rsa.PublicKey, error) {\n\tblock, _ := pem.Decode(keyData)\n\tif block == nil || block.Type != \"PUBLIC KEY\" {\n\t\treturn nil, fmt.Errorf(\"invalid public key\")\n\t}\n\tpub, err := x509.ParsePKCS1PublicKey(block.Bytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn pub, nil\n}\n\nfunc chunkRSAEncrypt(pub *rsa.PublicKey, plaintext []byte) ([]byte, error) {\n\t// For a 2048-bit key, pub.Size() == 256 bytes\n\t// PKCS#1 v1.5 overhead = 11 bytes, so max plaintext per chunk = 256 - 11 = 245\n\trsaBlockSize := pub.Size()        // 256 for 2048-bit\n\tmaxChunkSize := rsaBlockSize - 11 // 245\n\n\tvar encryptedBuffer bytes.Buffer\n\n\tfor start := 0; start < len(plaintext); start += maxChunkSize {\n\t\tend := start + maxChunkSize\n\t\tif end > len(plaintext) {\n\t\t\tend = len(plaintext)\n\t\t}\n\t\tchunk := plaintext[start:end]\n\n\t\tencryptedChunk, err := rsa.EncryptPKCS1v15(rand.Reader, pub, chunk)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"encrypt chunk failed: %w\", err)\n\t\t}\n\n\t\t// Append the encrypted chunk (always 256 bytes for 2048-bit key)\n\t\tencryptedBuffer.Write(encryptedChunk)\n\t}\n\n\treturn encryptedBuffer.Bytes(), nil\n}\n\ntype RunnerController struct {\n\trunnerRepo        db.RunnerManager\n\ttaskPool          *tasks.TaskPool\n\tencryptionService server.AccessKeyEncryptionService\n}\n\nfunc NewRunnerController(runnerRepo db.RunnerManager, taskPool *tasks.TaskPool, encryptionService server.AccessKeyEncryptionService) *RunnerController {\n\treturn &RunnerController{\n\t\trunnerRepo:        runnerRepo,\n\t\ttaskPool:          taskPool,\n\t\tencryptionService: encryptionService,\n\t}\n}\n\nfunc (c *RunnerController) GetRunner(w http.ResponseWriter, r *http.Request) {\n\trunner := helpers.GetFromContext(r, \"runner\").(db.Runner)\n\n\tclearCache := false\n\n\terr := c.runnerRepo.TouchRunner(runner)\n\tif err != nil {\n\t\tlog.WithFields(log.Fields{\n\t\t\t\"runner_id\": runner.ID,\n\t\t\t\"context\":   \"runner\",\n\t\t}).WithError(err).Error(\"runner touch failed\")\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tif runner.CleaningRequested != nil && (runner.Touched == nil || runner.CleaningRequested.After(*runner.Touched)) {\n\t\tclearCache = true\n\t}\n\n\tdata := runners.RunnerState{\n\t\tAccessKeys: make(map[int]db.AccessKey),\n\t\tClearCache: clearCache,\n\t}\n\n\tif clearCache {\n\t\tdata.CacheCleanProjectID = runner.ProjectID\n\t}\n\n\ttasks := c.taskPool.GetRunningTasks()\n\n\tfor _, tsk := range tasks {\n\t\tif tsk.RunnerID != runner.ID {\n\t\t\tcontinue\n\t\t}\n\n\t\tif tsk.Task.Status == task_logger.TaskStartingStatus {\n\n\t\t\tdata.NewJobs = append(data.NewJobs, runners.JobData{\n\t\t\t\tUsername:            tsk.Username,\n\t\t\t\tIncomingVersion:     tsk.IncomingVersion,\n\t\t\t\tAlias:               tsk.Alias,\n\t\t\t\tTask:                tsk.Task,\n\t\t\t\tTemplate:            tsk.Template,\n\t\t\t\tInventory:           tsk.Inventory,\n\t\t\t\tInventoryRepository: tsk.Inventory.Repository,\n\t\t\t\tRepository:          tsk.Repository,\n\t\t\t\tEnvironment:         tsk.Environment,\n\t\t\t})\n\n\t\t\tif tsk.Inventory.SSHKeyID != nil {\n\t\t\t\terr := c.encryptionService.DeserializeSecret(&tsk.Inventory.SSHKey)\n\t\t\t\tif err != nil {\n\t\t\t\t\t// TODO: return error\n\t\t\t\t}\n\t\t\t\tdata.AccessKeys[*tsk.Inventory.SSHKeyID] = tsk.Inventory.SSHKey\n\t\t\t}\n\n\t\t\tif tsk.Inventory.BecomeKeyID != nil {\n\t\t\t\terr := c.encryptionService.DeserializeSecret(&tsk.Inventory.BecomeKey)\n\t\t\t\tif err != nil {\n\t\t\t\t\t// TODO: return error\n\t\t\t\t}\n\t\t\t\tdata.AccessKeys[*tsk.Inventory.BecomeKeyID] = tsk.Inventory.BecomeKey\n\t\t\t}\n\n\t\t\tif tsk.Template.Vaults != nil {\n\t\t\t\tfor _, vault := range tsk.Template.Vaults {\n\t\t\t\t\tif vault.VaultKeyID != nil {\n\t\t\t\t\t\terr := c.encryptionService.DeserializeSecret(vault.Vault)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\t// TODO: return error\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata.AccessKeys[*vault.VaultKeyID] = *vault.Vault\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif tsk.Inventory.RepositoryID != nil {\n\t\t\t\terr := c.encryptionService.DeserializeSecret(&tsk.Inventory.Repository.SSHKey)\n\t\t\t\tif err != nil {\n\t\t\t\t\t// TODO: return error\n\t\t\t\t}\n\t\t\t\tdata.AccessKeys[tsk.Inventory.Repository.SSHKeyID] = tsk.Inventory.Repository.SSHKey\n\t\t\t}\n\n\t\t\tdata.AccessKeys[tsk.Repository.SSHKeyID] = tsk.Repository.SSHKey\n\n\t\t} else {\n\t\t\tdata.CurrentJobs = append(data.CurrentJobs, runners.JobState{\n\t\t\t\tID:     tsk.Task.ID,\n\t\t\t\tStatus: tsk.Task.Status,\n\t\t\t})\n\t\t}\n\t}\n\n\tif runner.PublicKey != nil {\n\n\t\tpublicKey, err := loadPublicKey([]byte(*runner.PublicKey))\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tmessage, err := json.Marshal(data)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tencryptedBytes, err := chunkRSAEncrypt(publicKey, message)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tw.Header().Set(\"Content-Type\", \"application/octet-stream\")\n\n\t\t_, err = w.Write(encryptedBytes)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t} else {\n\t\thelpers.WriteJSON(w, http.StatusOK, data)\n\t}\n\n}\n\nfunc (c *RunnerController) UpdateRunner(w http.ResponseWriter, r *http.Request) {\n\n\trunner := helpers.GetFromContext(r, \"runner\").(db.Runner)\n\n\tvar body runners.RunnerProgress\n\n\tif !helpers.Bind(w, r, &body) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid format\",\n\t\t})\n\t\treturn\n\t}\n\n\ttaskPool := c.taskPool\n\n\tif body.Jobs == nil {\n\t\tw.WriteHeader(http.StatusNoContent)\n\t\treturn\n\t}\n\n\tfor _, job := range body.Jobs {\n\t\ttsk := taskPool.GetTask(job.ID)\n\n\t\tif tsk == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif tsk.RunnerID != runner.ID {\n\t\t\thelpers.WriteErrorStatus(w, \"Task not assigned to this runner\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\tfor _, logRecord := range job.LogRecords {\n\t\t\ttsk.LogWithTime(logRecord.Time, logRecord.Message)\n\t\t}\n\n\t\tif !job.Status.IsValid() {\n\t\t\thelpers.WriteErrorStatus(w, \"Invalid task status\", http.StatusBadRequest)\n\t\t\treturn\n\t\t}\n\n\t\ttsk.SetStatus(job.Status)\n\n\t\tif job.Commit != nil {\n\t\t\ttsk.SetCommit(job.Commit.Hash, job.Commit.Message)\n\t\t}\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc RegisterRunner(w http.ResponseWriter, r *http.Request) {\n\tvar register runners.RunnerRegistration\n\n\tif !helpers.Bind(w, r, &register) {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid format\",\n\t\t})\n\t\treturn\n\t}\n\n\tif util.Config.RunnerRegistrationToken == \"\" || register.RegistrationToken != util.Config.RunnerRegistrationToken {\n\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\"error\": \"Invalid registration token\",\n\t\t})\n\t\treturn\n\t}\n\n\trunner, err := helpers.Store(r).CreateRunner(db.Runner{\n\t\tWebhook:          register.Webhook,\n\t\tMaxParallelTasks: register.MaxParallelTasks,\n\t\tPublicKey:        register.PublicKey,\n\t})\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusInternalServerError, map[string]string{\n\t\t\t\"error\": \"Unexpected error\",\n\t\t})\n\t\treturn\n\t}\n\n\tlog.WithFields(log.Fields{\n\t\t\"runner_id\": runner.ID,\n\t\t\"context\":   \"runner\",\n\t}).Info(\"New runner registered\")\n\n\tvar res struct {\n\t\tToken string `json:\"token\"`\n\t}\n\n\tres.Token = runner.Token\n\n\thelpers.WriteJSON(w, http.StatusOK, res)\n}\n\nfunc UnregisterRunner(w http.ResponseWriter, r *http.Request) {\n\n\trunner := helpers.GetFromContext(r, \"runner\").(db.Runner)\n\n\terr := helpers.Store(r).DeleteGlobalRunner(runner.ID)\n\n\tif err != nil {\n\t\thelpers.WriteJSON(w, http.StatusInternalServerError, map[string]string{\n\t\t\t\"error\": \"Unknown error\",\n\t\t})\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/runners.go",
    "content": "package api\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"net/http\"\n)\n\nfunc getAllRunners(w http.ResponseWriter, r *http.Request) {\n\trunners, err := helpers.Store(r).GetAllRunners(false, false)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar result = make([]db.Runner, 0)\n\n\tresult = append(result, runners...)\n\n\thelpers.WriteJSON(w, http.StatusOK, result)\n}\n\ntype runnerWithToken struct {\n\tdb.Runner\n\tToken      string `json:\"token\"`\n\tPrivateKey string `json:\"private_key\"`\n}\n\nfunc addGlobalRunner(w http.ResponseWriter, r *http.Request) {\n\tvar runner db.Runner\n\tif !helpers.Bind(w, r, &runner) {\n\t\treturn\n\t}\n\n\trunner.ProjectID = nil\n\n\tvar privateKey []byte\n\n\tif runner.PublicKey == nil {\n\t\tvar b bytes.Buffer\n\t\tprivateKeyFile := bufio.NewWriter(&b)\n\n\t\tpublicKey, err := util.GeneratePrivateKey(privateKeyFile)\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\terr = privateKeyFile.Flush()\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\tprivateKey = b.Bytes()\n\n\t\trunner.PublicKey = &publicKey\n\t}\n\n\tnewRunner, err := helpers.Store(r).CreateRunner(runner)\n\n\tif err != nil {\n\t\tlog.Warn(\"Runner is not created: \" + err.Error())\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, runnerWithToken{\n\t\tRunner:     newRunner,\n\t\tToken:      newRunner.Token,\n\t\tPrivateKey: string(privateKey),\n\t})\n}\n\nfunc globalRunnerMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\trunnerID, err := helpers.GetIntParam(\"runner_id\", w, r)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteJSON(w, http.StatusBadRequest, map[string]string{\n\t\t\t\t\"error\": \"runner_id required\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tstore := helpers.Store(r)\n\n\t\trunner, err := store.GetGlobalRunner(runnerID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteJSON(w, http.StatusNotFound, map[string]string{\n\t\t\t\t\"error\": \"Runner not found\",\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"runner\", &runner)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc getGlobalRunner(w http.ResponseWriter, r *http.Request) {\n\trunner := helpers.GetFromContext(r, \"runner\").(*db.Runner)\n\n\thelpers.WriteJSON(w, http.StatusOK, runner)\n}\n\nfunc updateGlobalRunner(w http.ResponseWriter, r *http.Request) {\n\toldRunner := helpers.GetFromContext(r, \"runner\").(*db.Runner)\n\n\tvar runner db.Runner\n\tif !helpers.Bind(w, r, &runner) {\n\t\treturn\n\t}\n\n\tstore := helpers.Store(r)\n\n\trunner.ID = oldRunner.ID\n\trunner.ProjectID = nil\n\n\terr := store.UpdateRunner(runner)\n\n\tif err != nil {\n\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc clearGlobalRunnerCache(w http.ResponseWriter, r *http.Request) {\n\trunner := helpers.GetFromContext(r, \"runner\").(*db.Runner)\n\n\tstore := helpers.Store(r)\n\n\terr := store.ClearRunnerCache(*runner)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc deleteGlobalRunner(w http.ResponseWriter, r *http.Request) {\n\trunner := helpers.GetFromContext(r, \"runner\").(*db.Runner)\n\n\tstore := helpers.Store(r)\n\n\terr := store.DeleteGlobalRunner(runner.ID)\n\n\tif err != nil {\n\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc setGlobalRunnerActive(w http.ResponseWriter, r *http.Request) {\n\trunner := helpers.GetFromContext(r, \"runner\").(*db.Runner)\n\n\tstore := helpers.Store(r)\n\n\tvar body struct {\n\t\tActive bool `json:\"active\"`\n\t}\n\n\tif !helpers.Bind(w, r, &body) {\n\t\thelpers.WriteErrorStatus(w, \"Invalid request body\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\trunner.Active = body.Active\n\n\terr := store.UpdateRunner(*runner)\n\n\tif err != nil {\n\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/sockets/handler.go",
    "content": "package sockets\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/gorilla/websocket\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nvar upgrader = websocket.Upgrader{\n\tReadBufferSize:  1024,\n\tWriteBufferSize: 1024,\n\tCheckOrigin: func(r *http.Request) bool {\n\t\treturn true\n\t},\n}\n\nconst (\n\t// Time allowed to write a message to the peer.\n\twriteWait = 2 * 10 * time.Second\n\n\t// Time allowed to read the next pong message from the peer.\n\tpongWait = 2 * 60 * time.Second\n\n\t// Send pings to peer with this period. Must be less than pongWait.\n\tpingPeriod = (pongWait * 9) / 10\n\n\t// Maximum message size allowed from peer.\n\tmaxMessageSize = 512\n\n\t// Maximum size of the connection.send channel.\n\t// When the channel is full, the hub closes it (see method hub.run).\n\tconnectionChannelSize = 256\n)\n\ntype connection struct {\n\tws     *websocket.Conn\n\tsend   chan []byte\n\tuserID int\n}\n\nfunc (c *connection) log(level log.Level, err error, msg string) {\n\tlog.WithError(err).WithFields(log.Fields{\n\t\t\"context\": \"websocket\",\n\t\t\"user_id\": c.userID,\n\t}).Log(level, msg)\n}\n\nfunc (c *connection) logError(err error, msg string) {\n\tc.log(log.ErrorLevel, err, msg)\n}\n\nfunc (c *connection) logWarn(err error, msg string) {\n\tc.log(log.DebugLevel, err, msg)\n}\n\nfunc (c *connection) logDebug(err error, msg string) {\n\tc.log(log.DebugLevel, err, msg)\n}\n\n// readPump pumps messages from the websocket connection to the hub.\nfunc (c *connection) readPump() {\n\tdefer func() {\n\t\th.unregister <- c\n\t\t_ = c.ws.Close()\n\t}()\n\n\tc.ws.SetReadLimit(maxMessageSize)\n\n\tif err := c.ws.SetReadDeadline(tz.Now().Add(pongWait)); err != nil {\n\t\tc.logWarn(err, \"Failed to set read deadline\")\n\t}\n\n\tc.ws.SetPongHandler(func(string) error {\n\t\tdeadline := tz.Now().Add(pongWait)\n\n\t\tif err := c.ws.SetReadDeadline(deadline); err != nil {\n\t\t\tc.logWarn(err, \"Failed to set read deadline\")\n\t\t}\n\n\t\treturn nil\n\t})\n\n\tfor {\n\t\t_, message, err := c.ws.ReadMessage()\n\t\tfmt.Println(string(message))\n\n\t\tif err != nil {\n\t\t\tif websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway) {\n\t\t\t\tc.logDebug(err, \"Failed to read message from client\")\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// write writes a message with the given message type and payload.\nfunc (c *connection) write(mt int, payload []byte) error {\n\n\tdeadline := tz.Now().Add(writeWait)\n\n\tif err := c.ws.SetWriteDeadline(deadline); err != nil {\n\t\tc.logWarn(err, \"Cannot set write deadline\")\n\t}\n\n\treturn c.ws.WriteMessage(mt, payload)\n}\n\n// writePump pumps messages from the hub to the websocket connection.\nfunc (c *connection) writePump() {\n\tticker := time.NewTicker(pingPeriod)\n\n\tdefer func() {\n\t\tticker.Stop()\n\t\t_ = c.ws.Close()\n\t}()\n\n\tfor {\n\t\tselect {\n\t\tcase message, ok := <-c.send:\n\n\t\t\tif !ok {\n\t\t\t\tif err := c.write(websocket.CloseMessage, []byte{}); err != nil {\n\t\t\t\t\tc.logDebug(err, \"Failed to write close message to client\")\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif err := c.write(websocket.TextMessage, message); err != nil {\n\t\t\t\tc.logDebug(err, \"Failed to write message to client\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\tcase <-ticker.C:\n\n\t\t\tif err := c.write(websocket.PingMessage, []byte{}); err != nil {\n\t\t\t\tc.logDebug(err, \"Failed to write ping message to client\")\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Handler is used by the router to handle the /ws endpoint\nfunc Handler(w http.ResponseWriter, r *http.Request) {\n\tusr := helpers.GetFromContext(r, \"user\")\n\tif usr == nil {\n\t\treturn\n\t}\n\n\tuser := usr.(*db.User)\n\tws, err := upgrader.Upgrade(w, r, nil)\n\tif err != nil {\n\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": \"websocket\",\n\t\t\t\"user_id\": user.ID,\n\t\t}).Error(\"Failed to upgrade connection to websocket\")\n\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tc := &connection{\n\t\tsend:   make(chan []byte, connectionChannelSize),\n\t\tws:     ws,\n\t\tuserID: user.ID,\n\t}\n\n\th.register <- c\n\n\tgo c.writePump()\n\tc.readPump()\n}\n\n// Message allows a message to be sent to the websockets, called in API task logging.\n// In HA mode, messages are relayed to all cluster nodes via the configured Broadcaster.\nfunc Message(userID int, message []byte) {\n\tif broadcaster != nil {\n\t\tbroadcaster.Publish(userID, message)\n\t\treturn\n\t}\n\th.broadcast <- &sendRequest{\n\t\tuserID: userID,\n\t\tmsg:    message,\n\t}\n}\n"
  },
  {
    "path": "api/sockets/pool.go",
    "content": "package sockets\n\nimport log \"github.com/sirupsen/logrus\"\n\n// Broadcaster provides cross-node WebSocket message delivery for HA setups.\n// When configured, Message() delegates to the broadcaster which publishes\n// messages to all nodes in the cluster via Redis Pub/Sub.\ntype Broadcaster interface {\n\t// Start begins listening for messages from other nodes.\n\tStart()\n\t// Publish delivers a message to all nodes in the cluster.\n\t// The implementation must also deliver the message to local clients\n\t// by calling LocalBroadcast.\n\tPublish(userID int, msg []byte)\n\t// Stop shuts down the broadcaster.\n\tStop()\n}\n\nvar broadcaster Broadcaster\n\n// SetBroadcaster configures a cross-node broadcaster for HA mode.\n// When set, Message() delegates to the broadcaster instead of the local hub.\nfunc SetBroadcaster(b Broadcaster) {\n\tbroadcaster = b\n}\n\n// hub maintains the set of active connections and broadcasts messages to the\n// connections.\ntype hub struct {\n\t// Registered websocket connections.\n\tconnections map[*connection]bool\n\n\t// Inbound messages from the connections.\n\tbroadcast chan *sendRequest\n\n\t// Register requests from the connections.\n\tregister chan *connection\n\n\t// Unregister requests from connections.\n\tunregister chan *connection\n}\n\ntype sendRequest struct {\n\tuserID int\n\tmsg    []byte\n}\n\nvar h = hub{\n\tbroadcast:   make(chan *sendRequest),\n\tregister:    make(chan *connection),\n\tunregister:  make(chan *connection),\n\tconnections: make(map[*connection]bool),\n}\n\nfunc (h *hub) run() {\n\tfor {\n\t\tselect {\n\t\tcase c := <-h.register:\n\t\t\th.connections[c] = true\n\t\tcase c := <-h.unregister:\n\t\t\tif _, ok := h.connections[c]; ok {\n\t\t\t\tdelete(h.connections, c)\n\t\t\t\tclose(c.send)\n\t\t\t}\n\t\tcase m := <-h.broadcast:\n\t\t\tfor conn := range h.connections {\n\t\t\t\tif m.userID > 0 && m.userID != conn.userID {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tselect {\n\t\t\t\tcase conn.send <- m.msg:\n\t\t\t\tdefault:\n\n\t\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\t\"context\": \"websocket\",\n\t\t\t\t\t\t\"user_id\": conn.userID,\n\t\t\t\t\t}).Error(\"Connection send channel is full, connection closing\")\n\n\t\t\t\t\tclose(conn.send)\n\t\t\t\t\tdelete(h.connections, conn)\n\t\t\t\t\t_ = conn.ws.Close() // Close the WebSocket connection first\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// StartWS starts the web sockets in a goroutine\nfunc StartWS() {\n\th.run()\n}\n\n// LocalBroadcast delivers a message to locally-connected WebSocket clients\n// only. Used by Broadcaster implementations to relay messages received from\n// other nodes without re-publishing them.\nfunc LocalBroadcast(userID int, message []byte) {\n\th.broadcast <- &sendRequest{\n\t\tuserID: userID,\n\t\tmsg:    message,\n\t}\n}\n"
  },
  {
    "path": "api/system_info.go",
    "content": "package api\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tproFeatures \"github.com/semaphoreui/semaphore/pro/pkg/features\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype SystemInfoController struct {\n\tsubscriptionService pro_interfaces.SubscriptionService\n}\n\nfunc NewSystemInfoController(subscriptionService pro_interfaces.SubscriptionService) *SystemInfoController {\n\treturn &SystemInfoController{\n\t\tsubscriptionService,\n\t}\n}\n\nfunc (c *SystemInfoController) GetSystemInfo(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tvar authMethods LoginAuthMethods\n\n\tif util.Config.Auth.Totp.Enabled {\n\t\tauthMethods.Totp = &LoginTotpAuthMethod{\n\t\t\tAllowRecovery: util.Config.Auth.Totp.AllowRecovery,\n\t\t}\n\t}\n\n\tif util.Config.Auth.Email.Enabled {\n\t\tauthMethods.Email = &LoginEmailAuthMethod{}\n\t}\n\n\ttimezone := util.Config.Schedule.Timezone\n\n\tif timezone == \"\" {\n\t\ttimezone = \"UTC\"\n\t}\n\n\troles, err := helpers.Store(r).GetGlobalRoles()\n\tif err != nil {\n\t\tlog.WithError(err).Error(\"Failed to get roles\")\n\t\thttp.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tvar plan string\n\n\ttoken, err := c.subscriptionService.GetToken()\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\tif err != nil {\n\t\tlog.WithError(err).Error(\"Failed to get subscription plan\")\n\t\terr = nil\n\t\t//http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)\n\t\t//return\n\t}\n\n\tswitch {\n\tcase errors.Is(err, db.ErrNotFound):\n\t\terr = nil\n\t\tplan = \"\"\n\tcase err != nil:\n\t\tlog.WithError(err).Error(\"Failed to get subscription plan\")\n\t\terr = nil\n\t\tplan = \"\"\n\t\t//http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)\n\t\treturn\n\tdefault:\n\t\tplan = token.Plan\n\t}\n\n\tbody := map[string]any{\n\t\t\"version\":           util.Version(),\n\t\t\"ansible\":           util.AnsibleVersion(),\n\t\t\"web_host\":          util.Config.WebHost,\n\t\t\"use_remote_runner\": util.Config.UseRemoteRunner,\n\t\t\"auth_methods\":      authMethods,\n\t\t\"premium_features\":  proFeatures.GetFeatures(user, plan),\n\t\t\"git_client\":        util.Config.GitClientId,\n\t\t\"schedule_timezone\": timezone,\n\t\t\"teams\":             util.Config.Teams,\n\t\t\"roles\":             roles,\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, body)\n}\n"
  },
  {
    "path": "api/tasks/tasks.go",
    "content": "package tasks\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\ttask2 \"github.com/semaphoreui/semaphore/services/tasks\"\n)\n\nfunc TaskMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\ttaskID, err := helpers.GetIntParam(\"task_id\", w, r)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusBadRequest)\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"task_id\", taskID)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\ntype taskLocation string\n\nconst (\n\ttaskQueue   taskLocation = \"queue\"\n\ttaskRunning taskLocation = \"running\"\n)\n\ntype taskRes struct {\n\tTaskID      int                    `json:\"task_id\"`\n\tProjectID   int                    `json:\"project_id\"`\n\tUsername    string                 `json:\"username,omitempty\"`\n\tRunnerID    int                    `json:\"runner_id,omitempty\"`\n\tStatus      task_logger.TaskStatus `json:\"status\"`\n\tLocation    taskLocation           `json:\"location\"`\n\tRunnerName  string                 `json:\"runner_name,omitempty\"`\n\tProjectName string                 `json:\"project_name,omitempty\"`\n}\n\nfunc GetTasks(w http.ResponseWriter, r *http.Request) {\n\tpool := helpers.GetFromContext(r, \"task_pool\").(*task2.TaskPool)\n\n\tres := []taskRes{}\n\n\tfor _, task := range pool.GetQueuedTasks() {\n\t\tres = append(res, taskRes{\n\t\t\tTaskID:    task.Task.ID,\n\t\t\tProjectID: task.Task.ProjectID,\n\t\t\tRunnerID:  task.RunnerID,\n\t\t\tUsername:  task.Username,\n\t\t\tStatus:    task.Task.Status,\n\t\t\tLocation:  taskQueue,\n\t\t})\n\t}\n\n\tfor _, task := range pool.GetRunningTasks() {\n\t\tres = append(res, taskRes{\n\t\t\tTaskID:    task.Task.ID,\n\t\t\tProjectID: task.Task.ProjectID,\n\t\t\tRunnerID:  task.RunnerID,\n\t\t\tUsername:  task.Username,\n\t\t\tStatus:    task.Task.Status,\n\t\t\tLocation:  taskRunning,\n\t\t})\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, res)\n}\n\nfunc DeleteTask(w http.ResponseWriter, r *http.Request) {\n\n\ttaskID := helpers.GetFromContext(r, \"task_id\").(int)\n\n\tpool := helpers.GetFromContext(r, \"task_pool\").(*task2.TaskPool)\n\n\tvar task *db.Task\n\n\tfor _, t := range pool.GetQueuedTasks() {\n\t\tif t.Task.ID == taskID {\n\t\t\ttask = &t.Task\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif task == nil {\n\t\tfor _, t := range pool.GetRunningTasks() {\n\t\t\tif t.Task.ID == taskID {\n\t\t\t\ttask = &t.Task\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif task != nil {\n\t\terr := pool.StopTask(*task, false)\n\t\tif err != nil {\n\t\t\thelpers.WriteErrorStatus(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\n\thelpers.WriteJSON(w, http.StatusNoContent, nil)\n}\n"
  },
  {
    "path": "api/user.go",
    "content": "package api\n\nimport (\n\t\"crypto/rand\"\n\t\"encoding/base64\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/gorilla/mux\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype UserController struct {\n\tsubscriptionService pro_interfaces.SubscriptionService\n}\n\nfunc NewUserController(subscriptionService pro_interfaces.SubscriptionService) *UserController {\n\treturn &UserController{\n\t\tsubscriptionService: subscriptionService,\n\t}\n}\n\nfunc (c *UserController) GetUser(w http.ResponseWriter, r *http.Request) {\n\tif u, exists := helpers.GetOkFromContext(r, \"_user\"); exists {\n\t\thelpers.WriteJSON(w, http.StatusOK, u)\n\t\treturn\n\t}\n\n\tvar user struct {\n\t\tdb.User\n\t\tCanCreateProject      bool `json:\"can_create_project\"`\n\t\tHasActiveSubscription bool `json:\"has_active_subscription\"`\n\t}\n\n\tuser.User = *helpers.GetFromContext(r, \"user\").(*db.User)\n\tuser.CanCreateProject = user.Admin || util.Config.NonAdminCanCreateProject\n\tuser.HasActiveSubscription = c.subscriptionService.HasActiveSubscription()\n\tif !user.HasActiveSubscription {\n\t\tuser.Pro = false\n\t}\n\thelpers.WriteJSON(w, http.StatusOK, user)\n}\n\nfunc getAPITokens(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\ttokens, err := helpers.Store(r).GetAPITokens(user.ID)\n\tif err != nil {\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tfor i := range tokens {\n\t\tif len(tokens[i].ID) >= 8 {\n\t\t\ttokens[i].ID = tokens[i].ID[:8]\n\t\t}\n\t\t// If ID is shorter than 8 chars, leave it as-is\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, tokens)\n}\n\nfunc createAPIToken(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\ttokenID := make([]byte, 32)\n\tif _, err := io.ReadFull(rand.Reader, tokenID); err != nil {\n\t\tpanic(err)\n\t}\n\n\ttoken, err := helpers.Store(r).CreateAPIToken(db.APIToken{\n\t\tID:      strings.ToLower(base64.URLEncoding.EncodeToString(tokenID)),\n\t\tUserID:  user.ID,\n\t\tExpired: false,\n\t})\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, token)\n}\n\nfunc deleteAPIToken(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\ttokenID := mux.Vars(r)[\"token_id\"]\n\n\terr := helpers.Store(r).DeleteAPIToken(user.ID, tokenID)\n\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api/users.go",
    "content": "package api\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"github.com/pquerna/otp\"\n\t\"github.com/pquerna/otp/totp\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"image/png\"\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype UsersController struct {\n\tsubscriptionService pro_interfaces.SubscriptionService\n}\n\nfunc NewUsersController(subscriptionService pro_interfaces.SubscriptionService) *UsersController {\n\treturn &UsersController{\n\t\tsubscriptionService: subscriptionService,\n\t}\n}\n\ntype minimalUser struct {\n\tID       int    `json:\"id\"`\n\tUsername string `json:\"username\"`\n\tName     string `json:\"name\"`\n}\n\nfunc (c *UsersController) GetUsers(w http.ResponseWriter, r *http.Request) {\n\tcurrentUser := helpers.GetFromContext(r, \"user\").(*db.User)\n\tusers, err := helpers.Store(r).GetUsers(db.RetrieveQueryParams{\n\t\tFilter: r.URL.Query().Get(\"s\"),\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tif currentUser.Admin {\n\t\thelpers.WriteJSON(w, http.StatusOK, users)\n\t} else {\n\t\tvar result = make([]minimalUser, 0)\n\n\t\tfor _, user := range users {\n\t\t\tresult = append(result, minimalUser{\n\t\t\t\tID:       user.ID,\n\t\t\t\tName:     user.Name,\n\t\t\t\tUsername: user.Username,\n\t\t\t})\n\t\t}\n\n\t\thelpers.WriteJSON(w, http.StatusOK, result)\n\t}\n}\n\nfunc (c *UsersController) AddUser(w http.ResponseWriter, r *http.Request) {\n\tvar user db.UserWithPwd\n\tif !helpers.Bind(w, r, &user) {\n\t\treturn\n\t}\n\n\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\tif !editor.Admin {\n\t\tlog.Warn(editor.Username + \" is not permitted to create users\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif user.Pro {\n\t\tok, err := c.subscriptionService.CanAddProUser()\n\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tif !ok {\n\t\t\thelpers.WriteErrorStatus(w,\n\t\t\t\tfmt.Sprintf(\"You have reached the limit of Pro users for your subscription.\"), http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar err error\n\tvar newUser db.User\n\n\tif user.External {\n\t\tnewUser, err = helpers.Store(r).CreateUserWithoutPassword(user.User)\n\t} else {\n\t\tnewUser, err = helpers.Store(r).CreateUser(user)\n\t}\n\n\tif err != nil {\n\t\tlog.Warn(editor.Username + \" is not created: \" + err.Error())\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\thelpers.WriteJSON(w, http.StatusCreated, newUser)\n}\nfunc readonlyUserMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tuserID, err := helpers.GetIntParam(\"user_id\", w, r)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tuser, err := helpers.Store(r).GetUser(userID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\t\tif !editor.Admin && editor.ID != user.ID {\n\t\t\tuser = db.User{\n\t\t\t\tID:       user.ID,\n\t\t\t\tUsername: user.Username,\n\t\t\t\tName:     user.Name,\n\t\t\t}\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"_user\", user)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc getUserMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tuserID, err := helpers.GetIntParam(\"user_id\", w, r)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tuser, err := helpers.Store(r).GetUser(userID)\n\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\n\t\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\t\tif !editor.Admin && editor.ID != user.ID {\n\t\t\tlog.Warn(editor.Username + \" is not permitted to edit users\")\n\t\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\tr = helpers.SetContextValue(r, \"_user\", user)\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc (c *UsersController) UpdateUser(w http.ResponseWriter, r *http.Request) {\n\ttargetUser := helpers.GetFromContext(r, \"_user\").(db.User)\n\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tvar user db.UserWithPwd\n\tif !helpers.Bind(w, r, &user) {\n\t\treturn\n\t}\n\n\tif !editor.Admin && (user.Pro && !targetUser.Pro) {\n\t\tlog.Warn(editor.Username + \" is not permitted to mark users as Pro\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif user.Pro {\n\t\tok, err := c.subscriptionService.CanAddProUser()\n\n\t\tif err != nil {\n\t\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\tif !ok {\n\t\t\thelpers.WriteErrorStatus(w,\n\t\t\t\tfmt.Sprintf(\"You have reached the limit of Pro users for your subscription.\"), http.StatusForbidden)\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !editor.Admin && editor.ID != targetUser.ID {\n\t\tlog.Warn(editor.Username + \" is not permitted to edit users\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif editor.ID == targetUser.ID && targetUser.Admin != user.Admin {\n\t\tlog.Warn(\"User can't edit his own role\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif targetUser.External && targetUser.Username != user.Username {\n\t\tlog.Warn(\"Username is not editable for external users\")\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tuser.ID = targetUser.ID\n\tif err := helpers.Store(r).UpdateUser(user); err != nil {\n\t\tlog.Error(err.Error())\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc updateUserPassword(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"_user\").(db.User)\n\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tvar pwd struct {\n\t\tPwd string `json:\"password\"`\n\t}\n\n\tif !editor.Admin && editor.ID != user.ID {\n\t\tlog.Warn(editor.Username + \" is not permitted to edit users\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif user.External {\n\t\tlog.Warn(\"Password is not editable for external users\")\n\t\tw.WriteHeader(http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif !helpers.Bind(w, r, &pwd) {\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).SetUserPassword(user.ID, pwd.Pwd); err != nil {\n\t\tutil.LogWarning(err)\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc deleteUser(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"_user\").(db.User)\n\teditor := helpers.GetFromContext(r, \"user\").(*db.User)\n\n\tif !editor.Admin && editor.ID != user.ID {\n\t\tlog.Warn(editor.Username + \" is not permitted to delete users\")\n\t\tw.WriteHeader(http.StatusUnauthorized)\n\t\treturn\n\t}\n\n\tif err := helpers.Store(r).DeleteUser(user.ID); err != nil {\n\t\tw.WriteHeader(http.StatusInternalServerError)\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n\nfunc totpQr(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"_user\").(db.User)\n\n\tif user.Totp == nil {\n\t\thelpers.WriteErrorStatus(w, \"TOTP not enabled\", http.StatusNotFound)\n\t\treturn\n\t}\n\n\tkey, err := otp.NewKeyFromURL(user.Totp.URL)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\timage, err := key.Image(256, 256)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tvar buf bytes.Buffer\n\terr = png.Encode(&buf, image)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\tpngBytes := buf.Bytes()\n\n\tw.Header().Add(\"Content-Type\", \"image/png\")\n\t_, err = w.Write(pngBytes)\n}\n\nfunc enableTotp(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"_user\").(db.User)\n\n\tif !util.Config.Auth.Totp.Enabled {\n\t\thelpers.WriteErrorStatus(w, \"TOTP not enabled\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tif user.Totp != nil {\n\t\thelpers.WriteErrorStatus(w, \"TOTP already enabled\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\tkey, err := totp.Generate(totp.GenerateOpts{\n\t\tIssuer:      \"Semaphore\",\n\t\tAccountName: user.Email,\n\t})\n\n\tif err != nil {\n\t\thttp.Error(w, \"Error generating key\", http.StatusInternalServerError)\n\t\treturn\n\t}\n\n\tvar code, hash string\n\n\tif util.Config.Auth.Totp.AllowRecovery {\n\t\tcode, hash, err = util.GenerateRecoveryCode()\n\t\tif err != nil {\n\t\t\thelpers.WriteError(w, err)\n\t\t\treturn\n\t\t}\n\t}\n\n\tnewTotp, err := helpers.Store(r).AddTotpVerification(user.ID, key.URL(), hash)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tnewTotp.RecoveryCode = code\n\n\thelpers.WriteJSON(w, http.StatusOK, newTotp)\n}\n\nfunc disableTotp(w http.ResponseWriter, r *http.Request) {\n\tuser := helpers.GetFromContext(r, \"_user\").(db.User)\n\tif user.Totp == nil {\n\t\thelpers.WriteErrorStatus(w, \"TOTP not enabled\", http.StatusBadRequest)\n\t\treturn\n\t}\n\n\ttotpID, err := helpers.GetIntParam(\"totp_id\", w, r)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\terr = helpers.Store(r).DeleteTotpVerification(user.ID, totpID)\n\tif err != nil {\n\t\thelpers.WriteError(w, err)\n\t\treturn\n\t}\n\n\tw.WriteHeader(http.StatusNoContent)\n}\n"
  },
  {
    "path": "api-docs.yml",
    "content": "---\nswagger: '2.0'\ninfo:\n  title: Semaphore API\n  description: |\n    Semaphore API provides endpoints for managing and interacting with the Semaphore UI.\n    This documentation outlines the available operations and data models.\n  version: \"2.16.14\"\n\nconsumes:\n  - application/json\nproduces:\n  - application/json\n  - text/plain; charset=utf-8\n\ntags:\n  - name: authentication\n    description: Authentication, Logout & API Tokens\n  - name: project\n    description: Everything related to a project\n  - name: user\n    description: User-related API\n  - name: integration\n    description: Integration API\n\nschemes:\n  - http\n  - https\n\nbasePath: /api\n\ndefinitions:\n  App:\n    type: object\n\n  Pong:\n    type: string\n    x-example: pong\n\n  Login:\n    type: object\n    properties:\n      auth:\n        type: string\n        description: Username/Email address\n        x-example: user@semaphoreui.com\n      password:\n        type: string\n        format: password\n        description: Password\n\n  LoginMetadata:\n    type: object\n    properties:\n      oidc_providers:\n        type: array\n        description: List of OIDC providers\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              description: ID of the provider, used in the login URL\n              x-example: mysso\n            name:\n              type: string\n              description: Text to show on the login button\n              x-example: Sign in with MySSO\n\n  UserRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        x-example: Integration Test User\n        example: Integration Test User\n      username:\n        type: string\n        x-example: test-user\n        example: test-user\n      email:\n        type: string\n        x-example: test@ansiblesemaphore.test\n        example: test@ansiblesemaphore.test\n      password:\n        type: string\n        format: password\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n      external:\n        type: boolean\n\n  UserPutRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        x-example: Integration Test User2\n        example: Integration Test User2\n      username:\n        type: string\n        x-example: test-user2\n        example: test-user2\n      email:\n        type: string\n        x-example: test2@ansiblesemaphore.test\n        example: test2@ansiblesemaphore.test\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n\n  User:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n      username:\n        type: string\n      email:\n        type: string\n      created:\n        type: string\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n      external:\n        type: boolean\n\n  ProjectUser:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n      username:\n        type: string\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n\n  ProjectInvite:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      project_id:\n        type: integer\n        minimum: 1\n      user_id:\n        type: integer\n        minimum: 1\n        description: User ID for user-based invites (optional)\n      email:\n        type: string\n        format: email\n        description: Email address for email-based invites (optional)\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n        example: manager\n      status:\n        type: string\n        enum: [pending, accepted, declined, expired]\n        example: pending\n      inviter_user_id:\n        type: integer\n        minimum: 1\n        description: ID of the user who created the invite\n      created:\n        type: string\n        format: date-time\n        description: When the invite was created\n      expires_at:\n        type: string\n        format: date-time\n        description: When the invite expires (optional)\n      accepted_at:\n        type: string\n        format: date-time\n        description: When the invite was accepted (optional)\n      inviter_user:\n        $ref: \"#/definitions/User\"\n        description: Details of the user who created the invite\n      user:\n        $ref: \"#/definitions/User\"\n        description: Details of the invited user (for user-based invites)\n\n  ProjectInviteRequest:\n    type: object\n    properties:\n#      user_id:\n#        type: integer\n#        minimum: 1\n#        description: User ID to invite (use either user_id or email, not both)\n      email:\n        type: string\n        format: email\n        description: Email address to invite (use either user_id or email, not both)\n        x-example: user@example.com\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n        example: manager\n      expires_at:\n        type: string\n        format: date-time\n        description: When the invite should expire (optional, defaults to 7 days)\n    required:\n      - role\n\n  AcceptInviteRequest:\n    type: object\n    properties:\n      token:\n        type: string\n        description: The invitation token\n        x-example: \"a1b2c3d4e5f6...\"\n    required:\n      - token\n\n  ProjectBackup:\n    type: object\n    example: {\"meta\":{\"name\":\"homelab\",\"alert\":true,\"alert_chat\":\"Test\",\"max_parallel_tasks\":0,\"type\":null},\"templates\":[{\"inventory\":\"Build\",\"repository\":\"Demo\",\"environment\":\"Empty\",\"name\":\"Build\",\"playbook\":\"build.yml\",\"arguments\":\"[]\",\"allow_override_args_in_task\":false,\"description\":\"Build Job\",\"vault_key\":null,\"type\":\"build\",\"start_version\":\"1.0.0\",\"build_template\":null,\"view\":\"Build\",\"autorun\":false,\"survey_vars\":[],\"suppress_success_alerts\":false,\"cron\":\"* * * * *\"}],\"repositories\":[{\"name\":\"Demo\",\"git_url\":\"https://github.com/semaphoreui/semaphore-demo.git\",\"git_branch\":\"main\",\"ssh_key\":\"None\"}],\"keys\":[{\"name\":\"None\",\"type\":\"none\"},{\"name\":\"Vault Password\",\"type\":\"login_password\"}],\"views\":[{\"title\":\"Build\",\"position\":0}],\"inventories\":[{\"name\":\"Build\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"static\"},{\"name\":\"Dev\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"file\"},{\"name\":\"Prod\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"file\"}],\"environments\":[{\"name\":\"Empty\",\"password\":null,\"json\":\"{}\",\"env\":null}]}\n    properties:\n      meta:\n        type: object\n        properties:\n          name:\n            type: string\n          alert:\n            type: boolean\n          alert_chat:\n            type: string\n          max_parallel_tasks:\n            type: integer\n            minimum: 0\n          type:\n            type: string\n      templates:\n        type: array\n        items:\n          type: object\n          properties:\n            inventory:\n              type: string\n            repository:\n              type: string\n            environment:\n              type: string\n            view:\n              type: string\n            name:\n              type: string\n            playbook:\n              type: string\n            arguments:\n              type: string\n            description:\n              type: string\n            allow_override_args_in_task:\n              type: boolean\n            suppress_success_alerts:\n              type: boolean\n            cron:\n              type: string\n            build_template:\n              type: string\n            autorun:\n              type: boolean\n            survey_vars:\n              type: string\n            start_version:\n              type: string\n            type:\n              type: string\n            vault_key:\n              type: string\n            allow_override_branch_in_task:\n              type: boolean\n      repositories:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            git_url:\n              type: string\n            git_branch:\n              type: string\n            ssh_key:\n              type: string\n      keys:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            type:\n              type: string\n              enum: [ssh, login_password, none]\n      views:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            position:\n              type: integer\n              minimum: 0\n      inventories:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            inventory:\n              type: string\n            ssh_key:\n              type: string\n            become_key:\n              type: string\n            type:\n              type: string\n              enum: [static, static-yaml, file]\n      environments:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            password:\n              type: string\n            json:\n              type: string\n            env:\n              type: string\n\n  APIToken:\n    type: object\n    properties:\n      id:\n        type: string\n      created:\n        type: string\n      #        pattern: ^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\\d{2}:\\d{2}:\\d{2}Z$\n      expired:\n        type: boolean\n      user_id:\n        type: integer\n        minimum: 1\n\n  ProjectRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: Test\n      alert:\n        type: boolean\n      alert_chat:\n        type: string\n        example: Test\n      max_parallel_tasks:\n        type: integer\n        minimum: 0\n      type:\n        type: string\n      demo:\n        description: Create Demo project resources?\n        type: boolean\n\n  Project:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      created:\n        type: string\n      #        pattern: ^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\\d{2}:\\d{2}:\\d{2}Z$\n      alert:\n        type: boolean\n      alert_chat:\n        type: string\n        example: Test\n      max_parallel_tasks:\n        type: integer\n        minimum: 0\n      type:\n        type: string\n\n  AccessKeyRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        x-example: None\n        example: None\n      type:\n        type: string\n        enum: [none, ssh, login_password]\n        x-example: none\n      project_id:\n        type: integer\n        minimum: 1\n        x-example: 2\n      override_secret:\n        type: boolean\n      login_password:\n        type: object\n        properties:\n          password:\n            type: string\n            x-example: password\n            example: password\n          login:\n            type: string\n            x-example: username\n            example: username\n      ssh:\n        type: object\n        properties:\n          login:\n            type: string\n            x-example: user\n            example: user\n          passphrase:\n            type: string\n            x-example: passphrase\n            example: passphrase\n          private_key:\n            type: string\n            x-example: private key\n            example: private key\n\n  AccessKey:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      type:\n        type: string\n        enum: [none, ssh, login_password]\n      project_id:\n        type: integer\n\n  EnvironmentSecret:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n      type:\n        type: string\n        enum: [env, var]\n\n  EnvironmentSecretRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      secret:\n        type: string\n      type:\n        type: string\n        enum: [env, var]\n      operation:\n        type: string\n        enum: [create, update, delete]\n\n  EnvironmentRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 1\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      password:\n        type: string\n      json:\n        type: string\n        example: '{}'\n      env:\n        type: string\n        example: '{}'\n      secrets:\n        type: array\n        items:\n          $ref: '#/definitions/EnvironmentSecretRequest'\n\n  Environment:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      password:\n        type: string\n      json:\n        type: string\n        example: '{}'\n      env:\n        type: string\n        example: '{}'\n      secrets:\n        type: array\n        items:\n          $ref: '#/definitions/EnvironmentSecret'\n\n  InventoryRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      inventory:\n        type: string\n      ssh_key_id:\n        type: integer\n        minimum: 1\n      become_key_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n        minimum: 1\n      type:\n        type: string\n        enum: [static, static-yaml, file, terraform-workspace]\n\n  Inventory:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      inventory:\n        type: string\n      ssh_key_id:\n        type: integer\n      become_key_id:\n        type: integer\n      repository_id:\n        type: integer\n      type:\n        type: string\n        enum: [static, static-yaml, file, terraform-workspace]\n\n  Integration:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: deploy\n      project_id:\n        type: integer\n        minimum: 1\n      template_id:\n        type: integer\n        minimum: 1\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  IntegrationRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      params:\n        $ref: '#/definitions/TaskPrams'\n\n  IntegrationExtractValueRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      value_source:\n        type: string\n        enum: [body, header]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      variable:\n        type: string\n        example: variable\n      variable_type:\n        type: string\n        enum: [environment, task]\n\n  IntegrationExtractValue:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: extract this value\n      value_source:\n        type: string\n        enum: [body, header]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      variable:\n        type: string\n        example: variable\n      variable_type:\n        type: string\n        enum: [environment, task]\n      integration_id:\n        type: integer\n\n  IntegrationMatcherRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      match_type:\n        type: string\n        enum: [body, header]\n      method:\n        type: string\n        enum: [equals, unequals, contains]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      value:\n        type: string\n        example: value\n\n  IntegrationMatcher:\n    type: object\n    properties:\n      id:\n        type: integer\n      integration_id:\n        type: integer\n      name:\n        type: string\n        example: deploy\n      match_type:\n        type: string\n        enum: [body, header]\n      method:\n        type: string\n        enum: [equals, unequals, contains]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      value:\n        type: string\n        example: value\n\n  IntegrationAlias:\n    type: object\n    properties:\n      id:\n        type: integer\n      url:\n        type: string\n\n  RepositoryRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      git_url:\n        type: string\n        example: git@example.com\n      git_branch:\n        type: string\n        example: master\n      ssh_key_id:\n        type: integer\n  \n  Repository:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      git_url:\n        type: string\n        example: git@example.com\n      git_branch:\n        type: string\n        example: master\n      ssh_key_id:\n        type: integer\n\n  Task:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 23\n      template_id:\n        type: integer\n      status:\n        type: string\n      playbook:\n        type: string\n      environment:\n        type: string\n      secret:\n        type: string\n      arguments:\n        type: string\n      git_branch:\n        type: string\n      message:\n        type: string\n      inventory_id:\n        type: integer\n      params:\n        allOf:\n          - $ref: '#/definitions/AnsibleTaskParams'\n          - $ref: '#/definitions/TerraformTaskParams'\n      limit:\n        type: string\n\n  AnsibleTaskParams:\n    type: object\n    properties:\n      debug:\n        type: boolean\n      dry_run:\n        type: boolean\n      diff:\n        type: boolean\n      limit:\n        type: array\n        items:\n          type: string\n      tags:\n        type: array\n        items:\n          type: string\n      skip_tags:\n        type: array\n        items:\n          type: string\n\n  TerraformTaskParams:\n    type: object\n    properties:\n      plan:\n        type: boolean\n      destroy:\n        type: boolean\n      auto_approve:\n        type: boolean\n      upgrade:\n        type: boolean\n\n  TaskPrams:\n    type: object\n    properties:\n      environment:\n        type: string\n      git_branch:\n        type: string\n      message:\n        type: string\n#      inventory_id:\n#        type: integer\n#        x-nullable: true\n      arguments:\n        type: string\n      params:\n        allOf:\n          - $ref: '#/definitions/AnsibleTaskParams'\n          - $ref: '#/definitions/TerraformTaskParams'\n\n  TaskOutput:\n    type: object\n    properties:\n      task_id:\n        type: integer\n        example: 23\n      time:\n        type: string\n        format: date-time\n      output:\n        type: string\n\n  TemplateRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 1\n      project_id:\n        type: integer\n        minimum: 1\n      inventory_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n        minimum: 1\n      environment_id:\n        type: integer\n        minimum: 1\n      view_id:\n        type: integer\n        minimum: 1\n      vaults:\n        type: array\n        items:\n          $ref: '#/definitions/TemplateVault'\n      name:\n        type: string\n        example: Test\n      playbook:\n        type: string\n        example: test.yml\n      arguments:\n        type: string\n        example: '[]'\n      description:\n        type: string\n        example: Hello, World!\n      allow_override_args_in_task:\n        type: boolean\n        example: false\n      limit:\n        type: string\n        example: ''\n      suppress_success_alerts:\n        type: boolean\n      app:\n        type: string\n        example: ansible\n      git_branch:\n        type: string\n        example: main\n      survey_vars:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVar\"\n      type:\n        type: string\n        enum: [\"\", build, deploy]\n      start_version:\n        type: string\n      build_template_id:\n        type: integer\n      autorun:\n        type: boolean\n\n  Template:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      project_id:\n        type: integer\n        minimum: 1\n      inventory_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n      environment_id:\n        type: integer\n        minimum: 1\n      view_id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      playbook:\n        type: string\n        example: test.yml\n      arguments:\n        type: string\n        example: '[]'\n      description:\n        type: string\n        example: Hello, World!\n      allow_override_args_in_task:\n        type: boolean\n        example: false\n      suppress_success_alerts:\n        type: boolean\n      app:\n        type: string\n      git_branch:\n        type: string\n        example: main\n      type:\n        type: string\n        enum: [\"\", build, deploy]\n      start_version:\n        type: string\n      build_template_id:\n        type: integer\n      autorun:\n        type: boolean\n      survey_vars:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVar\"\n      vaults:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateVault\"\n\n  TemplateSurveyVar:\n    type: object\n    properties:\n      name:\n        type: string\n      title:\n        type: string\n      description:\n        type: string\n      type:\n        type: string\n        enum: [\"\", int, enum, secret] # String => \"\", Integer => \"int\"\n        example: int\n      required:\n        type: boolean\n      values:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVarValue\"\n\n  TemplateSurveyVarValue:\n    type: object\n    properties:\n      name:\n        type: string\n      value:\n        type: string\n\n  TemplateVault:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: default\n      type:\n        type: string\n        enum: [password, script]\n        example: script\n      vault_key_id:\n        type: integer\n      script:\n        type: string\n        example: path/to/script-client.py\n\n  ScheduleRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      cron_format:\n        type: string\n        x-example: \"* * * 1 *\"\n        example: \"* * * 1 *\"\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      name:\n        type: string\n      active:\n        type: boolean\n      run_at:\n        type: string\n        format: date-time\n      type:\n        type: string\n        enum: ['', 'run_at']\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  Schedule:\n    type: object\n    properties:\n      id:\n        type: integer\n      cron_format:\n        type: string\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      name:\n        type: string\n      active:\n        type: boolean\n      run_at:\n        type: string\n        format: date-time\n      type:\n        type: string\n        enum: ['', 'run_at']\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  ViewRequest:\n    type: object\n    properties:\n      title:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      position:\n        type: integer\n        minimum: 1\n  View:\n    type: object\n    properties:\n      id:\n        type: integer\n      title:\n        type: string\n      project_id:\n        type: integer\n      position:\n        type: integer\n      hidden:\n        type: boolean\n      type:\n        type: string\n        enum: [\"\", all]\n      sort_column:\n        type: string\n        enum: [name]\n      sort_reverse:\n        type: boolean\n\n  Runner:\n    type: object\n    properties:\n      token:\n        type: string\n\n  Event:\n    type: object\n    properties:\n      project_id:\n        type: integer\n      user_id:\n        type: integer\n      object_id:\n        type: integer\n      object_type:\n        type: string\n      description:\n        type: string\n\n  InfoType:\n    type: object\n    properties:\n      version:\n        type: string\n      ansible:\n        type: string\n      web_host:\n        type: string\n      use_remote_runner:\n        type: boolean\n      auth_methods:\n        type: object\n      git_client:\n        type: string\n      schedule_timezone:\n        type: string\n      premium_features:\n        type: object\n\nsecurityDefinitions:\n  cookie:\n    type: apiKey\n    name: Cookie\n    in: header\n  bearer:\n    type: apiKey\n    name: Authorization\n    in: header\n\nsecurity:\n  - bearer: []\n  - cookie: []\n\nparameters:\n  project_id:\n    name: project_id\n    description: Project ID\n    in: path\n    type: integer\n    required: true\n    x-example: 1\n  user_id:\n    name: user_id\n    description: User ID\n    in: path\n    type: integer\n    required: true\n    x-example: 2\n  key_id:\n    name: key_id\n    description: key ID\n    in: path\n    type: integer\n    required: true\n    x-example: 3\n  repository_id:\n    name: repository_id\n    description: repository ID\n    in: path\n    type: integer\n    required: true\n    x-example: 4\n  inventory_id:\n    name: inventory_id\n    description: inventory ID\n    in: path\n    type: integer\n    required: true\n    x-example: 5\n  environment_id:\n    name: environment_id\n    description: environment ID\n    in: path\n    type: integer\n    required: true\n    x-example: 6\n  template_id:\n    name: template_id\n    description: template ID\n    in: path\n    type: integer\n    required: true\n    x-example: 7\n  task_id:\n    name: task_id\n    description: task ID\n    in: path\n    type: integer\n    required: true\n    x-example: 8\n  schedule_id:\n    name: schedule_id\n    description: schedule ID\n    in: path\n    type: integer\n    required: true\n    x-example: 9\n  view_id:\n    name: view_id\n    description: view ID\n    in: path\n    type: integer\n    required: true\n    x-example: 10\n  integration_id:\n    name: integration_id\n    description: integration ID\n    in: path\n    type: integer\n    required: true\n    x-example: 11\n  extractvalue_id:\n    name: extractvalue_id\n    description: extractValue ID\n    in: path\n    type: integer\n    required: true\n    x-example: 12\n  matcher_id:\n    name: matcher_id\n    description: matcher ID\n    in: path\n    type: integer\n    required: true\n    x-example: 13\n  alias_id:\n    name: alias_id\n    description: Integration Alias ID\n    in: path\n    type: integer\n    required: true\n    x-example: 15\n  invite_id:\n    name: invite_id\n    description: Invite ID\n    in: path\n    type: integer\n    required: true\n    x-example: 14\n\npaths:\n  /debug/gc:\n    post:\n      summary: Garbage collector\n      description: Run the garbage collector\n      responses:\n        204:\n          description: Successful \"OK\" reply\n\n  /ping:\n    get:\n      summary: PING test\n      produces:\n        - text/plain\n      security: []   # No security\n      responses:\n        200:\n          description: Successful \"PONG\" reply\n          schema:\n            $ref: \"#/definitions/Pong\"\n          headers:\n            content-type:\n              type: string\n              x-example: text/plain; charset=utf-8\n\n  /ws:\n    get:\n      summary: Websocket handler\n      schemes:\n        - ws\n        - wss\n      responses:\n        200:\n          description: OK\n        401:\n          description: not authenticated\n\n  /info:\n    get:\n      summary: Fetches information about semaphore\n      description: you must be authenticated to use this\n      responses:\n        200:\n          description: ok\n          schema:\n            $ref: \"#/definitions/InfoType\"\n\n  # Authentication\n  /auth/login:\n    get:\n      tags:\n        - authentication\n      summary: Fetches login metadata\n      description: Fetches metadata for login, such as available OIDC providers\n      security: []\n      responses:\n        200:\n          description: Login metadata\n          schema:\n            $ref: \"#/definitions/LoginMetadata\"\n    post:\n      tags:\n        - authentication\n      summary: Performs Login\n      description: Upon success you will be logged in\n      security: []   # No security\n      parameters:\n        - name: Login Body\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/Login'\n      responses:\n        204:\n          description: You are logged in\n        400:\n          description: something in body is missing / is invalid\n\n  /auth/logout:\n    post:\n      tags:\n        - authentication\n      summary: Destroys current session\n      responses:\n        204:\n          description: Your session was successfully nuked\n\n  /auth/oidc/{provider_id}/login:\n    parameters:\n      - name: provider_id\n        in: path\n        type: string\n        required: true\n        x-example: \"mysso\"\n    get:\n      tags:\n        - authentication\n      summary: Begin OIDC authentication flow and redirect to OIDC provider\n      description: The user agent is redirected to this endpoint when chosing to sign in via OIDC\n      responses:\n        302:\n          description: Redirection to the OIDC provider on success, or to the login page on error\n\n  /auth/oidc/{provider_id}/redirect:\n    parameters:\n      - name: provider_id\n        in: path\n        type: string\n        required: true\n        x-example: \"mysso\"\n    get:\n      tags:\n        - authentication\n      summary: Finish OIDC authentication flow, upon succes you will be logged in\n      description: The user agent is redirected here by the OIDC provider to complete authentication\n      responses:\n        302:\n          description: Redirection to the Semaphore root URL on success, or to the login page on error\n\n  # User Tokens\n  /user/:\n    get:\n      tags:\n        - user\n      summary: Fetch logged in user\n      responses:\n        200:\n          description: User\n          schema:\n            $ref: \"#/definitions/User\"\n\n  /user/tokens:\n    get:\n      tags:\n        - authentication\n        - user\n      summary: Fetch API tokens for user\n      responses:\n        200:\n          description: API Tokens\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/APIToken\"\n    post:\n      tags:\n        - authentication\n        - user\n      summary: Create an API token\n      responses:\n        201:\n          description: API Token\n          schema:\n            $ref: \"#/definitions/APIToken\"\n\n  /user/tokens/{api_token_id}:\n    parameters:\n      - name: api_token_id\n        in: path\n        type: string\n        required: true\n        x-example: \"kwofd61g93-yuqvex8efmhjkgnbxlo8mp1tin6spyhu=\"\n    delete:\n      tags:\n        - authentication\n        - user\n      summary: Expires API token\n      responses:\n        204:\n          description: Expired API Token\n\n  # User Profiles\n  /users:\n    get:\n      tags:\n        - user\n      summary: Fetches all users\n      responses:\n        200:\n          description: Users\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/User\"\n    post:\n      tags:\n        - user\n      summary: Creates a user\n      consumes:\n        - application/json\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/UserRequest\"\n      responses:\n        400:\n          description: User creation failed\n        201:\n          description: User created\n          schema:\n            $ref: \"#/definitions/User\"\n\n  /users/{user_id}/:\n    parameters:\n      - $ref: \"#/parameters/user_id\"\n    get:\n      tags:\n        - user\n      summary: Fetches a user profile\n      responses:\n        200:\n          description: User profile\n          schema:\n            $ref: \"#/definitions/User\"\n    put:\n      tags:\n        - user\n      summary: Updates user details\n      consumes:\n        - application/json\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/UserPutRequest\"\n      responses:\n        204:\n          description: User Updated\n\n    delete:\n      tags:\n        - user\n      summary: Deletes user\n      responses:\n        204:\n          description: User deleted\n\n  /users/{user_id}/password:\n    parameters:\n      - $ref: \"#/parameters/user_id\"\n    post:\n      tags:\n        - user\n      summary: Updates user password\n      consumes:\n        - application/json\n      parameters:\n        - name: Password\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              password:\n                type: string\n                format: password\n      responses:\n        204:\n          description: Password updated\n\n  # Projects\n  /projects:\n    get:\n      tags:\n        - project\n      summary: Get projects\n      responses:\n        200:\n          description: List of projects\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Project\"\n    post:\n      tags:\n        - project\n      summary: Create a new project\n      consumes:\n        - application/json\n      parameters:\n        - name: Project\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/ProjectRequest'\n      responses:\n        201:\n          description: Created project\n          schema:\n            $ref: \"#/definitions/Project\"\n  \n  /projects/restore:\n    post:\n      tags:\n        - project\n      summary: Restore Project\n      consumes:\n        - application/json\n      parameters:\n        - name: Backup\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/ProjectBackup'\n      responses:\n        200:\n          description: Created project\n          schema:\n            $ref: \"#/definitions/Project\"\n\n  /events:\n    get:\n      summary: Get Events related to Semaphore and projects you are part of\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n  \n  /events/last:\n    get:\n      summary: Get last 200 Events related to Semaphore and projects you are part of\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n\n  /project/{project_id}/:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Fetch project\n      responses:\n        200:\n          description: Project\n          schema:\n            $ref: \"#/definitions/Project\"\n    put:\n      tags:\n        - project\n      summary: Update project\n      parameters:\n        - name: Project\n          in: body\n          required: true\n          schema:\n            allOf:\n              - $ref: '#/definitions/ProjectRequest'\n              - properties:\n                  id:\n                    type: integer\n                    minimum: 1\n      responses:\n        204:\n          description: Project saved\n    delete:\n      tags:\n        - project\n      summary: Delete project\n      responses:\n        204:\n          description: Project deleted\n\n  /project/{project_id}/backup:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Backup A Project\n      responses:\n        200:\n          description: Backup\n          schema:\n            $ref: '#/definitions/ProjectBackup'\n\n  /project/{project_id}/role:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Fetch permissions of the current user for project\n      responses:\n        200:\n          description: Permissions\n          schema:\n            type: object\n            properties:\n              role:\n                type: string\n                example: owner\n              permissions:\n                type: number\n                example: 0\n\n\n  /project/{project_id}/events:\n    parameters:\n      - $ref: '#/parameters/project_id'\n    get:\n      tags:\n        - project\n      summary: Get Events related to this project\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n\n  # User management\n  /project/{project_id}/users:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Get users linked to project\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, username, email, role]\n          description: sorting name\n          x-example: email\n        - name: order\n          in: query\n          required: true\n          type: string\n          enum: [asc, desc]\n          description: ordering manner\n          x-example: desc\n      responses:\n        200:\n          description: Users\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/ProjectUser\"\n    post:\n      tags:\n        - project\n      summary: Link user to project\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              user_id:\n                type: integer\n                minimum: 2\n              role:\n                type: string\n                enum: [owner, manager, task_runner, guest]\n                example: owner\n      responses:\n        204:\n          description: User added\n  /project/{project_id}/users/{user_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/user_id\"\n    delete:\n      tags:\n        - project\n      summary: Removes user from project\n      responses:\n        204:\n          description: User removed\n    put:\n      parameters:\n        - name: Project User\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              role:\n                type: string\n                enum: [owner, manager, task_runner, guest]\n                example: owner\n      summary: Update user role\n      tags:\n        - project\n      responses:\n        204:\n          description: User updated\n\n  # Invite management\n#  /project/{project_id}/invites:\n#    parameters:\n#      - $ref: \"#/parameters/project_id\"\n#    get:\n#      tags:\n#        - project\n#      summary: Get invitations for project\n#      parameters:\n#        - name: sort\n#          in: query\n#          required: false\n#          type: string\n#          enum: [created, status, role]\n#          description: sorting field\n#          x-example: created\n#        - name: order\n#          in: query\n#          required: false\n#          type: string\n#          enum: [asc, desc]\n#          description: ordering manner\n#          x-example: desc\n#      responses:\n#        200:\n#          description: Project invitations\n#          schema:\n#            type: array\n#            items:\n#              $ref: \"#/definitions/ProjectInvite\"\n#    post:\n#      tags:\n#        - project\n#      summary: Create project invitation\n#      parameters:\n#        - name: Invite\n#          in: body\n#          required: true\n#          schema:\n#            $ref: \"#/definitions/ProjectInviteRequest\"\n#      responses:\n#        201:\n#          description: Invitation created\n#          schema:\n#            $ref: \"#/definitions/ProjectInvite\"\n#        400:\n#          description: Bad request (invalid role, missing user_id/email, or both provided)\n#        409:\n#          description: User already a member or invitation already exists\n#\n#  /project/{project_id}/invites/{invite_id}:\n#    parameters:\n#      - $ref: \"#/parameters/project_id\"\n#      - $ref: \"#/parameters/invite_id\"\n#    get:\n#      tags:\n#        - project\n#      summary: Get specific project invitation\n#      responses:\n#        200:\n#          description: Project invitation\n#          schema:\n#            $ref: \"#/definitions/ProjectInvite\"\n#        404:\n#          description: Invitation not found\n#    put:\n#      tags:\n#        - project\n#      summary: Update project invitation status\n#      parameters:\n#        - name: Invite Update\n#          in: body\n#          required: true\n#          schema:\n#            type: object\n#            properties:\n#              status:\n#                type: string\n#                enum: [pending, declined, expired]\n#                example: declined\n#      responses:\n#        204:\n#          description: Invitation updated\n#        400:\n#          description: Invalid status or status transition\n#    delete:\n#      tags:\n#        - project\n#      summary: Delete project invitation\n#      responses:\n#        204:\n#          description: Invitation deleted\n#\n#  /invites/accept:\n#    post:\n#      tags:\n#        - project\n#      summary: Accept project invitation\n#      parameters:\n#        - name: Accept Invite\n#          in: body\n#          required: true\n#          schema:\n#            $ref: \"#/definitions/AcceptInviteRequest\"\n#      responses:\n#        204:\n#          description: Invitation accepted successfully\n#        400:\n#          description: Invalid token, invitation expired, or user already a member\n#        403:\n#          description: Invitation not for this user\n#        404:\n#          description: Invitation not found\n\n  /project/{project_id}/integrations:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - integration\n      summary: get all integrations\n      responses:\n        200:\n          description: integration\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Integration\"\n    post:\n      summary: create a new integration\n      tags:\n        - integration\n      parameters:\n        - name: Integration\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationRequest\"\n      responses:\n        201:\n          description: Integration Created\n          schema:\n            $ref: \"#/definitions/Integration\"\n  \n  /project/{project_id}/integrations/{integration_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration\n      responses:\n        200:\n          description: Integration Value\n          schema:\n            $ref: \"#/definitions/Integration\"\n    put:\n      tags:\n        - integration\n      summary: Update Integration\n      parameters:\n        - name: Integration\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationRequest\"\n      responses:\n        204:\n          description: Integration updated\n    delete:\n      tags:\n        - integration\n      summary: Remove integration\n      responses:\n        204:\n          description: integration removed\n  /project/{project_id}/integrations/{integration_id}/values:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration Extracted Values linked to integration extractor\n      responses:\n        200:\n          description: Integration Extracted Value\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationExtractValue\"\n    post:\n      tags:\n        - integration\n      summary: Add Integration Extracted Value\n      parameters:\n        - name: Integration Extracted Value\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationExtractValue\"\n      responses:\n        201:\n          description: Integration Extract Value Created\n        400:\n          description: Bad Integration Extract Value params\n  /project/{project_id}/integrations/{integration_id}/values/{extractvalue_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/extractvalue_id\"\n    put:\n      tags:\n        - integration\n      summary: Updates Integration ExtractValue\n      parameters:\n        - name: Integration ExtractValue\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationExtractValueRequest\"\n      responses:\n        204:\n          description: Integration Extract Value updated\n        400:\n          description: Bad integration extract value parameter\n    delete:\n      tags:\n        - integration\n      summary: Removes integration extract value\n      responses:\n        204:\n          description: integration extract value removed\n  /project/{project_id}/integrations/{integration_id}/matchers:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration Matcher linked to integration extractor\n      responses:\n        200:\n          description: Integration Matcher\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationMatcher\"\n    post:\n      tags:\n        - integration\n      summary: Add Integration Matcher\n      parameters:\n        - name: Integration Matcher\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationMatcher\"\n      responses:\n        200:\n          description: Integration Matcher Created\n        400:\n          description: Bad Integration Matcher params\n  /project/{project_id}/integrations/{integration_id}/matchers/{matcher_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/matcher_id\"\n    put:\n      tags:\n        - integration\n      summary: Updates Integration Matcher\n      parameters:\n        - name: Integration Matcher\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationMatcherRequest\"\n      responses:\n        204:\n          description: Integration Matcher updated\n        400:\n          description: Bad integration matcher parameter\n    delete:\n      tags:\n        - integration\n      summary: Removes integration matcher\n      responses:\n        204:\n          description: integration matcher removed\n\n  /project/{project_id}/integrations/aliases:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - integration\n      summary: Get all integration aliases for the project\n      responses:\n        200:\n          description: Integration Aliases\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationAlias\"\n    post:\n      tags:\n        - integration\n      summary: Create a new integration alias for the project\n      responses:\n        200:\n          description: Integration Alias Created\n          schema:\n            $ref: \"#/definitions/IntegrationAlias\"\n\n  /project/{project_id}/integrations/aliases/{alias_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/alias_id\"\n    delete:\n      tags:\n        - integration\n      summary: Remove integration alias\n      responses:\n        204:\n          description: integration alias removed\n\n  /project/{project_id}/integrations/{integration_id}/aliases:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get all aliases for an integration\n      responses:\n        200:\n          description: Integration Aliases\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationAlias\"\n    post:\n      tags:\n        - integration\n      summary: Create a new alias for an integration\n      responses:\n        200:\n          description: Integration Alias Created\n          schema:\n            $ref: \"#/definitions/IntegrationAlias\"\n\n  /project/{project_id}/integrations/{integration_id}/aliases/{alias_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/alias_id\"\n    delete:\n      tags:\n        - integration\n      summary: Remove integration alias\n      responses:\n        204:\n          description: integration alias removed\n\n  # project access keys\n  /project/{project_id}/keys:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - key-store\n      summary: Get access keys linked to project\n      parameters:\n        # TODO - the space in this parameter name results in a dredd warning\n        - name: Key type\n          in: query\n          required: false\n          type: string\n          enum: [none, ssh, login_password]\n          description: Filter by key type\n          x-example: none\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, type]\n          description: sorting name\n          x-example: type\n        - name: order\n          in: query\n          required: true\n          type: string\n          enum: [asc, desc]\n          description: ordering manner\n          x-example: asc\n      responses:\n        200:\n          description: Access Keys\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/AccessKey\"\n    post:\n      tags:\n        - key-store\n      summary: Add access key\n      parameters:\n        - name: Access Key\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/AccessKeyRequest\"\n      responses:\n        201:\n          description: Access Key created\n          schema:\n            $ref: \"#/definitions/AccessKey\"\n        400:\n          description: Bad type\n  /project/{project_id}/keys/{key_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/key_id\"\n    put:\n      tags:\n        - key-store\n      summary: Updates access key\n      parameters:\n        - name: Access Key\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/AccessKeyRequest\"\n      responses:\n        204:\n          description: Key updated\n        400:\n          description: Bad type\n    delete:\n      tags:\n        - key-store\n      summary: Removes access key\n      responses:\n        204:\n          description: access key removed\n\n  # project repositories\n  /project/{project_id}/repositories:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - repository\n      summary: Get repositories\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, git_url, ssh_key]\n          description: sorting name\n        - name: order\n          in: query\n          required: true\n          type: string\n          format: asc/desc\n          enum: [asc, desc]\n          description: ordering manner\n      responses:\n        200:\n          description: repositories\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Repository\"\n    post:\n      tags:\n        - repository\n      summary: Add repository\n      parameters:\n        - name: Repository\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/RepositoryRequest\"\n      responses:\n        201:\n          description: Repository created\n          schema:\n            $ref: \"#/definitions/Repository\"\n\n  /project/{project_id}/repositories/{repository_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/repository_id\"\n    get:\n      tags:\n        - repository\n      summary: Get repository\n      responses:\n        200:\n          description: repository object\n          schema:\n            $ref: \"#/definitions/Repository\"\n    put:\n      tags:\n        - repository\n      summary: Updates repository\n      parameters:\n        - name: Repository\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/RepositoryRequest\"\n      responses:\n        204:\n          description: Repository updated\n        400:\n          description: Bad request\n    delete:\n      tags:\n        - repository\n      summary: Removes repository\n      responses:\n        204:\n          description: repository removed\n\n  # project inventory\n  /project/{project_id}/inventory:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - inventory\n      summary: Get inventory\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          description: sorting name\n          enum: [name, type]\n        - name: order\n          in: query\n          required: true\n          type: string\n          description: ordering manner\n          enum: [asc, desc]\n      responses:\n        200:\n          description: inventory\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Inventory\"\n    post:\n      tags:\n        - inventory\n      summary: create inventory\n      parameters:\n        - name: Inventory\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/InventoryRequest\"\n      responses:\n        201:\n          description: inventory created\n          schema:\n            $ref: \"#/definitions/Inventory\"\n  /project/{project_id}/inventory/{inventory_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/inventory_id\"\n    get:\n      tags:\n        - inventory\n      summary: Get inventory\n      responses:\n        200:\n          description: inventory object\n          schema:\n            $ref: \"#/definitions/Inventory\"\n    put:\n      tags:\n        - inventory\n      summary: Updates inventory\n      parameters:\n        - name: Inventory\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/InventoryRequest\"\n      responses:\n        204:\n          description: Inventory updated\n    delete:\n      tags:\n        - inventory\n      summary: Removes inventory\n      responses:\n        204:\n          description: inventory removed\n\n  # project environment\n  /project/{project_id}/environment:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - variable-group\n      summary: Get environment\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          format: name\n          description: sorting name\n          x-example: name\n        - name: order\n          in: query\n          required: true\n          type: string\n          format: asc/desc\n          description: ordering manner\n          x-example: desc\n      responses:\n        200:\n          description: environment\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Environment\"\n    post:\n      tags:\n        - variable-group\n      summary: Add environment\n      parameters:\n        - name: environment\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/EnvironmentRequest\"\n      responses:\n        201:\n          description: Environment created\n          schema:\n            $ref: \"#/definitions/Environment\"\n  /project/{project_id}/environment/{environment_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/environment_id\"\n    get:\n      tags:\n        - variable-group\n      summary: Get environment\n      responses:\n        200:\n          description: environment object\n          schema:\n            $ref: \"#/definitions/Environment\"\n    put:\n      tags:\n        - variable-group\n      summary: Update environment\n      parameters:\n        - name: environment\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/EnvironmentRequest\"\n      responses:\n        204:\n          description: Environment Updated\n    delete:\n      tags:\n        - variable-group\n      summary: Removes environment\n      responses:\n        204:\n          description: environment removed\n\n  # project templates\n  /project/{project_id}/templates:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - template\n      summary: Get template\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          description: sorting name\n          enum: [name, playbook, ssh_key, inventory, environment, repository]\n        - name: order\n          in: query\n          required: true\n          type: string\n          description: ordering manner\n          enum: [asc, desc]\n      responses:\n        200:\n          description: template\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Template\"\n              properties:\n                survey_vars:\n                  type: array\n                  items:\n                    $ref: \"#/definitions/TemplateSurveyVar\"\n                last_task:\n                  $ref: \"#/definitions/Task\"\n    post:\n      tags:\n        - template\n      summary: create template\n      parameters:\n        - name: template\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/TemplateRequest\"\n      responses:\n        201:\n          description: template created\n          schema:\n            $ref: \"#/definitions/Template\"\n\n  /project/{project_id}/templates/{template_id}/stop_all_tasks:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/template_id\"\n    post:\n      tags:\n        - template\n      summary: Stop all active tasks of template\n      parameters:\n        - name: body\n          in: body\n          required: false\n          schema:\n            type: object\n            properties:\n              force:\n                type: boolean\n                description: Force stop (kill) all tasks immediately\n      responses:\n        204:\n          description: tasks stopped\n\n  /project/{project_id}/templates/{template_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/template_id\"\n    get:\n      tags:\n        - template\n      summary: Get template\n      responses:\n        200:\n          description: template object\n          schema:\n            $ref: \"#/definitions/Template\"\n    put:\n      tags:\n        - template\n      summary: Updates template\n      parameters:\n        - name: template\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/TemplateRequest\"\n      responses:\n        204:\n          description: template updated\n    delete:\n      tags:\n        - template\n      summary: Removes template\n      responses:\n        204:\n          description: template removed\n\n  # project schedules\n  /project/{project_id}/schedules/{schedule_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/schedule_id\"\n    get:\n      tags:\n        - schedule\n      summary: Get schedule\n      responses:\n        200:\n          description: Schedule\n          schema:\n            $ref: \"#/definitions/Schedule\"\n    delete:\n      tags:\n        - schedule\n      summary: Deletes schedule\n      responses:\n        204:\n          description: schedule deleted\n    put:\n      tags:\n        - schedule\n      summary: Updates schedule\n      parameters:\n        - name: schedule\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ScheduleRequest\"\n      responses:\n        204:\n          description: schedule updated\n\n  /project/{project_id}/schedules:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    post:\n      tags:\n        - schedule\n      summary: create schedule\n      parameters:\n        - name: schedule\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ScheduleRequest\"\n      responses:\n        201:\n          description: schedule created\n          schema:\n            $ref: \"#/definitions/Schedule\"\n\n  # project views\n  /project/{project_id}/views:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Get view\n      responses:\n        200:\n          description: view\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/View\"\n    post:\n      tags:\n        - project\n      summary: create view\n      parameters:\n        - name: view\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ViewRequest\"\n      responses:\n        201:\n          description: view created\n          schema:\n            $ref: \"#/definitions/View\"\n  /project/{project_id}/views/{view_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/view_id\"\n    get:\n      tags:\n        - project\n      summary: Get view\n      responses:\n        200:\n          description: view object\n          schema:\n            $ref: \"#/definitions/View\"\n    put:\n      tags:\n        - project\n      summary: Updates view\n      parameters:\n        - name: view\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ViewRequest\"\n      responses:\n        204:\n          description: view updated\n    delete:\n      tags:\n        - project\n      summary: Removes view\n      responses:\n        204:\n          description: view removed\n\n\n  # tasks\n  /project/{project_id}/tasks:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - task\n      summary: Get Tasks related to current project\n      responses:\n        200:\n          description: Array of tasks in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Task'\n    post:\n      tags:\n        - task\n      summary: Starts a job\n      parameters:\n        - name: task\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              template_id:\n                type: integer\n              debug:\n                type: boolean\n              dry_run:\n                type: boolean\n              diff:\n                type: boolean\n              playbook:\n                type: string\n              environment:\n                type: string\n              limit:\n                type: string\n              git_branch:\n                type: string\n              message:\n                type: string\n              arguments:\n                type: string\n              inventory_id:\n                type: integer\n      responses:\n        201:\n          description: Task queued\n          schema:\n            $ref: \"#/definitions/Task\"\n\n\n  /project/{project_id}/tasks/last:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - task\n      summary: Get last 200 Tasks related to current project\n      responses:\n        200:\n          description: Array of tasks in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Task'\n\n\n  /project/{project_id}/tasks/{task_id}/stop:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: '#/parameters/task_id'\n    post:\n      tags:\n        - task\n      summary: Stop a job\n      parameters:\n        - name: body\n          in: body\n          required: false\n          schema:\n            type: object\n            properties:\n              force:\n                type: boolean\n                description: Force stop (kill) the task immediately\n      responses:\n        204:\n          description: Task queued\n\n  /project/{project_id}/tasks/{task_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/task_id\"\n    get:\n      tags:\n        - task\n      summary: Get a single task\n      responses:\n        200:\n          description: Task\n          schema:\n            $ref: \"#/definitions/Task\"\n    delete:\n      tags:\n        - task\n      summary: Deletes task (including output)\n      responses:\n        204:\n          description: task deleted\n\n  /project/{project_id}/tasks/{task_id}/output:\n    parameters:\n      - $ref: '#/parameters/project_id'\n      - $ref: '#/parameters/task_id'\n    get:\n      tags:\n        - task\n      summary: Get task output\n      responses:\n        200:\n          description: output\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/TaskOutput\"\n\n  /project/{project_id}/tasks/{task_id}/raw_output:\n    parameters:\n      - $ref: '#/parameters/project_id'\n      - $ref: '#/parameters/task_id'\n    get:\n      tags:\n        - task\n      summary: Get task raw output\n      responses:\n        200:\n          description: output\n          headers:\n            content-type:\n              type: string\n              x-example: text/plain; charset=utf-8\n  /apps:\n    get:\n      summary: Get apps\n      responses:\n        200:\n          description: Apps\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/App\"\n\n  /project/{project_id}/notifications/test:\n    post:\n      tags:\n        - project\n      summary: Send test notification\n      description: Sends a test notification to all enabled messengers for the project\n      parameters:\n        - $ref: \"#/parameters/project_id\"\n      responses:\n        409:\n          description: Alerts not enabled for the project\n#        204:\n#          description: Test notification dispatched (or alerts disabled)"
  },
  {
    "path": "cli/cmd/migrate.go",
    "content": "package cmd\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/db/factory\"\n\t\"github.com/semaphoreui/semaphore/db/migration\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar migrationArgs struct {\n\tundoTo             string\n\tapplyTo            string\n\tfromBoltDb         string\n\terrLogSize         int\n\tskipTaskOutput     bool\n\tmergeExistingUsers bool\n}\n\nfunc init() {\n\tmigrateCmd.PersistentFlags().StringVar(&migrationArgs.undoTo, \"undo-to\", \"\", \"Undo to specific version\")\n\tmigrateCmd.PersistentFlags().StringVar(&migrationArgs.applyTo, \"apply-to\", \"\", \"Apply to specific version\")\n\tmigrateCmd.PersistentFlags().StringVar(&migrationArgs.fromBoltDb, \"from-boltdb\", \"\", \"Path to boltDB data file\")\n\tmigrateCmd.PersistentFlags().IntVar(&migrationArgs.errLogSize, \"err-log-size\", 0, \"Error log size\")\n\tmigrateCmd.PersistentFlags().BoolVar(&migrationArgs.skipTaskOutput, \"skip-task-output\", false, \"Skip task output importing during migration\")\n\tmigrateCmd.PersistentFlags().BoolVar(&migrationArgs.mergeExistingUsers, \"merge-existing-users\", false, \"Reuse existing users matched by username instead of failing on conflict\")\n\n\trootCmd.AddCommand(migrateCmd)\n}\n\nvar migrateCmd = &cobra.Command{\n\tUse:   \"migrate\",\n\tShort: \"Execute migrations\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tif migrationArgs.undoTo != \"\" && migrationArgs.applyTo != \"\" {\n\t\t\tpanic(\"Cannot specify both --undo-to and --apply-to\")\n\t\t}\n\n\t\tvar undoTo, applyTo *string\n\n\t\tif migrationArgs.undoTo != \"\" {\n\t\t\tundoTo = &migrationArgs.undoTo\n\t\t}\n\n\t\tif migrationArgs.applyTo != \"\" {\n\t\t\tapplyTo = &migrationArgs.applyTo\n\t\t}\n\n\t\tstore := createStoreWithMigrationVersion(\"migrate\", undoTo, applyTo)\n\n\t\tdefer store.Close(\"migrate\")\n\t\tutil.Config.PrintDbInfo()\n\n\t\tif migrationArgs.fromBoltDb != \"\" {\n\t\t\tmigrateBoltDb(migrationArgs.fromBoltDb)\n\t\t}\n\t},\n}\n\nfunc migrateBoltDb(boltDbPath string) {\n\n\tboltCfg := util.DbConfig{\n\t\tDialect:  util.DbDriverBolt,\n\t\tHostname: boltDbPath,\n\t}\n\n\tif boltCfg.Dialect != util.DbDriverBolt {\n\t\tfmt.Printf(\"Error: Source database must be BoltDB (dialect: %s)\\n\", boltCfg.Dialect)\n\t\treturn\n\t}\n\n\tfile, err := os.Stat(boltDbPath)\n\tif err != nil {\n\t\tif errors.Is(err, os.ErrNotExist) {\n\t\t\tfmt.Println(\"File does not exist\")\n\t\t} else {\n\t\t\tfmt.Printf(\"Error: %v\\n\", err)\n\t\t}\n\t\treturn\n\t}\n\n\tif file.Size() > 1024*1024*1024 {\n\t\tfmt.Println(\"File is too big \", file.Size())\n\t}\n\n\tboltStore := bolt.CreateBoltDB()\n\tboltStore.Filename = boltDbPath\n\tboltStore.Connect(\"migrate\")\n\n\tdefer boltStore.Close(\"migrate\")\n\n\tutil.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\n\tdialect, err := util.Config.GetDialect()\n\tif err != nil {\n\t\tfmt.Printf(\"Error reading SQL DB config: %v\\n\", err)\n\t\treturn\n\t}\n\n\tif dialect == util.DbDriverBolt {\n\t\tfmt.Println(\"Error: Destination database must be a SQL database\")\n\t\treturn\n\t}\n\n\tsqlStore := factory.CreateStore()\n\tsqlStore.Connect(\"import\")\n\n\t// 3. Connect and migrate\n\tfmt.Println(\"Starting migration...\")\n\tmigrator := &migration.Migrator{\n\t\tOldStore:           boltStore,\n\t\tNewStore:           sqlStore,\n\t\tErrLogSize:         migrationArgs.errLogSize,\n\t\tSkipTaskOutput:     migrationArgs.skipTaskOutput,\n\t\tMergeExistingUsers: migrationArgs.mergeExistingUsers,\n\t}\n\n\terr = migrator.Migrate()\n\tif err != nil {\n\t\tfmt.Printf(\"Migration failed: %v\\n\", err)\n\t\treturn\n\t}\n\n\tdefer sqlStore.Close(\"import\")\n\n\tfmt.Println(\"Migration finished successfully.\")\n}\n"
  },
  {
    "path": "cli/cmd/project.go",
    "content": "package cmd\n\nimport (\n\t\"os\"\n\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\trootCmd.AddCommand(projectCmd)\n}\n\nvar projectCmd = &cobra.Command{\n\tUse:     \"projects\",\n\tAliases: []string{\"project\"},\n\tShort:   \"Manage projects\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/project_export.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\tprojectService \"github.com/semaphoreui/semaphore/services/project\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype projectExportArgs struct {\n\tprojectID   int\n\tprojectName string\n\tfile        string\n}\n\nvar targetProjectExportArgs projectExportArgs\n\nfunc init() {\n\tprojectExportCmd.PersistentFlags().IntVar(&targetProjectExportArgs.projectID, \"project-id\", 0, \"Project ID to export\")\n\tprojectExportCmd.PersistentFlags().StringVar(&targetProjectExportArgs.projectName, \"project-name\", \"\", \"Project name to export\")\n\tprojectExportCmd.PersistentFlags().StringVar(&targetProjectExportArgs.file, \"file\", \"\", \"Output file path (default: stdout)\")\n\tprojectCmd.AddCommand(projectExportCmd)\n}\n\nvar projectExportCmd = &cobra.Command{\n\tUse:   \"export\",\n\tShort: \"Export project backup\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\t\tif targetProjectExportArgs.projectID == 0 && targetProjectExportArgs.projectName == \"\" {\n\t\t\tfmt.Println(\"Argument --project-id or --project-name required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif targetProjectExportArgs.projectID != 0 && targetProjectExportArgs.projectName != \"\" {\n\t\t\tfmt.Println(\"Only one of --project-id or --project-name can be specified\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore project export --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tprojectID := targetProjectExportArgs.projectID\n\n\t\tif targetProjectExportArgs.projectName != \"\" {\n\t\t\tprojects, err := store.GetAllProjects()\n\t\t\tif err != nil {\n\t\t\t\tfmt.Printf(\"Failed to get projects: %v\\n\", err)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\n\t\t\tfound := false\n\t\t\tsearchName := strings.ToLower(targetProjectExportArgs.projectName)\n\t\t\tfor _, p := range projects {\n\t\t\t\tif strings.ToLower(p.Name) == searchName {\n\t\t\t\t\tprojectID = p.ID\n\t\t\t\t\tfound = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !found {\n\t\t\t\tfmt.Printf(\"Project with name '%s' not found\\n\", targetProjectExportArgs.projectName)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t}\n\n\t\tbackup, err := projectService.GetBackup(projectID, store)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"Failed to create backup: %v\\n\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tdata, err := backup.Marshal()\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"Failed to marshal backup: %v\\n\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tif targetProjectExportArgs.file == \"\" {\n\t\t\tfmt.Println(data)\n\t\t} else {\n\t\t\tif err := os.WriteFile(targetProjectExportArgs.file, []byte(data), 0644); err != nil {\n\t\t\t\tfmt.Printf(\"Failed to write file: %v\\n\", err)\n\t\t\t\tos.Exit(1)\n\t\t\t}\n\t\t\tfmt.Printf(\"Project exported to %s\\n\", targetProjectExportArgs.file)\n\t\t}\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/project_import.go",
    "content": "package cmd\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\tprojectService \"github.com/semaphoreui/semaphore/services/project\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype projectImportArgs struct {\n\tdir         string\n\tfile        string\n\tprojectName string\n}\n\nvar targetProjectImportArgs projectImportArgs\n\nfunc init() {\n\tprojectImportCmd.PersistentFlags().StringVar(&targetProjectImportArgs.dir, \"dir\", \"\", \"Directory path with project backups to import\")\n\tprojectImportCmd.PersistentFlags().StringVar(&targetProjectImportArgs.file, \"file\", \"\", \"Backup file path to import\")\n\tprojectImportCmd.PersistentFlags().StringVar(&targetProjectImportArgs.projectName, \"project-name\", \"\", \"Override project name (only valid with --file)\")\n\tprojectCmd.AddCommand(projectImportCmd)\n}\n\nvar projectImportCmd = &cobra.Command{\n\tUse:   \"import\",\n\tShort: \"Import project(s)\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\t\tif targetProjectImportArgs.dir == \"\" && targetProjectImportArgs.file == \"\" {\n\t\t\tfmt.Println(\"Argument --dir or --file required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif targetProjectImportArgs.dir != \"\" && targetProjectImportArgs.file != \"\" {\n\t\t\tfmt.Println(\"Only one of --dir or --file can be specified\")\n\t\t\tok = false\n\t\t}\n\n\t\tif targetProjectImportArgs.projectName != \"\" && targetProjectImportArgs.dir != \"\" {\n\t\t\tfmt.Println(\"Option --project-name can only be used with --file, not --dir\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore project import --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := resolveImportUser(store)\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"cannot resolve user for import: %v\", err)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tfiles := make([]string, 0)\n\t\tif targetProjectImportArgs.file != \"\" {\n\t\t\tfiles = append(files, targetProjectImportArgs.file)\n\t\t}\n\n\t\tif targetProjectImportArgs.dir != \"\" {\n\t\t\tdir := targetProjectImportArgs.dir\n\t\t\terr = filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\tif d.IsDir() {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t\t// include likely backup files\n\t\t\t\tlower := strings.ToLower(d.Name())\n\t\t\t\tif strings.HasSuffix(lower, \".json\") || strings.HasSuffix(lower, \".backup\") || strings.HasSuffix(lower, \".bk\") {\n\t\t\t\t\tfiles = append(files, path)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif len(files) == 0 {\n\t\t\tfmt.Println(\"No backup files found to import\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\t// sort for deterministic order\n\t\tsort.Strings(files)\n\n\t\tokCount := 0\n\t\tfor _, f := range files {\n\t\t\tif err := importProjectFromFile(f, targetProjectImportArgs.projectName, user, store); err != nil {\n\t\t\t\tlog.Errorf(\"failed to import %s: %v\", f, err)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfmt.Printf(\"Imported project from %s\\n\", f)\n\t\t\tokCount++\n\t\t}\n\n\t\tif okCount == 0 {\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tfmt.Printf(\"Project(s) imported: %d/%d\\n\", okCount, len(files))\n\t},\n}\n\nfunc resolveImportUser(store db.Store) (res db.User, err error) {\n\tadmins, err := store.GetAllAdmins()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(admins) > 0 {\n\t\tres = admins[0]\n\t\treturn\n\t}\n\tusers, err := store.GetUsers(db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(users) == 0 {\n\t\terr = errors.New(\"no admins found in database; create a admin first\")\n\t\treturn\n\t}\n\n\tres = users[0]\n\treturn\n}\n\nfunc importProjectFromFile(path string, projectName string, user db.User, store db.Store) error {\n\tdata, err := os.ReadFile(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar backup projectService.BackupFormat\n\tif err := backup.Unmarshal(string(data)); err != nil {\n\t\treturn err\n\t}\n\tif err := backup.Verify(); err != nil {\n\t\treturn err\n\t}\n\tif projectName != \"\" {\n\t\tbackup.Meta.Name = projectName\n\t}\n\t_, err = backup.Restore(user, store)\n\treturn err\n}\n"
  },
  {
    "path": "cli/cmd/root.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/gorilla/handlers\"\n\t\"github.com/semaphoreui/semaphore/api\"\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/api/sockets\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/factory\"\n\tproFactory \"github.com/semaphoreui/semaphore/pro/db/factory\"\n\tproHA \"github.com/semaphoreui/semaphore/pro/services/ha\"\n\tproServer \"github.com/semaphoreui/semaphore/pro/services/server\"\n\tproTasks \"github.com/semaphoreui/semaphore/pro/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/services/schedules\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar persistentFlags struct {\n\tconfigPath string\n\tnoConfig   bool\n\tlogLevel   string\n}\n\nvar rootCmd = &cobra.Command{\n\tUse:   \"semaphore\",\n\tShort: \"Semaphore UI is a beautiful web UI for Ansible\",\n\tLong: `Semaphore UI is a beautiful web UI for Ansible.\nSource code is available at https://github.com/semaphoreui/semaphore.\nComplete documentation is available at https://semaphoreui.com.`,\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n\n\tPersistentPreRun: func(cmd *cobra.Command, args []string) {\n\t\tstr := persistentFlags.logLevel\n\t\tif str == \"\" {\n\t\t\tstr = os.Getenv(\"SEMAPHORE_LOG_LEVEL\")\n\t\t}\n\t\tif str == \"\" {\n\t\t\treturn\n\t\t}\n\n\t\tlvl, err := log.ParseLevel(str)\n\t\tif err != nil {\n\t\t\tlog.Panic(err)\n\t\t}\n\n\t\tfmt.Println(\"Log level set to\", lvl)\n\t\tlog.SetLevel(lvl)\n\t},\n}\n\nfunc Execute() {\n\trootCmd.PersistentFlags().StringVar(&persistentFlags.logLevel, \"log-level\", \"\", \"Log level: DEBUG, INFO, WARN, ERROR, FATAL, PANIC\")\n\trootCmd.PersistentFlags().StringVar(&persistentFlags.configPath, \"config\", \"\", \"Configuration file path\")\n\trootCmd.PersistentFlags().BoolVar(&persistentFlags.noConfig, \"no-config\", false, \"Don't use configuration file\")\n\tif err := rootCmd.Execute(); err != nil {\n\t\t_, _ = fmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc runService() {\n\tstore := createStore(\"root\")\n\n\tinitSyslog(util.Config.Syslog)\n\n\t// Initialize HA node identity before any component that uses it.\n\tutil.InitHANodeID()\n\n\tstate := proTasks.NewTaskStateStore()\n\tterraformStore := proFactory.NewTerraformStore(store)\n\tansibleTaskRepo := proFactory.NewAnsibleTaskRepository(store)\n\n\tprojectService := server.NewProjectService(store, store)\n\tencryptionService := server.NewAccessKeyEncryptionService(store, store, store)\n\taccessKeyInstallationService := server.NewAccessKeyInstallationService(encryptionService)\n\tintegrationService := server.NewIntegrationService(store, encryptionService)\n\tinventoryService := server.NewInventoryService(\n\t\tstore,\n\t\tstore,\n\t\tstore,\n\t\tencryptionService,\n\t)\n\taccessKeyService := server.NewAccessKeyService(store, encryptionService, store)\n\tsecretStorageService := server.NewSecretStorageService(store, store, accessKeyService, encryptionService)\n\tenvironmentService := server.NewEnvironmentService(store, encryptionService)\n\tsubscriptionService := proServer.NewSubscriptionService(store, store, store, terraformStore)\n\tlogWriteService := proServer.NewLogWriteService()\n\n\ttaskPool := tasks.CreateTaskPool(\n\t\tstore,\n\t\tstate,\n\t\tansibleTaskRepo,\n\t\tinventoryService,\n\t\tencryptionService,\n\t\taccessKeyInstallationService,\n\t\tlogWriteService,\n\t)\n\n\tschedulePool := schedules.CreateSchedulePool(\n\t\tstore,\n\t\t&taskPool,\n\t\taccessKeyInstallationService,\n\t\tencryptionService,\n\t)\n\n\tdefer schedulePool.Destroy()\n\n\t// --- Active-Active HA Setup ---\n\t// When HA is enabled, multiple Semaphore nodes share the same Redis-backed\n\t// task state and coordinate via Pub/Sub. The following components ensure:\n\t// 1. Node registry: heartbeat-based cluster membership\n\t// 2. Schedule deduplication: only one node fires each schedule occurrence\n\t// 3. WebSocket broadcaster: real-time events reach clients on all nodes\n\t// 4. Orphan cleaner: tasks from dead nodes are marked as failed\n\tif nodeRegistry := proHA.NewNodeRegistry(); nodeRegistry != nil {\n\t\tif err := nodeRegistry.Start(); err != nil {\n\t\t\tlog.WithError(err).Fatal(\"failed to start HA node registry\")\n\t\t}\n\t\tdefer nodeRegistry.Stop()\n\t\tlog.WithField(\"node_id\", nodeRegistry.NodeID()).Info(\"HA active-active mode enabled\")\n\t}\n\n\tif dedup := proHA.NewScheduleDeduplicator(); dedup != nil {\n\t\tschedulePool.SetDeduplicator(dedup)\n\t}\n\n\tif orphanCleaner := proHA.NewOrphanCleaner(store); orphanCleaner != nil {\n\t\torphanCleaner.Start()\n\t\tdefer orphanCleaner.Stop()\n\t}\n\n\tutil.Config.PrintDbInfo()\n\n\tport := util.Config.Port\n\n\tif !strings.HasPrefix(port, \":\") {\n\t\tport = \":\" + port\n\t}\n\n\tfmt.Printf(\"Tmp Path (projects home) %v\\n\", util.Config.TmpPath)\n\tfmt.Printf(\"Semaphore %v\\n\", util.Version())\n\tfmt.Printf(\"Interface %v\\n\", util.Config.Interface)\n\tfmt.Printf(\"Port %v\\n\", util.Config.Port)\n\n\tsubscriptionService.StartValidationCron()\n\n\t// Start the WebSocket hub before the broadcaster so that h.broadcast\n\t// channel is being consumed when LocalBroadcast is called.\n\tgo sockets.StartWS()\n\n\tif wsBroadcaster := proHA.NewWSBroadcaster(); wsBroadcaster != nil {\n\t\tsockets.SetBroadcaster(wsBroadcaster)\n\t\twsBroadcaster.Start()\n\t\tdefer wsBroadcaster.Stop()\n\t}\n\n\tgo schedulePool.Run()\n\tgo taskPool.Run()\n\n\troute := api.Route(\n\t\tstore,\n\t\tterraformStore,\n\t\tansibleTaskRepo,\n\t\t&taskPool,\n\t\tprojectService,\n\t\tintegrationService,\n\t\tencryptionService,\n\t\taccessKeyInstallationService,\n\t\tsecretStorageService,\n\t\taccessKeyService,\n\t\tenvironmentService,\n\t\tsubscriptionService,\n\t)\n\n\troute.Use(func(next http.Handler) http.Handler {\n\t\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\tr = helpers.SetContextValue(r, \"store\", store)\n\t\t\tr = helpers.SetContextValue(r, \"schedule_pool\", schedulePool)\n\t\t\tr = helpers.SetContextValue(r, \"task_pool\", &taskPool)\n\t\t\tr = helpers.SetContextValue(r, \"log_writer\", logWriteService)\n\t\t\tnext.ServeHTTP(w, r)\n\t\t})\n\t})\n\n\tvar router http.Handler = route\n\n\trouter = handlers.ProxyHeaders(router)\n\thttp.Handle(\"/\", router)\n\n\tfmt.Println(\"Server is running\")\n\n\tif store.PermanentConnection() {\n\t\tdefer store.Close(\"root\")\n\t} else {\n\t\tstore.Close(\"root\")\n\t}\n\n\tvar err error\n\tif util.Config.TLS.Enabled {\n\t\tif util.Config.TLS.HTTPRedirectPort != nil {\n\n\t\t\tgo func() {\n\t\t\t\thttpRedirectPort := fmt.Sprintf(\":%d\", *util.Config.TLS.HTTPRedirectPort)\n\t\t\t\terr = http.ListenAndServe(httpRedirectPort, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\t\t\t\ttarget := \"https://\"\n\n\t\t\t\t\tif util.Config.WebHost != \"\" {\n\t\t\t\t\t\twebHost, err2 := url.Parse(util.Config.WebHost)\n\t\t\t\t\t\tif err2 != nil {\n\t\t\t\t\t\t\tlog.Panic(err2)\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttarget += webHost.Host + r.URL.Path\n\t\t\t\t\t} else {\n\t\t\t\t\t\thostParts := strings.Split(r.Host, \":\")\n\t\t\t\t\t\thost := hostParts[0]\n\t\t\t\t\t\ttarget += host + port + r.URL.Path\n\t\t\t\t\t}\n\n\t\t\t\t\tif len(r.URL.RawQuery) > 0 {\n\t\t\t\t\t\ttarget += \"?\" + r.URL.RawQuery\n\t\t\t\t\t}\n\n\t\t\t\t\tif r.Method != \"GET\" && r.Method != \"HEAD\" && r.Method != \"OPTIONS\" {\n\t\t\t\t\t\thttp.Error(w, \"http requests forbidden\", http.StatusForbidden)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\thttp.Redirect(w, r, target, http.StatusTemporaryRedirect)\n\t\t\t\t}))\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.Panic(err)\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\n\t\terr = http.ListenAndServeTLS(util.Config.Interface+port, util.Config.TLS.CertFile, util.Config.TLS.KeyFile, cropTrailingSlashMiddleware(router))\n\n\t\tif err != nil {\n\t\t\tlog.Panic(err)\n\t\t}\n\n\t} else {\n\t\terr = http.ListenAndServe(util.Config.Interface+port, cropTrailingSlashMiddleware(router))\n\t}\n\n\tif err != nil {\n\t\tlog.WithError(err).Panic(\"Error starting server\")\n\t}\n}\n\nfunc createStoreWithMigrationVersion(token string, undoTo *string, applyTo *string) db.Store {\n\tutil.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\n\tstore := factory.CreateStore()\n\n\tstore.Connect(token)\n\n\tvar err error\n\tif undoTo != nil {\n\t\terr = db.Rollback(store, *undoTo)\n\t} else {\n\t\terr = db.Migrate(store, applyTo)\n\t}\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = db.FillConfigFromDB(store)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tutil.LookupDefaultApps()\n\n\treturn store\n}\n\nfunc createStore(token string) db.Store {\n\treturn createStoreWithMigrationVersion(token, nil, nil)\n}\n"
  },
  {
    "path": "cli/cmd/runner.go",
    "content": "package cmd\n\nimport (\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\t\"github.com/semaphoreui/semaphore/services/runners\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc createRunnerJobPool() *runners.JobPool {\n\treturn runners.NewJobPool(&ssh.KeyInstaller{})\n}\n\nfunc init() {\n\trootCmd.AddCommand(runnerCmd)\n}\n\nvar runnerCmd = &cobra.Command{\n\tUse:   \"runner\",\n\tShort: \"Run in runner mode\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/runner_register.go",
    "content": "package cmd\n\nimport (\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar runnerRegisterArgs struct {\n\tstdinRegistrationToken bool\n}\n\nfunc init() {\n\trunnerRegisterCmd.PersistentFlags().BoolVar(&runnerRegisterArgs.stdinRegistrationToken, \"stdin-registration-token\", false, \"Read registration token from stdin\")\n\trunnerCmd.AddCommand(runnerRegisterCmd)\n}\n\nfunc initRunnerRegistrationToken() {\n\tif !runnerRegisterArgs.stdinRegistrationToken {\n\t\treturn\n\t}\n\n\ttokenBytes, err := io.ReadAll(os.Stdin)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tif len(tokenBytes) == 0 {\n\t\tpanic(\"Empty token\")\n\t}\n\n\tutil.Config.Runner.RegistrationToken = strings.TrimSpace(string(tokenBytes))\n}\n\nfunc registerRunner() {\n\n\tconfigFile := util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\n\tinitRunnerRegistrationToken()\n\n\ttaskPool := createRunnerJobPool()\n\n\terr := taskPool.Register(configFile)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nvar runnerRegisterCmd = &cobra.Command{\n\tUse:   \"register\",\n\tShort: \"Register runner on the server\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tregisterRunner()\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/runner_setup.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/cli/setup\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\trunnerCmd.AddCommand(runnerSetupCmd)\n}\n\nvar runnerSetupCmd = &cobra.Command{\n\tUse:   \"setup\",\n\tShort: \"Perform interactive setup\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tdoRunnerSetup()\n\t},\n}\n\n// nolint: gocyclo\nfunc doRunnerSetup() int {\n\tconfig := &util.ConfigType{}\n\n\tsetup.InteractiveRunnerSetup(config)\n\tresultConfigPath := setup.SaveConfig(config, \"config.runner.json\", persistentFlags.configPath)\n\tutil.ConfigInit(resultConfigPath, false)\n\n\tif util.Config.Runner.RegistrationToken == \"\" && config.Runner.RegistrationToken != \"\" {\n\t\tutil.Config.Runner.RegistrationToken = config.Runner.RegistrationToken\n\t}\n\n\tif util.Config.Runner.RegistrationToken != \"\" {\n\t\ttaskPool := createRunnerJobPool()\n\t\terr := taskPool.Register(&resultConfigPath)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tfmt.Printf(\" Re-launch this program pointing to the configuration file\\n\\n./semaphore runner start --config %v\\n\\n\", resultConfigPath)\n\tfmt.Printf(\" To run as daemon:\\n\\nnohup ./semaphore runner start --config %v &\\n\\n\", resultConfigPath)\n\n\treturn 0\n}\n"
  },
  {
    "path": "cli/cmd/runner_start.go",
    "content": "package cmd\n\nimport (\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nvar runnerStartArgs struct {\n\tregister bool\n}\n\nfunc init() {\n\trunnerStartCmd.PersistentFlags().BoolVar(&runnerStartArgs.register, \"register\", false, \"Register new runner if not registered\")\n\trunnerCmd.AddCommand(runnerStartCmd)\n}\n\nfunc runRunner() {\n\n\tconfigFile := util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\n\ttaskPool := createRunnerJobPool()\n\n\t// If --register is passed, try to register the runner if not already registered\n\tif runnerStartArgs.register {\n\n\t\tinitRunnerRegistrationToken()\n\n\t\tif util.Config.Runner.Token == \"\" {\n\n\t\t\tfor {\n\t\t\t\terr := taskPool.Register(configFile)\n\n\t\t\t\tif err == nil {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\ttime.Sleep(5 * time.Second)\n\t\t\t}\n\n\t\t\t_ = util.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\t\t}\n\t}\n\n\ttaskPool.Run()\n}\n\nvar runnerStartCmd = &cobra.Command{\n\tUse:   \"start\",\n\tShort: \"Run in runner mode\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\trunRunner()\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/runner_unregister.go",
    "content": "package cmd\n\nimport (\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\trunnerCmd.AddCommand(runnerUnregisterCmd)\n}\n\nfunc unregisterRunner() {\n\tutil.ConfigInit(persistentFlags.configPath, persistentFlags.noConfig)\n\n\ttaskPool := createRunnerJobPool()\n\terr := taskPool.Unregister()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nvar runnerUnregisterCmd = &cobra.Command{\n\tUse:   \"unregister\",\n\tShort: \"Unregister runner from the server\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tunregisterRunner()\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/server.go",
    "content": "package cmd\n\nimport (\n\t\"github.com/spf13/cobra\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc init() {\n\trootCmd.AddCommand(serverCmd)\n}\n\nvar serverCmd = &cobra.Command{\n\tUse:     \"server\",\n\tShort:   \"Run in server mode\",\n\tAliases: []string{\"service\"},\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\trunService()\n\t},\n}\n\nfunc cropTrailingSlashMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tif r.URL.Path != \"/\" {\n\t\t\tr.URL.Path = strings.TrimSuffix(r.URL.Path, \"/\")\n\t\t}\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n"
  },
  {
    "path": "cli/cmd/setup.go",
    "content": "package cmd\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/cli/setup\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/factory\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\trootCmd.AddCommand(setupCmd)\n}\n\nvar setupCmd = &cobra.Command{\n\tUse:   \"setup\",\n\tShort: \"Perform interactive setup\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tdoSetup()\n\t},\n}\n\n// nolint: gocyclo\nfunc doSetup() int {\n\tconfig := &util.ConfigType{}\n\n\tconfig.GenerateSecrets()\n\tsetup.InteractiveSetup(config)\n\n\tresultConfigPath := setup.SaveConfig(config, \"config.json\", persistentFlags.configPath)\n\n\tutil.ConfigInit(resultConfigPath, false)\n\n\tfmt.Println(\" Pinging db..\")\n\n\tstore := factory.CreateStore()\n\tdefer store.Close(\"setup\")\n\tstore.Connect(\"setup\")\n\n\tfmt.Println(\"Running db Migrations..\")\n\tif err := db.Migrate(store, nil); err != nil {\n\t\tfmt.Printf(\"Database migrations failed!\\n %v\\n\", err.Error())\n\t\tos.Exit(1)\n\t}\n\n\tstdin := bufio.NewReader(os.Stdin)\n\n\tvar user db.UserWithPwd\n\tuser.Username = readNewline(\"\\n\\n > Username: \", stdin)\n\tuser.Username = strings.ToLower(user.Username)\n\tuser.Email = readNewline(\" > Email: \", stdin)\n\tuser.Email = strings.ToLower(user.Email)\n\n\texistingUser, err := store.GetUserByLoginOrEmail(user.Username, user.Email)\n\tutil.LogWarning(err)\n\n\tif existingUser.ID > 0 {\n\t\t// user already exists\n\t\tfmt.Printf(\"\\n Welcome back, %v! (a user with this username/email is already set up..)\\n\\n\", existingUser.Name)\n\t} else {\n\t\tuser.Name = readNewline(\" > Your name: \", stdin)\n\t\tuser.Pwd = readNewline(\" > Password: \", stdin)\n\t\tuser.Admin = true\n\n\t\tif _, err := store.CreateUser(user); err != nil {\n\t\t\tfmt.Printf(\" Inserting user failed. If you already have a user, you can disregard this error.\\n %v\\n\", err.Error())\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tfmt.Printf(\"\\n You are all setup %v!\\n\", user.Name)\n\t}\n\n\tfmt.Printf(\" Re-launch this program pointing to the configuration file\\n\\n./semaphore server --config %v\\n\\n\", resultConfigPath)\n\tfmt.Printf(\" To run as daemon:\\n\\nnohup ./semaphore server --config %v &\\n\\n\", resultConfigPath)\n\tfmt.Printf(\" You can login with %v or %v.\\n\", user.Email, user.Username)\n\n\treturn 0\n}\n\nfunc readNewline(pre string, stdin *bufio.Reader) string {\n\tfmt.Print(pre)\n\n\tstr, err := stdin.ReadString('\\n')\n\tutil.LogWarning(err)\n\tstr = strings.ReplaceAll(strings.ReplaceAll(str, \"\\n\", \"\"), \"\\r\", \"\")\n\n\treturn str\n}\n"
  },
  {
    "path": "cli/cmd/syslog.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage cmd\n\nimport (\n\t\"fmt\"\n\t\"log/syslog\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\tlSyslog \"github.com/sirupsen/logrus/hooks/syslog\"\n)\n\nvar localSyslogPaths = []string{\"/dev/log\", \"/var/run/syslog\", \"/var/run/log\"}\n\nfunc initSyslog(conf *util.SyslogConfig) {\n\tif !conf.Enabled {\n\t\treturn\n\t}\n\n\tswitch conf.Format {\n\tcase util.SyslogRFC5424:\n\t\thook, err := newRFC5424Hook(conf.Network, conf.Address, conf.Tag)\n\t\tif err != nil {\n\t\t\tlog.WithError(err).Fatal(\"Failed to create syslog hook\")\n\t\t\treturn\n\t\t}\n\t\tlog.AddHook(hook)\n\t\tlog.Info(\"Syslog logging enabled (RFC 5424)\")\n\tdefault:\n\t\thook, err := lSyslog.NewSyslogHook(conf.Network, conf.Address, syslog.LOG_DEBUG, conf.Tag)\n\t\tif err != nil {\n\t\t\tlog.WithError(err).Fatal(\"Failed to create syslog hook\")\n\t\t\treturn\n\t\t}\n\t\tlog.AddHook(hook)\n\t\tlog.Info(\"Syslog logging enabled\")\n\t}\n}\n\ntype rfc5424Hook struct {\n\tconn     net.Conn\n\ttag      string\n\thostname string\n\tmu       sync.Mutex\n}\n\nfunc newRFC5424Hook(network, address, tag string) (*rfc5424Hook, error) {\n\tvar conn net.Conn\n\tvar err error\n\n\tif network != \"\" && address != \"\" {\n\t\tconn, err = net.Dial(network, address)\n\t} else {\n\t\tfor _, path := range localSyslogPaths {\n\t\t\tconn, err = net.Dial(\"unixgram\", path)\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostname, _ := os.Hostname()\n\n\treturn &rfc5424Hook{\n\t\tconn:     conn,\n\t\ttag:      tag,\n\t\thostname: hostname,\n\t}, nil\n}\n\nvar levelToSeverity = map[log.Level]syslog.Priority{\n\tlog.PanicLevel: syslog.LOG_CRIT,\n\tlog.FatalLevel: syslog.LOG_CRIT,\n\tlog.ErrorLevel: syslog.LOG_ERR,\n\tlog.WarnLevel:  syslog.LOG_WARNING,\n\tlog.InfoLevel:  syslog.LOG_INFO,\n\tlog.DebugLevel: syslog.LOG_DEBUG,\n\tlog.TraceLevel: syslog.LOG_DEBUG,\n}\n\nfunc (h *rfc5424Hook) Levels() []log.Level {\n\treturn log.AllLevels\n}\n\nfunc (h *rfc5424Hook) Fire(entry *log.Entry) error {\n\tseverity, ok := levelToSeverity[entry.Level]\n\tif !ok {\n\t\tseverity = syslog.LOG_INFO\n\t}\n\tpri := syslog.LOG_USER | severity\n\n\tsd := \"-\"\n\tif len(entry.Data) > 0 {\n\t\tvar pairs []string\n\t\tfor k, v := range entry.Data {\n\t\t\tpairs = append(pairs, fmt.Sprintf(`%s=\"%s\"`, k, escapeSDValue(fmt.Sprintf(\"%v\", v))))\n\t\t}\n\t\tsd = fmt.Sprintf(\"[%s@0 %s]\", h.tag, strings.Join(pairs, \" \"))\n\t}\n\n\t// RFC 5424: <PRI>VERSION SP TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID SP STRUCTURED-DATA [SP MSG]\n\tmsg := fmt.Sprintf(\"<%d>1 %s %s %s %d - %s %s\",\n\t\tpri,\n\t\tentry.Time.Format(time.RFC3339),\n\t\th.hostname,\n\t\th.tag,\n\t\tos.Getpid(),\n\t\tsd,\n\t\tentry.Message,\n\t)\n\n\th.mu.Lock()\n\tdefer h.mu.Unlock()\n\t_, err := fmt.Fprintln(h.conn, msg)\n\treturn err\n}\n\nfunc escapeSDValue(v string) string {\n\tv = strings.ReplaceAll(v, `\\`, `\\\\`)\n\tv = strings.ReplaceAll(v, `\"`, `\\\"`)\n\tv = strings.ReplaceAll(v, `]`, `\\]`)\n\treturn v\n}\n"
  },
  {
    "path": "cli/cmd/syslog_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage cmd\n\nimport (\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// initSyslog is disabled on Windows because the standard syslog package is not supported.\nfunc initSyslog(conf *util.SyslogConfig) {\n\tif conf != nil && conf.Enabled {\n\t\tlog.Warn(\"Syslog is not supported on Windows. The syslog log channel will be disabled.\")\n\t}\n\t// no-op on Windows\n}\n"
  },
  {
    "path": "cli/cmd/token.go",
    "content": "package cmd\n"
  },
  {
    "path": "cli/cmd/user.go",
    "content": "package cmd\n\nimport (\n\t\"os\"\n\n\t\"github.com/spf13/cobra\"\n)\n\ntype userArgs struct {\n\tlogin    string\n\tname     string\n\temail    string\n\tpassword string\n\tadmin    bool\n\ttotp     bool\n\texternal bool\n}\n\nvar targetUserArgs userArgs\n\nfunc init() {\n\trootCmd.AddCommand(userCmd)\n}\n\nvar userCmd = &cobra.Command{\n\tUse:     \"users\",\n\tAliases: []string{\"user\"},\n\tShort:   \"Manage users\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_add.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc init() {\n\tuserAddCmd.PersistentFlags().StringVar(&targetUserArgs.login, \"login\", \"\", \"New user login\")\n\tuserAddCmd.PersistentFlags().StringVar(&targetUserArgs.name, \"name\", \"\", \"New user name\")\n\tuserAddCmd.PersistentFlags().StringVar(&targetUserArgs.email, \"email\", \"\", \"New user email\")\n\tuserAddCmd.PersistentFlags().StringVar(&targetUserArgs.password, \"password\", \"\", \"New user password\")\n\tuserAddCmd.PersistentFlags().BoolVar(&targetUserArgs.admin, \"admin\", false, \"Mark new user as admin\")\n\tuserAddCmd.PersistentFlags().BoolVar(&targetUserArgs.external, \"external\", false, \"Mark new user as external (LDAP or OIDC user)\")\n\tuserCmd.AddCommand(userAddCmd)\n}\n\nvar userAddCmd = &cobra.Command{\n\tUse:   \"add\",\n\tShort: \"Add new user\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\t\tif targetUserArgs.name == \"\" {\n\t\t\tfmt.Println(\"Argument --name required\")\n\t\t\tok = false\n\t\t}\n\t\tif targetUserArgs.login == \"\" {\n\t\t\tfmt.Println(\"Argument --login required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif targetUserArgs.email == \"\" {\n\t\t\tfmt.Println(\"Argument --email required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif targetUserArgs.external {\n\t\t\tif targetUserArgs.password != \"\" {\n\t\t\t\tfmt.Println(\"Argument --password not allowed for external users\")\n\t\t\t\tok = false\n\t\t\t}\n\t\t} else {\n\t\t\tif targetUserArgs.password == \"\" {\n\t\t\t\tfmt.Println(\"Argument --password required\")\n\t\t\t\tok = false\n\t\t\t}\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore user add --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tif _, err := store.CreateUser(db.UserWithPwd{\n\t\t\tPwd: targetUserArgs.password,\n\t\t\tUser: db.User{\n\t\t\t\tName:     targetUserArgs.name,\n\t\t\t\tUsername: targetUserArgs.login,\n\t\t\t\tEmail:    targetUserArgs.email,\n\t\t\t\tAdmin:    targetUserArgs.admin,\n\t\t\t\tExternal: targetUserArgs.external,\n\t\t\t},\n\t\t}); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tfmt.Printf(\"User %s <%s> added!\\n\", targetUserArgs.login, targetUserArgs.email)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_change.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc init() {\n\tfor _, cmd := range []*cobra.Command{userChangeByLoginCmd, userChangeByEmailCmd} {\n\t\tcmd.PersistentFlags().StringVar(&targetUserArgs.login, \"login\", \"\", \"User login\")\n\t\tcmd.PersistentFlags().StringVar(&targetUserArgs.name, \"name\", \"\", \"User's new name\")\n\t\tcmd.PersistentFlags().StringVar(&targetUserArgs.email, \"email\", \"\", \"User's new email\")\n\t\tcmd.PersistentFlags().StringVar(&targetUserArgs.password, \"password\", \"\", \"User's new password\")\n\t\tcmd.PersistentFlags().BoolVar(&targetUserArgs.admin, \"admin\", false, \"Mark user as admin\")\n\t\tuserCmd.AddCommand(cmd)\n\t}\n}\n\nfunc applyChangeUserArgsForUser(user db.User, store db.Store) {\n\tif targetUserArgs.name != \"\" {\n\t\tuser.Name = targetUserArgs.name\n\t}\n\n\tif targetUserArgs.email != \"\" {\n\t\tuser.Email = targetUserArgs.email\n\t}\n\n\tif targetUserArgs.login != \"\" {\n\t\tuser.Username = targetUserArgs.login\n\t}\n\n\tif targetUserArgs.name != \"\" {\n\t\tuser.Name = targetUserArgs.name\n\t}\n\n\tif targetUserArgs.admin {\n\t\tuser.Admin = true\n\t}\n\n\tif err := store.UpdateUser(db.UserWithPwd{\n\t\tUser: user,\n\t\tPwd:  targetUserArgs.password,\n\t}); err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Printf(\"User %s <%s> changed!\\n\", user.Username, user.Email)\n}\n\nvar userChangeByLoginCmd = &cobra.Command{\n\tUse:   \"change-by-login\",\n\tShort: \"Change user found by login\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\n\t\tif targetUserArgs.login == \"\" {\n\t\t\tfmt.Println(\"Argument --login required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore user change-by-login --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, \"\")\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tapplyChangeUserArgsForUser(user, store)\n\t},\n}\n\nvar userChangeByEmailCmd = &cobra.Command{\n\tUse:   \"change-by-email\",\n\tShort: \"Change user found by email\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\n\t\tif targetUserArgs.email == \"\" {\n\t\t\tfmt.Println(\"Argument --email required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore user change-by-email --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(\"\", targetUserArgs.email)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tapplyChangeUserArgsForUser(user, store)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_delete.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc init() {\n\tuserDeleteCmd.PersistentFlags().StringVar(&targetUserArgs.login, \"login\", \"\", \"Login of the user you want to delete\")\n\tuserDeleteCmd.PersistentFlags().StringVar(&targetUserArgs.email, \"email\", \"\", \"Email of the user you want to delete\")\n\tuserCmd.AddCommand(userDeleteCmd)\n}\n\nvar userDeleteCmd = &cobra.Command{\n\tUse:   \"delete\",\n\tShort: \"Remove existing user\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\n\t\tif targetUserArgs.login == \"\" && targetUserArgs.email == \"\" {\n\t\t\tfmt.Println(\"Argument --email or --login required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore user delete --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, targetUserArgs.email)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif err := store.DeleteUser(user.ID); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tfmt.Printf(\"User %s <%s> deleted!\\n\", user.Username, user.Email)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_get.go",
    "content": "package cmd\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc init() {\n\tuserGetCmd.PersistentFlags().StringVar(&targetUserArgs.login, \"login\", \"\", \"Login of the user you want to see\")\n\tuserGetCmd.PersistentFlags().StringVar(&targetUserArgs.email, \"email\", \"\", \"Email of the user you want to see\")\n\tuserCmd.AddCommand(userGetCmd)\n}\n\nvar userGetCmd = &cobra.Command{\n\tUse:   \"get\",\n\tShort: \"Show user's data\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tok := true\n\n\t\tif targetUserArgs.login == \"\" && targetUserArgs.email == \"\" {\n\t\t\tfmt.Println(\"Argument --email or --login required\")\n\t\t\tok = false\n\t\t}\n\n\t\tif !ok {\n\t\t\tfmt.Println(\"Use command `semaphore user get --help` for details.\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, targetUserArgs.email)\n\t\tif errors.Is(err, db.ErrNotFound) {\n\t\t\tfmt.Printf(\"User with login %s or email %s not found\\n\", targetUserArgs.login, targetUserArgs.email)\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tfmt.Printf(\"ID: %d\\n\", user.ID)\n\t\tfmt.Printf(\"Created: %s\\n\", user.Created)\n\t\tfmt.Printf(\"Login: %s\\n\", user.Username)\n\t\tfmt.Printf(\"Name: %s\\n\", user.Name)\n\t\tfmt.Printf(\"Email: %s\\n\", user.Email)\n\t\tfmt.Printf(\"Admin: %t\\n\", user.Admin)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_list.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\tuserCmd.AddCommand(userListCmd)\n}\n\nvar userListCmd = &cobra.Command{\n\tUse:   \"list\",\n\tShort: \"Print all users\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tusers, err := store.GetUsers(db.RetrieveQueryParams{})\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tfor _, user := range users {\n\t\t\tfmt.Println(user.Username)\n\t\t}\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/user_totp.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"github.com/mdp/qrterminal/v3\"\n\t\"github.com/pquerna/otp/totp\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n\t\"os\"\n)\n\nfunc init() {\n\tfor _, cmd := range []*cobra.Command{totpEnableCmd, totpDisableCmd, totpShowCmd} {\n\t\tcmd.PersistentFlags().StringVar(&targetUserArgs.login, \"login\", \"\", \"User login\")\n\t\ttotpCmd.AddCommand(cmd)\n\t}\n\tuserCmd.AddCommand(totpCmd)\n}\n\nvar totpCmd = &cobra.Command{\n\tUse:   \"totp\",\n\tShort: \"Manage TOTP verification\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n}\n\nvar totpEnableCmd = &cobra.Command{\n\tUse:   \"enable\",\n\tShort: \"Enable TOTP verification\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tif targetUserArgs.login == \"\" {\n\t\t\tfmt.Println(\"Argument --login required\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, \"\")\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif user.Totp != nil {\n\t\t\tfmt.Println(\"TOTP already enabled\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tissuer := \"Semaphore\"\n\t\tif util.Config.Auth.Totp.Issuer != \"\" {\n\t\t\tissuer = util.Config.Auth.Totp.Issuer\n\t\t}\n\n\t\tkey, err := totp.Generate(totp.GenerateOpts{\n\t\t\tIssuer:      issuer,\n\t\t\tAccountName: user.Email,\n\t\t})\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tcode, hash, err := util.GenerateRecoveryCode()\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\ttotp, err := store.AddTotpVerification(user.ID, key.URL(), hash)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tfmt.Println()\n\t\tfmt.Println(\"Recovery code: \", code)\n\t\tfmt.Println()\n\t\tfmt.Println(totp.URL)\n\t\tfmt.Println()\n\t\tqrterminal.GenerateWithConfig(totp.URL, qrterminal.Config{\n\t\t\tWriter:    os.Stdout,\n\t\t\tLevel:     qrterminal.L,\n\t\t\tBlackChar: qrterminal.BLACK,\n\t\t\tWhiteChar: qrterminal.WHITE,\n\t\t\tQuietZone: 2,\n\t\t})\n\t\tfmt.Println()\n\t},\n}\n\nvar totpDisableCmd = &cobra.Command{\n\tUse:   \"disable\",\n\tShort: \"Disable TOTP verification\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\n\t\tif targetUserArgs.login == \"\" {\n\t\t\tfmt.Println(\"Argument --login required\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, \"\")\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif user.Totp == nil {\n\t\t\tfmt.Println(\"TOTP not enabled\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\terr = store.DeleteTotpVerification(user.ID, user.Totp.ID)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t},\n}\n\nvar totpShowCmd = &cobra.Command{\n\tUse:   \"show\",\n\tShort: \"Show TOTP details\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tif targetUserArgs.login == \"\" {\n\t\t\tfmt.Println(\"Argument --login required\")\n\t\t\tos.Exit(1)\n\t\t}\n\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\tuser, err := store.GetUserByLoginOrEmail(targetUserArgs.login, \"\")\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif user.Totp == nil {\n\t\t\tfmt.Println(\"TOTP disabled\")\n\t\t} else {\n\t\t\tfmt.Println()\n\t\t\tfmt.Println(user.Totp.URL)\n\t\t\tfmt.Println()\n\t\t\tqrterminal.GenerateWithConfig(user.Totp.URL, qrterminal.Config{\n\t\t\t\tWriter:    os.Stdout,\n\t\t\t\tLevel:     qrterminal.L,\n\t\t\t\tBlackChar: qrterminal.BLACK,\n\t\t\t\tWhiteChar: qrterminal.WHITE,\n\t\t\t\tQuietZone: 2,\n\t\t\t})\n\t\t\tfmt.Println()\n\t\t}\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/vault.go",
    "content": "package cmd\n\nimport (\n\t\"os\"\n\n\t\"github.com/spf13/cobra\"\n)\n\ntype vaultArgs struct {\n\toldKey string\n}\n\nvar targetVaultArgs vaultArgs\n\nfunc init() {\n\trootCmd.AddCommand(vaultCmd)\n}\n\nvar vaultCmd = &cobra.Command{\n\tUse:     \"vaults\",\n\tAliases: []string{\"vault\"},\n\tShort:   \"Manage access keys and other secrets\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\t_ = cmd.Help()\n\t\tos.Exit(0)\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/vault_rekey.go",
    "content": "package cmd\n\nimport (\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\tvaultRekeyCmd.PersistentFlags().StringVar(&targetVaultArgs.oldKey, \"old-key\", \"\", \"Old encryption key\")\n\n\tvaultCmd.AddCommand(vaultRekeyCmd)\n}\n\nvar vaultRekeyCmd = &cobra.Command{\n\tUse:   \"rekey\",\n\tShort: \"Re-encrypt Key Store in database with using current encryption key\",\n\tLong: \"To update the encryption key, modify it within the configuration file and \" +\n\t\t\"then employ the 'vault rekey --old-key <old-key>' command to ensure the re-encryption of the \" +\n\t\t\"pre-existing keys stored in the database.\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tstore := createStore(\"\")\n\t\tdefer store.Close(\"\")\n\n\t\terr := store.RekeyAccessKeys(targetVaultArgs.oldKey)\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t},\n}\n"
  },
  {
    "path": "cli/cmd/version.go",
    "content": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/spf13/cobra\"\n)\n\nfunc init() {\n\trootCmd.AddCommand(versionCmd)\n}\n\nvar versionCmd = &cobra.Command{\n\tUse:   \"version\",\n\tShort: \"Print the version of Semaphore\",\n\tRun: func(cmd *cobra.Command, args []string) {\n\t\tfmt.Println(util.Version())\n\t},\n}\n"
  },
  {
    "path": "cli/main.go",
    "content": "package main\n\nimport (\n\t\"github.com/semaphoreui/semaphore/cli/cmd\"\n)\n\nfunc main() {\n\tcmd.Execute()\n}\n"
  },
  {
    "path": "cli/setup/setup.go",
    "content": "package setup\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nconst interactiveSetupBlurb = `\nHello! You will now be guided through a setup to:\n\n1. Set up configuration for a MySQL/MariaDB database\n2. Set up a path for your playbooks (auto-created)\n3. Run database Migrations\n4. Set up initial semaphore user & password\n\n`\n\nfunc InteractiveRunnerSetup(conf *util.ConfigType) {\n\n\taskValue(\"Semaphore server URL\", \"\", &conf.WebHost)\n\n\tconf.Runner = &util.RunnerConfig{}\n\n\tneedTokenFile := false\n\taskConfirmation(\"Do you want to store token in external file?\", false, &needTokenFile)\n\n\tif needTokenFile {\n\t\taskValue(\"Path to the file where runner token will be stored\", \"\", &conf.Runner.TokenFile)\n\t}\n\n\tneedToken := false\n\taskConfirmation(\"Do you have runner's token?\", false, &needToken)\n\n\tif needToken {\n\t\ttoken := \"\"\n\t\tfor {\n\t\t\taskValue(\"Enter valid runner token\", \"\", &token)\n\n\t\t\tif token == \"\" {\n\t\t\t\tfmt.Println(\"Invalid token\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tconf.Runner.Token = token\n\n\t\thasPrivateKey := false\n\t\taskConfirmation(\"Do you have runner's private key file?\", false, &hasPrivateKey)\n\n\t\tif hasPrivateKey {\n\t\t\tpkFile := \"\"\n\t\t\tfor {\n\t\t\t\taskValue(\"Enter path to the private key file\", \"\", &pkFile)\n\n\t\t\t\tif pkFile == \"\" {\n\t\t\t\t\tfmt.Println(\"Invalid private key file path\")\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tconf.Runner.PrivateKeyFile = pkFile\n\t\t}\n\n\t\treturn\n\t}\n\n\tneedRegistration := false\n\taskConfirmation(\"Do you want to register new runner on the server?\", false, &needRegistration)\n\tif needRegistration {\n\t\tregToken := \"\"\n\n\t\tfor {\n\t\t\taskValue(\"Enter runner registration token\", \"\", &regToken)\n\n\t\t\tif regToken == \"\" {\n\t\t\t\tfmt.Println(\"Invalid registration token\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\n\t\tconf.Runner.RegistrationToken = regToken\n\n\t\tpkFile := \"\"\n\t\tfor {\n\t\t\taskValue(\"Enter path to the private key file (will be generated if not exists)\", \"\", &pkFile)\n\n\t\t\tif pkFile == \"\" {\n\t\t\t\tfmt.Println(\"Invalid private key file path\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tconf.Runner.PrivateKeyFile = pkFile\n\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc InteractiveSetup(conf *util.ConfigType) {\n\tfmt.Print(interactiveSetupBlurb)\n\n\tdbPrompt := `What database to use:\n   1 - MySQL\n   2 - BoltDB (DEPRECATED!!!)\n   3 - PostgreSQL\n   4 - SQLite\n`\n\n\tvar db int\n\taskValue(dbPrompt, \"1\", &db)\n\n\tswitch db {\n\tcase 1:\n\t\tconf.Dialect = util.DbDriverMySQL\n\t\tscanMySQL(conf)\n\tcase 2:\n\t\tconf.Dialect = util.DbDriverBolt\n\t\tscanBoltDb(conf)\n\tcase 3:\n\t\tconf.Dialect = util.DbDriverPostgres\n\t\tscanPostgres(conf)\n\tcase 4:\n\t\tconf.Dialect = util.DbDriverSQLite\n\t\tscanSQLite(conf)\n\t}\n\n\tdefaultPlaybookPath := filepath.Join(os.TempDir(), \"semaphore\")\n\taskValue(\"Playbook path\", defaultPlaybookPath, &conf.TmpPath)\n\tconf.TmpPath = filepath.Clean(conf.TmpPath)\n\n\taskValue(\"Public URL (optional, example: https://example.com/semaphore)\", \"\", &conf.WebHost)\n\n\taskConfirmation(\"Enable email alerts?\", false, &conf.EmailAlert)\n\tif conf.EmailAlert {\n\t\taskValue(\"Mail server host\", \"localhost\", &conf.EmailHost)\n\t\taskValue(\"Mail server port\", \"25\", &conf.EmailPort)\n\t\taskValue(\"Mail sender address\", \"semaphore@localhost\", &conf.EmailSender)\n\t}\n\n\taskConfirmation(\"Enable telegram alerts?\", false, &conf.TelegramAlert)\n\tif conf.TelegramAlert {\n\t\taskValue(\"Telegram bot token (you can get it from @BotFather)\", \"\", &conf.TelegramToken)\n\t\taskValue(\"Telegram chat ID\", \"\", &conf.TelegramChat)\n\t}\n\n\taskConfirmation(\"Enable slack alerts?\", false, &conf.SlackAlert)\n\tif conf.SlackAlert {\n\t\taskValue(\"Slack Webhook URL\", \"\", &conf.SlackUrl)\n\t}\n\n\taskConfirmation(\"Enable Rocket.Chat alerts?\", false, &conf.RocketChatAlert)\n\tif conf.RocketChatAlert {\n\t\taskValue(\"Rocket.Chat Webhook URL\", \"\", &conf.RocketChatUrl)\n\t}\n\n\taskConfirmation(\"Enable Microsoft Team Channel alerts?\", false, &conf.MicrosoftTeamsAlert)\n\tif conf.MicrosoftTeamsAlert {\n\t\taskValue(\"Microsoft Teams Webhook URL\", \"\", &conf.MicrosoftTeamsUrl)\n\t}\n\n\taskConfirmation(\"Enable LDAP authentication?\", false, &conf.LdapEnable)\n\tif conf.LdapEnable {\n\t\tconf.LdapMappings = &util.LdapMappings{}\n\t\taskValue(\"LDAP server host\", \"localhost:389\", &conf.LdapServer)\n\t\taskConfirmation(\"Enable LDAP TLS connection\", false, &conf.LdapNeedTLS)\n\t\taskValue(\"LDAP DN for bind\", \"cn=user,ou=users,dc=example\", &conf.LdapBindDN)\n\t\taskValue(\"Password for LDAP bind user\", \"pa55w0rd\", &conf.LdapBindPassword)\n\t\taskValue(\"LDAP DN for user search\", \"ou=users,dc=example\", &conf.LdapSearchDN)\n\t\taskValue(\"LDAP search filter\", `(uid=%s)`, &conf.LdapSearchFilter)\n\t\taskValue(\"LDAP mapping for DN field\", \"dn\", &conf.LdapMappings.DN)\n\t\taskValue(\"LDAP mapping for username field\", \"uid\", &conf.LdapMappings.UID)\n\t\taskValue(\"LDAP mapping for full name field\", \"cn\", &conf.LdapMappings.CN)\n\t\taskValue(\"LDAP mapping for email field\", \"mail\", &conf.LdapMappings.Mail)\n\t}\n}\n\nfunc scanBoltDb(conf *util.ConfigType) {\n\tconf.BoltDb = scanFileDB(\"database.boltdb\")\n}\n\nfunc scanSQLite(conf *util.ConfigType) {\n\tconf.SQLite = scanFileDB(\"database.sqlite\")\n}\n\nfunc scanMySQL(conf *util.ConfigType) {\n\tconf.MySQL = &util.DbConfig{}\n\taskValue(\"db Hostname\", \"127.0.0.1:3306\", &conf.MySQL.Hostname)\n\taskValue(\"db User\", \"root\", &conf.MySQL.Username)\n\taskValue(\"db Password\", \"\", &conf.MySQL.Password)\n\taskValue(\"db Name\", \"semaphore\", &conf.MySQL.DbName)\n}\n\nfunc scanPostgres(conf *util.ConfigType) {\n\tconf.Postgres = &util.DbConfig{}\n\taskValue(\"db Hostname\", \"127.0.0.1:5432\", &conf.Postgres.Hostname)\n\taskValue(\"db User\", \"root\", &conf.Postgres.Username)\n\taskValue(\"db Password\", \"\", &conf.Postgres.Password)\n\taskValue(\"db Name\", \"semaphore\", &conf.Postgres.DbName)\n\tif conf.Postgres.Options == nil {\n\t\tconf.Postgres.Options = make(map[string]string)\n\t}\n\tif _, exists := conf.Postgres.Options[\"sslmode\"]; !exists {\n\t\tconf.Postgres.Options[\"sslmode\"] = \"disable\"\n\t}\n}\n\nfunc scanFileDB(defaultDbFile string) *util.DbConfig {\n\tworkingDirectory, err := os.Getwd()\n\tif err != nil {\n\t\tworkingDirectory = os.TempDir()\n\t}\n\tdefaultDBPath := filepath.Join(workingDirectory, defaultDbFile)\n\tconf := &util.DbConfig{}\n\taskValue(\"db Hostname\", defaultDBPath, &conf.Hostname)\n\treturn conf\n}\n\nfunc scanErrorChecker(n int, err error) {\n\tif err != nil && err.Error() != \"unexpected newline\" {\n\t\tlog.Warn(\"An input error occurred: \" + err.Error())\n\t}\n}\n\ntype IConfig interface {\n\tToJSON() ([]byte, error)\n}\n\nfunc SaveConfig(config IConfig, defaultFilename string, requiredConfigPath string) (configPath string) {\n\n\tif requiredConfigPath == \"\" {\n\t\tconfigDirectory, err := os.Getwd()\n\t\tif err != nil {\n\t\t\tconfigDirectory, err = os.UserConfigDir()\n\t\t\tif err != nil {\n\t\t\t\t// Final fallback\n\t\t\t\tconfigDirectory = \"/etc/semaphore\"\n\t\t\t}\n\t\t\tconfigDirectory = filepath.Join(configDirectory, \"semaphore\")\n\t\t}\n\n\t\taskValue(\"Config output directory\", configDirectory, &configDirectory)\n\t\tconfigPath = filepath.Join(configDirectory, defaultFilename)\n\t} else {\n\t\tconfigPath = requiredConfigPath\n\t}\n\n\tconfigDirectory := filepath.Dir(configPath)\n\n\tfmt.Printf(\"Running: mkdir -p %v..\\n\", configDirectory)\n\n\tvar err error\n\n\tif _, err = os.Stat(configDirectory); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\terr = os.MkdirAll(configDirectory, 0755)\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tlog.Panic(\"Could not create config directory: \" + err.Error())\n\t}\n\n\t// Marshal config to json\n\tbytes, err := config.ToJSON()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tif err = os.WriteFile(configPath, bytes, 0644); err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Printf(\"Configuration written to %v..\\n\", configPath)\n\treturn\n}\n\nfunc askValue(prompt string, defaultValue string, item any) {\n\t// Print prompt with optional default value\n\tfmt.Print(prompt)\n\tif len(defaultValue) != 0 {\n\t\tfmt.Print(\" (default \" + defaultValue + \")\")\n\t}\n\tfmt.Print(\": \")\n\n\t_, _ = fmt.Sscanln(defaultValue, item)\n\n\tn, err := fmt.Scanln(item)\n\tscanErrorChecker(n, err)\n\n\t// Empty line after prompt\n\tfmt.Println(\"\")\n}\n\nfunc askConfirmation(prompt string, defaultValue bool, item *bool) {\n\tdefString := \"yes\"\n\tif !defaultValue {\n\t\tdefString = \"no\"\n\t}\n\n\tfmt.Print(prompt + \" (yes/no) (default \" + defString + \"): \")\n\n\tvar answer string\n\n\tn, err := fmt.Scanln(&answer)\n\tscanErrorChecker(n, err)\n\n\tswitch strings.ToLower(answer) {\n\tcase \"y\", \"yes\":\n\t\t*item = true\n\tcase \"n\", \"no\":\n\t\t*item = false\n\tdefault:\n\t\t*item = defaultValue\n\t}\n\n\t// Empty line after prompt\n\tfmt.Println(\"\")\n}\n"
  },
  {
    "path": "db/APIToken.go",
    "content": "package db\n\nimport \"time\"\n\n// APIToken is given to a user to allow API access\ntype APIToken struct {\n\tID      string    `db:\"id\" json:\"id\"`\n\tCreated time.Time `db:\"created\" json:\"created\"`\n\tExpired bool      `db:\"expired\" json:\"expired\"`\n\tUserID  int       `db:\"user_id\" json:\"user_id\"`\n}\n"
  },
  {
    "path": "db/AccessKey.go",
    "content": "package db\n\nimport (\n\t\"fmt\"\n)\n\ntype AccessKeyType string\ntype AccessKeyOwner string\n\ntype AccessKeySourceStorageType string\n\nconst (\n\tAccessKeySSH           AccessKeyType = \"ssh\"\n\tAccessKeyNone          AccessKeyType = \"none\"\n\tAccessKeyLoginPassword AccessKeyType = \"login_password\"\n\tAccessKeyString        AccessKeyType = \"string\"\n)\nconst (\n\tAccessKeyEnvironment   AccessKeyOwner = \"environment\"\n\tAccessKeyVariable      AccessKeyOwner = \"variable\"\n\tAccessKeySecretStorage AccessKeyOwner = \"vault\"\n\tAccessKeyShared        AccessKeyOwner = \"\"\n)\nconst (\n\tAccessKeySourceStorageVault AccessKeySourceStorageType = \"vault\"\n\tAccessKeySourceStorageEnv   AccessKeySourceStorageType = \"env\"\n\tAccessKeySourceStorageFile  AccessKeySourceStorageType = \"file\"\n)\n\n// AccessKey represents a key used to access a machine with ansible from semaphore\ntype AccessKey struct {\n\tID   int    `db:\"id\" json:\"id\" backup:\"-\"`\n\tName string `db:\"name\" json:\"name\" binding:\"required\"`\n\t// 'ssh/login_password/none'\n\tType AccessKeyType `db:\"type\" json:\"type\" binding:\"required\"`\n\n\tProjectID *int `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\n\t// Secret used internally, do not assign this field.\n\t// You should use methods SerializeSecret to fill this field.\n\tSecret      *string `db:\"secret\" json:\"-\" backup:\"-\"`\n\tPlain       *string `db:\"plain\" json:\"plain,omitempty\"`\n\tIgnorePlain bool\n\n\tString         string        `db:\"-\" json:\"string\"`\n\tLoginPassword  LoginPassword `db:\"-\" json:\"login_password\"`\n\tSshKey         SshKey        `db:\"-\" json:\"ssh\"`\n\tOverrideSecret bool          `db:\"-\" json:\"override_secret,omitempty\"`\n\n\tStorageID *int `db:\"storage_id\" json:\"-\" backup:\"-\"`\n\n\t// EnvironmentID is an ID of environment which owns the access key.\n\tEnvironmentID *int `db:\"environment_id\" json:\"-\" backup:\"-\"`\n\n\t// UserID is an ID of a user which owns the access key.\n\tUserID *int `db:\"user_id\" json:\"-\" backup:\"-\"`\n\n\tEmpty bool `db:\"-\" json:\"empty,omitempty\"`\n\n\tOwner AccessKeyOwner `db:\"owner\" json:\"owner,omitempty\"`\n\n\t// SourceStorageID represents the ID of the source storage associated with the access key, used for reference purposes.\n\tSourceStorageID *int `db:\"source_storage_id\" json:\"source_storage_id,omitempty\" backup:\"-\"`\n\n\t// SourceStorageKey is an optional reference to a specific storage key associated with the source storage.\n\t// For example, for HashiCorp Vault, this is the path to the secret.\n\t// If SourceStorageID is nil, this field is references to an environment variable.\n\tSourceStorageKey  *string                     `db:\"source_storage_key\" json:\"source_storage_key,omitempty\"`\n\tSourceStorageType *AccessKeySourceStorageType `db:\"source_storage_type\" json:\"source_storage_type,omitempty\"`\n}\n\nfunc (key *AccessKey) IsNativelyReadOnly() bool {\n\tif key.SourceStorageType == nil {\n\t\treturn false\n\t}\n\n\treturn *key.SourceStorageType == AccessKeySourceStorageFile || *key.SourceStorageType == AccessKeySourceStorageEnv\n}\n\nfunc (key *AccessKey) IsEmpty() bool {\n\tif key == nil {\n\t\treturn true\n\t}\n\n\tif key.Type == AccessKeyNone {\n\t\treturn false\n\t}\n\n\tif key.SourceStorageType != nil {\n\t\tswitch *key.SourceStorageType {\n\t\tcase AccessKeySourceStorageEnv, AccessKeySourceStorageFile:\n\t\t\treturn key.SourceStorageKey == nil || *key.SourceStorageKey == \"\"\n\t\tcase AccessKeySourceStorageVault:\n\t\t\treturn key.SourceStorageID == nil\n\t\tdefault:\n\t\t\treturn true\n\t\t}\n\t}\n\n\tif key.Secret != nil && *key.Secret != \"\" {\n\t\treturn false\n\t}\n\n\tswitch key.Type {\n\tcase AccessKeyString:\n\t\treturn key.String == \"\"\n\tcase AccessKeySSH:\n\t\treturn key.SshKey.PrivateKey == \"\"\n\tcase AccessKeyLoginPassword:\n\t\treturn key.LoginPassword.Password == \"\"\n\tdefault:\n\t\treturn true\n\t}\n}\n\ntype LoginPassword struct {\n\tLogin    string `json:\"login\"`\n\tPassword string `json:\"password\"`\n}\n\ntype SshKey struct {\n\tLogin      string `json:\"login\"`\n\tPassphrase string `json:\"passphrase\"`\n\tPrivateKey string `json:\"private_key\"`\n}\n\ntype AccessKeyRole int\n\nconst (\n\tAccessKeyRoleAnsibleUser = iota\n\tAccessKeyRoleAnsibleBecomeUser\n\tAccessKeyRoleAnsiblePasswordVault\n\tAccessKeyRoleGit\n)\n\nfunc (key *AccessKey) Validate(validateSecretFields bool) error {\n\tif key.Name == \"\" {\n\t\treturn fmt.Errorf(\"name can not be empty\")\n\t}\n\n\t//if !validateSecretFields {\n\t//\treturn nil\n\t//}\n\n\t//switch key.Type {\n\t//case AccessKeySSH:\n\t//\tif key.SshKey.PrivateKey == \"\" {\n\t//\t\treturn fmt.Errorf(\"private key can not be empty\")\n\t//\t}\n\t//case AccessKeyLoginPassword:\n\t//\tif key.LoginPassword.Password == \"\" {\n\t//\t\treturn fmt.Errorf(\"password can not be empty\")\n\t//\t}\n\t//}\n\n\treturn nil\n}\n\nfunc (key *AccessKey) IsEnvironmentVariable() bool {\n\treturn key.SourceStorageID == nil && key.SourceStorageKey != nil\n}\n"
  },
  {
    "path": "db/Alias.go",
    "content": "package db\n\ntype Alias struct {\n\tID        int\n\tAlias     string\n\tProjectID int\n}\n\ntype Aliasable interface {\n\tToAlias() Alias\n}\n"
  },
  {
    "path": "db/BackupEntity.go",
    "content": "package db\n\ntype BackupEntity interface {\n\tGetID() int\n\tGetName() string\n}\n\ntype BackupSluggedEntity interface {\n\tGetSlug() string\n\tGetName() string\n}\n\nfunc (e View) GetID() int {\n\treturn e.ID\n}\n\nfunc (e View) GetName() string {\n\treturn e.Title\n}\n\nfunc (e Schedule) GetName() string {\n\treturn e.Name\n}\n\nfunc (e Template) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Template) GetName() string {\n\treturn e.Name\n}\n\nfunc (e Inventory) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Inventory) GetName() string {\n\treturn e.Name\n}\n\nfunc (key AccessKey) GetID() int {\n\treturn key.ID\n}\n\nfunc (key AccessKey) GetName() string {\n\treturn key.Name\n}\n\nfunc (e Repository) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Repository) GetName() string {\n\treturn e.Name\n}\n\nfunc (e Environment) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Environment) GetName() string {\n\treturn e.Name\n}\n\nfunc (e SecretStorage) GetID() int {\n\treturn e.ID\n}\n\nfunc (e SecretStorage) GetName() string {\n\treturn e.Name\n}\n\nfunc (e Role) GetID() int {\n\tpanic(\"Role does not implement GetID\")\n}\n\nfunc (e Role) GetSlug() string {\n\treturn e.Slug\n}\n\nfunc (e Role) GetName() string {\n\tif e.ProjectID == nil {\n\t\treturn e.Slug\n\t}\n\treturn e.Name\n}\n\nfunc (e TemplateVault) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Task) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Integration) GetID() int {\n\treturn e.ID\n}\n\nfunc (e Project) GetID() int {\n\treturn e.ID\n}\nfunc (e User) GetID() int {\n\treturn e.ID\n}\n"
  },
  {
    "path": "db/Environment.go",
    "content": "package db\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n)\n\ntype EnvironmentSecretOperation string\n\nconst (\n\tEnvironmentSecretCreate EnvironmentSecretOperation = \"create\"\n\tEnvironmentSecretUpdate EnvironmentSecretOperation = \"update\"\n\tEnvironmentSecretDelete EnvironmentSecretOperation = \"delete\"\n)\n\ntype EnvironmentSecretType string\n\nconst (\n\tEnvironmentSecretVar EnvironmentSecretType = \"var\"\n\tEnvironmentSecretEnv EnvironmentSecretType = \"env\"\n)\n\nfunc (t EnvironmentSecretType) GetAccessKeyOwner() AccessKeyOwner {\n\tswitch t {\n\tcase EnvironmentSecretVar:\n\t\treturn AccessKeyVariable\n\tcase EnvironmentSecretEnv:\n\t\treturn AccessKeyEnvironment\n\tdefault:\n\t\tpanic(\"unknown secret type: \" + t)\n\t}\n}\n\ntype EnvironmentSecret struct {\n\tID        int                        `json:\"id\"`\n\tType      EnvironmentSecretType      `json:\"type\"`\n\tName      string                     `json:\"name\"`\n\tSecret    string                     `json:\"secret\"`\n\tOperation EnvironmentSecretOperation `json:\"operation\"`\n}\n\n// Environment is used to pass additional arguments, in json form to ansible\ntype Environment struct {\n\tID        int     `db:\"id\" json:\"id\" backup:\"-\"`\n\tName      string  `db:\"name\" json:\"name\" binding:\"required\"`\n\tProjectID int     `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tPassword  *string `db:\"password\" json:\"password\"`\n\tJSON      string  `db:\"json\" json:\"json\" binding:\"required\"`\n\tENV       *string `db:\"env\" json:\"env\" binding:\"required\"`\n\n\t// Secrets is a field which used to update secrets associated with the environment.\n\tSecrets []EnvironmentSecret `db:\"-\" json:\"secrets,omitempty\" backup:\"-\"`\n\n\tSecretStorageID        *int    `db:\"secret_storage_id\" json:\"secret_storage_id,omitempty\" backup:\"-\"`\n\tSecretStorageKeyPrefix *string `db:\"secret_storage_key_prefix\" json:\"secret_storage_key_prefix,omitempty\"`\n}\n\nfunc (s *EnvironmentSecret) Validate() error {\n\n\tif s.Type == EnvironmentSecretVar || s.Type == EnvironmentSecretEnv {\n\t\treturn nil\n\t}\n\n\tif s.Secret == \"\" {\n\t\treturn errors.New(\"missing secret\")\n\t}\n\n\treturn errors.New(\"invalid environment secret type\")\n}\n\nfunc validateJSON(s string, mustValuesBeScalar bool) error {\n\tif s == \"\" {\n\t\treturn nil\n\t}\n\n\tvar data map[string]any\n\terr := json.Unmarshal([]byte(s), &data)\n\tif err != nil {\n\t\treturn errors.New(\"must be valid JSON\")\n\t}\n\n\tfor k, v := range data {\n\t\tif k == \"\" {\n\t\t\treturn errors.New(\"key can not be empty\")\n\t\t}\n\n\t\tif mustValuesBeScalar {\n\t\t\tswitch v.(type) {\n\t\t\tcase []any, map[string]any:\n\t\t\t\treturn errors.New(\"values must be scalar\")\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (env *Environment) Validate() (err error) {\n\tif env.Name == \"\" {\n\t\terr = &ValidationError{\"Environment name can not be empty\"}\n\t\treturn\n\t}\n\n\terr = validateJSON(env.JSON, false)\n\tif err != nil {\n\t\terr = &ValidationError{\"Extra variables \" + err.Error()}\n\t\treturn\n\t}\n\n\tif env.ENV == nil {\n\t\treturn\n\t}\n\n\terr = validateJSON(*env.ENV, true)\n\tif err != nil {\n\t\terr = &ValidationError{\"Environment variables \" + err.Error()}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/Environment_test.go",
    "content": "package db\n\nimport (\n\t\"github.com/stretchr/testify/assert\"\n\t\"testing\"\n)\n\nfunc Test_EnvironmentValidate_EmptyName_ReturnsError(t *testing.T) {\n\tenv := &Environment{\n\t\tName: \"\",\n\t\tJSON: \"{}\",\n\t\tENV:  nil,\n\t}\n\terr := env.Validate()\n\tassert.Error(t, err)\n\tassert.Equal(t, \"Environment name can not be empty\", err.Error())\n}\n\nfunc Test_EnvironmentValidate_InvalidJSON_ReturnsError(t *testing.T) {\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: \"{invalid_json}\",\n\t\tENV:  nil,\n\t}\n\terr := env.Validate()\n\tassert.Error(t, err)\n\tassert.Equal(t, \"Extra variables must be valid JSON\", err.Error())\n}\n\nfunc Test_EnvironmentValidate_ValidJSON_ReturnsNoError(t *testing.T) {\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: `{\"key\": \"value\"}`,\n\t\tENV:  nil,\n\t}\n\terr := env.Validate()\n\tassert.NoError(t, err)\n}\n\nfunc Test_EnvironmentValidate_InvalidEnvJSON_ReturnsError(t *testing.T) {\n\tenvVar := \"{invalid_json}\"\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: `{\"key\": \"value\"}`,\n\t\tENV:  &envVar,\n\t}\n\terr := env.Validate()\n\tassert.Error(t, err)\n\tassert.Equal(t, \"Environment variables must be valid JSON\", err.Error())\n}\n\nfunc Test_EnvironmentValidate_EmptyJsonName_ReturnsError(t *testing.T) {\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: `{\"\": \"value\"}`,\n\t\tENV:  nil,\n\t}\n\terr := env.Validate()\n\tassert.Error(t, err)\n\tassert.Equal(t, \"Extra variables key can not be empty\", err.Error())\n}\n\nfunc Test_EnvironmentValidate_NonScalarEnvValues_ReturnsError(t *testing.T) {\n\tenvVar := `{\"key\": {\"nested\": \"value\"}}`\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: `{\"key\": \"value\"}`,\n\t\tENV:  &envVar,\n\t}\n\terr := env.Validate()\n\tassert.Error(t, err)\n\tassert.Equal(t, \"Environment variables values must be scalar\", err.Error())\n}\n\nfunc Test_EnvironmentValidate_ValidEnvJSON_ReturnsNoError(t *testing.T) {\n\tenvVar := `{\"key\": \"value\"}`\n\tenv := &Environment{\n\t\tName: \"TestEnv\",\n\t\tJSON: `{\"key\": \"value\"}`,\n\t\tENV:  &envVar,\n\t}\n\terr := env.Validate()\n\tassert.NoError(t, err)\n}\n"
  },
  {
    "path": "db/Event.go",
    "content": "package db\n\nimport (\n\tlog \"github.com/sirupsen/logrus\"\n\t\"time\"\n)\n\n// Event represents information generated by ansible or api action captured to the database during execution\ntype Event struct {\n\tID            int  `db:\"id\" json:\"-\"`\n\tUserID        *int `db:\"user_id\" json:\"user_id\"`\n\tProjectID     *int `db:\"project_id\" json:\"project_id\"`\n\tIntegrationID *int `db:\"integration_id\" json:\"integration_id\"`\n\n\tObjectID    *int             `db:\"object_id\" json:\"object_id\"`\n\tObjectType  *EventObjectType `db:\"object_type\" json:\"object_type\"`\n\tDescription *string          `db:\"description\" json:\"description\"`\n\tCreated     time.Time        `db:\"created\" json:\"created\"`\n\n\tObjectName  string  `db:\"-\" json:\"object_name\"`\n\tProjectName *string `db:\"project_name\" json:\"project_name\"`\n\tUsername    *string `db:\"-\" json:\"username\"`\n}\n\nfunc (event Event) ToFields() (logFields log.Fields) {\n\n\tlogFields = log.Fields{}\n\n\tif event.ProjectID != nil {\n\t\tlogFields[\"project\"] = *event.ProjectID\n\t}\n\n\tif event.ObjectType != nil {\n\t\tlogFields[\"type\"] = *event.ObjectType\n\t}\n\n\tif event.ObjectID != nil {\n\t\tlogFields[\"object\"] = *event.ObjectID\n\t}\n\n\tif event.UserID != nil {\n\t\tlogFields[\"user\"] = *event.UserID\n\t}\n\n\tif event.IntegrationID != nil {\n\t\tlogFields[\"integration\"] = *event.IntegrationID\n\t}\n\n\treturn\n}\n\ntype EventObjectType string\n\nconst (\n\tEventTask                    EventObjectType = \"task\"\n\tEventEnvironment             EventObjectType = \"environment\"\n\tEventInventory               EventObjectType = \"inventory\"\n\tEventKey                     EventObjectType = \"key\"\n\tEventProject                 EventObjectType = \"project\"\n\tEventRepository              EventObjectType = \"repository\"\n\tEventSchedule                EventObjectType = \"schedule\"\n\tEventTemplate                EventObjectType = \"template\"\n\tEventUser                    EventObjectType = \"user\"\n\tEventView                    EventObjectType = \"view\"\n\tEventIntegration             EventObjectType = \"integration\"\n\tEventIntegrationExtractValue EventObjectType = \"integrationextractvalue\"\n\tEventIntegrationMatcher      EventObjectType = \"integrationmatcher\"\n\n\tEventTerraformInventoryAlias EventObjectType = \"terraform_inventory_alias\"\n)\n\nfunc FillEvents(d Store, events []Event) (err error) {\n\tusernames := make(map[int]string)\n\n\tfor i, evt := range events {\n\t\tvar objName string\n\t\tobjName, err = getEventObjectName(d, evt)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif objName != \"\" {\n\t\t\tevents[i].ObjectName = objName\n\t\t}\n\n\t\tif evt.UserID == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar username string\n\n\t\tusername, ok := usernames[*evt.UserID]\n\n\t\tif !ok {\n\t\t\tusername, err = getEventUsername(d, evt)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif username == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tusernames[*evt.UserID] = username\n\t\t}\n\n\t\tevents[i].Username = &username\n\t}\n\n\treturn\n}\n\nfunc getEventObjectName(d Store, evt Event) (string, error) {\n\tif evt.ObjectID == nil || evt.ObjectType == nil {\n\t\treturn \"\", nil\n\t}\n\tswitch *evt.ObjectType {\n\tcase EventTask:\n\t\ttask, err := d.GetTask(*evt.ProjectID, *evt.ObjectID)\n\t\tif err != nil {\n\t\t\t// Task can be deleted, it is ok, just return empty string\n\t\t\treturn \"\", nil\n\t\t}\n\t\treturn task.Playbook, nil\n\tdefault:\n\t\treturn \"\", nil\n\t}\n}\n\nfunc getEventUsername(d Store, evt Event) (username string, err error) {\n\tif evt.UserID == nil {\n\t\treturn \"\", nil\n\t}\n\n\tuser, err := d.GetUser(*evt.UserID)\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn user.Username, nil\n}\n"
  },
  {
    "path": "db/ExportEntityType.go",
    "content": "package db\n\nimport (\n\t\"strconv\"\n)\n\nfunc NewKeyFromInt(key int) string {\n\treturn strconv.Itoa(key)\n}\n\nfunc (e TemplateVault) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Task) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Integration) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Project) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\nfunc (e User) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\nfunc (e Template) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Environment) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Repository) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e SecretStorage) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (key AccessKey) GetDbKey() string {\n\treturn NewKeyFromInt(key.ID)\n}\n\nfunc (e Inventory) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Role) GetDbKey() string {\n\treturn e.Slug\n}\n\nfunc (e View) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e IntegrationAlias) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e IntegrationExtractValue) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e IntegrationMatcher) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Schedule) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e TaskStage) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e TemplateRolePerm) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e TaskParams) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e ProjectUser) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e TaskOutput) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e TaskStageResult) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Option) GetDbKey() string {\n\treturn e.Key\n}\n\nfunc (e Event) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n\nfunc (e Runner) GetDbKey() string {\n\treturn NewKeyFromInt(e.ID)\n}\n"
  },
  {
    "path": "db/Integration.go",
    "content": "package db\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype IntegrationAuthMethod string\n\nconst (\n\tIntegrationAuthNone      = \"\"\n\tIntegrationAuthGitHub    = \"github\"\n\tIntegrationAuthToken     = \"token\"\n\tIntegrationAuthHmac      = \"hmac\"\n\tIntegrationAuthBitbucket = \"bitbucket\"\n\tIntegrationAuthBasic     = \"basic\"\n)\n\ntype IntegrationMatchType string\n\nconst (\n\tIntegrationMatchHeader IntegrationMatchType = \"header\"\n\tIntegrationMatchBody   IntegrationMatchType = \"body\"\n)\n\ntype IntegrationMatchMethodType string\n\nconst (\n\tIntegrationMatchMethodEquals   IntegrationMatchMethodType = \"equals\"\n\tIntegrationMatchMethodUnEquals IntegrationMatchMethodType = \"unequals\"\n\tIntegrationMatchMethodContains IntegrationMatchMethodType = \"contains\"\n)\n\ntype IntegrationBodyDataType string\n\nconst (\n\tIntegrationBodyDataJSON   IntegrationBodyDataType = \"json\"\n\tIntegrationBodyDataString IntegrationBodyDataType = \"string\"\n)\n\ntype IntegrationVariableType string\n\nconst (\n\tIntegrationVariableEnvironment IntegrationVariableType = \"environment\"\n\tIntegrationVariableTaskParam   IntegrationVariableType = \"task\"\n)\n\ntype IntegrationMatcher struct {\n\tID            int                        `db:\"id\" json:\"id\" backup:\"-\"`\n\tIntegrationID int                        `db:\"integration_id\" json:\"integration_id\" backup:\"-\"`\n\tName          string                     `db:\"name\" json:\"name\"`\n\tMatchType     IntegrationMatchType       `db:\"match_type\" json:\"match_type\"`\n\tMethod        IntegrationMatchMethodType `db:\"method\" json:\"method\"`\n\tBodyDataType  IntegrationBodyDataType    `db:\"body_data_type\" json:\"body_data_type\"`\n\tKey           string                     `db:\"key\" json:\"key\"`\n\tValue         string                     `db:\"value\" json:\"value\"`\n}\n\ntype IntegrationExtractValueSource string\n\nconst (\n\tIntegrationExtractBodyValue   IntegrationExtractValueSource = \"body\"\n\tIntegrationExtractHeaderValue IntegrationExtractValueSource = \"header\"\n)\n\ntype IntegrationExtractValue struct {\n\tID            int                           `db:\"id\" json:\"id\" backup:\"-\"`\n\tIntegrationID int                           `db:\"integration_id\" json:\"integration_id\" backup:\"-\"`\n\tName          string                        `db:\"name\" json:\"name\"`\n\tValueSource   IntegrationExtractValueSource `db:\"value_source\" json:\"value_source\"`\n\tBodyDataType  IntegrationBodyDataType       `db:\"body_data_type\" json:\"body_data_type\"`\n\tKey           string                        `db:\"key\" json:\"key\"`\n\tVariable      string                        `db:\"variable\" json:\"variable\"`\n\tVariableType  IntegrationVariableType       `db:\"variable_type\" json:\"variable_type\"`\n}\n\ntype IntegrationAlias struct {\n\tID            int    `db:\"id\" json:\"-\" backup:\"-\"`\n\tAlias         string `db:\"alias\" json:\"alias\"`\n\tProjectID     int    `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tIntegrationID *int   `db:\"integration_id\" json:\"integration_id\" backup:\"-\"`\n}\n\ntype IntegrationAliasLevel int\n\nconst (\n\tIntegrationAliasProject = iota\n\tIntegrationAliasSingle\n)\n\ntype Integration struct {\n\tID           int                   `db:\"id\" json:\"id\" backup:\"-\"`\n\tName         string                `db:\"name\" json:\"name\"`\n\tProjectID    int                   `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tTemplateID   int                   `db:\"template_id\" json:\"template_id\" backup:\"-\"`\n\tAuthMethod   IntegrationAuthMethod `db:\"auth_method\" json:\"auth_method\"`\n\tAuthSecretID *int                  `db:\"auth_secret_id\" json:\"auth_secret_id\" backup:\"-\"`\n\tAuthHeader   string                `db:\"auth_header\" json:\"auth_header\"`\n\tAuthSecret   AccessKey             `db:\"-\" json:\"-\" backup:\"-\"`\n\tSearchable   bool                  `db:\"searchable\" json:\"searchable\"`\n\t//TaskParams   MapStringAnyField     `db:\"task_params\" json:\"task_params\"`\n\n\tTaskParamsID *int        `db:\"task_params_id\" json:\"-\" backup:\"-\"`\n\tTaskParams   *TaskParams `db:\"-\" json:\"task_params,omitempty\" backup:\"task_params\"`\n}\n\nfunc (alias IntegrationAlias) ToAlias() Alias {\n\treturn Alias{\n\t\tID:        alias.ID,\n\t\tAlias:     alias.Alias,\n\t\tProjectID: alias.ProjectID,\n\t}\n}\n\nfunc (env *Integration) Validate() error {\n\tif env.Name == \"\" {\n\t\treturn &ValidationError{\"No Name set for integration\"}\n\t}\n\treturn nil\n}\n\nfunc (env *IntegrationMatcher) Validate() error {\n\tif env.MatchType == \"\" {\n\t\treturn &ValidationError{\"No Match Type set\"}\n\t} else {\n\t\tif env.Key == \"\" {\n\t\t\treturn &ValidationError{\"No key set\"}\n\t\t}\n\t\tif env.Value == \"\" {\n\t\t\treturn &ValidationError{\"No value set\"}\n\t\t}\n\n\t}\n\n\tif env.Name == \"\" {\n\t\treturn &ValidationError{\"No Name set for integration\"}\n\t}\n\n\treturn nil\n}\n\nfunc (env *IntegrationExtractValue) Validate() error {\n\tif env.ValueSource == \"\" {\n\t\treturn &ValidationError{\"No Value Source defined\"}\n\t}\n\n\tif env.Name == \"\" {\n\t\treturn &ValidationError{\"No Name set for integration\"}\n\t}\n\n\tif env.ValueSource == IntegrationExtractBodyValue {\n\t\tif env.BodyDataType == \"\" {\n\t\t\treturn &ValidationError{\"Value Source but no body data type set\"}\n\t\t}\n\n\t\tif env.BodyDataType == IntegrationBodyDataJSON {\n\t\t\tif env.Key == \"\" {\n\t\t\t\treturn &ValidationError{\"No Key set for JSON Body Data extraction.\"}\n\t\t\t}\n\t\t}\n\t}\n\n\tif env.ValueSource == IntegrationExtractHeaderValue {\n\t\tif env.Key == \"\" {\n\t\t\treturn &ValidationError{\"Value Source set but no Key set\"}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (matcher *IntegrationMatcher) String() string {\n\tvar builder strings.Builder\n\t// ID:1234 body/json key == value on Extractor: 1234\n\tbuilder.WriteString(\"ID:\" + strconv.Itoa(matcher.ID) + \" \" + string(matcher.MatchType))\n\n\tif matcher.MatchType == IntegrationMatchBody {\n\t\tbuilder.WriteString(\"/\" + string(matcher.BodyDataType))\n\t}\n\n\tbuilder.WriteString(\" \" + matcher.Key + \" \")\n\n\tswitch matcher.Method {\n\tcase IntegrationMatchMethodEquals:\n\t\tbuilder.WriteString(\"==\")\n\tcase IntegrationMatchMethodUnEquals:\n\t\tbuilder.WriteString(\"!=\")\n\tcase IntegrationMatchMethodContains:\n\t\tbuilder.WriteString(\" contains \")\n\tdefault:\n\n\t}\n\n\tbuilder.WriteString(matcher.Value + \", on Extractor: \" + strconv.Itoa(matcher.IntegrationID))\n\n\treturn builder.String()\n}\n\nfunc (value *IntegrationExtractValue) String() string {\n\tvar builder strings.Builder\n\n\t// ID:1234 body/json from key as argument\n\tbuilder.WriteString(\"ID:\" + strconv.Itoa(value.ID) + \" \" + string(value.ValueSource))\n\n\tif value.ValueSource == IntegrationExtractBodyValue {\n\t\tbuilder.WriteString(\"/\" + string(value.BodyDataType))\n\t}\n\n\tbuilder.WriteString(\" from \" + value.Key + \" as \" + value.Variable)\n\n\treturn builder.String()\n}\n"
  },
  {
    "path": "db/Inventory.go",
    "content": "package db\n\ntype InventoryType string\n\nconst (\n\tInventoryStatic     InventoryType = \"static\"\n\tInventoryStaticYaml InventoryType = \"static-yaml\"\n\t// InventoryFile means that it is path to the Ansible inventory file\n\tInventoryFile                InventoryType = \"file\"\n\tInventoryTerraformWorkspace  InventoryType = \"terraform-workspace\"\n\tInventoryTofuWorkspace       InventoryType = \"tofu-workspace\"\n\tInventoryTerragruntWorkspace InventoryType = \"terragrunt-workspace\"\n)\n\nfunc (i InventoryType) IsStatic() bool {\n\treturn i == InventoryStatic || i == InventoryStaticYaml\n}\n\n// Inventory is the model of an ansible inventory file\ntype Inventory struct {\n\tID        int    `db:\"id\" json:\"id\" backup:\"-\"`\n\tName      string `db:\"name\" json:\"name\" binding:\"required\"`\n\tProjectID int    `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tInventory string `db:\"inventory\" json:\"inventory\"`\n\n\t// accesses hosts in inventory\n\tSSHKeyID *int      `db:\"ssh_key_id\" json:\"ssh_key_id\" backup:\"-\"`\n\tSSHKey   AccessKey `db:\"-\" json:\"-\" backup:\"-\"`\n\n\tBecomeKeyID *int      `db:\"become_key_id\" json:\"become_key_id\" backup:\"-\"`\n\tBecomeKey   AccessKey `db:\"-\" json:\"-\" backup:\"-\"`\n\n\t// static/file\n\tType InventoryType `db:\"type\" json:\"type\"`\n\n\t// TemplateID is an ID of template which holds the inventory\n\t// It is not used now but can be used in feature for\n\t// inventories which can not be used more than one template\n\t// at once.\n\tTemplateID *int `db:\"template_id\" json:\"template_id\" backup:\"-\"`\n\n\t// RepositoryID is an ID of repo where inventory stored.\n\t// If null than inventory will be got from template repository.\n\tRepositoryID *int        `db:\"repository_id\" json:\"repository_id\" backup:\"-\"`\n\tRepository   *Repository `db:\"-\" json:\"-\" backup:\"-\"`\n\n\t// RunnerTag is a tag which allow join inventory to the runner.\n\tRunnerTag *string `db:\"runner_tag\" json:\"runner_tag,omitempty\"`\n}\n\nfunc (e Inventory) GetFilename() string {\n\tif e.Type != InventoryFile {\n\t\treturn \"\"\n\t}\n\n\treturn e.Inventory\n\n\t//return strings.TrimPrefix(e.Inventory, \"/\")\n}\n\nfunc (e Inventory) Validate() error {\n\tif e.RunnerTag == nil && *e.RunnerTag == \"\" {\n\t\treturn &ValidationError{\"template runner tag can not be empty\"}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/Migration.go",
    "content": "package db\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"slices\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\n// Migration represents sql schema version\ntype Migration struct {\n\tVersion      string     `db:\"version\" json:\"version\"`\n\tUpgradedDate *time.Time `db:\"upgraded_date\" json:\"upgraded_date\"`\n\tNotes        *string    `db:\"notes\" json:\"notes\"`\n}\n\n// HumanoidVersion adds a v to the VersionString\nfunc (m Migration) HumanoidVersion() string {\n\treturn \"v\" + m.Version\n}\n\nfunc GetMigrations(dialect string) []Migration {\n\n\tvar initScripts []Migration\n\tif dialect == util.DbDriverSQLite {\n\t\tinitScripts = []Migration{{Version: \"2.15.1.sqlite\"}}\n\t} else {\n\t\tinitScripts = []Migration{\n\t\t\t{Version: \"0.0.0\"},\n\t\t\t{Version: \"1.0.0\"},\n\t\t\t{Version: \"1.2.0\"},\n\t\t\t{Version: \"1.3.0\"},\n\t\t\t{Version: \"1.4.0\"},\n\t\t\t{Version: \"1.5.0\"},\n\t\t\t{Version: \"1.6.0\"},\n\t\t\t{Version: \"1.7.0\"},\n\t\t\t{Version: \"1.8.0\"},\n\t\t\t{Version: \"1.9.0\"},\n\t\t\t{Version: \"2.2.1\"},\n\t\t\t{Version: \"2.3.0\"},\n\t\t\t{Version: \"2.3.1\"},\n\t\t\t{Version: \"2.3.2\"},\n\t\t\t{Version: \"2.4.0\"},\n\t\t\t{Version: \"2.5.0\"},\n\t\t\t{Version: \"2.5.2\"},\n\t\t\t{Version: \"2.7.1\"},\n\t\t\t{Version: \"2.7.4\"},\n\t\t\t{Version: \"2.7.6\"},\n\t\t\t{Version: \"2.7.8\"},\n\t\t\t{Version: \"2.7.9\"},\n\t\t\t{Version: \"2.7.10\"},\n\t\t\t{Version: \"2.7.12\"},\n\t\t\t{Version: \"2.7.13\"},\n\t\t\t{Version: \"2.8.0\"},\n\t\t\t{Version: \"2.8.1\"},\n\t\t\t{Version: \"2.8.7\"},\n\t\t\t{Version: \"2.8.8\"},\n\t\t\t{Version: \"2.8.20\"},\n\t\t\t{Version: \"2.8.25\"},\n\t\t\t{Version: \"2.8.26\"},\n\t\t\t{Version: \"2.8.36\"},\n\t\t\t{Version: \"2.8.38\"},\n\t\t\t{Version: \"2.8.39\"},\n\t\t\t{Version: \"2.8.40\"},\n\t\t\t{Version: \"2.8.42\"},\n\t\t\t{Version: \"2.8.51\"},\n\t\t\t{Version: \"2.8.57\"},\n\t\t\t{Version: \"2.8.58\"},\n\t\t\t{Version: \"2.8.91\"},\n\t\t\t{Version: \"2.9.6\"},\n\t\t\t{Version: \"2.9.46\"},\n\t\t\t{Version: \"2.9.60\"},\n\t\t\t{Version: \"2.9.61\"},\n\t\t\t{Version: \"2.9.62\"},\n\t\t\t{Version: \"2.9.70\"},\n\t\t\t{Version: \"2.9.97\"},\n\t\t\t{Version: \"2.9.100\"},\n\t\t\t{Version: \"2.10.12\"},\n\t\t\t{Version: \"2.10.15\"},\n\t\t\t{Version: \"2.10.16\"},\n\t\t\t{Version: \"2.10.24\"},\n\t\t\t{Version: \"2.10.26\"},\n\t\t\t{Version: \"2.10.28\"},\n\t\t\t{Version: \"2.10.33\"},\n\t\t\t{Version: \"2.10.46\"},\n\t\t\t{Version: \"2.11.5\"},\n\t\t\t{Version: \"2.12.0\"},\n\t\t\t{Version: \"2.12.3\"},\n\t\t\t{Version: \"2.12.4\"},\n\t\t\t{Version: \"2.12.5\"},\n\t\t\t{Version: \"2.12.15\"},\n\t\t\t{Version: \"2.13.0\"},\n\t\t\t{Version: \"2.14.0\"},\n\t\t\t{Version: \"2.14.1\"},\n\t\t\t{Version: \"2.14.5\"},\n\t\t\t{Version: \"2.14.7\"},\n\t\t\t{Version: \"2.14.12\"},\n\t\t\t{Version: \"2.15.0\"},\n\t\t\t{Version: \"2.15.1\"},\n\t\t}\n\t}\n\n\t// add any new scripts here\n\tcommonScripts := []Migration{\n\t\t{Version: \"2.15.2\"},\n\t\t{Version: \"2.15.3\"},\n\t\t{Version: \"2.15.4\"},\n\t\t{Version: \"2.16.0\"},\n\t\t{Version: \"2.16.1\"},\n\t\t{Version: \"2.16.2\"},\n\t\t{Version: \"2.16.3\"},\n\t\t{Version: \"2.16.8\"},\n\t\t{Version: \"2.16.50\"},\n\t\t{Version: \"2.17.0\"},\n\t\t{Version: \"2.17.1\"},\n\t\t{Version: \"2.17.2\"},\n\t\t{Version: \"2.17.15\"},\n\t}\n\n\treturn append(initScripts, commonScripts...)\n}\n\nfunc (m Migration) Validate() error {\n\tif m.Version == \"\" {\n\t\treturn fmt.Errorf(\"migration version is empty\")\n\t}\n\n\treturn nil\n}\n\ntype MigrationVersion struct {\n\tMajor int\n\tMinor int\n\tPatch int\n}\n\nfunc (m Migration) ParseVersion() (res MigrationVersion, err error) {\n\n\tparts := strings.Split(m.Version, \".\")\n\n\tif len(parts) < 2 {\n\t\terr = fmt.Errorf(\"invalid migration version format %s\", m.Version)\n\t\treturn\n\t}\n\n\tres.Major, err = strconv.Atoi(parts[0])\n\tif err != nil {\n\t\terr = fmt.Errorf(\"invalid migration version major part %s\", parts[0])\n\t\treturn\n\t}\n\n\tres.Minor, err = strconv.Atoi(parts[1])\n\tif err != nil {\n\t\terr = fmt.Errorf(\"invalid migration version minor part %s\", parts[1])\n\t\treturn\n\t}\n\n\tif len(parts) < 3 {\n\t\tres.Patch = math.MaxInt\n\t\treturn\n\t}\n\n\tres.Patch, err = strconv.Atoi(parts[2])\n\tif err != nil {\n\t\terr = fmt.Errorf(\"invalid migration version patch part %s\", parts[2])\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (v MigrationVersion) Compare(o MigrationVersion) int {\n\tif v.Major < o.Major {\n\t\treturn -1\n\t} else if v.Major > o.Major {\n\t\treturn 1\n\t}\n\n\tif v.Minor < o.Minor {\n\t\treturn -1\n\t} else if v.Minor > o.Minor {\n\t\treturn 1\n\t}\n\n\tif v.Patch < o.Patch {\n\t\treturn -1\n\t} else if v.Patch > o.Patch {\n\t\treturn 1\n\t}\n\n\treturn 0\n}\n\nfunc (m Migration) Compare(o Migration) int {\n\n\tmVer, err := m.ParseVersion()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\toVer, err := o.ParseVersion()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\treturn mVer.Compare(oVer)\n}\n\nfunc Rollback(d Store, targetVersion string) error {\n\n\tdidRun := false\n\n\tmigrations := GetMigrations(d.GetDialect())\n\tslices.Reverse(migrations)\n\n\tfor _, version := range migrations {\n\n\t\tif version.Compare(Migration{Version: targetVersion}) <= 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tapplied, err := d.IsMigrationApplied(version)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif !applied {\n\t\t\tcontinue\n\t\t}\n\n\t\td.TryRollbackMigration(version)\n\n\t\tdidRun = true\n\t}\n\n\tif didRun {\n\t\tfmt.Println(\"Rollback Finished\")\n\t}\n\n\treturn nil\n}\n\nfunc Migrate(d Store, targetVersion *string) error {\n\tdidRun := false\n\n\tfor _, version := range GetMigrations(d.GetDialect()) {\n\n\t\tif targetVersion != nil && version.Compare(Migration{Version: *targetVersion}) > 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tif exists, err := d.IsMigrationApplied(version); err != nil || exists {\n\t\t\tif exists {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn err\n\t\t}\n\n\t\tdidRun = true\n\t\tfmt.Printf(\"Executing migration %s (at %v)...\\n\", version.HumanoidVersion(), tz.Now())\n\t\tif err := d.ApplyMigration(version); err != nil {\n\t\t\tfmt.Printf(\"Rolling back %s (time: %v)...\\n\", version.HumanoidVersion(), tz.Now())\n\t\t\td.TryRollbackMigration(version)\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif didRun {\n\t\tfmt.Println(\"Migrations Finished\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/Option.go",
    "content": "package db\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n)\n\ntype Option struct {\n\tKey   string `db:\"key\" json:\"key\"`\n\tValue string `db:\"value\" json:\"value\"`\n}\n\nfunc ValidateOptionKey(key string) error {\n\tm, err := regexp.Match(`^[\\w.]+$`, []byte(key))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !m {\n\t\treturn fmt.Errorf(\"invalid key format\")\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/Project.go",
    "content": "package db\n\nimport (\n\t\"time\"\n)\n\n// Project is the top level structure in Semaphore\ntype Project struct {\n\tID                     int       `db:\"id\" json:\"id\" backup:\"-\"`\n\tName                   string    `db:\"name\" json:\"name\" binding:\"required\"`\n\tCreated                time.Time `db:\"created\" json:\"created\" backup:\"-\"`\n\tAlert                  bool      `db:\"alert\" json:\"alert,omitempty\"`\n\tAlertChat              *string   `db:\"alert_chat\" json:\"alert_chat,omitempty\"`\n\tMaxParallelTasks       int       `db:\"max_parallel_tasks\" json:\"max_parallel_tasks,omitempty\"`\n\tType                   string    `db:\"type\" json:\"type\"`\n\tDefaultSecretStorageID *int      `db:\"default_secret_storage_id\" json:\"default_secret_storage_id,omitempty\" backup:\"-\"`\n}\n"
  },
  {
    "path": "db/ProjectInvite.go",
    "content": "package db\n\nimport (\n\t\"time\"\n)\n\ntype ProjectInviteStatus string\n\nconst (\n\tProjectInvitePending  ProjectInviteStatus = \"pending\"\n\tProjectInviteAccepted ProjectInviteStatus = \"accepted\"\n\tProjectInviteDeclined ProjectInviteStatus = \"declined\"\n\tProjectInviteExpired  ProjectInviteStatus = \"expired\"\n)\n\nfunc (s ProjectInviteStatus) IsValid() bool {\n\tswitch s {\n\tcase ProjectInvitePending, ProjectInviteAccepted, ProjectInviteDeclined, ProjectInviteExpired:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\ntype ProjectInvite struct {\n\tID            int                 `db:\"id\" json:\"id\" backup:\"-\"`\n\tProjectID     int                 `db:\"project_id\" json:\"project_id\"`\n\tUserID        *int                `db:\"user_id\" json:\"user_id,omitempty\"` // Can be null for email invites\n\tEmail         *string             `db:\"email\" json:\"email,omitempty\"`     // For email-based invites\n\tRole          ProjectUserRole     `db:\"role\" json:\"role\"`\n\tStatus        ProjectInviteStatus `db:\"status\" json:\"status\"`\n\tToken         string              `db:\"token\" json:\"-\"`                         // Secret token for accepting invite\n\tInviterUserID int                 `db:\"inviter_user_id\" json:\"inviter_user_id\"` // User who created the invite\n\tCreated       time.Time           `db:\"created\" json:\"created\" backup:\"-\"`\n\tExpiresAt     *time.Time          `db:\"expires_at\" json:\"expires_at,omitempty\"`\n\tAcceptedAt    *time.Time          `db:\"accepted_at\" json:\"accepted_at,omitempty\"`\n}\n\ntype ProjectInviteWithUser struct {\n\tProjectInvite\n\tInvitedByUser *User `json:\"inviter_user,omitempty\"`\n\tUser          *User `json:\"user,omitempty\"`\n}\n"
  },
  {
    "path": "db/ProjectInvite_test.go",
    "content": "package db\n\nimport (\n\t\"testing\"\n\t\"time\"\n)\n\nfunc TestProjectInviteStatus_IsValid(t *testing.T) {\n\ttests := []struct {\n\t\tstatus ProjectInviteStatus\n\t\tvalid  bool\n\t}{\n\t\t{ProjectInvitePending, true},\n\t\t{ProjectInviteAccepted, true},\n\t\t{ProjectInviteDeclined, true},\n\t\t{ProjectInviteExpired, true},\n\t\t{ProjectInviteStatus(\"invalid\"), false},\n\t\t{ProjectInviteStatus(\"\"), false},\n\t}\n\n\tfor _, test := range tests {\n\t\tif test.status.IsValid() != test.valid {\n\t\t\tt.Errorf(\"Status %q: expected valid=%v, got %v\", test.status, test.valid, test.status.IsValid())\n\t\t}\n\t}\n}\n\nfunc TestProjectInvite_EmailBasedInvite(t *testing.T) {\n\temail := \"test@example.com\"\n\tinvite := ProjectInvite{\n\t\tID:            1,\n\t\tProjectID:     1,\n\t\tEmail:         &email,\n\t\tRole:          ProjectManager,\n\t\tStatus:        ProjectInvitePending,\n\t\tToken:         \"test-token\",\n\t\tInviterUserID: 1,\n\t\tCreated:       time.Now(),\n\t}\n\n\tif invite.UserID != nil {\n\t\tt.Error(\"Email-based invite should not have UserID\")\n\t}\n\n\tif invite.Email == nil || *invite.Email != \"test@example.com\" {\n\t\tt.Errorf(\"Expected email 'test@example.com', got %v\", invite.Email)\n\t}\n\n\tif invite.Status != ProjectInvitePending {\n\t\tt.Errorf(\"Expected status 'pending', got %s\", invite.Status)\n\t}\n}\n\nfunc TestProjectInvite_UserBasedInvite(t *testing.T) {\n\tuserID := 42\n\tinvite := ProjectInvite{\n\t\tID:            1,\n\t\tProjectID:     1,\n\t\tUserID:        &userID,\n\t\tRole:          ProjectTaskRunner,\n\t\tStatus:        ProjectInvitePending,\n\t\tToken:         \"test-token\",\n\t\tInviterUserID: 1,\n\t\tCreated:       time.Now(),\n\t}\n\n\tif invite.Email != nil {\n\t\tt.Error(\"User-based invite should not have Email\")\n\t}\n\n\tif invite.UserID == nil || *invite.UserID != 42 {\n\t\tt.Errorf(\"Expected user_id 42, got %v\", invite.UserID)\n\t}\n\n\tif invite.Role != ProjectTaskRunner {\n\t\tt.Errorf(\"Expected role 'task_runner', got %s\", invite.Role)\n\t}\n}\n\nfunc TestProjectInvite_WithExpiration(t *testing.T) {\n\texpiresAt := time.Now().Add(7 * 24 * time.Hour)\n\temail := \"test@example.com\"\n\n\tinvite := ProjectInvite{\n\t\tID:            1,\n\t\tProjectID:     1,\n\t\tEmail:         &email,\n\t\tRole:          ProjectManager,\n\t\tStatus:        ProjectInvitePending,\n\t\tToken:         \"test-token\",\n\t\tInviterUserID: 1,\n\t\tCreated:       time.Now(),\n\t\tExpiresAt:     &expiresAt,\n\t}\n\n\tif invite.ExpiresAt == nil {\n\t\tt.Error(\"Expected ExpiresAt to be set\")\n\t}\n\n\tif invite.AcceptedAt != nil {\n\t\tt.Error(\"AcceptedAt should be nil for pending invite\")\n\t}\n}\n\nfunc TestProjectInvite_AcceptedInvite(t *testing.T) {\n\tacceptedAt := time.Now()\n\temail := \"test@example.com\"\n\n\tinvite := ProjectInvite{\n\t\tID:            1,\n\t\tProjectID:     1,\n\t\tEmail:         &email,\n\t\tRole:          ProjectManager,\n\t\tStatus:        ProjectInviteAccepted,\n\t\tToken:         \"test-token\",\n\t\tInviterUserID: 1,\n\t\tCreated:       time.Now().Add(-1 * time.Hour),\n\t\tAcceptedAt:    &acceptedAt,\n\t}\n\n\tif invite.Status != ProjectInviteAccepted {\n\t\tt.Errorf(\"Expected status 'accepted', got %s\", invite.Status)\n\t}\n\n\tif invite.AcceptedAt == nil {\n\t\tt.Error(\"AcceptedAt should be set for accepted invite\")\n\t}\n}\n\nfunc TestProjectInviteWithUser_Structure(t *testing.T) {\n\temail := \"test@example.com\"\n\tinvite := ProjectInvite{\n\t\tID:            1,\n\t\tProjectID:     1,\n\t\tEmail:         &email,\n\t\tRole:          ProjectManager,\n\t\tStatus:        ProjectInvitePending,\n\t\tToken:         \"test-token\",\n\t\tInviterUserID: 1,\n\t\tCreated:       time.Now(),\n\t}\n\n\tinvitedByUser := User{\n\t\tID:       1,\n\t\tUsername: \"admin\",\n\t\tEmail:    \"admin@example.com\",\n\t\tName:     \"Administrator\",\n\t}\n\n\tinviteWithUser := ProjectInviteWithUser{\n\t\tProjectInvite: invite,\n\t\tInvitedByUser: &invitedByUser,\n\t\tUser:          nil, // Email-based invite\n\t}\n\n\tif inviteWithUser.ProjectInvite.ID != invite.ID {\n\t\tt.Error(\"ProjectInvite should be embedded correctly\")\n\t}\n\n\tif inviteWithUser.InvitedByUser == nil {\n\t\tt.Error(\"InvitedByUser should be set\")\n\t}\n\n\tif inviteWithUser.InvitedByUser.Username != \"admin\" {\n\t\tt.Errorf(\"Expected inviter username 'admin', got %s\", inviteWithUser.InvitedByUser.Username)\n\t}\n\n\tif inviteWithUser.User != nil {\n\t\tt.Error(\"User should be nil for email-based invite\")\n\t}\n}\n"
  },
  {
    "path": "db/ProjectStats.go",
    "content": "package db\n\ntype ProjectStats struct {\n}\n"
  },
  {
    "path": "db/ProjectUser.go",
    "content": "package db\n\ntype ProjectUserRole string\n\nconst (\n\tProjectOwner      ProjectUserRole = \"owner\"\n\tProjectManager    ProjectUserRole = \"manager\"\n\tProjectTaskRunner ProjectUserRole = \"task_runner\"\n\tProjectGuest      ProjectUserRole = \"guest\"\n\tProjectNone       ProjectUserRole = \"\"\n)\n\ntype ProjectUserPermission int64\n\nconst (\n\tCanRunProjectTasks ProjectUserPermission = 1 << iota\n\tCanUpdateProject\n\tCanManageProjectResources\n\tCanManageProjectUsers\n)\n\nvar rolePermissions = map[ProjectUserRole]ProjectUserPermission{\n\tProjectOwner:      CanRunProjectTasks | CanManageProjectResources | CanUpdateProject | CanManageProjectUsers,\n\tProjectManager:    CanRunProjectTasks | CanManageProjectResources,\n\tProjectTaskRunner: CanRunProjectTasks,\n\tProjectGuest:      0,\n}\n\nfunc (r ProjectUserRole) IsValid() bool {\n\t_, ok := rolePermissions[r]\n\treturn ok\n}\n\ntype ProjectUser struct {\n\tID        int             `db:\"id\" json:\"-\"`\n\tProjectID int             `db:\"project_id\" json:\"project_id\"`\n\tUserID    int             `db:\"user_id\" json:\"user_id\"`\n\tRole      ProjectUserRole `db:\"role\" json:\"role\"`\n}\n\nfunc (r ProjectUserRole) Can(permissions ProjectUserPermission) bool {\n\treturn (rolePermissions[r] & permissions) == permissions\n}\n\nfunc (r ProjectUserRole) GetPermissions() ProjectUserPermission {\n\treturn rolePermissions[r]\n}\n"
  },
  {
    "path": "db/ProjectUser_test.go",
    "content": "package db\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestProjectUsers_RoleCan(t *testing.T) {\n\tassert.True(t, ProjectManager.Can(CanManageProjectResources))\n\tassert.False(t, ProjectManager.Can(CanUpdateProject))\n}\n"
  },
  {
    "path": "db/Repository.go",
    "content": "package db\n\nimport (\n\t\"fmt\"\n\t\"path\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype RepositoryType string\n\nconst (\n\tRepositoryGit   RepositoryType = \"git\"\n\tRepositorySSH   RepositoryType = \"ssh\"\n\tRepositoryHTTP  RepositoryType = \"https\"\n\tRepositoryFile  RepositoryType = \"file\"\n\tRepositoryLocal RepositoryType = \"local\"\n)\n\n// Repository is the model for code stored in a git repository\ntype Repository struct {\n\tID        int    `db:\"id\" json:\"id\" backup:\"-\"`\n\tName      string `db:\"name\" json:\"name\" binding:\"required\"`\n\tProjectID int    `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tGitURL    string `db:\"git_url\" json:\"git_url\" binding:\"required\"`\n\tGitBranch string `db:\"git_branch\" json:\"git_branch\" binding:\"required\"`\n\tSSHKeyID  int    `db:\"ssh_key_id\" json:\"ssh_key_id\" binding:\"required\" backup:\"-\"`\n\n\tSSHKey AccessKey `db:\"-\" json:\"-\" backup:\"-\"`\n}\n\nfunc (r Repository) ClearCache() error {\n\treturn util.ClearDir(util.Config.GetProjectTmpDir(r.ProjectID), true, r.getDirNamePrefix())\n}\n\nfunc (r Repository) getDirNamePrefix() string {\n\treturn \"repository_\" + strconv.Itoa(r.ID) + \"_\"\n}\n\nfunc (r Repository) GetDirName(templateID int) string {\n\treturn r.getDirNamePrefix() + \"template_\" + strconv.Itoa(templateID)\n}\n\n// GetHomePath returns the per-template \"home\" directory with a \"_home\" suffix.\n// Currently this path is used for home-like directories such as ANSIBLE_HOME so\n// that parallel tasks from different templates get isolated home directories\n// (preventing concurrent ansible-galaxy writes to the same collections path),\n// while keeping these artifacts separate from the repository files.\nfunc (r Repository) GetHomePath(templateID int) string {\n\treturn path.Join(util.Config.GetProjectTmpDir(r.ProjectID), r.GetDirName(templateID)+\"_home\")\n}\n\n// GetFullPath returns the path where the repository source code lives.\n// The repository is cloned directly into the template directory\n// (e.g. repository_15_template_114) without any subdirectory.\nfunc (r Repository) GetFullPath(templateID int) string {\n\tif r.GetType() == RepositoryLocal {\n\t\treturn r.GetGitURL(true)\n\t}\n\treturn path.Join(util.Config.GetProjectTmpDir(r.ProjectID), r.GetDirName(templateID))\n}\n\nfunc (r Repository) GetGitURL(secure bool) string {\n\turl := r.GitURL\n\n\tif secure {\n\t\treturn url\n\t}\n\n\tif r.GetType() == RepositoryHTTP {\n\t\tauth := \"\"\n\t\tswitch r.SSHKey.Type {\n\t\tcase AccessKeyLoginPassword:\n\t\t\tif r.SSHKey.LoginPassword.Login == \"\" {\n\t\t\t\tauth = r.SSHKey.LoginPassword.Password\n\t\t\t} else {\n\t\t\t\tauth = r.SSHKey.LoginPassword.Login + \":\" + r.SSHKey.LoginPassword.Password\n\t\t\t}\n\t\t}\n\t\tif auth != \"\" {\n\t\t\tauth += \"@\"\n\t\t}\n\n\t\tre := regexp.MustCompile(`^(https?)://`)\n\t\tm := re.FindStringSubmatch(url)\n\t\tvar protocol string\n\n\t\tif m == nil {\n\t\t\tpanic(fmt.Errorf(\"invalid git url: %s\", url))\n\t\t}\n\n\t\tprotocol = m[1]\n\n\t\turl = protocol + \"://\" + auth + r.GitURL[len(protocol)+3:]\n\t}\n\n\treturn url\n}\n\nfunc (r Repository) GetType() RepositoryType {\n\tif strings.HasPrefix(r.GitURL, \"/\") {\n\t\treturn RepositoryLocal\n\t}\n\n\tre := regexp.MustCompile(`^(\\w+)://`)\n\tm := re.FindStringSubmatch(r.GitURL)\n\tif m == nil {\n\t\treturn RepositorySSH\n\t}\n\n\tprotocol := m[1]\n\n\tswitch protocol {\n\tcase \"http\", \"https\":\n\t\treturn RepositoryHTTP\n\tdefault:\n\t\treturn RepositoryType(protocol)\n\t}\n}\n\nfunc (r Repository) Validate() error {\n\tif r.Name == \"\" {\n\t\treturn &ValidationError{\"repository name can't be empty\"}\n\t}\n\n\tif r.GitURL == \"\" {\n\t\treturn &ValidationError{\"repository url can't be empty\"}\n\t}\n\n\tif r.GetType() != RepositoryLocal && r.GitBranch == \"\" {\n\t\treturn &ValidationError{\"repository branch can't be empty\"}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/Repository_test.go",
    "content": "package db\n\nimport (\n\t\"math/rand\"\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc TestRepository_GetSchema(t *testing.T) {\n\trepo := Repository{GitURL: \"https://example.com/hello/world\"}\n\tschema := repo.GetType()\n\tassert.Equal(t, RepositoryHTTP, schema)\n}\n\nfunc TestRepository_ClearCache(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: path.Join(os.TempDir(), util.RandString(rand.Intn(10-4)+4)),\n\t}\n\trepoDir := path.Join(util.Config.TmpPath, \"project_0\", \"repository_123_55\")\n\terr := os.MkdirAll(repoDir, 0755)\n\trequire.NoError(t, err)\n\n\trepo := Repository{ID: 123}\n\terr = repo.ClearCache()\n\trequire.NoError(t, err)\n\n\t_, err = os.Stat(repoDir)\n\trequire.Error(t, err, \"repo directory not deleted\")\n\tassert.True(t, os.IsNotExist(err))\n}\n\nfunc TestRepository_GetGitURL(t *testing.T) {\n\tfor _, v := range []struct {\n\t\tRepository     Repository\n\t\tExpectedGitUrl string\n\t}{\n\t\t{\n\t\t\tRepository: Repository{GitURL: \"https://github.com/user/project.git\", SSHKey: AccessKey{\n\t\t\t\tType: AccessKeyLoginPassword,\n\t\t\t\tLoginPassword: LoginPassword{\n\t\t\t\t\tLogin:    \"login\",\n\t\t\t\t\tPassword: \"password\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t},\n\t\t\tExpectedGitUrl: \"https://login:password@github.com/user/project.git\",\n\t\t},\n\t\t{\n\t\t\tRepository: Repository{GitURL: \"https://github.com/user/project.git\", SSHKey: AccessKey{\n\t\t\t\tType: AccessKeyLoginPassword,\n\t\t\t\tLoginPassword: LoginPassword{\n\t\t\t\t\tPassword: \"password\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t},\n\t\t\tExpectedGitUrl: \"https://password@github.com/user/project.git\",\n\t\t},\n\t} {\n\t\tgitUrl := v.Repository.GetGitURL(false)\n\t\tassert.Equal(t, v.ExpectedGitUrl, gitUrl, \"wrong gitUrl\")\n\t}\n}\n"
  },
  {
    "path": "db/Role.go",
    "content": "package db\n\ntype Role struct {\n\tSlug        string                `db:\"slug\" json:\"slug\" backup:\"-\"`\n\tName        string                `db:\"name\" json:\"name\"`\n\tPermissions ProjectUserPermission `db:\"permissions\" json:\"permissions\"`\n\tProjectID   *int                  `db:\"project_id\" json:\"project_id\"`\n}\n\nfunc ValidateRole(role Role) error {\n\tif role.Name == \"\" {\n\t\treturn &ValidationError{Message: \"Role name cannot be empty\"}\n\t}\n\treturn nil\n}\n\ntype TemplateRolePerm struct {\n\tID          int                   `db:\"id\" json:\"id\"`\n\tRoleSlug    string                `db:\"role_slug\" json:\"role_slug\"`\n\tTemplateID  int                   `db:\"template_id\" json:\"template_id\"`\n\tProjectID   int                   `db:\"project_id\" json:\"project_id\"`\n\tPermissions ProjectUserPermission `db:\"permissions\" json:\"permissions\"`\n}\n"
  },
  {
    "path": "db/Runner.go",
    "content": "package db\n\nimport \"time\"\n\ntype RunnerState string\n\ntype Runner struct {\n\tID                int        `db:\"id\" json:\"id\"`\n\tToken             string     `db:\"token\" json:\"-\"`\n\tProjectID         *int       `db:\"project_id\" json:\"project_id\"`\n\tWebhook           string     `db:\"webhook\" json:\"webhook\"`\n\tMaxParallelTasks  int        `db:\"max_parallel_tasks\" json:\"max_parallel_tasks\"`\n\tActive            bool       `db:\"active\" json:\"active\"`\n\tName              string     `db:\"name\" json:\"name\"`\n\tTag               string     `db:\"tag\" json:\"tag\"`\n\tTouched           *time.Time `db:\"touched\" json:\"touched\"`\n\tCleaningRequested *time.Time `db:\"cleaning_requested\" json:\"cleaning_requested\"`\n\n\tPublicKey *string `db:\"public_key\" json:\"-\"`\n}\n\ntype RunnerTag struct {\n\tTag             string `db:\"-\" json:\"tag\"`\n\tNumberOfRunners int    `db:\"-\" json:\"number_of_runners\"`\n}\n"
  },
  {
    "path": "db/Schedule.go",
    "content": "package db\n\nimport \"time\"\n\nconst (\n\tScheduleTypeCron  = \"\"\n\tScheduleTypeRunAt = \"run_at\"\n)\n\ntype Schedule struct {\n\tID             int    `db:\"id\" json:\"id\" backup:\"-\"`\n\tProjectID      int    `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tTemplateID     int    `db:\"template_id\" json:\"template_id\" backup:\"-\"`\n\tCronFormat     string `db:\"cron_format\" json:\"cron_format\"`\n\tName           string `db:\"name\" json:\"name\"`\n\tActive         bool   `db:\"active\" json:\"active\"`\n\tType           string `db:\"type\" json:\"type\"`\n\tDeleteAfterRun bool   `db:\"delete_after_run\" json:\"delete_after_run\"`\n\n\tLastCommitHash *string    `db:\"last_commit_hash\" json:\"-\" backup:\"-\"`\n\tRepositoryID   *int       `db:\"repository_id\" json:\"repository_id\" backup:\"-\"`\n\tRunAt          *time.Time `db:\"run_at\" json:\"run_at,omitempty\"`\n\n\tTaskParamsID *int        `db:\"task_params_id\" json:\"-\" backup:\"-\"`\n\tTaskParams   *TaskParams `db:\"-\" json:\"task_params,omitempty\" backup:\"task_params\"`\n}\n\ntype ScheduleWithTpl struct {\n\tSchedule\n\tTemplateName string `db:\"tpl_name\" json:\"tpl_name\"`\n}\n"
  },
  {
    "path": "db/SecretStorage.go",
    "content": "package db\n\ntype SecretStorageType string\n\nconst (\n\tSecretStorageTypeLocal SecretStorageType = \"local\"\n\tSecretStorageTypeVault SecretStorageType = \"vault\"\n\tSecretStorageTypeDvls  SecretStorageType = \"dvls\"\n)\n\ntype SecretStorage struct {\n\tID        int               `db:\"id\" json:\"id\" backup:\"-\"`\n\tProjectID int               `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tName      string            `db:\"name\" json:\"name\"`\n\tType      SecretStorageType `db:\"type\" json:\"type\"`\n\tParams    MapStringAnyField `db:\"params\" json:\"params\"`\n\tReadOnly  bool              `db:\"readonly\" json:\"readonly\"`\n\n\tSourceStorageType *AccessKeySourceStorageType `db:\"-\" json:\"source_storage_type,omitempty\" backup:\"-\"`\n\t// Secret is a source value: literal secret for local storage,\n\t// env var name for \"env\", or file path for \"file\".\n\tSecret string `db:\"-\" json:\"secret,omitempty\" backup:\"-\"`\n}\n"
  },
  {
    "path": "db/Session.go",
    "content": "package db\n\nimport \"time\"\n\ntype SessionVerificationMethod int\n\nconst (\n\tSessionVerificationNone SessionVerificationMethod = iota\n\tSessionVerificationTotp\n\tSessionVerificationEmail\n)\n\n// Session is a connection to the API\ntype Session struct {\n\tID         int       `db:\"id\" json:\"id\"`\n\tUserID     int       `db:\"user_id\" json:\"user_id\"`\n\tCreated    time.Time `db:\"created\" json:\"created\"`\n\tLastActive time.Time `db:\"last_active\" json:\"last_active\"`\n\tIP         string    `db:\"ip\" json:\"ip\"`\n\tUserAgent  string    `db:\"user_agent\" json:\"user_agent\"`\n\tExpired    bool      `db:\"expired\" json:\"expired\"`\n\n\tVerificationMethod SessionVerificationMethod `db:\"verification_method\" json:\"verification_method\"`\n\tVerified           bool                      `db:\"verified\" json:\"verified\"`\n}\n\nfunc (s *Session) IsVerified() bool {\n\tif s.VerificationMethod == SessionVerificationNone {\n\t\treturn true\n\t}\n\treturn s.Verified\n}\n"
  },
  {
    "path": "db/Store.go",
    "content": "package db\n\nimport (\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"reflect\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nconst databaseTimeFormat = \"2006-01-02T15:04:05:99Z\"\n\n// GetParsedTime returns the timestamp as it will retrieved from the database\n// This allows us to create timestamp consistency on return values from create requests\nfunc GetParsedTime(t time.Time) time.Time {\n\tparsedTime, err := time.Parse(databaseTimeFormat, t.Format(databaseTimeFormat))\n\tif err != nil {\n\t\tlog.Error(err)\n\t}\n\treturn parsedTime\n}\n\nfunc ObjectToJSON(obj any) *string {\n\tif obj == nil ||\n\t\t(reflect.ValueOf(obj).Kind() == reflect.Ptr && reflect.ValueOf(obj).IsNil()) ||\n\t\t(reflect.ValueOf(obj).Kind() == reflect.Slice && reflect.ValueOf(obj).IsZero()) {\n\t\treturn nil\n\t}\n\tbytes, err := json.Marshal(obj)\n\tif err != nil {\n\t\treturn nil\n\t}\n\tstr := string(bytes)\n\treturn &str\n}\n\ntype OwnershipFilter struct {\n\tWithoutOwnerOnly bool\n\tTemplateID       *int\n\tEnvironmentID    *int\n}\n\ntype RetrieveQueryParams struct {\n\tOffset       int\n\tCount        int\n\tSortBy       string\n\tSortInverted bool\n\tFilter       string\n\tOwnership    OwnershipFilter\n\tTaskFilter   *TaskFilter\n}\n\ntype ObjectReferrer struct {\n\tID   int    `json:\"id\"`\n\tName string `json:\"name\"`\n}\n\ntype ObjectReferrers struct {\n\tTemplates    []ObjectReferrer `json:\"templates\"`\n\tInventories  []ObjectReferrer `json:\"inventories\"`\n\tRepositories []ObjectReferrer `json:\"repositories\"`\n\tIntegrations []ObjectReferrer `json:\"integrations\"`\n\tSchedules    []ObjectReferrer `json:\"schedules\"`\n\tAccessKeys   []ObjectReferrer `json:\"access_keys\"`\n}\n\ntype IntegrationReferrers struct {\n\tIntegrationMatchers      []ObjectReferrer `json:\"matchers\"`\n\tIntegrationExtractValues []ObjectReferrer `json:\"values\"`\n}\n\ntype IntegrationExtractorChildReferrers struct {\n\tIntegrations []ObjectReferrer `json:\"integrations\"`\n}\n\nfunc containsStr(arr []string, str string) bool {\n\tfor _, a := range arr {\n\t\tif a == str {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *RetrieveQueryParams) Validate(props ObjectProps) (res RetrieveQueryParams, err error) {\n\n\tif p.Offset > 0 && p.Count <= 0 {\n\t\terr = &ValidationError{\"offset cannot be without limit\"}\n\t\treturn\n\t}\n\n\tif p.Count < 0 {\n\t\terr = &ValidationError{\"count must be positive\"}\n\t\treturn\n\t}\n\n\tif p.Offset < 0 {\n\t\terr = &ValidationError{\"offset must be positive\"}\n\t\treturn\n\t}\n\n\tif p.SortBy != \"\" {\n\t\tif !containsStr(props.SortableColumns, p.SortBy) {\n\t\t\terr = &ValidationError{\"invalid sort column\"}\n\t\t\treturn\n\t\t}\n\t}\n\n\tres = *p\n\treturn\n}\n\nfunc (f *OwnershipFilter) GetOwnerID(ownership ObjectProps) *int {\n\tswitch ownership.ReferringColumnSuffix {\n\tcase \"template_id\":\n\t\treturn f.TemplateID\n\tcase \"environment_id\":\n\t\treturn f.EnvironmentID\n\tdefault:\n\t\treturn nil\n\t}\n}\n\nfunc (f *OwnershipFilter) SetOwnerID(ownership ObjectProps, ownerID int) {\n\tswitch ownership.ReferringColumnSuffix {\n\tcase \"template_id\":\n\t\tf.TemplateID = &ownerID\n\tcase \"environment_id\":\n\t\tf.EnvironmentID = &ownerID\n\t}\n}\n\n// ObjectProps describe database entities.\n// It mainly used for NoSQL implementations (currently BoltDB) to preserve same\n// data structure of different implementations and easy change it if required.\ntype ObjectProps struct {\n\tTableName             string\n\tType                  reflect.Type // to which type the table bust be mapped.\n\tIsGlobal              bool         // doesn't belong to other table, for example to project or user.\n\tReferringColumnSuffix string\n\tPrimaryColumnName     string\n\tSortableColumns       []string\n\tDefaultSortingColumn  string\n\tSortInverted          bool // sort from high to low object ID by default. It is useful for some NoSQL implementations.\n\tOwnerships            []*ObjectProps\n\tSelectColumns         []string\n}\n\nvar ErrNotFound = errors.New(\"no rows in result set\")\nvar ErrInvalidOperation = errors.New(\"invalid operation\")\n\ntype ValidationError struct {\n\tMessage string\n}\n\nfunc NewValidationError(message string) *ValidationError {\n\treturn &ValidationError{Message: message}\n}\n\nfunc (e *ValidationError) Error() string {\n\treturn e.Message\n}\n\ntype TaskStatUnit string\n\nconst TaskStatUnitDay TaskStatUnit = \"day\"\nconst TaskStatUnitWeek TaskStatUnit = \"week\"\nconst TaskStatUnitMonth TaskStatUnit = \"month\"\n\ntype TaskFilter struct {\n\tStart  *time.Time `json:\"start\"`\n\tEnd    *time.Time `json:\"end\"`\n\tUserID *int       `json:\"user_id\"`\n\tStatus []task_logger.TaskStatus\n}\n\ntype TaskStat struct {\n\tDate          string                         `json:\"date\"`\n\tCountByStatus map[task_logger.TaskStatus]int `json:\"count_by_status\"`\n\tAvgDuration   int                            `json:\"avg_duration\"`\n}\n\n// ConnectionManager handles database connection lifecycle\ntype ConnectionManager interface {\n\t// Connect connects to the database.\n\t// Token parameter used if PermanentConnection returns false.\n\t// Token used for debugging of session connections.\n\tConnect(token string)\n\tClose(token string)\n\n\t// PermanentConnection returns true if connection should be kept from start to finish of the app.\n\t// This mode is suitable for MySQL and Postgres but not for BoltDB.\n\t// For BoltDB we should reconnect for each request because BoltDB support only one connection at time.\n\tPermanentConnection() bool\n}\n\n// MigrationManager handles database migrations\ntype MigrationManager interface {\n\tGetDialect() string\n\t// IsInitialized indicates is database already initialized, or it is empty.\n\t// The method is useful for creating required entities in database during first run.\n\tIsInitialized() (bool, error)\n\t// IsMigrationApplied queries the database to see if a migration table with\n\t// this version id exists already\n\tIsMigrationApplied(version Migration) (bool, error)\n\t// ApplyMigration runs executes a database migration\n\tApplyMigration(version Migration) error\n\t// TryRollbackMigration attempts to roll back the database to an earlier version\n\t// if a rollback exists\n\tTryRollbackMigration(version Migration)\n}\n\n// OptionsManager handles system options\ntype OptionsManager interface {\n\tGetOptions(params RetrieveQueryParams) (map[string]string, error)\n\tGetOption(key string) (string, error)\n\tSetOption(key string, value string) error\n\tDeleteOption(key string) error\n\tDeleteOptions(filter string) error\n}\n\n// UserManager handles user-related operations\ntype UserManager interface {\n\tGetProUserCount() (int, error)\n\tGetUserCount() (int, error)\n\tGetUsers(params RetrieveQueryParams) ([]User, error)\n\tCreateUserWithoutPassword(user User) (User, error)\n\tCreateUser(user UserWithPwd) (User, error)\n\tDeleteUser(userID int) error\n\tUpdateUser(user UserWithPwd) error\n\tImportUser(user UserWithPwd) (User, error)\n\tSetUserPassword(userID int, password string) error\n\tAddTotpVerification(userID int, url string, recoveryHash string) (UserTotp, error)\n\tDeleteTotpVerification(userID int, totpID int) error\n\tAddEmailOtpVerification(userID int, code string) (UserEmailOtp, error)\n\tDeleteEmailOtpVerification(userID int, totpID int) error\n\tGetUser(userID int) (User, error)\n\tGetUserByLoginOrEmail(login string, email string) (User, error)\n\tGetAllAdmins() ([]User, error)\n\n\tGetNodeCount() (int, error)\n\tGetUiCount() (int, error)\n}\n\n// ProjectStore handles project-related operations\ntype ProjectStore interface {\n\tGetProject(projectID int) (Project, error)\n\tGetAllProjects() ([]Project, error)\n\tGetProjects(userID int) ([]Project, error)\n\tCreateProject(project Project) (Project, error)\n\tDeleteProject(projectID int) error\n\tUpdateProject(project Project) error\n\tGetProjectUsers(projectID int, params RetrieveQueryParams) ([]UserWithProjectRole, error)\n\tCreateProjectUser(projectUser ProjectUser) (ProjectUser, error)\n\tDeleteProjectUser(projectID int, userID int) error\n\tGetProjectUser(projectID int, userID int) (ProjectUser, error)\n\tUpdateProjectUser(projectUser ProjectUser) error\n}\n\ntype ProjectInviteRepository interface {\n\t// Project invites\n\tGetProjectInvites(projectID int, params RetrieveQueryParams) ([]ProjectInviteWithUser, error)\n\tCreateProjectInvite(invite ProjectInvite) (ProjectInvite, error)\n\tGetProjectInvite(projectID int, inviteID int) (ProjectInvite, error)\n\tGetProjectInviteByToken(token string) (ProjectInvite, error)\n\tUpdateProjectInvite(invite ProjectInvite) error\n\tDeleteProjectInvite(projectID int, inviteID int) error\n}\n\n// TemplateManager handles template-related operations\ntype TemplateManager interface {\n\tGetTemplates(projectID int, filter TemplateFilter, params RetrieveQueryParams) ([]Template, error)\n\tGetTemplatesWithPermissions(projectID int, userID int, filter TemplateFilter, params RetrieveQueryParams) ([]TemplateWithPerms, error)\n\tGetTemplateRefs(projectID int, templateID int) (ObjectReferrers, error)\n\tCreateTemplate(template Template) (Template, error)\n\tUpdateTemplate(template Template) error\n\tGetTemplate(projectID int, templateID int) (Template, error)\n\tDeleteTemplate(projectID int, templateID int) error\n\tSetTemplateDescription(projectID int, templateID int, description string) error\n\tGetTemplateVaults(projectID int, templateID int) ([]TemplateVault, error)\n\tCreateTemplateVault(vault TemplateVault) (TemplateVault, error)\n\tUpdateTemplateVaults(projectID int, templateID int, vaults []TemplateVault) error\n\n\tGetTemplatePermission(projectID int, templateID int, userID int) (ProjectUserPermission, error)\n\tGetTemplateRoles(projectID int, templateID int) ([]TemplateRolePerm, error)\n\tCreateTemplateRole(role TemplateRolePerm) (TemplateRolePerm, error)\n\tDeleteTemplateRole(projectID int, templateID int, permID int) error\n\tUpdateTemplateRole(role TemplateRolePerm) error\n\tGetTemplateRole(projectID int, templateID int, permID int) (TemplateRolePerm, error)\n}\n\n// InventoryManager handles inventory-related operations\ntype InventoryManager interface {\n\tGetInventory(projectID int, inventoryID int) (Inventory, error)\n\tGetInventoryRefs(projectID int, inventoryID int) (ObjectReferrers, error)\n\tGetInventories(projectID int, params RetrieveQueryParams, types []InventoryType) ([]Inventory, error)\n\tUpdateInventory(inventory Inventory) error\n\tCreateInventory(inventory Inventory) (Inventory, error)\n\tDeleteInventory(projectID int, inventoryID int) error\n}\n\n// RepositoryManager handles repository-related operations\ntype RepositoryManager interface {\n\tGetRepository(projectID int, repositoryID int) (Repository, error)\n\tGetRepositoryRefs(projectID int, repositoryID int) (ObjectReferrers, error)\n\tGetRepositories(projectID int, params RetrieveQueryParams) ([]Repository, error)\n\tUpdateRepository(repository Repository) error\n\tCreateRepository(repository Repository) (Repository, error)\n\tDeleteRepository(projectID int, repositoryID int) error\n}\n\n// EnvironmentManager handles environment-related operations\ntype EnvironmentManager interface {\n\tGetEnvironment(projectID int, environmentID int) (Environment, error)\n\tGetEnvironmentRefs(projectID int, environmentID int) (ObjectReferrers, error)\n\tGetEnvironments(projectID int, params RetrieveQueryParams) ([]Environment, error)\n\tUpdateEnvironment(env Environment) error\n\tCreateEnvironment(env Environment) (Environment, error)\n\tDeleteEnvironment(projectID int, templateID int) error\n\tGetEnvironmentSecrets(projectID int, environmentID int) ([]AccessKey, error)\n}\n\ntype GetAccessKeyOptions struct {\n\tOwner            AccessKeyOwner\n\tIgnoreOwner      bool\n\tEnvironmentID    *int\n\tStorageID        *int\n\tSourceStorageID  *int\n}\n\n// AccessKeyManager handles access key-related operations\ntype AccessKeyManager interface {\n\tGetAccessKey(projectID int, accessKeyID int) (AccessKey, error)\n\tGetAccessKeyRefs(projectID int, accessKeyID int) (ObjectReferrers, error)\n\tGetAccessKeys(projectID int, options GetAccessKeyOptions, params RetrieveQueryParams) ([]AccessKey, error)\n\tRekeyAccessKeys(oldKey string) error\n\tUpdateAccessKey(accessKey AccessKey) error\n\tCreateAccessKey(accessKey AccessKey) (AccessKey, error)\n\tDeleteAccessKey(projectID int, accessKeyID int) error\n}\n\n// IntegrationManager handles integration-related operations\ntype IntegrationManager interface {\n\tCreateIntegration(integration Integration) (newIntegration Integration, err error)\n\tGetIntegrations(projectID int, params RetrieveQueryParams, includeTaskParams bool) ([]Integration, error)\n\tGetIntegration(projectID int, integrationID int) (integration Integration, err error)\n\tUpdateIntegration(integration Integration) error\n\tGetIntegrationRefs(projectID int, integrationID int) (IntegrationReferrers, error)\n\tDeleteIntegration(projectID int, integrationID int) error\n\n\tCreateIntegrationExtractValue(projectId int, value IntegrationExtractValue) (newValue IntegrationExtractValue, err error)\n\tGetIntegrationExtractValues(projectID int, params RetrieveQueryParams, integrationID int) ([]IntegrationExtractValue, error)\n\tGetIntegrationExtractValue(projectID int, valueID int, integrationID int) (value IntegrationExtractValue, err error)\n\tUpdateIntegrationExtractValue(projectID int, integrationExtractValue IntegrationExtractValue) error\n\tGetIntegrationExtractValueRefs(projectID int, valueID int, integrationID int) (IntegrationExtractorChildReferrers, error)\n\tDeleteIntegrationExtractValue(projectID int, valueID int, integrationID int) error\n\n\tCreateIntegrationMatcher(projectID int, matcher IntegrationMatcher) (newMatcher IntegrationMatcher, err error)\n\tGetIntegrationMatchers(projectID int, params RetrieveQueryParams, integrationID int) ([]IntegrationMatcher, error)\n\tGetIntegrationMatcher(projectID int, matcherID int, integrationID int) (matcher IntegrationMatcher, err error)\n\tUpdateIntegrationMatcher(projectID int, integrationMatcher IntegrationMatcher) error\n\tGetIntegrationMatcherRefs(projectID int, matcherID int, integrationID int) (IntegrationExtractorChildReferrers, error)\n\tDeleteIntegrationMatcher(projectID int, matcherID int, integrationID int) error\n\n\tCreateIntegrationAlias(alias IntegrationAlias) (IntegrationAlias, error)\n\tGetIntegrationAliases(projectID int, integrationID *int) ([]IntegrationAlias, error)\n\tGetIntegrationsByAlias(alias string) ([]Integration, IntegrationAliasLevel, error)\n\tDeleteIntegrationAlias(projectID int, aliasID int) error\n}\n\n// SessionManager handles session-related operations\ntype SessionManager interface {\n\tGetSession(userID int, sessionID int) (Session, error)\n\tCreateSession(session Session) (Session, error)\n\tExpireSession(userID int, sessionID int) error\n\tTouchSession(userID int, sessionID int) error\n\tSetSessionVerificationMethod(userID int, sessionID int, verificationMethod SessionVerificationMethod) error\n\tVerifySession(userID int, sessionID int) error\n}\n\n// TokenManager handles token-related operations\ntype TokenManager interface {\n\tGetAPITokens(userID int) ([]APIToken, error)\n\tCreateAPIToken(token APIToken) (APIToken, error)\n\tGetAPIToken(tokenID string) (APIToken, error)\n\tExpireAPIToken(userID int, tokenID string) error\n\tDeleteAPIToken(userID int, tokenID string) error\n}\n\n// TaskManager handles task-related operations\ntype TaskManager interface {\n\tCreateTask(task Task, maxTasks int) (Task, error)\n\tUpdateTask(task Task) error\n\tGetTemplateTasks(projectID int, templateID int, params RetrieveQueryParams) ([]TaskWithTpl, error)\n\tGetProjectTasks(projectID int, params RetrieveQueryParams) ([]TaskWithTpl, error)\n\tGetTask(projectID int, taskID int) (Task, error)\n\tDeleteTaskWithOutputs(projectID int, taskID int) error\n\tGetTaskOutputs(projectID int, taskID int, params RetrieveQueryParams) ([]TaskOutput, error)\n\tCreateTaskOutput(output TaskOutput) (TaskOutput, error)\n\tInsertTaskOutputBatch(output []TaskOutput) error\n\tCreateTaskStage(stage TaskStage) (TaskStage, error)\n\tEndTaskStage(taskID int, stageID int, end time.Time) error\n\tCreateTaskStageResult(taskID int, stageID int, result map[string]any) error\n\tGetTaskStages(projectID int, taskID int) ([]TaskStageWithResult, error)\n\tGetTaskStageResult(projectID int, taskID int, stageID int) (TaskStageResult, error)\n\tGetTaskStageOutputs(projectID int, taskID int, stageID int) ([]TaskOutput, error)\n\tGetTaskStats(projectID int, templateID *int, unit TaskStatUnit, filter TaskFilter) ([]TaskStat, error)\n}\n\ntype AnsibleTaskRepository interface {\n\tCreateAnsibleTaskHost(host AnsibleTaskHost) error\n\tCreateAnsibleTaskError(error AnsibleTaskError) error\n\tGetAnsibleTaskHosts(projectID int, taskID int) ([]AnsibleTaskHost, error)\n\tGetAnsibleTaskErrors(projectID int, taskID int) ([]AnsibleTaskError, error)\n}\n\n// ScheduleManager handles schedule-related operations\ntype ScheduleManager interface {\n\tGetSchedules() ([]Schedule, error)\n\tGetProjectSchedules(projectID int, includeTaskParams bool, includeCommitCheckers bool) ([]ScheduleWithTpl, error)\n\tGetTemplateSchedules(projectID int, templateID int, onlyCommitCheckers bool) ([]Schedule, error)\n\tCreateSchedule(schedule Schedule) (Schedule, error)\n\tUpdateSchedule(schedule Schedule) error\n\tSetScheduleCommitHash(projectID int, scheduleID int, hash string) error\n\tSetScheduleActive(projectID int, scheduleID int, active bool) error\n\tGetSchedule(projectID int, scheduleID int) (Schedule, error)\n\tDeleteSchedule(projectID int, scheduleID int) error\n}\n\n// ViewManager handles view-related operations\ntype ViewManager interface {\n\tGetView(projectID int, viewID int) (View, error)\n\tGetViews(projectID int) ([]View, error)\n\tUpdateView(view View) error\n\tCreateView(view View) (View, error)\n\tDeleteView(projectID int, viewID int) error\n\tSetViewPositions(projectID int, viewPositions map[int]int) error\n}\n\n// RunnerManager handles runner-related operations\ntype RunnerManager interface {\n\tGetRunner(projectID int, runnerID int) (Runner, error)\n\tGetRunners(projectID int, activeOnly bool, tag *string) ([]Runner, error)\n\tDeleteRunner(projectID int, runnerID int) error\n\tGetRunnerByToken(token string) (Runner, error)\n\tGetGlobalRunner(runnerID int) (Runner, error)\n\tGetAllRunners(activeOnly bool, globalOnly bool) ([]Runner, error)\n\tDeleteGlobalRunner(runnerID int) error\n\tUpdateRunner(runner Runner) error\n\tCreateRunner(runner Runner) (Runner, error)\n\tTouchRunner(runner Runner) (err error)\n\tClearRunnerCache(runner Runner) (err error)\n\tGetRunnerTags(projectID int) ([]RunnerTag, error)\n\tGetRunnerCount() (int, error)\n}\n\n// EventManager handles event-related operations\ntype EventManager interface {\n\tCreateEvent(event Event) (Event, error)\n\tGetUserEvents(userID int, params RetrieveQueryParams) ([]Event, error)\n\tGetEvents(projectID int, params RetrieveQueryParams) ([]Event, error)\n\tGetAllEvents(params RetrieveQueryParams) ([]Event, error)\n}\n\ntype SecretStorageRepository interface {\n\tGetSecretStorages(projectID int) ([]SecretStorage, error)\n\tCreateSecretStorage(storage SecretStorage) (SecretStorage, error)\n\tGetSecretStorage(projectID int, storageID int) (SecretStorage, error)\n\tUpdateSecretStorage(storage SecretStorage) error\n\tGetSecretStorageRefs(projectID int, storageID int) (ObjectReferrers, error)\n\tDeleteSecretStorage(projectID int, storageID int) error\n}\n\ntype RoleRepository interface {\n\tGetGlobalRoleBySlug(slug string) (Role, error)\n\tGetProjectOrGlobalRoleBySlug(projectID int, slug string) (Role, error)\n\tGetProjectRole(projectID int, slug string) (Role, error)\n\tGetProjectRoles(projectID int) ([]Role, error)\n\tGetGlobalRoles() ([]Role, error)\n\tUpdateRole(role Role) error\n\tCreateRole(role Role) (Role, error)\n\tDeleteRole(slug string) error\n}\n\n// Store is the main interface that aggregates all specialized interfaces\ntype Store interface {\n\tConnectionManager\n\tMigrationManager\n\tOptionsManager\n\tUserManager\n\tProjectStore\n\tProjectInviteRepository\n\tTemplateManager\n\tInventoryManager\n\tRepositoryManager\n\tEnvironmentManager\n\tAccessKeyManager\n\tIntegrationManager\n\tSessionManager\n\tTokenManager\n\tTaskManager\n\tScheduleManager\n\tViewManager\n\tRunnerManager\n\tEventManager\n\tSecretStorageRepository\n\tRoleRepository\n}\n\nvar AccessKeyProps = ObjectProps{\n\tTableName:             \"access_key\",\n\tType:                  reflect.TypeOf(AccessKey{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"key_id\",\n\tSortableColumns:       []string{\"name\", \"type\"},\n\tDefaultSortingColumn:  \"name\",\n}\n\nvar IntegrationProps = ObjectProps{\n\tTableName:             \"project__integration\",\n\tType:                  reflect.TypeOf(Integration{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"integration_id\",\n\tSortableColumns:       []string{\"name\"},\n\tDefaultSortingColumn:  \"name\",\n}\n\nvar TaskParamsProps = ObjectProps{\n\tTableName:             \"project__task_params\",\n\tType:                  reflect.TypeOf(TaskParams{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"params_id\",\n}\n\nvar IntegrationExtractValueProps = ObjectProps{\n\tTableName:            \"project__integration_extract_value\",\n\tType:                 reflect.TypeOf(IntegrationExtractValue{}),\n\tPrimaryColumnName:    \"id\",\n\tSortableColumns:      []string{\"name\"},\n\tDefaultSortingColumn: \"name\",\n}\n\nvar IntegrationMatcherProps = ObjectProps{\n\tTableName:            \"project__integration_matcher\",\n\tType:                 reflect.TypeOf(IntegrationMatcher{}),\n\tPrimaryColumnName:    \"id\",\n\tSortableColumns:      []string{\"name\"},\n\tDefaultSortingColumn: \"name\",\n}\n\nvar IntegrationAliasProps = ObjectProps{\n\tTableName:         \"project__integration_alias\",\n\tType:              reflect.TypeOf(IntegrationAlias{}),\n\tPrimaryColumnName: \"id\",\n}\n\nvar EnvironmentProps = ObjectProps{\n\tTableName:             \"project__environment\",\n\tType:                  reflect.TypeOf(Environment{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"environment_id\",\n\tSortableColumns:       []string{\"name\"},\n\tDefaultSortingColumn:  \"name\",\n}\n\nvar InventoryProps = ObjectProps{\n\tTableName:             \"project__inventory\",\n\tType:                  reflect.TypeOf(Inventory{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"inventory_id\",\n\tSortableColumns:       []string{\"name\"},\n\tDefaultSortingColumn:  \"name\",\n\tOwnerships:            []*ObjectProps{&TemplateProps},\n}\n\nvar RepositoryProps = ObjectProps{\n\tTableName:             \"project__repository\",\n\tType:                  reflect.TypeOf(Repository{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"repository_id\",\n\tDefaultSortingColumn:  \"name\",\n}\n\nvar TemplateProps = ObjectProps{\n\tTableName:             \"project__template\",\n\tType:                  reflect.TypeOf(Template{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"template_id\",\n\tSortableColumns:       []string{\"name\", \"playbook\", \"inventory\", \"environment\", \"repository\"},\n\tDefaultSortingColumn:  \"name\",\n}\n\nvar ProjectUserProps = ObjectProps{\n\tTableName:         \"project__user\",\n\tType:              reflect.TypeOf(ProjectUser{}),\n\tPrimaryColumnName: \"user_id\",\n}\n\nvar ProjectInviteProps = ObjectProps{\n\tTableName:             \"project__invite\",\n\tType:                  reflect.TypeOf(ProjectInvite{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"invite_id\",\n\tSortableColumns:       []string{\"created\", \"status\", \"role\"},\n\tDefaultSortingColumn:  \"created\",\n}\n\nvar ProjectProps = ObjectProps{\n\tTableName:             \"project\",\n\tType:                  reflect.TypeOf(Project{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"project_id\",\n\tDefaultSortingColumn:  \"name\",\n\tIsGlobal:              true,\n}\n\nvar ScheduleProps = ObjectProps{\n\tTableName:         \"project__schedule\",\n\tType:              reflect.TypeOf(Schedule{}),\n\tPrimaryColumnName: \"id\",\n\tOwnerships:        []*ObjectProps{&ProjectProps},\n}\n\nvar SecretStorageProps = ObjectProps{\n\tTableName:             \"project__secret_storage\",\n\tReferringColumnSuffix: \"storage_id\",\n\tType:                  reflect.TypeOf(SecretStorage{}),\n\tPrimaryColumnName:     \"id\",\n\tOwnerships:            []*ObjectProps{&ProjectProps},\n}\n\nvar RoleProps = ObjectProps{\n\tTableName:         \"role\",\n\tType:              reflect.TypeOf(Role{}),\n\tPrimaryColumnName: \"slug\",\n\tIsGlobal:          true,\n\tSortableColumns:   []string{\"name\"},\n}\n\nvar UserProps = ObjectProps{\n\tTableName:         \"user\",\n\tType:              reflect.TypeOf(User{}),\n\tPrimaryColumnName: \"id\",\n\tIsGlobal:          true,\n\tSortableColumns:   []string{\"name\", \"username\", \"email\", \"role\"},\n}\n\nvar SessionProps = ObjectProps{\n\tTableName:         \"session\",\n\tType:              reflect.TypeOf(Session{}),\n\tPrimaryColumnName: \"id\",\n}\n\nvar TokenProps = ObjectProps{\n\tTableName:         \"user__token\",\n\tType:              reflect.TypeOf(APIToken{}),\n\tPrimaryColumnName: \"id\",\n}\n\nvar TaskProps = ObjectProps{\n\tTableName:         \"task\",\n\tType:              reflect.TypeOf(Task{}),\n\tPrimaryColumnName: \"id\",\n\tIsGlobal:          true,\n\tSortInverted:      true,\n}\n\nvar TaskOutputProps = ObjectProps{\n\tTableName: \"task__output\",\n\tType:      reflect.TypeOf(TaskOutput{}),\n}\n\nvar TaskStageProps = ObjectProps{\n\tTableName: \"task__stage\",\n\tType:      reflect.TypeOf(TaskStage{}),\n}\n\nvar TaskStageResultProps = ObjectProps{\n\tTableName: \"task__stage_result\",\n\tType:      reflect.TypeOf(TaskStageResult{}),\n}\n\nvar ViewProps = ObjectProps{\n\tTableName:            \"project__view\",\n\tType:                 reflect.TypeOf(View{}),\n\tPrimaryColumnName:    \"id\",\n\tDefaultSortingColumn: \"position\",\n}\n\nvar GlobalRunnerProps = ObjectProps{\n\tTableName:            \"runner\",\n\tType:                 reflect.TypeOf(Runner{}),\n\tPrimaryColumnName:    \"id\",\n\tDefaultSortingColumn: \"id\",\n\tSortInverted:         true,\n\tIsGlobal:             true,\n}\n\nvar OptionProps = ObjectProps{\n\tTableName:         \"option\",\n\tType:              reflect.TypeOf(Option{}),\n\tPrimaryColumnName: \"key\",\n\tIsGlobal:          true,\n}\n\nvar TemplateVaultProps = ObjectProps{\n\tTableName:             \"project__template_vault\",\n\tType:                  reflect.TypeOf(TemplateVault{}),\n\tPrimaryColumnName:     \"id\",\n\tReferringColumnSuffix: \"template_id\",\n}\n\nvar UserTotpProps = ObjectProps{\n\tTableName:         \"user__totp\",\n\tType:              reflect.TypeOf(UserTotp{}),\n\tPrimaryColumnName: \"id\",\n}\n\nfunc (p ObjectProps) GetReferringFieldsFrom(t reflect.Type) (fields []string, err error) {\n\tif p.ReferringColumnSuffix == \"\" {\n\t\terr = errors.New(\"referring column suffix is not set\")\n\t\treturn\n\t}\n\n\tn := t.NumField()\n\tfor i := 0; i < n; i++ {\n\t\tif !strings.HasSuffix(t.Field(i).Tag.Get(\"db\"), p.ReferringColumnSuffix) {\n\t\t\tcontinue\n\t\t}\n\t\tfields = append(fields, t.Field(i).Tag.Get(\"db\"))\n\t}\n\n\tfor i := 0; i < n; i++ {\n\t\tif t.Field(i).Tag != \"\" || t.Field(i).Type.Kind() != reflect.Struct {\n\t\t\tcontinue\n\t\t}\n\t\tvar nested []string\n\t\tnested, err = p.GetReferringFieldsFrom(t.Field(i).Type)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tfields = append(fields, nested...)\n\t}\n\n\treturn\n}\n\nfunc StoreSession(store Store, token string, callback func()) {\n\tif !store.PermanentConnection() {\n\t\tstore.Connect(token)\n\t}\n\n\tcallback()\n\n\tif !store.PermanentConnection() {\n\t\tstore.Close(token)\n\t}\n}\n\nfunc ValidateRepository(store Store, repo *Repository) (err error) {\n\t_, err = store.GetAccessKey(repo.ProjectID, repo.SSHKeyID)\n\n\treturn\n}\n\nfunc ValidateInventory(store Store, inventory *Inventory) (err error) {\n\tif inventory.SSHKeyID != nil {\n\t\t_, err = store.GetAccessKey(inventory.ProjectID, *inventory.SSHKeyID)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif inventory.BecomeKeyID != nil {\n\t\t_, err = store.GetAccessKey(inventory.ProjectID, *inventory.BecomeKeyID)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif inventory.TemplateID != nil {\n\t\t_, err = store.GetTemplate(inventory.ProjectID, *inventory.TemplateID)\n\t}\n\n\treturn\n}\n\ntype StringArrayField []string\n\nfunc (m *StringArrayField) Scan(value any) error {\n\tif value == nil {\n\t\t*m = nil\n\t\treturn nil\n\t}\n\n\tswitch v := value.(type) {\n\tcase []byte:\n\t\treturn json.Unmarshal(v, m)\n\tcase string:\n\t\treturn json.Unmarshal([]byte(v), m)\n\tdefault:\n\t\treturn errors.New(\"unsupported type for MapStringAnyField\")\n\t}\n}\n\n// Value implements the driver.Valuer interface for MapStringAnyField\nfunc (m *StringArrayField) Value() (driver.Value, error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\treturn json.Marshal(m)\n}\n\ntype MapStringAnyField map[string]any\n\nfunc (m *MapStringAnyField) Scan(value any) error {\n\tif value == nil {\n\t\t*m = nil\n\t\treturn nil\n\t}\n\n\tswitch v := value.(type) {\n\tcase []byte:\n\t\treturn json.Unmarshal(v, m)\n\tcase string:\n\t\treturn json.Unmarshal([]byte(v), m)\n\tdefault:\n\t\treturn errors.New(\"unsupported type for MapStringAnyField\")\n\t}\n}\n\n// Value implements the driver.Valuer interface for MapStringAnyField\n// DO NOT ADD *, It breaks method call\nfunc (m MapStringAnyField) Value() (driver.Value, error) {\n\tif m == nil {\n\t\treturn nil, nil\n\t}\n\treturn json.Marshal(m)\n}\n"
  },
  {
    "path": "db/Store_test.go",
    "content": "package db\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestObjectToJSON(t *testing.T) {\n\tv := &SurveyVar{\n\t\tName:  \"test\",\n\t\tTitle: \"Test\",\n\t}\n\ts := ObjectToJSON(v)\n\tassert.NotNil(t, s)\n\tassert.Equal(t, \"{\\\"name\\\":\\\"test\\\",\\\"title\\\":\\\"Test\\\"}\", *s)\n}\n\nfunc TestObjectToJSON2(t *testing.T) {\n\tvar v *SurveyVar = nil\n\ts := ObjectToJSON(v)\n\tassert.Nil(t, s)\n}\n\nfunc TestObjectToJSON3(t *testing.T) {\n\tv := SurveyVar{\n\t\tName:  \"test\",\n\t\tTitle: \"Test\",\n\t}\n\ts := ObjectToJSON(v)\n\tassert.NotNil(t, s)\n\tassert.Equal(t, \"{\\\"name\\\":\\\"test\\\",\\\"title\\\":\\\"Test\\\"}\", *s)\n}\n"
  },
  {
    "path": "db/Task.go",
    "content": "package db\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\n\t\"github.com/go-gorp/gorp/v3\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype DefaultTaskParams struct {\n}\n\ntype TerraformTaskParams struct {\n\tPlan        bool `json:\"plan\"`\n\tDestroy     bool `json:\"destroy\"`\n\tAutoApprove bool `json:\"auto_approve\"`\n\tUpgrade     bool `json:\"upgrade\"`\n\tReconfigure bool `json:\"reconfigure\"`\n}\n\ntype AnsibleTaskParams struct {\n\tDebug      bool     `json:\"debug\"`\n\tDebugLevel int      `json:\"debug_level\"`\n\tDryRun     bool     `json:\"dry_run\"`\n\tDiff       bool     `json:\"diff\"`\n\tLimit      []string `json:\"limit\"`\n\tTags       []string `json:\"tags\"`\n\tSkipTags   []string `json:\"skip_tags\"`\n}\n\n// Task is a model of a task which will be executed by the runner\ntype Task struct {\n\tID         int `db:\"id\" json:\"id\"`\n\tTemplateID int `db:\"template_id\" json:\"template_id\" binding:\"required\"`\n\tProjectID  int `db:\"project_id\" json:\"project_id\"`\n\n\tStatus task_logger.TaskStatus `db:\"status\" json:\"status\"`\n\n\t// override variables\n\tPlaybook    string  `db:\"playbook\" json:\"playbook\"`\n\tEnvironment string  `db:\"environment\" json:\"environment,omitempty\"`\n\tSecret      string  `db:\"-\" json:\"secret,omitempty\"`\n\tArguments   *string `db:\"arguments\" json:\"arguments,omitempty\"`\n\tGitBranch   *string `db:\"git_branch\" json:\"git_branch,omitempty\"`\n\n\tUserID        *int `db:\"user_id\" json:\"user_id,omitempty\"`\n\tIntegrationID *int `db:\"integration_id\" json:\"integration_id,omitempty\"`\n\tScheduleID    *int `db:\"schedule_id\" json:\"schedule_id,omitempty\"`\n\n\tCreated time.Time  `db:\"created\" json:\"created\"`\n\tStart   *time.Time `db:\"start\" json:\"start,omitempty\"`\n\tEnd     *time.Time `db:\"end\" json:\"end,omitempty\"`\n\n\tMessage string `db:\"message\" json:\"message,omitempty\"`\n\n\t// CommitHash is a git commit hash of playbook repository which\n\t// was active when task was created.\n\tCommitHash *string `db:\"commit_hash\" json:\"commit_hash,omitempty\"`\n\t// CommitMessage contains message retrieved from git repository after checkout to CommitHash.\n\t// It is readonly by API.\n\tCommitMessage string `db:\"commit_message\" json:\"commit_message,omitempty\"`\n\tBuildTaskID   *int   `db:\"build_task_id\" json:\"build_task_id,omitempty\"`\n\t// Version is a build version.\n\t// This field available only for Build tasks.\n\tVersion *string `db:\"version\" json:\"version,omitempty\"`\n\n\tInventoryID *int `db:\"inventory_id\" json:\"inventory_id,omitempty\"`\n\n\tParams MapStringAnyField `db:\"params\" json:\"params,omitempty\"`\n\n\t// Limit is deprecated, use Params.Limit instead\n\tLimit string `db:\"-\" json:\"limit\"`\n}\n\nfunc (task *Task) ExtractParams(target any) (err error) {\n\tcontent, err := json.Marshal(task.Params)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = json.Unmarshal(content, target)\n\treturn\n}\n\n// PreInsert is a hook which is called before inserting task into database.\n// Called directly in BoltDB implementation.\nfunc (task *Task) PreInsert(gorp.SqlExecutor) error {\n\ttask.Created = tz.In(task.Created)\n\n\tif _, ok := task.Params[\"limit\"]; !ok {\n\t\tif task.Params == nil {\n\t\t\ttask.Params = make(MapStringAnyField)\n\t\t}\n\n\t\tif task.Limit != \"\" {\n\t\t\tlimits := strings.Split(task.Limit, \",\")\n\n\t\t\tfor i := range limits {\n\t\t\t\tlimits[i] = strings.TrimSpace(limits[i])\n\t\t\t}\n\n\t\t\ttask.Params[\"limit\"] = limits\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (task *Task) PreUpdate(gorp.SqlExecutor) error {\n\tif task.Start != nil {\n\t\tstart := tz.In(*task.Start)\n\t\ttask.Start = &start\n\t}\n\n\tif task.End != nil {\n\t\tend := tz.In(*task.End)\n\t\ttask.End = &end\n\t}\n\treturn nil\n}\n\nfunc (task *Task) GetIncomingVersion(d Store) *string {\n\tif task.BuildTaskID == nil {\n\t\treturn nil\n\t}\n\n\tbuildTask, err := d.GetTask(task.ProjectID, *task.BuildTaskID)\n\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\ttpl, err := d.GetTemplate(task.ProjectID, buildTask.TemplateID)\n\tif err != nil {\n\t\treturn nil\n\t}\n\n\tif tpl.Type == TemplateBuild {\n\t\treturn buildTask.Version\n\t}\n\n\treturn buildTask.GetIncomingVersion(d)\n}\n\nfunc (task *Task) GetUrl() *string {\n\tif util.Config.WebHost != \"\" {\n\t\ttaskUrl := fmt.Sprintf(\"%s/project/%d/history?t=%d\", util.Config.WebHost, task.ProjectID, task.ID)\n\t\treturn &taskUrl\n\t}\n\n\treturn nil\n}\n\nfunc (task *Task) ValidateNewTask(template Template) error {\n\n\tvar params any\n\tswitch template.App {\n\tcase AppAnsible:\n\t\tparams = &AnsibleTaskParams{}\n\tcase AppTerraform, AppTofu, AppTerragrunt:\n\t\tparams = &TerraformTaskParams{}\n\tdefault:\n\t\tparams = &DefaultTaskParams{}\n\t}\n\n\treturn task.ExtractParams(params)\n}\n\nfunc (task *TaskWithTpl) Fill(d Store) error {\n\tif task.BuildTaskID != nil {\n\t\tbuild, err := d.GetTask(task.ProjectID, *task.BuildTaskID)\n\t\tif errors.Is(err, ErrNotFound) {\n\t\t\treturn nil\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttask.BuildTask = &build\n\t}\n\treturn nil\n}\n\n// TaskWithTpl is the task data with additional fields\ntype TaskWithTpl struct {\n\tTask\n\tTemplatePlaybook string       `db:\"tpl_playbook\" json:\"tpl_playbook\"`\n\tTemplateAlias    string       `db:\"tpl_alias\" json:\"tpl_alias\"`\n\tTemplateType     TemplateType `db:\"tpl_type\" json:\"tpl_type,omitempty\"`\n\tTemplateApp      TemplateApp  `db:\"tpl_app\" json:\"tpl_app,omitempty\"`\n\tUserName         *string      `db:\"user_name\" json:\"user_name,omitempty\"`\n\tBuildTask        *Task        `db:\"-\" json:\"build_task,omitempty\"`\n}\n\n// TaskOutput is the ansible log output from the task\ntype TaskOutput struct {\n\tID      int       `db:\"id\" json:\"id\"`\n\tTaskID  int       `db:\"task_id\" json:\"task_id\"`\n\tTime    time.Time `db:\"time\" json:\"time\"`\n\tOutput  string    `db:\"output\" json:\"output\"`\n\tStageID *int      `db:\"stage_id\" json:\"stage_id\"`\n}\n\ntype TaskStageType string\n\nconst (\n\tTaskStageInit          TaskStageType = \"init\"\n\tTaskStageTerraformPlan TaskStageType = \"terraform_plan\"\n\tTaskStageRunning       TaskStageType = \"running\"\n\tTaskStagePrintResult   TaskStageType = \"print_result\"\n)\n\ntype TaskStage struct {\n\tID     int           `db:\"id\" json:\"id\"`\n\tTaskID int           `db:\"task_id\" json:\"task_id\"`\n\tStart  *time.Time    `db:\"start\" json:\"start\"`\n\tEnd    *time.Time    `db:\"end\" json:\"end\"`\n\tType   TaskStageType `db:\"type\" json:\"type\"`\n}\n\ntype TaskStageWithResult struct {\n\tID            int           `db:\"id\" json:\"id\"`\n\tTaskID        int           `db:\"task_id\" json:\"task_id\"`\n\tStart         *time.Time    `db:\"start\" json:\"start\"`\n\tEnd           *time.Time    `db:\"end\" json:\"end\"`\n\tStartOutputID *int          `db:\"start_output_id\" json:\"start_output_id\"`\n\tEndOutputID   *int          `db:\"end_output_id\" json:\"end_output_id\"`\n\tType          TaskStageType `db:\"type\" json:\"type\"`\n\tJSON          string        `db:\"json\" json:\"-\"`\n\tResult        any           `db:\"-\" json:\"result\"`\n}\n\ntype TaskStageResult struct {\n\tID      int    `db:\"id\" json:\"id\"`\n\tTaskID  int    `db:\"task_id\" json:\"task_id\"`\n\tStageID int    `db:\"stage_id\" json:\"stage_id\"`\n\tJSON    string `db:\"json\" json:\"json\"`\n}\n"
  },
  {
    "path": "db/TaskParams.go",
    "content": "package db\n\ntype TaskParams struct {\n\tID        int `db:\"id\" json:\"-\" backup:\"-\"`\n\tProjectID int `db:\"project_id\" json:\"-\" backup:\"-\"`\n\n\tEnvironment string  `db:\"environment\" json:\"environment,omitempty\"`\n\tArguments   *string `db:\"arguments\" json:\"arguments,omitempty\"`\n\tGitBranch   *string `db:\"git_branch\" json:\"git_branch,omitempty\"`\n\n\tMessage string `db:\"message\" json:\"message,omitempty\"`\n\n\t// Version is a build version.\n\t// This field available only for Build tasks.\n\tVersion *string `db:\"version\" json:\"version,omitempty\"`\n\n\tInventoryID   *int    `db:\"inventory_id\" json:\"inventory_id,omitempty\" backup:\"-\"`\n\tInventoryName *string `db:\"-\" json:\"-\" backup:\"inventory_name\"`\n\n\tParams MapStringAnyField `db:\"params\" json:\"params,omitempty\"`\n}\n\nfunc (p TaskParams) CreateTask(templateID int) (task Task) {\n\ttask = Task{\n\t\tProjectID:   p.ProjectID,\n\t\tEnvironment: p.Environment,\n\t\tArguments:   p.Arguments,\n\t\tGitBranch:   p.GitBranch,\n\t\tMessage:     p.Message,\n\t\tVersion:     p.Version,\n\t\tInventoryID: p.InventoryID,\n\t\tParams:      p.Params,\n\t\tTemplateID:  templateID,\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/Template.go",
    "content": "package db\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype TemplateType string\n\nconst (\n\tTemplateTask   TemplateType = \"\"\n\tTemplateBuild  TemplateType = \"build\"\n\tTemplateDeploy TemplateType = \"deploy\"\n)\n\ntype TemplateApp string\n\nconst (\n\tAppAnsible    TemplateApp = \"ansible\"\n\tAppTerraform  TemplateApp = \"terraform\"\n\tAppTofu       TemplateApp = \"tofu\"\n\tAppTerragrunt TemplateApp = \"terragrunt\"\n\tAppBash       TemplateApp = \"bash\"\n\tAppPowerShell TemplateApp = \"powershell\"\n\tAppPython     TemplateApp = \"python\"\n\tAppPulumi     TemplateApp = \"pulumi\"\n)\n\nfunc (t TemplateApp) InventoryTypes() []InventoryType {\n\tswitch t {\n\tcase AppAnsible:\n\t\treturn []InventoryType{InventoryStatic, InventoryStaticYaml, InventoryFile}\n\tcase AppTerraform:\n\t\treturn []InventoryType{InventoryTerraformWorkspace}\n\tcase AppTofu:\n\t\treturn []InventoryType{InventoryTofuWorkspace}\n\tcase AppTerragrunt:\n\t\treturn []InventoryType{InventoryTerragruntWorkspace}\n\tdefault:\n\t\treturn []InventoryType{}\n\t}\n}\n\nfunc (t TemplateApp) HasInventoryType(inventoryType InventoryType) bool {\n\ttypes := t.InventoryTypes()\n\n\tfor _, typ := range types {\n\t\tif typ == inventoryType {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (t TemplateApp) IsTerraform() bool {\n\treturn t == AppTerraform || t == AppTofu || t == AppTerragrunt\n}\n\ntype SurveyVarType string\n\nconst (\n\tSurveyVarStr  TemplateType = \"\"\n\tSurveyVarInt  TemplateType = \"int\"\n\tSurveyVarEnum TemplateType = \"enum\"\n)\n\ntype AnsibleTemplateParams struct {\n\tAllowDebug             bool     `json:\"allow_debug\"`\n\tAllowOverrideInventory bool     `json:\"allow_override_inventory\"`\n\tAllowOverrideLimit     bool     `json:\"allow_override_limit\"`\n\tAllowOverrideTags      bool     `json:\"allow_override_tags\"`\n\tAllowOverrideSkipTags  bool     `json:\"allow_override_skip_tags\"`\n\tLimit                  []string `json:\"limit\"`\n\tTags                   []string `json:\"tags\"`\n\tSkipTags               []string `json:\"skip_tags\"`\n}\n\ntype TerraformTemplateParams struct {\n\tAllowDestroy     bool   `json:\"allow_destroy,omitempty\"`\n\tAllowAutoApprove bool   `json:\"allow_auto_approve,omitempty\"`\n\tAutoApprove      bool   `json:\"auto_approve,omitempty\"`\n\tOverrideBackend  bool   `json:\"override_backend,omitempty\"` // override backend if internal backend is used\n\tBackendFilename  string `json:\"backend_filename,omitempty\"`\n}\n\ntype SurveyVarEnumValue struct {\n\tName  string `json:\"name\" backup:\"name\"`\n\tValue string `json:\"value\" backup:\"value\"`\n}\n\ntype SurveyVar struct {\n\tName         string               `json:\"name\" backup:\"name\"`\n\tTitle        string               `json:\"title\" backup:\"title\"`\n\tRequired     bool                 `json:\"required,omitempty\" backup:\"required\"`\n\tType         SurveyVarType        `json:\"type,omitempty\" backup:\"type\"`\n\tDescription  string               `json:\"description,omitempty\" backup:\"description\"`\n\tValues       []SurveyVarEnumValue `json:\"values,omitempty\" backup:\"values\"`\n\tDefaultValue string               `json:\"default_value,omitempty\" backup:\"default_value\"`\n}\n\ntype TemplateFilter struct {\n\tViewID          *int\n\tBuildTemplateID *int\n\tAutorunOnly     bool\n\tApp             *TemplateApp\n}\n\n// Template is a user defined model that is used to run a task\ntype Template struct {\n\tID int `db:\"id\" json:\"id\" backup:\"-\"`\n\n\tProjectID     int  `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tInventoryID   *int `db:\"inventory_id\" json:\"inventory_id,omitempty\" backup:\"-\"`\n\tRepositoryID  int  `db:\"repository_id\" json:\"repository_id\" backup:\"-\"`\n\tEnvironmentID *int `db:\"environment_id\" json:\"environment_id,omitempty\" backup:\"-\"`\n\n\t// Name as described in https://github.com/semaphoreui/semaphore/issues/188\n\tName string `db:\"name\" json:\"name\"`\n\t// playbook name in the form of \"some_play.yml\"\n\tPlaybook string `db:\"playbook\" json:\"playbook\"`\n\t// to fit into []string\n\tArguments *string `db:\"arguments\" json:\"arguments,omitempty\"`\n\t// if true, semaphore will not prepend any arguments to `arguments` like inventory, etc\n\tAllowOverrideArgsInTask bool `db:\"allow_override_args_in_task\" json:\"allow_override_args_in_task,omitempty\"`\n\n\tDescription *string `db:\"description\" json:\"description,omitempty\"`\n\n\tVaults []TemplateVault `db:\"-\" json:\"vaults,omitempty\" backup:\"-\"`\n\n\tType            TemplateType `db:\"type\" json:\"type,omitempty\"`\n\tStartVersion    *string      `db:\"start_version\" json:\"start_version,omitempty\"`\n\tBuildTemplateID *int         `db:\"build_template_id\" json:\"build_template_id,omitempty\" backup:\"-\"`\n\n\tViewID *int `db:\"view_id\" json:\"view_id,omitempty\" backup:\"-\"`\n\n\tLastTask *TaskWithTpl `db:\"-\" json:\"last_task,omitempty\" backup:\"-\"`\n\n\tAutorun bool `db:\"autorun\" json:\"autorun,omitempty\"`\n\n\t// override variables\n\tGitBranch *string `db:\"git_branch\" json:\"git_branch,omitempty\"`\n\n\t// SurveyVarsJSON used internally for read from database.\n\t// It is not used for store survey vars to database.\n\t// Do not use it in your code. Use SurveyVars instead.\n\tSurveyVarsJSON *string     `db:\"survey_vars\" json:\"-\" backup:\"-\"`\n\tSurveyVars     []SurveyVar `db:\"-\" json:\"survey_vars,omitempty\" backup:\"survey_vars\"`\n\n\tSuppressSuccessAlerts bool `db:\"suppress_success_alerts\" json:\"suppress_success_alerts,omitempty\"`\n\n\tApp TemplateApp `db:\"app\" json:\"app,omitempty\"`\n\n\tTasks int `db:\"tasks\" json:\"tasks\" backup:\"-\"`\n\n\tTaskParams MapStringAnyField `db:\"task_params\" json:\"task_params,omitempty\"`\n\n\tRunnerTag *string `db:\"runner_tag\" json:\"runner_tag,omitempty\"`\n\n\tAllowOverrideBranchInTask bool `db:\"allow_override_branch_in_task\" json:\"allow_override_branch_in_task,omitempty\"`\n\tAllowParallelTasks        bool `db:\"allow_parallel_tasks\" json:\"allow_parallel_tasks,omitempty\"`\n}\n\ntype TemplateWithPerms struct {\n\tTemplate\n\tPermissions *ProjectUserPermission `db:\"permissions\" json:\"permissions\"`\n}\n\nfunc (tpl *Template) FillParams(target any) error {\n\tcontent, err := json.Marshal(tpl.TaskParams)\n\tif err != nil {\n\t\treturn nil\n\t}\n\terr = json.Unmarshal(content, target)\n\treturn err\n}\n\nfunc (tpl *Template) CanOverrideInventory() (ok bool, err error) {\n\tswitch tpl.App {\n\tcase AppAnsible, \"\":\n\t\tvar params AnsibleTemplateParams\n\t\terr = tpl.FillParams(&params)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tok = params.AllowOverrideInventory\n\t}\n\n\treturn\n}\n\nfunc (tpl *Template) Validate() error {\n\tif tpl.RunnerTag != nil && *tpl.RunnerTag == \"\" {\n\t\treturn &ValidationError{\"template runner tag can not be empty\"}\n\t}\n\tswitch tpl.App {\n\tcase AppAnsible:\n\t\tif tpl.InventoryID == nil {\n\t\t\treturn &ValidationError{\"template inventory can not be empty\"}\n\t\t}\n\t}\n\n\tif tpl.Name == \"\" {\n\t\treturn &ValidationError{\"template name can not be empty\"}\n\t}\n\n\tif !tpl.App.IsTerraform() && tpl.Playbook == \"\" {\n\t\treturn &ValidationError{\"template playbook can not be empty\"}\n\t}\n\n\tif tpl.Arguments != nil {\n\t\tif !json.Valid([]byte(*tpl.Arguments)) {\n\t\t\treturn &ValidationError{\"template arguments must be valid JSON\"}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc FillTemplate(d Store, template *Template) (err error) {\n\tvar vaults []TemplateVault\n\tvaults, err = d.GetTemplateVaults(template.ProjectID, template.ID)\n\tif err != nil {\n\t\treturn\n\t}\n\ttemplate.Vaults = vaults\n\n\tvar tasks []TaskWithTpl\n\ttasks, err = d.GetTemplateTasks(template.ProjectID, template.ID, RetrieveQueryParams{Count: 1})\n\tif err != nil {\n\t\treturn\n\t}\n\tif len(tasks) > 0 {\n\t\ttemplate.LastTask = &tasks[0]\n\t}\n\n\tif template.SurveyVarsJSON != nil {\n\t\tif err2 := json.Unmarshal([]byte(*template.SurveyVarsJSON), &template.SurveyVars); err2 != nil {\n\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\"project_id\":  &template.ProjectID,\n\t\t\t\t\"template_id\": template.ID,\n\t\t\t\t\"hint\":        \"validate JSON array in project__template.survey_vars\",\n\t\t\t}).Error(\"failed to unmarshal template survey vars\")\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/TemplateVault.go",
    "content": "package db\n\ntype TemplateVaultType string\n\nconst (\n\tTemplateVaultPassword TemplateVaultType = \"password\"\n\tTemplateVaultScript   TemplateVaultType = \"script\"\n)\n\ntype TemplateVault struct {\n\tID         int               `db:\"id\" json:\"id\" backup:\"-\"`\n\tProjectID  int               `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tTemplateID int               `db:\"template_id\" json:\"template_id\" backup:\"-\"`\n\tVaultKeyID *int              `db:\"vault_key_id\" json:\"vault_key_id,omitempty\" backup:\"-\"`\n\tName       *string           `db:\"name\" json:\"name,omitempty\"`\n\tType       TemplateVaultType `db:\"type\" json:\"type\"`\n\tScript     *string           `db:\"script\" json:\"script,omitempty\"`\n\n\tVault *AccessKey `db:\"-\" json:\"-\"`\n}\n\nfunc FillTemplateVault(d Store, projectID int, templateVault *TemplateVault) (err error) {\n\tif templateVault.Type == TemplateVaultPassword && templateVault.VaultKeyID != nil {\n\t\tvar vault AccessKey\n\t\tvault, err = d.GetAccessKey(projectID, *templateVault.VaultKeyID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\ttemplateVault.Vault = &vault\n\t}\n\treturn\n}\n"
  },
  {
    "path": "db/Template_alias.go",
    "content": "package db\n\nfunc (t TemplateApp) NeedTaskAlias() bool {\n\treturn t.IsTerraform()\n}\n"
  },
  {
    "path": "db/TerraformInventoryAlias.go",
    "content": "package db\n\nimport \"reflect\"\n\ntype TerraformInventoryAlias struct {\n\tProjectID   int    `db:\"project_id\" json:\"project_id\"`\n\tInventoryID int    `db:\"inventory_id\" json:\"inventory_id\"`\n\tAuthKeyID   int    `db:\"auth_key_id\" json:\"auth_key_id\"`\n\tAlias       string `db:\"alias\" json:\"alias\"`\n\tTaskID      *int   `db:\"-\" json:\"-\"`\n}\n\nvar TerraformInventoryAliasProps = ObjectProps{\n\tTableName:         \"project__terraform_inventory_alias\",\n\tType:              reflect.TypeOf(TerraformInventoryAlias{}),\n\tPrimaryColumnName: \"alias\",\n}\n\nfunc (alias TerraformInventoryAlias) ToAlias() Alias {\n\treturn Alias{\n\t\t//ID:        alias.ID,\n\t\tAlias:     alias.Alias,\n\t\tProjectID: alias.ProjectID,\n\t}\n}\n"
  },
  {
    "path": "db/TerraformInventoryState_pro.go",
    "content": "package db\n\nimport (\n\t\"reflect\"\n\t\"time\"\n)\n\ntype TerraformInventoryState struct {\n\tID          int       `db:\"id\" json:\"id\"`\n\tCreated     time.Time `db:\"created\" json:\"created\"`\n\tTaskID      *int      `db:\"task_id\" json:\"task_id,omitempty\"`\n\tProjectID   int       `db:\"project_id\" json:\"project_id\"`\n\tInventoryID int       `db:\"inventory_id\" json:\"inventory_id\"`\n\tState       string    `db:\"state\" json:\"state,omitempty\"`\n}\n\nvar TerraformInventoryStateProps = ObjectProps{\n\tTableName:            \"project__terraform_inventory_state\",\n\tType:                 reflect.TypeOf(TerraformInventoryState{}),\n\tPrimaryColumnName:    \"id\",\n\tSortableColumns:      []string{\"created\"},\n\tDefaultSortingColumn: \"created\",\n\tSortInverted:         true,\n}\n"
  },
  {
    "path": "db/TerraformInventoryStore_pro.go",
    "content": "package db\n\ntype TerraformStore interface {\n\tCreateTerraformInventoryAlias(alias TerraformInventoryAlias) (TerraformInventoryAlias, error)\n\tGetTerraformInventoryAliasByAlias(alias string) (TerraformInventoryAlias, error)\n\tGetTerraformInventoryAlias(projectID int, inventoryID int, aliasID string) (TerraformInventoryAlias, error)\n\tGetTerraformInventoryAliases(projectID, inventoryID int) ([]TerraformInventoryAlias, error)\n\tUpdateTerraformInventoryAlias(alias TerraformInventoryAlias) error\n\tDeleteTerraformInventoryAlias(projectID int, inventoryID int, aliasID string) error\n\n\tCreateTerraformInventoryState(State TerraformInventoryState) (TerraformInventoryState, error)\n\tGetTerraformInventoryState(projectID int, inventoryId int, stateID int) (TerraformInventoryState, error)\n\tGetTerraformInventoryStates(projectID, inventoryID int, params RetrieveQueryParams) ([]TerraformInventoryState, error)\n\tDeleteTerraformInventoryState(projectID int, inventoryId int, stateID int) error\n\tGetTerraformStateCount() (int, error)\n}\n"
  },
  {
    "path": "db/User.go",
    "content": "package db\n\nimport (\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n)\n\n// User is the model for an entity which has access to the API\ntype User struct {\n\tID       int       `db:\"id\" json:\"id\"`\n\tCreated  time.Time `db:\"created\" json:\"created\"`\n\tUsername string    `db:\"username\" json:\"username\" binding:\"required\"`\n\tName     string    `db:\"name\" json:\"name\" binding:\"required\"`\n\tEmail    string    `db:\"email\" json:\"email\" binding:\"required\"`\n\tPassword string    `db:\"password\" json:\"-\"` // password hash\n\tAdmin    bool      `db:\"admin\" json:\"admin\"`\n\tExternal bool      `db:\"external\" json:\"external\"`\n\tAlert    bool      `db:\"alert\" json:\"alert\"`\n\tPro      bool      `db:\"pro\" json:\"pro\"`\n\n\tTotp     *UserTotp     `db:\"-\" json:\"totp,omitempty\"`\n\tEmailOtp *UserEmailOtp `db:\"-\" json:\"email_otp,omitempty\"`\n}\n\ntype UserTotp struct {\n\tID           int       `db:\"id\" json:\"id\"`\n\tCreated      time.Time `db:\"created\" json:\"created\"`\n\tUserID       int       `db:\"user_id\" json:\"user_id\"`\n\tURL          string    `db:\"url\" json:\"url\"`\n\tRecoveryHash string    `db:\"recovery_hash\" json:\"-\"`\n\tRecoveryCode string    `db:\"-\" json:\"recovery_code,omitempty\"`\n}\n\ntype UserEmailOtp struct {\n\tID      int       `db:\"id\" json:\"id\"`\n\tCreated time.Time `db:\"created\" json:\"created\"`\n\tUserID  int       `db:\"user_id\" json:\"user_id\"`\n\tCode    string    `db:\"code\" json:\"code\"`\n}\n\ntype UserWithProjectRole struct {\n\tRole ProjectUserRole `db:\"role\" json:\"role\"`\n\tUser\n}\n\n// UserWithPwd extends User structure with field for unhashed password received from JSON.\ntype UserWithPwd struct {\n\tPwd string `db:\"-\" json:\"password\"` // unhashed password from JSON\n\tUser\n}\n\nfunc ValidateUser(user User) error {\n\tif user.Username == \"\" {\n\t\treturn &ValidationError{Message: \"Username cannot be empty\"}\n\t}\n\tif user.Email == \"\" {\n\t\treturn &ValidationError{Message: \"Email cannot be empty\"}\n\t}\n\tif user.Name == \"\" {\n\t\treturn &ValidationError{Message: \"Name cannot be empty\"}\n\t}\n\treturn nil\n}\n\nfunc (o *UserEmailOtp) IsExpired() bool {\n\t// Email OTP is valid for 10 minutes\n\treturn tz.Now().Sub(o.Created) > 10*time.Minute\n}\n"
  },
  {
    "path": "db/View.go",
    "content": "package db\n\ntype ViewType string\n\nconst (\n\tViewTypeAll    ViewType = \"all\"\n\tViewTypeCustom ViewType = \"\"\n)\n\ntype View struct {\n\tID          int                `db:\"id\" json:\"id\" backup:\"-\"`\n\tProjectID   int                `db:\"project_id\" json:\"project_id\" backup:\"-\"`\n\tTitle       string             `db:\"title\" json:\"title\"`\n\tPosition    int                `db:\"position\" json:\"position\"`\n\tType        ViewType           `db:\"type\" json:\"type,omitempty\"`\n\tHidden      bool               `db:\"hidden\" json:\"hidden,omitempty\"`\n\tFilter      *MapStringAnyField `db:\"filter\" json:\"filter,omitempty\"`\n\tSortColumn  *string            `db:\"sort_column\" json:\"sort_column,omitempty\"`\n\tSortReverse bool               `db:\"sort_reverse\" json:\"sort_reverse,omitempty\"`\n}\n\nfunc (view *View) Validate() error {\n\tif view.Title == \"\" {\n\t\treturn &ValidationError{\"title can not be empty\"}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "db/ansible.go",
    "content": "package db\n\nimport \"time\"\n\ntype AnsibleTaskHost struct {\n\tID          int       `json:\"id\" db:\"id\"`\n\tTaskID      int       `json:\"task_id\" db:\"task_id\"`\n\tProjectID   int       `json:\"project_id\" db:\"project_id\"`\n\tHost        string    `json:\"host\" db:\"host\"`\n\tChanged     int       `json:\"changed\" db:\"changed\"`\n\tFailed      int       `json:\"failed\" db:\"failed\"`\n\tIgnored     int       `json:\"ignored\" db:\"ignored\"`\n\tOk          int       `json:\"ok\" db:\"ok\"`\n\tRescued     int       `json:\"rescued\" db:\"rescued\"`\n\tSkipped     int       `json:\"skipped\" db:\"skipped\"`\n\tUnreachable int       `json:\"unreachable\" db:\"unreachable\"`\n\tCreated     time.Time `db:\"created\" json:\"created\"`\n}\n\ntype AnsibleTaskError struct {\n\tID        int       `json:\"id\" db:\"id\"`\n\tTaskID    int       `json:\"task_id\" db:\"task_id\"`\n\tProjectID int       `json:\"project_id\" db:\"project_id\"`\n\tHost      string    `json:\"host\" db:\"host\"`\n\tTask      string    `json:\"task\" db:\"task\"`\n\tError     string    `json:\"error\" db:\"error\"`\n\tCreated   time.Time `db:\"created\" json:\"created\"`\n}\n"
  },
  {
    "path": "db/bolt/BoltDb.go",
    "content": "package bolt\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"go.etcd.io/bbolt\"\n)\n\nconst MaxID = 2147483647\n\ntype enumerable interface {\n\tFirst() (key []byte, value []byte)\n\tNext() (key []byte, value []byte)\n}\n\ntype emptyEnumerable struct{}\n\nfunc (d emptyEnumerable) First() (key []byte, value []byte) {\n\treturn nil, nil\n}\n\nfunc (d emptyEnumerable) Next() (key []byte, value []byte) {\n\treturn nil, nil\n}\n\ntype BoltDb struct {\n\tFilename    string\n\tdb          *bbolt.DB\n\tconnections map[string]bool\n\tmu          sync.Mutex\n\n\tintegrationAlias publicAlias\n\tterraformAlias   publicAlias\n}\n\nfunc (d *BoltDb) GetDialect() string {\n\treturn util.DbDriverBolt\n}\n\nvar terraformAliasProps = db.ObjectProps{\n\tTableName:         \"terraform_alias\",\n\tType:              reflect.TypeOf(db.TerraformInventoryAlias{}),\n\tPrimaryColumnName: \"alias\",\n}\n\nfunc CreateBoltDB() *BoltDb {\n\tres := BoltDb{}\n\tres.integrationAlias = publicAlias{\n\t\taliasProps:       db.IntegrationAliasProps,\n\t\tpublicAliasProps: integrationAliasProps,\n\t\tdb:               &res,\n\t}\n\tres.terraformAlias = publicAlias{\n\t\taliasProps:       db.TerraformInventoryAliasProps,\n\t\tpublicAliasProps: terraformAliasProps,\n\t\tdb:               &res,\n\t}\n\treturn &res\n}\n\ntype objectID interface {\n\tToBytes() []byte\n}\n\ntype intObjectID int\ntype strObjectID string\n\nfunc (d intObjectID) ToBytes() []byte {\n\treturn fmt.Appendf(nil, \"%010d\", d)\n}\n\nfunc (d strObjectID) ToBytes() []byte {\n\treturn []byte(d)\n}\n\nfunc makeBucketId(props db.ObjectProps, ids ...int) []byte {\n\tn := len(ids)\n\n\tid := props.TableName\n\n\tif !props.IsGlobal {\n\t\tfor i := 0; i < n; i++ {\n\t\t\tid += fmt.Sprintf(\"_%010d\", ids[i])\n\t\t}\n\t}\n\n\treturn []byte(id)\n}\n\nfunc (d *BoltDb) openDbFile() {\n\tvar filename string\n\tif d.Filename == \"\" {\n\t\tconfig, err := util.Config.GetDBConfig()\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tfilename = config.GetHostname()\n\t} else {\n\t\tfilename = d.Filename\n\t}\n\n\tvar err error\n\td.db, err = bbolt.Open(filename, 0666, &bbolt.Options{\n\t\tTimeout: 5 * time.Second,\n\t})\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc (d *BoltDb) openSession(token string) {\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\n\tif d.connections == nil {\n\t\td.connections = make(map[string]bool)\n\t}\n\n\tif _, exists := d.connections[token]; exists {\n\t\t// Use for debugging\n\t\tpanic(fmt.Errorf(\"connection %s already exists\", token))\n\t}\n\n\tif len(d.connections) > 0 {\n\t\td.connections[token] = true\n\t\treturn\n\t}\n\n\td.openDbFile()\n\n\td.connections[token] = true\n}\n\nfunc (d *BoltDb) Connect(token string) {\n\tif d.PermanentConnection() {\n\t\td.openDbFile()\n\t} else {\n\t\td.openSession(token)\n\t}\n}\n\nfunc (d *BoltDb) closeSession(token string) {\n\td.mu.Lock()\n\tdefer d.mu.Unlock()\n\n\t_, exists := d.connections[token]\n\n\tif !exists {\n\t\t// Use for debugging\n\t\tpanic(fmt.Errorf(\"can not close closed connection %s\", token))\n\t}\n\n\tif len(d.connections) > 1 {\n\t\tdelete(d.connections, token)\n\t\treturn\n\t}\n\n\terr := d.db.Close()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\td.db = nil\n\tdelete(d.connections, token)\n}\n\nfunc (d *BoltDb) Close(token string) {\n\tif d.PermanentConnection() {\n\t\tif err := d.db.Close(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t} else {\n\t\td.closeSession(token)\n\t}\n}\n\nfunc (d *BoltDb) PermanentConnection() bool {\n\tconfig, err := util.Config.GetDBConfig()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tisSessionConnection, ok := config.Options[\"sessionConnection\"]\n\n\tif ok && (isSessionConnection == \"true\" || isSessionConnection == \"yes\") {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc (d *BoltDb) IsInitialized() (initialized bool, err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tk, _ := tx.Cursor().First()\n\t\tinitialized = k != nil\n\t\treturn nil\n\t})\n\treturn\n}\n\nfunc (d *BoltDb) getObjectTx(tx *bbolt.Tx, bucketID int, props db.ObjectProps, objectID objectID, object any) (err error) {\n\tb := tx.Bucket(makeBucketId(props, bucketID))\n\tif b == nil {\n\t\treturn db.ErrNotFound\n\t}\n\n\tstr := b.Get(objectID.ToBytes())\n\tif str == nil {\n\t\treturn db.ErrNotFound\n\t}\n\n\treturn unmarshalObject(str, object, props.SelectColumns)\n}\n\nfunc (d *BoltDb) getObject(bucketID int, props db.ObjectProps, objectID objectID, object any) (err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\treturn d.getObjectTx(tx, bucketID, props, objectID, object)\n\t})\n\n\treturn\n}\n\n// getFieldNameByTagSuffix tries to find field by tag name and value in provided type.\n// It returns error if field not found.\nfunc getFieldNameByTagSuffix(t reflect.Type, tagName string, tagValueSuffix string) (string, error) {\n\tn := t.NumField()\n\tfor i := 0; i < n; i++ {\n\t\tif strings.HasSuffix(t.Field(i).Tag.Get(tagName), tagValueSuffix) {\n\t\t\treturn t.Field(i).Name, nil\n\t\t}\n\t}\n\tfor i := 0; i < n; i++ {\n\t\tif t.Field(i).Tag != \"\" || t.Field(i).Type.Kind() != reflect.Struct {\n\t\t\tcontinue\n\t\t}\n\t\tstr, err := getFieldNameByTagSuffix(t.Field(i).Type, tagName, tagValueSuffix)\n\t\tif err == nil {\n\t\t\treturn str, nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"field not found\")\n}\n\nfunc sortObjects(objects any, sortBy string, sortInverted bool) error {\n\tobjectsValue := reflect.ValueOf(objects).Elem()\n\tobjType := objectsValue.Type().Elem()\n\n\tfieldName, err := getFieldNameByTagSuffix(objType, \"db\", sortBy)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tsort.SliceStable(objectsValue.Interface(), func(i, j int) bool {\n\t\tvalueI := objectsValue.Index(i).FieldByName(fieldName)\n\t\tvalueJ := objectsValue.Index(j).FieldByName(fieldName)\n\n\t\tless := false\n\n\t\tswitch valueI.Kind() {\n\t\tcase reflect.Int,\n\t\t\treflect.Int8,\n\t\t\treflect.Int16,\n\t\t\treflect.Int32,\n\t\t\treflect.Int64,\n\t\t\treflect.Uint,\n\t\t\treflect.Uint8,\n\t\t\treflect.Uint16,\n\t\t\treflect.Uint32,\n\t\t\treflect.Uint64:\n\t\t\tless = valueI.Int() < valueJ.Int()\n\t\tcase reflect.Float32:\n\t\tcase reflect.Float64:\n\t\t\tless = valueI.Float() < valueJ.Float()\n\t\tcase reflect.String:\n\t\t\tless = valueI.String() < valueJ.String()\n\t\t}\n\n\t\tif sortInverted {\n\t\t\tless = !less\n\t\t}\n\n\t\treturn less\n\t})\n\n\treturn nil\n}\n\nfunc createObjectType(t reflect.Type) reflect.Type {\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t}\n\n\tn := t.NumField()\n\n\tfields := make([]reflect.StructField, n)\n\n\tfor i := 0; i < n; i++ {\n\t\tf := t.Field(i)\n\t\ttag := f.Tag.Get(\"db\")\n\t\tif tag != \"\" {\n\t\t\tf.Tag = reflect.StructTag(`json:\"` + tag + `\"`)\n\t\t} else {\n\t\t\tif f.Type.Kind() == reflect.Struct {\n\t\t\t\tf.Type = createObjectType(f.Type)\n\t\t\t}\n\t\t}\n\t\tfields[i] = f\n\t}\n\n\treturn reflect.StructOf(fields)\n}\n\nfunc unmarshalObject(data []byte, obj any, fields []string) error {\n\tnewType := createObjectType(reflect.TypeOf(obj))\n\tptr := reflect.New(newType).Interface()\n\n\terr := json.Unmarshal(data, ptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvalue := reflect.ValueOf(ptr).Elem()\n\n\tobjValue := reflect.ValueOf(obj).Elem()\n\n\tneedFieldFilter := len(fields) > 0\n\n\tif needFieldFilter {\n\t\tfieldMap := make(map[string]struct{}, len(fields))\n\t\tfor _, field := range fields {\n\t\t\tfieldMap[field] = struct{}{}\n\t\t}\n\n\t\tfor i := 0; i < newType.NumField(); i++ {\n\t\t\tfieldName := newType.Field(i).Tag.Get(\"json\")\n\t\t\tif _, exists := fieldMap[fieldName]; !exists {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tobjValue.Field(i).Set(value.Field(i))\n\t\t}\n\t} else {\n\t\tfor i := 0; i < newType.NumField(); i++ {\n\t\t\tobjValue.Field(i).Set(value.Field(i))\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc copyObject(obj any, newType reflect.Type) any {\n\tnewValue := reflect.New(newType).Elem()\n\n\toldValue := reflect.ValueOf(obj)\n\n\tfor i := 0; i < newType.NumField(); i++ {\n\t\tvar v any\n\t\tif newValue.Field(i).Kind() == reflect.Struct &&\n\t\t\tnewValue.Field(i).Type().PkgPath() == \"\" {\n\t\t\tv = copyObject(oldValue.Field(i).Interface(), newValue.Field(i).Type())\n\t\t} else {\n\t\t\tv = oldValue.Field(i).Interface()\n\t\t}\n\t\tnewValue.Field(i).Set(reflect.ValueOf(v))\n\t}\n\n\treturn newValue.Interface()\n}\n\nfunc marshalObject(obj any) ([]byte, error) {\n\tnewType := createObjectType(reflect.TypeOf(obj))\n\treturn json.Marshal(copyObject(obj, newType))\n}\n\nfunc apply(\n\trawData enumerable,\n\tprops db.ObjectProps,\n\tparams db.RetrieveQueryParams,\n\tfilter func(any) bool,\n\tapplier func(any) error,\n) (err error) {\n\tobjType := props.Type\n\n\ti := 0 // offset counter\n\tn := 0 // number of added items\n\n\tfor k, v := rawData.First(); k != nil; k, v = rawData.Next() {\n\t\tif params.Offset > 0 && i < params.Offset {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\ttmp := reflect.New(objType)\n\t\tptr := tmp.Interface()\n\t\terr = unmarshalObject(v, ptr, props.SelectColumns)\n\t\tobj := reflect.ValueOf(ptr).Elem().Interface()\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif len(props.Ownerships) > 0 {\n\n\t\t\townershipMatched := true\n\n\t\t\tfor _, ownership := range props.Ownerships {\n\t\t\t\tif params.Ownership.WithoutOwnerOnly {\n\t\t\t\t\tif f, ok := getReferredValue(*ownership, obj); ok && !f.IsZero() {\n\t\t\t\t\t\townershipMatched = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\townerID := params.Ownership.GetOwnerID(*ownership)\n\t\t\t\t\tif ownerID != nil && !isObjectReferredBy(*ownership, intObjectID(*ownerID), obj) {\n\t\t\t\t\t\townershipMatched = false\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !ownershipMatched {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif filter != nil && !filter(obj) {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = applier(obj)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tn++\n\n\t\tif params.Count > 0 && n >= params.Count {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) count(bucketID int, props db.ObjectProps, params db.RetrieveQueryParams, filter func(any) bool) (n int, err error) {\n\tn = 0\n\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket(makeBucketId(props, bucketID))\n\t\tif b == nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\n\t\tc := b.Cursor()\n\n\t\treturn apply(c, db.TaskProps, params, filter, func(i any) error {\n\t\t\tn++\n\t\t\treturn nil\n\t\t})\n\t})\n\n\treturn\n}\n\nfunc unmarshalObjects(rawData enumerable, props db.ObjectProps, params db.RetrieveQueryParams, filter func(any) bool, objects any) (err error) {\n\tobjectsValue := reflect.ValueOf(objects).Elem()\n\n\tobjectsValue.Set(reflect.MakeSlice(objectsValue.Type(), 0, 0))\n\n\terr = apply(rawData, props, params, filter, func(i any) error {\n\t\tnewObjectValues := reflect.Append(objectsValue, reflect.ValueOf(i))\n\t\tobjectsValue.Set(newObjectValues)\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tsortable := false\n\n\tif params.SortBy != \"\" {\n\t\tfor _, v := range props.SortableColumns {\n\t\t\tif v == params.SortBy {\n\t\t\t\tsortable = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\tif sortable {\n\t\terr = sortObjects(objects, params.SortBy, params.SortInverted)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) getObjectsTx(tx *bbolt.Tx, bucketID int, props db.ObjectProps, params db.RetrieveQueryParams, filter func(any) bool, objects any) error {\n\tb := tx.Bucket(makeBucketId(props, bucketID))\n\tvar c enumerable\n\tif b == nil {\n\t\tc = emptyEnumerable{}\n\t} else {\n\t\tc = b.Cursor()\n\t}\n\treturn unmarshalObjects(c, props, params, filter, objects)\n}\n\nfunc (d *BoltDb) getObjects(bucketID int, props db.ObjectProps, params db.RetrieveQueryParams, filter func(any) bool, objects any) error {\n\treturn d.db.View(func(tx *bbolt.Tx) error {\n\t\treturn d.getObjectsTx(tx, bucketID, props, params, filter, objects)\n\t})\n}\n\nfunc (d *BoltDb) apply(bucketID int, props db.ObjectProps, params db.RetrieveQueryParams, applier func(any) error) error {\n\treturn d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket(makeBucketId(props, bucketID))\n\t\tvar c enumerable\n\t\tif b == nil {\n\t\t\tc = emptyEnumerable{}\n\t\t} else {\n\t\t\tc = b.Cursor()\n\t\t}\n\n\t\treturn apply(c, props, params, nil, applier)\n\t})\n}\n\nfunc (d *BoltDb) deleteObject(bucketID int, props db.ObjectProps, objectID objectID, tx *bbolt.Tx) error {\n\tfor _, u := range []db.ObjectProps{db.TemplateProps, db.EnvironmentProps, db.InventoryProps, db.RepositoryProps} {\n\t\tinUse, err := d.isObjectInUse(bucketID, props, objectID, u)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif inUse {\n\t\t\treturn db.ErrInvalidOperation\n\t\t}\n\t}\n\n\tfn := func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket(makeBucketId(props, bucketID))\n\t\tif b == nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\t\treturn b.Delete(objectID.ToBytes())\n\t}\n\n\tif tx != nil {\n\t\treturn fn(tx)\n\t}\n\n\treturn d.db.Update(fn)\n}\n\nfunc (d *BoltDb) updateObjectTx(tx *bbolt.Tx, bucketID int, props db.ObjectProps, object any) error {\n\tb := tx.Bucket(makeBucketId(props, bucketID))\n\tif b == nil {\n\t\treturn db.ErrNotFound\n\t}\n\n\tidFieldName, err := getFieldNameByTagSuffix(reflect.TypeOf(object), \"db\", props.PrimaryColumnName)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tidValue := reflect.ValueOf(object).FieldByName(idFieldName)\n\n\tvar objID objectID\n\n\tswitch idValue.Kind() {\n\tcase reflect.Int,\n\t\treflect.Int8,\n\t\treflect.Int16,\n\t\treflect.Int32,\n\t\treflect.Int64,\n\t\treflect.Uint,\n\t\treflect.Uint8,\n\t\treflect.Uint16,\n\t\treflect.Uint32,\n\t\treflect.Uint64:\n\t\tobjID = intObjectID(idValue.Int())\n\tcase reflect.String:\n\t\tobjID = strObjectID(idValue.String())\n\t}\n\n\tif objID == nil {\n\t\treturn fmt.Errorf(\"unsupported ID type\")\n\t}\n\n\tif b.Get(objID.ToBytes()) == nil {\n\t\treturn db.ErrNotFound\n\t}\n\n\tstr, err := marshalObject(object)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn b.Put(objID.ToBytes(), str)\n}\n\n// updateObject updates data for object in database.\nfunc (d *BoltDb) updateObject(bucketID int, props db.ObjectProps, object any) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.updateObjectTx(tx, bucketID, props, object)\n\t})\n}\n\nfunc (d *BoltDb) createObjectTx(tx *bbolt.Tx, bucketID int, props db.ObjectProps, object any) (any, error) {\n\tb, err := tx.CreateBucketIfNotExists(makeBucketId(props, bucketID))\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tobjPtr := reflect.ValueOf(&object).Elem()\n\n\ttmpObj := reflect.New(objPtr.Elem().Type()).Elem()\n\ttmpObj.Set(objPtr.Elem())\n\n\tvar objID objectID\n\n\tif props.PrimaryColumnName != \"\" {\n\t\tidFieldName, err2 := getFieldNameByTagSuffix(reflect.TypeOf(object), \"db\", props.PrimaryColumnName)\n\n\t\tif err2 != nil {\n\t\t\treturn nil, err2\n\t\t}\n\n\t\tidValue := tmpObj.FieldByName(idFieldName)\n\n\t\tswitch idValue.Kind() {\n\t\tcase reflect.Int,\n\t\t\treflect.Int8,\n\t\t\treflect.Int16,\n\t\t\treflect.Int32,\n\t\t\treflect.Int64,\n\t\t\treflect.Uint,\n\t\t\treflect.Uint8,\n\t\t\treflect.Uint16,\n\t\t\treflect.Uint32,\n\t\t\treflect.Uint64:\n\t\t\tif idValue.Int() == 0 {\n\t\t\t\tid, err3 := b.NextSequence()\n\t\t\t\tif err3 != nil {\n\t\t\t\t\treturn nil, err3\n\t\t\t\t}\n\t\t\t\tif props.SortInverted {\n\t\t\t\t\tid = MaxID - id\n\t\t\t\t}\n\t\t\t\tidValue.SetInt(int64(id))\n\t\t\t}\n\n\t\t\tobjID = intObjectID(idValue.Int())\n\t\tcase reflect.String:\n\t\t\tif idValue.String() == \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"object ID can not be empty string\")\n\t\t\t}\n\t\t\tobjID = strObjectID(idValue.String())\n\t\tcase reflect.Invalid:\n\t\t\tid, err3 := b.NextSequence()\n\t\t\tif err3 != nil {\n\t\t\t\treturn nil, err3\n\t\t\t}\n\t\t\tobjID = intObjectID(id)\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported ID type\")\n\t\t}\n\t} else {\n\t\tid, err2 := b.NextSequence()\n\t\tif err2 != nil {\n\t\t\treturn nil, err2\n\t\t}\n\t\tif props.SortInverted {\n\t\t\tid = MaxID - id\n\t\t}\n\t\tobjID = intObjectID(id)\n\t}\n\n\tif objID == nil {\n\t\treturn nil, fmt.Errorf(\"object ID can not be nil\")\n\t}\n\n\tobjPtr.Set(tmpObj)\n\tstr, err := marshalObject(object)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn object, b.Put(objID.ToBytes(), str)\n}\n\nfunc (d *BoltDb) createObject(bucketID int, props db.ObjectProps, object any) (res any, err error) {\n\n\t_ = d.db.Update(func(tx *bbolt.Tx) error {\n\t\tres, err = d.createObjectTx(tx, bucketID, props, object)\n\t\treturn err\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) getIntegrationRefs(projectID int, objectProps db.ObjectProps, objectID int) (refs db.IntegrationReferrers, err error) {\n\t//refs.IntegrationExtractors, err = d.getReferringObjectByParentID(projectID, objectProps, objectID, db.IntegrationExtractorProps)\n\n\treturn\n}\n\nfunc (d *BoltDb) getIntegrationExtractorChildrenRefs(integrationID int, objectProps db.ObjectProps, objectID int) (refs db.IntegrationExtractorChildReferrers, err error) {\n\t//refs.IntegrationExtractors, err = d.getReferringObjectByParentID(objectID, objectProps, integrationID, db.IntegrationExtractorProps)\n\t//if err != nil {\n\t//\treturn\n\t//}\n\n\treturn\n}\n\nfunc (d *BoltDb) getReferringObjectByParentID(parentID int, objProps db.ObjectProps, objID int, referringObjectProps db.ObjectProps) (referringObjs []db.ObjectReferrer, err error) {\n\treferringObjs = make([]db.ObjectReferrer, 0)\n\n\tvar referringObjectOfType = reflect.New(reflect.SliceOf(referringObjectProps.Type))\n\terr = d.getObjects(parentID, referringObjectProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\treturn isObjectReferredBy(objProps, intObjectID(objID), referringObj)\n\t}, referringObjectOfType.Interface())\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor i := 0; i < referringObjectOfType.Elem().Len(); i++ {\n\t\treferringObjs = append(referringObjs, db.ObjectReferrer{\n\t\t\tID:   int(referringObjectOfType.Elem().Index(i).FieldByName(\"ID\").Int()),\n\t\t\tName: referringObjectOfType.Elem().Index(i).FieldByName(\"Name\").String(),\n\t\t})\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) getObjectRefs(projectID int, objectProps db.ObjectProps, objectID int) (refs db.ObjectReferrers, err error) {\n\trefs.Templates, err = d.getObjectRefsFrom(projectID, objectProps, intObjectID(objectID), db.TemplateProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Repositories, err = d.getObjectRefsFrom(projectID, objectProps, intObjectID(objectID), db.RepositoryProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Inventories, err = d.getObjectRefsFrom(projectID, objectProps, intObjectID(objectID), db.InventoryProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Schedules, err = d.getObjectRefsFrom(projectID, objectProps, intObjectID(objectID), db.ScheduleProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Integrations, err = d.getObjectRefsFrom(projectID, objectProps, intObjectID(objectID), db.IntegrationProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) getObjectRefsFrom(projectID int, objProps db.ObjectProps, objID objectID, referringObjectProps db.ObjectProps) (referringObjs []db.ObjectReferrer, err error) {\n\treferringObjs = make([]db.ObjectReferrer, 0)\n\t_, err = objProps.GetReferringFieldsFrom(referringObjectProps.Type)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar referringObjects reflect.Value\n\n\tif referringObjectProps.Type == db.ScheduleProps.Type {\n\t\tschedules := make([]db.Schedule, 0)\n\t\terr = d.getObjects(projectID, db.ScheduleProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\t\treturn isObjectReferredBy(objProps, objID, referringObj)\n\t\t}, &schedules)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tfor _, schedule := range schedules {\n\t\t\tvar template db.Template\n\t\t\ttemplate, err = d.GetTemplate(projectID, schedule.TemplateID)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treferringObjs = append(referringObjs, db.ObjectReferrer{\n\t\t\t\tID:   template.ID,\n\t\t\t\tName: template.Name,\n\t\t\t})\n\t\t}\n\t} else {\n\t\treferringObjects = reflect.New(reflect.SliceOf(referringObjectProps.Type))\n\t\terr = d.getObjects(projectID, referringObjectProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\t\treturn isObjectReferredBy(objProps, objID, referringObj)\n\t\t}, referringObjects.Interface())\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tfor i := 0; i < referringObjects.Elem().Len(); i++ {\n\t\t\treferringObjs = append(referringObjs, db.ObjectReferrer{\n\t\t\t\tID:   int(referringObjects.Elem().Index(i).FieldByName(\"ID\").Int()),\n\t\t\t\tName: referringObjects.Elem().Index(i).FieldByName(\"Name\").String(),\n\t\t\t})\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc getReferredValue(props db.ObjectProps, referringObj any) (f reflect.Value, ok bool) {\n\tif props.ReferringColumnSuffix == \"\" {\n\t\tok = false\n\t\treturn\n\t}\n\n\tfieldName, err := getFieldNameByTagSuffix(reflect.TypeOf(referringObj), \"db\", props.ReferringColumnSuffix)\n\n\tif err != nil {\n\t\tok = false\n\t\treturn\n\t}\n\n\tf = reflect.ValueOf(referringObj).FieldByName(fieldName)\n\tok = true\n\treturn\n}\n\nfunc isObjectReferredBy(props db.ObjectProps, objID objectID, referringObj any) bool {\n\tf, ok := getReferredValue(props, referringObj)\n\tif !ok {\n\t\treturn false\n\t}\n\n\t//if props.ReferringColumnSuffix == \"\" {\n\t//\treturn false\n\t//}\n\t//\n\t//fieldName, err := getFieldNameByTagSuffix(reflect.TypeOf(referringObj), \"db\", props.ReferringColumnSuffix)\n\t//\n\t//if err != nil {\n\t//\treturn false\n\t//}\n\t//\n\t//f := reflect.ValueOf(referringObj).FieldByName(fieldName)\n\n\tif f.IsZero() {\n\t\treturn false\n\t}\n\n\tif f.Kind() == reflect.Ptr {\n\t\tif f.IsNil() {\n\t\t\treturn false\n\t\t}\n\n\t\tf = f.Elem()\n\t}\n\n\tvar fVal objectID\n\tswitch f.Kind() {\n\tcase reflect.Int,\n\t\treflect.Int8,\n\t\treflect.Int16,\n\t\treflect.Int32,\n\t\treflect.Int64,\n\t\treflect.Uint,\n\t\treflect.Uint8,\n\t\treflect.Uint16,\n\t\treflect.Uint32,\n\t\treflect.Uint64:\n\t\tfVal = intObjectID(f.Int())\n\tcase reflect.String:\n\t\tfVal = strObjectID(f.String())\n\t}\n\n\tif fVal == nil {\n\t\treturn false\n\t}\n\n\treturn bytes.Equal(fVal.ToBytes(), objID.ToBytes())\n}\n\n// isObjectInUse checks if objID associated with any object in foreignTableProps.\nfunc (d *BoltDb) isObjectInUse(bucketID int, objProps db.ObjectProps, objID objectID, referringObjectProps db.ObjectProps) (inUse bool, err error) {\n\treferringObjects := reflect.New(reflect.SliceOf(referringObjectProps.Type))\n\n\terr = d.getObjects(bucketID, referringObjectProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\treturn isObjectReferredBy(objProps, objID, referringObj)\n\t}, referringObjects.Interface())\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinUse = referringObjects.Elem().Len() > 0\n\n\treturn\n}\n\nvar ErrEndOfRange = errors.New(\"end of range\")\n\nfunc (d *BoltDb) GetTaskStats(projectID int, templateID *int, unit db.TaskStatUnit, filter db.TaskFilter) (stats []db.TaskStat, err error) {\n\n\tif unit != db.TaskStatUnitDay {\n\t\terr = fmt.Errorf(\"only day unit is supported\")\n\t\treturn\n\t}\n\n\tstats = make([]db.TaskStat, 0)\n\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\n\t\tb := tx.Bucket(makeBucketId(db.TaskProps, 0))\n\t\tvar c enumerable\n\t\tif b == nil {\n\t\t\tc = emptyEnumerable{}\n\t\t} else {\n\t\t\tc = b.Cursor()\n\t\t}\n\n\t\tvar date string\n\t\tvar stat *db.TaskStat\n\n\t\terr2 := apply(c, db.TaskProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\t\ttask := i.(db.Task)\n\n\t\t\tif task.ProjectID != projectID {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif templateID != nil && task.TemplateID != *templateID {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif filter.End != nil && task.Created.After(*filter.End) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tif filter.UserID != nil && (task.UserID == nil || *task.UserID != *filter.UserID) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn true\n\t\t}, func(i any) error {\n\n\t\t\ttask := i.(db.Task)\n\n\t\t\tcreated := task.Created.Format(\"2006-01-02\")\n\n\t\t\tif created < filter.Start.Format(\"2006-01-02\") {\n\t\t\t\treturn ErrEndOfRange\n\t\t\t}\n\n\t\t\tif date != created {\n\t\t\t\tdate = created\n\t\t\t\tstat = &db.TaskStat{\n\t\t\t\t\tDate:          date,\n\t\t\t\t\tCountByStatus: make(map[task_logger.TaskStatus]int),\n\t\t\t\t}\n\t\t\t\tstats = append(stats, *stat)\n\t\t\t}\n\n\t\t\tif _, ok := stat.CountByStatus[task.Status]; !ok {\n\t\t\t\tstat.CountByStatus[task.Status] = 0\n\t\t\t}\n\n\t\t\tstat.CountByStatus[task.Status]++\n\n\t\t\treturn nil\n\t\t})\n\n\t\tif errors.Is(err2, ErrEndOfRange) {\n\t\t\treturn nil\n\t\t}\n\n\t\treturn err2\n\t})\n\n\treturn\n}\n\nfunc CreateTestStore() *BoltDb {\n\tutil.Config = &util.ConfigType{\n\t\tBoltDb:  &util.DbConfig{},\n\t\tDialect: \"bolt\",\n\t\tLog: &util.ConfigLog{\n\t\t\tEvents: &util.EventLogType{},\n\t\t\tTasks:  &util.TaskLogType{},\n\t\t},\n\t}\n\n\tfn := \"/tmp/test_semaphore_db_\" + util.RandString(5)\n\tstore := CreateBoltDB()\n\n\tstore.Filename = fn\n\tstore.Connect(\"test\")\n\treturn store\n}\n"
  },
  {
    "path": "db/bolt/BoltDb_test.go",
    "content": "package bolt\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/require\"\n)\n\ntype test1 struct {\n\tID             int    `db:\"ID\"`\n\tFirstName      string `db:\"first_name\" json:\"firstName\"`\n\tLastName       string `db:\"last_name\" json:\"lastName\"`\n\tPassword       string `db:\"-\" json:\"password\"`\n\tPasswordRepeat string `db:\"-\" json:\"passwordRepeat\"`\n\tPasswordHash   string `db:\"password\" json:\"-\"`\n\tRemoved        bool   `db:\"removed\"`\n}\n\nvar inventoryID = 10\nvar environmentID = 10\n\nfunc TestMarshalObject_UserWithPwd(t *testing.T) {\n\tuser := db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tUsername: \"fiftin\",\n\t\t\tPassword: \"345345234523452345234\",\n\t\t},\n\t}\n\n\tbytes, err := marshalObject(user)\n\trequire.NoError(t, err)\n\n\tstr := string(bytes)\n\texpected := `{\"id\":0,\"created\":\"0001-01-01T00:00:00Z\",\"username\":\"fiftin\",\"name\":\"\",\"email\":\"\",\"password\":\"345345234523452345234\",\"admin\":false,\"external\":false,\"alert\":false,\"pro\":false}`\n\tassert.Equal(t, expected, str)\n\n\tfmt.Println(str)\n}\n\nfunc TestMarshalObject(t *testing.T) {\n\ttest1 := test1{\n\t\tFirstName:      \"Denis\",\n\t\tLastName:       \"Gukov\",\n\t\tPassword:       \"1234556\",\n\t\tPasswordRepeat: \"123456\",\n\t\tPasswordHash:   \"9347502348723\",\n\t}\n\n\tbytes, err := marshalObject(test1)\n\trequire.NoError(t, err)\n\n\tstr := string(bytes)\n\texpected := `{\"ID\":0,\"first_name\":\"Denis\",\"last_name\":\"Gukov\",\"password\":\"9347502348723\",\"removed\":false}`\n\tassert.Equal(t, expected, str)\n\n\tfmt.Println(str)\n}\n\nfunc TestUnmarshalObject(t *testing.T) {\n\ttest1 := test1{}\n\tdata := `{\n\t\"first_name\": \"Denis\", \n\t\"last_name\": \"Gukov\",\n\t\"password\": \"9347502348723\"\n}`\n\terr := unmarshalObject([]byte(data), &test1, nil)\n\trequire.NoError(t, err)\n\n\tassert.Equal(t, \"Denis\", test1.FirstName)\n\tassert.Equal(t, \"Gukov\", test1.LastName)\n\tassert.Equal(t, \"\", test1.Password)\n\tassert.Equal(t, \"\", test1.PasswordRepeat)\n\tassert.Equal(t, \"9347502348723\", test1.PasswordHash)\n}\n\nfunc TestSortObjects(t *testing.T) {\n\tobjects := []db.Inventory{\n\t\t{ID: 1, Name: \"x\"},\n\t\t{ID: 2, Name: \"a\"},\n\t\t{ID: 3, Name: \"d\"},\n\t\t{ID: 4, Name: \"b\"},\n\t\t{ID: 5, Name: \"r\"},\n\t}\n\n\terr := sortObjects(&objects, \"name\", false)\n\trequire.NoError(t, err)\n\n\texpected := []string{\"a\", \"b\", \"d\", \"r\", \"x\"}\n\tfor i, obj := range objects {\n\t\tassert.Equal(t, expected[i], obj.Name)\n\t}\n}\n\nfunc TestGetFieldNameByTag(t *testing.T) {\n\tf, err := getFieldNameByTagSuffix(reflect.TypeOf(test1{}), \"db\", \"first_name\")\n\trequire.NoError(t, err)\n\tassert.Equal(t, \"FirstName\", f)\n}\n\nfunc TestGetFieldNameByTag2(t *testing.T) {\n\tf, err := getFieldNameByTagSuffix(reflect.TypeOf(db.UserWithPwd{}), \"db\", \"id\")\n\trequire.NoError(t, err)\n\tassert.Equal(t, \"ID\", f)\n}\n\nfunc TestIsObjectInUse(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{Name: \"test\"})\n\trequire.NoError(t, err)\n\n\t_, err = store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tInventoryID:   &inventoryID,\n\t\tEnvironmentID: &environmentID,\n\t})\n\trequire.NoError(t, err)\n\n\tisUse, err := store.isObjectInUse(proj.ID, db.InventoryProps, intObjectID(10), db.TemplateProps)\n\trequire.NoError(t, err)\n\tassert.True(t, isUse)\n}\n\nfunc TestIsObjectInUse_Environment(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{Name: \"test\"})\n\trequire.NoError(t, err)\n\n\t_, err = store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tInventoryID:   &inventoryID,\n\t\tEnvironmentID: &environmentID,\n\t})\n\trequire.NoError(t, err)\n\n\tisUse, err := store.isObjectInUse(proj.ID, db.EnvironmentProps, intObjectID(10), db.TemplateProps)\n\trequire.NoError(t, err)\n\tassert.True(t, isUse)\n}\n\nfunc TestIsObjectInUse_EnvironmentNil(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{Name: \"test\"})\n\trequire.NoError(t, err)\n\n\t_, err = store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tInventoryID:   &inventoryID,\n\t\tEnvironmentID: nil,\n\t})\n\trequire.NoError(t, err)\n\n\tisUse, err := store.isObjectInUse(proj.ID, db.EnvironmentProps, intObjectID(10), db.TemplateProps)\n\trequire.NoError(t, err)\n\tassert.False(t, isUse)\n}\n\nfunc TestBoltDb_CreateAPIToken(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tuser, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"3412341234123\",\n\t\tUser: db.User{\n\t\t\tUsername: \"test\",\n\t\t\tName:     \"Test\",\n\t\t\tEmail:    \"test@example.com\",\n\t\t\tAdmin:    true,\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\ttoken, err := store.CreateAPIToken(db.APIToken{\n\t\tID:     \"f349gyhgqirgysfgsfg34973dsfad\",\n\t\tUserID: user.ID,\n\t})\n\trequire.NoError(t, err)\n\n\ttoken2, err := store.GetAPIToken(token.ID)\n\trequire.NoError(t, err)\n\tassert.Equal(t, token.ID, token2.ID)\n\n\ttokens, err := store.GetAPITokens(user.ID)\n\trequire.NoError(t, err)\n\tassert.Len(t, tokens, 1)\n\tassert.Equal(t, token.ID, tokens[0].ID)\n\n\terr = store.ExpireAPIToken(user.ID, token.ID)\n\trequire.NoError(t, err)\n\n\ttoken2, err = store.GetAPIToken(token.ID)\n\trequire.NoError(t, err)\n\tassert.True(t, token2.Expired)\n\n\terr = store.DeleteAPIToken(user.ID, token.ID)\n\trequire.NoError(t, err)\n\n\t_, err = store.GetAPIToken(token.ID)\n\tassert.Error(t, err)\n}\n\nfunc TestBoltDb_GetRepositoryRefs(t *testing.T) {\n\tstore := CreateTestStore()\n\n\trepo1, err := store.CreateRepository(db.Repository{\n\t\tName:      \"repo1\",\n\t\tGitURL:    \"git@example.com/repo1\",\n\t\tGitBranch: \"master\",\n\t\tProjectID: 1,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = store.CreateTemplate(db.Template{\n\t\tType:          db.TemplateBuild,\n\t\tName:          \"tpl1\",\n\t\tPlaybook:      \"build.yml\",\n\t\tRepositoryID:  repo1.ID,\n\t\tProjectID:     1,\n\t\tInventoryID:   &inventoryID,\n\t\tEnvironmentID: &environmentID,\n\t})\n\trequire.NoError(t, err)\n\n\ttpl2, err := store.CreateTemplate(db.Template{\n\t\tType:          db.TemplateBuild,\n\t\tName:          \"tpl12\",\n\t\tPlaybook:      \"build.yml\",\n\t\tProjectID:     1,\n\t\tInventoryID:   &inventoryID,\n\t\tEnvironmentID: &environmentID,\n\t})\n\trequire.NoError(t, err)\n\n\t_, err = store.CreateSchedule(db.Schedule{\n\t\tCronFormat:   \"* * * * *\",\n\t\tTemplateID:   tpl2.ID,\n\t\tProjectID:    1,\n\t\tRepositoryID: &repo1.ID,\n\t})\n\trequire.NoError(t, err)\n\n\trefs, err := store.GetRepositoryRefs(1, repo1.ID)\n\trequire.NoError(t, err)\n\tassert.Len(t, refs.Templates, 1)\n\tassert.Len(t, refs.Schedules, 1)\n}\n"
  },
  {
    "path": "db/bolt/Task_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"testing\"\n)\n\nfunc TestTask_GetVersion(t *testing.T) {\n\tVERSION := \"1.54.48\"\n\n\tinvID := 0\n\n\tstore := CreateTestStore()\n\n\tbuild, err := store.CreateTemplate(db.Template{\n\t\tProjectID:   0,\n\t\tType:        db.TemplateBuild,\n\t\tName:        \"Build\",\n\t\tPlaybook:    \"build.yml\",\n\t\tInventoryID: &invID,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdeploy, err := store.CreateTemplate(db.Template{\n\t\tProjectID:       0,\n\t\tType:            db.TemplateDeploy,\n\t\tBuildTemplateID: &build.ID,\n\t\tName:            \"Deploy\",\n\t\tPlaybook:        \"deploy.yml\",\n\t\tInventoryID:     &invID,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdeploy2, err := store.CreateTemplate(db.Template{\n\t\tProjectID:       0,\n\t\tType:            db.TemplateDeploy,\n\t\tBuildTemplateID: &deploy.ID,\n\t\tName:            \"Deploy2\",\n\t\tPlaybook:        \"deploy2.yml\",\n\t\tInventoryID:     &invID,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tbuildTask, err := store.CreateTask(db.Task{\n\t\tProjectID:  0,\n\t\tTemplateID: build.ID,\n\t\tVersion:    &VERSION,\n\t}, 0)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdeployTask, err := store.CreateTask(db.Task{\n\t\tProjectID:   0,\n\t\tTemplateID:  deploy.ID,\n\t\tBuildTaskID: &buildTask.ID,\n\t}, 0)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tdeploy2Task, err := store.CreateTask(db.Task{\n\t\tProjectID:   0,\n\t\tTemplateID:  deploy2.ID,\n\t\tBuildTaskID: &deployTask.ID,\n\t}, 0)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tversion := deployTask.GetIncomingVersion(store)\n\tif version == nil {\n\t\tt.Fatal()\n\t\treturn\n\t}\n\tif *version != VERSION {\n\t\tt.Fatal()\n\t\treturn\n\t}\n\n\tversion = deploy2Task.GetIncomingVersion(store)\n\tif version == nil {\n\t\tt.Fatal()\n\t\treturn\n\t}\n\tif *version != VERSION {\n\t\tt.Fatal()\n\t\treturn\n\t}\n}\n"
  },
  {
    "path": "db/bolt/access_key.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *BoltDb) GetAccessKey(projectID int, accessKeyID int) (key db.AccessKey, err error) {\n\terr = d.getObject(projectID, db.AccessKeyProps, intObjectID(accessKeyID), &key)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetAccessKeyRefs(projectID int, accessKeyID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.AccessKeyProps, accessKeyID)\n}\n\nfunc (d *BoltDb) GetAccessKeys(projectID int, options db.GetAccessKeyOptions, params db.RetrieveQueryParams) ([]db.AccessKey, error) {\n\tvar keys []db.AccessKey\n\terr := d.getObjects(projectID, db.AccessKeyProps, params, func(i any) bool {\n\t\tk := i.(db.AccessKey)\n\t\treturn k.Owner == db.AccessKeyShared\n\t}, &keys)\n\treturn keys, err\n}\n\nfunc (d *BoltDb) UpdateAccessKey(key db.AccessKey) error {\n\terr := key.Validate(key.OverrideSecret)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif key.OverrideSecret {\n\t\t//err = key.SerializeSecret()\n\t\t//if err != nil {\n\t\t//\treturn err\n\t\t//}\n\t} else { // accept only new name, ignore other changes\n\t\toldKey, err2 := d.GetAccessKey(*key.ProjectID, key.ID)\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t\toldKey.Name = key.Name\n\t\tkey = oldKey\n\t}\n\n\treturn d.updateObject(*key.ProjectID, db.AccessKeyProps, key)\n}\n\nfunc (d *BoltDb) CreateAccessKey(key db.AccessKey) (db.AccessKey, error) {\n\tnewKey, err := d.createObject(*key.ProjectID, db.AccessKeyProps, key)\n\treturn newKey.(db.AccessKey), err\n}\n\nfunc (d *BoltDb) DeleteAccessKey(projectID int, accessKeyID int) error {\n\treturn d.deleteObject(projectID, db.AccessKeyProps, intObjectID(accessKeyID), nil)\n}\n\nfunc (d *BoltDb) RekeyAccessKeys(oldKey string) error {\n\treturn nil\n\n\t//return d.db.Update(func(tx *bbolt.Tx) error {\n\t//\tvar allProjects []db.Project\n\t//\n\t//\terr := d.getObjectsTx(tx, 0, db.ProjectProps, db.RetrieveQueryParams{}, nil, &allProjects)\n\t//\n\t//\tif err != nil {\n\t//\t\treturn err\n\t//\t}\n\t//\n\t//\tfor _, project := range allProjects {\n\t//\t\tvar keys []db.AccessKey\n\t//\t\terr = d.getObjectsTx(tx, project.ID, db.AccessKeyProps, db.RetrieveQueryParams{}, nil, &keys)\n\t//\t\tif err != nil {\n\t//\t\t\treturn err\n\t//\t\t}\n\t//\n\t//\t\tfor _, key := range keys {\n\t//\t\t\terr = key.DeserializeSecret2(oldKey)\n\t//\n\t//\t\t\tif err != nil {\n\t//\t\t\t\treturn err\n\t//\t\t\t}\n\t//\n\t//\t\t\terr = key.SerializeSecret()\n\t//\t\t\tif err != nil {\n\t//\t\t\t\treturn err\n\t//\t\t\t}\n\t//\n\t//\t\t\terr = d.updateObjectTx(tx, *key.ProjectID, db.AccessKeyProps, key)\n\t//\t\t\tif err != nil {\n\t//\t\t\t\treturn err\n\t//\t\t\t}\n\t//\t\t}\n\t//\t}\n\t//\n\t//\treturn nil\n\t//})\n}\n"
  },
  {
    "path": "db/bolt/environment.go",
    "content": "package bolt\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *BoltDb) GetEnvironment(projectID int, environmentID int) (environment db.Environment, err error) {\n\terr = d.getObject(projectID, db.EnvironmentProps, intObjectID(environmentID), &environment)\n\treturn\n}\n\nfunc (d *BoltDb) GetEnvironmentRefs(projectID int, environmentID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.EnvironmentProps, environmentID)\n}\n\nfunc (d *BoltDb) GetEnvironments(projectID int, params db.RetrieveQueryParams) (environment []db.Environment, err error) {\n\terr = d.getObjects(projectID, db.EnvironmentProps, params, nil, &environment)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateEnvironment(env db.Environment) error {\n\terr := env.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn d.updateObject(env.ProjectID, db.EnvironmentProps, env)\n}\n\nfunc (d *BoltDb) CreateEnvironment(env db.Environment) (db.Environment, error) {\n\terr := env.Validate()\n\n\tif err != nil {\n\t\treturn db.Environment{}, err\n\t}\n\n\tnewEnv, err := d.createObject(env.ProjectID, db.EnvironmentProps, env)\n\treturn newEnv.(db.Environment), err\n}\n\nfunc (d *BoltDb) DeleteEnvironment(projectID int, environmentID int) error {\n\treturn d.deleteObject(projectID, db.EnvironmentProps, intObjectID(environmentID), nil)\n}\n\nfunc (d *BoltDb) GetEnvironmentSecrets(projectID int, environmentID int) ([]db.AccessKey, error) {\n\tvar keys []db.AccessKey\n\terr := d.getObjects(projectID, db.AccessKeyProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\tk := i.(db.AccessKey)\n\t\treturn k.EnvironmentID != nil && *k.EnvironmentID == environmentID\n\t}, &keys)\n\treturn keys, err\n}\n"
  },
  {
    "path": "db/bolt/event.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"go.etcd.io/bbolt\"\n)\n\n//func (d *BoltDb) getEventObjectName(evt db.Event) (string, error) {\n//\tif evt.ObjectID == nil || evt.ObjectType == nil {\n//\t\treturn \"\", nil\n//\t}\n//\tswitch *evt.ObjectType {\n//\tcase \"task\":\n//\t\ttask, err := d.GetTask(*evt.ProjectID, *evt.ObjectID)\n//\t\tif err != nil {\n//\t\t\treturn \"\", err\n//\t\t}\n//\t\treturn task.Playbook, nil\n//\tdefault:\n//\t\treturn \"\", nil\n//\t}\n//}\n\n// getEvents filter and sort enumerable object passed via parameter.\nfunc (d *BoltDb) getEvents(c enumerable, params db.RetrieveQueryParams, filter func(db.Event) bool) (events []db.Event, err error) {\n\n\ti := 0 // offset counter\n\tn := 0 // number of added items\n\n\tevents = []db.Event{}\n\n\tfor k, v := c.First(); k != nil; k, v = c.Next() {\n\t\tif params.Offset > 0 && i < params.Offset {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\n\t\tvar evt db.Event\n\t\terr = json.Unmarshal(v, &evt)\n\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\n\t\tif !filter(evt) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif evt.ProjectID != nil {\n\t\t\tvar proj db.Project\n\t\t\tproj, err = d.GetProject(*evt.ProjectID)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tevt.ProjectName = &proj.Name\n\t\t}\n\n\t\tevents = append(events, evt)\n\n\t\tn++\n\n\t\tif n > params.Count {\n\t\t\tbreak\n\t\t}\n\t}\n\n\terr = db.FillEvents(d, events)\n\n\treturn\n}\n\nfunc (d *BoltDb) CreateEvent(evt db.Event) (newEvent db.Event, err error) {\n\tnewEvent = evt\n\tnewEvent.Created = tz.Now()\n\n\terr = d.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err2 := tx.CreateBucketIfNotExists([]byte(\"events\"))\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\n\t\tstr, err2 := json.Marshal(newEvent)\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\n\t\tid, err2 := b.NextSequence()\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\n\t\tid = MaxID - id\n\n\t\treturn b.Put(intObjectID(id).ToBytes(), str)\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) GetUserEvents(userID int, params db.RetrieveQueryParams) (events []db.Event, err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"events\"))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tc := b.Cursor()\n\t\tevents, err = d.getEvents(c, params, func(evt db.Event) bool {\n\t\t\tif evt.ProjectID == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t_, err2 := d.GetProjectUser(*evt.ProjectID, userID)\n\t\t\treturn err2 == nil\n\t\t})\n\n\t\treturn nil\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) GetEvents(projectID int, params db.RetrieveQueryParams) (events []db.Event, err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"events\"))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tc := b.Cursor()\n\t\tevents, err = d.getEvents(c, params, func(evt db.Event) bool {\n\t\t\tif evt.ProjectID == nil {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn *evt.ProjectID == projectID\n\t\t})\n\n\t\treturn nil\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) GetAllEvents(params db.RetrieveQueryParams) (events []db.Event, err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"events\"))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tc := b.Cursor()\n\t\tevents, err = d.getEvents(c, params, func(evt db.Event) bool {\n\t\t\treturn true\n\t\t})\n\t\treturn nil\n\t})\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/global_runner.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/base64\"\n\t\"github.com/gorilla/securecookie\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) GetRunnerByToken(token string) (runner db.Runner, err error) {\n\n\trunners := make([]db.Runner, 0)\n\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\tr := i.(db.Runner)\n\t\treturn r.Token == token\n\t}, &runners)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(runners) == 0 {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\trunner = runners[0]\n\treturn\n}\n\nfunc (d *BoltDb) GetGlobalRunner(runnerID int) (runner db.Runner, err error) {\n\terr = d.getObject(0, db.GlobalRunnerProps, intObjectID(runnerID), &runner)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif runner.ProjectID != nil {\n\t\terr = db.ErrNotFound\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetAllRunners(activeOnly bool, globalOnly bool) (runners []db.Runner, err error) {\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\trunner := i.(db.Runner)\n\n\t\tif globalOnly && runner.ProjectID != nil {\n\t\t\treturn false\n\t\t}\n\n\t\tif activeOnly {\n\t\t\treturn runner.Active\n\t\t}\n\n\t\treturn true\n\t}, &runners)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteGlobalRunner(runnerID int) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\n\t\tvar runner db.Runner\n\t\terr := d.getObject(0, db.GlobalRunnerProps, intObjectID(runnerID), &runner)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif runner.ProjectID != nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\n\t\treturn d.deleteObject(0, db.GlobalRunnerProps, intObjectID(runnerID), tx)\n\t})\n}\n\nfunc (d *BoltDb) updateRunner(runner db.Runner, updater func(targetRunner *db.Runner, foundRunner db.Runner)) (err error) {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\tvar origRunner db.Runner\n\n\t\terr = d.getObjectTx(tx, 0, db.GlobalRunnerProps, intObjectID(runner.ID), &origRunner)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif runner.ProjectID == nil {\n\t\t\tif origRunner.ProjectID != nil {\n\t\t\t\treturn db.ErrNotFound\n\t\t\t}\n\t\t} else {\n\t\t\tif *origRunner.ProjectID != *runner.ProjectID {\n\t\t\t\treturn db.ErrNotFound\n\t\t\t}\n\t\t}\n\n\t\tupdater(&runner, origRunner)\n\n\t\treturn d.updateObjectTx(tx, 0, db.GlobalRunnerProps, runner)\n\t})\n}\n\nfunc (d *BoltDb) ClearRunnerCache(runner db.Runner) (err error) {\n\treturn d.updateRunner(runner, func(targetRunner *db.Runner, foundRunner db.Runner) {\n\t\tnow := tz.Now()\n\t\ttargetRunner.CleaningRequested = &now\n\t})\n}\n\nfunc (d *BoltDb) TouchRunner(runner db.Runner) (err error) {\n\treturn d.updateRunner(runner, func(targetRunner *db.Runner, foundRunner db.Runner) {\n\t\tnow := tz.Now()\n\t\ttargetRunner.Touched = &now\n\t})\n}\n\nfunc (d *BoltDb) UpdateRunner(runner db.Runner) (err error) {\n\treturn d.updateRunner(runner, func(targetRunner *db.Runner, foundRunner db.Runner) {\n\t\ttargetRunner.PublicKey = foundRunner.PublicKey\n\t\ttargetRunner.Token = foundRunner.Token\n\t})\n}\n\nfunc (d *BoltDb) CreateRunner(runner db.Runner) (newRunner db.Runner, err error) {\n\trunner.Token = base64.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(32))\n\n\tres, err := d.createObject(0, db.GlobalRunnerProps, runner)\n\n\tif err != nil {\n\t\treturn\n\t}\n\tnewRunner = res.(db.Runner)\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/global_runner_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"testing\"\n)\n\nfunc Test_GetRunnerByToken_ReturnsGlobalRunnerWhenTokenExists(t *testing.T) {\n\tstore := CreateTestStore()\n\n\ttestRunner, err := store.CreateRunner(db.Runner{})\n\tassert.NoError(t, err)\n\n\t_, err = store.GetRunnerByToken(testRunner.Token)\n\tassert.NoError(t, err)\n}\n\nfunc Test_GetRunnerByToken_ReturnsRunnerWhenTokenExists(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproject, err := store.CreateProject(db.Project{})\n\tassert.NoError(t, err)\n\n\ttestRunner, err := store.CreateRunner(db.Runner{ProjectID: &project.ID})\n\tassert.NoError(t, err)\n\n\t_, err = store.GetRunnerByToken(testRunner.Token)\n\tassert.NoError(t, err)\n}\n\nfunc Test_GetGlobalRunner_ReturnsErrorWhenTryingGetProjectRunner(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproject, err := store.CreateProject(db.Project{})\n\tassert.NoError(t, err)\n\n\ttestRunner, err := store.CreateRunner(db.Runner{ProjectID: &project.ID})\n\tassert.NoError(t, err)\n\n\t_, err = store.GetGlobalRunner(testRunner.ID)\n\tassert.ErrorIs(t, err, db.ErrNotFound)\n}\n"
  },
  {
    "path": "db/bolt/integrations.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\n/*\nIntegrations\n*/\nfunc (d *BoltDb) CreateIntegration(integration db.Integration) (db.Integration, error) {\n\terr := integration.Validate()\n\n\tif err != nil {\n\t\treturn db.Integration{}, err\n\t}\n\n\tnewIntegration, err := d.createObject(integration.ProjectID, db.IntegrationProps, integration)\n\treturn newIntegration.(db.Integration), err\n}\n\nfunc (d *BoltDb) GetIntegrations(projectID int, params db.RetrieveQueryParams, includeTaskParams bool) (integrations []db.Integration, err error) {\n\terr = d.getObjects(projectID, db.IntegrationProps, params, nil, &integrations)\n\treturn integrations, err\n}\n\nfunc (d *BoltDb) GetIntegration(projectID int, integrationID int) (integration db.Integration, err error) {\n\terr = d.getObject(projectID, db.IntegrationProps, intObjectID(integrationID), &integration)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) UpdateIntegration(integration db.Integration) error {\n\terr := integration.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn d.updateObject(integration.ProjectID, db.IntegrationProps, integration)\n\n}\n\nfunc (d *BoltDb) GetIntegrationRefs(projectID int, integrationID int) (db.IntegrationReferrers, error) {\n\t//return d.getObjectRefs(projectID, db.IntegrationProps, integrationID)\n\treturn db.IntegrationReferrers{}, nil\n}\n\nfunc (d *BoltDb) DeleteIntegrationExtractValue(projectID int, valueID int, integrationID int) error {\n\treturn d.deleteObject(projectID, db.IntegrationExtractValueProps, intObjectID(valueID), nil)\n}\n\nfunc (d *BoltDb) CreateIntegrationExtractValue(projectId int, value db.IntegrationExtractValue) (db.IntegrationExtractValue, error) {\n\terr := value.Validate()\n\n\tif err != nil {\n\t\treturn db.IntegrationExtractValue{}, err\n\t}\n\n\tnewValue, err := d.createObject(projectId, db.IntegrationExtractValueProps, value)\n\treturn newValue.(db.IntegrationExtractValue), err\n\n}\n\nfunc (d *BoltDb) GetIntegrationExtractValues(projectID int, params db.RetrieveQueryParams, integrationID int) (values []db.IntegrationExtractValue, err error) {\n\tvalues = make([]db.IntegrationExtractValue, 0)\n\n\terr = d.getObjects(projectID, db.IntegrationExtractValueProps, params, func(i any) bool {\n\t\tv := i.(db.IntegrationExtractValue)\n\t\treturn v.IntegrationID == integrationID\n\t}, &values)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetIntegrationExtractValue(projectID int, valueID int, integrationID int) (value db.IntegrationExtractValue, err error) {\n\terr = d.getObject(projectID, db.IntegrationExtractValueProps, intObjectID(valueID), &value)\n\treturn value, err\n}\n\nfunc (d *BoltDb) UpdateIntegrationExtractValue(projectID int, integrationExtractValue db.IntegrationExtractValue) error {\n\terr := integrationExtractValue.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn d.updateObject(projectID, db.IntegrationExtractValueProps, integrationExtractValue)\n}\n\nfunc (d *BoltDb) GetIntegrationExtractValueRefs(projectID int, valueID int, integrationID int) (db.IntegrationExtractorChildReferrers, error) {\n\treturn d.getIntegrationExtractorChildrenRefs(projectID, db.IntegrationExtractValueProps, valueID)\n}\n\n/*\nIntegration Matcher\n*/\nfunc (d *BoltDb) CreateIntegrationMatcher(projectID int, matcher db.IntegrationMatcher) (db.IntegrationMatcher, error) {\n\terr := matcher.Validate()\n\n\tif err != nil {\n\t\treturn db.IntegrationMatcher{}, err\n\t}\n\tnewMatcher, err := d.createObject(projectID, db.IntegrationMatcherProps, matcher)\n\treturn newMatcher.(db.IntegrationMatcher), err\n}\n\nfunc (d *BoltDb) GetIntegrationMatchers(projectID int, params db.RetrieveQueryParams, integrationID int) (matchers []db.IntegrationMatcher, err error) {\n\tmatchers = make([]db.IntegrationMatcher, 0)\n\n\terr = d.getObjects(projectID, db.IntegrationMatcherProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\tv := i.(db.IntegrationMatcher)\n\t\treturn v.IntegrationID == integrationID\n\t}, &matchers)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetIntegrationMatcher(projectID int, matcherID int, integrationID int) (matcher db.IntegrationMatcher, err error) {\n\tvar matchers []db.IntegrationMatcher\n\tmatchers, err = d.GetIntegrationMatchers(projectID, db.RetrieveQueryParams{}, integrationID)\n\n\tfor _, v := range matchers {\n\t\tif v.ID == matcherID {\n\t\t\tmatcher = v\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) UpdateIntegrationMatcher(projectID int, integrationMatcher db.IntegrationMatcher) error {\n\terr := integrationMatcher.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn d.updateObject(projectID, db.IntegrationMatcherProps, integrationMatcher)\n}\n\nfunc (d *BoltDb) deleteIntegrationMatcher(projectID int, matcherID int, integrationID int, tx *bbolt.Tx) error {\n\treturn d.deleteObject(projectID, db.IntegrationMatcherProps, intObjectID(matcherID), tx)\n}\n\nfunc (d *BoltDb) DeleteIntegrationMatcher(projectID int, matcherID int, integrationID int) error {\n\treturn d.deleteIntegrationMatcher(projectID, matcherID, integrationID, nil)\n}\n\nfunc (d *BoltDb) DeleteIntegration(projectID int, integrationID int) error {\n\treturn d.deleteIntegration(projectID, integrationID, nil)\n}\n\nfunc (d *BoltDb) deleteIntegration(projectID int, integrationID int, tx *bbolt.Tx) error {\n\tmatchers, err := d.GetIntegrationMatchers(projectID, db.RetrieveQueryParams{}, integrationID)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor m := range matchers {\n\t\td.deleteIntegrationMatcher(projectID, matchers[m].ID, integrationID, tx)\n\t}\n\n\treturn d.deleteObject(projectID, db.IntegrationProps, intObjectID(integrationID), tx)\n}\n\nfunc (d *BoltDb) GetIntegrationMatcherRefs(projectID int, matcherID int, integrationID int) (db.IntegrationExtractorChildReferrers, error) {\n\treturn d.getIntegrationExtractorChildrenRefs(projectID, db.IntegrationMatcherProps, matcherID)\n}\n"
  },
  {
    "path": "db/bolt/integrations_alias.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"reflect\"\n)\n\nvar integrationAliasProps = db.ObjectProps{\n\tTableName:         \"integration_alias\",\n\tType:              reflect.TypeOf(db.IntegrationAlias{}),\n\tPrimaryColumnName: \"alias\",\n}\n\nfunc (d *BoltDb) GetIntegrationAliases(projectID int, integrationID *int) (res []db.IntegrationAlias, err error) {\n\n\terr = d.integrationAlias.getAliases(projectID, func(i any) bool {\n\t\talias := i.(db.IntegrationAlias)\n\t\tif alias.IntegrationID == nil && integrationID == nil {\n\t\t\treturn true\n\t\t} else if alias.IntegrationID != nil && integrationID != nil {\n\t\t\treturn *alias.IntegrationID == *integrationID\n\t\t}\n\t\treturn false\n\t}, &res)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetIntegrationsByAlias(alias string) (res []db.Integration, level db.IntegrationAliasLevel, err error) {\n\n\tvar aliasObj db.IntegrationAlias\n\n\terr = d.integrationAlias.getPublicAlias(alias, &aliasObj)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif aliasObj.IntegrationID == nil {\n\t\tlevel = db.IntegrationAliasProject\n\t\terr = d.getObjects(aliasObj.ProjectID, db.IntegrationProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\t\tintegration := i.(db.Integration)\n\t\t\treturn integration.Searchable\n\t\t}, &res)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t} else {\n\t\tlevel = db.IntegrationAliasSingle\n\t\tvar integration db.Integration\n\t\tintegration, err = d.GetIntegration(aliasObj.ProjectID, *aliasObj.IntegrationID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif integration.Searchable {\n\t\t\terr = db.ErrNotFound\n\t\t\treturn\n\t\t}\n\n\t\tres = append(res, integration)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) CreateIntegrationAlias(alias db.IntegrationAlias) (res db.IntegrationAlias, err error) {\n\n\tnewAlias, err := d.integrationAlias.createAlias(alias)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tres = newAlias.(db.IntegrationAlias)\n\n\treturn\n}\n\nfunc (d *BoltDb) DeleteIntegrationAlias(projectID int, aliasID int) (err error) {\n\n\terr = d.integrationAlias.deleteIntegrationAlias(projectID, aliasID)\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/inventory.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *BoltDb) GetInventory(projectID int, inventoryID int) (inventory db.Inventory, err error) {\n\terr = d.getObject(projectID, db.InventoryProps, intObjectID(inventoryID), &inventory)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetInventories(projectID int, params db.RetrieveQueryParams, types []db.InventoryType) (inventories []db.Inventory, err error) {\n\terr = d.getObjects(projectID, db.InventoryProps, params, func(i any) bool {\n\t\tinventory := i.(db.Inventory)\n\t\tif len(types) == 0 {\n\t\t\treturn true\n\t\t}\n\n\t\tfor _, t := range types {\n\t\t\tif inventory.Type == t {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}, &inventories)\n\treturn\n}\n\nfunc (d *BoltDb) GetInventoryRefs(projectID int, inventoryID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.InventoryProps, inventoryID)\n}\n\nfunc (d *BoltDb) DeleteInventory(projectID int, inventoryID int) error {\n\treturn d.deleteObject(projectID, db.InventoryProps, intObjectID(inventoryID), nil)\n}\n\nfunc (d *BoltDb) UpdateInventory(inventory db.Inventory) error {\n\treturn d.updateObject(inventory.ProjectID, db.InventoryProps, inventory)\n}\n\nfunc (d *BoltDb) CreateInventory(inventory db.Inventory) (db.Inventory, error) {\n\tnewInventory, err := d.createObject(inventory.ProjectID, db.InventoryProps, inventory)\n\treturn newInventory.(db.Inventory), err\n}\n"
  },
  {
    "path": "db/bolt/migration.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) IsMigrationApplied(migration db.Migration) (bool, error) {\n\terr := d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"migrations\"))\n\t\tif b == nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\n\t\td := b.Get([]byte(migration.Version))\n\n\t\tif d == nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\n\t\treturn nil\n\t})\n\n\tif err == nil {\n\t\treturn true, nil\n\t}\n\n\tif err == db.ErrNotFound {\n\t\treturn false, nil\n\t}\n\n\treturn false, err\n}\n\nfunc (d *BoltDb) ApplyMigration(m db.Migration) (err error) {\n\tswitch m.Version {\n\tcase \"2.8.26\":\n\t\terr = migration_2_8_28{migration{d.db}}.Apply()\n\tcase \"2.8.40\":\n\t\terr = migration_2_8_40{migration{d.db}}.Apply()\n\tcase \"2.8.91\":\n\t\terr = migration_2_8_91{migration{d.db}}.Apply()\n\tcase \"2.10.12\":\n\t\terr = migration_2_10_12{migration{d.db}}.Apply()\n\tcase \"2.10.16\":\n\t\terr = migration_2_10_16{migration{d.db}}.Apply()\n\tcase \"2.10.24\":\n\t\terr = migration_2_10_24{migration{d.db}}.Apply()\n\tcase \"2.10.33\":\n\t\terr = migration_2_10_33{migration{d.db}}.Apply()\n\tcase \"2.14.7\":\n\t\terr = migration_2_14_7{migration{d.db}}.Apply()\n\tcase \"2.17.0\":\n\t\terr = migration_2_17_0{migration{d.db}}.Apply()\n\tcase \"2.17.2\":\n\t\terr = migration_2_17_2{migration{d.db}}.Apply()\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"migrations\"))\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tj, err := json.Marshal(m)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn b.Put([]byte(m.Version), j)\n\t})\n}\n\nfunc (d *BoltDb) TryRollbackMigration(m db.Migration) {\n\tswitch m.Version {\n\tcase \"2.8.26\":\n\t}\n}\n\ntype migration struct {\n\tdb *bbolt.DB\n}\n\nfunc (d migration) createObjectTx(tx *bbolt.Tx, projectID string, objectPrefix string, object map[string]any) (newObjectID string, err error) {\n\tb, err := tx.CreateBucketIfNotExists([]byte(\"project__\" + objectPrefix + \"_\" + projectID))\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar objID objectID\n\n\tid, err := b.NextSequence()\n\tif err != nil {\n\t\treturn\n\t}\n\tobjID = intObjectID(id)\n\n\tif objID == nil {\n\t\terr = fmt.Errorf(\"object ID can not be nil\")\n\t\treturn\n\t}\n\n\tobject[\"id\"] = objID\n\n\tj, err := json.Marshal(object)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tobjIDBytes := objID.ToBytes()\n\tnewObjectID = string(objIDBytes)\n\n\treturn newObjectID, b.Put(objIDBytes, j)\n}\n\nfunc (d migration) createObject(projectID string, objectPrefix string, object map[string]any) (newObjectID string, err error) {\n\n\t_ = d.db.Update(func(tx *bbolt.Tx) error {\n\t\tnewObjectID, err = d.createObjectTx(tx, projectID, objectPrefix, object)\n\t\treturn err\n\t})\n\n\treturn\n}\n\nfunc (d migration) getProjectIDs() (projectIDs []string, err error) {\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project\"))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn b.ForEach(func(id, _ []byte) error {\n\t\t\tprojectIDs = append(projectIDs, string(id))\n\t\t\treturn nil\n\t\t})\n\t})\n\treturn\n}\n\n// getObjects returns map of following format: map[OBJECT_ID]map[FIELD_NAME]interface{}\nfunc (d migration) getObjects(projectID string, objectPrefix string) (map[string]map[string]any, error) {\n\trepos := make(map[string]map[string]any) // ???\n\n\terr := d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__\" + objectPrefix + \"_\" + projectID))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\t\treturn b.ForEach(func(id, body []byte) error {\n\t\t\tr := make(map[string]any)\n\t\t\trepos[string(id)] = r\n\t\t\treturn json.Unmarshal(body, &r)\n\t\t})\n\t})\n\n\treturn repos, err\n}\n\nfunc (d migration) getObject(projectID string, objectPrefix string, objectID string) (r map[string]any, err error) {\n\n\terr = d.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__\" + objectPrefix + \"_\" + projectID))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\ts := b.Get([]byte(objectID))\n\t\tif s == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\treturn json.Unmarshal(s, &r)\n\t})\n\n\treturn\n}\n\nfunc (d migration) setObject(projectID string, objectPrefix string, objectID string, object map[string]any) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project__\" + objectPrefix + \"_\" + projectID))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tj, err := json.Marshal(object)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn b.Put([]byte(objectID), j)\n\t})\n}\n\nfunc (d migration) deleteObject(projectID string, objectPrefix string, objectID string) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__\" + objectPrefix + \"_\" + projectID))\n\t\tif b == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\treturn b.Delete([]byte(objectID))\n\t})\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_12.go",
    "content": "package bolt\n\ntype migration_2_10_12 struct {\n\tmigration\n}\n\nfunc (d migration_2_10_12) Apply() error {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projectID := range projectIDs {\n\t\tschedules, err := d.getObjects(projectID, \"schedule\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor scheduleID, schedule := range schedules {\n\t\t\tschedule[\"active\"] = true\n\t\t\terr = d.setObject(projectID, \"schedule\", scheduleID, schedule)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_12_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_10_12_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__schedule_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_12{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar scheduleData map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__schedule_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &scheduleData)\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif !scheduleData[\"active\"].(bool) {\n\t\tt.Fatal(\"invalid role\")\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_16.go",
    "content": "package bolt\n\ntype migration_2_10_16 struct {\n\tmigration\n}\n\nfunc (d migration_2_10_16) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplates := make(map[string]map[string]map[string]any)\n\n\tfor _, projectID := range projectIDs {\n\t\tvar err2 error\n\t\ttemplates[projectID], err2 = d.getObjects(projectID, \"template\")\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t}\n\n\tfor projectID, projectTemplates := range templates {\n\t\tfor repoID, tpl := range projectTemplates {\n\t\t\tif tpl[\"app\"] != nil && tpl[\"app\"] != \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttpl[\"app\"] = \"ansible\"\n\t\t\terr = d.setObject(projectID, \"template\", repoID, tpl)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_16_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_10_16_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__template_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_16{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar repo map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__template_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &repo)\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif repo[\"app\"] == nil {\n\t\tt.Fatal(\"app must be set\")\n\t}\n\n\tif repo[\"app\"].(string) != \"ansible\" {\n\t\tt.Fatal(\"invalid app: \" + repo[\"app\"].(string))\n\t}\n\n\tif repo[\"alias\"] != nil {\n\t\tt.Fatal(\"alias must be deleted\")\n\t}\n}\n\nfunc TestMigration_2_10_16_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_16{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_24.go",
    "content": "package bolt\n\nimport \"fmt\"\n\ntype migration_2_10_24 struct {\n\tmigration\n}\n\nfunc (d migration_2_10_24) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projectID := range projectIDs {\n\t\ttemplates, err := d.getObjects(projectID, \"template\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tvar templateVaultID = 1\n\t\tfor templateID, template := range templates {\n\t\t\tif template[\"vault_key_id\"] != nil {\n\t\t\t\ttemplateVault := map[string]any{\n\t\t\t\t\t\"id\":           templateVaultID,\n\t\t\t\t\t\"project_id\":   template[\"project_id\"],\n\t\t\t\t\t\"template_id\":  template[\"id\"],\n\t\t\t\t\t\"vault_key_id\": template[\"vault_key_id\"],\n\t\t\t\t\t\"name\":         nil,\n\t\t\t\t}\n\t\t\t\terr = d.setObject(projectID, \"template_vault\", fmt.Sprintf(\"%010d\", templateVaultID), templateVault)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\ttemplateVaultID++\n\t\t\t}\n\t\t\tdelete(template, \"vault_key_id\")\n\t\t\terr = d.setObject(projectID, \"template\", templateID, template)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_24_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_10_24_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__template_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"vault_key_id\\\":\\\"1\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_24{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar template map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__template_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &template)\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar templateVault map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__template_vault_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &templateVault)\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif _, ok := template[\"vault_key_id\"]; ok {\n\t\tt.Fatal(\"vault_key_id must be deleted\")\n\t}\n\n\tif templateVault[\"vault_key_id\"].(string) != \"1\" {\n\t\tt.Fatal(\"invalid vault_key_id: \" + templateVault[\"vault_key_id\"].(string))\n\t}\n}\n\nfunc TestMigration_2_10_24_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_24{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_33.go",
    "content": "package bolt\n\ntype migration_2_10_33 struct {\n\tmigration\n}\n\nfunc (d migration_2_10_33) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvaults := make(map[string]map[string]map[string]any)\n\n\tfor _, projectID := range projectIDs {\n\t\tvar err2 error\n\t\tvaults[projectID], err2 = d.getObjects(projectID, \"template_vault\")\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t}\n\n\tfor projectID, projectVaults := range vaults {\n\t\tfor repoID, vault := range projectVaults {\n\t\t\tif vault[\"type\"] != nil && vault[\"type\"] != \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvault[\"type\"] = \"password\"\n\t\t\terr = d.setObject(projectID, \"template_vault\", repoID, vault)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_10_33_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_10_33_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__template_vault_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_33{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar repo map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__template_vault_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &repo)\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif repo[\"type\"] == nil {\n\t\tt.Fatal(\"app must be set\")\n\t}\n\n\tif repo[\"type\"].(string) != \"password\" {\n\t\tt.Fatal(\"invalid app: \" + repo[\"type\"].(string))\n\t}\n}\n\nfunc TestMigration_2_10_33_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_10_33{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_14_7.go",
    "content": "package bolt\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/pkg/conv\"\n)\n\ntype migration_2_14_7 struct {\n\tmigration\n}\n\nfunc (d migration_2_14_7) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, projectID := range projectIDs {\n\t\tprojectSchedules, err2 := d.getObjects(projectID, \"schedule\")\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\n\t\tfor scheduleID, schedule := range projectSchedules {\n\t\t\ttplID, ok := conv.ConvertFloatToIntIfPossible(schedule[\"template_id\"])\n\t\t\tif !ok {\n\t\t\t\treturn fmt.Errorf(\"schedule template id %s is not a valid integer\", schedule[\"template_id\"])\n\t\t\t}\n\n\t\t\ttpl, err3 := d.getObject(projectID, \"template\", string(intObjectID(int(tplID)).ToBytes()))\n\t\t\tif err3 != nil {\n\t\t\t\treturn err3\n\t\t\t}\n\n\t\t\tif tpl == nil {\n\t\t\t\terr3 = d.deleteObject(projectID, \"schedule\", scheduleID)\n\t\t\t}\n\n\t\t\tif err3 != nil {\n\t\t\t\treturn err3\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_14_7_test.go",
    "content": "package bolt\n\nimport (\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_14_7_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Create templates\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__template_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\"}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Create schedules\n\n\t\tr, err = tx.CreateBucketIfNotExists([]byte(\"project__schedule_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"template_id\\\":1}\")) // correct\n\n\t\terr = r.Put([]byte(\"0000000002\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"template_id\\\":100}\")) // incorrect\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_14_7{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar s1, s2 []byte\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__schedule_0000000001\"))\n\t\ts1 = b.Get([]byte(\"0000000001\"))\n\t\ts2 = b.Get([]byte(\"0000000002\"))\n\t\treturn nil\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif s1 == nil {\n\t\tt.Fatal(\"Correct schedule should not be deleted\")\n\t}\n\n\tif s2 != nil {\n\t\tt.Fatal(\"Incorrect schedule should be deleted\")\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_17_0.go",
    "content": "package bolt\n\nimport \"strconv\"\n\ntype migration_2_17_0 struct {\n\tmigration\n}\n\nfunc (d migration_2_17_0) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, projectID := range projectIDs {\n\t\tid, err2 := strconv.Atoi(projectID)\n\t\t_, err2 = d.createObject(projectID, \"view\", map[string]any{\n\t\t\t\"project_id\":  id,\n\t\t\t\"type\":        \"all\",\n\t\t\t\"position\":    -1,\n\t\t\t\"title\":       \"All\",\n\t\t\t\"sort_column\": \"name\",\n\t\t})\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_17_0_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc TestMigration_2_17_0_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\treturn b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t})\n\n\tassert.NoError(t, err)\n\n\terr = migration_2_17_0{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar s1 []byte\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__view_0000000001\"))\n\t\ts1 = b.Get([]byte(\"0000000001\"))\n\t\treturn nil\n\t})\n\n\tassert.NoError(t, err)\n\tassert.NotNil(t, s1)\n\n\tvar res map[string]any\n\terr = json.Unmarshal(s1, &res)\n\n\tassert.NoError(t, err)\n\tassert.Equal(t, 1.0, res[\"id\"])\n\tassert.Equal(t, \"all\", res[\"type\"])\n}\n"
  },
  {
    "path": "db/bolt/migration_2_17_2.go",
    "content": "package bolt\n\ntype migration_2_17_2 struct {\n\tmigration\n}\n\nfunc (d migration_2_17_2) Apply() error {\n\t// No-op migration for BoltDB.\n\t// The project_id field is added to the Role struct and will be handled automatically.\n\treturn nil\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_28.go",
    "content": "package bolt\n\nimport (\n\t\"strings\"\n)\n\ntype migration_2_8_28 struct {\n\tmigration\n}\n\nfunc (d migration_2_8_28) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\trepos := make(map[string]map[string]map[string]any)\n\n\tfor _, projectID := range projectIDs {\n\t\tvar err2 error\n\t\trepos[projectID], err2 = d.getObjects(projectID, \"repository\")\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t}\n\n\tfor projectID, projectRepos := range repos {\n\t\tfor repoID, repo := range projectRepos {\n\t\t\tbranch := \"master\"\n\t\t\turl := repo[\"git_url\"].(string)\n\t\t\tparts := strings.Split(url, \"#\")\n\t\t\tif len(parts) > 1 {\n\t\t\t\turl, branch = parts[0], parts[1]\n\t\t\t}\n\t\t\trepo[\"git_url\"] = url\n\t\t\trepo[\"git_branch\"] = branch\n\t\t\terr = d.setObject(projectID, \"repository\", repoID, repo)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_28_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc TestMigration_2_8_28_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__repository_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"git_url\\\": \\\"git@github.com/test/test#main\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tassert.NoError(t, err)\n\n\terr = migration_2_8_28{migration{store.db}}.Apply()\n\tassert.NoError(t, err)\n\n\tvar repo map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__repository_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &repo)\n\t})\n\tassert.NoError(t, err)\n\n\tassert.Equal(t, \"git@github.com/test/test\", repo[\"git_url\"].(string), \"invalid url\")\n\tassert.Equal(t, \"main\", repo[\"git_branch\"].(string), \"invalid branch\")\n}\n\nfunc TestMigration_2_8_28_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tassert.NoError(t, err)\n\n\terr = migration_2_8_28{migration{store.db}}.Apply()\n\tassert.NoError(t, err)\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_40.go",
    "content": "package bolt\n\ntype migration_2_8_40 struct {\n\tmigration\n}\n\nfunc (d migration_2_8_40) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplates := make(map[string]map[string]map[string]any)\n\n\tfor _, projectID := range projectIDs {\n\t\tvar err2 error\n\t\ttemplates[projectID], err2 = d.getObjects(projectID, \"template\")\n\t\tif err2 != nil {\n\t\t\treturn err2\n\t\t}\n\t}\n\n\tfor projectID, projectTemplates := range templates {\n\t\tfor repoID, tpl := range projectTemplates {\n\t\t\ttpl[\"name\"] = tpl[\"alias\"]\n\t\t\tdelete(tpl, \"alias\")\n\t\t\terr = d.setObject(projectID, \"template\", repoID, tpl)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_40_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_8_40_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__template_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"alias\\\": \\\"test123\\\"}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_8_40{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar repo map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__template_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &repo)\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif repo[\"name\"].(string) != \"test123\" {\n\t\tt.Fatal(\"invalid name\")\n\t}\n\n\tif repo[\"alias\"] != nil {\n\t\tt.Fatal(\"alias must be deleted\")\n\t}\n}\n\nfunc TestMigration_2_8_40_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_8_28{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_91.go",
    "content": "package bolt\n\ntype migration_2_8_91 struct {\n\tmigration\n}\n\nfunc (d migration_2_8_91) Apply() (err error) {\n\tprojectIDs, err := d.getProjectIDs()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tusersByProjectMap := make(map[string]map[string]map[string]any)\n\n\tfor _, projectID := range projectIDs {\n\t\tusersByProjectMap[projectID], err = d.getObjects(projectID, \"user\")\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor projectID, projectUsers := range usersByProjectMap {\n\t\tfor userId, userData := range projectUsers {\n\t\t\tif userData[\"admin\"] == true {\n\t\t\t\tuserData[\"role\"] = \"owner\"\n\t\t\t} else {\n\t\t\t\tuserData[\"role\"] = \"manager\"\n\t\t\t}\n\t\t\tdelete(userData, \"admin\")\n\t\t\terr = d.setObject(projectID, \"user\", userId, userData)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/migration_2_8_91_test.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"go.etcd.io/bbolt\"\n\t\"testing\"\n)\n\nfunc TestMigration_2_8_91_Apply(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tr, err := tx.CreateBucketIfNotExists([]byte(\"project__user_0000000001\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = r.Put([]byte(\"0000000001\"),\n\t\t\t[]byte(\"{\\\"id\\\":\\\"1\\\",\\\"project_id\\\":\\\"1\\\",\\\"admin\\\": true}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_8_91{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tvar userData map[string]any\n\terr = store.db.View(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket([]byte(\"project__user_0000000001\"))\n\t\tstr := string(b.Get([]byte(\"0000000001\")))\n\t\treturn json.Unmarshal([]byte(str), &userData)\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tif userData[\"role\"].(string) != \"owner\" {\n\t\tt.Fatal(\"invalid role\")\n\t}\n\n\tif userData[\"admin\"] != nil {\n\t\tt.Fatal(\"admin field must be deleted\")\n\t}\n}\n\nfunc TestMigration_2_8_91_Apply2(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.db.Update(func(tx *bbolt.Tx) error {\n\t\tb, err := tx.CreateBucketIfNotExists([]byte(\"project\"))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = b.Put([]byte(\"0000000001\"), []byte(\"{}\"))\n\n\t\treturn err\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = migration_2_8_28{migration{store.db}}.Apply()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/option.go",
    "content": "package bolt\n\nimport (\n\t\"errors\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n\t\"strings\"\n)\n\nfunc (d *BoltDb) GetOptions(params db.RetrieveQueryParams) (res map[string]string, err error) {\n\tres = make(map[string]string)\n\tvar options []db.Option\n\terr = d.getObjects(0, db.OptionProps, db.RetrieveQueryParams{}, func(i any) bool {\n\n\t\toption := i.(db.Option)\n\t\tif params.Filter == \"\" {\n\t\t\treturn true\n\t\t}\n\n\t\treturn option.Key == params.Filter || strings.HasPrefix(option.Key, params.Filter+\".\")\n\n\t}, &options)\n\tfor _, opt := range options {\n\t\tres[opt.Key] = opt.Value\n\t}\n\treturn\n}\n\nfunc (d *BoltDb) SetOption(key string, value string) error {\n\n\topt := db.Option{\n\t\tKey:   key,\n\t\tValue: value,\n\t}\n\n\t_, err := d.getOption(key)\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\t_, err = d.createObject(-1, db.OptionProps, opt)\n\t\treturn err\n\t} else {\n\t\terr = d.updateObject(-1, db.OptionProps, opt)\n\t}\n\n\treturn err\n}\n\nfunc (d *BoltDb) getOption(key string) (value string, err error) {\n\tvar option db.Option\n\terr = d.getObject(-1, db.OptionProps, strObjectID(key), &option)\n\tvalue = option.Value\n\treturn\n}\n\nfunc (d *BoltDb) GetOption(key string) (value string, err error) {\n\tvar option db.Option\n\terr = d.getObject(-1, db.OptionProps, strObjectID(key), &option)\n\tvalue = option.Value\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) DeleteOption(key string) (err error) {\n\terr = db.ValidateOptionKey(key)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.deleteObject(-1, db.OptionProps, strObjectID(key), tx)\n\t})\n}\n\nfunc (d *BoltDb) DeleteOptions(filter string) (err error) {\n\terr = db.ValidateOptionKey(filter)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar options []db.Option\n\n\terr = d.getObjects(0, db.OptionProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\topt := i.(db.Option)\n\t\treturn opt.Key == filter || strings.HasPrefix(opt.Key, filter+\".\")\n\t}, &options)\n\n\tfor _, opt := range options {\n\t\terr = d.DeleteOption(opt.Key)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/option_test.go",
    "content": "package bolt\n\nimport (\n\t\"testing\"\n)\n\nfunc TestGetOption(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tval, err := store.GetOption(\"unknown_option\")\n\n\tif err != nil && val != \"\" {\n\t\tt.Fatal(\"Result must be empty string for non-existent option\")\n\t}\n}\n\nfunc TestGetSetOption(t *testing.T) {\n\tstore := CreateTestStore()\n\n\terr := store.SetOption(\"age\", \"33\")\n\n\tif err != nil {\n\t\tt.Fatal(\"Can not save option\")\n\t}\n\n\tval, err := store.GetOption(\"age\")\n\n\tif err != nil {\n\t\tt.Fatal(\"Can not get option\")\n\t}\n\n\tif val != \"33\" {\n\t\tt.Fatal(\"Invalid option value\")\n\t}\n\n\terr = store.SetOption(\"age\", \"22\")\n\n\tif err != nil {\n\t\tt.Fatal(\"Can not save option\")\n\t}\n\n\tval, err = store.GetOption(\"age\")\n\n\tif err != nil {\n\t\tt.Fatal(\"Can not get option\")\n\t}\n\n\tif val != \"22\" {\n\t\tt.Fatal(\"Invalid option value\")\n\t}\n\n}\n"
  },
  {
    "path": "db/bolt/project.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n)\n\nfunc (d *BoltDb) CreateProject(project db.Project) (db.Project, error) {\n\tproject.Created = tz.Now()\n\n\tnewProject, err := d.createObject(0, db.ProjectProps, project)\n\n\tif err != nil {\n\t\treturn db.Project{}, err\n\t}\n\n\treturn newProject.(db.Project), nil\n}\n\nfunc (d *BoltDb) GetAllProjects() (projects []db.Project, err error) {\n\terr = d.getObjects(0, db.ProjectProps, db.RetrieveQueryParams{}, nil, &projects)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetProjects(userID int) (projects []db.Project, err error) {\n\tprojects = make([]db.Project, 0)\n\n\tvar allProjects []db.Project\n\n\terr = d.getObjects(0, db.ProjectProps, db.RetrieveQueryParams{}, nil, &allProjects)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, v := range allProjects {\n\t\t_, err2 := d.GetProjectUser(v.ID, userID)\n\t\tif err2 == nil {\n\t\t\tprojects = append(projects, v)\n\t\t} else if err2 != db.ErrNotFound {\n\t\t\terr = err2\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetProject(projectID int) (project db.Project, err error) {\n\terr = d.getObject(0, db.ProjectProps, intObjectID(projectID), &project)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteProject(projectID int) error {\n\treturn d.deleteObject(0, db.ProjectProps, intObjectID(projectID), nil)\n}\n\nfunc (d *BoltDb) UpdateProject(project db.Project) error {\n\treturn d.updateObject(0, db.ProjectProps, project)\n}\n"
  },
  {
    "path": "db/bolt/project_invite.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *BoltDb) GetProjectInvites(projectID int, params db.RetrieveQueryParams) (invites []db.ProjectInviteWithUser, err error) {\n\tinvites = make([]db.ProjectInviteWithUser, 0)\n\n\tvar projectInvites []db.ProjectInvite\n\terr = d.getObjects(projectID, db.ProjectInviteProps, params, nil, &projectInvites)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, invite := range projectInvites {\n\t\tvar inviteWithUser = db.ProjectInviteWithUser{\n\t\t\tProjectInvite: invite,\n\t\t}\n\n\t\t// Get invited by user info\n\t\tinvitedByUser, err := d.GetUser(invite.InviterUserID)\n\t\tif err == nil {\n\t\t\tinviteWithUser.InvitedByUser = &invitedByUser\n\t\t}\n\n\t\t// Get user info if user exists\n\t\tif invite.UserID != nil {\n\t\t\tuser, err := d.GetUser(*invite.UserID)\n\t\t\tif err == nil {\n\t\t\t\tinviteWithUser.User = &user\n\t\t\t}\n\t\t}\n\n\t\tinvites = append(invites, inviteWithUser)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) CreateProjectInvite(invite db.ProjectInvite) (db.ProjectInvite, error) {\n\tnewInvite, err := d.createObject(invite.ProjectID, db.ProjectInviteProps, invite)\n\tif err != nil {\n\t\treturn db.ProjectInvite{}, err\n\t}\n\treturn newInvite.(db.ProjectInvite), nil\n}\n\nfunc (d *BoltDb) GetProjectInvite(projectID int, inviteID int) (invite db.ProjectInvite, err error) {\n\terr = d.getObject(projectID, db.ProjectInviteProps, intObjectID(inviteID), &invite)\n\treturn\n}\n\nfunc (d *BoltDb) GetProjectInviteByToken(token string) (invite db.ProjectInvite, err error) {\n\tvar allInvites []db.ProjectInvite\n\n\t// Get all projects to search across all invites\n\tprojects, err := d.GetAllProjects()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, project := range projects {\n\t\tvar projectInvites []db.ProjectInvite\n\t\terr = d.getObjects(project.ID, db.ProjectInviteProps, db.RetrieveQueryParams{}, nil, &projectInvites)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tallInvites = append(allInvites, projectInvites...)\n\t}\n\n\tfor _, inv := range allInvites {\n\t\tif inv.Token == token {\n\t\t\tinvite = inv\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = db.ErrNotFound\n\treturn\n}\n\nfunc (d *BoltDb) UpdateProjectInvite(invite db.ProjectInvite) error {\n\treturn d.updateObject(invite.ProjectID, db.ProjectInviteProps, invite)\n}\n\nfunc (d *BoltDb) DeleteProjectInvite(projectID int, inviteID int) error {\n\treturn d.deleteObject(projectID, db.ProjectInviteProps, intObjectID(inviteID), nil)\n}\n"
  },
  {
    "path": "db/bolt/project_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"testing\"\n)\n\nfunc TestGetProjects(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tusr, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"denguk@example.com\",\n\t\t\tName:     \"Denis Gukov\",\n\t\t\tUsername: \"fiftin\",\n\t\t},\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\t_, err = store.CreateProjectUser(db.ProjectUser{\n\t\tProjectID: proj1.ID,\n\t\tUserID:    usr.ID,\n\t\tRole:      db.ProjectOwner,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetProjects(usr.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(found) != 1 {\n\t\tt.Fatal(err.Error())\n\t}\n\n}\n\nfunc TestGetProject(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetProject(proj.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif found.Name != \"Test1\" {\n\t\tt.Fatal(err.Error())\n\t}\n\n\terr = store.DeleteProject(proj.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n}\n"
  },
  {
    "path": "db/bolt/public_alias.go",
    "content": "package bolt\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"reflect\"\n)\n\ntype publicAlias struct {\n\taliasProps       db.ObjectProps\n\tpublicAliasProps db.ObjectProps\n\tdb               *BoltDb\n}\n\nfunc (d *publicAlias) getAliases(projectID int, filter func(i any) bool, res any) (err error) {\n\n\terr = d.db.getObjects(projectID, d.aliasProps, db.RetrieveQueryParams{}, filter, res)\n\n\treturn\n}\n\nfunc (d *publicAlias) getAlias(projectID int, aliasID int, res any) (err error) {\n\n\terr = d.db.getObject(projectID, d.aliasProps, intObjectID(aliasID), res)\n\n\treturn\n}\n\nfunc (d *publicAlias) getPublicAlias(alias string, aliasObj any) (err error) {\n\n\terr = d.db.getObject(-1, d.publicAliasProps, strObjectID(alias), aliasObj)\n\n\treturn\n}\n\nfunc (d *publicAlias) createAlias(aliasObj any) (newAlias any, err error) {\n\n\talias := aliasObj.(db.Aliasable).ToAlias()\n\n\terr = d.getPublicAlias(alias.Alias, newAlias)\n\n\tif err == nil {\n\t\terr = fmt.Errorf(\"alias already exists\")\n\t}\n\n\tif !errors.Is(err, db.ErrNotFound) {\n\t\treturn\n\t}\n\n\tnewAlias, err = d.db.createObject(alias.ProjectID, d.aliasProps, aliasObj)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.db.createObject(-1, d.publicAliasProps, aliasObj)\n\n\tif err != nil {\n\t\t_ = d.deleteIntegrationAlias(alias.ProjectID, alias.ID)\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *publicAlias) deleteIntegrationAlias(projectID int, aliasID int) (err error) {\n\taliasPtr := reflect.New(d.aliasProps.Type)\n\taliasObj := aliasPtr.Elem().Interface()\n\n\talias := aliasObj.(db.Aliasable).ToAlias()\n\n\terr = d.db.getObject(projectID, d.aliasProps, intObjectID(aliasID), aliasPtr.Interface())\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.db.deleteObject(projectID, d.aliasProps, intObjectID(aliasID), nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.db.deleteObject(-1, d.publicAliasProps, strObjectID(alias.Alias), nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/repository.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *BoltDb) GetRepository(projectID int, repositoryID int) (repository db.Repository, err error) {\n\terr = d.getObject(projectID, db.RepositoryProps, intObjectID(repositoryID), &repository)\n\tif err != nil {\n\t\treturn\n\t}\n\trepository.SSHKey, err = d.GetAccessKey(projectID, repository.SSHKeyID)\n\treturn\n}\n\nfunc (d *BoltDb) GetRepositoryRefs(projectID int, repositoryID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.RepositoryProps, repositoryID)\n}\n\nfunc (d *BoltDb) GetRepositories(projectID int, params db.RetrieveQueryParams) (repositories []db.Repository, err error) {\n\terr = d.getObjects(projectID, db.RepositoryProps, params, nil, &repositories)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateRepository(repository db.Repository) error {\n\terr := repository.Validate()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.updateObject(repository.ProjectID, db.RepositoryProps, repository)\n}\n\nfunc (d *BoltDb) CreateRepository(repository db.Repository) (db.Repository, error) {\n\terr := repository.Validate()\n\tif err != nil {\n\t\treturn db.Repository{}, err\n\t}\n\tnewRepo, err := d.createObject(repository.ProjectID, db.RepositoryProps, repository)\n\treturn newRepo.(db.Repository), err\n}\n\nfunc (d *BoltDb) DeleteRepository(projectID int, repositoryId int) error {\n\treturn d.deleteObject(projectID, db.RepositoryProps, intObjectID(repositoryId), nil)\n}\n"
  },
  {
    "path": "db/bolt/role.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *BoltDb) GetGlobalRole(roleID int) (role db.Role, err error) {\n\terr = d.getObject(0, db.RoleProps, intObjectID(roleID), &role)\n\treturn\n}\n\nfunc (d *BoltDb) GetGlobalRoleBySlug(slug string) (db.Role, error) {\n\tvar roles []db.Role\n\n\terr := d.getObjects(0, db.RoleProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\trole := i.(db.Role)\n\t\treturn role.Slug == slug && role.ProjectID == nil\n\t}, &roles)\n\n\tif err != nil {\n\t\treturn db.Role{}, err\n\t}\n\n\tif len(roles) == 0 {\n\t\treturn db.Role{}, db.ErrNotFound\n\t}\n\n\treturn roles[0], nil\n}\n\nfunc (d *BoltDb) GetProjectRoles(projectID int) (roles []db.Role, err error) {\n\terr = d.getObjects(0, db.RoleProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\trole := i.(db.Role)\n\t\treturn role.ProjectID != nil && *role.ProjectID == projectID\n\t}, &roles)\n\treturn\n}\n\nfunc (d *BoltDb) GetGlobalRoles() (roles []db.Role, err error) {\n\terr = d.getObjects(0, db.RoleProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\trole := i.(db.Role)\n\t\treturn role.ProjectID == nil\n\t}, &roles)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateRole(role db.Role) error {\n\treturn d.updateObject(0, db.RoleProps, role)\n}\n\nfunc (d *BoltDb) CreateRole(role db.Role) (newRole db.Role, err error) {\n\tnewRoleInterface, err := d.createObject(0, db.RoleProps, role)\n\tif err != nil {\n\t\treturn\n\t}\n\tnewRole = newRoleInterface.(db.Role)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteRole(slug string) error {\n\treturn d.deleteObject(0, db.RoleProps, strObjectID(slug), nil)\n}\n\nfunc (d *BoltDb) GetProjectRole(projectID int, slug string) (db.Role, error) {\n\tvar role db.Role\n\terr := d.getObject(0, db.RoleProps, strObjectID(slug), &role)\n\tif err != nil {\n\t\treturn db.Role{}, err\n\t}\n\n\t// Verify the role belongs to the specified project\n\tif role.ProjectID == nil || *role.ProjectID != projectID {\n\t\treturn db.Role{}, db.ErrNotFound\n\t}\n\n\treturn role, nil\n}\n\nfunc (d *BoltDb) GetProjectOrGlobalRoleBySlug(projectID int, slug string) (db.Role, error) {\n\tvar roles []db.Role\n\n\terr := d.getObjects(0, db.RoleProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\trole := i.(db.Role)\n\t\treturn role.Slug == slug\n\t}, &roles)\n\n\tif err != nil {\n\t\treturn db.Role{}, err\n\t}\n\n\tif len(roles) == 0 {\n\t\treturn db.Role{}, db.ErrNotFound\n\t}\n\n\treturn roles[0], nil\n}\n"
  },
  {
    "path": "db/bolt/runner_pro.go",
    "content": "package bolt\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) GetRunner(projectID int, runnerID int) (runner db.Runner, err error) {\n\terr = d.getObject(0, db.GlobalRunnerProps, intObjectID(runnerID), &runner)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif runner.ProjectID == nil || *runner.ProjectID != projectID {\n\t\terr = db.ErrNotFound\n\t}\n\n\treturn\n}\n\nfunc validateTag(tag string) error {\n\tif tag == \"\" {\n\t\treturn fmt.Errorf(\"tag cannot be empty\")\n\t}\n\n\treturn nil\n}\n\nfunc (d *BoltDb) GetRunners(projectID int, activeOnly bool, tag *string) (runners []db.Runner, err error) {\n\tif tag != nil {\n\t\terr = validateTag(*tag)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\trunners = make([]db.Runner, 0)\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i interface{}) bool {\n\t\trunner := i.(db.Runner)\n\n\t\tif runner.ProjectID == nil || *runner.ProjectID != projectID {\n\t\t\treturn false\n\t\t}\n\n\t\tif tag != nil && runner.Tag != *tag {\n\t\t\treturn false\n\t\t}\n\n\t\tif activeOnly {\n\t\t\treturn runner.Active\n\t\t}\n\n\t\treturn true\n\t}, &runners)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteRunner(projectID int, runnerID int) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\trunner, err := d.GetRunner(projectID, runnerID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif runner.ProjectID == nil || *runner.ProjectID != projectID {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\t\treturn d.deleteObject(0, db.GlobalRunnerProps, intObjectID(runnerID), tx)\n\t})\n}\n\nfunc (d *BoltDb) GetRunnerTags(projectID int) ([]db.RunnerTag, error) {\n\trunners, err := d.GetRunners(projectID, false, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttagMap := make(map[string]int)\n\tfor _, runner := range runners {\n\t\tif runner.Tag != \"\" {\n\t\t\ttagMap[runner.Tag]++\n\t\t}\n\t}\n\n\tres := make([]db.RunnerTag, 0, len(tagMap))\n\tfor tag, count := range tagMap {\n\t\tres = append(res, db.RunnerTag{\n\t\t\tTag:             tag,\n\t\t\tNumberOfRunners: count,\n\t\t})\n\t}\n\n\treturn res, nil\n}\n\nfunc (d *BoltDb) GetRunnerCount() (res int, err error) {\n\trunners := make([]db.Runner, 0)\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(i interface{}) bool {\n\t\trunner := i.(db.Runner)\n\t\treturn runner.ProjectID != nil\n\t}, &runners)\n\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn len(runners), nil\n}\n"
  },
  {
    "path": "db/bolt/runner_pro_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"testing\"\n)\n\nfunc Test_DeleteRunner_DeletesProjectRunner(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproject, err := store.CreateProject(db.Project{})\n\tassert.NoError(t, err)\n\n\ttestRunner, err := store.CreateRunner(db.Runner{ProjectID: &project.ID})\n\tassert.NoError(t, err)\n\n\terr = store.DeleteRunner(project.ID, testRunner.ID)\n\tassert.NoError(t, err)\n\n\t_, err = store.GetRunner(project.ID, testRunner.ID)\n\tassert.ErrorIs(t, err, db.ErrNotFound)\n}\n"
  },
  {
    "path": "db/bolt/schedule.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) GetSchedules() (schedules []db.Schedule, err error) {\n\tvar allProjects []db.Project\n\n\terr = d.getObjects(0, db.ProjectProps, db.RetrieveQueryParams{}, nil, &allProjects)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, proj := range allProjects {\n\t\tvar projSchedules []db.Schedule\n\t\tprojSchedules, err = d.getProjectSchedules(proj.ID, nil)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tschedules = append(schedules, projSchedules...)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) getProjectSchedules(projectID int, filter func(referringObj db.Schedule) bool) (schedules []db.Schedule, err error) {\n\tschedules = []db.Schedule{}\n\terr = d.getObjects(projectID, db.ScheduleProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\treturn filter == nil || filter(referringObj.(db.Schedule))\n\t}, &schedules)\n\treturn\n}\n\nfunc (d *BoltDb) GetProjectSchedules(projectID int, includeTaskParams bool, includeCommitCheckers bool) (schedules []db.ScheduleWithTpl, err error) {\n\tschedules = []db.ScheduleWithTpl{}\n\n\torig, err := d.getProjectSchedules(projectID, func(s db.Schedule) bool {\n\t\tif includeCommitCheckers {\n\t\t\treturn true\n\t\t}\n\t\treturn s.RepositoryID == nil\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, s := range orig {\n\t\tvar tpl db.Template\n\t\ttpl, err = d.GetTemplate(projectID, s.TemplateID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tschedules = append(schedules, db.ScheduleWithTpl{\n\t\t\tSchedule:     s,\n\t\t\tTemplateName: tpl.Name,\n\t\t})\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetTemplateSchedules(projectID int, templateID int, onlyCommitCheckers bool) (schedules []db.Schedule, err error) {\n\tschedules, err = d.getProjectSchedules(projectID, func(s db.Schedule) bool {\n\t\treturn s.TemplateID == templateID && (!onlyCommitCheckers || s.RepositoryID != nil)\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) CreateSchedule(schedule db.Schedule) (newSchedule db.Schedule, err error) {\n\tnewTpl, err := d.createObject(schedule.ProjectID, db.ScheduleProps, schedule)\n\tif err != nil {\n\t\treturn\n\t}\n\tnewSchedule = newTpl.(db.Schedule)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateSchedule(schedule db.Schedule) error {\n\treturn d.updateObject(schedule.ProjectID, db.ScheduleProps, schedule)\n}\n\nfunc (d *BoltDb) GetSchedule(projectID int, scheduleID int) (schedule db.Schedule, err error) {\n\terr = d.getObject(projectID, db.ScheduleProps, intObjectID(scheduleID), &schedule)\n\treturn\n}\n\nfunc (d *BoltDb) deleteSchedule(projectID int, scheduleID int, tx *bbolt.Tx) error {\n\treturn d.deleteObject(projectID, db.ScheduleProps, intObjectID(scheduleID), tx)\n}\n\nfunc (d *BoltDb) DeleteSchedule(projectID int, scheduleID int) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.deleteSchedule(projectID, scheduleID, tx)\n\t})\n}\n\nfunc (d *BoltDb) SetScheduleActive(projectID int, scheduleID int, active bool) error {\n\tschedule, err := d.GetSchedule(projectID, scheduleID)\n\tif err != nil {\n\t\treturn err\n\t}\n\tschedule.Active = active\n\treturn d.updateObject(projectID, db.ScheduleProps, schedule)\n}\n\nfunc (d *BoltDb) SetScheduleCommitHash(projectID int, scheduleID int, hash string) error {\n\tschedule, err := d.GetSchedule(projectID, scheduleID)\n\tif err != nil {\n\t\treturn err\n\t}\n\tschedule.LastCommitHash = &hash\n\treturn d.updateObject(projectID, db.ScheduleProps, schedule)\n}\n"
  },
  {
    "path": "db/bolt/secret_storage.go",
    "content": "package bolt\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *BoltDb) GetSecretStorages(projectID int) ([]db.SecretStorage, error) {\n\treturn []db.SecretStorage{}, nil\n}\n\nfunc (d *BoltDb) CreateSecretStorage(storage db.SecretStorage) (db.SecretStorage, error) {\n\t//TODO implement me\n\tpanic(\"implement me\")\n}\n\nfunc (d *BoltDb) GetSecretStorage(projectID int, storageID int) (db.SecretStorage, error) {\n\t//TODO implement me\n\tpanic(\"implement me\")\n}\n\nfunc (d *BoltDb) DeleteSecretStorage(projectID int, storageID int) error {\n\tpanic(\"implement me\")\n}\n\nfunc (d *BoltDb) UpdateSecretStorage(storage db.SecretStorage) error {\n\t//TODO implement me\n\tpanic(\"implement me\")\n}\n\nfunc (d *BoltDb) GetSecretStorageRefs(projectID int, storageID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.SecretStorageProps, storageID)\n}\n"
  },
  {
    "path": "db/bolt/session.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"reflect\"\n\t\"slices\"\n\t\"strings\"\n)\n\ntype globalToken struct {\n\tID     string `db:\"id\" json:\"id\"`\n\tUserID int    `db:\"user_id\" json:\"user_id\"`\n}\n\nvar globalTokenObject = db.ObjectProps{\n\tTableName:         \"token\",\n\tPrimaryColumnName: \"id\",\n\tType:              reflect.TypeOf(globalToken{}),\n\tIsGlobal:          true,\n}\n\nfunc (d *BoltDb) CreateSession(session db.Session) (db.Session, error) {\n\tnewSession, err := d.createObject(session.UserID, db.SessionProps, session)\n\tif err != nil {\n\t\treturn db.Session{}, err\n\t}\n\treturn newSession.(db.Session), nil\n}\n\nfunc (d *BoltDb) CreateAPIToken(token db.APIToken) (db.APIToken, error) {\n\ttoken.Created = db.GetParsedTime(tz.Now())\n\t// create token in bucket \"token_<user id>\"\n\tnewToken, err := d.createObject(token.UserID, db.TokenProps, token)\n\tif err != nil {\n\t\treturn db.APIToken{}, err\n\t}\n\n\t// create token in bucket \"token\"\n\t_, err = d.createObject(0, globalTokenObject, globalToken{ID: token.ID, UserID: token.UserID})\n\tif err != nil {\n\t\treturn db.APIToken{}, err\n\t}\n\n\treturn newToken.(db.APIToken), nil\n}\n\nfunc (d *BoltDb) GetAPIToken(tokenID string) (token db.APIToken, err error) {\n\tvar t globalToken\n\terr = d.getObject(0, globalTokenObject, strObjectID(tokenID), &t)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = d.getObject(t.UserID, db.TokenProps, strObjectID(tokenID), &token)\n\treturn\n}\n\nfunc (d *BoltDb) ExpireAPIToken(userID int, tokenID string) (err error) {\n\tvar token db.APIToken\n\terr = d.getObject(userID, db.TokenProps, strObjectID(tokenID), &token)\n\tif err != nil {\n\t\treturn\n\t}\n\ttoken.Expired = true\n\terr = d.updateObject(userID, db.TokenProps, token)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteAPIToken(userID int, tokenID string) (err error) {\n\tvar tokens []db.APIToken\n\n\terr = d.getObjects(userID, db.TokenProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\ttoken := i.(db.APIToken)\n\t\treturn strings.HasPrefix(token.ID, tokenID)\n\t}, &tokens)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(tokens) == 0 {\n\t\treturn db.ErrNotFound\n\t}\n\n\terr = d.deleteObject(userID, db.TokenProps, strObjectID(tokens[0].ID), nil)\n\treturn\n}\n\nfunc (d *BoltDb) GetSession(userID int, sessionID int) (session db.Session, err error) {\n\terr = d.getObject(userID, db.SessionProps, intObjectID(sessionID), &session)\n\treturn\n}\n\nfunc (d *BoltDb) ExpireSession(userID int, sessionID int) (err error) {\n\tvar session db.Session\n\terr = d.getObject(userID, db.SessionProps, intObjectID(sessionID), &session)\n\tif err != nil {\n\t\treturn\n\t}\n\tsession.Expired = true\n\terr = d.updateObject(userID, db.SessionProps, session)\n\treturn\n}\n\nfunc (d *BoltDb) SetSessionVerificationMethod(userID int, sessionID int, verificationMethod db.SessionVerificationMethod) error {\n\treturn nil\n}\n\nfunc (d *BoltDb) VerifySession(userID int, sessionID int) (err error) {\n\tvar session db.Session\n\terr = d.getObject(userID, db.SessionProps, intObjectID(sessionID), &session)\n\tif err != nil {\n\t\treturn\n\t}\n\tsession.Verified = true\n\terr = d.updateObject(userID, db.SessionProps, session)\n\treturn\n}\n\nfunc (d *BoltDb) TouchSession(userID int, sessionID int) (err error) {\n\tvar session db.Session\n\terr = d.getObject(userID, db.SessionProps, intObjectID(sessionID), &session)\n\tif err != nil {\n\t\treturn\n\t}\n\tsession.LastActive = tz.Now()\n\terr = d.updateObject(userID, db.SessionProps, session)\n\treturn\n}\n\nfunc (d *BoltDb) GetAPITokens(userID int) (tokens []db.APIToken, err error) {\n\terr = d.getObjects(userID, db.TokenProps, db.RetrieveQueryParams{}, nil, &tokens)\n\n\tslices.SortFunc(tokens, func(a, b db.APIToken) int {\n\t\tif a.Created.Before(b.Created) {\n\t\t\treturn 1\n\t\t}\n\t\tif a.Created.After(b.Created) {\n\t\t\treturn -1\n\t\t}\n\t\treturn 0\n\t})\n\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/task.go",
    "content": "package bolt\n\nimport (\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) CreateTaskStage(stage db.TaskStage) (db.TaskStage, error) {\n\tnewOutput, err := d.createObject(stage.TaskID, db.TaskStageProps, stage)\n\tif err != nil {\n\t\treturn db.TaskStage{}, err\n\t}\n\treturn newOutput.(db.TaskStage), nil\n}\n\nfunc (d *BoltDb) GetTaskStages(projectID int, taskID int) (res []db.TaskStageWithResult, err error) {\n\t// check if task exists in the project\n\t_, err = d.GetTask(projectID, taskID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar stages []db.TaskStage\n\terr = d.getObjects(taskID, db.TaskStageProps, db.RetrieveQueryParams{}, nil, &stages)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Convert TaskStage to TaskStageWithResult\n\tres = make([]db.TaskStageWithResult, len(stages))\n\tfor i, stage := range stages {\n\t\tres[i] = db.TaskStageWithResult{\n\t\t\tID:     stage.ID,\n\t\t\tTaskID: stage.TaskID,\n\t\t\tStart:  stage.Start,\n\t\t\tEnd:    stage.End,\n\t\t\tType:   stage.Type,\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) clearTasks(projectID int, templateID int, maxTasks int) {\n\ttpl, err := d.GetTemplate(projectID, templateID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnTasks := tpl.Tasks\n\n\tif nTasks == 0 { // recalculate number of tasks for the template\n\n\t\tn, err := d.count(projectID, db.TaskProps, db.RetrieveQueryParams{}, func(item any) bool {\n\t\t\ttask := item.(db.Task)\n\n\t\t\treturn task.TemplateID == templateID\n\t\t})\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif n != nTasks {\n\t\t\ttpl.Tasks = n\n\t\t\terr = d.UpdateTemplate(tpl)\n\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tnTasks = n\n\t}\n\n\tif nTasks < maxTasks {\n\t\treturn\n\t}\n\n\ti := 0\n\n\t_ = d.db.Update(func(tx *bbolt.Tx) error {\n\t\tb := tx.Bucket(makeBucketId(db.TaskProps, projectID))\n\t\tif b == nil {\n\t\t\treturn db.ErrNotFound\n\t\t}\n\n\t\tc := b.Cursor()\n\n\t\treturn apply(c, db.TaskProps, db.RetrieveQueryParams{}, func(item any) bool {\n\t\t\ttask := item.(db.Task)\n\n\t\t\tif task.TemplateID != templateID {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\ti++\n\t\t\treturn i > maxTasks\n\t\t}, func(i any) error {\n\t\t\ttask := i.(db.Task)\n\t\t\treturn d.deleteTaskWithOutputs(projectID, task.ID, false, tx)\n\t\t})\n\t})\n}\n\nfunc (d *BoltDb) CreateTask(task db.Task, maxTasks int) (newTask db.Task, err error) {\n\terr = task.PreInsert(nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttask.ID = 0\n\tres, err := d.createObject(0, db.TaskProps, task)\n\tif err != nil {\n\t\treturn\n\t}\n\tnewTask = res.(db.Task)\n\n\tif maxTasks > 0 {\n\t\td.clearTasks(task.ProjectID, task.TemplateID, maxTasks)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) UpdateTask(task db.Task) error {\n\treturn d.updateObject(0, db.TaskProps, task)\n}\n\nfunc (d *BoltDb) CreateTaskOutput(output db.TaskOutput) (db.TaskOutput, error) {\n\tnewOutput, err := d.createObject(output.TaskID, db.TaskOutputProps, output)\n\tif err != nil {\n\t\treturn db.TaskOutput{}, err\n\t}\n\treturn newOutput.(db.TaskOutput), nil\n}\n\nfunc (d *BoltDb) InsertTaskOutputBatch(output []db.TaskOutput) error {\n\tif len(output) == 0 {\n\t\treturn nil\n\t}\n\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\tfor _, out := range output {\n\t\t\t_, err := d.createObjectTx(tx, out.TaskID, db.TaskOutputProps, out)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t})\n}\n\nfunc (d *BoltDb) getTasks(projectID int, templateID *int, params db.RetrieveQueryParams) (tasksWithTpl []db.TaskWithTpl, err error) {\n\tvar tasks []db.Task\n\n\terr = d.getObjects(0, db.TaskProps, params, func(tsk any) bool {\n\t\ttask := tsk.(db.Task)\n\n\t\tif task.ProjectID != projectID {\n\t\t\treturn false\n\t\t}\n\n\t\tif templateID != nil && task.TemplateID != *templateID {\n\t\t\treturn false\n\t\t}\n\n\t\treturn true\n\t}, &tasks)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar templates = make(map[int]db.Template)\n\tvar users = make(map[int]db.User)\n\n\ttasksWithTpl = make([]db.TaskWithTpl, len(tasks))\n\tfor i, task := range tasks {\n\t\ttpl, ok := templates[task.TemplateID]\n\t\tif !ok {\n\t\t\tif templateID == nil {\n\t\t\t\ttpl, _ = d.getRawTemplate(task.ProjectID, task.TemplateID)\n\t\t\t} else {\n\t\t\t\ttpl, _ = d.getRawTemplate(task.ProjectID, *templateID)\n\t\t\t}\n\t\t\ttemplates[task.TemplateID] = tpl\n\t\t}\n\t\ttasksWithTpl[i] = db.TaskWithTpl{Task: task}\n\t\ttasksWithTpl[i].TemplatePlaybook = tpl.Playbook\n\t\ttasksWithTpl[i].TemplateAlias = tpl.Name\n\t\ttasksWithTpl[i].TemplateType = tpl.Type\n\t\ttasksWithTpl[i].TemplateApp = tpl.App\n\t\tif task.UserID != nil {\n\t\t\tusr, ok := users[*task.UserID]\n\t\t\tif !ok {\n\t\t\t\t// trying to get user , but ignore error, because\n\t\t\t\t// user can be deleted, and it is ok\n\t\t\t\tusr, _ = d.GetUser(*task.UserID)\n\t\t\t\tusers[*task.UserID] = usr\n\t\t\t}\n\t\t\ttasksWithTpl[i].UserName = &usr.Name\n\t\t}\n\n\t\terr = tasksWithTpl[i].Fill(d)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetTask(projectID int, taskID int) (task db.Task, err error) {\n\terr = d.getObject(0, db.TaskProps, intObjectID(taskID), &task)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif task.ProjectID != projectID {\n\t\ttask = db.Task{}\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetTemplateTasks(projectID int, templateID int, params db.RetrieveQueryParams) ([]db.TaskWithTpl, error) {\n\treturn d.getTasks(projectID, &templateID, params)\n}\n\nfunc (d *BoltDb) GetProjectTasks(projectID int, params db.RetrieveQueryParams) ([]db.TaskWithTpl, error) {\n\treturn d.getTasks(projectID, nil, params)\n}\n\nfunc (d *BoltDb) deleteTaskWithOutputs(projectID int, taskID int, checkTaskExisting bool, tx *bbolt.Tx) (err error) {\n\n\tif checkTaskExisting {\n\t\t_, err = d.GetTask(projectID, taskID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = d.deleteObject(0, db.TaskProps, intObjectID(taskID), tx)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = tx.DeleteBucket(makeBucketId(db.TaskOutputProps, taskID))\n\tif err == bbolt.ErrBucketNotFound {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) DeleteTaskWithOutputs(projectID int, taskID int) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.deleteTaskWithOutputs(projectID, taskID, true, tx)\n\t})\n}\n\nfunc (d *BoltDb) GetTaskOutputs(projectID int, taskID int, params db.RetrieveQueryParams) (outputs []db.TaskOutput, err error) {\n\t// check if task exists in the project\n\t_, err = d.GetTask(projectID, taskID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.getObjects(taskID, db.TaskOutputProps, params, nil, &outputs)\n\n\treturn\n}\n\nfunc (d *BoltDb) EndTaskStage(taskID int, stageID int, end time.Time) error {\n\treturn nil\n}\n\nfunc (d *BoltDb) CreateTaskStageResult(taskID int, stageID int, result map[string]any) error {\n\treturn nil\n}\n\nfunc (d *BoltDb) GetTaskStageResult(projectID int, taskID int, stageID int) (res db.TaskStageResult, err error) {\n\treturn\n}\n\nfunc (d *BoltDb) GetTaskStageOutputs(projectID int, taskID int, stageID int) (res []db.TaskOutput, err error) {\n\treturn\n}\n\nfunc (d *BoltDb) GetNodeCount() (int, error) {\n\treturn 0, nil\n}\n\nfunc (d *BoltDb) GetUiCount() (int, error) {\n\treturn 1, nil\n}\n"
  },
  {
    "path": "db/bolt/template.go",
    "content": "package bolt\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"sort\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) CreateTemplate(template db.Template) (newTemplate db.Template, err error) {\n\terr = template.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate.SurveyVarsJSON = db.ObjectToJSON(template.SurveyVars)\n\tnewTpl, err := d.createObject(template.ProjectID, db.TemplateProps, template)\n\tif err != nil {\n\t\treturn\n\t}\n\tnewTemplate = newTpl.(db.Template)\n\terr = d.UpdateTemplateVaults(template.ProjectID, newTemplate.ID, template.Vaults)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = db.FillTemplate(d, &newTemplate)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateTemplate(template db.Template) error {\n\terr := template.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttemplate.SurveyVarsJSON = db.ObjectToJSON(template.SurveyVars)\n\terr = d.updateObject(template.ProjectID, db.TemplateProps, template)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.UpdateTemplateVaults(template.ProjectID, template.ID, template.Vaults)\n}\n\nfunc (d *BoltDb) setTemplateDescriptionTx(projectID int, templateID int, description string, tx *bbolt.Tx) error {\n\n\ttemplate, err := d.getRawTemplateTx(projectID, templateID, tx)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif description == \"\" {\n\t\ttemplate.Description = nil\n\t} else {\n\t\ttemplate.Description = &description\n\t}\n\n\terr = d.updateObjectTx(tx, projectID, db.TemplateProps, template)\n\n\treturn err\n}\n\nfunc (d *BoltDb) SetTemplateDescription(projectID int, templateID int, description string) error {\n\terr := d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.setTemplateDescriptionTx(projectID, templateID, description, tx)\n\t})\n\n\treturn err\n}\n\nfunc (d *BoltDb) GetTemplatesWithPermissions(projectID int, userID int, filter db.TemplateFilter, params db.RetrieveQueryParams) (templates []db.TemplateWithPerms, err error) {\n\tres, err := d.GetTemplates(projectID, filter, params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, tpl := range res {\n\t\tvar tplWithPerms db.TemplateWithPerms\n\t\ttplWithPerms.Template = tpl\n\t\ttemplates = append(templates, tplWithPerms)\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) GetTemplates(projectID int, filter db.TemplateFilter, params db.RetrieveQueryParams) (templates []db.Template, err error) {\n\tvar view db.View\n\n\tif filter.ViewID != nil {\n\t\tview, err = d.GetView(projectID, *filter.ViewID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar ftr = func(tpl any) bool {\n\t\ttemplate := tpl.(db.Template)\n\t\tvar res = true\n\t\tif filter.App != nil {\n\t\t\tres = res && template.App == *filter.App\n\t\t}\n\n\t\tif filter.ViewID != nil {\n\t\t\tswitch view.Type {\n\t\t\tcase db.ViewTypeAll:\n\t\t\tcase db.ViewTypeCustom:\n\t\t\t\tres = res && template.ViewID != nil && *template.ViewID == *filter.ViewID\n\t\t\t}\n\t\t}\n\n\t\tif filter.BuildTemplateID != nil {\n\t\t\tres = res && template.BuildTemplateID != nil && *template.BuildTemplateID == *filter.BuildTemplateID\n\t\t\tif filter.AutorunOnly {\n\t\t\t\tres = res && template.Autorun\n\t\t\t}\n\t\t}\n\n\t\treturn res\n\t}\n\n\terr = d.getObjects(projectID, db.TemplateProps, params, ftr, &templates)\n\n\tvar sortColumn string\n\tvar sortReverse bool\n\n\tif params.SortBy != \"\" {\n\t\tsortColumn = params.SortBy\n\t\tsortReverse = params.SortInverted\n\t} else if filter.ViewID != nil && view.SortColumn != nil {\n\t\tsortColumn = *view.SortColumn\n\t\tsortReverse = view.SortReverse\n\t}\n\n\tswitch sortColumn {\n\tcase \"name\":\n\t\tsort.Slice(templates, func(i, j int) bool {\n\t\t\tif sortReverse {\n\t\t\t\treturn templates[i].Name > templates[j].Name\n\t\t\t} else {\n\t\t\t\treturn templates[i].Name < templates[j].Name\n\t\t\t}\n\t\t})\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplatesMap := make(map[int]*db.Template)\n\n\tfor i := 0; i < len(templates); i++ {\n\n\t\tif templates[i].SurveyVarsJSON != nil {\n\t\t\terr = json.Unmarshal([]byte(*templates[i].SurveyVarsJSON), &templates[i].SurveyVars)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\ttemplatesMap[templates[i].ID] = &templates[i]\n\t}\n\n\tunfilledTemplateCount := len(templates)\n\n\tvar errEndOfTemplates = errors.New(\"no more templates to filling\")\n\n\terr = d.apply(projectID, db.TaskProps, db.RetrieveQueryParams{}, func(i any) error {\n\t\ttask := i.(db.Task)\n\n\t\tif task.ProjectID != projectID {\n\t\t\treturn nil\n\t\t}\n\n\t\ttpl, ok := templatesMap[task.TemplateID]\n\t\tif !ok {\n\t\t\treturn nil\n\t\t}\n\n\t\tif tpl.LastTask != nil {\n\t\t\treturn nil\n\t\t}\n\n\t\ttpl.LastTask = &db.TaskWithTpl{\n\t\t\tTask:             task,\n\t\t\tTemplatePlaybook: tpl.Playbook,\n\t\t\tTemplateAlias:    tpl.Name,\n\t\t\tTemplateType:     tpl.Type,\n\t\t\tTemplateApp:      tpl.App,\n\t\t}\n\n\t\tunfilledTemplateCount--\n\n\t\tif unfilledTemplateCount <= 0 {\n\t\t\treturn errEndOfTemplates\n\t\t}\n\n\t\treturn nil\n\t})\n\n\tif errors.Is(err, errEndOfTemplates) {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *BoltDb) getRawTemplateTx(projectID int, templateID int, tx *bbolt.Tx) (template db.Template, err error) {\n\terr = d.getObjectTx(tx, projectID, db.TemplateProps, intObjectID(templateID), &template)\n\treturn\n}\n\nfunc (d *BoltDb) getRawTemplate(projectID int, templateID int) (template db.Template, err error) {\n\terr = d.getObject(projectID, db.TemplateProps, intObjectID(templateID), &template)\n\treturn\n}\n\nfunc (d *BoltDb) GetTemplate(projectID int, templateID int) (template db.Template, err error) {\n\ttemplate, err = d.getRawTemplate(projectID, templateID)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = db.FillTemplate(d, &template)\n\treturn\n}\n\nfunc (d *BoltDb) deleteTemplate(projectID int, templateID int, tx *bbolt.Tx) (err error) {\n\tinUse, err := d.isObjectInUse(projectID, db.TemplateProps, intObjectID(templateID), db.TemplateProps)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif inUse {\n\t\treturn db.ErrInvalidOperation\n\t}\n\n\ttasks, err := d.GetTemplateTasks(projectID, templateID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, task := range tasks {\n\t\terr = d.deleteTaskWithOutputs(projectID, task.ID, true, tx)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tschedules, err := d.GetTemplateSchedules(projectID, templateID, false)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, sch := range schedules {\n\t\terr = d.deleteSchedule(projectID, sch.ID, tx)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Delete template vaults\n\tvaults, err := d.GetTemplateVaults(projectID, templateID)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, sch := range vaults {\n\t\terr = d.deleteTemplateVault(projectID, sch.ID, tx)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tintegrations, err := d.GetIntegrations(projectID, db.RetrieveQueryParams{}, false)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, integration := range integrations {\n\t\tif integration.TemplateID != templateID {\n\t\t\tcontinue\n\t\t}\n\t\td.deleteIntegration(projectID, integration.ID, tx)\n\t}\n\n\treturn d.deleteObject(projectID, db.TemplateProps, intObjectID(templateID), tx)\n}\n\nfunc (d *BoltDb) DeleteTemplate(projectID int, templateID int) error {\n\treturn d.db.Update(func(tx *bbolt.Tx) error {\n\t\treturn d.deleteTemplate(projectID, templateID, tx)\n\t})\n}\n\nfunc (d *BoltDb) GetTemplateRefs(projectID int, templateID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.TemplateProps, templateID)\n}\n\nfunc (d *BoltDb) GetTemplatePermission(projectID int, templateID int, userID int) (perm db.ProjectUserPermission, err error) {\n\treturn\n}\nfunc (d *BoltDb) GetTemplateRoles(projectID int, templateID int) (roles []db.TemplateRolePerm, err error) {\n\troles = []db.TemplateRolePerm{}\n\treturn\n}\nfunc (d *BoltDb) CreateTemplateRole(role db.TemplateRolePerm) (newRole db.TemplateRolePerm, err error) {\n\treturn\n}\nfunc (d *BoltDb) DeleteTemplateRole(projectID int, templateID int, roleID int) error {\n\treturn nil\n}\nfunc (d *BoltDb) UpdateTemplateRole(role db.TemplateRolePerm) error {\n\treturn nil\n}\nfunc (d *BoltDb) GetTemplateRole(projectID int, templateID int, roleID int) (role db.TemplateRolePerm, err error) {\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/template_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"testing\"\n)\n\nfunc Test_SetTemplateDescription(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"TestProject\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\ttemplate, err := store.CreateTemplate(db.Template{\n\t\tProjectID: proj.ID,\n\t\tName:      \"TestTemplate\",\n\t\tPlaybook:  \"test.yml\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\terr = store.SetTemplateDescription(proj.ID, template.ID, \"New description\")\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\ttpl, err := store.GetTemplate(proj.ID, template.ID)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif *tpl.Description != \"New description\" {\n\t\tt.Fatalf(\"expected description to be 'New description', got '%s'\", *tpl.Description)\n\t}\n}\n"
  },
  {
    "path": "db/bolt/template_vault.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"go.etcd.io/bbolt\"\n)\n\nfunc (d *BoltDb) GetTemplateVaults(projectID int, templateID int) (vaults []db.TemplateVault, err error) {\n\terr = d.getObjects(projectID, db.TemplateVaultProps, db.RetrieveQueryParams{}, func(referringObj any) bool {\n\t\treturn referringObj.(db.TemplateVault).TemplateID == templateID\n\t}, &vaults)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor i := range vaults {\n\t\terr = db.FillTemplateVault(d, projectID, &vaults[i])\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\nfunc (d *BoltDb) CreateTemplateVault(vault db.TemplateVault) (newVault db.TemplateVault, err error) {\n\tvar newTpl any\n\tnewTpl, err = d.createObject(vault.ProjectID, db.TemplateVaultProps, vault)\n\tif err != nil {\n\t\treturn\n\t}\n\tnewVault = newTpl.(db.TemplateVault)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateTemplateVaults(projectID int, templateID int, vaults []db.TemplateVault) (err error) {\n\tif vaults == nil {\n\t\tvaults = []db.TemplateVault{}\n\t}\n\n\tvar oldVaults []db.TemplateVault\n\toldVaults, err = d.GetTemplateVaults(projectID, templateID)\n\n\terr = d.db.Update(func(tx *bbolt.Tx) error {\n\t\tfor _, vault := range oldVaults {\n\t\t\terr = d.deleteObject(projectID, db.TemplateVaultProps, intObjectID(vault.ID), tx)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tfor _, vault := range vaults {\n\t\t\tvault.ProjectID = projectID\n\t\t\tvault.TemplateID = templateID\n\n\t\t\tswitch vault.Type {\n\t\t\tcase \"password\":\n\t\t\t\tvault.Script = nil\n\t\t\tcase \"script\":\n\t\t\t\tvault.VaultKeyID = nil\n\t\t\t}\n\n\t\t\t_, err = d.createObjectTx(tx, projectID, db.TemplateVaultProps, vault)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t})\n\n\treturn\n}\n\nfunc (d *BoltDb) deleteTemplateVault(projectID int, vaultID int, tx *bbolt.Tx) error {\n\treturn d.deleteObject(projectID, db.TemplateVaultProps, intObjectID(vaultID), tx)\n}\n"
  },
  {
    "path": "db/bolt/template_vault_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"testing\"\n)\n\nfunc TestGetTemplateVaults(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"TestProject\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\ttemplate, err := store.CreateTemplate(db.Template{\n\t\tProjectID: proj.ID,\n\t\tName:      \"TestTemplate\",\n\t\tPlaybook:  \"test.yml\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tvault, err := store.CreateTemplateVault(db.TemplateVault{\n\t\tProjectID:  proj.ID,\n\t\tTemplateID: template.ID,\n\t\tType:       \"password\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tvaults, err := store.GetTemplateVaults(proj.ID, template.ID)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(vaults) != 1 || vaults[0].ID != vault.ID {\n\t\tt.Fatalf(\"expected 1 vault, got %d\", len(vaults))\n\t}\n}\n\nfunc TestCreateTemplateVault(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"TestProject\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\ttemplate, err := store.CreateTemplate(db.Template{\n\t\tProjectID: proj.ID,\n\t\tName:      \"TestTemplate\",\n\t\tPlaybook:  \"test.yml\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tvault, err := store.CreateTemplateVault(db.TemplateVault{\n\t\tProjectID:  proj.ID,\n\t\tTemplateID: template.ID,\n\t\tType:       \"password\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfoundVaults, err := store.GetTemplateVaults(proj.ID, template.ID)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(foundVaults) != 1 || foundVaults[0].ID != vault.ID {\n\t\tt.Fatalf(\"expected 1 vault, got %d\", len(foundVaults))\n\t}\n}\n\nfunc TestUpdateTemplateVaults(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"TestProject\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\ttemplate, err := store.CreateTemplate(db.Template{\n\t\tProjectID: proj.ID,\n\t\tName:      \"TestTemplate\",\n\t\tPlaybook:  \"test.yml\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\t_, err = store.CreateTemplateVault(db.TemplateVault{\n\t\tProjectID:  proj.ID,\n\t\tTemplateID: template.ID,\n\t\tType:       \"password\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tvault2 := db.TemplateVault{\n\t\tProjectID:  proj.ID,\n\t\tTemplateID: template.ID,\n\t\tType:       \"script\",\n\t}\n\n\terr = store.UpdateTemplateVaults(proj.ID, template.ID, []db.TemplateVault{vault2})\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tvaults, err := store.GetTemplateVaults(proj.ID, template.ID)\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(vaults) != 1 || vaults[0].Type != \"script\" {\n\t\tt.Fatalf(\"expected 1 vault with type 'script', got %d\", len(vaults))\n\t}\n}\n"
  },
  {
    "path": "db/bolt/user.go",
    "content": "package bolt\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"golang.org/x/crypto/bcrypt\"\n)\n\nfunc (d *BoltDb) CreateUserWithoutPassword(user db.User) (newUser db.User, err error) {\n\n\terr = db.ValidateUser(user)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.GetUserByLoginOrEmail(user.Username, user.Email)\n\n\tif err == nil {\n\t\terr = fmt.Errorf(\"user already exists\")\n\t\treturn\n\t}\n\n\tif err != db.ErrNotFound {\n\t\treturn\n\t}\n\n\tuser.Password = \"\"\n\tuser.Created = db.GetParsedTime(tz.Now())\n\n\tusr, err := d.createObject(0, db.UserProps, user)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewUser = usr.(db.User)\n\treturn\n}\n\nfunc (d *BoltDb) ImportUser(user db.UserWithPwd) (newUser db.User, err error) {\n\treturn db.User{}, errors.New(\"unsupported operation\")\n}\n\nfunc (d *BoltDb) CreateUser(user db.UserWithPwd) (newUser db.User, err error) {\n\n\terr = db.ValidateUser(user.User)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.GetUserByLoginOrEmail(user.Username, user.Email)\n\n\tif err == nil {\n\t\terr = fmt.Errorf(\"user already exists\")\n\t\treturn\n\t}\n\n\tif err != db.ErrNotFound {\n\t\treturn\n\t}\n\n\tpwdHash, err := bcrypt.GenerateFromPassword([]byte(user.Pwd), 11)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tuser.Password = string(pwdHash)\n\tuser.Created = db.GetParsedTime(tz.Now())\n\n\tusr, err := d.createObject(0, db.UserProps, user)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewUser = usr.(db.UserWithPwd).User\n\treturn\n}\n\nfunc (d *BoltDb) DeleteUser(userID int) error {\n\tprojects, err := d.GetProjects(userID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO: add transaction\n\n\tfor _, p := range projects {\n\t\t_ = d.DeleteProjectUser(p.ID, userID)\n\t}\n\n\treturn d.deleteObject(0, db.UserProps, intObjectID(userID), nil)\n}\n\nfunc (d *BoltDb) UpdateUser(user db.UserWithPwd) error {\n\tvar password string\n\n\tif user.Pwd != \"\" {\n\t\tvar pwdHash []byte\n\t\tpwdHash, err := bcrypt.GenerateFromPassword([]byte(user.Pwd), 11)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpassword = string(pwdHash)\n\t} else {\n\t\toldUser, err := d.GetUser(user.ID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpassword = oldUser.Password\n\t}\n\n\tuser.Password = password\n\n\treturn d.updateObject(0, db.UserProps, user)\n}\n\nfunc (d *BoltDb) SetUserPassword(userID int, password string) error {\n\tpwdHash, err := bcrypt.GenerateFromPassword([]byte(password), 11)\n\tif err != nil {\n\t\treturn err\n\t}\n\tuser, err := d.GetUser(userID)\n\tif err != nil {\n\t\treturn err\n\t}\n\tuser.Password = string(pwdHash)\n\treturn d.updateObject(0, db.UserProps, user)\n}\n\nfunc (d *BoltDb) CreateProjectUser(projectUser db.ProjectUser) (db.ProjectUser, error) {\n\tnewProjectUser, err := d.createObject(projectUser.ProjectID, db.ProjectUserProps, projectUser)\n\n\tif err != nil {\n\t\treturn db.ProjectUser{}, err\n\t}\n\n\treturn newProjectUser.(db.ProjectUser), nil\n}\n\nfunc (d *BoltDb) GetProjectUser(projectID, userID int) (user db.ProjectUser, err error) {\n\terr = d.getObject(projectID, db.ProjectUserProps, intObjectID(userID), &user)\n\treturn\n}\n\nfunc (d *BoltDb) GetProjectUsers(projectID int, params db.RetrieveQueryParams) (users []db.UserWithProjectRole, err error) {\n\tvar projectUsers []db.ProjectUser\n\terr = d.getObjects(projectID, db.ProjectUserProps, params, nil, &projectUsers)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, projUser := range projectUsers {\n\t\tvar usr db.User\n\t\tusr, err = d.GetUser(projUser.UserID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tvar usrWithRole = db.UserWithProjectRole{\n\t\t\tUser: usr,\n\t\t\tRole: projUser.Role,\n\t\t}\n\t\tusers = append(users, usrWithRole)\n\t}\n\treturn\n}\n\nfunc (d *BoltDb) UpdateProjectUser(projectUser db.ProjectUser) error {\n\treturn d.updateObject(projectUser.ProjectID, db.ProjectUserProps, projectUser)\n}\n\nfunc (d *BoltDb) DeleteProjectUser(projectID, userID int) error {\n\treturn d.deleteObject(projectID, db.ProjectUserProps, intObjectID(userID), nil)\n}\n\nfunc (d *BoltDb) getTotp(userID int) (res *db.UserTotp, err error) {\n\n\tcurrent := make([]db.UserTotp, 0)\n\terr = d.getObjects(userID, db.UserTotpProps, db.RetrieveQueryParams{}, nil, &current)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(current) > 0 {\n\t\tres = &current[0]\n\t}\n\n\treturn\n}\n\n// GetUser retrieves a user from the database by ID\nfunc (d *BoltDb) GetUser(userID int) (user db.User, err error) {\n\terr = d.getObject(0, db.UserProps, intObjectID(userID), &user)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tuser.Totp, err = d.getTotp(userID)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetProUserCount() (count int, err error) {\n\tvar users []db.User\n\terr = d.getObjects(0, db.UserProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\tuser := i.(db.User)\n\t\treturn user.Pro\n\t}, &users)\n\tif err != nil {\n\t\treturn\n\t}\n\tcount = len(users)\n\treturn\n}\n\nfunc (d *BoltDb) GetUserCount() (count int, err error) {\n\tvar users []db.User\n\terr = d.getObjects(0, db.UserProps, db.RetrieveQueryParams{}, nil, &users)\n\tif err != nil {\n\t\treturn\n\t}\n\tcount = len(users)\n\treturn\n}\n\nfunc (d *BoltDb) GetUsers(params db.RetrieveQueryParams) (users []db.User, err error) {\n\terr = d.getObjects(0, db.UserProps, params, nil, &users)\n\treturn\n}\n\nfunc (d *BoltDb) GetUserByLoginOrEmail(login string, email string) (existingUser db.User, err error) {\n\tvar users []db.User\n\terr = d.getObjects(0, db.UserProps, db.RetrieveQueryParams{}, nil, &users)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfound := false\n\n\tfor _, user := range users {\n\t\tif user.Username == login || user.Email == email {\n\t\t\texistingUser = user\n\t\t\tfound = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !found {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\texistingUser.Totp, err = d.getTotp(existingUser.ID)\n\n\treturn\n}\n\nfunc (d *BoltDb) GetAllAdmins() (users []db.User, err error) {\n\terr = d.getObjects(0, db.UserProps, db.RetrieveQueryParams{}, func(i any) bool {\n\t\tuser := i.(db.User)\n\t\treturn user.Admin\n\t}, &users)\n\treturn\n}\n\nfunc (d *BoltDb) AddTotpVerification(userID int, url string, recoveryHash string) (totp db.UserTotp, err error) {\n\n\tcurrent := make([]db.UserTotp, 0)\n\terr = d.getObjects(userID, db.UserTotpProps, db.RetrieveQueryParams{}, nil, &current)\n\n\tif len(current) > 0 {\n\t\terr = fmt.Errorf(\"already exists\")\n\t\treturn\n\t}\n\n\ttotp.UserID = userID\n\ttotp.URL = url\n\ttotp.RecoveryHash = recoveryHash\n\ttotp.Created = db.GetParsedTime(tz.Now())\n\n\tnewTotp, err := d.createObject(userID, db.UserTotpProps, totp)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttotp = newTotp.(db.UserTotp)\n\treturn\n}\n\nfunc (d *BoltDb) DeleteTotpVerification(userID int, totpID int) error {\n\treturn d.deleteObject(userID, db.UserTotpProps, intObjectID(totpID), nil)\n}\n\nfunc (d *BoltDb) AddEmailOtpVerification(userID int, code string) (res db.UserEmailOtp, err error) {\n\terr = db.ErrNotFound\n\treturn\n}\nfunc (d *BoltDb) DeleteEmailOtpVerification(userID int, totpID int) (err error) {\n\terr = db.ErrNotFound\n\treturn\n}\n"
  },
  {
    "path": "db/bolt/user_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/stretchr/testify/require\"\n\t\"testing\"\n)\n\nfunc TestBoltDb_UpdateProjectUser(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tusr, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"denguk@example.com\",\n\t\t\tName:     \"Denis Gukov\",\n\t\t\tUsername: \"fiftin\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\trequire.NoError(t, err)\n\n\tprojUser, err := store.CreateProjectUser(db.ProjectUser{\n\t\tProjectID: proj1.ID,\n\t\tUserID:    usr.ID,\n\t\tRole:      db.ProjectOwner,\n\t})\n\trequire.NoError(t, err)\n\n\tprojUser.Role = db.ProjectOwner\n\terr = store.UpdateProjectUser(projUser)\n\trequire.NoError(t, err)\n}\n\nfunc TestGetUsers(t *testing.T) {\n\tstore := CreateTestStore()\n\n\t_, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"denguk@example.com\",\n\t\t\tName:     \"Denis Gukov\",\n\t\t\tUsername: \"fiftin\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\tfound, err := store.GetUsers(db.RetrieveQueryParams{})\n\trequire.NoError(t, err)\n\n\trequire.Equal(t, 1, len(found))\n}\n\nfunc TestGetUser(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tusr, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"denguk@example.com\",\n\t\t\tName:     \"Denis Gukov\",\n\t\t\tUsername: \"fiftin\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\tfound, err := store.GetUser(usr.ID)\n\trequire.NoError(t, err)\n\n\trequire.Equal(t, \"fiftin\", found.Username)\n\n\terr = store.DeleteUser(usr.ID)\n\trequire.NoError(t, err)\n}\n\nfunc TestGetUserCount(t *testing.T) {\n\tstore := CreateTestStore()\n\n\t// Create first user\n\t_, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"user1@example.com\",\n\t\t\tName:     \"User One\",\n\t\t\tUsername: \"userone\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\t// Create second user\n\t_, err = store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"user2@example.com\",\n\t\t\tName:     \"User Two\",\n\t\t\tUsername: \"usertwo\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\t// Get user count\n\tcount, err := store.GetUserCount()\n\trequire.NoError(t, err)\n\n\t// Verify the count\n\trequire.Equal(t, 2, count)\n}\n\nfunc TestBoltDb_DeleteUser(t *testing.T) {\n\tstore := CreateTestStore()\n\n\t// Create a user\n\tusr, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"123456\",\n\t\tUser: db.User{\n\t\t\tEmail:    \"deleteuser@example.com\",\n\t\t\tName:     \"Delete User\",\n\t\t\tUsername: \"deleteuser\",\n\t\t},\n\t})\n\trequire.NoError(t, err)\n\n\t// Create a project\n\tproj, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"DeleteUserProject\",\n\t})\n\trequire.NoError(t, err)\n\n\t// Associate the user with the project\n\t_, err = store.CreateProjectUser(db.ProjectUser{\n\t\tProjectID: proj.ID,\n\t\tUserID:    usr.ID,\n\t\tRole:      db.ProjectOwner,\n\t})\n\trequire.NoError(t, err)\n\n\t// Delete the user\n\terr = store.DeleteUser(usr.ID)\n\trequire.NoError(t, err)\n\n\t// Verify the user is deleted\n\t_, err = store.GetUser(usr.ID)\n\trequire.Error(t, err)\n\n\t// Verify the project-user association is deleted\n\t_, err = store.GetProjectUser(proj.ID, usr.ID)\n\trequire.Error(t, err)\n}\n"
  },
  {
    "path": "db/bolt/view.go",
    "content": "package bolt\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *BoltDb) GetView(projectID int, viewID int) (view db.View, err error) {\n\terr = d.getObject(projectID, db.ViewProps, intObjectID(viewID), &view)\n\treturn\n}\n\nfunc (d *BoltDb) GetViews(projectID int) (views []db.View, err error) {\n\terr = d.getObjects(projectID, db.ViewProps, db.RetrieveQueryParams{}, nil, &views)\n\treturn\n}\n\nfunc (d *BoltDb) UpdateView(view db.View) error {\n\treturn d.updateObject(view.ProjectID, db.ViewProps, view)\n}\n\nfunc (d *BoltDb) CreateView(view db.View) (db.View, error) {\n\tnewView, err := d.createObject(view.ProjectID, db.ViewProps, view)\n\treturn newView.(db.View), err\n}\n\nfunc (d *BoltDb) DeleteView(projectID int, viewID int) error {\n\treturn d.deleteObject(projectID, db.ViewProps, intObjectID(viewID), nil)\n}\n\nfunc (d *BoltDb) SetViewPositions(projectID int, positions map[int]int) error {\n\tfor id, position := range positions {\n\t\tview, err := d.GetView(projectID, id)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tview.Position = position\n\t\terr = d.UpdateView(view)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "db/bolt/view_test.go",
    "content": "package bolt\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"sort\"\n\t\"testing\"\n)\n\nfunc TestGetViews(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\t_, err = store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetViews(proj1.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(found) != 1 {\n\t\tt.Fatal()\n\t}\n\n\tview, err := store.GetView(proj1.ID, found[0].ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif view.ID != found[0].ID || view.Title != found[0].Title || view.Position != found[0].Position {\n\t\tt.Fatal()\n\t}\n}\n\nfunc TestSetViewPositions(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tv1, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  4,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tv2, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  2,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetViews(proj1.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(found) != 2 {\n\t\tt.Fatal()\n\t}\n\n\tsort.Slice(found, func(i, j int) bool {\n\t\treturn found[i].Position < found[j].Position\n\t})\n\n\tif found[0].Position != v2.Position || found[1].Position != v1.Position {\n\t\tt.Fatal()\n\t}\n\n\terr = store.SetViewPositions(proj1.ID, map[int]int{\n\t\tv1.ID: 3,\n\t\tv2.ID: 6,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err = store.GetViews(proj1.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif len(found) != 2 {\n\t\tt.Fatal()\n\t}\n\n\tsort.Slice(found, func(i, j int) bool {\n\t\treturn found[i].Position < found[j].Position\n\t})\n\n\tif found[0].Position != 3 || found[1].Position != 6 {\n\t\tt.Fatal()\n\t}\n}\nfunc TestGetView(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tview, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetView(proj1.ID, view.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif found.ID != view.ID || found.Title != view.Title || found.Position != view.Position {\n\t\tt.Fatal()\n\t}\n}\n\nfunc TestUpdateView(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tview, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tview.Title = \"Updated Test\"\n\terr = store.UpdateView(view)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tupdatedView, err := store.GetView(proj1.ID, view.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif updatedView.Title != \"Updated Test\" {\n\t\tt.Fatal()\n\t}\n}\n\nfunc TestCreateView(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tview, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tfound, err := store.GetView(proj1.ID, view.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tif found.ID != view.ID || found.Title != view.Title || found.Position != view.Position {\n\t\tt.Fatal()\n\t}\n}\n\nfunc TestDeleteView(t *testing.T) {\n\tstore := CreateTestStore()\n\n\tproj1, err := store.CreateProject(db.Project{\n\t\tCreated: tz.Now(),\n\t\tName:    \"Test1\",\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\tview, err := store.CreateView(db.View{\n\t\tProjectID: proj1.ID,\n\t\tTitle:     \"Test\",\n\t\tPosition:  1,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\terr = store.DeleteView(proj1.ID, view.ID)\n\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n\n\t_, err = store.GetView(proj1.ID, view.ID)\n\n\tif err == nil {\n\t\tt.Fatal(\"Expected error, got nil\")\n\t}\n}\n"
  },
  {
    "path": "db/config.go",
    "content": "package db\n\nimport (\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"strings\"\n)\n\nfunc ConvertFlatToNested(flatMap map[string]string) map[string]any {\n\tnestedMap := make(map[string]any)\n\n\tfor key, value := range flatMap {\n\t\tparts := strings.Split(key, \".\")\n\t\tcurrentMap := nestedMap\n\n\t\tfor i, part := range parts {\n\t\t\tif i == len(parts)-1 {\n\t\t\t\tcurrentMap[part] = value\n\t\t\t} else {\n\t\t\t\tif _, exists := currentMap[part]; !exists {\n\t\t\t\t\tcurrentMap[part] = make(map[string]any)\n\t\t\t\t}\n\t\t\t\tcurrentMap = currentMap[part].(map[string]any)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nestedMap\n}\n\nfunc FillConfigFromDB(store Store) (err error) {\n\n\topts, err := store.GetOptions(RetrieveQueryParams{})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\toptions := ConvertFlatToNested(opts)\n\n\tif options[\"apps\"] == nil {\n\t\toptions[\"apps\"] = make(map[string]any)\n\t}\n\n\terr = util.AssignMapToStruct(options, util.Config)\n\n\treturn\n}\n"
  },
  {
    "path": "db/config_test.go",
    "content": "package db\n\nimport (\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nfunc TestConfig_assignMapToStruct(t *testing.T) {\n\ttype Address struct {\n\t\tStreet string `json:\"street\"`\n\t\tCity   string `json:\"city\"`\n\t}\n\n\ttype Detail struct {\n\t\tValue       string `json:\"value\"`\n\t\tDescription string `json:\"description\"`\n\t}\n\n\ttype User struct {\n\t\tName    string            `json:\"name\"`\n\t\tAge     int               `json:\"age\"`\n\t\tEmail   string            `json:\"email\"`\n\t\tAddress Address           `json:\"address\"`\n\t\tDetails map[string]Detail `json:\"details\"`\n\t\tTags    []string          `json:\"tags\"`\n\t}\n\n\tjohnData := map[string]any{\n\t\t\"name\":  \"John Doe\",\n\t\t\"age\":   30,\n\t\t\"email\": \"john.doe@example.com\",\n\t\t\"address\": map[string]any{\n\t\t\t\"street\": \"123 Main St\",\n\t\t\t\"city\":   \"Anytown\",\n\t\t},\n\t\t\"details\": map[string]any{\n\t\t\t\"occupation\": map[string]any{\n\t\t\t\t\"value\":       \"engineer\",\n\t\t\t\t\"description\": \"Works with computers\",\n\t\t\t},\n\t\t\t\"hobby\": map[string]any{\n\t\t\t\t\"value\":       \"hiking\",\n\t\t\t\t\"description\": \"Enjoys the outdoors\",\n\t\t\t},\n\t\t\t\"interests\": map[string]any{\n\t\t\t\t\"description\": \"Ho ho ho\",\n\t\t\t},\n\t\t},\n\t\t\"tags\": \"[\\\"test\\\"]\",\n\t}\n\n\tvar john User\n\tjohn.Details = make(map[string]Detail)\n\tjohn.Details[\"interests\"] = Detail{\n\t\tValue:       \"politics\",\n\t\tDescription: \"Follows current events\",\n\t}\n\n\terr := util.AssignMapToStruct(johnData, &john)\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//if john.Name != \"John Doe\" {\n\t//\tt.Errorf(\"Expected name to be John Doe but got %s\", john.Name)\n\t//}\n\n\tif john.Details[\"interests\"].Description != \"Ho ho ho\" {\n\t\tt.Errorf(\"Expected interests description to be 'Ho ho ho' but got %s\", john.Details[\"interests\"].Description)\n\t}\n\n\tif john.Details[\"interests\"].Value != \"politics\" {\n\t\tt.Errorf(\"Expected interests to be politics but got '%s'\", john.Details[\"interests\"].Value)\n\t}\n\n\tif len(john.Tags) < 1 {\n\t\tt.Fatal(\"Expected user tags\")\n\t}\n\n\t//if john.Details[\"occupation\"].Value != \"engineer\" {\n\t//\tt.Errorf(\"Expected occupation to be engineer but got %s\", john.Details[\"occupation\"].Value)\n\t//}\n}\n"
  },
  {
    "path": "db/factory/store.go",
    "content": "package factory\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/db/sql\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nfunc CreateStore() db.Store {\n\tconfig, err := util.Config.GetDBConfig()\n\tif err != nil {\n\t\tpanic(\"Can not read configuration\")\n\t}\n\tswitch config.Dialect {\n\tcase util.DbDriverMySQL:\n\t\treturn sql.CreateDb(config.Dialect)\n\tcase util.DbDriverBolt:\n\t\treturn bolt.CreateBoltDB()\n\tcase util.DbDriverPostgres:\n\t\treturn sql.CreateDb(config.Dialect)\n\tcase util.DbDriverSQLite:\n\t\treturn sql.CreateDb(config.Dialect)\n\tdefault:\n\t\tpanic(\"Unsupported database dialect: \" + config.Dialect)\n\t}\n\t// This line should never be reached due to panic above, but satisfies linter\n\treturn nil\n}\n"
  },
  {
    "path": "db/migration/migration.go",
    "content": "package migration\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/export\"\n)\n\ntype Migrator struct {\n\tOldStore db.Store\n\tNewStore db.Store\n\n\tErrLogSize         int\n\tSkipTaskOutput     bool\n\tMergeExistingUsers bool\n}\n\nfunc (m *Migrator) Migrate() error {\n\tif err := m.migrateProject(); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (m *Migrator) migrateProject() error {\n\n\tmapper := export.NewKeyMapper()\n\tp := export.InitProjectExporters(mapper, m.SkipTaskOutput, m.MergeExistingUsers)\n\n\terr := p.Load(m.OldStore)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = p.Restore(m.NewStore, m.ErrLogSize)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/SqlDb.go",
    "content": "package sql\n\nimport (\n\t\"database/sql\"\n\t\"embed\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/go-gorp/gorp/v3\"\n\t_ \"github.com/go-sql-driver/mysql\" // imports mysql driver\n\t_ \"github.com/lib/pq\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t_ \"modernc.org/sqlite\" // Import the driver\n)\n\ntype SqlDbConnection struct {\n\tsql     *gorp.DbMap\n\tdialect string\n}\n\ntype SqlDb struct {\n\tconnection SqlDbConnection\n}\n\nfunc (d *SqlDb) Sql() *gorp.DbMap {\n\treturn d.connection.sql\n}\n\nfunc (d *SqlDbConnection) Connect() {\n\tsqlDb, err := connect()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = sqlDb.Ping()\n\tif err != nil {\n\t\tif err = sqlDb.Close(); err != nil {\n\t\t\tlog.Warn(\"Cannot close database connection: \" + err.Error())\n\t\t}\n\n\t\tif err = createDb(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tsqlDb, err = connect()\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif err = sqlDb.Ping(); err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tcfg, err := util.Config.GetDBConfig()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar dialect gorp.Dialect\n\n\tswitch cfg.Dialect {\n\tcase util.DbDriverMySQL:\n\t\tdialect = gorp.MySQLDialect{Engine: \"InnoDB\", Encoding: \"UTF8\"}\n\tcase util.DbDriverPostgres:\n\t\tdialect = gorp.PostgresDialect{}\n\tcase util.DbDriverSQLite:\n\t\tdialect = gorp.SqliteDialect{}\n\t}\n\n\td.sql = &gorp.DbMap{Db: sqlDb, Dialect: dialect}\n\n\tif d.GetDialect() == util.DbDriverSQLite {\n\t\tsqlDb.SetMaxOpenConns(1)\n\t}\n\n\td.sql.AddTableWithName(db.APIToken{}, \"user__token\").SetKeys(false, \"id\")\n\td.sql.AddTableWithName(db.AccessKey{}, \"access_key\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Environment{}, \"project__environment\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Inventory{}, \"project__inventory\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Project{}, \"project\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Repository{}, \"project__repository\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Task{}, \"task\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.TaskOutput{}, \"task__output\").SetUniqueTogether(\"task_id\", \"time\")\n\td.sql.AddTableWithName(db.Template{}, \"project__template\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.User{}, \"user\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.Session{}, \"session\").SetKeys(true, \"id\")\n\td.sql.AddTableWithName(db.TaskParams{}, \"project__task_params\").SetKeys(true, \"id\")\n\n\tif d.GetDialect() == util.DbDriverSQLite {\n\t\t_, err = d.Exec(\"PRAGMA foreign_keys = ON\")\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t}\n}\n\nfunc (d *SqlDbConnection) Close() {\n\terr := d.sql.Db.Close()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc CreateTestStore() *SqlDb {\n\tutil.Config = &util.ConfigType{\n\t\tSQLite: &util.DbConfig{\n\t\t\tHostname: \":memory:\",\n\t\t},\n\t\tDialect: \"sqlite\",\n\t\tLog: &util.ConfigLog{\n\t\t\tEvents: &util.EventLogType{},\n\t\t\tTasks:  &util.TaskLogType{},\n\t\t},\n\t}\n\tstore := CreateDb(util.DbDriverSQLite)\n\n\tstore.Connect(\"\")\n\n\tdb.Migrate(store, nil)\n\n\treturn store\n}\n\nfunc (d *SqlDbConnection) prepareQueryWithDialect(query string, dialect gorp.Dialect) string {\n\tswitch dialect.(type) {\n\tcase gorp.PostgresDialect:\n\t\tvar queryBuilder strings.Builder\n\t\targNum := 1\n\t\tfor _, r := range query {\n\t\t\tswitch r {\n\t\t\tcase '?':\n\t\t\t\tqueryBuilder.WriteString(\"$\" + strconv.Itoa(argNum))\n\t\t\t\targNum++\n\t\t\tcase '`':\n\t\t\t\tqueryBuilder.WriteRune('\"')\n\t\t\tdefault:\n\t\t\t\tqueryBuilder.WriteRune(r)\n\t\t\t}\n\t\t}\n\t\tquery = queryBuilder.String()\n\t}\n\treturn query\n}\n\nfunc (d *SqlDbConnection) PrepareDateQueryParam(paramName string) string {\n\tif d.dialect == util.DbDriverSQLite {\n\t\treturn \"substr(\" + paramName + \", 1, 25)\"\n\t}\n\n\treturn paramName\n}\n\nfunc (d *SqlDbConnection) PrepareQuery(query string) string {\n\treturn d.prepareQueryWithDialect(query, d.sql.Dialect)\n}\n\nfunc formatArgs(args []any) (formattedArgs []any) {\n\tfor _, arg := range args {\n\t\tswitch typedArg := arg.(type) {\n\t\tcase time.Time:\n\t\t\tformattedArgs = append(formattedArgs, typedArg.Format(\"2006-01-02 15:04:05.000000\"))\n\t\tdefault:\n\t\t\tformattedArgs = append(formattedArgs, arg)\n\t\t}\n\t}\n\treturn\n}\n\nfunc (d *SqlDbConnection) Insert(primaryKeyColumnName string, query string, args ...any) (int, error) {\n\tvar insertId int64\n\n\tformattedArgs := formatArgs(args)\n\n\tswitch d.sql.Dialect.(type) {\n\tcase gorp.PostgresDialect:\n\t\tvar err error\n\t\tif primaryKeyColumnName != \"\" {\n\t\t\tquery += \" returning \" + primaryKeyColumnName\n\t\t\terr = d.sql.QueryRow(d.PrepareQuery(query), formattedArgs...).Scan(&insertId)\n\t\t} else {\n\t\t\t_, err = d.sql.Exec(d.PrepareQuery(query), formattedArgs...)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\tdefault:\n\t\tres, err := d.sql.Exec(d.PrepareQuery(query), formattedArgs...)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tinsertId, err = res.LastInsertId()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\n\treturn int(insertId), nil\n}\n\nfunc (d *SqlDbConnection) Exec(query string, args ...any) (sql.Result, error) {\n\tq := d.PrepareQuery(query)\n\treturn d.sql.Exec(q, args...)\n}\n\nfunc (d *SqlDbConnection) ExecTx(tx *gorp.Transaction, query string, args ...any) (sql.Result, error) {\n\tq := d.PrepareQuery(query)\n\treturn tx.Exec(q, args...)\n}\n\nfunc (d *SqlDbConnection) SelectOne(holder any, query string, args ...any) error {\n\terr := d.sql.SelectOne(holder, d.PrepareQuery(query), args...)\n\n\tif errors.Is(err, sql.ErrNoRows) {\n\t\terr = db.ErrNotFound\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDbConnection) SelectAll(i any, query string, args ...any) ([]any, error) {\n\tq := d.PrepareQuery(query)\n\treturn d.sql.Select(i, q, args...)\n}\n\nfunc (d *SqlDbConnection) DeleteObject(projectID int, props db.ObjectProps, objectID any) error {\n\tprimaryColumnName := \"id\"\n\n\tif props.PrimaryColumnName != \"\" {\n\t\tprimaryColumnName = props.PrimaryColumnName\n\t}\n\n\tif props.IsGlobal {\n\t\treturn validateMutationResult(\n\t\t\td.Exec(\n\t\t\t\t\"delete from \"+props.TableName+\" where \"+primaryColumnName+\"=?\",\n\t\t\t\tobjectID))\n\t} else {\n\t\treturn validateMutationResult(\n\t\t\td.Exec(\n\t\t\t\t\"delete from \"+props.TableName+\" where project_id=? and \"+primaryColumnName+\"=?\",\n\t\t\t\tprojectID,\n\t\t\t\tobjectID))\n\t}\n}\n\nfunc (d *SqlDbConnection) GetObject(projectID int, props db.ObjectProps, objectID int, object any) (err error) {\n\tq := squirrel.Select(\"*\").\n\t\tFrom(props.TableName).\n\t\tWhere(\"id=?\", objectID)\n\n\tif props.IsGlobal {\n\t\tq = q.Where(\"project_id is null\")\n\t} else {\n\t\tq = q.Where(\"project_id=?\", projectID)\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.SelectOne(object, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDbConnection) GetObjectsByReferrer(\n\treferrerID int,\n\treferringObjectProps db.ObjectProps,\n\tprops db.ObjectProps,\n\tparams db.RetrieveQueryParams,\n\tobjects any,\n) (err error) {\n\treferringColumn := referringObjectProps.ReferringColumnSuffix\n\n\tcolumns := []string{\"*\"}\n\tif len(props.SelectColumns) > 0 {\n\t\tcolumns = props.SelectColumns\n\t}\n\n\tq := squirrel.Select(columns...).From(props.TableName + \" pe\")\n\n\tif props.IsGlobal {\n\t\tq = q.Where(\"pe.\" + referringColumn + \" is null\")\n\t} else {\n\t\tq = q.Where(\"pe.\"+referringColumn+\"=?\", referrerID)\n\t}\n\n\tq, err = getQueryForParams(q, \"pe.\", props, params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.SelectAll(objects, query, args...)\n\n\treturn\n}\n\nvar initialSQL = `\ncreate table ` + \"`migrations`\" + ` (\n\t` + \"`version`\" + ` varchar(255) not null primary key,\n\t` + \"`upgraded_date`\" + ` datetime null,\n\t` + \"`notes`\" + ` text null\n);\n`\n\n//go:embed migrations/*.sql\nvar dbAssets embed.FS\n\nfunc CreateDb(dialect string) *SqlDb {\n\treturn &SqlDb{\n\t\tconnection: SqlDbConnection{\n\t\t\tdialect: dialect,\n\t\t},\n\t}\n}\n\nfunc (d *SqlDbConnection) GetDialect() string {\n\treturn d.dialect\n}\n\nfunc (d *SqlDb) GetConnection() *SqlDbConnection {\n\treturn &d.connection\n}\n\nfunc (d *SqlDb) GetDialect() string {\n\treturn d.connection.GetDialect()\n}\n\nfunc (d *SqlDb) Close(token string) {\n\td.connection.Close()\n}\n\nfunc getQueryForParams(q squirrel.SelectBuilder, prefix string, props db.ObjectProps, params db.RetrieveQueryParams) (res squirrel.SelectBuilder, err error) {\n\tpp, err := params.Validate(props)\n\tif err != nil {\n\t\treturn\n\t}\n\n\torderDirection := \"ASC\"\n\tif pp.SortInverted {\n\t\torderDirection = \"DESC\"\n\t}\n\n\tvar orderColumn string\n\tif pp.SortBy == \"\" {\n\t\torderColumn = props.DefaultSortingColumn\n\t\tif props.SortInverted {\n\t\t\torderDirection = \"DESC\"\n\t\t}\n\t} else {\n\t\torderColumn = pp.SortBy\n\t}\n\n\tif orderColumn != \"\" {\n\t\tq = q.OrderBy(prefix + orderColumn + \" \" + orderDirection)\n\t}\n\n\tif pp.Count > 0 {\n\t\tq = q.Limit(uint64(pp.Count))\n\t}\n\n\tif pp.Offset > 0 {\n\t\tq = q.Offset(uint64(pp.Offset))\n\t}\n\n\tres = q\n\treturn\n}\n\nfunc handleRollbackError(err error) {\n\tif err != nil {\n\t\tlog.Warn(err.Error())\n\t}\n}\n\nvar identifierQuoteRE = regexp.MustCompile(\"`\")\n\n// validateMutationResult checks the success of the update query\nfunc validateMutationResult(res sql.Result, err error) error {\n\tif err != nil {\n\t\tif strings.Contains(err.Error(), \"foreign key\") {\n\t\t\terr = db.ErrInvalidOperation\n\t\t}\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (d *SqlDb) PrepareQuery(query string) string {\n\treturn d.connection.PrepareQuery(query)\n}\n\nfunc (d *SqlDb) insert(primaryKeyColumnName string, query string, args ...any) (int, error) {\n\treturn d.connection.Insert(primaryKeyColumnName, query, args...)\n}\n\nfunc (d *SqlDb) exec(query string, args ...any) (sql.Result, error) {\n\treturn d.connection.Exec(query, args...)\n}\n\nfunc (d *SqlDb) execTx(tx *gorp.Transaction, query string, args ...any) (sql.Result, error) {\n\tq := d.PrepareQuery(query)\n\treturn tx.Exec(q, args...)\n}\n\nfunc (d *SqlDb) selectOne(holder any, query string, args ...any) error {\n\terr := d.Sql().SelectOne(holder, d.PrepareQuery(query), args...)\n\n\tif errors.Is(err, sql.ErrNoRows) {\n\t\terr = db.ErrNotFound\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDb) selectAll(i any, query string, args ...any) ([]any, error) {\n\treturn d.connection.SelectAll(i, query, args...)\n}\n\nfunc connect() (*sql.DB, error) {\n\tcfg, err := util.Config.GetDBConfig()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconnectionString, err := cfg.GetConnectionString(true)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdialect := cfg.Dialect\n\treturn sql.Open(dialect, connectionString)\n}\n\nfunc createDb() error {\n\tcfg, err := util.Config.GetDBConfig()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !cfg.HasSupportMultipleDatabases() {\n\t\treturn nil\n\t}\n\n\tconnectionString, err := cfg.GetConnectionString(false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tconn, err := sql.Open(cfg.Dialect, connectionString)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer conn.Close() //nolint:errcheck\n\n\t_, err = conn.Exec(\"create database \" + cfg.GetDbName())\n\tif err != nil {\n\t\tlog.Warn(err.Error())\n\t}\n\n\treturn nil\n}\n\nfunc (d *SqlDb) getObject(projectID int, props db.ObjectProps, objectID int, object any) (err error) {\n\treturn d.connection.GetObject(projectID, props, objectID, object)\n}\n\nfunc (d *SqlDb) makeObjectsQuery(projectID int, props db.ObjectProps, params db.RetrieveQueryParams) (q squirrel.SelectBuilder, err error) {\n\tcolumns := []string{\"*\"}\n\tif len(props.SelectColumns) > 0 {\n\t\tcolumns = props.SortableColumns\n\t}\n\n\tq = squirrel.Select(columns...).From(\"`\" + props.TableName + \"` pe\")\n\n\tif !props.IsGlobal {\n\t\tq = q.Where(\"pe.project_id=?\", projectID)\n\t}\n\n\tif len(props.Ownerships) > 0 {\n\t\tfor _, ownership := range props.Ownerships {\n\t\t\tif params.Ownership.WithoutOwnerOnly {\n\t\t\t\tq = q.Where(squirrel.Eq{\n\t\t\t\t\t\"pe.\" + string(ownership.ReferringColumnSuffix): nil,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\townerID := params.Ownership.GetOwnerID(*ownership)\n\t\t\t\tif ownerID != nil {\n\t\t\t\t\tq = q.Where(squirrel.Eq{\n\t\t\t\t\t\t\"pe.\" + string(ownership.ReferringColumnSuffix): *ownerID,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tq, err = getQueryForParams(q, \"pe.\", props, params)\n\n\t//if params.Count > 0 {\n\t//\tq = q.Limit(uint64(params.Count))\n\t//}\n\t//\n\t//if params.Offset > 0 {\n\t//\tq = q.Offset(uint64(params.Offset))\n\t//}\n\n\treturn\n}\n\nfunc (d *SqlDb) getObjects(\n\tprojectID int,\n\tprops db.ObjectProps,\n\tparams db.RetrieveQueryParams,\n\tprepare func(squirrel.SelectBuilder) squirrel.SelectBuilder,\n\tobjects any,\n) (err error) {\n\tq, err := d.makeObjectsQuery(projectID, props, params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif prepare != nil {\n\t\tq = prepare(q)\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(objects, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) deleteObject(projectID int, props db.ObjectProps, objectID any) error {\n\treturn d.connection.DeleteObject(projectID, props, objectID)\n}\n\nfunc (d *SqlDb) PermanentConnection() bool {\n\treturn true\n}\n\nfunc (d *SqlDb) Connect(_ string) {\n\td.connection.Connect()\n}\n\nfunc (d *SqlDb) getObjectRefs(projectID int, objectProps db.ObjectProps, objectID int) (refs db.ObjectReferrers, err error) {\n\trefs.Templates, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.TemplateProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Repositories, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.RepositoryProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Inventories, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.InventoryProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Schedules, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.ScheduleProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.Integrations, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.IntegrationAliasProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs.AccessKeys, err = d.getObjectRefsFrom(projectID, objectProps, objectID, db.AccessKeyProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) getObjectRefsFrom(\n\tprojectID int,\n\tobjectProps db.ObjectProps,\n\tobjectID int,\n\treferringObjectProps db.ObjectProps,\n) (referringObjs []db.ObjectReferrer, err error) {\n\treferringObjs = make([]db.ObjectReferrer, 0)\n\n\tfields, err := objectProps.GetReferringFieldsFrom(referringObjectProps.Type)\n\n\tcond := \"\"\n\tvals := []any{projectID}\n\n\tfor _, f := range fields {\n\t\tif cond != \"\" {\n\t\t\tcond += \" or \"\n\t\t}\n\n\t\tcond += f + \" = ?\"\n\n\t\tvals = append(vals, objectID)\n\t}\n\n\tif cond == \"\" {\n\t\treturn\n\t}\n\n\tcond = \"(\" + cond + \")\"\n\n\t// do not check access keys which belong to the owner.\n\tif referringObjectProps.Type == db.AccessKeyProps.Type {\n\t\tcond += \" and owner = ''\"\n\t}\n\n\tvar referringObjects reflect.Value\n\n\tif referringObjectProps.Type == db.ScheduleProps.Type {\n\t\tvar referringSchedules []db.Schedule\n\t\t_, err = d.selectAll(&referringSchedules, \"select template_id id from project__schedule where project_id = ? and (\"+cond+\")\", vals...)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif len(referringSchedules) == 0 {\n\t\t\treturn\n\t\t}\n\n\t\tvar ids []string\n\t\tfor _, schedule := range referringSchedules {\n\t\t\tids = append(ids, strconv.Itoa(schedule.ID))\n\t\t}\n\n\t\treferringObjects = reflect.New(reflect.SliceOf(db.TemplateProps.Type))\n\t\t_, err = d.selectAll(referringObjects.Interface(),\n\t\t\t\"select id, name from project__template where id in (\"+strings.Join(ids, \",\")+\")\")\n\t} else {\n\t\treferringObjects = reflect.New(reflect.SliceOf(referringObjectProps.Type))\n\t\t_, err = d.selectAll(\n\t\t\treferringObjects.Interface(),\n\t\t\t\"select id, name from \"+referringObjectProps.TableName+\" where project_id = ? and \"+cond,\n\t\t\tvals...)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor i := 0; i < referringObjects.Elem().Len(); i++ {\n\t\tid := int(referringObjects.Elem().Index(i).FieldByName(\"ID\").Int())\n\t\tname := referringObjects.Elem().Index(i).FieldByName(\"Name\").String()\n\t\treferringObjs = append(referringObjs, db.ObjectReferrer{ID: id, Name: name})\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) IsInitialized() (bool, error) {\n\t_, err := d.Sql().SelectInt(d.PrepareQuery(\"select count(1) from migrations\"))\n\treturn err == nil, nil\n}\n\nfunc (d *SqlDb) getObjectByReferrer(referrerID int, referringObjectProps db.ObjectProps, props db.ObjectProps, objectID int, object any) (err error) {\n\tquery, args, err := squirrel.Select(\"*\").\n\t\tFrom(props.TableName).\n\t\tWhere(\"id=?\", objectID).\n\t\tWhere(referringObjectProps.ReferringColumnSuffix+\"=?\", referrerID).\n\t\tToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(object, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) deleteByReferrer(referrerID int, referringObjectProps db.ObjectProps, props db.ObjectProps, objectID int) error {\n\treferringColumn := referringObjectProps.ReferringColumnSuffix\n\n\treturn validateMutationResult(\n\t\td.exec(\n\t\t\t\"delete from \"+props.TableName+\" where \"+referringColumn+\"=? and id=?\",\n\t\t\treferrerID,\n\t\t\tobjectID))\n}\n\nfunc (d *SqlDb) deleteObjectByReferencedID(referencedID int, referencedProps db.ObjectProps, props db.ObjectProps, objectID int) error {\n\tfield := referencedProps.ReferringColumnSuffix\n\n\treturn validateMutationResult(\n\t\td.exec(\"delete from \"+props.TableName+\" t where t.\"+field+\"=? and t.id=?\", referencedID, objectID))\n}\n\n/**\n  GENERIC IMPLEMENTATION\n  **/\n\nfunc InsertTemplateFromType(typeInstance any) (string, []any) {\n\tval := reflect.Indirect(reflect.ValueOf(typeInstance))\n\ttypeFieldSize := val.Type().NumField()\n\n\tfields := \"\"\n\tvalues := \"\"\n\targs := make([]any, 0)\n\n\tif typeFieldSize > 1 {\n\t\tfields += \"(\"\n\t\tvalues += \"(\"\n\t}\n\n\tfor i := 0; i < typeFieldSize; i++ {\n\t\tif val.Type().Field(i).Name == \"ID\" {\n\t\t\tcontinue\n\t\t}\n\t\tfields += val.Type().Field(i).Tag.Get(\"db\")\n\t\tvalues += \"?\"\n\t\targs = append(args, val.Field(i))\n\t\tif i != (typeFieldSize - 1) {\n\t\t\tfields += \", \"\n\t\t\tvalues += \", \"\n\t\t}\n\t}\n\n\tif typeFieldSize > 1 {\n\t\tfields += \")\"\n\t\tvalues += \")\"\n\t}\n\n\treturn fields + \" values \" + values, args\n}\n\nfunc (d *SqlDb) GetObject(props db.ObjectProps, ID int) (object any, err error) {\n\tquery, args, err := squirrel.Select(\"t.*\").\n\t\tFrom(props.TableName + \" as t\").\n\t\tWhere(squirrel.Eq{\"t.id\": ID}).\n\t\tOrderBy(\"t.id\").\n\t\tToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\terr = d.selectOne(&object, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateObject(props db.ObjectProps, object any) (newObject any, err error) {\n\t// err = newObject.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplate, args := InsertTemplateFromType(object)\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into \"+props.TableName+\" \"+template, args...)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewObject = object\n\n\tv := reflect.ValueOf(newObject)\n\tfield := v.FieldByName(\"ID\")\n\tfield.SetInt(int64(insertID))\n\n\treturn\n}\n\nfunc (d *SqlDb) GetObjectsByForeignKeyQuery(props db.ObjectProps, foreignID int, foreignProps db.ObjectProps, params db.RetrieveQueryParams, objects any) (err error) {\n\tq := squirrel.Select(\"*\").\n\t\tFrom(props.TableName+\" as t\").\n\t\tWhere(foreignProps.ReferringColumnSuffix+\"=?\", foreignID)\n\n\tq, err = getQueryForParams(q, \"t.\", props, params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tquery, args, err := q.\n\t\tOrderBy(\"t.id\").\n\t\tToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\terr = d.selectOne(&objects, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetAllObjectsByForeignKey(props db.ObjectProps, foreignID int, foreignProps db.ObjectProps) (objects any, err error) {\n\tquery, args, err := squirrel.Select(\"*\").\n\t\tFrom(props.TableName+\" as t\").\n\t\tWhere(foreignProps.ReferringColumnSuffix+\"=?\", foreignID).\n\t\tOrderBy(\"t.id\").\n\t\tToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tresults, errQuery := d.selectAll(&objects, query, args...)\n\n\treturn results, errQuery\n}\n\nfunc (d *SqlDb) GetAllObjects(props db.ObjectProps) (objects any, err error) {\n\tquery, args, err := squirrel.Select(\"*\").\n\t\tFrom(props.TableName + \" as t\").\n\t\tOrderBy(\"t.id\").\n\t\tToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar results []any\n\tresults, err = d.selectAll(&objects, query, args...)\n\n\treturn results, err\n}\n\n// Retrieve the Matchers & Values referencing `id' from WebhookExtractor\n// --\n// Examples:\n// referrerCollection := db.ObjectReferrers{}\n//\n//\td.GetReferencesForForeignKey(db.ProjectProps, id, map[string]db.ObjectProps{\n//\t  'Templates': db.TemplateProps,\n//\t  'Inventories': db.InventoryProps,\n//\t  'Repositories': db.RepositoryProps\n//\t}, &referrerCollection)\n//\n// //\n//\n// referrerCollection := db.WebhookExtractorReferrers{}\n//\n//\td.GetReferencesForForeignKey(db.WebhookProps, id, map[string]db.ObjectProps{\n//\t  \"Matchers\": db.WebhookMatcherProps,\n//\t  \"Values\": db.WebhookExtractValueProps\n//\t}, &referrerCollection)\nfunc (d *SqlDb) GetReferencesForForeignKey(objectProps db.ObjectProps, objectID int, referrerMapping map[string]db.ObjectProps, referrerCollection *any) (err error) {\n\tfor key, value := range referrerMapping {\n\t\t// v := reflect.ValueOf(referrerCollection)\n\t\treferrers, errRef := d.GetObjectReferences(objectProps, value, objectID)\n\n\t\tif errRef != nil {\n\t\t\treturn errRef\n\t\t}\n\t\treflect.ValueOf(referrerCollection).FieldByName(key).Set(reflect.ValueOf(referrers))\n\t}\n\n\treturn\n}\n\n// Find Object Referrers for objectID based on referring column taken from referringObjectProps\n// Example:\n// GetObjectReferences(db.WebhookMatchers, db.WebhookExtractorProps, integrationID)\nfunc (d *SqlDb) GetObjectReferences(objectProps db.ObjectProps, referringObjectProps db.ObjectProps, objectID int) (referringObjs []db.ObjectReferrer, err error) {\n\treferringObjs = make([]db.ObjectReferrer, 0)\n\n\tfields, err := objectProps.GetReferringFieldsFrom(objectProps.Type)\n\n\tcond := \"\"\n\tvals := []any{}\n\n\tfor _, f := range fields {\n\t\tif cond != \"\" {\n\t\t\tcond += \" or \"\n\t\t}\n\n\t\tcond += f + \" = ?\"\n\n\t\tvals = append(vals, objectID)\n\t}\n\n\tif cond == \"\" {\n\t\treturn\n\t}\n\n\treferringObjects := reflect.New(reflect.SliceOf(referringObjectProps.Type))\n\t_, err = d.selectAll(\n\t\treferringObjects.Interface(),\n\t\t\"select id, name from \"+referringObjectProps.TableName+\" where \"+objectProps.ReferringColumnSuffix+\" = ? and \"+cond,\n\t\tvals...)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor i := 0; i < referringObjects.Elem().Len(); i++ {\n\t\tid := int(referringObjects.Elem().Index(i).FieldByName(\"ID\").Int())\n\t\tname := referringObjects.Elem().Index(i).FieldByName(\"Name\").String()\n\t\treferringObjs = append(referringObjs, db.ObjectReferrer{ID: id, Name: name})\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTaskStats(projectID int, templateID *int, unit db.TaskStatUnit, filter db.TaskFilter) (stats []db.TaskStat, err error) {\n\tstats = make([]db.TaskStat, 0)\n\n\tif unit != db.TaskStatUnitDay {\n\t\terr = fmt.Errorf(\"only day unit is supported\")\n\t\treturn\n\t}\n\n\tvar res []struct {\n\t\tDate   string                 `db:\"date\"`\n\t\tStatus task_logger.TaskStatus `db:\"status\"`\n\t\tCount  int                    `db:\"count\"`\n\t}\n\n\tq := squirrel.Select(\"DATE(\"+d.connection.PrepareDateQueryParam(\"created\")+\") AS date, status, COUNT(*) AS count\").\n\t\tFrom(\"task\").\n\t\tWhere(\"project_id=?\", projectID).\n\t\tGroupBy(\"date, status\").\n\t\tOrderBy(\"date DESC\")\n\n\tif templateID != nil {\n\t\tq = q.Where(\"template_id=?\", *templateID)\n\t}\n\n\tif filter.UserID != nil {\n\t\tq = q.Where(\"user_id=?\", *filter.UserID)\n\t}\n\n\tif filter.Start != nil {\n\t\tq = q.Where(\"start>=?\", *filter.Start)\n\t}\n\n\tif filter.End != nil {\n\t\tq = q.Where(\"end<?\", *filter.End)\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.connection.SelectAll(&res, query, args...)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar date string\n\tvar stat *db.TaskStat\n\n\tfor _, r := range res {\n\n\t\tif date != r.Date {\n\t\t\tdate = r.Date\n\t\t\tstat = &db.TaskStat{\n\t\t\t\tDate:          date,\n\t\t\t\tCountByStatus: make(map[task_logger.TaskStatus]int),\n\t\t\t}\n\t\t\tstats = append(stats, *stat)\n\t\t}\n\n\t\tstat.CountByStatus[r.Status] = r.Count\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/SqlDb_test.go",
    "content": "package sql\n\nimport (\n\t\"github.com/go-gorp/gorp/v3\"\n\t\"testing\"\n)\n\nfunc TestValidatePort(t *testing.T) {\n\td := SqlDb{}\n\tq := d.connection.prepareQueryWithDialect(\"select * from `test` where id = ?, email = ?\", gorp.PostgresDialect{})\n\tif q != \"select * from \\\"test\\\" where id = $1, email = $2\" {\n\t\tt.Error(\"invalid postgres query\")\n\t}\n}\n"
  },
  {
    "path": "db/sql/access_key.go",
    "content": "package sql\n\nimport (\n\t\"database/sql\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) GetAccessKey(projectID int, accessKeyID int) (key db.AccessKey, err error) {\n\terr = d.getObject(projectID, db.AccessKeyProps, accessKeyID, &key)\n\treturn\n}\n\nfunc (d *SqlDb) GetAccessKeyRefs(projectID int, keyID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.AccessKeyProps, keyID)\n}\n\nfunc (d *SqlDb) GetAccessKeys(projectID int, options db.GetAccessKeyOptions, params db.RetrieveQueryParams) (keys []db.AccessKey, err error) {\n\tkeys = make([]db.AccessKey, 0)\n\n\tq, err := d.makeObjectsQuery(projectID, db.AccessKeyProps, params)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif !options.IgnoreOwner {\n\t\tq = q.Where(\"pe.owner=?\", options.Owner)\n\n\t\tswitch options.Owner {\n\t\tcase db.AccessKeyVariable, db.AccessKeyEnvironment:\n\t\t\tq = q.Where(squirrel.Eq{\"pe.environment_id\": *options.EnvironmentID})\n\t\tcase db.AccessKeySecretStorage:\n\t\t\tq = q.Where(squirrel.Eq{\"pe.storage_id\": options.StorageID})\n\t\t}\n\t}\n\n\tif options.SourceStorageID != nil {\n\t\tq = q.Where(squirrel.Eq{\"pe.source_storage_id\": *options.SourceStorageID})\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&keys, query, args...)\n\n\tfor i := range keys {\n\t\tkeys[i].Empty = keys[i].IsEmpty()\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateAccessKey(key db.AccessKey) error {\n\terr := key.Validate(key.OverrideSecret)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar res sql.Result\n\n\tvar args []any\n\tquery := \"update access_key set name=?\"\n\targs = append(args, key.Name)\n\n\tif !key.IgnorePlain {\n\t\tquery += \", plain=?\"\n\t\targs = append(args, key.Plain)\n\t}\n\n\tif key.OverrideSecret {\n\n\t\tquery += \", type=?, secret=?, source_storage_id=?, source_storage_key=?, source_storage_type=?\"\n\t\targs = append(args, key.Type)\n\t\targs = append(args, key.Secret)\n\t\targs = append(args, key.SourceStorageID)\n\t\targs = append(args, key.SourceStorageKey)\n\t\targs = append(args, key.SourceStorageType)\n\t}\n\n\tquery += \" where id=?\"\n\targs = append(args, key.ID)\n\n\tquery += \" and project_id=?\"\n\targs = append(args, key.ProjectID)\n\n\tres, err = d.exec(query, args...)\n\n\treturn validateMutationResult(res, err)\n}\n\nfunc (d *SqlDb) CreateAccessKey(key db.AccessKey) (newKey db.AccessKey, err error) {\n\n\tvar insertID int\n\n\tif key.IgnorePlain {\n\t\tinsertID, err = d.insert(\n\t\t\t\"id\",\n\t\t\t\"insert into access_key (\"+\n\t\t\t\t\"name, \"+\n\t\t\t\t\"type, \"+\n\t\t\t\t\"project_id, \"+\n\t\t\t\t\"secret, \"+\n\t\t\t\t\"environment_id, \"+\n\t\t\t\t\"owner, \"+\n\t\t\t\t\"storage_id, \"+\n\t\t\t\t\"source_storage_id, \"+\n\t\t\t\t\"source_storage_key, \"+\n\t\t\t\t\"source_storage_type) \"+\n\t\t\t\t\"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\t\tkey.Name,\n\t\t\tkey.Type,\n\t\t\tkey.ProjectID,\n\t\t\tkey.Secret,\n\t\t\tkey.EnvironmentID,\n\t\t\tkey.Owner,\n\t\t\tkey.StorageID,\n\t\t\tkey.SourceStorageID,\n\t\t\tkey.SourceStorageKey,\n\t\t\tkey.SourceStorageType,\n\t\t)\n\t} else {\n\t\tinsertID, err = d.insert(\n\t\t\t\"id\",\n\t\t\t\"insert into access_key (\"+\n\t\t\t\t\"name, \"+\n\t\t\t\t\"type, \"+\n\t\t\t\t\"project_id, \"+\n\t\t\t\t\"secret, \"+\n\t\t\t\t\"plain, \"+\n\t\t\t\t\"environment_id, \"+\n\t\t\t\t\"owner, \"+\n\t\t\t\t\"storage_id, \"+\n\t\t\t\t\"source_storage_id, \"+\n\t\t\t\t\"source_storage_key, \"+\n\t\t\t\t\"source_storage_type) \"+\n\t\t\t\t\"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\t\tkey.Name,\n\t\t\tkey.Type,\n\t\t\tkey.ProjectID,\n\t\t\tkey.Secret,\n\t\t\tkey.Plain,\n\t\t\tkey.EnvironmentID,\n\t\t\tkey.Owner,\n\t\t\tkey.StorageID,\n\t\t\tkey.SourceStorageID,\n\t\t\tkey.SourceStorageKey,\n\t\t\tkey.SourceStorageType,\n\t\t)\n\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewKey = key\n\tnewKey.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) DeleteAccessKey(projectID int, accessKeyID int) error {\n\treturn d.deleteObject(projectID, db.AccessKeyProps, accessKeyID)\n}\n\nconst RekeyBatchSize = 100\n\nfunc (d *SqlDb) RekeyAccessKeys(oldKey string) (err error) {\n\n\t//var globalProps = db.AccessKeyProps\n\t//globalProps.IsGlobal = true\n\t//\n\t//for i := 0; ; i++ {\n\t//\n\t//\tvar keys []db.AccessKey\n\t//\terr = d.getObjects(-1, globalProps, db.RetrieveQueryParams{Count: RekeyBatchSize, Offset: i * RekeyBatchSize}, nil, &keys)\n\t//\n\t//\tif err != nil {\n\t//\t\treturn\n\t//\t}\n\t//\n\t//\tif len(keys) == 0 {\n\t//\t\tbreak\n\t//\t}\n\t//\n\t//\tfor _, key := range keys {\n\t//\n\t//\t\terr = key.DeserializeSecret2(oldKey)\n\t//\n\t//\t\tif err != nil {\n\t//\t\t\treturn err\n\t//\t\t}\n\t//\n\t//\t\tkey.OverrideSecret = true\n\t//\t\terr = d.UpdateAccessKey(key)\n\t//\n\t//\t\tif err != nil && !errors.Is(err, db.ErrNotFound) {\n\t//\t\t\treturn err\n\t//\t\t}\n\t//\t}\n\t//}\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/environment.go",
    "content": "package sql\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) GetEnvironment(projectID int, environmentID int) (environment db.Environment, err error) {\n\terr = d.getObject(projectID, db.EnvironmentProps, environmentID, &environment)\n\treturn\n}\n\nfunc (d *SqlDb) GetEnvironmentRefs(projectID int, environmentID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.EnvironmentProps, environmentID)\n}\n\nfunc (d *SqlDb) GetEnvironments(projectID int, params db.RetrieveQueryParams) ([]db.Environment, error) {\n\tvar environment []db.Environment\n\terr := d.getObjects(projectID, db.EnvironmentProps, params, nil, &environment)\n\treturn environment, err\n}\n\nfunc (d *SqlDb) UpdateEnvironment(env db.Environment) error {\n\terr := env.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(\n\t\t\"update project__environment set name=?, json=?, env=?, password=? where id=?\",\n\t\tenv.Name,\n\t\tenv.JSON,\n\t\tenv.ENV,\n\t\tenv.Password,\n\t\tenv.ID)\n\treturn err\n}\n\nfunc (d *SqlDb) CreateEnvironment(env db.Environment) (newEnv db.Environment, err error) {\n\terr = env.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__environment \"+\n\t\t\t\"(project_id, name, json, env, password, secret_storage_id, secret_storage_key_prefix) values \"+\n\t\t\t\"(?, ?, ?, ?, ?, ?, ?)\",\n\t\tenv.ProjectID,\n\t\tenv.Name,\n\t\tenv.JSON,\n\t\tenv.ENV,\n\t\tenv.Password,\n\t\tenv.SecretStorageID,\n\t\tenv.SecretStorageKeyPrefix)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewEnv = env\n\tnewEnv.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) DeleteEnvironment(projectID int, environmentID int) error {\n\treturn d.deleteObject(projectID, db.EnvironmentProps, environmentID)\n}\n\nfunc (d *SqlDb) GetEnvironmentSecrets(projectID int, environmentID int) (keys []db.AccessKey, err error) {\n\tkeys = make([]db.AccessKey, 0)\n\n\tq, err := d.makeObjectsQuery(projectID, db.AccessKeyProps, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tq = q.Where(\"pe.environment_id = ?\", environmentID)\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&keys, query, args...)\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/event.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n)\n\nfunc (d *SqlDb) getEvents(q squirrel.SelectBuilder, params db.RetrieveQueryParams) (events []db.Event, err error) {\n\n\tif params.Count > 0 {\n\t\tq = q.Limit(uint64(params.Count))\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&events, query, args...)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = db.FillEvents(d, events)\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateEvent(evt db.Event) (newEvent db.Event, err error) {\n\tvar created = tz.Now()\n\n\t_, err = d.exec(\n\t\t\"insert into event(user_id, project_id, object_id, object_type, description, created) values (?, ?, ?, ?, ?, ?)\",\n\t\tevt.UserID,\n\t\tevt.ProjectID,\n\t\tevt.ObjectID,\n\t\tevt.ObjectType,\n\t\tevt.Description,\n\t\tcreated)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewEvent = evt\n\tnewEvent.Created = created\n\treturn\n}\n\nfunc (d *SqlDb) GetUserEvents(userID int, params db.RetrieveQueryParams) ([]db.Event, error) {\n\tq := squirrel.Select(\"event.*, p.name as project_name\").\n\t\tFrom(\"event\").\n\t\tLeftJoin(\"project as p on event.project_id=p.id\").\n\t\tOrderBy(\"id desc\").\n\t\tLeftJoin(\"project__user as pu on pu.project_id=p.id\").\n\t\tWhere(\"p.id IS NULL or pu.user_id=?\", userID)\n\n\treturn d.getEvents(q, params)\n}\n\nfunc (d *SqlDb) GetEvents(projectID int, params db.RetrieveQueryParams) ([]db.Event, error) {\n\tq := squirrel.Select(\"event.*, p.name as project_name\").\n\t\tFrom(\"event\").\n\t\tLeftJoin(\"project as p on event.project_id=p.id\").\n\t\tOrderBy(\"id desc\").\n\t\tWhere(\"event.project_id=?\", projectID)\n\n\treturn d.getEvents(q, params)\n}\n\nfunc (d *SqlDb) GetAllEvents(params db.RetrieveQueryParams) ([]db.Event, error) {\n\tq := squirrel.Select(\"event.*, p.name as project_name\").\n\t\tFrom(\"event\").\n\t\tLeftJoin(\"project as p on event.project_id=p.id\").\n\t\tOrderBy(\"id desc\")\n\n\treturn d.getEvents(q, params)\n}\n"
  },
  {
    "path": "db/sql/global_runner.go",
    "content": "package sql\n\nimport (\n\t\"encoding/base64\"\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/gorilla/securecookie\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n)\n\nfunc (d *SqlDb) GetRunnerByToken(token string) (runner db.Runner, err error) {\n\n\trunners := make([]db.Runner, 0)\n\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {\n\t\treturn builder.Where(\"token=?\", token)\n\t}, &runners)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(runners) == 0 {\n\t\terr = db.ErrNotFound\n\t\treturn\n\t}\n\n\trunner = runners[0]\n\treturn\n}\n\nfunc (d *SqlDb) GetGlobalRunner(runnerID int) (runner db.Runner, err error) {\n\terr = d.getObject(0, db.GlobalRunnerProps, runnerID, &runner)\n\treturn\n}\n\nfunc (d *SqlDb) GetAllRunners(activeOnly bool, globalOnly bool) (runners []db.Runner, err error) {\n\terr = d.getObjects(0, db.GlobalRunnerProps, db.RetrieveQueryParams{}, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {\n\n\t\tif globalOnly {\n\t\t\tbuilder = builder.Where(\"project_id is null\")\n\t\t}\n\n\t\tif activeOnly {\n\t\t\tbuilder = builder.Where(\"active=?\", activeOnly)\n\t\t}\n\n\t\treturn builder\n\t}, &runners)\n\treturn\n}\n\nfunc (d *SqlDb) DeleteGlobalRunner(runnerID int) (err error) {\n\terr = d.deleteObject(0, db.GlobalRunnerProps, runnerID)\n\treturn\n}\n\nfunc (d *SqlDb) ClearRunnerCache(runner db.Runner) (err error) {\n\tif runner.ProjectID == nil {\n\t\t_, err = d.exec(\n\t\t\t\"update `runner` set `cleaning_requested`=? where id=?\",\n\t\t\ttz.Now(),\n\t\t\trunner.ID)\n\t\treturn\n\t}\n\n\t_, err = d.exec(\n\t\t\"update `runner` set `cleaning_requested`=? where id=? and project_id=?\",\n\t\ttz.Now(),\n\t\trunner.ID,\n\t\trunner.ProjectID)\n\n\treturn\n}\n\nfunc (d *SqlDb) TouchRunner(runner db.Runner) (err error) {\n\tif runner.ProjectID == nil {\n\t\t_, err = d.exec(\n\t\t\t\"update `runner` set `touched`=? where id=?\",\n\t\t\ttz.Now(),\n\t\t\trunner.ID)\n\t\treturn\n\t}\n\n\t_, err = d.exec(\n\t\t\"update `runner` set `touched`=? where id=? and project_id=?\",\n\t\ttz.Now(),\n\t\trunner.ID,\n\t\trunner.ProjectID)\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateRunner(runner db.Runner) (err error) {\n\t_, err = d.exec(\n\t\t\"update `runner` set `name`=?, `active`=?, webhook=?, max_parallel_tasks=?, tag=? where id=?\",\n\t\trunner.Name,\n\t\trunner.Active,\n\t\trunner.Webhook,\n\t\trunner.MaxParallelTasks,\n\t\trunner.Tag,\n\t\trunner.ID)\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateRunner(runner db.Runner) (newRunner db.Runner, err error) {\n\ttoken := base64.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(32))\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into `runner` (project_id, token, webhook, max_parallel_tasks, `name`, `active`, public_key, tag) values (?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\trunner.ProjectID,\n\t\ttoken,\n\t\trunner.Webhook,\n\t\trunner.MaxParallelTasks,\n\t\trunner.Name,\n\t\trunner.Active,\n\t\trunner.PublicKey,\n\t\trunner.Tag)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewRunner = runner\n\tnewRunner.ID = insertID\n\tnewRunner.Token = token\n\treturn\n}\n"
  },
  {
    "path": "db/sql/integration.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) CreateIntegration(integration db.Integration) (newIntegration db.Integration, err error) {\n\terr = integration.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif integration.TaskParams != nil {\n\t\tparams := *integration.TaskParams\n\t\tparams.ProjectID = integration.ProjectID\n\t\terr = d.Sql().Insert(&params)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tintegration.TaskParamsID = &params.ID\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__integration \"+\n\t\t\t\"(project_id, name, template_id, auth_method, auth_secret_id, auth_header, searchable, task_params_id) values \"+\n\t\t\t\"(?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\tintegration.ProjectID,\n\t\tintegration.Name,\n\t\tintegration.TemplateID,\n\t\tintegration.AuthMethod,\n\t\tintegration.AuthSecretID,\n\t\tintegration.AuthHeader,\n\t\tintegration.Searchable,\n\t\tintegration.TaskParamsID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewIntegration = integration\n\tnewIntegration.ID = insertID\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrations(projectID int, params db.RetrieveQueryParams, includeTaskParams bool) (integrations []db.Integration, err error) {\n\terr = d.getObjects(projectID, db.IntegrationProps, params, nil, &integrations)\n\n\tif includeTaskParams {\n\t\tfor i := range integrations {\n\t\t\tif integrations[i].TaskParamsID == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar taskParams db.TaskParams\n\t\t\terr = d.getObject(projectID, db.TaskParamsProps, *integrations[i].TaskParamsID, &taskParams)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tintegrations[i].TaskParams = &taskParams\n\t\t}\n\t}\n\n\treturn integrations, err\n}\n\nfunc (d *SqlDb) GetIntegration(projectID int, integrationID int) (integration db.Integration, err error) {\n\terr = d.getObject(projectID, db.IntegrationProps, integrationID, &integration)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif integration.TaskParamsID != nil {\n\t\tvar taskParams db.TaskParams\n\t\terr = d.getObject(projectID, db.TaskParamsProps, *integration.TaskParamsID, &taskParams)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tintegration.TaskParams = &taskParams\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationRefs(projectID int, integrationID int) (referrers db.IntegrationReferrers, err error) {\n\t//var extractorReferrer []db.ObjectReferrer\n\t//extractorReferrer, err = d.GetObjectReferences(db.IntegrationProps, db.IntegrationExtractorProps, integrationID)\n\t//referrers = db.IntegrationReferrers{\n\t//\tIntegrationExtractors: extractorReferrer,\n\t//}\n\treturn\n}\n\nfunc (d *SqlDb) DeleteIntegration(projectID int, integrationID int) (err error) {\n\tvar integration db.Integration\n\terr = d.getObject(projectID, db.IntegrationProps, integrationID, &integration)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.deleteObject(projectID, db.IntegrationProps, integrationID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif integration.TaskParamsID != nil {\n\t\terr = d.deleteObject(projectID, db.TaskParamsProps, *integration.TaskParamsID)\n\t}\n\treturn\n}\n\nfunc (d *SqlDb) UpdateIntegration(integration db.Integration) (err error) {\n\n\tif err = integration.Validate(); err != nil {\n\t\treturn\n\t}\n\n\tif integration.TaskParams != nil {\n\t\tvar curr db.Integration\n\t\terr = d.getObject(integration.ProjectID, db.IntegrationProps, integration.ID, &curr)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tparams := *integration.TaskParams\n\t\tparams.ProjectID = integration.ProjectID\n\n\t\tif curr.TaskParamsID == nil {\n\t\t\terr = d.Sql().Insert(&params)\n\t\t} else {\n\t\t\tparams.ID = *curr.TaskParamsID\n\t\t\t_, err = d.Sql().Update(&params)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tintegration.TaskParamsID = &params.ID\n\t}\n\n\t_, err = d.exec(\n\t\t\"update project__integration set \"+\n\t\t\t\"`name`=?, \"+\n\t\t\t\"template_id=?, \"+\n\t\t\t\"auth_method=?, \"+\n\t\t\t\"auth_secret_id=?, \"+\n\t\t\t\"auth_header=?, \"+\n\t\t\t\"searchable=?, \"+\n\t\t\t\"task_params_id=? \"+\n\t\t\t\"where project_id=? AND `id`=?\",\n\t\tintegration.Name,\n\t\tintegration.TemplateID,\n\t\tintegration.AuthMethod,\n\t\tintegration.AuthSecretID,\n\t\tintegration.AuthHeader,\n\t\tintegration.Searchable,\n\t\tintegration.TaskParamsID,\n\t\tintegration.ProjectID,\n\t\tintegration.ID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateIntegrationExtractValue(projectId int, value db.IntegrationExtractValue) (newValue db.IntegrationExtractValue, err error) {\n\terr = value.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinsertID, err := d.insert(\"id\",\n\t\t\"insert into project__integration_extract_value \"+\n\t\t\t\"(value_source, body_data_type, `key`, `variable`, `name`, integration_id, variable_type) values \"+\n\t\t\t\"(?, ?, ?, ?, ?, ?, ?)\",\n\t\tvalue.ValueSource,\n\t\tvalue.BodyDataType,\n\t\tvalue.Key,\n\t\tvalue.Variable,\n\t\tvalue.Name,\n\t\tvalue.IntegrationID,\n\t\tvalue.VariableType)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewValue = value\n\tnewValue.ID = insertID\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationExtractValues(projectID int, params db.RetrieveQueryParams, integrationID int) ([]db.IntegrationExtractValue, error) {\n\tvar values []db.IntegrationExtractValue\n\terr := d.connection.GetObjectsByReferrer(integrationID, db.IntegrationProps, db.IntegrationExtractValueProps, params, &values)\n\treturn values, err\n}\n\nfunc (d *SqlDb) GetIntegrationExtractValue(projectID int, valueID int, integrationID int) (value db.IntegrationExtractValue, err error) {\n\tquery, args, err := squirrel.Select(\"v.*\").\n\t\tFrom(\"project__integration_extract_value as v\").\n\t\tWhere(squirrel.Eq{\"id\": valueID}).\n\t\tOrderBy(\"v.id\").\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&value, query, args...)\n\n\treturn value, err\n}\n\nfunc (d *SqlDb) GetIntegrationExtractValueRefs(projectID int, valueID int, integrationID int) (refs db.IntegrationExtractorChildReferrers, err error) {\n\trefs.Integrations, err = d.GetObjectReferences(db.IntegrationProps, db.IntegrationExtractValueProps, integrationID)\n\treturn\n}\n\nfunc (d *SqlDb) DeleteIntegrationExtractValue(projectID int, valueID int, integrationID int) error {\n\treturn d.deleteObjectByReferencedID(integrationID, db.IntegrationProps, db.IntegrationExtractValueProps, valueID)\n}\n\nfunc (d *SqlDb) UpdateIntegrationExtractValue(projectID int, integrationExtractValue db.IntegrationExtractValue) error {\n\terr := integrationExtractValue.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(\n\t\t\"update project__integration_extract_value set value_source=?, body_data_type=?, `key`=?, `variable`=?, `name`=?, `variable_type`=? where `id`=?\",\n\t\tintegrationExtractValue.ValueSource,\n\t\tintegrationExtractValue.BodyDataType,\n\t\tintegrationExtractValue.Key,\n\t\tintegrationExtractValue.Variable,\n\t\tintegrationExtractValue.Name,\n\t\tintegrationExtractValue.VariableType,\n\t\tintegrationExtractValue.ID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateIntegrationMatcher(projectID int, matcher db.IntegrationMatcher) (newMatcher db.IntegrationMatcher, err error) {\n\terr = matcher.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__integration_matcher \"+\n\t\t\t\"(match_type, `method`, body_data_type, `key`, `value`, integration_id, `name`) values \"+\n\t\t\t\"(?, ?, ?, ?, ?, ?, ?)\",\n\t\tmatcher.MatchType,\n\t\tmatcher.Method,\n\t\tmatcher.BodyDataType,\n\t\tmatcher.Key,\n\t\tmatcher.Value,\n\t\tmatcher.IntegrationID,\n\t\tmatcher.Name)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewMatcher = matcher\n\tnewMatcher.ID = insertID\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationMatchers(projectID int, params db.RetrieveQueryParams, integrationID int) (matchers []db.IntegrationMatcher, err error) {\n\tquery, args, err := squirrel.Select(\"m.*\").\n\t\tFrom(\"project__integration_matcher as m\").\n\t\tWhere(squirrel.Eq{\"integration_id\": integrationID}).\n\t\tOrderBy(\"m.id\").\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&matchers, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationMatcher(projectID int, matcherID int, integrationID int) (matcher db.IntegrationMatcher, err error) {\n\tquery, args, err := squirrel.Select(\"m.*\").\n\t\tFrom(\"project__integration_matcher as m\").\n\t\tWhere(squirrel.Eq{\"id\": matcherID}).\n\t\tOrderBy(\"m.id\").\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&matcher, query, args...)\n\n\treturn matcher, err\n}\n\nfunc (d *SqlDb) GetIntegrationMatcherRefs(projectID int, matcherID int, integrationID int) (refs db.IntegrationExtractorChildReferrers, err error) {\n\trefs.Integrations, err = d.GetObjectReferences(db.IntegrationProps, db.IntegrationMatcherProps, matcherID)\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteIntegrationMatcher(projectID int, matcherID int, integrationID int) error {\n\treturn d.deleteObjectByReferencedID(integrationID, db.IntegrationProps, db.IntegrationMatcherProps, matcherID)\n}\n\nfunc (d *SqlDb) UpdateIntegrationMatcher(projectID int, integrationMatcher db.IntegrationMatcher) error {\n\terr := integrationMatcher.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(\n\t\t\"update project__integration_matcher set match_type=?, `method`=?, body_data_type=?, `key`=?, `value`=?, `name`=? where integration_id=? and `id`=?\",\n\t\tintegrationMatcher.MatchType,\n\t\tintegrationMatcher.Method,\n\t\tintegrationMatcher.BodyDataType,\n\t\tintegrationMatcher.Key,\n\t\tintegrationMatcher.Value,\n\t\tintegrationMatcher.Name,\n\t\tintegrationMatcher.IntegrationID,\n\t\tintegrationMatcher.ID)\n\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/integration_alias.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) CreateIntegrationAlias(alias db.IntegrationAlias) (res db.IntegrationAlias, err error) {\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__integration_alias (project_id, integration_id, alias) values (?, ?, ?)\",\n\t\talias.ProjectID,\n\t\talias.IntegrationID,\n\t\talias.Alias)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tres = alias\n\tres.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationAliases(projectID int, integrationID *int) (res []db.IntegrationAlias, err error) {\n\n\tq := squirrel.Select(\"*\").From(db.IntegrationAliasProps.TableName)\n\n\tif integrationID == nil {\n\t\tq = q.Where(\"project_id=? AND integration_id is null\", projectID)\n\t} else {\n\t\tq = q.Where(\"project_id=? AND integration_id=?\", projectID, integrationID)\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&res, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetIntegrationsByAlias(alias string) (res []db.Integration, level db.IntegrationAliasLevel, err error) {\n\n\tvar aliasObj db.IntegrationAlias\n\n\tq := squirrel.Select(\"*\").\n\t\tFrom(db.IntegrationAliasProps.TableName).\n\t\tWhere(\"alias=?\", alias)\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&aliasObj, query, args...)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif aliasObj.IntegrationID == nil {\n\t\tlevel = db.IntegrationAliasProject\n\t\tvar projIntegrations []db.Integration\n\t\tprojIntegrations, err = d.GetIntegrations(aliasObj.ProjectID, db.RetrieveQueryParams{}, true)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tfor _, integration := range projIntegrations {\n\t\t\tif integration.Searchable {\n\t\t\t\tres = append(res, integration)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tlevel = db.IntegrationAliasSingle\n\t\tvar integration db.Integration\n\t\tintegration, err = d.GetIntegration(aliasObj.ProjectID, *aliasObj.IntegrationID)\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif integration.Searchable {\n\t\t\terr = db.ErrNotFound\n\t\t\treturn\n\t\t}\n\n\t\tres = append(res, integration)\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteIntegrationAlias(projectID int, aliasID int) error {\n\treturn d.deleteObject(projectID, db.IntegrationAliasProps, aliasID)\n}\n"
  },
  {
    "path": "db/sql/inventory.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) GetInventory(projectID int, inventoryID int) (inventory db.Inventory, err error) {\n\terr = d.getObject(projectID, db.InventoryProps, inventoryID, &inventory)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetInventories(projectID int, params db.RetrieveQueryParams, types []db.InventoryType) ([]db.Inventory, error) {\n\tvar inventories []db.Inventory\n\terr := d.getObjects(projectID, db.InventoryProps, params, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {\n\t\tif len(types) == 0 {\n\t\t\treturn builder\n\t\t}\n\n\t\treturn builder.Where(squirrel.Eq{\"type\": types})\n\t}, &inventories)\n\treturn inventories, err\n}\n\nfunc (d *SqlDb) GetInventoryRefs(projectID int, inventoryID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.InventoryProps, inventoryID)\n}\n\nfunc (d *SqlDb) DeleteInventory(projectID int, inventoryID int) error {\n\treturn d.deleteObject(projectID, db.InventoryProps, inventoryID)\n}\n\nfunc (d *SqlDb) UpdateInventory(inventory db.Inventory) error {\n\n\t_, err := d.exec(\n\t\t\"update project__inventory set \"+\n\t\t\t\"name=?, \"+\n\t\t\t\"type=?, \"+\n\t\t\t\"runner_tag=?, \"+\n\t\t\t\"ssh_key_id=?, \"+\n\t\t\t\"inventory=?, \"+\n\t\t\t\"become_key_id=?, \"+\n\t\t\t\"template_id=?, \"+\n\t\t\t\"repository_id=? \"+\n\t\t\t\"where id=?\",\n\t\tinventory.Name,\n\t\tinventory.Type,\n\t\tinventory.RunnerTag,\n\t\tinventory.SSHKeyID,\n\t\tinventory.Inventory,\n\t\tinventory.BecomeKeyID,\n\t\tinventory.TemplateID,\n\t\tinventory.RepositoryID,\n\t\tinventory.ID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateInventory(inventory db.Inventory) (newInventory db.Inventory, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__inventory (\"+\n\t\t\t\"project_id, name, type, \"+\n\t\t\t\"ssh_key_id, inventory, become_key_id, \"+\n\t\t\t\"template_id, repository_id, runner_tag) values \"+\n\t\t\t\"(?, ?, ?, \"+\n\t\t\t\"?, ?, ?, \"+\n\t\t\t\"?, ?, ?)\",\n\t\tinventory.ProjectID,\n\t\tinventory.Name,\n\t\tinventory.Type,\n\t\tinventory.SSHKeyID,\n\t\tinventory.Inventory,\n\t\tinventory.BecomeKeyID,\n\t\tinventory.TemplateID,\n\t\tinventory.RepositoryID,\n\t\tinventory.RunnerTag,\n\t)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewInventory = inventory\n\tnewInventory.ID = insertID\n\treturn\n}\n"
  },
  {
    "path": "db/sql/migration.go",
    "content": "package sql\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"text/template\"\n\n\t\"github.com/go-gorp/gorp/v3\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nvar (\n\tautoIncrementRE  = regexp.MustCompile(`(?i)\\bautoincrement\\b`)\n\tserialRE         = regexp.MustCompile(`(?i)\\binteger primary key autoincrement\\b`)\n\tdateTimeTypeRE   = regexp.MustCompile(`(?i)\\bdatetime\\b`)\n\ttinyintRE        = regexp.MustCompile(`(?i)\\btinyint\\b`)\n\tlongtextRE       = regexp.MustCompile(`(?i)\\blongtext\\b`)\n\tifExistsRE       = regexp.MustCompile(`(?i)\\bif exists\\b`)\n\tchangeRE         = regexp.MustCompile(`^alter table \\x60(\\w+)\\x60 change \\x60(\\w+)\\x60 \\x60(\\w+)\\x60 ([\\w\\(\\)]+)( autoincrement)?( not null)?$`)\n\tdropForeignKeyRE = regexp.MustCompile(`(?i)\\bdrop foreign key\\b`)\n)\n\n// getVersionPath is the humanoid version with the file format appended\nfunc getVersionPath(version db.Migration) string {\n\treturn version.HumanoidVersion() + \".sql\"\n}\n\n// getVersionErrPath is the humanoid version with '.err' and file format appended\nfunc getVersionErrPath(version db.Migration) string {\n\treturn version.HumanoidVersion() + \".err.sql\"\n}\n\n// getVersionSQL takes a path to an SQL file and returns it from embed.FS\n// a slice of strings separated by newlines\nfunc getVersionSQL(dialect string, name string, ignoreErrors bool) (queries []string) {\n\tsql, err := dbAssets.ReadFile(path.Join(\"migrations\", name))\n\tif err != nil {\n\t\tif ignoreErrors {\n\t\t\tlog.WithError(err).Warnf(\"migration %s not found\", name)\n\t\t\treturn nil\n\t\t} else {\n\t\t\tpanic(err)\n\t\t}\n\t}\n\n\tprocessedSql, err := preprocessSqlDialect(dialect, string(sql))\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tqueries = strings.Split(strings.ReplaceAll(processedSql, \";\\r\\n\", \";\\n\"), \";\\n\")\n\tfor i := range queries {\n\t\tqueries[i] = strings.Trim(queries[i], \"\\r\\n\\t \")\n\t}\n\treturn\n}\n\nfunc getDialectConfig(dialect string) interface{} {\n\ttype Config struct {\n\t\tSqlite     bool\n\t\tMysql      bool\n\t\tPostgresql bool\n\t}\n\n\tconf := Config{}\n\n\tswitch dialect {\n\tcase util.DbDriverSQLite:\n\t\tconf.Sqlite = true\n\tcase \"mysql\":\n\t\tconf.Mysql = true\n\tcase \"postgres\":\n\t\tconf.Postgresql = true\n\t}\n\n\treturn conf\n}\n\nfunc preprocessSqlDialect(dialect string, sql string) (string, error) {\n\n\ttmpl, err := template.New(\"sql\").Parse(sql)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tvar buf bytes.Buffer\n\terr = tmpl.Execute(&buf, getDialectConfig(dialect))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn buf.String(), nil\n}\n\n// prepareMigration converts migration SQLite-query to current dialect.\n// Supported MySQL and Postgres dialects.\nfunc (d *SqlDb) prepareMigration(query string) string {\n\tswitch d.Sql().Dialect.(type) {\n\tcase gorp.MySQLDialect:\n\t\tquery = autoIncrementRE.ReplaceAllString(query, \"auto_increment\")\n\t\tquery = ifExistsRE.ReplaceAllString(query, \"\")\n\tcase gorp.PostgresDialect:\n\t\tm := changeRE.FindStringSubmatch(query)\n\t\tif m != nil {\n\t\t\ttableName := m[1]\n\t\t\toldColumnName := m[2]\n\t\t\tnewColumnName := m[3]\n\t\t\tcolumnType := m[4]\n\t\t\t//autoincrement := m[5] != \"\"\n\t\t\tcolumnNotNull := m[6] != \"\"\n\n\t\t\tvar queries []string\n\t\t\tqueries = append(queries,\n\t\t\t\t\"alter table `\"+tableName+\"` alter column `\"+oldColumnName+\"` type \"+columnType)\n\n\t\t\tif columnNotNull {\n\t\t\t\tqueries = append(queries,\n\t\t\t\t\t\"alter table `\"+tableName+\"` alter column `\"+oldColumnName+\"` set not null\")\n\t\t\t} else {\n\t\t\t\tqueries = append(queries,\n\t\t\t\t\t\"alter table `\"+tableName+\"` alter column `\"+oldColumnName+\"` drop not null\")\n\t\t\t}\n\n\t\t\tif oldColumnName != newColumnName {\n\t\t\t\tqueries = append(queries,\n\t\t\t\t\t\"alter table `\"+tableName+\"` rename column `\"+oldColumnName+\"` to `\"+newColumnName+\"`\")\n\t\t\t}\n\n\t\t\tquery = strings.Join(queries, \"; \")\n\t\t}\n\n\t\tquery = dateTimeTypeRE.ReplaceAllString(query, \"timestamp\")\n\t\tquery = tinyintRE.ReplaceAllString(query, \"smallint\")\n\t\tquery = longtextRE.ReplaceAllString(query, \"text\")\n\t\tquery = serialRE.ReplaceAllString(query, \"serial primary key\")\n\t\tquery = dropForeignKeyRE.ReplaceAllString(query, \"drop constraint\")\n\t\tquery = identifierQuoteRE.ReplaceAllString(query, \"\\\"\")\n\t}\n\treturn query\n}\n\n// IsMigrationApplied queries the database to see if a migration table with this version id exists already\nfunc (d *SqlDb) IsMigrationApplied(migration db.Migration) (bool, error) {\n\tinitialized, err := d.IsInitialized()\n\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tif !initialized {\n\t\treturn false, nil\n\t}\n\n\texists, err := d.Sql().SelectInt(\n\t\td.PrepareQuery(\"select count(1) as ex from migrations where version = ?\"),\n\t\tmigration.Version)\n\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\treturn exists > 0, nil\n}\n\n// ApplyMigration runs executes a database migration\nfunc (d *SqlDb) ApplyMigration(migration db.Migration) error {\n\tinitialized, err := d.IsInitialized()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !initialized {\n\t\tfmt.Println(\"Creating migrations table\")\n\t\tquery := d.prepareMigration(initialSQL)\n\t\tif query == \"\" {\n\t\t\treturn nil\n\t\t}\n\t\t_, err = d.exec(query)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\ttx, err := d.Sql().Begin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch migration.Version {\n\tcase \"2.10.24\":\n\t\terr = migration_2_10_24{db: d}.PreApply(tx)\n\t}\n\n\tif err != nil {\n\t\thandleRollbackError(tx.Rollback())\n\t\treturn err\n\t}\n\n\tqueries := getVersionSQL(d.GetDialect(), getVersionPath(migration), false)\n\tfor i, query := range queries {\n\t\tfmt.Printf(\"\\r [%d/%d]\", i+1, len(query))\n\n\t\tif len(query) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tq := d.prepareMigration(query)\n\t\tif q == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t_, err = tx.Exec(q)\n\t\tif err != nil {\n\t\t\thandleRollbackError(tx.Rollback())\n\t\t\tlog.Warnf(\"\\n ERR! Query: %s\\n\\n\", q)\n\t\t\tlog.Fatal(err.Error())\n\t\t\treturn err\n\t\t}\n\t}\n\n\tswitch migration.Version {\n\tcase \"2.8.26\":\n\t\terr = migration_2_8_26{db: d}.PostApply(tx)\n\tcase \"2.8.42\":\n\t\terr = migration_2_8_42{db: d}.PostApply(tx)\n\t}\n\n\tif err != nil {\n\t\thandleRollbackError(tx.Rollback())\n\t\treturn err\n\t}\n\n\t_, err = tx.Exec(d.PrepareQuery(\"insert into migrations(version, upgraded_date) values (?, ?)\"), migration.Version, tz.Now())\n\tif err != nil {\n\t\thandleRollbackError(tx.Rollback())\n\t\treturn err\n\t}\n\n\tfmt.Println()\n\n\treturn tx.Commit()\n}\n\n// TryRollbackMigration attempts to rollback the database to an earlier version if a rollback exists\nfunc (d *SqlDb) TryRollbackMigration(version db.Migration) {\n\tvar err error\n\n\ttx, err := d.Sql().Begin()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tdefer func() {\n\t\tif err == nil {\n\t\t\terr = tx.Commit()\n\t\t\tif err != nil {\n\t\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"migration\",\n\t\t\t\t\t\"version\": version.Version,\n\t\t\t\t}).Error(\"failed to commit undo migration transaction\")\n\t\t\t}\n\t\t} else {\n\t\t\t_ = tx.Rollback()\n\t\t\tlog.Error(err)\n\t\t}\n\t}()\n\n\tqueries := getVersionSQL(d.GetDialect(), getVersionErrPath(version), true)\n\n\tfor _, query := range queries {\n\t\tfmt.Printf(\" [ROLLBACK] > %v\\n\", query)\n\t\tq := d.prepareMigration(query)\n\t\tif q == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif _, err = d.execTx(tx, q); err != nil {\n\t\t\tfmt.Println(\" [ROLLBACK] - Stopping\")\n\t\t\treturn\n\t\t}\n\t}\n\n\t_, err = d.execTx(tx, \"delete from migrations where version=?\", version.Version)\n}\n"
  },
  {
    "path": "db/sql/migration_2_10_24.go",
    "content": "package sql\n\nimport \"github.com/go-gorp/gorp/v3\"\n\ntype migration_2_10_24 struct {\n\tdb *SqlDb\n}\n\nfunc (m migration_2_10_24) PreApply(tx *gorp.Transaction) error {\n\tswitch m.db.Sql().Dialect.(type) {\n\tcase gorp.MySQLDialect:\n\t\t_, _ = tx.Exec(m.db.PrepareQuery(\"alter table `project__template` drop foreign key `project__template_ibfk_6`\"))\n\tcase gorp.PostgresDialect:\n\t\t_, err := tx.Exec(\n\t\t\tm.db.PrepareQuery(\"alter table `project__template` drop constraint if exists `project__template_vault_key_id_fkey`\"))\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "db/sql/migration_2_8_28.go",
    "content": "package sql\n\nimport (\n\t\"github.com/go-gorp/gorp/v3\"\n\t\"strings\"\n)\n\ntype migration_2_8_26 struct {\n\tdb *SqlDb\n}\n\nfunc (m migration_2_8_26) PostApply(tx *gorp.Transaction) error {\n\trows, err := tx.Query(m.db.PrepareQuery(\"SELECT id, git_url FROM project__repository\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trepoUrls := make(map[string]string)\n\n\tfor rows.Next() {\n\t\tvar id, url string\n\n\t\terr3 := rows.Scan(&id, &url)\n\t\tif err3 != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\trepoUrls[id] = url\n\t}\n\n\terr = rows.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor id, url := range repoUrls {\n\t\tbranch := \"master\"\n\t\tparts := strings.Split(url, \"#\")\n\t\tif len(parts) > 1 {\n\t\t\turl, branch = parts[0], parts[1]\n\t\t}\n\t\tq := m.db.PrepareQuery(\"UPDATE project__repository \" +\n\t\t\t\"SET git_url = ?, git_branch = ? \" +\n\t\t\t\"WHERE id = ?\")\n\t\t_, err = tx.Exec(q, url, branch, id)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "db/sql/migration_2_8_42.go",
    "content": "package sql\n\nimport \"github.com/go-gorp/gorp/v3\"\n\ntype migration_2_8_42 struct {\n\tdb *SqlDb\n}\n\nfunc (m migration_2_8_42) PostApply(tx *gorp.Transaction) error {\n\tswitch m.db.Sql().Dialect.(type) {\n\tcase gorp.MySQLDialect:\n\t\t_, _ = tx.Exec(m.db.PrepareQuery(\"alter table `task` drop foreign key `task_ibfk_3`\"))\n\tcase gorp.PostgresDialect:\n\t\t_, err := tx.Exec(\n\t\t\tm.db.PrepareQuery(\"alter table `task` drop constraint if exists `task_build_task_id_fkey`\"))\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "db/sql/migrations/v0.0.0.sql",
    "content": "create table `user` (\n\t`id` integer primary key autoincrement,\n\t`created` datetime not null,\n\t`username` varchar(255) not null,\n\t`name` varchar(255) not null,\n\t`email` varchar(255) not null,\n\t`password` varchar(255) not null,\n\n\tunique (`username`),\n\tunique (`email`)\n);\n\ncreate table `project` (\n\t`id` integer primary key autoincrement,\n\t`created` datetime not null,\n\t`name` varchar(255) not null\n);\n\ncreate table `project__user` (\n\t`project_id` int not null,\n\t`user_id` int not null,\n\t`admin` boolean not null default false,\n\n\tunique (`project_id`, `user_id`),\n\tforeign key (`project_id`) references project(`id`) on delete cascade,\n\tforeign key (`user_id`) references `user`(`id`) on delete cascade\n);\n\ncreate table `access_key` (\n\t`id` integer primary key autoincrement,\n\t`name` varchar(255) not null,\n\t`type` varchar(255) not null,\n\n\t`project_id` int null,\n\t`key` text null,\n\t`secret` text null,\n\n\tforeign key (`project_id`) references project(`id`) on delete set null\n);\n\ncreate table `project__repository` (\n\t`id` integer primary key autoincrement,\n\t`project_id` int not null,\n\t`git_url` text not null,\n\t`ssh_key_id` int not null,\n\n\tforeign key (`project_id`) references project(`id`) on delete cascade,\n\tforeign key (`ssh_key_id`) references access_key(`id`)\n);\n\ncreate table `project__inventory` (\n\t`id` integer primary key autoincrement,\n\t`project_id` int not null,\n\t`type` varchar(255) not null,\n\t`key_id` int null,\n\t`inventory` longtext not null,\n\n\tforeign key (`project_id`) references project(`id`) on delete cascade,\n\tforeign key (`key_id`) references access_key(`id`)\n);\n\ncreate table `project__environment` (\n\t`id` integer primary key autoincrement,\n\t`project_id` int not null,\n\t`password` varchar(255) null,\n\t`json` longtext not null,\n\n\tforeign key (`project_id`) references project(`id`) on delete cascade\n);\n\ncreate table `project__template` (\n\t`id` integer primary key autoincrement,\n\t`ssh_key_id` int not null,\n\t`project_id` int not null,\n\t`inventory_id` int not null,\n\t`repository_id` int not null,\n\t`environment_id` int null,\n\t`playbook` varchar(255) not null,\n\n\tforeign key (`project_id`) references project(`id`) on delete cascade,\n\tforeign key (`ssh_key_id`) references access_key(`id`),\n\tforeign key (`inventory_id`) references project__inventory(`id`),\n\tforeign key (`repository_id`) references project__repository(`id`),\n\tforeign key (`environment_id`) references project__environment(`id`)\n);\n\ncreate table `project__template_schedule` (\n\t`template_id` int primary key,\n\t`cron_format` varchar(255) not null,\n\n\tforeign key (`template_id`) references project__template(`id`) on delete cascade\n);\n\ncreate table `task` (\n\t`id` integer primary key autoincrement,\n\t`template_id` int not null,\n\t`status` varchar(255) not null,\n\t`playbook` varchar(255) not null,\n\t`environment` longtext null,\n\n\tforeign key (`template_id`) references project__template(`id`) on delete cascade\n);\n\ncreate table `task__output` (\n\t`task_id` int not null,\n\t`task` varchar(255) not null,\n\t`time` datetime not null,\n\t`output` longtext not null,\n\n\tunique (`task_id`, `time`),\n\tforeign key (`task_id`) references task(`id`) on delete cascade\n);\n"
  },
  {
    "path": "db/sql/migrations/v1.0.0.sql",
    "content": "alter table task add `debug` boolean not null default false;\n\nalter table `project__template` add `arguments` text null;\nalter table `project__template` add `override_args` boolean not null default false;\nalter table `project__inventory` add `ssh_key_id` int null references access_key(`id`);"
  },
  {
    "path": "db/sql/migrations/v1.2.0.sql",
    "content": "create table `user__token` (\n\t`id` varchar(32) not null primary key,\n\t`created` datetime not null,\n\t`expired` boolean not null default false,\n\t`user_id` int not null,\n\n\tforeign key (`user_id`) references `user`(`id`) on delete cascade\n);\n"
  },
  {
    "path": "db/sql/migrations/v1.3.0.sql",
    "content": "alter table project__environment add `name` varchar(255);\nalter table project__inventory add `name` varchar(255);\nalter table project__repository add `name` varchar(255);\n"
  },
  {
    "path": "db/sql/migrations/v1.4.0.sql",
    "content": "CREATE TABLE `event` (\n  `project_id` int DEFAULT NULL,\n  `object_id` int DEFAULT NULL,\n  `object_type` varchar(20) DEFAULT '',\n  `description` text,\n  `created` datetime NOT NULL\n);\n\nalter table `task` add `created` datetime null;\nalter table `task` add `start` datetime null;\nalter table `task` add `end` datetime null;\n"
  },
  {
    "path": "db/sql/migrations/v1.5.0.sql",
    "content": "CREATE TABLE `session` (\n  `id` integer primary key autoincrement,\n  `user_id` int NOT NULL,\n  `created` datetime NOT NULL,\n  `last_active` datetime NOT NULL,\n  `ip` varchar(15) NOT NULL DEFAULT '',\n  `user_agent` text NOT NULL,\n  `expired` boolean NOT NULL DEFAULT false\n);\n\nCREATE INDEX `user_id` ON `session`(`user_id`);\n\nCREATE INDEX `expired` ON `session`(`expired`);\n"
  },
  {
    "path": "db/sql/migrations/v1.6.0.sql",
    "content": "alter table project__environment add `removed` boolean default false;\nalter table project__inventory add `removed` boolean default false;\nalter table project__repository add `removed` boolean default false;\nalter table access_key add `removed` boolean default false;\n"
  },
  {
    "path": "db/sql/migrations/v1.7.0.sql",
    "content": "alter table task add user_id int;\n"
  },
  {
    "path": "db/sql/migrations/v1.8.0.sql",
    "content": "ALTER TABLE task ADD dry_run boolean NOT NULL DEFAULT false;\n"
  },
  {
    "path": "db/sql/migrations/v1.9.0.sql",
    "content": "ALTER TABLE project__template ADD alias varchar(100);\n"
  },
  {
    "path": "db/sql/migrations/v2.10.12.sql",
    "content": "alter table `project__template` add `tasks` int not null default 0;\nalter table `project__schedule` add `name` varchar(100) not null default '';\nalter table `project__schedule` add `active` boolean not null default true;"
  },
  {
    "path": "db/sql/migrations/v2.10.15.sql",
    "content": "alter table `access_key` add `environment_id` int null references project__environment(`id`) on delete cascade;\nalter table `access_key` add `user_id` int null references `user`(`id`) on delete cascade;\nalter table `project__integration` add `task_params` text null;\nalter table `task` add `schedule_id` int null references project__schedule(`id`) on delete set null;"
  },
  {
    "path": "db/sql/migrations/v2.10.16.sql",
    "content": "update `project__template` set `app` = 'ansible' where `app` = '';\n\nalter table `project__template` change `app` `app` varchar(50) not null;\n"
  },
  {
    "path": "db/sql/migrations/v2.10.24.sql",
    "content": "create table `project__template_vault` (\n    `id` integer primary key autoincrement,\n    `project_id` int not null,\n    `template_id` int not null,\n    `vault_key_id` int not null,\n    `name` varchar(255),\n\n    unique (`template_id`, `vault_key_id`, `name`),\n    foreign key (`project_id`) references project(`id`) on delete cascade,\n    foreign key (`template_id`) references project__template(`id`) on delete cascade,\n    foreign key (`vault_key_id`) references `access_key`(`id`) on delete cascade\n);\n\ninsert into `project__template_vault` (template_id, project_id, vault_key_id)\nselect `id` as template_id, project_id, vault_key_id\nfrom `project__template` where `vault_key_id` is not null;\n\nalter table `project__template` drop column `vault_key_id`;\n"
  },
  {
    "path": "db/sql/migrations/v2.10.26.sql",
    "content": "alter table `runner` add `name` varchar(100) not null default '';\nalter table `runner` add `active` boolean not null default true;"
  },
  {
    "path": "db/sql/migrations/v2.10.28.sql",
    "content": "alter table task add git_branch varchar(255);\n\nalter table project__template add git_branch varchar(255);\n"
  },
  {
    "path": "db/sql/migrations/v2.10.33.sql",
    "content": "alter table `project__template_vault` change `vault_key_id` `vault_key_id` int;\nalter table `project__template_vault` add `type` varchar(20) not null default 'password';\nalter table `project__template_vault` add `script` text;\nupdate `project__template_vault` set `type` = 'password' where `vault_key_id` IS NOT NULL;"
  },
  {
    "path": "db/sql/migrations/v2.10.46.sql",
    "content": "alter table `project__template` add `task_params` text;\nalter table `task` add `params` text;"
  },
  {
    "path": "db/sql/migrations/v2.11.5.sql",
    "content": "create table project__terraform_inventory_alias(\n  `alias` varchar(100) primary key,\n  `project_id` int NOT NULL,\n  `inventory_id` int NOT NULL,\n  `auth_key_id` int NOT NULL,\n  foreign key (`project_id`) references project(`id`) on delete cascade,\n  foreign key (`inventory_id`) references project__inventory(`id`) on delete cascade,\n  foreign key (`auth_key_id`) references access_key(`id`)\n);\n\ncreate table project__terraform_inventory_state(\n  `id` integer primary key autoincrement,\n  `project_id` int NOT NULL,\n  `inventory_id` int NOT NULL,\n  `state` text NOT NULL,\n  `created` datetime NOT NULL,\n  `task_id` int,\n  foreign key (`task_id`) references task(`id`) on delete set null,\n  foreign key (`project_id`) references project(`id`) on delete cascade,\n  foreign key (`inventory_id`) references project__inventory(`id`) on delete cascade\n);\n\nalter table `project__inventory` change `holder_id` `template_id` int"
  },
  {
    "path": "db/sql/migrations/v2.12.0.sql",
    "content": "create table user__totp(\n  `id` integer primary key autoincrement,\n  `user_id` int NOT NULL,\n  `url` varchar(250) NOT NULL,\n  recovery_hash varchar(250) NOT NULL,\n  `created` datetime NOT NULL,\n  unique (`user_id`),\n  foreign key (`user_id`) references `user`(`id`) on delete cascade\n);\n\nalter table `session` add column verification_method int not null default 0;\nalter table `session` add column verified boolean not null default false;"
  },
  {
    "path": "db/sql/migrations/v2.12.15.sql",
    "content": "alter table `project__schedule` change `last_commit_hash` `last_commit_hash` varchar(64);\nalter table `task` change `commit_hash` `commit_hash` varchar(64);\n"
  },
  {
    "path": "db/sql/migrations/v2.12.3.sql",
    "content": "alter table `task__output` drop `task`;\n\nalter table `task__output` change `id` `id` bigint autoincrement not null"
  },
  {
    "path": "db/sql/migrations/v2.12.4.sql",
    "content": "alter table `user` add column pro boolean not null default false;"
  },
  {
    "path": "db/sql/migrations/v2.12.5.sql",
    "content": "alter table `runner` add column public_key text;"
  },
  {
    "path": "db/sql/migrations/v2.13.0.sql",
    "content": "alter table `runner` add column tag varchar(200) not null default '';\nalter table `project__template` add column runner_tag varchar(50);"
  },
  {
    "path": "db/sql/migrations/v2.14.0.err.sql",
    "content": "alter table project__template drop column allow_override_branch_in_task;\nALTER TABLE task ADD diff boolean NOT NULL DEFAULT false;\nalter table task add `debug` boolean not null default false;\nALTER TABLE task ADD dry_run boolean NOT NULL DEFAULT false;\nalter table `task` add column `hosts_limit` varchar(255) not null default '';\n\nalter table runner drop column touched;\nalter table runner drop column cleaning_requested;\n"
  },
  {
    "path": "db/sql/migrations/v2.14.0.sql",
    "content": "alter table project__template add allow_override_branch_in_task bool not null default false;\nalter table `task` drop column `diff`;\nalter table `task` drop column `debug`;\nalter table `task` drop column `dry_run`;\nalter table `task` drop column `hosts_limit`;\nalter table runner add touched datetime;\nalter table runner add cleaning_requested datetime;\n"
  },
  {
    "path": "db/sql/migrations/v2.14.1.err.sql",
    "content": "alter table `project__integration_extract_value` drop column `variable_type`;"
  },
  {
    "path": "db/sql/migrations/v2.14.1.sql",
    "content": "alter table `project__integration_extract_value` add `variable_type` varchar(255);\r\nupdate `project__integration_extract_value` set `variable_type` = 'environment' where `variable_type` is null or `variable_type` = '';"
  },
  {
    "path": "db/sql/migrations/v2.14.12.err.sql",
    "content": "drop index task__output_time_idx;"
  },
  {
    "path": "db/sql/migrations/v2.14.12.sql",
    "content": "create index task__output_time_idx on task__output (time);"
  },
  {
    "path": "db/sql/migrations/v2.14.5.sql",
    "content": "update `option` set `value` = '' where `value` is null;\nalter table `option` change `value` `value` varchar(1000) not null;\n"
  },
  {
    "path": "db/sql/migrations/v2.14.7.sql",
    "content": "-- Mock for BoltDB migration"
  },
  {
    "path": "db/sql/migrations/v2.15.0.err.sql",
    "content": "drop table task__stage_result;\r\ndrop table task__stage;\r\n"
  },
  {
    "path": "db/sql/migrations/v2.15.0.sql",
    "content": "create table task__stage\r\n(\r\n    `id`              integer primary key autoincrement,\r\n    `task_id`         int      NOT NULL,\r\n    `start`           datetime null,\r\n    `start_output_id` bigint   null,\r\n    `end`             datetime null,\r\n    `end_output_id`   bigint   null,\r\n    `type`            varchar(100),\r\n    foreign key (`task_id`) references `task` (`id`) on delete cascade,\r\n    foreign key (`start_output_id`) references `task__output` (`id`) on delete set null,\r\n    foreign key (`end_output_id`) references `task__output` (`id`) on delete set null\r\n);\r\n\r\ncreate table task__stage_result\r\n(\r\n    `id`       integer primary key autoincrement,\r\n    `task_id`  int NOT NULL,\r\n    `stage_id` int NOT NULL,\r\n    `json`     text,\r\n    foreign key (`task_id`) references `task` (`id`) on delete cascade,\r\n    foreign key (`stage_id`) references `task__stage` (`id`) on delete cascade\r\n);\r\n"
  },
  {
    "path": "db/sql/migrations/v2.15.1.err.sql",
    "content": "alter table `project__inventory` drop `runner_tag`;"
  },
  {
    "path": "db/sql/migrations/v2.15.1.sql",
    "content": "alter table `project__inventory` add `runner_tag` varchar(255);"
  },
  {
    "path": "db/sql/migrations/v2.15.1.sqlite.sql",
    "content": "CREATE TABLE \"option\" (\n                          \"key\"  VARCHAR(255) NOT NULL PRIMARY KEY,\n                          value  VARCHAR(1000) NOT NULL\n);\n\nCREATE TABLE project (\n                         id                 INTEGER PRIMARY KEY AUTOINCREMENT,\n                         created            DATETIME   NOT NULL,\n                         name               VARCHAR(255) NOT NULL,\n                         alert              INTEGER    NOT NULL DEFAULT 0,\n                         alert_chat         VARCHAR(30) NULL,\n                         max_parallel_tasks INTEGER    NOT NULL DEFAULT 0,\n                         type               VARCHAR(20) NULL DEFAULT ''\n);\n\nCREATE TABLE project__environment (\n                                      id          INTEGER PRIMARY KEY AUTOINCREMENT,\n                                      project_id  INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                      password    VARCHAR(255) NULL,\n                                      json        TEXT NOT NULL,\n                                      name        VARCHAR(255) NULL,\n                                      env         TEXT\n);\n\nCREATE INDEX project__environment__project__environment_project_id\n    ON project__environment(project_id);\n\nCREATE TABLE project__view (\n                               id          INTEGER PRIMARY KEY AUTOINCREMENT,\n                               title       VARCHAR(100) NOT NULL,\n                               project_id  INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                               position    INTEGER NOT NULL\n);\n\nCREATE INDEX project__view__project__view_project_id\n    ON project__view(project_id);\n\nCREATE TABLE runner (\n                        id                  INTEGER PRIMARY KEY AUTOINCREMENT,\n                        project_id          INTEGER REFERENCES project(id) ON DELETE CASCADE,\n                        token               VARCHAR(255) NOT NULL,\n                        webhook             VARCHAR(1000) NOT NULL DEFAULT '',\n                        max_parallel_tasks  INTEGER NOT NULL DEFAULT 0,\n                        name                VARCHAR(100) NOT NULL DEFAULT '',\n                        active              INTEGER NOT NULL DEFAULT 1,\n                        public_key          TEXT NULL,\n                        tag                 VARCHAR(200) NOT NULL DEFAULT '',\n                        touched             DATETIME NULL,\n                        cleaning_requested  DATETIME NULL\n);\n\nCREATE INDEX runner__runner__project_id\n    ON runner(project_id);\n\nCREATE TABLE session (\n                         id              INTEGER PRIMARY KEY AUTOINCREMENT,\n                         user_id         INTEGER NOT NULL,\n                         created         DATETIME NOT NULL,\n                         last_active     DATETIME NOT NULL,\n                         ip              VARCHAR(39) NOT NULL DEFAULT '',\n                         user_agent      TEXT NOT NULL,\n                         expired         INTEGER NOT NULL DEFAULT 0,\n                         verification_method INTEGER NOT NULL DEFAULT 0,\n                         verified        INTEGER NOT NULL DEFAULT 0,\n                         FOREIGN KEY(user_id) REFERENCES user(id)\n);\n\nCREATE INDEX session__session__expired\n    ON session(expired);\n\nCREATE INDEX session__session__user_id\n    ON session(user_id);\n\nCREATE TABLE user (\n                      id        INTEGER PRIMARY KEY AUTOINCREMENT,\n                      created   DATETIME NOT NULL,\n                      username  VARCHAR(255) NOT NULL UNIQUE,\n                      name      VARCHAR(255) NOT NULL,\n                      email     VARCHAR(255) NOT NULL UNIQUE,\n                      password  VARCHAR(255) NOT NULL,\n                      alert     INTEGER NOT NULL DEFAULT 0,\n                      external  INTEGER NOT NULL DEFAULT 0,\n                      admin     INTEGER NOT NULL DEFAULT 1,\n                      pro       INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE TABLE access_key (\n                            id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                            name           VARCHAR(255) NOT NULL,\n                            type           VARCHAR(255) NOT NULL,\n                            project_id     INTEGER REFERENCES project(id) ON DELETE SET NULL,\n                            secret         TEXT NULL,\n                            environment_id INTEGER REFERENCES project__environment(id) ON DELETE CASCADE,\n                            user_id        INTEGER REFERENCES user(id) ON DELETE CASCADE\n);\n\nCREATE INDEX access_key__environment_id\n    ON access_key(environment_id);\n\nCREATE INDEX access_key__project_id\n    ON access_key(project_id);\n\nCREATE INDEX access_key__user_id\n    ON access_key(user_id);\n\nCREATE TABLE event (\n                       id          INTEGER PRIMARY KEY AUTOINCREMENT,\n                       project_id  INTEGER REFERENCES project(id) ON DELETE CASCADE,\n                       object_id   INTEGER NULL,\n                       object_type VARCHAR(20) NULL DEFAULT '',\n                       description TEXT NULL,\n                       created     DATETIME NOT NULL,\n                       user_id     INTEGER REFERENCES user(id) ON DELETE SET NULL\n);\n\nCREATE INDEX event__project_id\n    ON event(project_id);\n\nCREATE INDEX event__user_id\n    ON event(user_id);\n\nCREATE TABLE event_backup_5784568 (\n                                      project_id  INTEGER NULL,\n                                      object_id   INTEGER NULL,\n                                      object_type VARCHAR(20) NULL DEFAULT '',\n                                      description TEXT NULL,\n                                      created     DATETIME NOT NULL,\n                                      user_id     INTEGER REFERENCES user(id) ON DELETE SET NULL\n);\n\nCREATE INDEX event_backup_5784568__user_id\n    ON event_backup_5784568(user_id);\n\nCREATE TABLE project__repository (\n                                     id          INTEGER PRIMARY KEY AUTOINCREMENT,\n                                     project_id  INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                     git_url     TEXT NOT NULL,\n                                     ssh_key_id  INTEGER NOT NULL REFERENCES access_key(id),\n                                     name        VARCHAR(255) NULL,\n                                     git_branch  VARCHAR(255) NOT NULL DEFAULT ''\n);\n\nCREATE INDEX project__repository__project_id\n    ON project__repository(project_id);\n\nCREATE INDEX project__repository__ssh_key_id\n    ON project__repository(ssh_key_id);\n\nCREATE TABLE project__inventory (\n                                    id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                                    project_id     INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                    type           VARCHAR(255) NOT NULL,\n                                    inventory      TEXT NOT NULL,\n                                    ssh_key_id     INTEGER REFERENCES access_key(id),\n                                    name           VARCHAR(255) NULL,\n                                    become_key_id  INTEGER REFERENCES access_key(id),\n                                    template_id    INTEGER REFERENCES project__template(id) ON DELETE SET NULL,\n                                    repository_id  INTEGER REFERENCES project__repository(id) ON DELETE SET NULL,\n                                    runner_tag     VARCHAR(255) NULL\n);\n\nCREATE INDEX project__inventory__become_key_id\n    ON project__inventory(become_key_id);\n\nCREATE INDEX project__inventory__holder_id\n    ON project__inventory(template_id);\n\nCREATE INDEX project__inventory__project_id\n    ON project__inventory(project_id);\n\nCREATE INDEX project__inventory__repository_id\n    ON project__inventory(repository_id);\n\nCREATE INDEX project__inventory__ssh_key_id\n    ON project__inventory(ssh_key_id);\n\nCREATE TABLE project__template (\n                                   id                            INTEGER PRIMARY KEY AUTOINCREMENT,\n                                   project_id                    INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                   inventory_id                  INTEGER REFERENCES project__inventory(id),\n                                   repository_id                 INTEGER NOT NULL REFERENCES project__repository(id),\n                                   environment_id                INTEGER REFERENCES project__environment(id),\n                                   playbook                      VARCHAR(255) NOT NULL,\n                                   arguments                     TEXT NULL,\n                                   name                          VARCHAR(100) NOT NULL,\n                                   description                   TEXT NULL,\n                                   type                          VARCHAR(10) NOT NULL DEFAULT '',\n                                   start_version                 VARCHAR(20) NULL,\n                                   build_template_id             INTEGER REFERENCES project__template(id),\n                                   view_id                       INTEGER REFERENCES project__view(id) ON DELETE SET NULL,\n                                   survey_vars                   TEXT NULL,\n                                   autorun                       INTEGER NULL DEFAULT 0,\n                                   allow_override_args_in_task   INTEGER NOT NULL DEFAULT 0,\n                                   suppress_success_alerts       INTEGER NOT NULL DEFAULT 0,\n                                   app                           VARCHAR(50) NOT NULL,\n                                   tasks                         INTEGER NOT NULL DEFAULT 0,\n                                   git_branch                    VARCHAR(255) NULL,\n                                   task_params                   TEXT NULL,\n                                   runner_tag                    VARCHAR(50) NULL,\n                                   allow_override_branch_in_task INTEGER NOT NULL DEFAULT 0\n);\n\nCREATE INDEX project__template__build_template_id\n    ON project__template(build_template_id);\n\nCREATE INDEX project__template__environment_id\n    ON project__template(environment_id);\n\nCREATE INDEX project__template__inventory_id\n    ON project__template(inventory_id);\n\nCREATE INDEX project__template__project_id\n    ON project__template(project_id);\n\nCREATE INDEX project__template__repository_id\n    ON project__template(repository_id);\n\nCREATE INDEX project__template__view_id\n    ON project__template(view_id);\n\nCREATE TABLE project__integration (\n                                      id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                                      name           VARCHAR(255) NOT NULL,\n                                      project_id     INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                      template_id    INTEGER NOT NULL REFERENCES project__template(id) ON DELETE CASCADE,\n                                      auth_method    VARCHAR(15) NOT NULL DEFAULT 'none',\n                                      auth_secret_id INTEGER REFERENCES access_key(id) ON DELETE SET NULL,\n                                      auth_header    VARCHAR(255) NULL,\n                                      searchable     INTEGER NOT NULL DEFAULT 0,\n                                      task_params    TEXT NULL\n);\n\nCREATE INDEX project__integration__auth_secret_id\n    ON project__integration(auth_secret_id);\n\nCREATE INDEX project__integration__project_id\n    ON project__integration(project_id);\n\nCREATE INDEX project__integration__template_id\n    ON project__integration(template_id);\n\nCREATE TABLE project__integration_alias (\n                                            id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                                            alias          VARCHAR(50) NOT NULL UNIQUE,\n                                            project_id     INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                            integration_id INTEGER REFERENCES project__integration(id) ON DELETE CASCADE\n);\n\nCREATE INDEX project__integration_alias__integration_id\n    ON project__integration_alias(integration_id);\n\nCREATE INDEX project__integration_alias__project_id\n    ON project__integration_alias(project_id);\n\nCREATE TABLE project__integration_extract_value (\n                                                    id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                                                    name           VARCHAR(255) NOT NULL,\n                                                    integration_id INTEGER NOT NULL REFERENCES project__integration(id) ON DELETE CASCADE,\n                                                    value_source   VARCHAR(255) NOT NULL,\n                                                    body_data_type VARCHAR(255) NULL,\n                                                    \"key\"          VARCHAR(255) NULL,\n                                                    variable       VARCHAR(255) NULL,\n                                                    variable_type  VARCHAR(255) NULL\n);\n\nCREATE INDEX project__integration_extract_value__integration_id\n    ON project__integration_extract_value(integration_id);\n\nCREATE TABLE project__integration_matcher (\n                                              id             INTEGER PRIMARY KEY AUTOINCREMENT,\n                                              name           VARCHAR(255) NOT NULL,\n                                              integration_id INTEGER NOT NULL REFERENCES project__integration(id) ON DELETE CASCADE,\n                                              match_type     VARCHAR(255) NULL,\n                                              method         VARCHAR(255) NULL,\n                                              body_data_type VARCHAR(255) NULL,\n                                              \"key\"          VARCHAR(510) NULL,\n                                              value          VARCHAR(510) NULL\n);\n\nCREATE INDEX project__integration_matcher__integration_id\n    ON project__integration_matcher(integration_id);\n\nCREATE TABLE project__schedule (\n                                   id               INTEGER PRIMARY KEY AUTOINCREMENT,\n                                   template_id      INTEGER NOT NULL REFERENCES project__template(id) ON DELETE CASCADE,\n                                   project_id       INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                   cron_format      VARCHAR(255) NOT NULL,\n                                   repository_id    INTEGER REFERENCES project__repository(id),\n                                   last_commit_hash VARCHAR(64) NULL,\n                                   name             VARCHAR(100) NOT NULL DEFAULT '',\n                                   active           INTEGER NOT NULL DEFAULT 1\n);\n\nCREATE INDEX project__schedule__project_id\n    ON project__schedule(project_id);\n\nCREATE INDEX project__schedule__repository_id\n    ON project__schedule(repository_id);\n\nCREATE INDEX project__schedule__template_id\n    ON project__schedule(template_id);\n\nCREATE TABLE project__template_vault (\n                                         id           INTEGER PRIMARY KEY AUTOINCREMENT,\n                                         project_id   INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                         template_id  INTEGER NOT NULL REFERENCES project__template(id) ON DELETE CASCADE,\n                                         vault_key_id INTEGER REFERENCES access_key(id) ON DELETE CASCADE,\n                                         name         VARCHAR(255) NULL,\n                                         type         VARCHAR(20) NOT NULL DEFAULT 'password',\n                                         script       TEXT NULL,\n                                         UNIQUE(template_id, vault_key_id, name)\n);\n\nCREATE INDEX project__template_vault__project_id\n    ON project__template_vault(project_id);\n\nCREATE INDEX project__template_vault__vault_key_id\n    ON project__template_vault(vault_key_id);\n\nCREATE TABLE project__terraform_inventory_alias (\n                                                    alias        VARCHAR(100) PRIMARY KEY,\n                                                    project_id   INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                                    inventory_id INTEGER NOT NULL REFERENCES project__inventory(id) ON DELETE CASCADE,\n                                                    auth_key_id  INTEGER NOT NULL REFERENCES access_key(id)\n);\n\nCREATE INDEX project__terraform_inventory_alias__auth_key_id\n    ON project__terraform_inventory_alias(auth_key_id);\n\nCREATE INDEX project__terraform_inventory_alias__inventory_id\n    ON project__terraform_inventory_alias(inventory_id);\n\nCREATE INDEX project__terraform_inventory_alias__project_id\n    ON project__terraform_inventory_alias(project_id);\n\nCREATE TABLE project__user (\n                               project_id INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                               user_id    INTEGER NOT NULL REFERENCES user(id) ON DELETE CASCADE,\n                               role       VARCHAR(50) NOT NULL DEFAULT 'manager',\n                               UNIQUE(project_id, user_id)\n);\n\nCREATE INDEX project__user__user_id\n    ON project__user(user_id);\n\nCREATE TABLE task (\n                      id              INTEGER PRIMARY KEY AUTOINCREMENT,\n                      template_id     INTEGER NOT NULL REFERENCES project__template(id) ON DELETE CASCADE,\n                      status          VARCHAR(255) NOT NULL,\n                      playbook        VARCHAR(255) NOT NULL,\n                      environment     TEXT NULL,\n                      created         DATETIME NULL,\n                      start           DATETIME NULL,\n                      end             DATETIME NULL,\n                      user_id         INTEGER REFERENCES user(id),\n                      project_id      INTEGER REFERENCES project(id),\n                      message         VARCHAR(250) NOT NULL DEFAULT '',\n                      version         VARCHAR(20) NULL,\n                      commit_hash     VARCHAR(64) NULL,\n                      commit_message  VARCHAR(100) NOT NULL DEFAULT '',\n                      build_task_id   INTEGER REFERENCES task(id) ON DELETE SET NULL,\n                      arguments       TEXT NULL,\n                      inventory_id    INTEGER REFERENCES project__inventory(id) ON DELETE SET NULL,\n                      integration_id  INTEGER REFERENCES project__integration(id) ON DELETE SET NULL,\n                      schedule_id     INTEGER REFERENCES project__schedule(id) ON DELETE SET NULL,\n                      git_branch      VARCHAR(255) NULL,\n                      params          TEXT NULL\n);\n\nCREATE INDEX task__integration_id\n    ON task(integration_id);\n\nCREATE INDEX task__inventory_id\n    ON task(inventory_id);\n\nCREATE INDEX task__project_id\n    ON task(project_id);\n\nCREATE INDEX task__schedule_id\n    ON task(schedule_id);\n\nCREATE INDEX task__template_id\n    ON task(template_id);\n\nCREATE TABLE project__terraform_inventory_state (\n                                                    id           INTEGER PRIMARY KEY AUTOINCREMENT,\n                                                    project_id   INTEGER NOT NULL REFERENCES project(id) ON DELETE CASCADE,\n                                                    inventory_id INTEGER NOT NULL REFERENCES project__inventory(id) ON DELETE CASCADE,\n                                                    state        TEXT     NOT NULL,\n                                                    created      DATETIME NOT NULL,\n                                                    task_id      INTEGER REFERENCES task(id) ON DELETE SET NULL\n);\n\nCREATE INDEX project__terraform_inventory_state__inventory_id\n    ON project__terraform_inventory_state(inventory_id);\n\nCREATE INDEX project__terraform_inventory_state__project_id\n    ON project__terraform_inventory_state(project_id);\n\nCREATE INDEX project__terraform_inventory_state__task_id\n    ON project__terraform_inventory_state(task_id);\n\nCREATE TABLE task__output (\n                              id      INTEGER PRIMARY KEY AUTOINCREMENT,\n                              task_id INTEGER NOT NULL REFERENCES task(id) ON DELETE CASCADE,\n                              time    DATETIME NOT NULL,\n                              output  TEXT NOT NULL\n);\n\nCREATE INDEX task__output__task__output_time_idx\n    ON task__output(time);\n\nCREATE INDEX task__output__task_id\n    ON task__output(task_id);\n\nCREATE TABLE task__stage (\n                             id              INTEGER PRIMARY KEY AUTOINCREMENT,\n                             task_id         INTEGER NOT NULL REFERENCES task(id) ON DELETE CASCADE,\n                             start           DATETIME NULL,\n                             start_output_id INTEGER REFERENCES task__output(id) ON DELETE SET NULL,\n                             end             DATETIME NULL,\n                             end_output_id   INTEGER REFERENCES task__output(id) ON DELETE SET NULL,\n                             type            VARCHAR(100) NULL\n);\n\nCREATE INDEX task__stage__end_output_id\n    ON task__stage(end_output_id);\n\nCREATE INDEX task__stage__start_output_id\n    ON task__stage(start_output_id);\n\nCREATE INDEX task__stage__task_id\n    ON task__stage(task_id);\n\nCREATE TABLE task__stage_result (\n                                    id       INTEGER PRIMARY KEY AUTOINCREMENT,\n                                    task_id  INTEGER NOT NULL REFERENCES task(id) ON DELETE CASCADE,\n                                    stage_id INTEGER NOT NULL REFERENCES task__stage(id) ON DELETE CASCADE,\n                                    json     TEXT NULL\n);\n\nCREATE INDEX task__stage_result__stage_id\n    ON task__stage_result(stage_id);\n\nCREATE INDEX task__stage_result__task_id\n    ON task__stage_result(task_id);\n\nCREATE TABLE user__token (\n                             id      VARCHAR(44)   NOT NULL PRIMARY KEY,\n                             created DATETIME      NOT NULL,\n                             expired INTEGER NOT NULL DEFAULT 0,\n                             user_id INTEGER NOT NULL REFERENCES user(id) ON DELETE CASCADE\n);\n\nCREATE INDEX user__token__user_id\n    ON user__token(user_id);\n\nCREATE TABLE user__totp (\n                            id            INTEGER PRIMARY KEY AUTOINCREMENT,\n                            user_id       INTEGER NOT NULL UNIQUE REFERENCES user(id) ON DELETE CASCADE,\n                            url           VARCHAR(250) NOT NULL,\n                            recovery_hash VARCHAR(250) NOT NULL,\n                            created       DATETIME NOT NULL\n);"
  },
  {
    "path": "db/sql/migrations/v2.15.2.err.sql",
    "content": "drop table user__email_otp;"
  },
  {
    "path": "db/sql/migrations/v2.15.2.sql",
    "content": "create table user__email_otp(\n    `id` integer primary key autoincrement,\n    `user_id` int NOT NULL,\n    `code` varchar(250) NOT NULL,\n    `created` datetime NOT NULL,\n    unique (`code`),\n    foreign key (`user_id`) references `user`(`id`) on delete cascade\n);"
  },
  {
    "path": "db/sql/migrations/v2.15.3.err.sql",
    "content": "drop table task__ansible_error;\ndrop table task__ansible_host;"
  },
  {
    "path": "db/sql/migrations/v2.15.3.sql",
    "content": "create table task__ansible_error(\n    `id` integer primary key autoincrement,\n    `task_id` int NOT NULL,\n    `project_id` int NOT NULL,\n    `task` varchar(250) NOT NULL,\n    `error` varchar(1000) NOT NULL,\n    foreign key (`project_id`) references `project`(`id`) on delete cascade,\n    foreign key (`task_id`) references `task`(`id`) on delete cascade\n);\ncreate table task__ansible_host(\n   `id` integer primary key autoincrement,\n   `task_id` int NOT NULL,\n   `project_id` int NOT NULL,\n   `host` varchar(250) NOT NULL,\n   `failed` int NOT NULL,\n   `ignored` int NOT NULL,\n   `changed` int NOT NULL,\n   `ok` int NOT NULL,\n   `rescued` int NOT NULL,\n   `skipped` int NOT NULL,\n   `unreachable` int NOT NULL,\n   foreign key (`project_id`) references `project`(`id`) on delete cascade,\n   foreign key (`task_id`) references `task`(`id`) on delete cascade\n);"
  },
  {
    "path": "db/sql/migrations/v2.15.4.err.sql",
    "content": "alter table `task__ansible_error` drop `host`;"
  },
  {
    "path": "db/sql/migrations/v2.15.4.sql",
    "content": "alter table `task__ansible_error` add `host` varchar(250);"
  },
  {
    "path": "db/sql/migrations/v2.16.0.err.sql",
    "content": "alter table `project` drop `default_secret_storage_id`;\nalter table `project__environment` drop `secret_storage_id`;\nalter table `project__environment` drop `secret_storage_key_prefix`;\nalter table `access_key` drop `storage_id`;\nalter table `access_key` drop `source_storage_id`;\nalter table `access_key` drop `source_storage_key`;\n\ndrop table project__secret_storage;\n\nalter table `access_key` drop `owner`;\nalter table `access_key` drop `plain`;"
  },
  {
    "path": "db/sql/migrations/v2.16.0.sql",
    "content": "alter table `access_key` add `owner` varchar(20) default '' not null;\nalter table `access_key` add `plain` text;\nupdate access_key set `owner` = 'variable' where environment_id is not null and name like 'var.%';\nupdate access_key set `owner` = 'environment' where environment_id is not null and name like 'env.%';\n\ncreate table project__secret_storage (\n  id integer primary key autoincrement,\n\n  project_id    int             not null,\n  name          varchar(100)    not null,\n  type          varchar(20)     not null,\n  params        text,\n  readonly      boolean         not null default false,\n\n  foreign key (`project_id`) references project(`id`) on delete cascade\n);\n\nalter table `access_key` add `storage_id` int null references `project__secret_storage`(`id`) on delete cascade;\nalter table `access_key` add `source_storage_id` int null references `project__secret_storage`(`id`);\nalter table `access_key` add `source_storage_key` varchar(1000);\n\nalter table `project__environment` add `secret_storage_id` int null references `project__secret_storage`(`id`);\nalter table `project__environment` add `secret_storage_key_prefix` varchar(1000);\n\nalter table `project` add `default_secret_storage_id` int null references `project__secret_storage`(`id`);"
  },
  {
    "path": "db/sql/migrations/v2.16.1.err.sql",
    "content": "alter table project__template drop column allow_parallel_tasks;"
  },
  {
    "path": "db/sql/migrations/v2.16.1.sql",
    "content": "alter table project__template add allow_parallel_tasks boolean not null default false;"
  },
  {
    "path": "db/sql/migrations/v2.16.2.err.sql",
    "content": "alter table project__schedule drop task_params_id;\nalter table project__integration drop task_params_id;\nalter table project__integration add task_params TEXT;\n\ndrop table project__task_params;"
  },
  {
    "path": "db/sql/migrations/v2.16.2.sql",
    "content": "create table project__task_params\n(\n    id           integer primary key autoincrement,\n\n    environment  TEXT,\n    project_id   int not null,\n    arguments    TEXT,\n    inventory_id int,\n    git_branch   varchar(255),\n    params       TEXT,\n    version      varchar(20),\n    message      varchar(250),\n\n    foreign key (`project_id`) references project (`id`) on delete cascade,\n    foreign key (`inventory_id`) references project__inventory (`id`) on delete cascade\n);\n\nalter table project__integration drop task_params;\nalter table project__schedule add task_params_id int references `project__task_params`(`id`);\nalter table project__integration add task_params_id int references `project__task_params`(`id`);\n\n"
  },
  {
    "path": "db/sql/migrations/v2.16.3.err.sql",
    "content": "drop table project__invite;"
  },
  {
    "path": "db/sql/migrations/v2.16.3.sql",
    "content": "create table project__invite\n(\n    `id`              integer primary key autoincrement,\n    `project_id`      int          not null,\n    `user_id`         int null,\n    `email`           varchar(255) null,\n    `role`            varchar(50)  not null,\n    `status`          varchar(50)  not null default 'pending',\n    `token`           varchar(255) not null,\n    `inviter_user_id` int          not null,\n    `created`         datetime     not null,\n    `expires_at`      datetime null,\n    `accepted_at`     datetime null,\n\n    foreign key (`project_id`) references project (`id`) on delete cascade,\n    foreign key (`user_id`) references `user` (`id`) on delete cascade,\n    foreign key (`inviter_user_id`) references `user` (`id`) on delete cascade,\n\n    unique (`token`),\n    unique (`project_id`, `user_id`),\n    unique (`project_id`, `email`)\n);"
  },
  {
    "path": "db/sql/migrations/v2.16.50.err.sql",
    "content": "{{if .Sqlite}}\n{{else}}\nalter table `project__terraform_inventory_state` change `state` `state` text not null;\n{{end}}"
  },
  {
    "path": "db/sql/migrations/v2.16.50.sql",
    "content": "{{if .Sqlite}}\n{{else}}\nalter table `project__terraform_inventory_state` change `state` `state` longtext not null;\n{{end}}"
  },
  {
    "path": "db/sql/migrations/v2.16.8.err.sql",
    "content": "alter table `task__stage` add `start_output_id` bigint null references `task__output`(`id`);\nalter table `task__stage` add `end_output_id` bigint null references `task__output`(`id`);\n\n{{if .Sqlite}}\ncreate index if not exists task__stage__start_output_id on `task__stage`(`start_output_id`);\ncreate index if not exists task__stage__end_output_id on `task__stage`(`end_output_id`);\n{{else if .Mysql}}\nalter table `task__output` drop foreign key if exists `task__output_ibfk_2`;\n{{end}}\n\nalter table `task__output` drop column `stage_id`;\n"
  },
  {
    "path": "db/sql/migrations/v2.16.8.sql",
    "content": "alter table `task__output` add `stage_id` int null references `task__stage`(`id`);\n\n{{if .Sqlite}}\ndrop index if exists task__stage__start_output_id;\ndrop index if exists task__stage__end_output_id;\n{{else if .Mysql}}\nalter table `task__stage` drop foreign key if exists `task__stage_ibfk_2`;\nalter table `task__stage` drop foreign key if exists `task__stage_ibfk_3`;\n{{end}}\n\nalter table `task__stage` drop column `start_output_id`;\nalter table `task__stage` drop column `end_output_id`;"
  },
  {
    "path": "db/sql/migrations/v2.17.0.err.sql",
    "content": "alter table project__view drop column `type`;\nalter table project__view drop column `hidden`;\nalter table project__view drop column `filter`;\nalter table project__view drop column `sort_column`;\nalter table project__view drop column `sort_reverse`;"
  },
  {
    "path": "db/sql/migrations/v2.17.0.sql",
    "content": "-- Add hidden and type fields to project__view table\nalter table project__view add column `hidden` boolean not null default false;\nalter table project__view add column `type` varchar(20) not null default '';\nalter table project__view add column `filter` varchar(1000);\nalter table project__view add column `sort_column` varchar(100);\nalter table project__view add column `sort_reverse` boolean not null default false;\n\n-- Create All view with position -1 for each existing project\ninsert into project__view (project_id, title, position, hidden, type)\nselect\n    p.id as project_id,\n    'All' as title,\n    -1 as position,\n    false as hidden,\n    'all' as type\nfrom project p\nwhere not exists (\n    select 1 from project__view pv\n    where pv.project_id = p.id and pv.type = 'all'\n    );"
  },
  {
    "path": "db/sql/migrations/v2.17.1.err.sql",
    "content": "drop table project__template_role;\ndrop table role;"
  },
  {
    "path": "db/sql/migrations/v2.17.1.sql",
    "content": "create table role\n(\n    `slug`        varchar(100) primary key not null,\n    `name`        varchar(100)             not null,\n    `permissions` bigint                   not null default 0,\n    `project_id`  int,\n    foreign key (`project_id`) references project (`id`) on delete cascade\n);\n\ncreate table project__template_role\n(\n    `id`          integer primary key autoincrement,\n    `template_id` int          not null,\n    `role_slug`   varchar(100) not null,\n    `project_id`  int          not null,\n    `permissions` bigint       not null default 0,\n\n    foreign key (`template_id`) references project__template (`id`) on delete cascade,\n    foreign key (`role_slug`) references role (`slug`) on delete cascade,\n    foreign key (`project_id`) references project (`id`) on delete cascade,\n\n    unique (`template_id`, `role_slug`)\n);"
  },
  {
    "path": "db/sql/migrations/v2.17.15.err.sql",
    "content": "{{if .Postgresql}}\ndrop index if exists task__output_task_id_idx;\ndrop index if exists task_template_id_idx;\ndrop index if exists task_project_id_idx;\n{{end}}\n\nalter table access_key drop column `source_storage_type`;"
  },
  {
    "path": "db/sql/migrations/v2.17.15.sql",
    "content": "alter table `access_key` add column `source_storage_type` varchar(10);\nupdate `access_key` set source_storage_type = 'vault' where source_storage_id is not null;\nupdate `access_key` set source_storage_type = 'env' where source_storage_id is null and source_storage_key is not null;\n\n{{if .Postgresql}}\ncreate index if not exists task__output_task_id_idx on task__output (task_id);\ncreate index if not exists task_template_id_idx on task (template_id);\ncreate index if not exists task_project_id_idx on task (project_id);\n{{end}}\n"
  },
  {
    "path": "db/sql/migrations/v2.17.2.err.sql",
    "content": "alter table project__schedule drop column run_at;\nalter table project__schedule drop column `type`;\nalter table project__schedule drop column `delete_after_run`;"
  },
  {
    "path": "db/sql/migrations/v2.17.2.sql",
    "content": "alter table `project__schedule` add column `run_at` datetime null;\nalter table `project__schedule` add column `type` varchar(20) not null default '';\nalter table `project__schedule` add column `delete_after_run` boolean not null default false;"
  },
  {
    "path": "db/sql/migrations/v2.2.1.sql",
    "content": "alter table task__output rename to task__output_backup;\n\ncreate table task__output\n(\n    id integer primary key autoincrement,\n    task_id int not null,\n    task varchar(255) not null,\n    time datetime not null,\n    output longtext not null,\n\n    foreign key (`task_id`) references task(`id`) on delete cascade\n);\n\ninsert into task__output(task_id, task, time, output) select * from task__output_backup;\n\ndrop table task__output_backup;\n"
  },
  {
    "path": "db/sql/migrations/v2.3.0.sql",
    "content": "ALTER TABLE `user` ADD `alert` BOOLEAN NOT NULL DEFAULT FALSE;\nALTER TABLE `project` ADD `alert` BOOLEAN NOT NULL DEFAULT FALSE;\n\nALTER TABLE `user` ADD `external` BOOLEAN NOT NULL DEFAULT FALSE;\n"
  },
  {
    "path": "db/sql/migrations/v2.3.1.sql",
    "content": "alter table session rename to session_backup;\n\ncreate table session\n(\n    id integer primary key autoincrement,\n    user_id int not null,\n    created datetime not null,\n    last_active datetime not null,\n    ip varchar(39) default '' not null,\n    user_agent text not null,\n    expired boolean default false not null\n);\n\ninsert into session select * from session_backup;\n\ndrop table session_backup;\n\ncreate index expired\n    on session (expired);\n\ncreate index user_id\n    on session (user_id);\n"
  },
  {
    "path": "db/sql/migrations/v2.3.2.sql",
    "content": "-- ALTER TABLE `user__token` CHANGE COLUMN `id` `id` VARCHAR(44) NOT NULL;\n\nalter table user__token rename to user__token_backup;\n\ncreate table user__token\n(\n    id varchar(44) not null primary key,\n    created datetime not null,\n    expired boolean default false not null,\n    user_id int not null,\n\n    foreign key (`user_id`) references `user`(`id`) on delete cascade\n);\n\ninsert into user__token select * from user__token_backup;\n\ndrop table user__token_backup;\n"
  },
  {
    "path": "db/sql/migrations/v2.4.0.sql",
    "content": "ALTER TABLE project ADD alert_chat varchar(10) DEFAULT '';\n"
  },
  {
    "path": "db/sql/migrations/v2.5.0.sql",
    "content": "ALTER TABLE `user` ADD `admin` BOOLEAN NOT NULL DEFAULT TRUE;\n"
  },
  {
    "path": "db/sql/migrations/v2.5.2.sql",
    "content": "alter table `task` add `arguments` text null;\n"
  },
  {
    "path": "db/sql/migrations/v2.7.1.sql",
    "content": "alter table `task` add `project_id` int null references project(`id`);\n"
  },
  {
    "path": "db/sql/migrations/v2.7.10.sql",
    "content": "alter table `access_key` drop column `key`;"
  },
  {
    "path": "db/sql/migrations/v2.7.12.sql",
    "content": "alter table `project__inventory` add `become_key_id` int references access_key(`id`);\nalter table `project__template` add `vault_key_id` int references access_key(`id`);\n"
  },
  {
    "path": "db/sql/migrations/v2.7.13.sql",
    "content": "drop table project__template_schedule;\n\ncreate table `project__schedule`\n(\n    `id` integer primary key autoincrement,\n    `template_id` int references project__template (`id`) on delete cascade,\n    `project_id` int not null references project (`id`) on delete cascade,\n    `cron_format` varchar(255) not null\n);\n"
  },
  {
    "path": "db/sql/migrations/v2.7.4.sql",
    "content": "alter table `event` add `user_id` int null references `user`(`id`);\n"
  },
  {
    "path": "db/sql/migrations/v2.7.6.sql",
    "content": "update `task` set project_id = (select project_id from project__template where project__template.id = `task`.template_id) where project_id is null;\n"
  },
  {
    "path": "db/sql/migrations/v2.7.8.sql",
    "content": "ALTER TABLE project__inventory DROP FOREIGN KEY IF EXISTS project__inventory_ibfk_2;\n\nalter table `project__inventory` drop column `key_id`;\n\nALTER TABLE project__template DROP FOREIGN KEY IF EXISTS project__template_ibfk_2;\n\nalter table `project__template` drop column `ssh_key_id`;"
  },
  {
    "path": "db/sql/migrations/v2.7.9.sql",
    "content": "alter table `project__template` add `description` longtext;\nalter table `project__template` add `removed` boolean not null default false;"
  },
  {
    "path": "db/sql/migrations/v2.8.0.sql",
    "content": "alter table project__template add `type` varchar(10) not null default '';\nalter table `task` add `message` varchar(250) not null default '';\nalter table project__template add start_version varchar(20);\nalter table project__template add build_template_id int references project__template(id);\nalter table `task` add `version` varchar(20);\nalter table `task` add commit_hash varchar(40);\nalter table `task` add commit_message varchar(100) not null default '';\n"
  },
  {
    "path": "db/sql/migrations/v2.8.1.sql",
    "content": "alter table `task` add build_task_id int references `task`(id);"
  },
  {
    "path": "db/sql/migrations/v2.8.20.sql",
    "content": "alter table `event` rename to `event_backup_5784568`;\n\ncreate table `event`\n(\n    `id`          integer primary key autoincrement,\n    `project_id`  int,\n    `object_id`   int,\n    `object_type` varchar(20) DEFAULT '',\n    `description` text,\n    `created`     datetime NOT NULL,\n    `user_id`     int,\n    foreign key (`project_id`) references `project` (`id`) on delete cascade,\n    foreign key (`user_id`) references `user` (`id`) on delete set null\n);\n"
  },
  {
    "path": "db/sql/migrations/v2.8.25.sql",
    "content": "alter table `project__template` add survey_vars longtext;\nalter table `project__template` add autorun boolean default false;\nalter table `project__schedule` add repository_id int null references project__repository(`id`) on delete set null;\nalter table `project__schedule` add last_commit_hash varchar(40);\n"
  },
  {
    "path": "db/sql/migrations/v2.8.26.sql",
    "content": "alter table `project__repository` add git_branch varchar(255) not null default '';\n"
  },
  {
    "path": "db/sql/migrations/v2.8.36.sql",
    "content": "alter table `project__template` add allow_override_args_in_task bool not null default false;\nalter table `task` add arguments text;\nalter table `project__template` drop column `override_args`;\n"
  },
  {
    "path": "db/sql/migrations/v2.8.38.sql",
    "content": "delete\nfrom project__schedule\nwhere template_id is null;\n\ndelete\nfrom project__schedule\nwhere (select count(*) from project__template where project__template.id = project__schedule.template_id) = 0;\n\ndelete\nfrom project__schedule\nwhere (select count(*) from project where project.id = project__schedule.project_id) = 0;\n\nupdate project__schedule\nset repository_id = null\nwhere repository_id is not null\n  and (select count(*) from project__repository where project__repository.id = project__schedule.repository_id) = 0;\n\nalter table `project__schedule`\n    rename to `project__schedule_backup_8436583`;\n\ncreate table project__schedule\n(\n    id               integer primary key autoincrement,\n    template_id      int          not null,\n    project_id       int          not null,\n    cron_format      varchar(255) not null,\n    repository_id    int          null,\n    last_commit_hash varchar(40)  null,\n\n    foreign key (`template_id`) references project__template(`id`) on delete cascade,\n    foreign key (`project_id`) references project(`id`) on delete cascade,\n    foreign key (`repository_id`) references project__repository(`id`)\n);\n\ninsert into project__schedule\nselect *\nfrom project__schedule_backup_8436583;\n\ndrop table project__schedule_backup_8436583;\n"
  },
  {
    "path": "db/sql/migrations/v2.8.39.sql",
    "content": "alter table `task`\n    add constraint `task_build_task_id_fk_y38rt`\n        foreign key (`build_task_id`) references `task` (`id`)\n            on delete set null;\n\n\ncreate table `project__template_backup_385025846` (\n    id int primary key,\n    removed boolean default false\n);\n\ninsert into `project__template_backup_385025846` select `id`, `removed` from `project__template`;\n\nupdate `project__template`\nset build_template_id = null\nwhere (select t.`removed` from `project__template_backup_385025846` t where t.`id` = `build_template_id`) = true;\n\ndrop table `project__template_backup_385025846`;\n\ndelete from `project__template` where `removed` = true;\n\nalter table `project__template` drop column `removed`;\n"
  },
  {
    "path": "db/sql/migrations/v2.8.40.sql",
    "content": "alter table `project` change `alert_chat` `alert_chat` varchar(30);\n\nalter table `project__template` change `alias` `name` varchar(100) not null;\n\nalter table `project__inventory` drop column `removed`;\n\nalter table `project__environment` drop column `removed`;\n\nalter table `access_key` drop column `removed`;\n\nalter table `project__repository` drop column `removed`;\n"
  },
  {
    "path": "db/sql/migrations/v2.8.42.sql",
    "content": "-- see migration_2_8_42.go\n"
  },
  {
    "path": "db/sql/migrations/v2.8.51.sql",
    "content": "alter table `project` add column `max_parallel_tasks` int not null default 0;\nalter table `project__template` add column `suppress_success_alerts` bool not null default false;\n"
  },
  {
    "path": "db/sql/migrations/v2.8.57.sql",
    "content": "alter table `project__environment` add column `env` longtext;\n\nalter table `task` add column `hosts_limit` varchar(255) not null default '';\n\n\n"
  },
  {
    "path": "db/sql/migrations/v2.8.58.sql",
    "content": "ALTER TABLE task ADD diff boolean NOT NULL DEFAULT false;"
  },
  {
    "path": "db/sql/migrations/v2.8.7.sql",
    "content": "alter table `task` drop column `arguments`;"
  },
  {
    "path": "db/sql/migrations/v2.8.8.sql",
    "content": "create table `project__view` (\n    `id` integer primary key autoincrement,\n    `title` varchar(100) not null,\n    `project_id` int not null,\n    `position` int not null,\n    foreign key (`project_id`) references project(`id`) on delete cascade\n);\n\nalter table `project__template` add view_id int references `project__view`(id) on delete set null;"
  },
  {
    "path": "db/sql/migrations/v2.8.91.sql",
    "content": "ALTER TABLE project__user ADD `role` varchar(50) NOT NULL DEFAULT 'manager';\n\nUPDATE project__user SET `role` = 'owner' WHERE `admin`;\n\nALTER TABLE project__user DROP COLUMN `admin`;"
  },
  {
    "path": "db/sql/migrations/v2.9.100.sql",
    "content": "alter table `project__inventory` add `repository_id` int null references project__repository(`id`) on delete set null;"
  },
  {
    "path": "db/sql/migrations/v2.9.46.sql",
    "content": "ALTER TABLE project__template ADD `app` varchar(50) NOT NULL DEFAULT '';\n"
  },
  {
    "path": "db/sql/migrations/v2.9.6.sql",
    "content": "create table runner\n(\n    id                  integer primary key autoincrement,\n    project_id          int,\n    token               varchar(255) not null,\n    webhook             varchar(1000) not null default '',\n    max_parallel_tasks  int not null default 0,\n\n    foreign key (`project_id`) references project(`id`) on delete cascade\n);"
  },
  {
    "path": "db/sql/migrations/v2.9.60.sql",
    "content": "create table project__integration (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `project_id` int not null,\n  `template_id` int not null,\n  `auth_method` varchar(15) not null default 'none',\n  `auth_secret_id` int,\n  `auth_header` varchar(255),\n\n  foreign key (`project_id`) references project(`id`) on delete cascade,\n  foreign key (`template_id`) references project__template(`id`) on delete cascade,\n  foreign key (`auth_secret_id`) references access_key(`id`) on delete set null\n);\n\ncreate table project__integration_extractor (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `integration_id` int not null,\n\n  foreign key (`integration_id`) references project__integration(`id`) on delete cascade\n);\n\ncreate table project__integration_extract_value (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `extractor_id` int not null,\n  `value_source` varchar(255) not null,\n  `body_data_type` varchar(255) null,\n  `key` varchar(255) null,\n  `variable` varchar(255) null,\n\n  foreign key (`extractor_id`) references project__integration_extractor(`id`) on delete cascade\n);\n\ncreate table project__integration_matcher (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `extractor_id` int not null,\n  `match_type` varchar(255) null,\n  `method` varchar(255) null,\n  `body_data_type` varchar(255) null,\n  `key` varchar(510) null,\n  `value` varchar(510) null,\n\n  foreign key (`extractor_id`) references project__integration_extractor(`id`) on delete cascade\n);\n"
  },
  {
    "path": "db/sql/migrations/v2.9.61.sql",
    "content": "drop table project__integration_matcher;\ndrop table project__integration_extract_value;\ndrop table project__integration_extractor;\ndrop table project__integration;\n\ncreate table project__integration (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `project_id` int not null,\n  `template_id` int not null,\n  `auth_method` varchar(15) not null default 'none',\n  `auth_secret_id` int,\n  `auth_header` varchar(255),\n  `searchable` bool not null default false,\n\n  foreign key (`project_id`) references project(`id`) on delete cascade,\n  foreign key (`template_id`) references project__template(`id`) on delete cascade,\n  foreign key (`auth_secret_id`) references access_key(`id`) on delete set null\n);\n\ncreate table project__integration_extract_value (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `integration_id` int not null,\n  `value_source` varchar(255) not null,\n  `body_data_type` varchar(255) null,\n  `key` varchar(255) null,\n  `variable` varchar(255) null,\n\n  foreign key (`integration_id`) references project__integration(`id`) on delete cascade\n);\n\ncreate table project__integration_matcher (\n  `id` integer primary key autoincrement,\n  `name` varchar(255) not null,\n  `integration_id` int not null,\n  `match_type` varchar(255) null,\n  `method` varchar(255) null,\n  `body_data_type` varchar(255) null,\n  `key` varchar(510) null,\n  `value` varchar(510) null,\n\n  foreign key (`integration_id`) references project__integration(`id`) on delete cascade\n);\n\ncreate table project__integration_alias (\n  `id` integer primary key autoincrement,\n  `alias` varchar(50) not null,\n  `project_id` int not null,\n  `integration_id` int,\n\n  foreign key (`project_id`) references project(`id`) on delete cascade,\n  foreign key (`integration_id`) references project__integration(`id`) on delete cascade,\n\n  unique (`alias`)\n);\n"
  },
  {
    "path": "db/sql/migrations/v2.9.62.sql",
    "content": "alter table project add `type` varchar(20) default '';\n\nalter table task add `inventory_id` int null references project__inventory(`id`) on delete set null;\n\nalter table project__inventory add `holder_id` int null references project__template(`id`) on delete set null;\n\ncreate table `option` (\n    `key` varchar(255) primary key not null,\n    `value` varchar(255) not null\n);\n"
  },
  {
    "path": "db/sql/migrations/v2.9.70.sql",
    "content": "alter table `project__template` change `inventory_id` `inventory_id` int;\nalter table `option` change `value` `value` varchar(1000);\n"
  },
  {
    "path": "db/sql/migrations/v2.9.97.sql",
    "content": "alter table `task` add `integration_id` int null references project__integration(`id`) on delete set null;"
  },
  {
    "path": "db/sql/option.go",
    "content": "package sql\n\nimport (\n\t\"errors\"\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) SetOption(key string, value string) error {\n\t_, err := d.getOption(key)\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\t_, err = d.insert(\n\t\t\t\"\", // don't provide because it is not auto-generated\n\t\t\t\"insert into `option` (`key`, `value`) values (?, ?)\",\n\t\t\tkey, value)\n\t} else if err == nil {\n\t\t_, err = d.exec(\"update `option` set `value`=? where `key`=?\", value, key)\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDb) GetOptions(params db.RetrieveQueryParams) (res map[string]string, err error) {\n\tvar options []db.Option\n\tres = make(map[string]string)\n\n\tif params.Filter != \"\" {\n\t\terr = db.ValidateOptionKey(params.Filter)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = d.getObjects(0, db.OptionProps, params, func(q squirrel.SelectBuilder) squirrel.SelectBuilder {\n\t\tif params.Filter == \"\" {\n\t\t\treturn q\n\t\t}\n\t\treturn q.Where(\"`key` = ? OR `key` LIKE ?\", params.Filter, params.Filter+\".%\")\n\t}, &options)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, opt := range options {\n\t\tres[opt.Key] = opt.Value\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) getOption(key string) (value string, err error) {\n\tq := squirrel.Select(\"*\").\n\t\tFrom(\"`\"+db.OptionProps.TableName+\"`\").\n\t\tWhere(\"`key`=?\", key)\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar opt db.Option\n\n\terr = d.selectOne(&opt, query, args...)\n\n\tvalue = opt.Value\n\n\treturn\n}\n\nfunc (d *SqlDb) GetOption(key string) (value string, err error) {\n\n\tvalue, err = d.getOption(key)\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteOption(key string) (err error) {\n\terr = db.ValidateOptionKey(key)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.deleteObject(0, db.OptionProps, key)\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteOptions(filter string) (err error) {\n\terr = db.ValidateOptionKey(filter)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"DELETE FROM `option` WHERE `key` = ? OR `key` LIKE ?\", filter, filter+\".%\")\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/project.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n)\n\nfunc (d *SqlDb) CreateProject(project db.Project) (newProject db.Project, err error) {\n\tproject.Created = tz.Now()\n\n\tinsertId, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project(name, created, type, alert, alert_chat, max_parallel_tasks) values (?, ?, ?, ?, ?, ?)\",\n\t\tproject.Name, project.Created, project.Type, project.Alert, project.AlertChat, project.MaxParallelTasks)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewProject = project\n\tnewProject.ID = insertId\n\treturn\n}\n\nfunc (d *SqlDb) GetAllProjects() (projects []db.Project, err error) {\n\tquery, args, err := squirrel.Select(\"p.*\").\n\t\tFrom(\"project as p\").\n\t\tOrderBy(\"p.name\").\n\t\tLimit(200).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&projects, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetProjects(userID int) (projects []db.Project, err error) {\n\tquery, args, err := squirrel.Select(\"p.*\").\n\t\tFrom(\"project as p\").\n\t\tJoin(\"project__user as pu on pu.project_id=p.id\").\n\t\tWhere(\"pu.user_id=?\", userID).\n\t\tOrderBy(\"p.name\").\n\t\tLimit(200).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&projects, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetProject(projectID int) (project db.Project, err error) {\n\tquery, args, err := squirrel.Select(\"p.*\").\n\t\tFrom(\"project as p\").\n\t\tWhere(\"p.id=?\", projectID).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&project, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteProject(projectID int) error {\n\n\t//tpls, err := d.GetTemplates(projectID, db.TemplateFilter{}, db.RetrieveQueryParams{})\n\t//\n\t//if err != nil {\n\t//\treturn err\n\t//}\n\t// TODO: sort projects\n\n\ttx, err := d.Sql().Begin()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tstatements := []string{\n\t\t\"update project__template set build_template_id = null where project_id=?\",\n\t\t\"delete from project__template where project_id=?\",\n\t\t\"delete from project__user where project_id=?\",\n\t\t\"delete from project__repository where project_id=?\",\n\t\t\"delete from project__inventory where project_id=?\",\n\t\t\"delete from access_key where project_id=?\",\n\t\t\"delete from project where id=?\",\n\t}\n\n\tfor _, statement := range statements {\n\t\t_, err = tx.Exec(d.PrepareQuery(statement), projectID)\n\n\t\tif err != nil {\n\t\t\t_ = tx.Rollback()\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn tx.Commit()\n}\n\nfunc (d *SqlDb) UpdateProject(project db.Project) error {\n\t_, err := d.exec(\n\t\t\"update project set name=?, alert=?, alert_chat=?, max_parallel_tasks=? where id=?\",\n\t\tproject.Name,\n\t\tproject.Alert,\n\t\tproject.AlertChat,\n\t\tproject.MaxParallelTasks,\n\t\tproject.ID)\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/project_invite.go",
    "content": "package sql\n\nimport (\n\t\"database/sql\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) GetProjectInvites(projectID int, params db.RetrieveQueryParams) (invites []db.ProjectInviteWithUser, err error) {\n\tpp, err := params.Validate(db.ProjectInviteProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinvites = make([]db.ProjectInviteWithUser, 0)\n\n\tq := squirrel.Select(\"pi.*\").\n\t\tColumn(\"ib.name as inviter_user_id_name\").\n\t\tColumn(\"ib.username as inviter_username\").\n\t\tColumn(\"ib.email as inviter_user_id_email\").\n\t\tColumn(\"u.name as user_name\").\n\t\tColumn(\"u.username as user_username\").\n\t\tColumn(\"u.email as user_email\").\n\t\tFrom(\"project__invite as pi\").\n\t\tLeftJoin(\"`user` as ib on pi.inviter_user_id=ib.id\").\n\t\tLeftJoin(\"`user` as u on pi.user_id=u.id\").\n\t\tWhere(\"pi.project_id=?\", projectID)\n\n\tsortDirection := \"ASC\"\n\tif pp.SortInverted {\n\t\tsortDirection = \"DESC\"\n\t}\n\n\tswitch pp.SortBy {\n\tcase \"created\", \"status\", \"role\":\n\t\tq = q.OrderBy(\"pi.\" + pp.SortBy + \" \" + sortDirection)\n\tdefault:\n\t\tq = q.OrderBy(\"pi.created \" + sortDirection)\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\trows, err := d.Sql().Query(d.PrepareQuery(query), args...)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer rows.Close()\n\n\tfor rows.Next() {\n\t\tvar invite db.ProjectInviteWithUser\n\t\tvar invitedByName, invitedByUsername, invitedByEmail sql.NullString\n\t\tvar userName, userUsername, userEmail sql.NullString\n\n\t\terr = rows.Scan(\n\t\t\t&invite.ID,\n\t\t\t&invite.ProjectID,\n\t\t\t&invite.UserID,\n\t\t\t&invite.Email,\n\t\t\t&invite.Role,\n\t\t\t&invite.Status,\n\t\t\t&invite.Token,\n\t\t\t&invite.InviterUserID,\n\t\t\t&invite.Created,\n\t\t\t&invite.ExpiresAt,\n\t\t\t&invite.AcceptedAt,\n\t\t\t&invitedByName,\n\t\t\t&invitedByUsername,\n\t\t\t&invitedByEmail,\n\t\t\t&userName,\n\t\t\t&userUsername,\n\t\t\t&userEmail,\n\t\t)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\t// Set invited by user info\n\t\tinvite.InvitedByUser = &db.User{\n\t\t\tID:       invite.InviterUserID,\n\t\t\tName:     invitedByName.String,\n\t\t\tUsername: invitedByUsername.String,\n\t\t\tEmail:    invitedByEmail.String,\n\t\t}\n\n\t\t// Set user info if user exists\n\t\tif invite.UserID != nil {\n\t\t\tinvite.User = &db.User{\n\t\t\t\tID:       *invite.UserID,\n\t\t\t\tName:     userName.String,\n\t\t\t\tUsername: userUsername.String,\n\t\t\t\tEmail:    userEmail.String,\n\t\t\t}\n\t\t}\n\n\t\tinvites = append(invites, invite)\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateProjectInvite(invite db.ProjectInvite) (newInvite db.ProjectInvite, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__invite (project_id, user_id, email, role, status, token, inviter_user_id, created, expires_at) values (?, ?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\tinvite.ProjectID,\n\t\tinvite.UserID,\n\t\tinvite.Email,\n\t\tinvite.Role,\n\t\tinvite.Status,\n\t\tinvite.Token,\n\t\tinvite.InviterUserID,\n\t\tinvite.Created,\n\t\tinvite.ExpiresAt)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewInvite = invite\n\tnewInvite.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) GetProjectInvite(projectID int, inviteID int) (invite db.ProjectInvite, err error) {\n\terr = d.selectOne(&invite,\n\t\t\"select * from project__invite where project_id=? and id=?\",\n\t\tprojectID,\n\t\tinviteID)\n\treturn\n}\n\nfunc (d *SqlDb) GetProjectInviteByToken(token string) (invite db.ProjectInvite, err error) {\n\terr = d.selectOne(&invite,\n\t\t\"select * from project__invite where token=?\",\n\t\ttoken)\n\treturn\n}\n\nfunc (d *SqlDb) UpdateProjectInvite(invite db.ProjectInvite) error {\n\t_, err := d.exec(\n\t\t\"update project__invite set status=?, accepted_at=? where id=?\",\n\t\tinvite.Status,\n\t\tinvite.AcceptedAt,\n\t\tinvite.ID)\n\treturn err\n}\n\nfunc (d *SqlDb) DeleteProjectInvite(projectID int, inviteID int) error {\n\t_, err := d.exec(\n\t\t\"delete from project__invite where project_id=? and id=?\",\n\t\tprojectID,\n\t\tinviteID)\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/repository.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) GetRepository(projectID int, repositoryID int) (db.Repository, error) {\n\tvar repository db.Repository\n\terr := d.getObject(projectID, db.RepositoryProps, repositoryID, &repository)\n\n\tif err != nil {\n\t\treturn repository, err\n\t}\n\n\trepository.SSHKey, err = d.GetAccessKey(projectID, repository.SSHKeyID)\n\n\treturn repository, err\n}\n\nfunc (d *SqlDb) GetRepositoryRefs(projectID int, repositoryID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.RepositoryProps, repositoryID)\n}\n\nfunc (d *SqlDb) GetRepositories(projectID int, params db.RetrieveQueryParams) (repositories []db.Repository, err error) {\n\tq := squirrel.Select(\"*\").\n\t\tFrom(\"project__repository pr\")\n\n\torder := \"ASC\"\n\tif params.SortInverted {\n\t\torder = \"DESC\"\n\t}\n\n\tswitch params.SortBy {\n\tcase \"name\", \"git_url\":\n\t\tq = q.Where(\"pr.project_id=?\", projectID).\n\t\t\tOrderBy(\"pr.\" + params.SortBy + \" \" + order)\n\tcase \"ssh_key\":\n\t\tq = q.LeftJoin(\"access_key ak ON (pr.ssh_key_id = ak.id)\").\n\t\t\tWhere(\"pr.project_id=?\", projectID).\n\t\t\tOrderBy(\"ak.name \" + order)\n\tdefault:\n\t\tq = q.Where(\"pr.project_id=?\", projectID).\n\t\t\tOrderBy(\"pr.name \" + order)\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&repositories, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateRepository(repository db.Repository) error {\n\terr := repository.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(\n\t\t\"update project__repository set name=?, git_url=?, git_branch=?, ssh_key_id=? where id=?\",\n\t\trepository.Name,\n\t\trepository.GitURL,\n\t\trepository.GitBranch,\n\t\trepository.SSHKeyID,\n\t\trepository.ID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateRepository(repository db.Repository) (newRepo db.Repository, err error) {\n\terr = repository.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__repository(project_id, git_url, git_branch, ssh_key_id, name) values (?, ?, ?, ?, ?)\",\n\t\trepository.ProjectID,\n\t\trepository.GitURL,\n\t\trepository.GitBranch,\n\t\trepository.SSHKeyID,\n\t\trepository.Name)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewRepo = repository\n\tnewRepo.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) DeleteRepository(projectID int, repositoryId int) error {\n\treturn d.deleteObject(projectID, db.RepositoryProps, repositoryId)\n}\n"
  },
  {
    "path": "db/sql/role.go",
    "content": "package sql\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *SqlDb) GetGlobalRoleBySlug(slug string) (db.Role, error) {\n\tvar role db.Role\n\terr := d.selectOne(&role, \"select * from `role` where slug=? and project_id is null\", slug)\n\treturn role, err\n}\n\nfunc (d *SqlDb) GetProjectRoles(projectID int) ([]db.Role, error) {\n\tvar roles []db.Role\n\t_, err := d.selectAll(&roles, \"select * from `role` where project_id=? order by name\", projectID)\n\treturn roles, err\n}\n\nfunc (d *SqlDb) GetGlobalRoles() ([]db.Role, error) {\n\tvar roles []db.Role\n\t_, err := d.selectAll(&roles, \"select * from `role` where project_id is null order by name\")\n\treturn roles, err\n}\n\nfunc (d *SqlDb) UpdateRole(role db.Role) error {\n\t_, err := d.exec(\n\t\t\"update `role` set name=?, permissions=? where slug=?\",\n\t\trole.Name,\n\t\trole.Permissions,\n\t\trole.Slug)\n\treturn err\n}\n\nfunc (d *SqlDb) CreateRole(role db.Role) (db.Role, error) {\n\t_, err := d.insert(\n\t\t\"\",\n\t\t\"insert into `role` (slug, name, permissions, project_id) values (?, ?, ?, ?)\",\n\t\trole.Slug,\n\t\trole.Name,\n\t\trole.Permissions,\n\t\trole.ProjectID)\n\n\tif err != nil {\n\t\treturn role, err\n\t}\n\n\treturn role, nil\n}\n\nfunc (d *SqlDb) DeleteRole(slug string) error {\n\tres, err := d.exec(\"delete from `role` where slug=?\", slug)\n\treturn validateMutationResult(res, err)\n}\n\nfunc (d *SqlDb) GetProjectRole(projectID int, slug string) (db.Role, error) {\n\tvar role db.Role\n\terr := d.selectOne(&role, \"select * from `role` where slug=? and project_id=?\", slug, projectID)\n\treturn role, err\n}\n\nfunc (d *SqlDb) GetProjectOrGlobalRoleBySlug(projectID int, slug string) (db.Role, error) {\n\tvar role db.Role\n\terr := d.selectOne(&role, \"select * from `role` where slug=?\", slug)\n\treturn role, err\n}\n"
  },
  {
    "path": "db/sql/runner.go",
    "content": "package sql\n\nimport (\n\t\"fmt\"\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc validateTag(tag string) error {\n\tif tag == \"\" {\n\t\treturn fmt.Errorf(\"Tag cannot be empty\")\n\t}\n\n\treturn nil\n}\n\nfunc makePropsNonGlobal(props db.ObjectProps) (res db.ObjectProps) {\n\tres = props\n\tres.IsGlobal = false\n\treturn\n}\n\nvar runnerProps = makePropsNonGlobal(db.GlobalRunnerProps)\n\nfunc (d *SqlDb) GetRunner(projectID int, runnerID int) (runner db.Runner, err error) {\n\terr = d.getObject(projectID, runnerProps, runnerID, &runner)\n\treturn\n}\n\nfunc (d *SqlDb) GetRunners(projectID int, activeOnly bool, tag *string) (runners []db.Runner, err error) {\n\tif tag != nil {\n\t\terr = validateTag(*tag)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = d.getObjects(projectID, runnerProps, db.RetrieveQueryParams{}, func(builder squirrel.SelectBuilder) squirrel.SelectBuilder {\n\t\tif tag != nil {\n\t\t\tbuilder = builder.Where(\"tag=?\", *tag)\n\t\t}\n\n\t\tif activeOnly {\n\t\t\tbuilder = builder.Where(\"active=?\", activeOnly)\n\t\t}\n\n\t\treturn builder\n\t}, &runners)\n\treturn\n}\n\nfunc (d *SqlDb) DeleteRunner(projectID int, runnerID int) (err error) {\n\terr = d.deleteObject(projectID, runnerProps, runnerID)\n\treturn\n}\n\nfunc (d *SqlDb) GetRunnerCount() (res int, err error) {\n\tquery, args, err := squirrel.Select(\"count(*)\").\n\t\tFrom(\"runner\").\n\t\tWhere(squirrel.NotEq{\"project_id\": nil}).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcnt, err := d.Sql().SelectInt(query, args...)\n\n\tres = int(cnt)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetRunnerTags(projectID int) (res []db.RunnerTag, err error) {\n\tquery, args, err := squirrel.Select(\"tag\").\n\t\tFrom(\"runner as r\").\n\t\tWhere(squirrel.Eq{\"r.project_id\": projectID}).\n\t\tWhere(squirrel.NotEq{\"r.tag\": \"\"}).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\trunners := make([]db.Runner, 0)\n\t_, err = d.selectAll(&runners, query, args...)\n\n\tres = make([]db.RunnerTag, 0)\n\tfor _, r := range runners {\n\t\tres = append(res, db.RunnerTag{\n\t\t\tTag: r.Tag,\n\t\t})\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/schedule.go",
    "content": "package sql\n\nimport (\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) CreateSchedule(schedule db.Schedule) (newSchedule db.Schedule, err error) {\n\n\tif schedule.TaskParams != nil {\n\t\tparams := schedule.TaskParams\n\t\tparams.ProjectID = schedule.ProjectID\n\t\terr = d.Sql().Insert(params)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tschedule.TaskParamsID = &params.ID\n\t}\n\n\tif schedule.Type == \"\" {\n\t\tschedule.Type = db.ScheduleTypeCron\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__schedule (project_id, template_id, cron_format, repository_id, `name`, `active`, run_at, `type`, task_params_id, delete_after_run)\"+\n\t\t\t\"values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\",\n\t\tschedule.ProjectID,\n\t\tschedule.TemplateID,\n\t\tschedule.CronFormat,\n\t\tschedule.RepositoryID,\n\t\tschedule.Name,\n\t\tschedule.Active,\n\t\tschedule.RunAt,\n\t\tschedule.Type,\n\t\tschedule.TaskParamsID,\n\t\tschedule.DeleteAfterRun)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewSchedule = schedule\n\tnewSchedule.ID = insertID\n\n\treturn\n}\n\nfunc (d *SqlDb) SetScheduleLastCommitHash(projectID int, scheduleID int, lastCommentHash string) error {\n\t_, err := d.exec(\"update project__schedule set \"+\n\t\t\"last_commit_hash=? \"+\n\t\t\"where project_id=? and id=?\",\n\t\tlastCommentHash,\n\t\tprojectID,\n\t\tscheduleID)\n\treturn err\n}\n\nfunc (d *SqlDb) UpdateSchedule(schedule db.Schedule) (err error) {\n\n\tif schedule.TaskParams != nil {\n\t\tvar curr db.Schedule\n\t\terr = d.getObject(schedule.ProjectID, db.ScheduleProps, schedule.ID, &curr)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tparams := schedule.TaskParams\n\t\tparams.ProjectID = schedule.ProjectID\n\n\t\tif curr.TaskParamsID == nil {\n\t\t\terr = d.Sql().Insert(params)\n\t\t} else {\n\t\t\tparams.ID = *curr.TaskParamsID\n\t\t\t_, err = d.Sql().Update(params)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tschedule.TaskParamsID = &params.ID\n\t}\n\n\tif schedule.Type == \"\" {\n\t\tschedule.Type = db.ScheduleTypeCron\n\t}\n\n\t_, err = d.exec(\"update project__schedule set \"+\n\t\t\"cron_format=?, \"+\n\t\t\"repository_id=?, \"+\n\t\t\"template_id=?, \"+\n\t\t\"`name`=?, \"+\n\t\t\"`active`=?, \"+\n\t\t\"run_at=?, \"+\n\t\t\"`type`=?, \"+\n\t\t\"last_commit_hash = NULL, \"+\n\t\t\"task_params_id=?, \"+\n\t\t\"delete_after_run=? \"+\n\t\t\"where project_id=? and id=?\",\n\t\tschedule.CronFormat,\n\t\tschedule.RepositoryID,\n\t\tschedule.TemplateID,\n\t\tschedule.Name,\n\t\tschedule.Active,\n\t\tschedule.RunAt,\n\t\tschedule.Type,\n\t\tschedule.TaskParamsID,\n\t\tschedule.DeleteAfterRun,\n\t\tschedule.ProjectID,\n\t\tschedule.ID)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetSchedule(projectID int, scheduleID int) (schedule db.Schedule, err error) {\n\terr = d.selectOne(\n\t\t&schedule,\n\t\t\"select * from project__schedule where project_id=? and id=?\",\n\t\tprojectID,\n\t\tscheduleID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif schedule.TaskParamsID != nil {\n\t\tvar taskParams db.TaskParams\n\t\terr = d.getObject(projectID, db.TaskParamsProps, *schedule.TaskParamsID, &taskParams)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tschedule.TaskParams = &taskParams\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteSchedule(projectID int, scheduleID int) (err error) {\n\tvar schedule db.Schedule\n\terr = d.getObject(projectID, db.ScheduleProps, scheduleID, &schedule)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.deleteObject(projectID, db.ScheduleProps, scheduleID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif schedule.TaskParamsID != nil {\n\t\terr = d.deleteObject(projectID, db.TaskParamsProps, *schedule.TaskParamsID)\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDb) GetSchedules() (schedules []db.Schedule, err error) {\n\t_, err = d.selectAll(&schedules, \"select * from project__schedule where cron_format != '' or run_at is not null\")\n\treturn\n}\n\nfunc (d *SqlDb) GetProjectSchedules(projectID int, includeTaskParams bool, includeCommitCheckers bool) (schedules []db.ScheduleWithTpl, err error) {\n\n\trepoFilter := \"\"\n\tif !includeCommitCheckers {\n\t\trepoFilter = \"ps.repository_id IS NULL AND \"\n\t}\n\n\t_, err = d.selectAll(&schedules,\n\t\t\"SELECT ps.*, pt.name as tpl_name FROM project__schedule ps \"+\n\t\t\t\"JOIN project__template pt ON pt.id = ps.template_id \"+\n\t\t\t\"WHERE \"+\n\t\t\trepoFilter+\n\t\t\t\"ps.project_id=?\",\n\t\tprojectID)\n\n\tif includeTaskParams {\n\t\tfor i := range schedules {\n\t\t\tif schedules[i].TaskParamsID == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tvar taskParams db.TaskParams\n\t\t\terr = d.getObject(projectID, db.TaskParamsProps, *schedules[i].TaskParamsID, &taskParams)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tschedules[i].TaskParams = &taskParams\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplateSchedules(projectID int, templateID int, onlyCommitCheckers bool) (schedules []db.Schedule, err error) {\n\n\tq := squirrel.Select(\"*\").\n\t\tFrom(\"project__schedule\").\n\t\tWhere(\"project_id=?\", projectID).\n\t\tWhere(\"template_id=?\", templateID)\n\n\tif onlyCommitCheckers {\n\t\tq = q.Where(\"repository_id IS NOT NULL\")\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&schedules, query, args...)\n\treturn\n}\n\nfunc (d *SqlDb) SetScheduleActive(projectID int, scheduleID int, active bool) error {\n\t_, err := d.exec(\"update project__schedule set `active`=? where project_id=? and id=?\",\n\t\tactive,\n\t\tprojectID,\n\t\tscheduleID)\n\treturn err\n}\n\nfunc (d *SqlDb) SetScheduleCommitHash(projectID int, scheduleID int, hash string) error {\n\t_, err := d.exec(\"update project__schedule set last_commit_hash=? where project_id=? and id=?\",\n\t\thash,\n\t\tprojectID,\n\t\tscheduleID)\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/secret_storage.go",
    "content": "package sql\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *SqlDb) GetSecretStorages(projectID int) (storages []db.SecretStorage, err error) {\n\tstorages = make([]db.SecretStorage, 0)\n\n\tq, err := d.makeObjectsQuery(projectID, db.SecretStorageProps, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&storages, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateSecretStorage(storage db.SecretStorage) (newStorage db.SecretStorage, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__secret_storage (name, type, project_id, params, readonly) values (?, ?, ?, ?, ?)\",\n\t\tstorage.Name,\n\t\tstorage.Type,\n\t\tstorage.ProjectID,\n\t\tstorage.Params,\n\t\tstorage.ReadOnly,\n\t)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewStorage = storage\n\tnewStorage.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) GetSecretStorage(projectID int, storageID int) (key db.SecretStorage, err error) {\n\n\terr = d.getObject(projectID, db.SecretStorageProps, storageID, &key)\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteSecretStorage(projectID int, storageID int) error {\n\treturn d.deleteObject(projectID, db.SecretStorageProps, storageID)\n}\n\nfunc (d *SqlDb) GetSecretStorageRefs(projectID int, storageID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.SecretStorageProps, storageID)\n}\n\nfunc (d *SqlDb) UpdateSecretStorage(storage db.SecretStorage) error {\n\t_, err := d.exec(\"update project__secret_storage set \"+\n\t\t\"name=?, \"+\n\t\t\"type=?, \"+\n\t\t\"params=?, \"+\n\t\t\"readonly=? \"+\n\t\t\"where project_id=? and id=?\",\n\t\tstorage.Name,\n\t\tstorage.Type,\n\t\tstorage.Params,\n\t\tstorage.ReadOnly,\n\t\tstorage.ProjectID,\n\t\tstorage.ID)\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/session.go",
    "content": "package sql\n\nimport (\n\t\"database/sql\"\n\t\"errors\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"regexp\"\n)\n\nfunc (d *SqlDb) SetSessionVerificationMethod(userID int, sessionID int, verificationMethod db.SessionVerificationMethod) error {\n\treturn nil\n}\n\nfunc (d *SqlDb) VerifySession(userID int, sessionID int) error {\n\t_, err := d.exec(\"update session set verified = true where id=? and user_id=?\", sessionID, userID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateSession(session db.Session) (db.Session, error) {\n\terr := d.Sql().Insert(&session)\n\treturn session, err\n}\n\nfunc (d *SqlDb) CreateAPIToken(token db.APIToken) (db.APIToken, error) {\n\ttoken.Created = db.GetParsedTime(tz.Now())\n\terr := d.Sql().Insert(&token)\n\treturn token, err\n}\n\nfunc (d *SqlDb) GetAPIToken(tokenID string) (token db.APIToken, err error) {\n\terr = d.selectOne(&token, d.PrepareQuery(\"select * from user__token where id=? and expired=false\"), tokenID)\n\n\treturn\n}\n\nfunc (d *SqlDb) ExpireAPIToken(userID int, tokenID string) error {\n\treturn validateMutationResult(d.exec(\"update user__token set expired=true where id=? and user_id=?\", tokenID, userID))\n}\n\nfunc validateAPIToken(token string) error {\n\tif matched, _ := regexp.MatchString(`^[a-zA-Z0-9-_=]{8,}$`, token); !matched {\n\t\treturn errors.New(\"invalid token format\")\n\t}\n\treturn nil\n}\n\nfunc (d *SqlDb) DeleteAPIToken(userID int, tokenPrefix string) (err error) {\n\n\terr = validateAPIToken(tokenPrefix)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"DELETE FROM user__token WHERE id LIKE ? AND user_id=?\", tokenPrefix+\"%\", userID)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetSession(userID int, sessionID int) (session db.Session, err error) {\n\terr = d.selectOne(&session, \"select * from session where id=? and user_id=? and expired=false\", sessionID, userID)\n\n\treturn\n}\n\nfunc (d *SqlDb) ExpireSession(userID int, sessionID int) error {\n\tres, err := d.exec(\"update session set expired=true where id=? and user_id=?\", sessionID, userID)\n\n\treturn validateMutationResult(res, err)\n}\n\nfunc (d *SqlDb) TouchSession(userID int, sessionID int) error {\n\t_, err := d.exec(\"update session set last_active=? where id=? and user_id=?\", tz.Now(), sessionID, userID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) GetAPITokens(userID int) (tokens []db.APIToken, err error) {\n\t_, err = d.selectAll(&tokens, d.PrepareQuery(\"select * from user__token where user_id=? order by created desc\"), userID)\n\n\tif errors.Is(err, sql.ErrNoRows) {\n\t\terr = db.ErrNotFound\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/task.go",
    "content": "package sql\n\nimport (\n\t\"encoding/json\"\n\t\"math/rand\"\n\t\"time\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc (d *SqlDb) CreateTaskStage(stage db.TaskStage) (res db.TaskStage, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into task__stage \"+\n\t\t\t\"(task_id, `start`, `end`, `type`) VALUES \"+\n\t\t\t\"(?, ?, ?, ?)\",\n\t\tstage.TaskID,\n\t\tstage.Start,\n\t\tstage.End,\n\t\tstage.Type)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tres = stage\n\tres.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) EndTaskStage(taskID int, stageID int, end time.Time) (err error) {\n\t_, err = d.exec(\n\t\t\"update task__stage set `end`=? where task_id=? and id=?\",\n\t\tend,\n\t\ttaskID,\n\t\tstageID)\n\n\treturn\n}\n\nfunc (d *SqlDb) CreateTaskStageResult(taskID int, stageID int, result map[string]any) (err error) {\n\tjsn, err := json.Marshal(result)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.insert(\n\t\t\"id\",\n\t\t\"insert into task__stage_result \"+\n\t\t\t\"(task_id, stage_id, `json`) VALUES \"+\n\t\t\t\"(?, ?, ?)\",\n\t\ttaskID,\n\t\tstageID,\n\t\tstring(jsn))\n\n\treturn\n}\n\nfunc (d *SqlDb) getTaskStage(taskID int, stageID int) (res db.TaskStage, err error) {\n\terr = d.selectOne(\n\t\t&res,\n\t\t\"select * from task__stage where task_id=? and id=?\",\n\t\ttaskID,\n\t\tstageID)\n\n\treturn\n}\n\nfunc (d *SqlDb) validateTask(projectID int, taskID int) error {\n\t_, err := d.GetTask(projectID, taskID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) GetTaskStageResult(projectID int, taskID int, stageID int) (res db.TaskStageResult, err error) {\n\n\tif err = d.validateTask(projectID, taskID); err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(\n\t\t&res,\n\t\t\"select * from task__stage_result where task_id=? and stage_id=?\",\n\t\ttaskID,\n\t\tstageID)\n\n\treturn\n}\n\nfunc (d *SqlDb) getTaskStages(projectID int, taskID int, stageType *db.TaskStageType) (res []db.TaskStageWithResult, err error) {\n\tif err = d.validateTask(projectID, taskID); err != nil {\n\t\treturn\n\t}\n\n\tq := squirrel.Select(\"p.*, pu.json\").\n\t\tFrom(\"task__stage as p\").\n\t\tJoin(\"task__stage_result as pu on pu.stage_id=p.id\").\n\t\tWhere(\"pu.task_id=?\", taskID)\n\n\tif stageType != nil {\n\t\tq = q.Where(squirrel.Eq{\"type\": *stageType})\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&res, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTaskStages(projectID int, taskID int) ([]db.TaskStageWithResult, error) {\n\treturn d.getTaskStages(projectID, taskID, nil)\n}\n\nfunc (d *SqlDb) clearTasks(projectID int, templateID int, maxTasks int) {\n\ttpl, err := d.GetTemplate(projectID, templateID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnTasks := tpl.Tasks\n\n\tif rand.Intn(10) == 0 { // randomly recalculate number of tasks for the template\n\t\tvar n int64\n\t\tn, err = d.Sql().SelectInt(\"SELECT count(*) FROM task WHERE template_id=?\", templateID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif n != int64(nTasks) {\n\t\t\t_, err = d.exec(\"UPDATE `project__template` SET `tasks`=? WHERE project_id=? and id=?\",\n\t\t\t\tmaxTasks, projectID, templateID)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tnTasks = int(n)\n\t}\n\n\tif nTasks < maxTasks+maxTasks/10 { // deadzone of 10% for clearing of old tasks\n\t\treturn\n\t}\n\n\tvar oldestTask db.Task\n\terr = d.selectOne(&oldestTask,\n\t\t\"SELECT created FROM task WHERE template_id=? ORDER BY created DESC LIMIT 1 OFFSET ?\",\n\t\ttemplateID, maxTasks-1)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"DELETE FROM task WHERE template_id=? AND created<?\", templateID, oldestTask.Created)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, _ = d.exec(\"UPDATE `project__template` SET `tasks`=? WHERE project_id=? and id=?\",\n\t\tmaxTasks, projectID, templateID)\n}\n\nfunc (d *SqlDb) CreateTask(task db.Task, maxTasks int) (newTask db.Task, err error) {\n\terr = d.Sql().Insert(&task)\n\tnewTask = task\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"UPDATE `project__template` SET `tasks` = `tasks` + 1 WHERE project_id=? and id=?\",\n\t\ttask.ProjectID, task.TemplateID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif maxTasks > 0 {\n\t\td.clearTasks(task.ProjectID, task.TemplateID, maxTasks)\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateTask(task db.Task) error {\n\terr := task.PreUpdate(d.Sql())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif task.CommitHash != nil {\n\t\t_, err = d.exec(\n\t\t\t\"update task set status=?, start=?, `end`=?, commit_hash=?, commit_message=? where id=?\",\n\t\t\ttask.Status,\n\t\t\ttask.Start,\n\t\t\ttask.End,\n\t\t\ttask.CommitHash,\n\t\t\ttask.CommitMessage,\n\t\t\ttask.ID)\n\t} else {\n\t\t_, err = d.exec(\n\t\t\t\"update task set status=?, start=?, `end`=? where id=?\",\n\t\t\ttask.Status,\n\t\t\ttask.Start,\n\t\t\ttask.End,\n\t\t\ttask.ID)\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateTaskOutput(output db.TaskOutput) (db.TaskOutput, error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into task__output (task_id, output, time) VALUES (?, ?, ?)\",\n\t\toutput.TaskID,\n\t\toutput.Output,\n\t\toutput.Time.UTC())\n\n\toutput.ID = insertID\n\treturn output, err\n}\n\nfunc (d *SqlDb) InsertTaskOutputBatch(output []db.TaskOutput) error {\n\n\tif len(output) == 0 {\n\t\treturn nil\n\t}\n\n\tq := squirrel.Insert(\"task__output\").\n\t\tColumns(\"task_id\", \"output\", \"time\", \"stage_id\")\n\n\tfor _, item := range output {\n\t\tq = q.Values(item.TaskID, item.Output, item.Time.UTC(), item.StageID)\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(query, args...)\n\treturn err\n}\n\n// getTasks retrieves tasks for a given project, optionally filtered by template and/or task IDs.\n// The taskIDs parameter has three-way semantics: nil means no filtering by ID,\n// and a non-nil non-empty slice restricts the query to only those task IDs.\nfunc (d *SqlDb) getTasks(projectID int, templateID *int, taskIDs []int, params db.RetrieveQueryParams, tasks *[]db.TaskWithTpl) (err error) {\n\n\tif taskIDs != nil && len(taskIDs) == 0 {\n\t\t*tasks = []db.TaskWithTpl{}\n\t\treturn nil\n\t}\n\n\tfields := \"task.*\"\n\tfields += \", tpl.playbook as tpl_playbook\" +\n\t\t\", `user`.name as user_name\" +\n\t\t\", tpl.name as tpl_alias\" +\n\t\t\", tpl.type as tpl_type\" +\n\t\t\", tpl.app as tpl_app\"\n\n\tq := squirrel.Select(fields).\n\t\tFrom(\"task\").\n\t\tJoin(\"project__template as tpl on task.template_id=tpl.id\").\n\t\tLeftJoin(\"`user` on task.user_id=`user`.id\").\n\t\tOrderBy(\"id desc\")\n\n\tif params.TaskFilter != nil && len(params.TaskFilter.Status) > 0 {\n\t\tq = q.Where(squirrel.Eq{\"status\": params.TaskFilter.Status})\n\t}\n\n\tif templateID == nil {\n\t\tq = q.Where(\"tpl.project_id=?\", projectID)\n\t} else {\n\t\tq = q.Where(\"tpl.project_id=? AND task.template_id=?\", projectID, templateID)\n\t}\n\n\tif taskIDs != nil {\n\t\tq = q.Where(squirrel.Eq{\"task.id\": taskIDs})\n\t}\n\n\tif params.Count > 0 {\n\t\tq = q.Limit(uint64(params.Count))\n\t}\n\n\tquery, args, _ := q.ToSql()\n\n\t_, err = d.selectAll(tasks, query, args...)\n\n\tfor i := range *tasks {\n\t\terr = (*tasks)[i].Fill(d)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTask(projectID int, taskID int) (task db.Task, err error) {\n\tq := squirrel.Select(\"task.*\").\n\t\tFrom(\"task\").\n\t\tJoin(\"project__template as tpl on task.template_id=tpl.id\").\n\t\tWhere(\"tpl.project_id=? AND task.id=?\", projectID, taskID)\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&task, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplateTasks(projectID int, templateID int, params db.RetrieveQueryParams) (tasks []db.TaskWithTpl, err error) {\n\terr = d.getTasks(projectID, &templateID, nil, params, &tasks)\n\treturn\n}\n\nfunc (d *SqlDb) GetProjectTasks(projectID int, params db.RetrieveQueryParams) (tasks []db.TaskWithTpl, err error) {\n\ttasks = make([]db.TaskWithTpl, 0)\n\terr = d.getTasks(projectID, nil, nil, params, &tasks)\n\treturn\n}\n\nfunc (d *SqlDb) DeleteTaskWithOutputs(projectID int, taskID int) (err error) {\n\t// check if task exists in the project\n\t_, err = d.GetTask(projectID, taskID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"delete from task__output where task_id=?\", taskID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.exec(\"delete from task where id=?\", taskID)\n\treturn\n}\n\nfunc (d *SqlDb) GetTaskOutputs(projectID int, taskID int, params db.RetrieveQueryParams) (output []db.TaskOutput, err error) {\n\n\tif err = d.validateTask(projectID, taskID); err != nil {\n\t\treturn\n\t}\n\n\tq := squirrel.Select(\"task_id\", \"time\", \"output\").\n\t\tFrom(\"task__output\").\n\t\tWhere(\"task_id=?\", taskID).\n\t\tOrderBy(\"time, id\")\n\n\tif params.Count > 0 {\n\t\tq = q.Limit(uint64(params.Count)).Offset(uint64(params.Offset))\n\t}\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&output, query, args...)\n\treturn\n}\n\nfunc (d *SqlDb) GetTaskStageOutputs(projectID int, taskID int, stageID int) (output []db.TaskOutput, err error) {\n\n\tif err = d.validateTask(projectID, taskID); err != nil {\n\t\treturn\n\t}\n\n\tq := squirrel.Select(\"id\", \"task_id\", \"time\", \"output\").\n\t\tFrom(\"task__output\").\n\t\tWhere(\"task_id=?\", taskID).\n\t\tWhere(\"stage_id=?\", stageID)\n\n\tquery, args, err := q.ToSql()\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&output, query, args...)\n\treturn\n}\n\nfunc (d *SqlDb) GetNodeCount() (int, error) {\n\treturn 0, nil\n}\n\nfunc (d *SqlDb) GetUiCount() (int, error) {\n\treturn 1, nil\n}\n"
  },
  {
    "path": "db/sql/template.go",
    "content": "package sql\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\tcommon_errors \"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc (d *SqlDb) CreateTemplate(template db.Template) (newTemplate db.Template, err error) {\n\terr = template.Validate()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__template (\"+\n\t\t\t\"project_id, inventory_id, repository_id, environment_id, name, \"+\n\t\t\t\"playbook, arguments, allow_override_args_in_task, description, `type`, \"+\n\t\t\t\"start_version, build_template_id, view_id, autorun, survey_vars, \"+\n\t\t\t\"suppress_success_alerts, app, git_branch, runner_tag, task_params, \"+\n\t\t\t\"allow_override_branch_in_task, allow_parallel_tasks)\"+\n\t\t\t\"values (\"+\n\t\t\t\"?, ?, ?, ?, ?, \"+\n\t\t\t\"?, ?, ?, ?, ?, \"+\n\t\t\t\"?, ?, ?, ?, ?, \"+\n\t\t\t\"?, ?, ?, ?, ?,\"+\n\t\t\t\"?, ?)\",\n\t\ttemplate.ProjectID,\n\t\ttemplate.InventoryID,\n\t\ttemplate.RepositoryID,\n\t\ttemplate.EnvironmentID,\n\t\ttemplate.Name,\n\n\t\ttemplate.Playbook,\n\t\ttemplate.Arguments,\n\t\ttemplate.AllowOverrideArgsInTask,\n\t\ttemplate.Description,\n\t\ttemplate.Type,\n\n\t\ttemplate.StartVersion,\n\t\ttemplate.BuildTemplateID,\n\t\ttemplate.ViewID,\n\t\ttemplate.Autorun,\n\t\tdb.ObjectToJSON(template.SurveyVars),\n\n\t\ttemplate.SuppressSuccessAlerts,\n\t\ttemplate.App,\n\t\ttemplate.GitBranch,\n\t\ttemplate.RunnerTag,\n\t\ttemplate.TaskParams,\n\n\t\ttemplate.AllowOverrideBranchInTask,\n\t\ttemplate.AllowParallelTasks,\n\t)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.UpdateTemplateVaults(template.ProjectID, insertID, template.Vaults)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = db.FillTemplate(d, &newTemplate)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewTemplate = template\n\tnewTemplate.ID = insertID\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateTemplate(template db.Template) error {\n\terr := template.Validate()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = d.exec(\"update project__template set \"+\n\t\t\"inventory_id=?, \"+\n\t\t\"repository_id=?, \"+\n\t\t\"environment_id=?, \"+\n\t\t\"name=?, \"+\n\t\t\"playbook=?, \"+\n\t\t\"arguments=?, \"+\n\t\t\"allow_override_args_in_task=?, \"+\n\t\t\"description=?, \"+\n\t\t\"`type`=?, \"+\n\t\t\"start_version=?,\"+\n\t\t\"build_template_id=?, \"+\n\t\t\"view_id=?, \"+\n\t\t\"autorun=?, \"+\n\t\t\"survey_vars=?, \"+\n\t\t\"suppress_success_alerts=?, \"+\n\t\t\"app=?, \"+\n\t\t\"`git_branch`=?, \"+\n\t\t\"task_params=?, \"+\n\t\t\"runner_tag=?, \"+\n\t\t\"allow_override_branch_in_task=?, \"+\n\t\t\"allow_parallel_tasks=? \"+\n\t\t\"where id=? and project_id=?\",\n\t\ttemplate.InventoryID,\n\t\ttemplate.RepositoryID,\n\t\ttemplate.EnvironmentID,\n\t\ttemplate.Name,\n\t\ttemplate.Playbook,\n\t\ttemplate.Arguments,\n\t\ttemplate.AllowOverrideArgsInTask,\n\t\ttemplate.Description,\n\t\ttemplate.Type,\n\t\ttemplate.StartVersion,\n\t\ttemplate.BuildTemplateID,\n\t\ttemplate.ViewID,\n\t\ttemplate.Autorun,\n\t\tdb.ObjectToJSON(template.SurveyVars),\n\t\ttemplate.SuppressSuccessAlerts,\n\t\ttemplate.App,\n\t\ttemplate.GitBranch,\n\t\ttemplate.TaskParams,\n\t\ttemplate.RunnerTag,\n\t\ttemplate.AllowOverrideBranchInTask,\n\t\ttemplate.AllowParallelTasks,\n\n\t\ttemplate.ID,\n\t\ttemplate.ProjectID,\n\t)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = d.UpdateTemplateVaults(template.ProjectID, template.ID, template.Vaults)\n\n\treturn err\n}\nfunc (d *SqlDb) SetTemplateDescription(projectID int, templateID int, description string) (err error) {\n\n\t_, err = d.exec(\"update project__template set \"+\n\t\t\"description=? \"+\n\t\t\"where id=? and project_id=?\",\n\t\tdescription,\n\t\ttemplateID,\n\t\tprojectID,\n\t)\n\n\treturn\n}\n\nfunc (d *SqlDb) getTemplates(\n\tprojectID int,\n\tuserID *int,\n\tfilter db.TemplateFilter,\n\tparams db.RetrieveQueryParams,\n\tloadVaults bool,\n) (templates []db.TemplateWithPerms, err error) {\n\n\tpp, err := params.Validate(db.TemplateProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplates = make([]db.TemplateWithPerms, 0)\n\n\ttype templateWithLastTask struct {\n\t\tdb.TemplateWithPerms\n\t\tLastTaskID *int `db:\"last_task_id\"`\n\t}\n\n\tvar view db.View\n\n\tif filter.ViewID != nil {\n\t\tview, err = d.GetView(projectID, *filter.ViewID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfields := []string{\n\t\t\"pt.id\",\n\t\t\"pt.project_id\",\n\t\t\"pt.inventory_id\",\n\t\t\"pt.repository_id\",\n\t\t\"pt.environment_id\",\n\t\t\"pt.name\",\n\t\t\"pt.description\",\n\t\t\"pt.playbook\",\n\t\t\"pt.arguments\",\n\t\t\"pt.allow_override_args_in_task\",\n\t\t\"pt.build_template_id\",\n\t\t\"pt.start_version\",\n\t\t\"pt.view_id\",\n\t\t\"pt.`app`\",\n\t\t\"pt.`git_branch`\",\n\t\t\"pt.survey_vars\",\n\t\t\"pt.`type`\",\n\t\t\"pt.`tasks`\",\n\t\t\"pt.runner_tag\",\n\t\t\"pt.task_params\",\n\t\t\"pt.allow_override_branch_in_task\",\n\t\t\"pt.allow_parallel_tasks\",\n\t\t\"(SELECT `id` FROM `task` WHERE template_id = pt.id ORDER BY `id` DESC LIMIT 1) last_task_id\",\n\t}\n\n\tif userID != nil {\n\t\tfields = append(fields, \"ptr.permissions permissions\")\n\t}\n\n\tq := squirrel.Select(fields...).From(\"project__template pt\")\n\n\tif userID != nil {\n\t\tq = q.LeftJoin(\"project__user pu ON (pu.project_id = pt.project_id AND pu.user_id = ?)\", *userID).\n\t\t\tLeftJoin(\"project__template_role ptr ON (ptr.template_id = pt.id AND ptr.role_slug = pu.`role`)\")\n\t}\n\n\tif filter.App != nil {\n\t\tq = q.Where(\"pt.app=?\", *filter.App)\n\t}\n\n\tif filter.ViewID != nil {\n\t\tswitch view.Type {\n\t\tcase db.ViewTypeCustom:\n\t\t\tq = q.Where(\"pt.view_id=?\", *filter.ViewID)\n\t\tcase db.ViewTypeAll:\n\t\t\tif view.Filter != nil {\n\t\t\t\t// TODO: implement filter\n\t\t\t}\n\t\t}\n\t}\n\n\tif filter.BuildTemplateID != nil {\n\t\tq = q.Where(\"pt.build_template_id=?\", *filter.BuildTemplateID)\n\t\tif filter.AutorunOnly {\n\t\t\tq = q.Where(\"pt.autorun=true\")\n\t\t}\n\t}\n\n\torder := \"ASC\"\n\tvar sortBy string\n\n\tif pp.SortBy != \"\" { // order by query param has priority\n\t\tsortBy = pp.SortBy\n\t\tif pp.SortInverted {\n\t\t\torder = \"DESC\"\n\t\t}\n\t} else if filter.ViewID != nil && view.SortColumn != nil {\n\t\tsortBy = *view.SortColumn\n\t\tif view.SortReverse {\n\t\t\torder = \"DESC\"\n\t\t}\n\t}\n\n\tswitch sortBy {\n\tcase \"name\", \"playbook\":\n\t\tq = q.Where(\"pt.project_id=?\", projectID).\n\t\t\tOrderBy(\"pt.\" + sortBy + \" \" + order)\n\tcase \"inventory\":\n\t\tq = q.LeftJoin(\"project__inventory pi ON (pt.inventory_id = pi.id)\").\n\t\t\tWhere(\"pt.project_id=?\", projectID).\n\t\t\tOrderBy(\"pi.name \" + order)\n\tcase \"environment\":\n\t\tq = q.LeftJoin(\"project__environment pe ON (pt.environment_id = pe.id)\").\n\t\t\tWhere(\"pt.project_id=?\", projectID).\n\t\t\tOrderBy(\"pe.name \" + order)\n\tcase \"repository\":\n\t\tq = q.LeftJoin(\"project__repository pr ON (pt.repository_id = pr.id)\").\n\t\t\tWhere(\"pt.project_id=?\", projectID).\n\t\t\tOrderBy(\"pr.name \" + order)\n\tdefault:\n\t\tq = q.Where(\"pt.project_id=?\", projectID).\n\t\t\tOrderBy(\"pt.name \" + order)\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar tpls []templateWithLastTask\n\n\t_, err = d.selectAll(&tpls, query, args...)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttaskIDs := make([]int, 0)\n\n\tfor _, tpl := range tpls {\n\t\tif tpl.LastTaskID != nil {\n\t\t\ttaskIDs = append(taskIDs, *tpl.LastTaskID)\n\t\t}\n\t}\n\n\tvar tasks []db.TaskWithTpl\n\terr = d.getTasks(projectID, nil, taskIDs, db.RetrieveQueryParams{}, &tasks)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, tpl := range tpls {\n\t\ttemplate := tpl.TemplateWithPerms\n\n\t\tif tpl.LastTaskID != nil {\n\t\t\tfor _, tsk := range tasks {\n\t\t\t\tif tsk.ID == *tpl.LastTaskID {\n\t\t\t\t\t// err = tsk.Fill(d)\n\t\t\t\t\t// if err != nil {\n\t\t\t\t\t// \treturn\n\t\t\t\t\t// }\n\t\t\t\t\ttemplate.LastTask = &tsk\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif tpl.SurveyVarsJSON != nil {\n\t\t\tif err2 := json.Unmarshal([]byte(*tpl.SurveyVarsJSON), &template.SurveyVars); err2 != nil {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\t\"project_id\":  projectID,\n\t\t\t\t\t\"template_id\": template.ID,\n\t\t\t\t\t\"hint\":        \"validate JSON array in project__template.survey_vars\",\n\t\t\t\t}).Error(\"failed to unmarshal template survey vars\")\n\t\t\t}\n\t\t}\n\n\t\tif loadVaults {\n\t\t\ttemplate.Vaults, err = d.GetTemplateVaults(projectID, template.ID)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\ttemplates = append(templates, template)\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplatesWithPermissions(projectID int, userID int, filter db.TemplateFilter, params db.RetrieveQueryParams) (templates []db.TemplateWithPerms, err error) {\n\treturn d.getTemplates(projectID, &userID, filter, params, false)\n}\n\nfunc (d *SqlDb) GetTemplates(projectID int, filter db.TemplateFilter, params db.RetrieveQueryParams) (templates []db.Template, err error) {\n\tres, err := d.getTemplates(projectID, nil, filter, params, true)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttemplates = make([]db.Template, 0, len(res))\n\n\tfor _, tpl := range res {\n\t\ttemplates = append(templates, tpl.Template)\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplate(projectID int, templateID int) (template db.Template, err error) {\n\terr = d.selectOne(\n\t\t&template,\n\t\t\"select * from project__template where project_id=? and id=?\",\n\t\tprojectID,\n\t\ttemplateID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = db.FillTemplate(d, &template)\n\treturn\n}\n\nfunc (d *SqlDb) DeleteTemplate(projectID int, templateID int) error {\n\t_, err := d.exec(\"delete from project__template where project_id=? and id=?\", projectID, templateID)\n\treturn err\n}\n\nfunc (d *SqlDb) GetTemplateRefs(projectID int, templateID int) (db.ObjectReferrers, error) {\n\treturn d.getObjectRefs(projectID, db.TemplateProps, templateID)\n}\n\nfunc (d *SqlDb) GetTemplateRole(projectID int, templateID int, id int) (templateRole db.TemplateRolePerm, err error) {\n\n\tquery, args, err := squirrel.Select(\"*\").\n\t\tFrom(\"project__template_role\").\n\t\tWhere(\"project_id = ?\", projectID).\n\t\tWhere(\"template_id = ?\", templateID).\n\t\tWhere(\"id = ?\", id).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = d.selectOne(&templateRole, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplatePermission(projectID int, templateID int, userID int) (perm db.ProjectUserPermission, err error) {\n\tvar projectUser db.ProjectUser\n\tprojectUser, err = d.GetProjectUser(projectID, userID)\n\tif err != nil {\n\t\tif errors.Is(err, db.ErrNotFound) {\n\t\t\terr = nil // user not in project, no permissions\n\t\t}\n\t\treturn\n\t}\n\n\tperm = projectUser.Role.GetPermissions()\n\n\trole, err := d.GetProjectOrGlobalRoleBySlug(projectUser.ProjectID, string(projectUser.Role))\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tquery, args, err := squirrel.Select(\"permissions\").\n\t\tFrom(\"project__template_role\").\n\t\tWhere(\"project_id = ?\", projectID).\n\t\tWhere(\"template_id = ?\", templateID).\n\t\tWhere(\"role_slug = ?\", role.Slug).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar templateRole db.TemplateRolePerm\n\n\terr = d.selectOne(&templateRole, query, args...)\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t\treturn\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tperm |= templateRole.Permissions\n\n\treturn\n}\n\nfunc (d *SqlDb) GetTemplateRoles(projectID int, templateID int) (roles []db.TemplateRolePerm, err error) {\n\tquery, args, err := squirrel.Select(\"*\").\n\t\tFrom(\"project__template_role\").\n\t\tWhere(\"project_id = ?\", projectID).\n\t\tWhere(\"template_id = ?\", templateID).\n\t\tToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&roles, query, args...)\n\treturn\n}\nfunc (d *SqlDb) CreateTemplateRole(role db.TemplateRolePerm) (newRole db.TemplateRolePerm, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__template_role (project_id, template_id, role_slug, permissions) values (?, ?, ?, ?)\",\n\t\trole.ProjectID,\n\t\trole.TemplateID,\n\t\trole.RoleSlug,\n\t\trole.Permissions)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewRole = role\n\tnewRole.ID = insertID\n\treturn\n}\nfunc (d *SqlDb) DeleteTemplateRole(projectID int, templateID int, id int) error {\n\t_, err := d.exec(\"delete from project__template_role where project_id=? and template_id=? and id=?\", projectID, templateID, id)\n\treturn err\n}\nfunc (d *SqlDb) UpdateTemplateRole(role db.TemplateRolePerm) error {\n\t_, err := d.exec(\n\t\t\"update project__template_role set permissions=? \"+\n\t\t\t\"where project_id=? and template_id=? and id=?\",\n\t\trole.Permissions,\n\t\trole.ProjectID,\n\t\trole.TemplateID,\n\t\trole.ID)\n\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/template_vault.go",
    "content": "package sql\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nfunc (d *SqlDb) GetTemplateVaults(projectID int, templateID int) (vaults []db.TemplateVault, err error) {\n\tvaults = []db.TemplateVault{}\n\n\t_, err = d.selectAll(&vaults, \"select * from project__template_vault where project_id=? and template_id=?\", projectID, templateID)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor i := range vaults {\n\t\terr = db.FillTemplateVault(d, projectID, &vaults[i])\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\nfunc (d *SqlDb) CreateTemplateVault(vault db.TemplateVault) (newVault db.TemplateVault, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__template_vault (project_id, template_id, vault_key_id, name, type, script) values (?, ?, ?, ?, ?, ?)\",\n\t\tvault.ProjectID,\n\t\tvault.TemplateID,\n\t\tvault.VaultKeyID,\n\t\tvault.Name,\n\t\tvault.Type,\n\t\tvault.Script)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewVault = vault\n\tnewVault.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) UpdateTemplateVaults(projectID int, templateID int, vaults []db.TemplateVault) (err error) {\n\tif vaults == nil {\n\t\tvaults = []db.TemplateVault{}\n\t}\n\n\tvar vaultIDs []string\n\tfor _, vault := range vaults {\n\t\tswitch vault.Type {\n\t\tcase \"password\":\n\t\t\tvault.Script = nil\n\t\tcase \"script\":\n\t\t\tvault.VaultKeyID = nil\n\t\t}\n\t\tif vault.ID == 0 {\n\t\t\t// Insert new vaults\n\t\t\tvar vaultId int\n\t\t\tvaultId, err = d.insert(\"id\", \"insert into project__template_vault (project_id, template_id, vault_key_id, name, type, script) values (?, ?, ?, ?, ?, ?)\", projectID, templateID, vault.VaultKeyID, vault.Name, vault.Type, vault.Script)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvaultIDs = append(vaultIDs, strconv.Itoa(vaultId))\n\t\t} else {\n\t\t\t// Update existing vaults\n\t\t\t_, err = d.exec(\"update project__template_vault set project_id=?, template_id=?, vault_key_id=?, name=?, type=?, script=? where id=?\", projectID, templateID, vault.VaultKeyID, vault.Name, vault.Type, vault.Script, vault.ID)\n\t\t\tvaultIDs = append(vaultIDs, strconv.Itoa(vault.ID))\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\t// Delete removed vaults\n\tif len(vaultIDs) == 0 {\n\t\t_, err = d.exec(\"delete from project__template_vault where project_id=? and template_id=?\", projectID, templateID)\n\t} else {\n\t\t_, err = d.exec(\"delete from project__template_vault where project_id=? and template_id=? and id not in (\"+strings.Join(vaultIDs, \",\")+\")\", projectID, templateID)\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "db/sql/user.go",
    "content": "package sql\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\n\t\"github.com/Masterminds/squirrel\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"golang.org/x/crypto/bcrypt\"\n)\n\nfunc (d *SqlDb) CreateUserWithoutPassword(user db.User) (newUser db.User, err error) {\n\n\terr = db.ValidateUser(user)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tuser.Password = \"\"\n\tuser.Created = db.GetParsedTime(tz.Now())\n\n\terr = d.Sql().Insert(&user)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewUser = user\n\treturn\n}\n\nfunc (d *SqlDb) CreateUser(user db.UserWithPwd) (newUser db.User, err error) {\n\n\terr = db.ValidateUser(user.User)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tpwdHash, err := bcrypt.GenerateFromPassword([]byte(user.Pwd), 11)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tuser.Password = string(pwdHash)\n\tuser.Created = db.GetParsedTime(tz.Now())\n\n\terr = d.Sql().Insert(&user.User)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewUser = user.User\n\treturn\n}\n\nfunc (d *SqlDb) ImportUser(user db.UserWithPwd) (newUser db.User, err error) {\n\terr = db.ValidateUser(user.User)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tuser.Created = db.GetParsedTime(tz.Now())\n\n\terr = d.Sql().Insert(&user.User)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewUser = user.User\n\treturn\n}\n\nfunc (d *SqlDb) DeleteUser(userID int) error {\n\tres, err := d.exec(\"delete from `user` where id=?\", userID)\n\treturn validateMutationResult(res, err)\n}\n\nfunc (d *SqlDb) UpdateUser(user db.UserWithPwd) error {\n\tvar err error\n\n\tif user.Pwd != \"\" {\n\t\tvar pwdHash []byte\n\t\tpwdHash, err = bcrypt.GenerateFromPassword([]byte(user.Pwd), 11)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = d.exec(\n\t\t\t\"update `user` set name=?, username=?, email=?, alert=?, admin=?, pro=?, password=? where id=?\",\n\t\t\tuser.Name,\n\t\t\tuser.Username,\n\t\t\tuser.Email,\n\t\t\tuser.Alert,\n\t\t\tuser.Admin,\n\t\t\tuser.Pro,\n\t\t\tstring(pwdHash),\n\t\t\tuser.ID)\n\t} else {\n\t\t_, err = d.exec(\n\t\t\t\"update `user` set name=?, username=?, email=?, alert=?, admin=?, pro=? where id=?\",\n\t\t\tuser.Name,\n\t\t\tuser.Username,\n\t\t\tuser.Email,\n\t\t\tuser.Alert,\n\t\t\tuser.Admin,\n\t\t\tuser.Pro,\n\t\t\tuser.ID)\n\t}\n\n\treturn err\n}\n\nfunc (d *SqlDb) SetUserPassword(userID int, password string) error {\n\thash, err := bcrypt.GenerateFromPassword([]byte(password), 11)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = d.exec(\n\t\t\"update `user` set password=? where id=?\",\n\t\tstring(hash), userID)\n\treturn err\n}\n\nfunc (d *SqlDb) CreateProjectUser(projectUser db.ProjectUser) (newProjectUser db.ProjectUser, err error) {\n\t_, err = d.exec(\n\t\t\"insert into project__user (project_id, user_id, `role`) values (?, ?, ?)\",\n\t\tprojectUser.ProjectID,\n\t\tprojectUser.UserID,\n\t\tprojectUser.Role)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewProjectUser = projectUser\n\treturn\n}\n\nfunc (d *SqlDb) GetProjectUser(projectID, userID int) (db.ProjectUser, error) {\n\tvar user db.ProjectUser\n\n\terr := d.selectOne(&user,\n\t\t\"select * from project__user where project_id=? and user_id=?\",\n\t\tprojectID,\n\t\tuserID)\n\n\treturn user, err\n}\n\nfunc (d *SqlDb) GetProjectUsers(projectID int, params db.RetrieveQueryParams) (users []db.UserWithProjectRole, err error) {\n\n\tpp, err := params.Validate(db.UserProps)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tq := squirrel.Select(\"u.*\").\n\t\tColumn(\"pu.role\").\n\t\tFrom(\"project__user as pu\").\n\t\tLeftJoin(\"`user` as u on pu.user_id=u.id\").\n\t\tWhere(\"pu.project_id=?\", projectID)\n\n\tsortDirection := \"ASC\"\n\tif pp.SortInverted {\n\t\tsortDirection = \"DESC\"\n\t}\n\n\tswitch pp.SortBy {\n\tcase \"name\", \"username\", \"email\":\n\t\tq = q.OrderBy(\"u.\" + pp.SortBy + \" \" + sortDirection)\n\tcase \"role\":\n\t\tq = q.OrderBy(\"pu.role \" + sortDirection)\n\tdefault:\n\t\tq = q.OrderBy(\"u.name \" + sortDirection)\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&users, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) UpdateProjectUser(projectUser db.ProjectUser) error {\n\t_, err := d.exec(\n\t\t\"update `project__user` set role=? where user_id=? and project_id = ?\",\n\t\tprojectUser.Role,\n\t\tprojectUser.UserID,\n\t\tprojectUser.ProjectID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) DeleteProjectUser(projectID, userID int) error {\n\t_, err := d.exec(\"delete from project__user where user_id=? and project_id=?\", userID, projectID)\n\treturn err\n}\n\n// GetUser retrieves a user from the database by ID\nfunc (d *SqlDb) GetUser(userID int) (user db.User, err error) {\n\n\terr = d.selectOne(&user, \"select * from `user` where id=?\", userID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar totp db.UserTotp\n\terr = d.selectOne(&totp, \"select * from `user__totp` where user_id=?\", user.ID)\n\n\tif err == nil {\n\t\tuser.Totp = &totp\n\t}\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\tvar emailOtp db.UserEmailOtp\n\terr = d.selectOne(&emailOtp, \"select * from `user__email_otp` where user_id=?\", user.ID)\n\n\tif err == nil {\n\t\tuser.EmailOtp = &emailOtp\n\t}\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetProUserCount() (count int, err error) {\n\n\tcnt, err := d.Sql().SelectInt(d.PrepareQuery(\"select count(*) from `user` where pro\"))\n\n\tcount = int(cnt)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetUserCount() (count int, err error) {\n\n\tcnt, err := d.Sql().SelectInt(d.PrepareQuery(\"select count(*) from `user`\"))\n\n\tcount = int(cnt)\n\n\treturn\n}\n\nfunc escapeLike(s string) string {\n\t// Order matters: escape \\ first\n\ts = strings.ReplaceAll(s, `\\`, `\\\\`)\n\ts = strings.ReplaceAll(s, `%`, `\\%`)\n\ts = strings.ReplaceAll(s, `_`, `\\_`)\n\treturn s\n}\n\nfunc (d *SqlDb) GetUsers(params db.RetrieveQueryParams) (users []db.User, err error) {\n\tq := squirrel.Select(\"*\").From(\"`user`\")\n\n\tq, err = getQueryForParams(q, \"\", db.UserProps, params)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif params.Filter != \"\" {\n\t\tq = q.Where(squirrel.Like{\"username\": escapeLike(params.Filter) + \"%\"})\n\t}\n\n\tquery, args, err := q.ToSql()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = d.selectAll(&users, query, args...)\n\n\treturn\n}\n\nfunc (d *SqlDb) GetUserByLoginOrEmail(login string, email string) (user db.User, err error) {\n\terr = d.selectOne(\n\t\t&user,\n\t\td.PrepareQuery(\"select * from `user` where email=? or username=?\"),\n\t\temail, login)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar totp db.UserTotp\n\terr = d.selectOne(&totp, \"select * from `user__totp` where user_id=?\", user.ID)\n\n\tif err == nil {\n\t\tuser.Totp = &totp\n\t}\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\tvar emailOtp db.UserEmailOtp\n\terr = d.selectOne(&emailOtp, \"select * from `user__email_otp` where user_id=?\", user.ID)\n\n\tif err == nil && !emailOtp.IsExpired() {\n\t\tuser.EmailOtp = &emailOtp\n\t}\n\n\tif errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) GetAllAdmins() (users []db.User, err error) {\n\t_, err = d.selectAll(&users, \"select * from `user` where `admin` = true\")\n\n\treturn\n}\n\nfunc (d *SqlDb) AddTotpVerification(userID int, url string, recoveryHash string) (totp db.UserTotp, err error) {\n\n\ttotp.UserID = userID\n\ttotp.URL = url\n\ttotp.RecoveryHash = recoveryHash\n\ttotp.Created = db.GetParsedTime(tz.Now())\n\n\tres, err := d.exec(\n\t\t\"insert into user__totp (user_id, url, recovery_hash, created) values (?, ?, ?, ?)\",\n\t\ttotp.UserID,\n\t\ttotp.URL,\n\t\ttotp.RecoveryHash,\n\t\ttotp.Created)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tid, err := res.LastInsertId()\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttotp.ID = int(id)\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteTotpVerification(userID int, totpID int) error {\n\t_, err := d.exec(\"delete from user__totp where user_id=? and id = ?\", userID, totpID)\n\treturn err\n}\n\nfunc (d *SqlDb) insertEmailOtp(userID int, code string) (totp db.UserEmailOtp, err error) {\n\n\ttotp.UserID = userID\n\ttotp.Code = code\n\ttotp.Created = db.GetParsedTime(tz.Now())\n\n\tres, err := d.exec(\n\t\t\"insert into user__email_otp (user_id, code, created) values (?, ?, ?)\",\n\t\ttotp.UserID,\n\t\ttotp.Code,\n\t\ttotp.Created)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tid, err := res.LastInsertId()\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttotp.ID = int(id)\n\n\treturn\n}\n\nfunc (d *SqlDb) AddEmailOtpVerification(userID int, code string) (res db.UserEmailOtp, err error) {\n\n\tvar emailOtp db.UserEmailOtp\n\terr = d.selectOne(&emailOtp, \"select * from `user__email_otp` where user_id=?\", userID)\n\n\tif err == nil {\n\t\tnow := db.GetParsedTime(tz.Now())\n\t\t_, err = d.exec(\"update user__email_otp set code=?, created=? where user_id=?\", code, now, userID)\n\t} else if errors.Is(err, db.ErrNotFound) {\n\t\terr = nil\n\t\tres, err = d.insertEmailOtp(userID, code)\n\t} else {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (d *SqlDb) DeleteEmailOtpVerification(userID int, totpID int) error {\n\t_, err := d.exec(\"delete from user__email_otp where user_id=? and id = ?\", userID, totpID)\n\treturn err\n}\n"
  },
  {
    "path": "db/sql/view.go",
    "content": "package sql\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc (d *SqlDb) GetView(projectID int, viewID int) (view db.View, err error) {\n\terr = d.getObject(projectID, db.ViewProps, viewID, &view)\n\treturn\n}\n\nfunc (d *SqlDb) GetViews(projectID int) (views []db.View, err error) {\n\terr = d.getObjects(projectID, db.ViewProps, db.RetrieveQueryParams{}, nil, &views)\n\treturn\n}\n\nfunc (d *SqlDb) UpdateView(view db.View) error {\n\t_, err := d.exec(\n\t\t\"update project__view set title=?, position=?, project_id=?, `type`=?, sort_column=?, sort_reverse=?, \"+\n\t\t\t\"hidden=? \"+\n\t\t\t\"where id=?\",\n\t\tview.Title,\n\t\tview.Position,\n\t\tview.ProjectID,\n\t\tview.Type,\n\t\tview.SortColumn,\n\t\tview.SortReverse,\n\t\tview.Hidden,\n\t\tview.ID)\n\n\treturn err\n}\n\nfunc (d *SqlDb) CreateView(view db.View) (newView db.View, err error) {\n\tinsertID, err := d.insert(\n\t\t\"id\",\n\t\t\"insert into project__view (project_id, title, position, `type`, sort_column, sort_reverse, \"+\n\t\t\t\"hidden) values (?, ?, ?, ?, ?, ?, ?)\",\n\t\tview.ProjectID,\n\t\tview.Title,\n\t\tview.Position,\n\t\tview.Type,\n\t\tview.SortColumn,\n\t\tview.SortReverse,\n\t\tview.Hidden,\n\t)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnewView = view\n\tnewView.ID = insertID\n\treturn\n}\n\nfunc (d *SqlDb) DeleteView(projectID int, viewID int) error {\n\treturn d.deleteObject(projectID, db.ViewProps, viewID)\n}\n\nfunc (d *SqlDb) SetViewPositions(projectID int, positions map[int]int) error {\n\tfor id, position := range positions {\n\t\t_, err := d.exec(\"update project__view set position=? where project_id=? and id=?\",\n\t\t\tposition,\n\t\t\tprojectID,\n\t\t\tid)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "db_lib/AccessKeyInstaller.go",
    "content": "package db_lib\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\ntype AccessKeyInstaller interface {\n\tInstall(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation ssh.AccessKeyInstallation, err error)\n}\n"
  },
  {
    "path": "db_lib/AnsibleApp.go",
    "content": "package db_lib\n\nimport (\n\t\"crypto/md5\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\nfunc getMD5Hash(filepath string) (string, error) {\n\tfile, err := os.Open(filepath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer file.Close() //nolint:errcheck\n\n\thash := md5.New()\n\tif _, err := io.Copy(hash, file); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn fmt.Sprintf(\"%x\", hash.Sum(nil)), nil\n}\n\nfunc hasRequirementsChanges(requirementsFilePath string, requirementsHashFilePath string) bool {\n\toldFileMD5HashBytes, err := os.ReadFile(requirementsHashFilePath)\n\tif err != nil {\n\t\treturn true\n\t}\n\n\tnewFileMD5Hash, err := getMD5Hash(requirementsFilePath)\n\tif err != nil {\n\t\treturn true\n\t}\n\n\treturn string(oldFileMD5HashBytes) != newFileMD5Hash\n}\n\nfunc writeMD5Hash(requirementsFile string, requirementsHashFile string) error {\n\tnewFileMD5Hash, err := getMD5Hash(requirementsFile)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn os.WriteFile(requirementsHashFile, []byte(newFileMD5Hash), 0o644)\n}\n\ntype AnsibleApp struct {\n\tLogger     task_logger.Logger\n\tPlaybook   *AnsiblePlaybook\n\tTemplate   db.Template\n\tRepository db.Repository\n}\n\nfunc (t *AnsibleApp) SetLogger(logger task_logger.Logger) task_logger.Logger {\n\tt.Logger = logger\n\tt.Playbook.Logger = logger\n\treturn logger\n}\n\nfunc (t *AnsibleApp) Run(args LocalAppRunningArgs) error {\n\t// Use \"default\" key for backward compatibility\n\tcliArgs := args.CliArgs[\"default\"]\n\treturn t.Playbook.RunPlaybook(cliArgs, args.EnvironmentVars, args.Inputs, args.Callback)\n}\n\nfunc (t *AnsibleApp) Log(msg string) {\n\tt.Logger.Log(msg)\n}\n\nfunc (t *AnsibleApp) Clear() {\n}\n\nfunc (t *AnsibleApp) InstallRequirements(args LocalAppInstallingArgs) error {\n\tif err := t.installCollectionsRequirements(args.EnvironmentVars); err != nil {\n\t\treturn err\n\t}\n\tif err := t.installRolesRequirements(args.EnvironmentVars); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (t *AnsibleApp) getRepoPath() string {\n\treturn t.Repository.GetFullPath(t.Template.ID)\n}\n\nfunc (t *AnsibleApp) installGalaxyRequirementsFile(requirementsType GalaxyRequirementsType, requirementsFilePath string, environmentVars []string) error {\n\trequirementsHashFilePath := fmt.Sprintf(\"%s_%s.md5\", requirementsFilePath, requirementsType)\n\n\tif _, err := os.Stat(requirementsFilePath); err != nil {\n\t\tt.Log(\"No \" + requirementsFilePath + \" file found. Skip galaxy install process.\\n\")\n\t\treturn nil\n\t}\n\n\tif hasRequirementsChanges(requirementsFilePath, requirementsHashFilePath) {\n\t\tif err := t.runGalaxy([]string{\n\t\t\tstring(requirementsType),\n\t\t\t\"install\",\n\t\t\t\"-r\",\n\t\t\trequirementsFilePath,\n\t\t\t\"--force\",\n\t\t}, environmentVars); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err := writeMD5Hash(requirementsFilePath, requirementsHashFilePath); err != nil {\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tt.Log(requirementsFilePath + \" has no changes. Skip galaxy install process.\\n\")\n\t}\n\n\treturn nil\n}\n\nfunc (t *AnsibleApp) GetPlaybookDir() string {\n\tplaybookPath := path.Join(t.getRepoPath(), t.Template.Playbook)\n\n\treturn path.Dir(playbookPath)\n}\n\ntype GalaxyRequirementsType string\n\nconst (\n\tGalaxyRole       GalaxyRequirementsType = \"role\"\n\tGalaxyCollection GalaxyRequirementsType = \"collection\"\n)\n\nfunc (t *AnsibleApp) installRolesRequirements(environmentVars []string) (err error) {\n\t// default roles path\n\terr = t.installGalaxyRequirementsFile(GalaxyRole, path.Join(t.GetPlaybookDir(), \"roles\", \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = t.installGalaxyRequirementsFile(GalaxyRole, path.Join(t.GetPlaybookDir(), \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// alternative roles path\n\terr = t.installGalaxyRequirementsFile(GalaxyRole, path.Join(t.getRepoPath(), \"roles\", \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = t.installGalaxyRequirementsFile(GalaxyRole, path.Join(t.getRepoPath(), \"requirements.yml\"), environmentVars)\n\treturn\n}\n\nfunc (t *AnsibleApp) installCollectionsRequirements(environmentVars []string) (err error) {\n\t// default collections path\n\terr = t.installGalaxyRequirementsFile(GalaxyCollection, path.Join(t.GetPlaybookDir(), \"collections\", \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = t.installGalaxyRequirementsFile(GalaxyCollection, path.Join(t.GetPlaybookDir(), \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// alternative collections path\n\terr = t.installGalaxyRequirementsFile(GalaxyCollection, path.Join(t.getRepoPath(), \"collections\", \"requirements.yml\"), environmentVars)\n\tif err != nil {\n\t\treturn\n\t}\n\terr = t.installGalaxyRequirementsFile(GalaxyCollection, path.Join(t.getRepoPath(), \"requirements.yml\"), environmentVars)\n\treturn\n}\n\nfunc (t *AnsibleApp) runGalaxy(args []string, environmentVars []string) error {\n\treturn t.Playbook.RunGalaxy(args, environmentVars)\n}\n"
  },
  {
    "path": "db_lib/AnsiblePlaybook.go",
    "content": "package db_lib\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strings\"\n\n\t\"github.com/creack/pty\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype AnsiblePlaybook struct {\n\tTemplateID int\n\tRepository db.Repository\n\tLogger     task_logger.Logger\n}\n\nfunc (p AnsiblePlaybook) makeCmd(command string, args []string, environmentVars []string) *exec.Cmd {\n\tcmd := exec.Command(command, args...) //nolint: gas\n\tcmd.Dir = p.GetFullPath()\n\n\tcmd.Env = append(cmd.Env, \"PYTHONUNBUFFERED=1\")\n\tcmd.Env = append(cmd.Env, \"ANSIBLE_FORCE_COLOR=True\")\n\tcmd.Env = append(cmd.Env, \"ANSIBLE_HOST_KEY_CHECKING=False\")\n\t//cmd.Env = append(cmd.Env, \"ANSIBLE_SSH_ARGS=-o UserKnownHostsFile=/dev/null\")\n\tcmd.Env = append(cmd.Env, getEnvironmentVars()...)\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"HOME=%s\", getHomeDir(p.Repository, p.TemplateID)))\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"PWD=%s\", cmd.Dir))\n\n\tif util.Config.HomeDirMode == util.HomeDirModeTemplateDir {\n\t\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"ANSIBLE_HOME=%s\", path.Join(p.Repository.GetHomePath(p.TemplateID), \".ansible\")))\n\t}\n\n\tcmd.Env = append(cmd.Env, environmentVars...)\n\n\tcmd.SysProcAttr = util.Config.GetSysProcAttr()\n\n\treturn cmd\n}\n\nfunc (p AnsiblePlaybook) runCmd(command string, args []string, environmentVars []string) error {\n\tcmd := p.makeCmd(command, args, environmentVars)\n\tp.Logger.LogCmd(cmd)\n\terr := cmd.Run()\n\t// Wait for all log processing to complete before returning\n\tp.Logger.WaitLog()\n\treturn err\n}\n\nfunc (p AnsiblePlaybook) RunPlaybook(args []string, environmentVars []string, inputs map[string]string, cb func(*os.Process)) error {\n\tcmd := p.makeCmd(\"ansible-playbook\", args, environmentVars)\n\tp.Logger.LogCmd(cmd)\n\n\tptmx, err := pty.Start(cmd)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tgo func() {\n\n\t\tb := make([]byte, 100)\n\n\t\tvar e error\n\n\t\tfor {\n\t\t\tvar n int\n\t\t\tn, e = ptmx.Read(b)\n\t\t\tif e != nil {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\ts := strings.TrimSpace(string(b[0:n]))\n\n\t\t\tfor k, v := range inputs {\n\t\t\t\tif strings.HasPrefix(s, k) {\n\t\t\t\t\t_, _ = ptmx.WriteString(v + \"\\n\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}()\n\n\tdefer func() { _ = ptmx.Close() }()\n\tcb(cmd.Process)\n\terr = cmd.Wait()\n\t// Wait for all log processing to complete before returning\n\tp.Logger.WaitLog()\n\treturn err\n}\n\nfunc (p AnsiblePlaybook) RunGalaxy(args []string, environmentVars []string) error {\n\treturn p.runCmd(\"ansible-galaxy\", args, environmentVars)\n}\n\nfunc (p AnsiblePlaybook) GetFullPath() (path string) {\n\tpath = p.Repository.GetFullPath(p.TemplateID)\n\treturn\n}\n"
  },
  {
    "path": "db_lib/AppFactory.go",
    "content": "package db_lib\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\nfunc CreateApp(template db.Template, repository db.Repository, inventory db.Inventory, logger task_logger.Logger) LocalApp {\n\tswitch template.App {\n\tcase db.AppAnsible:\n\t\treturn &AnsibleApp{\n\t\t\tTemplate:   template,\n\t\t\tRepository: repository,\n\t\t\tLogger:     logger,\n\t\t\tPlaybook: &AnsiblePlaybook{\n\t\t\t\tTemplateID: template.ID,\n\t\t\t\tRepository: repository,\n\t\t\t\tLogger:     logger,\n\t\t\t},\n\t\t}\n\tcase db.AppTerraform, db.AppTofu, db.AppTerragrunt:\n\t\treturn &TerraformApp{\n\t\t\tTemplate:   template,\n\t\t\tRepository: repository,\n\t\t\tLogger:     logger,\n\t\t\tName:       string(template.App),\n\t\t\tInventory:  inventory,\n\t\t}\n\tdefault:\n\t\treturn &ShellApp{\n\t\t\tTemplate:   template,\n\t\t\tRepository: repository,\n\t\t\tLogger:     logger,\n\t\t\tApp:        template.App,\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "db_lib/CmdGitClient.go",
    "content": "package db_lib\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype CmdGitClient struct {\n\tkeyInstaller AccessKeyInstaller\n}\n\nfunc (c CmdGitClient) makeCmd(\n\tr GitRepository,\n\ttargetDir GitRepositoryDirType,\n\tinstallation ssh.AccessKeyInstallation,\n\targs ...string,\n) *exec.Cmd {\n\tcmd := exec.Command(\"git\") //nolint: gas\n\n\tcmd.Env = append(getEnvironmentVars(), installation.GetGitEnv()...)\n\n\tswitch targetDir {\n\tcase GitRepositoryTmpPath:\n\t\tcmd.Dir = util.Config.GetProjectTmpDir(r.Repository.ProjectID)\n\t\t_, err := os.Stat(cmd.Dir)\n\t\tif err != nil {\n\t\t\tif os.IsNotExist(err) {\n\t\t\t\terr = os.MkdirAll(cmd.Dir, 0755)\n\t\t\t\tif err != nil {\n\t\t\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\t\t\"context\": \"git\",\n\t\t\t\t\t}).Error(\"failed to create project temp directory\")\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\t\"context\": \"git\",\n\t\t\t\t}).Error(\"failed to check existing project temp directory\")\n\t\t\t}\n\t\t}\n\tcase GitRepositoryFullPath:\n\t\tcmd.Dir = r.GetFullPath()\n\tdefault:\n\t\tpanic(\"unknown Repository directory type\")\n\t}\n\n\tcmd.Args = append(cmd.Args, args...)\n\n\treturn cmd\n}\n\nfunc (c CmdGitClient) run(r GitRepository, targetDir GitRepositoryDirType, args ...string) error {\n\tvar err error\n\tkeyInstallation, err := c.keyInstaller.Install(r.Repository.SSHKey, db.AccessKeyRoleGit, r.Logger)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer keyInstallation.Destroy() //nolint: errcheck\n\n\tcmd := c.makeCmd(r, targetDir, keyInstallation, args...)\n\n\tr.Logger.LogCmd(cmd)\n\n\treturn cmd.Run()\n}\n\nfunc (c CmdGitClient) output(r GitRepository, targetDir GitRepositoryDirType, args ...string) (out string, err error) {\n\tkeyInstallation, err := c.keyInstaller.Install(r.Repository.SSHKey, db.AccessKeyRoleGit, r.Logger)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdefer keyInstallation.Destroy() //nolint: errcheck\n\n\tbytes, err := c.makeCmd(r, targetDir, keyInstallation, args...).Output()\n\tif err != nil {\n\t\treturn\n\t}\n\tout = strings.Trim(string(bytes), \" \\n\")\n\treturn\n}\n\nfunc (c CmdGitClient) Clone(r GitRepository) error {\n\tr.Logger.Log(\"Cloning Repository \" + r.Repository.GitURL)\n\n\tvar dirName string\n\tif r.TmpDirName == \"\" {\n\t\tdirName = r.Repository.GetDirName(r.TemplateID)\n\t} else {\n\t\tdirName = r.TmpDirName\n\t}\n\n\treturn c.run(r, GitRepositoryTmpPath,\n\t\t\"clone\",\n\t\t\"--recursive\",\n\t\t\"--branch\",\n\t\tr.Repository.GitBranch,\n\t\tr.Repository.GetGitURL(false),\n\t\tdirName)\n}\n\nfunc (c CmdGitClient) Pull(r GitRepository) error {\n\tr.Logger.Log(\"Updating Repository \" + r.Repository.GitURL)\n\n\terr := c.run(r, GitRepositoryFullPath, \"pull\", \"origin\", r.Repository.GitBranch)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn c.run(r, GitRepositoryFullPath, \"submodule\", \"update\", \"--init\", \"--recursive\")\n}\n\nfunc (c CmdGitClient) Checkout(r GitRepository, target string) error {\n\tr.Logger.Log(\"Checkout repository to \" + target)\n\n\treturn c.run(r, GitRepositoryFullPath, \"checkout\", target)\n}\n\nfunc (c CmdGitClient) CanBePulled(r GitRepository) bool {\n\terr := c.run(r, GitRepositoryFullPath, \"fetch\")\n\tif err != nil {\n\t\treturn false\n\t}\n\n\terr = c.run(r, GitRepositoryFullPath,\n\t\t\"merge-base\", \"--is-ancestor\", \"HEAD\", \"origin/\"+r.Repository.GitBranch)\n\n\treturn err == nil\n}\n\nfunc (c CmdGitClient) GetLastCommitMessage(r GitRepository) (msg string, err error) {\n\tr.Logger.Log(\"Get current commit message\")\n\n\tmsg, err = c.output(r, GitRepositoryFullPath, \"show-branch\", \"--no-name\", \"HEAD\")\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(msg) > 100 {\n\t\tmsg = msg[0:100]\n\t}\n\n\treturn\n}\n\nfunc (c CmdGitClient) GetLastCommitHash(r GitRepository) (hash string, err error) {\n\tr.Logger.Log(\"Get current commit hash\")\n\thash, err = c.output(r, GitRepositoryFullPath, \"rev-parse\", \"HEAD\")\n\treturn\n}\n\nfunc (c CmdGitClient) GetLastRemoteCommitHash(r GitRepository) (hash string, err error) {\n\tout, err := c.output(r, GitRepositoryTmpPath, \"ls-remote\", r.Repository.GetGitURL(false), r.Repository.GitBranch)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfirstSpaceIndex := strings.IndexAny(out, \"\\t \")\n\tif firstSpaceIndex == -1 {\n\t\terr = fmt.Errorf(\"can't retreave remote commit hash\")\n\t}\n\tif err != nil {\n\t\treturn\n\t}\n\n\thash = out[0:firstSpaceIndex]\n\treturn\n}\n\nfunc (c CmdGitClient) GetRemoteBranches(r GitRepository) ([]string, error) {\n\tout, err := c.output(r, GitRepositoryTmpPath, \"ls-remote\", \"--heads\", r.Repository.GetGitURL(false))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(out) == 0 {\n\t\treturn []string{}, nil\n\t}\n\n\tbranches := strings.Split(out, \"\\n\")\n\tbranchNames := getRepositoryBranchNames(branches)\n\treturn branchNames, nil\n}\n\nfunc getRepositoryBranchNames(branches []string) []string {\n\tbranchNames := make([]string, 0, len(branches))\n\n\tfor _, branch := range branches {\n\t\tparts := strings.Split(branch, \"\\t\")\n\t\tif len(parts) < 2 {\n\t\t\tcontinue\n\t\t}\n\n\t\trefPath := parts[1]\n\n\t\tif idx := strings.LastIndex(refPath, \"/\"); idx != -1 {\n\t\t\tbranchName := refPath[idx+1:]\n\t\t\tbranchNames = append(branchNames, branchName)\n\t\t}\n\t}\n\n\treturn branchNames\n}\n"
  },
  {
    "path": "db_lib/GitClientFactory.go",
    "content": "package db_lib\n\nimport \"github.com/semaphoreui/semaphore/util\"\n\nfunc CreateDefaultGitClient(keyInstaller AccessKeyInstaller) GitClient {\n\tswitch util.Config.GitClientId {\n\tcase util.GoGitClientId:\n\t\treturn CreateGoGitClient(keyInstaller)\n\tcase util.CmdGitClientId:\n\t\treturn CreateCmdGitClient(keyInstaller)\n\tdefault:\n\t\treturn CreateCmdGitClient(keyInstaller)\n\t}\n}\n\nfunc CreateGoGitClient(keyInstaller AccessKeyInstaller) GitClient {\n\treturn GoGitClient{\n\t\tkeyInstaller: keyInstaller,\n\t}\n}\n\nfunc CreateCmdGitClient(keyInstaller AccessKeyInstaller) GitClient {\n\treturn CmdGitClient{\n\t\tkeyInstaller: keyInstaller,\n\t}\n}\n"
  },
  {
    "path": "db_lib/GitRepository.go",
    "content": "package db_lib\n\nimport (\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"os\"\n\t\"path\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\ntype GitRepositoryDirType int\n\nconst (\n\tGitRepositoryTmpPath GitRepositoryDirType = iota\n\tGitRepositoryFullPath\n)\n\ntype GitClient interface {\n\tClone(r GitRepository) error\n\tPull(r GitRepository) error\n\tCheckout(r GitRepository, target string) error\n\tCanBePulled(r GitRepository) bool\n\tGetLastCommitMessage(r GitRepository) (msg string, err error)\n\tGetLastCommitHash(r GitRepository) (hash string, err error)\n\tGetLastRemoteCommitHash(r GitRepository) (hash string, err error)\n\tGetRemoteBranches(r GitRepository) ([]string, error)\n}\n\ntype GitRepository struct {\n\tTmpDirName string\n\tTemplateID int\n\tRepository db.Repository\n\tLogger     task_logger.Logger\n\tClient     GitClient\n}\n\nfunc (r GitRepository) GetFullPath() string {\n\tif r.TmpDirName != \"\" {\n\t\treturn path.Join(util.Config.GetProjectTmpDir(r.Repository.ProjectID), r.TmpDirName)\n\t}\n\treturn r.Repository.GetFullPath(r.TemplateID)\n}\n\nfunc (r GitRepository) ValidateRepo() error {\n\t_, err := os.Stat(r.GetFullPath())\n\treturn err\n}\n\nfunc (r GitRepository) Clone() error {\n\treturn r.Client.Clone(r)\n}\n\nfunc (r GitRepository) Pull() error {\n\treturn r.Client.Pull(r)\n}\n\nfunc (r GitRepository) Checkout(target string) error {\n\treturn r.Client.Checkout(r, target)\n}\n\nfunc (r GitRepository) CanBePulled() bool {\n\treturn r.Client.CanBePulled(r)\n}\n\nfunc (r GitRepository) GetLastCommitMessage() (msg string, err error) {\n\treturn r.Client.GetLastCommitMessage(r)\n}\n\nfunc (r GitRepository) GetLastCommitHash() (hash string, err error) {\n\treturn r.Client.GetLastCommitHash(r)\n}\n\nfunc (r GitRepository) GetLastRemoteCommitHash() (hash string, err error) {\n\treturn r.Client.GetLastRemoteCommitHash(r)\n}\n\nfunc (r GitRepository) GetRemoteBranches() ([]string, error) {\n\treturn r.Client.GetRemoteBranches(r)\n}\n"
  },
  {
    "path": "db_lib/GoGitClient.go",
    "content": "package db_lib\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/go-git/go-git/v5\"\n\t\"github.com/go-git/go-git/v5/config\"\n\t\"github.com/go-git/go-git/v5/plumbing\"\n\t\"github.com/go-git/go-git/v5/plumbing/transport\"\n\t\"github.com/go-git/go-git/v5/plumbing/transport/http\"\n\t\"github.com/go-git/go-git/v5/plumbing/transport/ssh\"\n\t\"github.com/go-git/go-git/v5/storage/memory\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\n\tssh2 \"golang.org/x/crypto/ssh\"\n)\n\ntype GoGitClient struct {\n\tkeyInstaller AccessKeyInstaller\n}\n\ntype ProgressWrapper struct {\n\tLogger task_logger.Logger\n}\n\nfunc (t ProgressWrapper) Write(p []byte) (n int, err error) {\n\ts := string(p)\n\n\tif strings.HasPrefix(s, \"Counting objects:\") || strings.HasPrefix(s, \"Compressing objects:\") {\n\t\treturn len(p), nil\n\t}\n\n\tt.Logger.Log(string(p))\n\treturn len(p), nil\n}\n\nfunc (c GoGitClient) getAuthMethod(r GitRepository) (transport.AuthMethod, error) {\n\tswitch r.Repository.SSHKey.Type {\n\tcase db.AccessKeySSH:\n\n\t\tinstall, err := c.keyInstaller.Install(r.Repository.SSHKey, db.AccessKeyRoleGit, r.Logger)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tdefer install.Destroy()\n\n\t\tvar sshKeyBuff = r.Repository.SSHKey.SshKey.PrivateKey\n\n\t\tif r.Repository.SSHKey.SshKey.Login == \"\" {\n\t\t\tr.Repository.SSHKey.SshKey.Login = \"git\"\n\t\t}\n\n\t\tpublicKey, sshErr := ssh.NewPublicKeys(r.Repository.SSHKey.SshKey.Login, []byte(sshKeyBuff), r.Repository.SSHKey.SshKey.Passphrase)\n\n\t\tif sshErr != nil {\n\t\t\treturn nil, sshErr\n\t\t}\n\t\tpublicKey.HostKeyCallback = ssh2.InsecureIgnoreHostKey()\n\n\t\treturn publicKey, sshErr\n\tcase db.AccessKeyLoginPassword:\n\t\tpassword := &http.BasicAuth{\n\t\t\tUsername: r.Repository.SSHKey.LoginPassword.Login,\n\t\t\tPassword: r.Repository.SSHKey.LoginPassword.Password,\n\t\t}\n\n\t\treturn password, nil\n\tcase db.AccessKeyNone:\n\t\treturn nil, nil\n\tdefault:\n\t\treturn nil, errors.New(\"unsupported auth method\")\n\t}\n}\n\nfunc openRepository(r GitRepository, targetDir GitRepositoryDirType) (*git.Repository, error) {\n\n\tvar dir string\n\n\tswitch targetDir {\n\tcase GitRepositoryTmpPath:\n\t\tdir = util.Config.GetProjectTmpDir(r.Repository.ProjectID)\n\tcase GitRepositoryFullPath:\n\t\tdir = r.GetFullPath()\n\tdefault:\n\t\tpanic(\"unknown Repository directory type\")\n\t}\n\n\treturn git.PlainOpen(dir)\n}\n\nfunc (c GoGitClient) Clone(r GitRepository) error {\n\tr.Logger.Log(\"Cloning Repository \" + r.Repository.GitURL)\n\n\tauthMethod, authErr := c.getAuthMethod(r)\n\n\tif authErr != nil {\n\t\treturn authErr\n\t}\n\n\tcloneOpt := &git.CloneOptions{\n\t\tURL:               r.Repository.GetGitURL(true),\n\t\tProgress:          ProgressWrapper{r.Logger},\n\t\tRecurseSubmodules: git.DefaultSubmoduleRecursionDepth,\n\t\tReferenceName:     plumbing.NewBranchReferenceName(r.Repository.GitBranch),\n\t\tAuth:              authMethod,\n\t}\n\n\t_, err := git.PlainClone(r.GetFullPath(), false, cloneOpt)\n\tif err != nil {\n\t\tr.Logger.Log(\"Unable to clone repository: \" + err.Error())\n\t}\n\n\treturn err\n}\n\nfunc (c GoGitClient) Pull(r GitRepository) error {\n\tr.Logger.Log(\"Updating Repository \" + r.Repository.GitURL)\n\n\trep, err := openRepository(r, GitRepositoryFullPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\twt, err := rep.Worktree()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tauthMethod, authErr := c.getAuthMethod(r)\n\tif authErr != nil {\n\t\treturn authErr\n\t}\n\n\t// Pull the latest changes from the origin remote and merge into the current branch\n\terr = wt.Pull(&git.PullOptions{RemoteName: \"origin\",\n\t\tAuth:              authMethod,\n\t\tRecurseSubmodules: git.DefaultSubmoduleRecursionDepth})\n\tif err != nil && err != git.NoErrAlreadyUpToDate {\n\t\tr.Logger.Log(\"Unable to pull latest changes\")\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (c GoGitClient) Checkout(r GitRepository, target string) error {\n\tr.Logger.Log(\"Checkout repository to \" + target)\n\n\trep, err := openRepository(r, GitRepositoryFullPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\twt, err := rep.Worktree()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = wt.Checkout(&git.CheckoutOptions{\n\t\tHash: plumbing.NewHash(target),\n\t})\n\n\treturn err\n}\n\nfunc (c GoGitClient) CanBePulled(r GitRepository) bool {\n\n\trep, err := openRepository(r, GitRepositoryFullPath)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tauthMethod, err := c.getAuthMethod(r)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\terr = rep.Fetch(&git.FetchOptions{\n\t\tAuth: authMethod,\n\t})\n\n\tif err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) {\n\t\treturn false\n\t}\n\n\thead, err := rep.Head()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\theadCommit, err := rep.CommitObject(head.Hash())\n\tif err != nil {\n\t\treturn false\n\t}\n\n\thash, err := rep.ResolveRevision(plumbing.Revision(\"origin/\" + r.Repository.GitBranch))\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tlastCommit, err := rep.CommitObject(*hash)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tisAncestor, err := headCommit.IsAncestor(lastCommit)\n\treturn isAncestor && err == nil\n}\n\nfunc (c GoGitClient) GetLastCommitMessage(r GitRepository) (msg string, err error) {\n\tr.Logger.Log(\"Get current commit message\")\n\n\trep, err := openRepository(r, GitRepositoryFullPath)\n\tif err != nil {\n\t\treturn\n\t}\n\n\theadRef, err := rep.Head()\n\tif err != nil {\n\t\treturn\n\t}\n\theadCommit, err := rep.CommitObject(headRef.Hash())\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmsg = headCommit.Message\n\tif len(msg) > 100 {\n\t\tmsg = msg[0:100]\n\t}\n\n\tr.Logger.Log(\"Message: \" + msg)\n\n\treturn\n}\n\nfunc (c GoGitClient) GetLastCommitHash(r GitRepository) (hash string, err error) {\n\tr.Logger.Log(\"Get current commit hash\")\n\n\trep, err := openRepository(r, GitRepositoryFullPath)\n\tif err != nil {\n\t\treturn\n\t}\n\n\theadRef, err := rep.Head()\n\tif err != nil {\n\t\treturn\n\t}\n\thash = headRef.Hash().String()\n\treturn\n}\n\nfunc (c GoGitClient) GetLastRemoteCommitHash(r GitRepository) (hash string, err error) {\n\n\trem := git.NewRemote(memory.NewStorage(), &config.RemoteConfig{\n\t\tName: \"origin\",\n\t\tURLs: []string{r.Repository.GitURL},\n\t})\n\n\tauth, err := c.getAuthMethod(r)\n\tif err != nil {\n\t\treturn\n\t}\n\n\trefs, err := rem.List(&git.ListOptions{\n\t\tAuth: auth,\n\t})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar lastRemoteRef *plumbing.Reference\n\n\tfor _, rf := range refs {\n\n\t\tif rf.Name().Short() == r.Repository.GitBranch {\n\t\t\tlastRemoteRef = rf\n\t\t}\n\t}\n\n\tif lastRemoteRef != nil {\n\t\thash = lastRemoteRef.Hash().String()\n\t}\n\n\treturn\n}\n\nfunc (c GoGitClient) GetRemoteBranches(r GitRepository) ([]string, error) {\n\tremote := git.NewRemote(memory.NewStorage(), &config.RemoteConfig{\n\t\tName: \"origin\",\n\t\tURLs: []string{r.Repository.GitURL},\n\t})\n\n\tauth, err := c.getAuthMethod(r)\n\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create SSH auth method: %w\", err)\n\t}\n\n\tlistOptions := &git.ListOptions{}\n\tif auth != nil {\n\t\tlistOptions.Auth = auth\n\t}\n\n\trefs, err := remote.List(listOptions)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to list remote references: %w\", err)\n\t}\n\n\tbranches := make([]string, 0, len(refs))\n\tfor _, ref := range refs {\n\t\tif ref.Name().IsBranch() {\n\t\t\tbranches = append(branches, ref.Name().Short())\n\t\t}\n\t}\n\treturn branches, nil\n}\n"
  },
  {
    "path": "db_lib/LocalApp.go",
    "content": "package db_lib\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\n// getHomeDir returns the HOME directory value for a task based on the configured\n// HomeDirMode. For \"project_home\" it returns the project tmp directory.\n// For \"template_dir\" and \"user_home\" it returns the real user HOME (no override).\nfunc getHomeDir(repo db.Repository, templateID int) string {\n\tswitch util.Config.HomeDirMode {\n\tcase util.HomeDirModeProjectHome:\n\t\treturn util.Config.GetProjectTmpDir(repo.ProjectID)\n\tcase util.HomeDirModeTemplateDir, util.HomeDirModeUserHome:\n\t\treturn os.Getenv(\"HOME\")\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nfunc getEnvironmentVars() []string {\n\tres := []string{\n\t\tfmt.Sprintf(\"PATH=%s\", os.Getenv(\"PATH\")),\n\t}\n\n\tfor _, e := range util.Config.ForwardedEnvVars {\n\t\tv := os.Getenv(e)\n\t\tif v != \"\" {\n\t\t\tres = append(res, fmt.Sprintf(\"%s=%s\", e, v))\n\t\t}\n\t}\n\n\tfor k, v := range util.Config.EnvVars {\n\t\tres = append(res, fmt.Sprintf(\"%s=%s\", k, v))\n\t}\n\n\treturn res\n}\n\ntype LocalAppRunningArgs struct {\n\tCliArgs         map[string][]string // Stage-specific args (e.g., \"init\", \"apply\", \"default\")\n\tEnvironmentVars []string\n\tInputs          map[string]string\n\tTaskParams      any\n\tTemplateParams  any\n\tCallback        func(*os.Process)\n}\n\ntype LocalAppInstallingArgs struct {\n\tEnvironmentVars []string\n\tTplParams       any\n\tParams          any\n\tInstaller       AccessKeyInstaller\n}\n\ntype LocalApp interface {\n\tSetLogger(logger task_logger.Logger) task_logger.Logger\n\tInstallRequirements(args LocalAppInstallingArgs) error\n\tRun(args LocalAppRunningArgs) error\n\tClear()\n}\n"
  },
  {
    "path": "db_lib/LocalApp_test.go",
    "content": "package db_lib\n\nimport (\n\t\"os\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\n// contains checks if a slice contains a specific string\nfunc contains(slice []string, item string) bool {\n\tfor _, s := range slice {\n\t\tif strings.HasPrefix(s, item) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc TestGetEnvironmentVars(t *testing.T) {\n\tos.Setenv(\"SEMAPHORE_TEST\", \"test123\")  //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_TEST2\", \"test222\") //nolint:errcheck\n\tos.Setenv(\"PASSWORD\", \"test222\")        //nolint:errcheck\n\n\tutil.Config = &util.ConfigType{\n\t\tForwardedEnvVars: []string{\"SEMAPHORE_TEST\"},\n\t\tEnvVars: map[string]string{\n\t\t\t\"ANSIBLE_FORCE_COLOR\": \"False\",\n\t\t},\n\t}\n\n\tres := getEnvironmentVars()\n\n\texpected := []string{\n\t\t\"SEMAPHORE_TEST=test123\",\n\t\t\"ANSIBLE_FORCE_COLOR=False\",\n\t\t\"PATH=\",\n\t}\n\n\tif len(res) != len(expected) {\n\t\tt.Errorf(\"Expected %v, got %v\", expected, res)\n\t}\n\n\tfor _, e := range expected {\n\t\tif !contains(res, e) {\n\t\t\tt.Errorf(\"Expected %v, got %v\", expected, res)\n\t\t}\n\t}\n}\n\nfunc TestGetHomeDir(t *testing.T) {\n\trepo := db.Repository{\n\t\tProjectID: 42,\n\t}\n\ttemplateID := 114\n\n\t// Set a known HOME value for testing\n\toriginalHome := os.Getenv(\"HOME\")\n\ttestHome := \"/home/testuser\"\n\tos.Setenv(\"HOME\", testHome) //nolint:errcheck\n\tdefer os.Setenv(\"HOME\", originalHome) //nolint:errcheck\n\n\t// Save original config and restore after all tests\n\toriginalConfig := util.Config\n\tdefer func() { util.Config = originalConfig }()\n\n\ttests := []struct {\n\t\tname         string\n\t\thomeDirMode  string\n\t\ttmpPath      string\n\t\texpectedHome string\n\t\tdescription  string\n\t}{\n\t\t{\n\t\t\tname:         \"ProjectHome mode\",\n\t\t\thomeDirMode:  util.HomeDirModeProjectHome,\n\t\t\ttmpPath:      \"/tmp/semaphore\",\n\t\t\texpectedHome: \"/tmp/semaphore/project_42\",\n\t\t\tdescription:  \"Should return project temp directory\",\n\t\t},\n\t\t{\n\t\t\tname:         \"TemplateDir mode\",\n\t\t\thomeDirMode:  util.HomeDirModeTemplateDir,\n\t\t\ttmpPath:      \"/tmp/semaphore\",\n\t\t\texpectedHome: testHome,\n\t\t\tdescription:  \"Should return real user HOME\",\n\t\t},\n\t\t{\n\t\t\tname:         \"UserHome mode\",\n\t\t\thomeDirMode:  util.HomeDirModeUserHome,\n\t\t\ttmpPath:      \"/tmp/semaphore\",\n\t\t\texpectedHome: testHome,\n\t\t\tdescription:  \"Should return real user HOME\",\n\t\t},\n\t\t{\n\t\t\tname:         \"Empty/default mode\",\n\t\t\thomeDirMode:  \"\",\n\t\t\ttmpPath:      \"/tmp/semaphore\",\n\t\t\texpectedHome: \"\",\n\t\t\tdescription:  \"Should return empty string for unknown mode\",\n\t\t},\n\t}\n\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\t// Setup config for this test case\n\t\t\tutil.Config = &util.ConfigType{\n\t\t\t\tHomeDirMode: tt.homeDirMode,\n\t\t\t\tTmpPath:     tt.tmpPath,\n\t\t\t}\n\n\t\t\t// Call getHomeDir\n\t\t\tresult := getHomeDir(repo, templateID)\n\n\t\t\t// Verify the result\n\t\t\tif result != tt.expectedHome {\n\t\t\t\tt.Errorf(\"%s: expected HOME=%s, got HOME=%s\",\n\t\t\t\t\ttt.description, tt.expectedHome, result)\n\t\t\t}\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "db_lib/ShellApp.go",
    "content": "package db_lib\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype ShellApp struct {\n\tLogger     task_logger.Logger\n\tTemplate   db.Template\n\tRepository db.Repository\n\tApp        db.TemplateApp\n\treader     bashReader\n}\n\ntype bashReader struct {\n\tinput  *string\n\tlogger task_logger.Logger\n}\n\nfunc (r *bashReader) Read(p []byte) (n int, err error) {\n\n\tr.logger.SetStatus(task_logger.TaskWaitingConfirmation)\n\n\tfor {\n\t\ttime.Sleep(time.Second * 3)\n\t\tif r.input != nil {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tcopy(p, *r.input+\"\\n\")\n\tr.logger.SetStatus(task_logger.TaskRunningStatus)\n\treturn len(*r.input) + 1, nil\n}\n\nfunc (t *ShellApp) makeCmd(command string, args []string, environmentVars []string) *exec.Cmd {\n\tcmd := exec.Command(command, args...) //nolint: gas\n\tcmd.Dir = t.GetFullPath()\n\n\tcmd.Env = getEnvironmentVars()\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"HOME=%s\", getHomeDir(t.Repository, t.Template.ID)))\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"PWD=%s\", cmd.Dir))\n\tcmd.Env = append(cmd.Env, environmentVars...)\n\n\tcmd.SysProcAttr = util.Config.GetSysProcAttr()\n\n\treturn cmd\n}\n\nfunc (t *ShellApp) runCmd(command string, args []string) error {\n\tcmd := t.makeCmd(command, args, nil)\n\tt.Logger.LogCmd(cmd)\n\treturn cmd.Run()\n}\n\nfunc (t *ShellApp) GetFullPath() (path string) {\n\tpath = t.Repository.GetFullPath(t.Template.ID)\n\treturn\n}\n\nfunc (t *ShellApp) SetLogger(logger task_logger.Logger) task_logger.Logger {\n\tt.Logger = logger\n\tt.Logger.AddStatusListener(func(status task_logger.TaskStatus) {\n\n\t})\n\tt.reader.logger = logger\n\treturn logger\n}\n\nfunc (t *ShellApp) Clear() {\n}\n\nfunc (t *ShellApp) InstallRequirements(args LocalAppInstallingArgs) error {\n\treturn nil\n}\n\nfunc (t *ShellApp) makeShellCmd(args []string, environmentVars []string) *exec.Cmd {\n\tvar command string\n\tvar appArgs []string\n\tswitch t.App {\n\tcase db.AppBash:\n\t\tcommand = \"bash\"\n\tcase db.AppPython:\n\t\tcommand = \"python3\"\n\tcase db.AppPowerShell:\n\t\tcommand = \"powershell\"\n\t\tappArgs = []string{\"-File\"}\n\tdefault:\n\t\tcommand = string(t.App)\n\t}\n\n\tif app, ok := util.Config.Apps[string(t.App)]; ok {\n\t\tif app.AppPath != \"\" {\n\t\t\tcommand = app.AppPath\n\t\t}\n\t\tif app.AppArgs != nil {\n\t\t\tappArgs = app.AppArgs\n\t\t}\n\t}\n\n\treturn t.makeCmd(command, append(appArgs, args...), environmentVars)\n}\n\nfunc (t *ShellApp) Run(args LocalAppRunningArgs) error {\n\t// Use \"default\" key for backward compatibility\n\tcliArgs := args.CliArgs[\"default\"]\n\tcmd := t.makeShellCmd(cliArgs, args.EnvironmentVars)\n\tt.Logger.LogCmd(cmd)\n\t//cmd.Stdin = &t.reader\n\tcmd.Stdin = strings.NewReader(\"\")\n\terr := cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\targs.Callback(cmd.Process)\n\terr = cmd.Wait()\n\t// Wait for all log processing to complete before returning\n\tt.Logger.WaitLog()\n\treturn err\n}\n"
  },
  {
    "path": "db_lib/TerraformApp.go",
    "content": "package db_lib\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype TerraformApp struct {\n\tLogger           task_logger.Logger\n\tTemplate         db.Template\n\tRepository       db.Repository\n\tInventory        db.Inventory\n\treader           terraformReader // reader\n\tName             string          // Name is the name of the terraform binary\n\tPlanHasNoChanges bool            // PlanHasNoChanges is true if terraform plan has no changes\n\tbackendFilename  string          // backendFilename is the name of the backend file\n}\n\ntype terraformReader struct {\n\tEOF    bool\n\tstatus task_logger.TaskStatus\n\tlogger task_logger.Logger\n}\n\nfunc (r *terraformReader) Read(p []byte) (n int, err error) {\n\tif r.EOF {\n\t\treturn 0, io.EOF\n\t}\n\n\tif r.status != task_logger.TaskWaitingConfirmation {\n\t\ttime.Sleep(time.Second * 3)\n\t\treturn 0, nil\n\t}\n\n\tfor {\n\t\ttime.Sleep(time.Second * 3)\n\t\tif r.status.IsFinished() ||\n\t\t\tr.status == task_logger.TaskConfirmed ||\n\t\t\tr.status == task_logger.TaskRejected {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tr.EOF = true\n\n\tswitch r.status {\n\tcase task_logger.TaskConfirmed:\n\t\tcopy(p, \"yes\\n\")\n\t\tr.logger.SetStatus(task_logger.TaskRunningStatus)\n\t\treturn 4, nil\n\tcase task_logger.TaskRejected:\n\t\tcopy(p, \"no\\n\")\n\t\tr.logger.SetStatus(task_logger.TaskRunningStatus)\n\t\treturn 3, nil\n\tdefault:\n\t\tcopy(p, \"\\n\")\n\t\treturn 1, nil\n\t}\n}\n\nfunc (t *TerraformApp) makeCmd(command string, args []string, environmentVars []string) *exec.Cmd {\n\n\tif app, ok := util.Config.Apps[t.Name]; ok {\n\t\tif app.AppPath != \"\" {\n\t\t\tcommand = app.AppPath\n\t\t}\n\t\tif app.AppArgs != nil {\n\t\t\targs = append(app.AppArgs, args...)\n\t\t}\n\t}\n\n\tif t.Name == string(db.AppTerragrunt) {\n\t\thasTfPath := false\n\t\tfor i := 0; i < len(args); i++ {\n\t\t\ta := args[i]\n\t\t\tif a == \"--tf-path\" || strings.HasPrefix(a, \"--tf-path=\") {\n\t\t\t\thasTfPath = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !hasTfPath {\n\t\t\targs = append(args, \"--tf-path=terraform\")\n\t\t}\n\t}\n\n\tcmd := exec.Command(command, args...) //nolint: gas\n\tcmd.Dir = t.GetFullPath()\n\n\tcmd.Env = getEnvironmentVars()\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"HOME=%s\", getHomeDir(t.Repository, t.Template.ID)))\n\tcmd.Env = append(cmd.Env, fmt.Sprintf(\"PWD=%s\", cmd.Dir))\n\n\tif environmentVars != nil {\n\t\tcmd.Env = append(cmd.Env, environmentVars...)\n\t}\n\n\tcmd.SysProcAttr = util.Config.GetSysProcAttr()\n\n\treturn cmd\n}\n\nfunc (t *TerraformApp) runCmd(command string, args []string) error {\n\tcmd := t.makeCmd(command, args, nil)\n\tt.Logger.LogCmd(cmd)\n\treturn cmd.Run()\n}\n\nfunc (t *TerraformApp) GetFullPath() string {\n\treturn path.Join(t.Repository.GetFullPath(t.Template.ID), strings.TrimPrefix(t.Template.Playbook, \"/\"))\n}\n\nfunc (t *TerraformApp) SetLogger(logger task_logger.Logger) task_logger.Logger {\n\tlogger.AddStatusListener(func(status task_logger.TaskStatus) {\n\t\tt.reader.status = status\n\t})\n\n\tt.reader.logger = logger\n\tt.Logger = logger\n\treturn logger\n}\n\nfunc (t *TerraformApp) init(environmentVars []string, keyInstaller AccessKeyInstaller, params *db.TerraformTaskParams, extraArgs []string) error {\n\n\tkeyInstallation, err := keyInstaller.Install(t.Inventory.SSHKey, db.AccessKeyRoleGit, t.Logger)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer keyInstallation.Destroy() //nolint: errcheck\n\n\targs := []string{\"init\", \"-lock=false\"}\n\n\tif params.Upgrade {\n\t\targs = append(args, \"-upgrade\")\n\t}\n\n\tif params.Reconfigure {\n\t\targs = append(args, \"-reconfigure\")\n\t} else {\n\t\targs = append(args, \"-migrate-state\")\n\t}\n\n\t// Add extra args specific to init stage\n\tif extraArgs != nil {\n\t\targs = append(args, extraArgs...)\n\t}\n\n\tcmd := t.makeCmd(t.Name, args, environmentVars)\n\tcmd.Env = append(cmd.Env, keyInstallation.GetGitEnv()...)\n\tt.Logger.LogCmd(cmd)\n\n\tt.Logger.AddLogListener(func(new time.Time, msg string) {\n\t\ts := strings.TrimSpace(msg)\n\t\tif strings.Contains(s, \"Do you want to copy \") {\n\t\t\tt.Logger.SetStatus(task_logger.TaskWaitingConfirmation)\n\t\t} else if strings.Contains(msg, \"has been successfully initialized!\") ||\n\t\t\tstrings.Contains(msg, \"Error:\") {\n\t\t\tt.reader.EOF = true\n\t\t}\n\t})\n\n\tcmd.Stdin = &t.reader\n\terr = cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tt.Logger.WaitLog()\n\treturn nil\n}\n\nfunc (t *TerraformApp) isWorkspacesSupported(environmentVars []string) bool {\n\targs := []string{\"workspace\", \"list\"}\n\n\tcmd := t.makeCmd(t.Name, args, environmentVars)\n\terr := cmd.Run()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\nfunc (t *TerraformApp) selectWorkspace(workspace string, environmentVars []string) error {\n\targs := []string{\"workspace\", \"select\", \"-or-create=true\", workspace}\n\tif t.Name == string(db.AppTerragrunt) {\n\n\t\ttgArgs := []string{\"run\"}\n\n\t\thasTfPath := false\n\t\tfor i := 0; i < len(tgArgs); i++ {\n\t\t\ta := tgArgs[i]\n\t\t\tif a == \"--tf-path\" || strings.HasPrefix(a, \"--tf-path=\") {\n\t\t\t\thasTfPath = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !hasTfPath {\n\t\t\ttgArgs = append(tgArgs, \"--tf-path=terraform\")\n\t\t}\n\n\t\ttgArgs = append(tgArgs, \"--\")\n\n\t\targs = append(tgArgs, args...)\n\t}\n\tcmd := t.makeCmd(t.Name, args, environmentVars)\n\tt.Logger.LogCmd(cmd)\n\n\terr := cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tt.Logger.WaitLog()\n\treturn nil\n}\n\nfunc (t *TerraformApp) Clear() {\n\tif t.backendFilename == \"\" {\n\t\treturn\n\t}\n\n\terr := os.Remove(path.Join(t.GetFullPath(), t.backendFilename))\n\tif os.IsNotExist(err) {\n\t\terr = nil\n\t}\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": \"terraform\",\n\t\t\t\"task_id\": t.Template.ID,\n\t\t}).Warn(\"Unable to remove backend file\")\n\t}\n}\n\ntype TerraformInstallRequirementsArgs struct {\n\tLocalAppInstallingArgs\n\tInitArgs []string // Stage-specific args for init\n}\n\nfunc (t *TerraformApp) InstallRequirements(args LocalAppInstallingArgs) (err error) {\n\treturn t.InstallRequirementsWithInitArgs(args, nil)\n}\n\nfunc (t *TerraformApp) InstallRequirementsWithInitArgs(args LocalAppInstallingArgs, initArgs []string) (err error) {\n\n\ttpl := args.TplParams.(*db.TerraformTemplateParams)\n\tp := args.Params.(*db.TerraformTaskParams)\n\n\tif tpl.OverrideBackend {\n\t\tt.backendFilename = \"backend.tf\"\n\t\tif tpl.BackendFilename != \"\" {\n\t\t\tt.backendFilename = tpl.BackendFilename\n\t\t}\n\n\t\tbackendFile := path.Join(t.GetFullPath(), t.backendFilename)\n\t\terr = os.WriteFile(backendFile, []byte(\"terraform {\\n  backend \\\"http\\\" {\\n  }\\n}\\n\"), 0644)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif err = t.init(args.EnvironmentVars, args.Installer, p, initArgs); err != nil {\n\t\treturn\n\t}\n\n\tworkspace := \"default\"\n\n\tif t.Inventory.Inventory != \"\" {\n\t\tworkspace = t.Inventory.Inventory\n\t}\n\n\tif !t.isWorkspacesSupported(args.EnvironmentVars) {\n\t\treturn\n\t}\n\n\terr = t.selectWorkspace(workspace, args.EnvironmentVars)\n\treturn\n}\n\nfunc (t *TerraformApp) Plan(args []string, environmentVars []string, inputs map[string]string, cb func(*os.Process)) error {\n\tplanArgs := []string{\"plan\", \"-lock=false\"}\n\tplanArgs = append(planArgs, args...)\n\tcmd := t.makeCmd(t.Name, planArgs, environmentVars)\n\tt.Logger.LogCmd(cmd)\n\n\tt.reader.logger.AddLogListener(func(new time.Time, msg string) {\n\t\tif strings.Contains(msg, \"No changes.\") {\n\t\t\tt.PlanHasNoChanges = true\n\t\t}\n\t})\n\n\tcmd.Stdin = strings.NewReader(\"\")\n\terr := cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcb(cmd.Process)\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tt.Logger.WaitLog()\n\treturn nil\n}\n\nfunc (t *TerraformApp) Apply(args []string, environmentVars []string, inputs map[string]string, cb func(*os.Process)) error {\n\tapplyArgs := []string{\"apply\", \"-auto-approve\", \"-lock=false\"}\n\tapplyArgs = append(applyArgs, args...)\n\tcmd := t.makeCmd(t.Name, applyArgs, environmentVars)\n\tt.Logger.LogCmd(cmd)\n\tcmd.Stdin = strings.NewReader(\"\")\n\terr := cmd.Start()\n\tif err != nil {\n\t\treturn err\n\t}\n\tcb(cmd.Process)\n\n\terr = cmd.Wait()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tt.Logger.WaitLog()\n\treturn nil\n}\n\nfunc (t *TerraformApp) Run(args LocalAppRunningArgs) error {\n\t// Determine which args to use for plan and apply stages\n\tvar planArgs []string\n\tvar applyArgs []string\n\n\t// Use stage-specific args from map, with \"default\" fallback\n\tif pArgs, ok := args.CliArgs[\"plan\"]; ok {\n\t\tplanArgs = pArgs\n\t} else if aArgs, ok := args.CliArgs[\"apply\"]; ok {\n\t\tapplyArgs = aArgs\n\t} else if defaultArgs, ok := args.CliArgs[\"default\"]; ok {\n\t\tplanArgs = defaultArgs\n\t}\n\n\tif aArgs, ok := args.CliArgs[\"apply\"]; ok {\n\t\tapplyArgs = aArgs\n\t} else if defaultArgs, ok := args.CliArgs[\"default\"]; ok {\n\t\tapplyArgs = defaultArgs\n\t}\n\n\terr := t.Plan(planArgs, args.EnvironmentVars, args.Inputs, args.Callback)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tparams := args.TaskParams.(*db.TerraformTaskParams)\n\ttplParams := args.TemplateParams.(*db.TerraformTemplateParams)\n\n\tif t.PlanHasNoChanges || params.Plan {\n\t\tt.Logger.SetStatus(task_logger.TaskSuccessStatus)\n\t\treturn nil\n\t}\n\n\tif tplParams.AutoApprove || tplParams.AllowAutoApprove && params.AutoApprove {\n\t\tt.Logger.SetStatus(task_logger.TaskRunningStatus)\n\t\treturn t.Apply(applyArgs, args.EnvironmentVars, args.Inputs, args.Callback)\n\t}\n\n\tt.Logger.SetStatus(task_logger.TaskWaitingConfirmation)\n\n\tfor {\n\t\ttime.Sleep(time.Second * 3)\n\t\tif t.reader.status.IsFinished() ||\n\t\t\tt.reader.status == task_logger.TaskConfirmed ||\n\t\t\tt.reader.status == task_logger.TaskRejected {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tswitch t.reader.status {\n\tcase task_logger.TaskRejected:\n\t\tt.Logger.SetStatus(task_logger.TaskFailStatus)\n\tcase task_logger.TaskConfirmed:\n\t\tt.Logger.SetStatus(task_logger.TaskRunningStatus)\n\t\treturn t.Apply(applyArgs, args.EnvironmentVars, args.Inputs, args.Callback)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "deployment/compose/README.md",
    "content": "# Compose\n\nWith the `docker-compose` snippets within this directory you are able to plug\ndifferent setups of Semaphore UI together. Below you can find some example\ncombinations.\n\nSome of the snippets define environment variables which could be optionally\noverwritten if needed.\n\n## Server\n\nFirst of all we need the server definition and we need to decide if we want to\nbuild the image dynamically or if we just want to use a released image.\n\n### Build\n\nThis simply takes the currently cloned source and builds a new image including\nall local changes.\n\n```console\ndocker-compose -f deployment/compose/server/base.yml -f deployment/compose/server/build.yml up\n```\n\n### Image\n\nThis simply downloads the defined image from DockerHub and starts/configures it\nproperly based on the integrated bootstrapping scripts.\n\n```console\ndocker-compose -f deployment/compose/server/base.yml -f deployment/compose/server/image.yml up\n```\n\n### Config\n\nIf you want to provide a custom `config.json` file to add options which are not\nexposed as environment variables you could add this snippet which sources the\nfile from the current working directory.\n\n```console\ndocker-compose <server from above> -f deployment/compose/server/config.yml up\n```\n\n## Runner\n\nIf you want to try the remote runner functionality of Semaphore you could just\nadd this snippet to get a runner up and connected to semaphore. Similar to the\nexamples above for the server you got different options like building the runner\nfrom the source or using our prebuilt images.\n\n### Build\n\nThis simply takes the currently cloned source and builds a new image including\nall local changes.\n\n```console\ndocker-compose <server from above> -f deployment/compose/runner/base.yml -f deployment/compose/runner/build.yml up\n```\n\n### Image\n\nThis simply downloads the defined image from DockerHub and starts/configures it\nproperly based on the integrated bootstrapping scripts.\n\n```console\ndocker-compose <server from above> -f deployment/compose/runner/base.yml -f deployment/compose/runner/image.yml up\n```\n\n### Config\n\nIf you want to provide a custom `config.json` file to add options which are not\nexposed as environment variables you could add this snippet which sources the\nfile from the current working directory.\n\n```console\ndocker-compose <runner from above> -f deployment/compose/runner/config.yml up\n```\n\n## Database\n\nAfter deciding the base of it you should choose one of the supported databases.\nHere we got currently the following options so far.\n\n### SQLite\n\nThis simply configures a named volume for the SQLite storage used as a database\nbackend.\n\n```console\ndocker-compose <server/runner from above> -f deployment/compose/store/sqlite.yml up\n```\n\n### BoltDB\n\nThis simply configures a named volume for the BoltDB storage used as a database\nbackend.\n\n```console\ndocker-compose <server/runner from above> -f deployment/compose/store/boltdb.yml up\n```\n\n### MariaDB\n\nThis simply starts an additional container for a MariaDB instance used as a\ndatabase backend including the required credentials.\n\n```console\ndocker-compose <server/runner from above> -f deployment/compose/store/mariadb.yml up\n```\n\n### MySQL\n\nThis simply starts an additional container for a MySQL instance used as a\ndatabase backend including the required credentials.\n\n```console\ndocker-compose <server/runner from above> -f deployment/compose/store/mysql.yml up\n```\n\n### PostgreSQL\n\nThis simply starts an additional container for a PostgreSQL instance used as a\ndatabase backend including the required credentials.\n\n```console\ndocker-compose <server/runner from above> -f deployment/compose/store/postgres.yml up\n```\n\n## Cleanup\n\nAfter playing with the setup you are able to stop the whole setup by just\nreplacing `up` at the end of the command with `down`.\n"
  },
  {
    "path": "deployment/compose/dredd/base.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  dredd:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_ADMIN_PASSWORD: password\n      SEMAPHORE_ADMIN_NAME: Developer\n      SEMAPHORE_ADMIN_EMAIL: admin@localhost\n      SEMAPHORE_ADMIN: admin\n      SEMAPHORE_WEB_ROOT: http://0.0.0.0:3000\n\n  dredd:\n    build:\n      context: ../../../\n      dockerfile: deployment/docker/dredd/Dockerfile\n    command:\n      - --config\n      - .dredd/dredd.docker.yml\n    environment:\n      SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${SEMAPHORE_ACCESS_KEY_ENCRYPTION:-IlRqgrrO5Gp27MlWakDX1xVrPv4jhoUx+ARY+qGyDxQ=}\n    volumes:\n      - dredd:/data\n"
  },
  {
    "path": "deployment/compose/dredd/boltdb.yml",
    "content": "version: \"3.4\"\n\nservices:\n  dredd:\n    environment:\n      SEMAPHORE_DB_DIALECT: bolt\n      SEMAPHORE_DB_CONFIG: '{\"host\": \"/data/database.boltdb\"}'\n    depends_on:\n      - server\n"
  },
  {
    "path": "deployment/compose/dredd/mariadb.yml",
    "content": "version: \"3.4\"\n\nservices:\n  dredd:\n    environment:\n      SEMAPHORE_DB_DIALECT: mysql\n      SEMAPHORE_DB_CONFIG: '{\"host\": \"db:3306\",\"user\": \"semaphore\",\"pass\": \"semaphore\",\"name\": \"semaphore\"}'\n    depends_on:\n      - server\n      - db\n"
  },
  {
    "path": "deployment/compose/dredd/mysql.yml",
    "content": "version: \"3.4\"\n\nservices:\n  dredd:\n    environment:\n      SEMAPHORE_DB_DIALECT: mysql\n      SEMAPHORE_DB_CONFIG: '{\"host\": \"db:3306\",\"user\": \"semaphore\",\"pass\": \"semaphore\",\"name\": \"semaphore\"}'\n    depends_on:\n      - server\n      - db\n"
  },
  {
    "path": "deployment/compose/dredd/postgres.yml",
    "content": "version: \"3.4\"\n\nservices:\n  dredd:\n    environment:\n      SEMAPHORE_DB_DIALECT: postgres\n      SEMAPHORE_DB_CONFIG: '{\"host\": \"db:5432\",\"user\": \"semaphore\",\"pass\": \"semaphore\",\"name\": \"semaphore\",\"options\": {\"sslmode\": \"disable\"}}'\n    depends_on:\n      - server\n      - db\n"
  },
  {
    "path": "deployment/compose/dredd/sqlite.yml",
    "content": "version: \"3.4\"\n\nservices:\n  dredd:\n    environment:\n      SEMAPHORE_DB_DIALECT: sqlite\n      SEMAPHORE_DB_CONFIG: '{\"host\": \"/data/database.sqlite3\"}'\n    depends_on:\n      - server\n"
  },
  {
    "path": "deployment/compose/runner/base.yml",
    "content": "version: \"3.4\"\n\nservices:\n  runner:\n    image: docker.io/semaphoreui/runner:${SEMAPHORE_VERSION:-latest}\n    restart: always\n    environment:\n      SEMAPHORE_WEB_ROOT: ${SEMAPHORE_WEB_ROOT:-http://server:3000}\n      SEMAPHORE_RUNNER_API_URL: ${SEMAPHORE_RUNNER_API_URL:-http://server:3000/internal}\n      SEMAPHORE_RUNNER_REGISTRATION_TOKEN: ${SEMAPHORE_RUNNER_REGISTRATION_TOKEN:-H1wDyorbg6gTSwJlVwle2Fne}\n\n  server:\n    environment:\n      SEMAPHORE_RUNNER_REGISTRATION_TOKEN: ${SEMAPHORE_RUNNER_REGISTRATION_TOKEN:-H1wDyorbg6gTSwJlVwle2Fne}\n"
  },
  {
    "path": "deployment/compose/runner/build.yml",
    "content": "version: \"3.4\"\n\nservices:\n  runner:\n    build:\n      context: ../../../\n      dockerfile: deployment/docker/runner/Dockerfile\n"
  },
  {
    "path": "deployment/compose/runner/config.yml",
    "content": "version: \"3.4\"\n\nservices:\n  runner:\n    volumes:\n      - ${SEMAPHORE_RUNNER_LOCAL_CONFIG:-runner.json}:/etc/semaphore/config.json:Z\n"
  },
  {
    "path": "deployment/compose/server/base.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  server:\n\nservices:\n  server:\n    image: docker.io/semaphoreui/semaphore:${SEMAPHORE_VERSION:-latest}\n    restart: always\n    environment:\n      SEMAPHORE_ADMIN_NAME: ${SEMAPHORE_ADMIN_NAME:-Admin}\n      SEMAPHORE_ADMIN: ${SEMAPHORE_ADMIN_USERNAME:-admin}\n      SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD:-p455w0rd}\n      SEMAPHORE_ADMIN_EMAIL: ${SEMAPHORE_ADMIN_EMAIL:-admin@localhost}\n      SEMAPHORE_WEB_ROOT: ${SEMAPHORE_WEB_ROOT:-http://0.0.0.0:3000}\n      SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${SEMAPHORE_ACCESS_KEY_ENCRYPTION:-IlRqgrrO5Gp27MlWakDX1xVrPv4jhoUx+ARY+qGyDxQ=}\n    volumes:\n      - server:/var/lib/semaphore\n    ports:\n      - \"3000:3000\"\n"
  },
  {
    "path": "deployment/compose/server/build.yml",
    "content": "version: \"3.4\"\n\nservices:\n  server:\n    build:\n      context: ../../../\n      dockerfile: deployment/docker/server/Dockerfile\n"
  },
  {
    "path": "deployment/compose/server/config.yml",
    "content": "version: \"3.4\"\n\nservices:\n  server:\n    volumes:\n      - ${SEMAPHORE_RUNNER_LOCAL_CONFIG:-config.json}:/etc/semaphore/config.json:Z\n"
  },
  {
    "path": "deployment/compose/store/boltdb.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  boltdb:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_DB_DIALECT: bolt\n      SEMAPHORE_DB_PATH: /var/lib/database\n    volumes:\n      - boltdb:/var/lib/database\n"
  },
  {
    "path": "deployment/compose/store/local.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  mariadb:\n  postgres:\n\nservices:\n  mariadb:\n    image: mariadb:10.8\n    restart: always\n    environment:\n      MARIADB_ROOT_PASSWORD: root\n      MARIADB_USER: semaphore\n      MARIADB_PASSWORD: semaphore\n      MARIADB_DATABASE: semaphore\n    volumes:\n      - mariadb:/var/lib/mysql\n    ports:\n      - 3306:3306\n\n  postgres:\n    image: postgres:14.3\n    restart: always\n    environment:\n      POSTGRES_USER: semaphore\n      POSTGRES_PASSWORD: semaphore\n      POSTGRES_DB: semaphore\n    volumes:\n      - postgres:/var/lib/postgresql\n    ports:\n      - 5432:5432\n"
  },
  {
    "path": "deployment/compose/store/mariadb.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  mariadb:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_DB_DIALECT: mysql\n      SEMAPHORE_DB_HOST: db\n      SEMAPHORE_DB_PORT: 3306\n      SEMAPHORE_DB_USER: ${MARIADB_USERNAME:-semaphore}\n      SEMAPHORE_DB_PASS: ${MARIADB_PASSWORD:-semaphore}\n      SEMAPHORE_DB: ${MARIADB_DATABASE:-semaphore}\n    depends_on:\n      - db\n\n  db:\n    image: mariadb:10.8\n    restart: always\n    environment:\n      MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT:-root}\n      MARIADB_USER: ${MARIADB_USERNAME:-semaphore}\n      MARIADB_PASSWORD: ${MARIADB_PASSWORD:-semaphore}\n      MARIADB_DATABASE: ${MARIADB_DATABASE:-semaphore}\n    volumes:\n      - mariadb:/var/lib/mysql\n"
  },
  {
    "path": "deployment/compose/store/mysql.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  mysql:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_DB_DIALECT: mysql\n      SEMAPHORE_DB_HOST: db\n      SEMAPHORE_DB_PORT: 3306\n      SEMAPHORE_DB_USER: ${MYSQL_USERNAME:-semaphore}\n      SEMAPHORE_DB_PASS: ${MYSQL_PASSWORD:-semaphore}\n      SEMAPHORE_DB: ${MYSQL_DATABASE:-semaphore}\n    depends_on:\n      - db\n\n  db:\n    image: mysql:8.0\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT:-root}\n      MYSQL_USER: ${MYSQL_USERNAME:-semaphore}\n      MYSQL_PASSWORD: ${MYSQL_PASSWORD:-semaphore}\n      MYSQL_DATABASE: ${MYSQL_DATABASE:-semaphore}\n    volumes:\n      - mysql:/var/lib/mysql\n"
  },
  {
    "path": "deployment/compose/store/postgres.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  postgres:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_DB_DIALECT: postgres\n      SEMAPHORE_DB_HOST: db\n      SEMAPHORE_DB_PORT: 5432\n      SEMAPHORE_DB_USER: ${POSTGRES_USERNAME:-semaphore}\n      SEMAPHORE_DB_PASS: ${POSTGRES_PASSWORD:-semaphore}\n      SEMAPHORE_DB: ${POSTGRES_DATABASE:-semaphore}\n    depends_on:\n      - db\n\n  db:\n    image: postgres:14.3\n    restart: always\n    environment:\n      POSTGRES_USER: ${POSTGRES_USERNAME:-semaphore}\n      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-semaphore}\n      POSTGRES_DB: ${POSTGRES_DATABASE:-semaphore}\n    volumes:\n      - postgres:/var/lib/postgresql\n"
  },
  {
    "path": "deployment/compose/store/sqlite.yml",
    "content": "version: \"3.4\"\n\nvolumes:\n  sqlite:\n\nservices:\n  server:\n    environment:\n      SEMAPHORE_DB_DIALECT: sqlite\n      SEMAPHORE_DB_PATH: /var/lib/database\n    volumes:\n      - sqlite:/var/lib/database\n"
  },
  {
    "path": "deployment/docker/README.md",
    "content": "# Docker\n\nGenerally we are building production-grade images for each tag, latest and even\nfor the development branch which will be pushed to [DockerHub][dockerhub]. If\nyou still need to build your own image you can easily do that, you just need\ninstall [Docker][docker] and [Task][gotask] on your system.\n\nIf you just want to use our pre-built images please follow the instructions on\nour [documentation][documentation].\n\nIf you want to use [docker-compose][dockercompose] to start Semaphore you could\nalso read about it on our [documentation][documentation] or take a look at our\ncollection of [snippets][snippets] within this repository.\n\n## Build\n\nWe have prepared multiple tasks to build an publish container images, including\ntasks to verify the image contains all required tools:\n\n```console\ntask docker:build\ntask docker:push\n```\n\nIf you want to customize the image names or if you want to use [Podman][podman]\ninstead of [Docker][docker] you are able to provide some set of environment\nvariables to the [Task][gotask] command:\n\n* `DOCKER_ORG`: Define a custom organization for the image, defaults to `semaphoreui`\n* `DOCKER_SERVER`: Define a different name for the server image, defaults to `semaphore`\n* `DOCKER_RUNNER`: Define a different name for the runner image, defaults to `runner`\n* `DOCKER_CMD`: Use another command to build the image, defaults to `docker`\n\n## Test\n\nWe defined tasks to handle some linting and to verify the images contain the\ntools and binaries that are required to run Semaphore. Here we are using\n[Hadolint][hadolint] to ensure we are mostly following best-practices and\n[Goss][goss] which is using a configuration file to define the requirements.\n\nTo install the required tools you also need to install [Golang][golang] on your\nsystem, the installation of [Golang][golang] is not covered by us.\n\nThe installation of the dependencies can be customized by providing environment\nvariables for `INSTALL_PATH` (`/usr/local/bin`) and `REQUIRE_SUDO` (true).\n\n```console\ntask docker:test\n```\n\n[dockerhub]: https://hub.docker.com/r/semaphoreui/semaphore\n[docker]: https://docs.docker.com/engine/install/\n[podman]: https://podman.io/docs/installation\n[gotask]: https://taskfile.dev/installation/\n[dockercompose]: https://docs.docker.com/compose/\n[golang]: https://go.dev/doc/install\n[hadolint]: https://github.com/hadolint/hadolint\n[goss]: https://github.com/goss-org/goss\n[snippets]: ../compose/README.md\n[documentation]: https://docs.semaphoreui.com/administration-guide/installation\n"
  },
  {
    "path": "deployment/docker/dredd/Dockerfile",
    "content": "FROM golang:1.24-alpine3.21 as golang\n\nRUN apk add --no-cache -U \\\n    curl git\n\nWORKDIR /usr/local\n# hadolint ignore=DL4006\nRUN curl -sL https://taskfile.dev/install.sh | sh\n\nWORKDIR /go/src/semaphore\nCOPY . /go/src/semaphore\n\nRUN --mount=type=cache,target=/go/pkg \\\n    go mod download -x\n\nRUN --mount=type=cache,target=/go/pkg --mount=type=cache,target=/root/.cache/go-build \\\n    task deps:tools && \\\n    task deps:be && \\\n    task dredd:goodman && \\\n    task dredd:hooks\n\nFROM apiaryio/dredd:14.0.0\n\nRUN apk add --no-cache -U \\\n    bash git go\n\nCOPY --from=golang /go/bin/goodman /root/go/bin/goodman\nCOPY --from=golang /go/src/semaphore /semaphore\nWORKDIR /semaphore\n\nCOPY deployment/docker/dredd/entrypoint /usr/local/bin\nENTRYPOINT [\"/usr/local/bin/entrypoint\"]\n"
  },
  {
    "path": "deployment/docker/dredd/entrypoint",
    "content": "#!/usr/bin/env bash\nset -eo pipefail\n\necho \"---> Gen semaphore config\"\ncat << EOF > /semaphore/.dredd/config.json\n{\n  \"dialect\": \"${SEMAPHORE_DB_DIALECT}\",\n  \"${SEMAPHORE_DB_DIALECT}\": ${SEMAPHORE_DB_CONFIG},\n  \"access_key_encryption\": \"${SEMAPHORE_ACCESS_KEY_ENCRYPTION}\"\n}\nEOF\n\necho \"---> Waiting for semaphore\"\nwhile ! nc -z server 3000; do\n  sleep 1\ndone\n\necho \"---> Start dredd server\"\nsleep 5\ndredd $@\n"
  },
  {
    "path": "deployment/docker/runner/Dockerfile",
    "content": "FROM --platform=$BUILDPLATFORM golang:1.24-alpine3.21 as builder\n\nRUN apk add --no-cache -U \\\n    libc-dev curl nodejs npm git gcc zip unzip tar\n\nWORKDIR /usr/local\n# hadolint ignore=DL4006\nRUN curl -sL https://taskfile.dev/install.sh | sh\n\nWORKDIR /go/src/semaphore\nCOPY . /go/src/semaphore\n\nRUN --mount=type=cache,target=/go/pkg \\\n    go mod download -x\n\nARG APP_BUILD_TYPE\nARG TARGETOS\nARG TARGETARCH\nARG GH_TOKEN\n\nRUN if [ -n \"$APP_BUILD_TYPE\" ]; then \\\n      git clone https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \\\n      go work init . ./pro_impl; \\\n    fi\n\nRUN --mount=type=cache,target=/go/pkg \\\n    --mount=type=cache,target=/root/.cache/go-build \\\n    task deps APP_BUILD_TYPE=${APP_BUILD_TYPE} && \\\n    task build GOOS=${TARGETOS} GOARCH=${TARGETARCH} APP_BUILD_TYPE=${APP_BUILD_TYPE}\n\n\nENV OPENTOFU_VERSION=\"1.11.0\"\nENV TERRAFORM_VERSION=\"1.10.3\"\nENV TERRAGRUNT_VERSION=\"0.78.0\"\n#ENV PULUMI_VERSION=\"3.116.1\"\n\nRUN wget https://github.com/opentofu/opentofu/releases/download/v${OPENTOFU_VERSION}/tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz && \\\n    tar xf tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz -C /tmp && \\\n    rm tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz\n\nRUN curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip && \\\n    unzip terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip -d /tmp && \\\n    rm terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip\n\nRUN wget -O /tmp/terragrunt https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_${TARGETARCH} && \\\n    chmod +x /tmp/terragrunt\n\nFROM alpine:3.21\n\nARG TARGETARCH=\"amd64\"\n\nRUN apk add --no-cache -U \\\n    bash curl git gnupg mysql-client openssh-client-default python3 python3-dev py3-pip rsync sshpass tar tini tzdata unzip wget zip && \\\n    rm -rf /var/cache/apk/* && \\\n    adduser -D -u 1001 -G root semaphore && \\\n    mkdir -p /tmp/semaphore && \\\n    mkdir -p /etc/semaphore && \\\n    mkdir -p /var/lib/semaphore && \\\n    mkdir -p /opt/semaphore && \\\n    chown -R semaphore:0 /tmp/semaphore && \\\n    chown -R semaphore:0 /etc/semaphore && \\\n    chown -R semaphore:0 /var/lib/semaphore && \\\n    chown -R semaphore:0 /opt/semaphore && \\\n    find /usr/lib/python* -iname __pycache__ | xargs rm -rf\n\nCOPY --chown=1001:0 ./deployment/docker/runner/ansible.cfg /etc/ansible/ansible.cfg\nCOPY --from=builder /go/src/semaphore/deployment/docker/runner/runner-wrapper /usr/local/bin/\nCOPY --from=builder /go/src/semaphore/bin/semaphore /usr/local/bin/\nCOPY --from=builder /tmp/tofu /usr/local/bin/\nCOPY --from=builder /tmp/terraform /usr/local/bin/\nCOPY --from=builder /tmp/terragrunt /usr/local/bin/\n\nRUN chown -R semaphore:0 /usr/local/bin/runner-wrapper && \\\n    chmod +x /usr/local/bin/runner-wrapper && \\\n    chown -R semaphore:0 /usr/local/bin/semaphore && \\\n    chmod +x /usr/local/bin/semaphore\n\nWORKDIR /home/semaphore\n\n# renovate: datasource=pypi depName=ansible\nARG ANSIBLE_VERSION=11.1.0\nENV ANSIBLE_VERSION=${ANSIBLE_VERSION}\nARG ANSIBLE_VENV_PATH=/opt/semaphore/apps/ansible/${ANSIBLE_VERSION}/venv\n\nRUN apk add --no-cache -U python3-dev build-base openssl-dev libffi-dev cargo && \\\n     mkdir -p ${ANSIBLE_VENV_PATH} && \\\n     python3 -m venv ${ANSIBLE_VENV_PATH} --system-site-packages && \\\n     source ${ANSIBLE_VENV_PATH}/bin/activate && \\\n     pip3 install --upgrade pip ansible==${ANSIBLE_VERSION} boto3 botocore requests pywinrm passlib && \\\n     apk del python3-dev build-base openssl-dev libffi-dev cargo && \\\n     rm -rf /var/cache/apk/* && \\\n     find ${ANSIBLE_VENV_PATH} -iname __pycache__ | xargs rm -rf && \\\n     chown -R semaphore:0 /opt/semaphore\n\nRUN echo 'Host *\\n  StrictHostKeyChecking no\\n  UserKnownHostsFile /dev/null' > /etc/ssh/ssh_config.d/semaphore.conf\n\nUSER 1001\n\nENV VIRTUAL_ENV=\"$ANSIBLE_VENV_PATH\"\nENV PATH=\"$ANSIBLE_VENV_PATH/bin:$PATH\"\n\n# Preventing ansible zombie processes. Tini kills zombies.\nENTRYPOINT [\"/sbin/tini\", \"--\"]\nCMD [ \"/usr/local/bin/runner-wrapper\"]\n"
  },
  {
    "path": "deployment/docker/runner/ansible.cfg",
    "content": "[defaults]\nhost_key_checking = False\nbin_ansible_callbacks = True\nstdout_callback = default\ncallback_result_format = yaml\n"
  },
  {
    "path": "deployment/docker/runner/goss.yaml",
    "content": "file:\n  /usr/local/bin/runner-wrapper:\n    exists: true\n    owner: semaphore\n    group: root\n    filetype: file\n  /usr/local/bin/semaphore:\n    exists: true\n    owner: semaphore\n    group: root\n    filetype: file\n\npackage:\n  go:\n    installed: false\n  libc-dev:\n    installed: false\n  nodejs:\n    installed: false\n\n  curl:\n    installed: true\n  git:\n    installed: true\n  mysql-client:\n    installed: true\n  openssh-client-default:\n    installed: true\n  python3:\n    installed: true\n  py3-pip:\n    installed: true\n  rsync:\n    installed: true\n  sshpass:\n    installed: true\n  tar:\n    installed: true\n  tini:\n    installed: true\n  tzdata:\n    installed: true\n  unzip:\n    installed: true\n  wget:\n    installed: true\n  zip:\n    installed: true\n\nuser:\n  semaphore:\n    exists: true\n    uid: 1001\n    gid: 0\n    home: /home/semaphore\n\ncommand:\n  semaphore:\n    exit-status: 0\n    timeout: 10000\n"
  },
  {
    "path": "deployment/docker/runner/runner-wrapper",
    "content": "#!/bin/sh\nset -e\nechoerr() { printf \"%s\\n\" \"$*\" >&2; }\n\nexport SEMAPHORE_CONFIG_PATH=\"${SEMAPHORE_CONFIG_PATH:-/etc/semaphore}\"\nexport SEMAPHORE_TMP_PATH=\"${SEMAPHORE_TMP_PATH:-/tmp/semaphore}\"\n\nif test -f \"${SEMAPHORE_CONFIG_PATH}/requirements.txt\"; then\n    echoerr \"Installing additional python dependencies\"\n    pip3 install --upgrade \\\n        -r \"${SEMAPHORE_CONFIG_PATH}/requirements.txt\"\nelse\n    echoerr \"No additional python dependencies to install\"\nfi\n\nechoerr \"Starting semaphore runner\"\nif test \"$#\" -ne 1; then\n    if [ -n \"${SEMAPHORE_RUNNER_REGISTRATION_TOKEN:-}\" ]; then\n\n      if [ -z \"${SEMAPHORE_RUNNER_TOKEN:-}\" ] && [ -z \"${SEMAPHORE_RUNNER_TOKEN_FILE:-}\" ]; then\n        export SEMAPHORE_RUNNER_TOKEN_FILE=\"${SEMAPHORE_TMP_PATH}/runner_token.txt\"\n      fi\n\n      exec /usr/local/bin/semaphore runner start --no-config --register\n    else\n      exec /usr/local/bin/semaphore runner start --no-config\n    fi\nelse\n    exec \"$@\"\nfi\n"
  },
  {
    "path": "deployment/docker/server/Dockerfile",
    "content": "FROM --platform=$BUILDPLATFORM golang:1.24-alpine3.21 as builder\n\nRUN apk add --no-cache -U \\\n    libc-dev curl nodejs npm git gcc zip unzip tar\n\nWORKDIR /usr/local\n# hadolint ignore=DL4006\nRUN curl -sL https://taskfile.dev/install.sh | sh\n\nWORKDIR /go/src/semaphore\nCOPY . /go/src/semaphore\n\nRUN --mount=type=cache,target=/go/pkg \\\n    go mod download -x\n\nARG APP_BUILD_TYPE\nARG TARGETOS\nARG TARGETARCH\nARG GH_TOKEN\n\nRUN if [ -n \"$APP_BUILD_TYPE\" ]; then \\\n      git clone https://${GH_TOKEN}@github.com/semaphoreui/semaphorepro-module.git pro_impl && \\\n      go work init . ./pro_impl; \\\n    fi\n\nRUN --mount=type=cache,target=/go/pkg \\\n    --mount=type=cache,target=/root/.cache/go-build \\\n    task deps APP_BUILD_TYPE=${APP_BUILD_TYPE} && \\\n    task build GOOS=${TARGETOS} GOARCH=${TARGETARCH} APP_BUILD_TYPE=${APP_BUILD_TYPE}\n\n\nENV OPENTOFU_VERSION=\"1.11.0\"\nENV TERRAFORM_VERSION=\"1.11.3\"\nENV TERRAGRUNT_VERSION=\"0.78.0\"\n#ENV PULUMI_VERSION=\"3.116.1\"\n#ENV POWERSHELL_VERSION=\"3.116.1\"\n\nRUN wget https://github.com/opentofu/opentofu/releases/download/v${OPENTOFU_VERSION}/tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz && \\\n    tar xf tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz -C /tmp && \\\n    rm tofu_${OPENTOFU_VERSION}_linux_${TARGETARCH}.tar.gz\n\nRUN curl -O https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip && \\\n    unzip terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip -d /tmp && \\\n    rm terraform_${TERRAFORM_VERSION}_linux_${TARGETARCH}.zip\n\nRUN wget -O /tmp/terragrunt https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_${TARGETARCH} && \\\n    chmod +x /tmp/terragrunt\n\nFROM alpine:3.21\n\nARG TARGETARCH=\"amd64\"\n# renovate: datasource=pypi depName=ansible\nARG ANSIBLE_VERSION=11.1.0\nENV ANSIBLE_VERSION=${ANSIBLE_VERSION}\nARG ANSIBLE_VENV_PATH=/opt/semaphore/apps/ansible/${ANSIBLE_VERSION}/venv\n\nRUN apk add --no-cache -U \\\n    bash curl git gnupg mysql-client openssh-client-default python3 py3-pip rsync sshpass tar tini tzdata unzip wget zip jq && \\\n    rm -rf /var/cache/apk/* && \\\n    adduser -D -u 1001 -G root semaphore && \\\n    mkdir -p /tmp/semaphore && \\\n    mkdir -p /etc/semaphore && \\\n    mkdir -p /var/lib/semaphore && \\\n    mkdir -p /opt/semaphore && \\\n    chown -R semaphore:0 /tmp/semaphore && \\\n    chown -R semaphore:0 /etc/semaphore && \\\n    chown -R semaphore:0 /var/lib/semaphore && \\\n    chown -R semaphore:0 /opt/semaphore && \\\n    find /usr/lib/python* -iname __pycache__ | xargs rm -rf\n\nRUN echo $'Host *\\n  StrictHostKeyChecking no\\n  UserKnownHostsFile /dev/null' > /etc/ssh/ssh_config.d/semaphore.conf\n\nCOPY --chown=1001:0 ./deployment/docker/server/ansible.cfg /etc/ansible/ansible.cfg\nCOPY --from=builder /go/src/semaphore/deployment/docker/server/server-wrapper /usr/local/bin/\nCOPY --from=builder /go/src/semaphore/bin/semaphore /usr/local/bin/\nCOPY --from=builder /tmp/tofu /usr/local/bin/\nCOPY --from=builder /tmp/terraform /usr/local/bin/\nCOPY --from=builder /tmp/terragrunt /usr/local/bin/\n\nRUN chown -R semaphore:0 /usr/local/bin/server-wrapper && \\\n    chmod +x /usr/local/bin/server-wrapper && \\\n    chown -R semaphore:0 /usr/local/bin/semaphore && \\\n    chmod +x /usr/local/bin/semaphore\n\nWORKDIR /home/semaphore\n\nRUN apk add --no-cache -U python3-dev build-base openssl-dev libffi-dev cargo && \\\n     mkdir -p ${ANSIBLE_VENV_PATH} && \\\n     python3 -m venv ${ANSIBLE_VENV_PATH} --system-site-packages && \\\n     source ${ANSIBLE_VENV_PATH}/bin/activate && \\\n     pip3 install --upgrade pip ansible==${ANSIBLE_VERSION} boto3 botocore requests pywinrm passlib && \\\n     apk del python3-dev build-base openssl-dev libffi-dev cargo && \\\n     rm -rf /var/cache/apk/* && \\\n     find ${ANSIBLE_VENV_PATH} -iname __pycache__ | xargs rm -rf && \\\n     chown -R semaphore:0 /opt/semaphore\n\nUSER 1001\nEXPOSE 3000\n\nENV VIRTUAL_ENV=\"$ANSIBLE_VENV_PATH\"\nENV PATH=\"$ANSIBLE_VENV_PATH/bin:$PATH\"\n\n# Preventing ansible zombie processes. Tini kills zombies.\nENTRYPOINT [\"/sbin/tini\", \"--\"]\nCMD [ \"/usr/local/bin/server-wrapper\"]\n"
  },
  {
    "path": "deployment/docker/server/ansible.cfg",
    "content": "[defaults]\nhost_key_checking = False\nbin_ansible_callbacks = True\nstdout_callback = default\ncallback_result_format = yaml\n"
  },
  {
    "path": "deployment/docker/server/goss.yaml",
    "content": "file:\n  /usr/local/bin/server-wrapper:\n    exists: true\n    owner: semaphore\n    group: root\n    filetype: file\n  /usr/local/bin/semaphore:\n    exists: true\n    owner: semaphore\n    group: root\n    filetype: file\n\npackage:\n  go:\n    installed: false\n#  libc-dev:\n#    installed: false\n  nodejs:\n    installed: false\n\n  curl:\n    installed: true\n  git:\n    installed: true\n  mysql-client:\n    installed: true\n  openssh-client-default:\n    installed: true\n  python3:\n    installed: true\n  py3-pip:\n    installed: true\n  rsync:\n    installed: true\n  sshpass:\n    installed: true\n  tar:\n    installed: true\n  tini:\n    installed: true\n  tzdata:\n    installed: true\n  unzip:\n    installed: true\n  wget:\n    installed: true\n  zip:\n    installed: true\n\nuser:\n  semaphore:\n    exists: true\n    uid: 1001\n    gid: 0\n    home: /home/semaphore\n\ncommand:\n  semaphore:\n    exit-status: 0\n    timeout: 10000\n"
  },
  {
    "path": "deployment/docker/server/powershell/Dockerfile",
    "content": "ARG SEMAPHORE_IMAGE\nARG SEMAPHORE_VERSION\n\nFROM ${SEMAPHORE_IMAGE}:${SEMAPHORE_VERSION}\n\nARG TARGETARCH\nARG POWERSHELL_VERSION=\"7.5.0\"\n\nUSER root\n\n# Install dependencies\nRUN apk add --no-cache \\\n    ca-certificates \\\n    less \\\n    ncurses-terminfo-base \\\n    krb5-libs \\\n    libgcc \\\n    libintl \\\n    libssl3 \\\n    libstdc++ \\\n    tzdata \\\n    userspace-rcu \\\n    zlib \\\n    icu-libs \\\n    curl\n\nRUN apk -X https://dl-cdn.alpinelinux.org/alpine/edge/main add --no-cache \\\n    lttng-ust \\\n    openssh-client\n\nRUN wget -O /tmp/powershell.tar.gz https://github.com/PowerShell/PowerShell/releases/download/v${POWERSHELL_VERSION}/powershell-${POWERSHELL_VERSION}-linux-musl-${TARGETARCH/amd/x}.tar.gz\n\nRUN mkdir -p /opt/microsoft/powershell/${POWERSHELL_VERSION} \\\n    && tar zxf /tmp/powershell.tar.gz -C /opt/microsoft/powershell/${POWERSHELL_VERSION} \\\n    && rm /tmp/powershell.tar.gz \\\n    && chmod +x /opt/microsoft/powershell/${POWERSHELL_VERSION}/pwsh \\\n    && ln -s /opt/microsoft/powershell/${POWERSHELL_VERSION}/pwsh /usr/local/bin/pwsh \\\n    && ln -s /opt/microsoft/powershell/${POWERSHELL_VERSION}/pwsh /usr/local/bin/powershell\n\nUSER 1001"
  },
  {
    "path": "deployment/docker/server/server-wrapper",
    "content": "#!/bin/sh\nset -e\nechoerr() { printf \"%s\\n\" \"$*\" >&2; }\n\n#\n# Read environment variables from file if envrionment variable ${1}_FILE is set\n#\nfile_env() {\n    local var=\"\"\n    local fileVar=\"\"\n\n    eval var=\"\\$${1}\"\n    eval fileVar=\"\\$${1}_FILE\"\n\n    local def=\"${2:-}\"\n\n    if [ -n \"${var:-}\" ] && [ -n \"${fileVar:-}\" ]; then\n        echo >&2 \"error: both ${1} and ${1}_FILE are set (but are exclusive)\"\n        exit 1\n    fi\n\n    local val=\"$def\"\n\n    if [ -n \"${var:-}\" ]; then\n        val=\"${var}\"\n    elif [ -n \"${fileVar:-}\" ]; then\n        val=\"$(cat \"${fileVar}\")\"\n    fi\n\n    if [ -n \"${val:-}\" ]; then\n        export \"${1}\"=\"$val\"\n    fi\n\n    unset \"${1}_FILE\"\n}\n\nexport SEMAPHORE_CONFIG_PATH=\"${SEMAPHORE_CONFIG_PATH:-/etc/semaphore}\"\nexport SEMAPHORE_DB_PATH=\"${SEMAPHORE_DB_PATH:-/var/lib/semaphore}\"\nexport SEMAPHORE_DB_PORT=\"${SEMAPHORE_DB_PORT:-}\"\n\nfile_env 'SEMAPHORE_DB_USER'\nfile_env 'SEMAPHORE_DB_PASS'\nfile_env 'SEMAPHORE_ADMIN'\nexport SEMAPHORE_ADMIN_EMAIL=\"${SEMAPHORE_ADMIN_EMAIL:-admin@localhost}\"\nexport SEMAPHORE_ADMIN_NAME=\"${SEMAPHORE_ADMIN_NAME:-Semaphore Admin}\"\nfile_env 'SEMAPHORE_ADMIN_PASSWORD'\nexport SEMAPHORE_LDAP_ACTIVATED=\"${SEMAPHORE_LDAP_ACTIVATED:-no}\"\nexport SEMAPHORE_LDAP_HOST=\"${SEMAPHORE_LDAP_HOST:-}\"\nexport SEMAPHORE_LDAP_PORT=\"${SEMAPHORE_LDAP_PORT:-}\"\nexport SEMAPHORE_LDAP_DN_BIND=\"${SEMAPHORE_LDAP_DN_BIND:-}\"\nfile_env 'SEMAPHORE_LDAP_PASSWORD'\nexport SEMAPHORE_LDAP_DN_SEARCH=\"${SEMAPHORE_LDAP_DN_SEARCH:-}\"\nexport SEMAPHORE_LDAP_MAPPING_USERNAME=\"${SEMAPHORE_LDAP_MAPPING_USERNAME:-uid}\"\nexport SEMAPHORE_LDAP_MAPPING_FULLNAME=\"${SEMAPHORE_LDAP_MAPPING_FULLNAME:-cn}\"\nexport SEMAPHORE_LDAP_MAPPING_EMAIL=\"${SEMAPHORE_LDAP_MAPPING_EMAIL:-mail}\"\nfile_env 'SEMAPHORE_ACCESS_KEY_ENCRYPTION'\n\n\n[ -d \"${SEMAPHORE_CONFIG_PATH}\" ] || mkdir -p \"${SEMAPHORE_CONFIG_PATH}\" || {\n    echo \"Can't create Semaphore config path ${SEMAPHORE_CONFIG_PATH}.\"\n    exit 1\n}\n\n[ -d \"${SEMAPHORE_DB_PATH}\" ] || mkdir -p \"${SEMAPHORE_DB_PATH}\" || {\n    echo \"Can't create Semaphore data path ${SEMAPHORE_DB_PATH}.\"\n    exit 1\n}\n\n\n#\n# Extract database host and port from config.json if they are not set.\n# Set default SEMAPHORE_DB_DIALECT and SEMAPHORE_DB_HOST if empty.\n#\nif [ -z \"${SEMAPHORE_DB_DIALECT}\" ]; then\n    if [ -f \"${SEMAPHORE_CONFIG_PATH}/config.json\" ]; then\n        SEMAPHORE_DB_DIALECT=$(cat \"${SEMAPHORE_CONFIG_PATH}/config.json\" | jq '.dialect // \"\"' -r)\n    fi\nfi\n\nexport SEMAPHORE_DB_DIALECT=\"${SEMAPHORE_DB_DIALECT:-mysql}\"\n\nif [ -z \"${SEMAPHORE_DB_HOST}\" ]; then\n    if [ -f \"${SEMAPHORE_CONFIG_PATH}/config.json\" ]; then\n        SEMAPHORE_DB_HOST=$(cat \"${SEMAPHORE_CONFIG_PATH}/config.json\" | jq \".${SEMAPHORE_DB_DIALECT}.host // \\\"\\\"\" -r)\n    fi\nfi\n\nif [ -z \"${SEMAPHORE_DB_HOST}\" ]; then\n    if [ \"${SEMAPHORE_DB_DIALECT}\" = 'bolt' ]; then\n        export SEMAPHORE_DB_HOST=${SEMAPHORE_DB_PATH}/database.boltdb\n    elif [ \"${SEMAPHORE_DB_DIALECT}\" = 'sqlite' ]; then\n        export SEMAPHORE_DB_HOST=${SEMAPHORE_DB_PATH}/database.sqlite\n    else\n        export SEMAPHORE_DB_HOST=\"${SEMAPHORE_DB_HOST:-0.0.0.0}\"\n    fi\nfi\n\n\n#\n# Remove port number from SEMAPHORE_DB_HOST and put it to SEMAPHORE_DB_PORT\n#\ncase \"$SEMAPHORE_DB_HOST\" in\n  *:*)\n    SEMAPHORE_DB_PORT=$(echo \"$SEMAPHORE_DB_HOST\" | cut -d ':' -f 2)\n    SEMAPHORE_DB_HOST=$(echo \"$SEMAPHORE_DB_HOST\" | cut -d ':' -f 1)\n    ;;\n  *)\nesac\n\n\n#\n# Set SEMAPHORE_DB_PORT if it is not set\n#\nif [ -z \"${SEMAPHORE_DB_PORT}\" ]; then\n    case ${SEMAPHORE_DB_DIALECT} in\n        mysql)\n            SEMAPHORE_DB_PORT=3306\n            ;;\n        postgres)\n            SEMAPHORE_DB_PORT=5432\n            ;;\n        bolt)\n            ;;\n        sqlite)\n            ;;\n        *)\n            echoerr \"Unknown database dialect: ${SEMAPHORE_DB_DIALECT}\"\n            exit 1\n            ;;\n    esac\nfi\n\n\n#\n# Ping database if it is not BoltDB\n#\nif [ \"${SEMAPHORE_DB_DIALECT}\" != 'bolt' ] && [ \"${SEMAPHORE_DB_DIALECT}\" != 'sqlite' ]; then\n    echoerr \"Pinging database on ${SEMAPHORE_DB_HOST} port ${SEMAPHORE_DB_PORT}...\"\n    TIMEOUT=30\n\n\n    while ! $(nc -z \"$SEMAPHORE_DB_HOST\" \"$SEMAPHORE_DB_PORT\") >/dev/null 2>&1; do\n        TIMEOUT=$(expr $TIMEOUT - 1)\n\n        if [ $TIMEOUT -eq 0 ]; then\n            echoerr \"Could not connect to database server. Exiting.\"\n            exit 1\n        fi\n\n        echo -n \".\"\n        sleep 1\n    done\n    \n    export SEMAPHORE_DB_HOST=\"${SEMAPHORE_DB_HOST}:${SEMAPHORE_DB_PORT}\"\nfi\n\n\n#\n# Generate new config.json if it does not exist\n#\nSEMAPHORE_FIRST_RUN=no\nif [ ! -f \"${SEMAPHORE_CONFIG_PATH}/config.json\" ]; then\n    SEMAPHORE_FIRST_RUN=yes\n    echoerr \"Generating setup file ${TMP_STDIN_CONFIG_FILE} ...\"\n\n    TMP_STDIN_CONFIG_FILE=$(mktemp)\n\n\n    SEMAPHORE_TMP_PATH=${SEMAPHORE_TMP_PATH:-/tmp/semaphore}\n    [ -d \"${SEMAPHORE_TMP_PATH}\" ] || mkdir -p \"${SEMAPHORE_TMP_PATH}\" || {\n        echo \"Can't create Semaphore tmp path ${SEMAPHORE_TMP_PATH}.\"\n        exit 1\n    }\n\n\n    case ${SEMAPHORE_DB_DIALECT} in\n        mysql)\n            SEMAPHORE_DB_DIALECT_ID=1\n            ;;\n        bolt)\n            SEMAPHORE_DB_DIALECT_ID=2\n            ;;\n        postgres)\n            SEMAPHORE_DB_DIALECT_ID=3\n            ;;\n        sqlite)\n            SEMAPHORE_DB_DIALECT_ID=4\n            ;;\n        *)\n            echoerr \"Unknown database dialect: ${SEMAPHORE_DB_DIALECT}\"\n            exit 1\n            ;;\n    esac\n\n\n    cat << EOF > \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_DB_DIALECT_ID}\nEOF\n\n    if [ \"${SEMAPHORE_DB_DIALECT}\" = \"bolt\" ]; then\n        cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_DB_HOST}\nEOF\n    elif [ \"${SEMAPHORE_DB_DIALECT}\" = \"sqlite\" ]; then\n        cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_DB_HOST}\nEOF\n    else\n        cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_DB_HOST}\n${SEMAPHORE_DB_USER}\n${SEMAPHORE_DB_PASS}\n${SEMAPHORE_DB:-semaphore}\nEOF\n    fi\n\n    cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_TMP_PATH}\n${SEMAPHORE_WEB_ROOT:-}\nno\nno\nno\nno\nno\n${SEMAPHORE_LDAP_ACTIVATED}\nEOF\n\n    if [ \"${SEMAPHORE_LDAP_ACTIVATED}\" = \"yes\" ]; then\n        cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_LDAP_HOST}:${SEMAPHORE_LDAP_PORT}\n${SEMAPHORE_LDAP_NEEDTLS:-no}\n${SEMAPHORE_LDAP_DN_BIND}\n${SEMAPHORE_LDAP_PASSWORD}\n${SEMAPHORE_LDAP_DN_SEARCH}\n${SEMAPHORE_LDAP_SEARCH_FILTER:-(uid=%s)}\n${SEMAPHORE_LDAP_MAPPING_DN:-dn}\n${SEMAPHORE_LDAP_MAPPING_USERNAME}\n${SEMAPHORE_LDAP_MAPPING_FULLNAME}\n${SEMAPHORE_LDAP_MAPPING_EMAIL}\nEOF\n    fi;\n\n    cat << EOF >> \"${TMP_STDIN_CONFIG_FILE}\"\n${SEMAPHORE_CONFIG_PATH}\n${SEMAPHORE_ADMIN}\n${SEMAPHORE_ADMIN_EMAIL}\n${SEMAPHORE_ADMIN_NAME}\n${SEMAPHORE_ADMIN_PASSWORD}\nEOF\n\n\n    echoerr \"Executing semaphore setup\"\n    if test \"$#\" -ne 1; then\n        /usr/local/bin/semaphore setup - < \"${TMP_STDIN_CONFIG_FILE}\"\n    else\n        \"$1\" setup - < \"${TMP_STDIN_CONFIG_FILE}\"\n    fi\n\n    rm -f \"${TMP_STDIN_CONFIG_FILE}\"\nfi\n\n#\n# Install additional python dependencies\n#\nif test -f \"${SEMAPHORE_CONFIG_PATH}/requirements.txt\"; then\n    echoerr \"Installing additional python dependencies\"\n    pip3 install --upgrade \\\n        -r \"${SEMAPHORE_CONFIG_PATH}/requirements.txt\"\nelse\n    echoerr \"No additional python dependencies to install\"\nfi\n\n#\n# Migrate from BoltDB if SEMAPHORE_MIGRATE_FROM_BOLTDB is set (first run only, SQLite only, skipped if DB file already exists)\n#\nif [ -n \"${SEMAPHORE_MIGRATE_FROM_BOLTDB:-}\" ] && [ \"${SEMAPHORE_FIRST_RUN}\" = \"yes\" ]; then\n    if [ \"${SEMAPHORE_DB_DIALECT}\" != \"sqlite\" ]; then\n        echoerr \"SEMAPHORE_MIGRATE_FROM_BOLTDB is only supported with SQLite dialect, ignoring\"\n    else\n        echoerr \"Migrating from BoltDB: ${SEMAPHORE_MIGRATE_FROM_BOLTDB}\"\n        MIGRATE_ARGS=\"--from-boltdb=${SEMAPHORE_MIGRATE_FROM_BOLTDB} --merge-existing-users\"\n        if [ -n \"${SEMAPHORE_MIGRATE_SKIP_TASK_OUTPUT:-}\" ]; then\n            MIGRATE_ARGS=\"${MIGRATE_ARGS} --skip-task-output\"\n        fi\n        if test \"$#\" -ne 1; then\n            /usr/local/bin/semaphore migrate ${MIGRATE_ARGS} --config \"${SEMAPHORE_CONFIG_PATH}/config.json\"\n        else\n            \"$1\" migrate ${MIGRATE_ARGS} --config \"${SEMAPHORE_CONFIG_PATH}/config.json\"\n        fi\n    fi\nfi\n\n# Import project if environment variable SEMAPHORE_IMPORT_PROJECT_FILE is defined.\n# Optionally use SEMAPHORE_IMPORT_PROJECT_NAME to specify the project name.\nif [ -n \"${SEMAPHORE_IMPORT_PROJECT_FILE:-}\" ] && [ \"${SEMAPHORE_FIRST_RUN}\" = \"yes\" ]; then\n    echoerr \"Importing project from ${SEMAPHORE_IMPORT_PROJECT_FILE}\"\n    IMPORT_ARGS=\"--file ${SEMAPHORE_IMPORT_PROJECT_FILE}\"\n    if [ -n \"${SEMAPHORE_IMPORT_PROJECT_NAME:-}\" ]; then\n        echoerr \"Using project name: ${SEMAPHORE_IMPORT_PROJECT_NAME}\"\n        IMPORT_ARGS=\"${IMPORT_ARGS} --project-name ${SEMAPHORE_IMPORT_PROJECT_NAME}\"\n    fi\n    if test \"$#\" -ne 1; then\n        /usr/local/bin/semaphore project import ${IMPORT_ARGS} --config \"${SEMAPHORE_CONFIG_PATH}/config.json\" || echoerr \"Project import failed\"\n    else\n        \"$1\" project import ${IMPORT_ARGS} || echoerr \"Project import failed\"\n    fi\nfi\n\n\n#\n# Start Semaphore server\n#\nechoerr \"Starting semaphore server\"\nif test \"$#\" -ne 1; then\n    exec /usr/local/bin/semaphore server --config \"${SEMAPHORE_CONFIG_PATH}/config.json\"\nelse\n    exec \"$@\"\nfi\n"
  },
  {
    "path": "deployment/packaging/semaphore.spec",
    "content": "%global debug_package %{nil}\n%global _missing_build_ids_terminate_build 0\n%global _dwz_low_mem_die_limit 0\n\nName:           semaphore\nVersion:        2.8.90\nRelease:        1%{?dist}\nSummary:        Semaphore UI is a modern UI for Ansible, Terraform, OpenTofu, Bash and Pulumi. It lets you easily run Ansible playbooks, get notifications about fails, control access to deployment system.\n\nLicense:        MIT\nURL:            https://github.com/semaphoreui/semaphore\nSource:         https://github.com/semaphoreui/semaphore/archive/refs/tags/v2.8.90.zip\n\nBuildRequires:  golang\nBuildRequires:  nodejs\nBuildRequires:  nodejs-npm\nBuildRequires:  go-task\nBuildRequires:  git\nBuildRequires:  systemd-rpm-macros\n\nRequires:       ansible\n\n%description\nSemaphore UI is a modern UI for Ansible, Terraform, OpenTofu, Bash and Pulumi. It lets you easily run Ansible playbooks, get notifications about fails, control access to deployment system.\n\n%prep\n%setup -q\n\n%build\nexport SEMAPHORE_VERSION=\"development\"\nexport SEMAPHORE_ARCH=\"linux_amd64\"\nexport SEMAPHORE_CONFIG_PATH=\"./etc/semaphore\"\nexport APP_ROOT=\"./semaphoreui/\"\n\nif ! [[ \"$PATH\" =~ \"$HOME/go/bin:\" ]]\nthen\n    PATH=\"$HOME/go/bin:$PATH\"\nfi\nexport PATH\ngo-task all\n\ncat > semaphoreui.service <<EOF\n[Unit]\nDescription=Semaphore Ansible\nDocumentation=https://github.com/semaphoreui/semaphore\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nType=simple\nExecReload=/bin/kill -HUP $MAINPID\nExecStart=%{_bindir}/semaphore service --config=/etc/semaphore/config.json\nSyslogIdentifier=semaphore\nRestart=always\n\n[Install]\nWantedBy=multi-user.target\n\nEOF\n\ncat > semaphore-setup <<EOF\nsemaphore setup --config=/etc/semaphore/config.json\nEOF\n\n%install\nmkdir -p %{buildroot}%{_sysconfdir}/semaphore/\nmkdir -p %{buildroot}%{_bindir}\nmkdir -p %{buildroot}%{_unitdir}\n\ninstall -m 755 bin/semaphore %{buildroot}%{_bindir}/semaphore\ninstall -m 755 semaphore-setup %{buildroot}%{_bindir}/semaphore-setup\ninstall -m 755 semaphoreui.service %{buildroot}%{_unitdir}/semaphoreui.service\n\n%files\n%license LICENSE\n%doc README.md CONTRIBUTING.md\n%attr(755, root, root) %{_bindir}/semaphore\n%attr(755, root, root) %{_bindir}/semaphore-setup\n%attr(644, root,root) %{_sysconfdir}/semaphore/\n%{_unitdir}/semaphoreui.service\n\n%changelog\n* Wed Jun 28 2023 Neftali Yagua\n-\n"
  },
  {
    "path": "deployment/systemd/README.md",
    "content": "# Systemd\n\nThis is a sample systemd unit and environment file that you could use to run Semaphore with.\nIt makes no assumptions about running proxies or databases on the same machine, \ntherefore if you do this you may wish to add addition requirements to the unit.\nThe unit will write logs to the journal which you can read with\n`journalctl -u semaphore.service`\n\nExample install, and for convenience uninstall, scripts are located in the util subdir. \nThe scripts expect that you manually install semaphore in /usr/bin and have the config file \n/etc/semaphore/config.json. The config file location can be altered via the env file, \nwhich the script installs as /etc/semaphore/env"
  },
  {
    "path": "deployment/systemd/env",
    "content": "SEMAPHORE_CONFIG=/etc/semaphore/config.json\n"
  },
  {
    "path": "deployment/systemd/runner.service",
    "content": "[Unit]\nDescription=Semaphore Runner\nRequires=network.target\n\n[Service]\nEnvironmentFile=/etc/semaphore/env\nExecStart=/usr/bin/semaphore runner start --config ${SEMAPHORE_CONFIG}\nExecReload=/bin/kill -HUP $MAINPID\nUser=semaphore\nGroup=semaphore\nRestart=always\nRestartSec=3s\n\n[Install]\nWantedBy=multi-user.target\n"
  },
  {
    "path": "deployment/systemd/semaphore.service",
    "content": "[Unit]\nDocumentation=https://github.com/semaphoreui/semaphore\nDocumentation=man:semaphore --help\nDescription=Semaphore UI\nRequires=network.target\nAfter=network.target syslog.target\n\n[Service]\nEnvironmentFile=/etc/semaphore/env\nUser=semaphore\nGroup=semaphore\nExecStart=/usr/bin/semaphore server --config /home/semaphore/config.json\nExecStop=/bin/kill -s QUIT $MAINPID\nExecReload=/bin/kill -s HUP $MAINPID\nRestart=always\nRestartSec=3\n\n[Install]\nWantedBy=multi-user.target"
  },
  {
    "path": "deployment/systemd/util/install.sh",
    "content": "#!/usr/bin/env bash\nset -e\n\nHERE=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\nmkdir -p /etc/semaphore\ncp ${HERE}/../semaphore.service /etc/systemd/system\ncp ${HERE}/../env /etc/semaphore/env\nsystemctl daemon-reload\nsystemctl start semaphore.service"
  },
  {
    "path": "deployment/systemd/util/uninstall.sh",
    "content": "#!/usr/bin/env bash\nset -e\n\nsystemctl stop semaphore.service\nsystemctl disable semaphore.service\nrm /etc/systemd/system/semaphore.service\nrm -rf /etc/semaphore"
  },
  {
    "path": "examples/authentik_ldap/.gitignore",
    "content": "/.env"
  },
  {
    "path": "examples/authentik_ldap/README.md",
    "content": "# Semaphore with Authentik LDAP example\n\n\n1. Start stack by command:\n   ```\n   echo \"PG_PASS=$(openssl rand 36 | base64)\" >> .env\n   echo \"AUTHENTIK_SECRET_KEY=$(openssl rand 60 | base64)\" >> .env\n   echo AUTHENTIK_TOKEN= >> .env\n   echo SEMAPHORE_LDAP_BIND_PASSWORD= >> .env\n   docker-compose up -d\n   ```\n2. To start the initial setup, navigate to http://localhsot:9000/if/flow/initial-setup/. \n   There you are prompted to set a password for the `akadmin` user (the default user).\n3. Set up LDAP in Athentik according to the video tutorial [Authentik - LDAP Generic Setup](https://youtu.be/RtPKMMKRT_E).\n4. Set up Athentik LDAP and Semaphore containers:\n   1. Copy `AUTHENTIK_TOKEN` to clipboard.\n      \n      <img src=\"https://github.com/semaphoreui/semaphore/assets/914224/9e08d4cc-4526-4ace-8b45-2c065188857b\" width=\"600\">\n   2. Open `.env` file and:\n      1. Paste copied value after `AUTHENTIK_TOKEN=`\n      2. Enter your `ldapservice` user password after `SEMAPHORE_LDAP_BIND_PASSWORD=`\n   3. Down and up the stack to apply changes:\n      ```\n      docker-compose down\n      docker-compose up -d\n      ```\n5. Create new Semaphore project:\n    1. Open http://localhost:3000\n    2. Login as `ldapservice`\n    3. Create demo project\n\n       <img src=\"https://github.com/semaphoreui/semaphore/assets/914224/98b780a7-bfbc-4b45-941f-7dd6ca337685\" width=\"600\">\n"
  },
  {
    "path": "examples/authentik_ldap/docker-compose.yml",
    "content": "version: '3.8'\n\nservices:\n  postgresql:\n    image: docker.io/library/postgres:16-alpine\n    volumes:\n      - database:/var/lib/postgresql/data\n    environment:\n      POSTGRES_PASSWORD: ${PG_PASS:?database password required}\n      POSTGRES_USER: authentik\n      POSTGRES_DB: authentik\n    env_file:\n      - .env\n\n  redis:\n    image: docker.io/library/redis:alpine\n    volumes:\n      - redis:/data\n\n  server:\n    image: ghcr.io/goauthentik/server:latest\n    command: server\n    environment:\n      AUTHENTIK_REDIS__HOST: redis\n      AUTHENTIK_POSTGRESQL__HOST: postgresql\n      AUTHENTIK_POSTGRESQL__USER: authentik\n      AUTHENTIK_POSTGRESQL__NAME: authentik\n      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}\n      AUTHENTIK_LISTEN__LDAP: \"0.0.0.0:3389\"\n    volumes:\n      - ./media:/media\n      - ./custom-templates:/templates\n    env_file:\n      - .env\n    ports:\n      - \"9000:9000\"\n      - \"9443:9443\"\n    depends_on:\n      - postgresql\n      - redis\n\n  worker:\n    image: ghcr.io/goauthentik/server:latest\n    command: worker\n    environment:\n      AUTHENTIK_REDIS__HOST: redis\n      AUTHENTIK_POSTGRESQL__HOST: postgresql\n      AUTHENTIK_POSTGRESQL__USER: authentik\n      AUTHENTIK_POSTGRESQL__NAME: authentik\n      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}\n    user: root\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock\n      - ./media:/media\n      - ./certs:/certs\n      - ./custom-templates:/templates\n    env_file:\n      - .env\n    depends_on:\n      - postgresql\n      - redis\n\n  ldap:\n    image: ghcr.io/goauthentik/ldap\n    ports:\n      - \"389:3389\"\n      - \"636:6636\"\n    environment:\n      AUTHENTIK_HOST: http://server:9000\n      AUTHENTIK_INSECURE: \"false\"\n    env_file:\n      - .env\n  semaphore:\n    image: semaphoreui/semaphore:latest\n    environment:\n      SEMAPHORE_DB_DIALECT: \"bolt\"\n      SEMAPHORE_ADMIN_PASSWORD: \"changeme\"\n      SEMAPHORE_ADMIN_NAME: \"admin\"\n      SEMAPHORE_ADMIN_EMAIL: \"admin@example.org\"\n      SEMAPHORE_LDAP_ACTIVATED: \"yes\"\n      SEMAPHORE_LDAP_SERVER: \"ldap:3389\"\n      SEMAPHORE_LDAP_SEARCH_DN: \"ou=users,dc=ldap,dc=goauthentik,dc=io\"\n      SEMAPHORE_LDAP_BIND_DN: \"cn=ldapservice,ou=users,dc=ldap,dc=goauthentik,dc=io\"\n      SEMAPHORE_LDAP_SEARCH_FILTER: \"(&(objectClass=inetOrgPerson)(cn=%s))\"\n      SEMAPHORE_NON_ADMIN_CAN_CREATE_PROJECT: \"yes\"\n      SEMAPHORE_LDAP_MAPPING_DN: \"dn\"\n      SEMAPHORE_LDAP_MAPPING_MAIL: \"mail\"\n      SEMAPHORE_LDAP_MAPPING_UID: \"uid\"\n      SEMAPHORE_LDAP_MAPPING_CN: \"cn\"\n    env_file:\n      - .env\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - semaphore_data:/var/lib/semaphore\n    depends_on:\n      - ldap\nvolumes:\n  database:\n  redis:\n  semaphore_data:\n"
  },
  {
    "path": "examples/openldap/README.md",
    "content": "# Semaphore with OpenLDAP example\r\n\r\n1. Start stack by command:\r\n   ```\r\n   docker-compose up -d\r\n   ```\r\n2. Create new LDAP user:\r\n   1. Open https://localhost:6443\r\n   2. Login as `cn=admin,dc=example,dc=org` with password `admin`\r\n   3. Create new user `john`\r\n   \r\n      <img src=\"https://github.com/semaphoreui/semaphore/assets/914224/4eee81d7-0e22-4e20-9bc2-385add519ab5\" width=\"600\">\r\n\r\n3. Create new Semaphore project:\r\n   1. Open http://localhost:3000\r\n   2. Login as `john`\r\n   3. Create demo project\r\n\r\n      <img src=\"https://github.com/semaphoreui/semaphore/assets/914224/98b780a7-bfbc-4b45-941f-7dd6ca337685\" width=\"600\">\r\n"
  },
  {
    "path": "examples/openldap/docker-compose.yml",
    "content": "version: '3.8'\n\nservices:\n  ldap:\n    image: osixia/openldap:1.5.0\n#    container_name: openldap\n    environment:\n      LDAP_ORGANISATION: \"Example Inc.\"\n      LDAP_DOMAIN: \"example.org\"\n      LDAP_ADMIN_PASSWORD: \"admin\"\n    ports:\n      - \"389:389\"\n      - \"636:636\"\n    volumes:\n      - ldap_data:/var/lib/ldap\n      - ldap_config:/etc/ldap/slapd.d\n\n  ldap_admin:\n    image: osixia/phpldapadmin:0.9.0\n#    container_name: phpldapadmin\n    environment:\n      PHPLDAPADMIN_LDAP_HOSTS: ldap\n    ports:\n      - \"6443:443\"\n    depends_on:\n      - ldap\n\n  semaphore:\n    image: semaphoreui/semaphore:latest\n#    container_name: semaphore\n    environment:\n      SEMAPHORE_DB_DIALECT: \"bolt\"\n      SEMAPHORE_ADMIN_PASSWORD: \"changeme\"\n      SEMAPHORE_ADMIN_NAME: \"admin\"\n      SEMAPHORE_ADMIN_EMAIL: \"admin@example.org\"\n      SEMAPHORE_LDAP_ACTIVATED: \"yes\"\n      SEMAPHORE_LDAP_SERVER: \"ldap:389\"\n      SEMAPHORE_LDAP_SEARCH_DN: \"dc=example,dc=org\"\n      SEMAPHORE_LDAP_BIND_DN: \"cn=admin,dc=example,dc=org\"\n      SEMAPHORE_LDAP_BIND_PASSWORD: \"admin\"\n      SEMAPHORE_LDAP_SEARCH_FILTER: \"(&(objectClass=inetOrgPerson)(uid=%s))\"\n      SEMAPHORE_NON_ADMIN_CAN_CREATE_PROJECT: \"yes\"\n    ports:\n      - \"3000:3000\"\n    volumes:\n      - semaphore_data:/var/lib/semaphore\n    depends_on:\n      - ldap\n\nvolumes:\n  ldap_data:\n  ldap_config:\n  semaphore_data:"
  },
  {
    "path": "examples/terraform_args_example.json",
    "content": "{\n  \"description\": \"Example of Terraform multi-stage arguments format\",\n  \"architecture_note\": \"Array format is automatically converted to map with 'default' key at runtime during task execution\",\n  \"examples\": [\n    {\n      \"name\": \"Legacy array format (backward compatible)\",\n      \"arguments\": [\"-var\", \"environment=production\"],\n      \"internal_representation\": {\n        \"default\": [\"-var\", \"environment=production\"]\n      },\n      \"behavior\": \"All stages (init, plan, apply) use the 'default' key args\"\n    },\n    {\n      \"name\": \"New map format with stage-specific args\",\n      \"arguments\": {\n        \"init\": [\"-upgrade\"],\n        \"plan\": [\"-var\", \"environment=production\"],\n        \"apply\": [\"-var\", \"environment=production\", \"-parallelism=10\"]\n      },\n      \"behavior\": \"Each stage uses its specific args\"\n    },\n    {\n      \"name\": \"Mix of default and stage-specific\",\n      \"arguments\": {\n        \"default\": [\"-var\", \"common=value\"],\n        \"init\": [\"-upgrade\"],\n        \"apply\": [\"-parallelism=20\"]\n      },\n      \"behavior\": \"init uses its args, plan uses 'default', apply uses its args\"\n    },\n    {\n      \"name\": \"Terraform with backend configuration\",\n      \"arguments\": {\n        \"init\": [\n          \"-backend-config=bucket=my-terraform-state\",\n          \"-backend-config=key=prod/terraform.tfstate\"\n        ],\n        \"plan\": [\"-out=tfplan\"],\n        \"apply\": [\"tfplan\"]\n      }\n    },\n    {\n      \"name\": \"Multi-environment setup\",\n      \"arguments\": {\n        \"init\": [\"-reconfigure\"],\n        \"plan\": [\n          \"-var-file=environments/production.tfvars\",\n          \"-out=tfplan\"\n        ],\n        \"apply\": [\n          \"tfplan\",\n          \"-auto-approve\"\n        ]\n      }\n    },\n    {\n      \"name\": \"Minimal init-only customization with default fallback\",\n      \"arguments\": {\n        \"default\": [\"-var\", \"environment=prod\"],\n        \"init\": [\"-upgrade\"]\n      },\n      \"behavior\": \"init uses '-upgrade', plan and apply use 'default' args\"\n    }\n  ],\n  \"notes\": [\n    \"Array format is automatically converted to map with 'default' key at runtime (original JSON in database remains unchanged)\",\n    \"Common arguments like -var, -destroy, and environment secrets are automatically added to all stages\",\n    \"Stage resolution order: specific stage key -> 'default' key -> empty array\",\n    \"Template arguments and Task arguments are merged at the stage level\",\n    \"Ansible and Shell apps always use the 'default' key\",\n    \"Terraform apps can use stage-specific keys (init, plan, apply) with 'default' fallback\"\n  ]\n}\n\n"
  },
  {
    "path": "go.mod",
    "content": "module github.com/semaphoreui/semaphore\n\ngo 1.24.6\n\nrequire (\n\tgithub.com/Masterminds/squirrel v1.5.4\n\tgithub.com/coreos/go-oidc/v3 v3.17.0\n\tgithub.com/creack/pty v1.1.24\n\tgithub.com/go-git/go-git/v5 v5.16.5\n\tgithub.com/go-gorp/gorp/v3 v3.1.0\n\tgithub.com/go-ldap/ldap/v3 v3.4.12\n\tgithub.com/go-sql-driver/mysql v1.9.3\n\tgithub.com/google/go-github v17.0.0+incompatible\n\tgithub.com/gorilla/handlers v1.5.2\n\tgithub.com/gorilla/mux v1.8.1\n\tgithub.com/gorilla/securecookie v1.1.2\n\tgithub.com/gorilla/websocket v1.5.3\n\tgithub.com/lib/pq v1.11.2\n\tgithub.com/mdp/qrterminal/v3 v3.2.1\n\tgithub.com/pquerna/otp v1.5.0\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/semaphoreui/semaphore/pro v0.0.0\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/thedevsaddam/gojsonq/v2 v2.5.2\n\tgo.etcd.io/bbolt v1.4.1\n\tgolang.org/x/crypto v0.48.0\n\tgolang.org/x/oauth2 v0.35.0\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tmodernc.org/sqlite v1.40.1\n)\n\nreplace github.com/semaphoreui/semaphore/pro => ./pro\n\nrequire (\n\tdario.cat/mergo v1.0.1 // indirect\n\tfilippo.io/edwards25519 v1.1.1 // indirect\n\tgithub.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect\n\tgithub.com/Microsoft/go-winio v0.6.2 // indirect\n\tgithub.com/ProtonMail/go-crypto v1.1.6 // indirect\n\tgithub.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc // indirect\n\tgithub.com/cloudflare/circl v1.6.1 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.4.1 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/emirpasic/gods v1.18.1 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect\n\tgithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect\n\tgithub.com/go-git/go-billy/v5 v5.6.2 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect\n\tgithub.com/kevinburke/ssh_config v1.2.0 // indirect\n\tgithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect\n\tgithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/ncruces/go-strftime v0.1.9 // indirect\n\tgithub.com/pjbgf/sha1cd v0.3.2 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect\n\tgithub.com/skeema/knownhosts v1.3.1 // indirect\n\tgithub.com/spf13/pflag v1.0.9 // indirect\n\tgithub.com/xanzy/ssh-agent v0.3.3 // indirect\n\tgolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect\n\tgolang.org/x/net v0.49.0 // indirect\n\tgolang.org/x/sys v0.41.0 // indirect\n\tgolang.org/x/term v0.40.0 // indirect\n\tgopkg.in/warnings.v0 v0.1.2 // indirect\n\tgopkg.in/yaml.v3 v3.0.1 // indirect\n\tmodernc.org/libc v1.66.10 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n\trsc.io/qr v0.2.0 // indirect\n)\n"
  },
  {
    "path": "go.sum",
    "content": "dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=\ndario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=\nfilippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=\nfilippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=\ngithub.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8=\ngithub.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=\ngithub.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM=\ngithub.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=\ngithub.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=\ngithub.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=\ngithub.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=\ngithub.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=\ngithub.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=\ngithub.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e h1:4dAU9FXIyQktpoUAgOJK3OTFc/xug0PCXYCqU0FgDKI=\ngithub.com/alexbrainman/sspi v0.0.0-20250919150558-7d374ff0d59e/go.mod h1:cEWa1LVoE5KvSD9ONXsZrj0z6KqySlCCNKHlLzbqAt4=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=\ngithub.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI=\ngithub.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=\ngithub.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=\ngithub.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=\ngithub.com/coreos/go-oidc/v3 v3.17.0 h1:hWBGaQfbi0iVviX4ibC7bk8OKT5qNr4klBaCHVNvehc=\ngithub.com/coreos/go-oidc/v3 v3.17.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8=\ngithub.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=\ngithub.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=\ngithub.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=\ngithub.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=\ngithub.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=\ngithub.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=\ngithub.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=\ngithub.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=\ngithub.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=\ngithub.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=\ngithub.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=\ngithub.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=\ngithub.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=\ngithub.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=\ngithub.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 h1:BP4M0CvQ4S3TGls2FvczZtj5Re/2ZzkV9VwqPHH/3Bo=\ngithub.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=\ngithub.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=\ngithub.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=\ngithub.com/go-git/go-git/v5 v5.16.5 h1:mdkuqblwr57kVfXri5TTH+nMFLNUxIj9Z7F5ykFbw5s=\ngithub.com/go-git/go-git/v5 v5.16.5/go.mod h1:QOMLpNf1qxuSY4StA/ArOdfFR2TrKEjJiye2kel2m+M=\ngithub.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=\ngithub.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=\ngithub.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=\ngithub.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=\ngithub.com/go-ldap/ldap/v3 v3.4.12 h1:1b81mv7MagXZ7+1r7cLTWmyuTqVqdwbtJSjC0DAp9s4=\ngithub.com/go-ldap/ldap/v3 v3.4.12/go.mod h1:+SPAGcTtOfmGsCb3h1RFiq4xpp4N636G75OEace8lNo=\ngithub.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=\ngithub.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=\ngithub.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=\ngithub.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=\ngithub.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=\ngithub.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=\ngithub.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE=\ngithub.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w=\ngithub.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=\ngithub.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=\ngithub.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA=\ngithub.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=\ngithub.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=\ngithub.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=\ngithub.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=\ngithub.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=\ngithub.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=\ngithub.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8=\ngithub.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo=\ngithub.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM=\ngithub.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg=\ngithub.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo=\ngithub.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o=\ngithub.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8=\ngithub.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs=\ngithub.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY=\ngithub.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc=\ngithub.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=\ngithub.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=\ngithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=\ngithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=\ngithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=\ngithub.com/lib/pq v1.11.2 h1:x6gxUeu39V0BHZiugWe8LXZYZ+Utk7hSJGThs8sdzfs=\ngithub.com/lib/pq v1.11.2/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=\ngithub.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=\ngithub.com/mdp/qrterminal/v3 v3.2.1 h1:6+yQjiiOsSuXT5n9/m60E54vdgFsw0zhADHhHLrFet4=\ngithub.com/mdp/qrterminal/v3 v3.2.1/go.mod h1:jOTmXvnBsMy5xqLniO0R++Jmjs2sTm9dFSuQ5kpz/SU=\ngithub.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=\ngithub.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=\ngithub.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=\ngithub.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=\ngithub.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=\ngithub.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=\ngithub.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=\ngithub.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs=\ngithub.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=\ngithub.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=\ngithub.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=\ngithub.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=\ngithub.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=\ngithub.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa h1:YJfZp12Z3AFhSBeXOlv4BO55RMwPn2NoQeDsrdWnBtY=\ngithub.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4=\ngithub.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=\ngithub.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=\ngithub.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=\ngithub.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0=\ngithub.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs=\ngithub.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=\ngithub.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=\ngo.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI=\ngo.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8=\ngo.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=\ngolang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=\ngolang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=\ngolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=\ngolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=\ngolang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=\ngolang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=\ngolang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=\ngolang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=\ngolang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=\ngolang.org/x/oauth2 v0.35.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=\ngolang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=\ngolang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=\ngolang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=\ngolang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=\ngolang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=\ngolang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=\ngopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=\ngopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nmodernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4=\nmodernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=\nmodernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A=\nmodernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q=\nmodernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA=\nmodernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=\nmodernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=\nmodernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=\nmodernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=\nmodernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=\nmodernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A=\nmodernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I=\nmodernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=\nmodernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=\nmodernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=\nmodernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=\nmodernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=\nmodernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=\nmodernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=\nmodernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=\nmodernc.org/sqlite v1.40.1 h1:VfuXcxcUWWKRBuP8+BR9L7VnmusMgBNNnBYGEe9w/iY=\nmodernc.org/sqlite v1.40.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE=\nmodernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=\nmodernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=\nmodernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=\nmodernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=\nrsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=\nrsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=\n"
  },
  {
    "path": "hook_helpers/hooks_helpers.go",
    "content": "package hook_helpers\n\nimport (\n\t_ \"github.com/snikch/goodman/hooks\"\n\t_ \"github.com/snikch/goodman/transaction\"\n)\n"
  },
  {
    "path": "pkg/common_errors/common_errors.go",
    "content": "package common_errors\n\nimport (\n\t\"errors\"\n\t\"path\"\n\t\"runtime\"\n)\n\ntype UserVisibleError struct {\n\tErr error\n}\n\nfunc (e *UserVisibleError) Error() string { return e.Err.Error() }\nfunc (e *UserVisibleError) Unwrap() error { return e.Err }\n\nfunc NewUserError(err error) error {\n\treturn &UserVisibleError{Err: err}\n}\n\nfunc NewUserErrorS(err string) error {\n\treturn &UserVisibleError{Err: errors.New(err)}\n}\n\nvar ErrInvalidSubscription = errors.New(\"has no active subscription\")\n\nfunc GetErrorContext() string {\n\tpc, file, line, _ := runtime.Caller(1)\n\tfn := runtime.FuncForPC(pc)\n\treturn path.Base(file) + \":\" + path.Base(fn.Name()) + \":\" + string(rune(line))\n}\n"
  },
  {
    "path": "pkg/conv/conv.go",
    "content": "package conv\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n)\n\nfunc ConvertFloatToIntIfPossible(v any) (int64, bool) {\n\n\tswitch v := v.(type) {\n\tcase float64:\n\t\tf := v\n\t\ti := int64(f)\n\t\tif float64(i) == f {\n\t\t\treturn i, true\n\t\t}\n\tcase float32:\n\t\tf := v\n\t\ti := int64(f)\n\t\tif float32(i) == f {\n\t\t\treturn i, true\n\t\t}\n\t}\n\n\treturn 0, false\n}\n\nfunc StructToFlatMap(obj any) map[string]any {\n\tresult := make(map[string]any)\n\tval := reflect.ValueOf(obj)\n\ttyp := reflect.TypeOf(obj)\n\n\tif typ.Kind() == reflect.Ptr {\n\t\tval = val.Elem()\n\t\ttyp = typ.Elem()\n\t}\n\n\tif typ.Kind() != reflect.Struct {\n\t\treturn result\n\t}\n\n\t// Iterate over the struct fields\n\tfor i := 0; i < val.NumField(); i++ {\n\t\tfield := val.Field(i)\n\t\tfieldType := typ.Field(i)\n\t\tjsonTag := fieldType.Tag.Get(\"json\")\n\n\t\t// Use the json tag if it is set, otherwise use the field name\n\t\tfieldName := jsonTag\n\t\tif fieldName == \"\" || fieldName == \"-\" {\n\t\t\tfieldName = fieldType.Name\n\t\t} else {\n\t\t\t// Handle the case where the json tag might have options like `json:\"name,omitempty\"`\n\t\t\tfieldName = strings.Split(fieldName, \",\")[0]\n\t\t}\n\n\t\t// Check if the field is a struct itself\n\t\tif field.Kind() == reflect.Struct {\n\t\t\t// Convert nested struct to map\n\t\t\tnestedMap := StructToFlatMap(field.Interface())\n\t\t\t// Add nested map to result with a prefixed key\n\t\t\tfor k, v := range nestedMap {\n\t\t\t\tresult[fieldName+\".\"+k] = v\n\t\t\t}\n\t\t} else if (field.Kind() == reflect.Ptr ||\n\t\t\tfield.Kind() == reflect.Array ||\n\t\t\tfield.Kind() == reflect.Slice ||\n\t\t\tfield.Kind() == reflect.Map) && field.IsNil() {\n\t\t\tresult[fieldName] = nil\n\t\t} else {\n\t\t\tresult[fieldName] = field.Interface()\n\t\t}\n\t}\n\n\treturn result\n}\n"
  },
  {
    "path": "pkg/random/string.go",
    "content": "package random\n\nimport (\n\t\"crypto/rand\"\n\t\"math/big\"\n)\n\nconst (\n\tdigits = \"0123456789\"\n\tchars  = \"abcdefghijklmnopqrstuvwxyz0123456789\"\n)\n\nfunc rnd(strlen int, baseStr string) string {\n\tresult := make([]byte, strlen)\n\tcharLen := big.NewInt(int64(len(baseStr)))\n\tfor i := range result {\n\t\tr, err := rand.Int(rand.Reader, charLen)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tresult[i] = baseStr[r.Int64()]\n\t}\n\treturn string(result)\n}\n\nfunc Number(strlen int) string {\n\treturn rnd(strlen, digits)\n}\n\nfunc String(strlen int) string {\n\treturn rnd(strlen, chars)\n}\n"
  },
  {
    "path": "pkg/ssh/agent.go",
    "content": "package ssh\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"io\"\n\t\"net\"\n\t\"path\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"golang.org/x/crypto/ssh\"\n\t\"golang.org/x/crypto/ssh/agent\"\n)\n\ntype AgentKey struct {\n\tKey        []byte\n\tPassphrase []byte\n}\n\ntype Agent struct {\n\tKeys       []AgentKey\n\tLogger     task_logger.Logger\n\tlistener   net.Listener\n\tSocketFile string\n\tdone       chan struct{}\n}\n\nfunc NewAgent() Agent {\n\treturn Agent{}\n}\n\nfunc (a *Agent) Listen() error {\n\tkeyring := agent.NewKeyring()\n\n\tfor _, k := range a.Keys {\n\t\tvar (\n\t\t\tkey any\n\t\t\terr error\n\t\t)\n\n\t\tif len(k.Passphrase) == 0 {\n\t\t\tkey, err = ssh.ParseRawPrivateKey(k.Key)\n\t\t} else {\n\t\t\tkey, err = ssh.ParseRawPrivateKeyWithPassphrase(k.Key, k.Passphrase)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"parsing private key: %w\", err)\n\t\t}\n\n\t\tif err := keyring.Add(agent.AddedKey{\n\t\t\tPrivateKey: key,\n\t\t}); err != nil {\n\t\t\treturn fmt.Errorf(\"adding private key: %w\", err)\n\t\t}\n\t}\n\n\tl, err := net.ListenUnix(\n\t\t\"unix\",\n\t\t&net.UnixAddr{\n\t\t\tNet:  \"unix\",\n\t\t\tName: a.SocketFile,\n\t\t},\n\t)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"listening on socket %q: %w\", a.SocketFile, err)\n\t}\n\n\tl.SetUnlinkOnClose(true)\n\ta.listener = l\n\ta.done = make(chan struct{})\n\n\tgo func() {\n\t\tfor {\n\t\t\tconn, err := a.listener.Accept()\n\t\t\tif err != nil {\n\t\t\t\tselect {\n\t\t\t\tcase <-a.done:\n\t\t\t\t\treturn\n\t\t\t\tdefault:\n\t\t\t\t\ta.Logger.Logf(\"error accepting socket connection: %w\", err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgo func(conn net.Conn) {\n\t\t\t\tdefer conn.Close() //nolint:errcheck\n\n\t\t\t\tif err := agent.ServeAgent(keyring, conn); err != nil && err != io.EOF {\n\t\t\t\t\ta.Logger.Logf(\"error serving SSH agent listener: %w\", err)\n\t\t\t\t}\n\t\t\t}(conn)\n\t\t}\n\t}()\n\n\treturn nil\n}\n\nfunc (a *Agent) Close() error {\n\tif a.done != nil {\n\t\tclose(a.done)\n\t}\n\tif a.listener != nil {\n\t\treturn a.listener.Close()\n\t}\n\treturn nil\n}\n\nfunc StartSSHAgent(key db.AccessKey, logger task_logger.Logger) (Agent, error) {\n\n\tsocketFilename := fmt.Sprintf(\"ssh-agent-%d-%s.sock\", key.ID, random.String(10))\n\n\tvar socketFile string\n\n\tif key.ProjectID == nil {\n\t\tsocketFile = path.Join(util.Config.TmpPath, socketFilename)\n\t} else {\n\t\tsocketFile = path.Join(util.Config.GetProjectTmpDir(*key.ProjectID), socketFilename)\n\t}\n\n\tsshAgent := Agent{\n\t\tLogger: logger,\n\t\tKeys: []AgentKey{\n\t\t\t{\n\t\t\t\tKey:        []byte(key.SshKey.PrivateKey),\n\t\t\t\tPassphrase: []byte(key.SshKey.Passphrase),\n\t\t\t},\n\t\t},\n\t\tSocketFile: socketFile,\n\t}\n\n\treturn sshAgent, sshAgent.Listen()\n}\n\ntype AccessKeyInstallation struct {\n\tSSHAgent *Agent\n\tLogin    string\n\tPassword string\n\tScript   string\n}\n\nfunc (key *AccessKeyInstallation) GetGitEnv() (env []string) {\n\tenv = make([]string, 0)\n\n\tenv = append(env, \"GIT_TERMINAL_PROMPT=0\")\n\tif key.SSHAgent != nil {\n\t\tenv = append(env, fmt.Sprintf(\"SSH_AUTH_SOCK=%s\", key.SSHAgent.SocketFile))\n\t\tsshCmd := \"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\"\n\t\tif util.Config.SshConfigPath != \"\" {\n\t\t\tsshCmd += \" -F \" + util.Config.SshConfigPath\n\t\t}\n\t\tenv = append(env, fmt.Sprintf(\"GIT_SSH_COMMAND=%s\", sshCmd))\n\t}\n\n\treturn env\n}\n\nfunc (key *AccessKeyInstallation) Destroy() error {\n\tif key.SSHAgent != nil {\n\t\treturn key.SSHAgent.Close()\n\t}\n\treturn nil\n}\n\ntype KeyInstaller struct{}\n\nfunc (KeyInstaller) Install(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation AccessKeyInstallation, err error) {\n\n\tswitch usage {\n\tcase db.AccessKeyRoleGit:\n\t\tswitch key.Type {\n\t\tcase db.AccessKeySSH:\n\t\t\tvar agent Agent\n\t\t\tagent, err = StartSSHAgent(key, logger)\n\t\t\tinstallation.SSHAgent = &agent\n\t\t\tinstallation.Login = key.SshKey.Login\n\t\t}\n\tcase db.AccessKeyRoleAnsiblePasswordVault:\n\t\tswitch key.Type {\n\t\tcase db.AccessKeyLoginPassword:\n\t\t\tinstallation.Password = key.LoginPassword.Password\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"access key type not supported for ansible password vault\")\n\t\t}\n\tcase db.AccessKeyRoleAnsibleBecomeUser:\n\t\tif key.Type != db.AccessKeyLoginPassword {\n\t\t\terr = fmt.Errorf(\"access key type not supported for ansible become user\")\n\t\t}\n\t\tinstallation.Login = key.LoginPassword.Login\n\t\tinstallation.Password = key.LoginPassword.Password\n\tcase db.AccessKeyRoleAnsibleUser:\n\t\tswitch key.Type {\n\t\tcase db.AccessKeySSH:\n\t\t\tvar agent Agent\n\t\t\tagent, err = StartSSHAgent(key, logger)\n\t\t\tinstallation.SSHAgent = &agent\n\t\t\tinstallation.Login = key.SshKey.Login\n\t\tcase db.AccessKeyLoginPassword:\n\t\t\tinstallation.Login = key.LoginPassword.Login\n\t\t\tinstallation.Password = key.LoginPassword.Password\n\t\tcase db.AccessKeyNone:\n\t\t\t// No SSH agent or password needed for ansible user with no access key.\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"access key type not supported for ansible user\")\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "pkg/ssh/agent_test.go",
    "content": "package ssh\n\nimport (\n\t\"testing\"\n)\n\n// TestAgent_Close_WithNilListener tests that Close() doesn't panic when listener is nil\nfunc TestAgent_Close_WithNilListener(t *testing.T) {\n\t// Create agent with nil listener (simulates failed initialization)\n\tagent := Agent{}\n\n\t// This should not panic\n\terr := agent.Close()\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error when closing agent with nil listener, got: %v\", err)\n\t}\n}\n\n// TestAgent_Close_WithNilDone tests that Close() doesn't panic when done channel is nil\nfunc TestAgent_Close_WithNilDone(t *testing.T) {\n\t// Create agent with nil done channel\n\tagent := Agent{\n\t\tdone: nil,\n\t}\n\n\t// This should not panic\n\terr := agent.Close()\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error when closing agent with nil done channel, got: %v\", err)\n\t}\n}\n\n// TestAgent_Close_WithAllNil tests that Close() doesn't panic when both fields are nil\nfunc TestAgent_Close_WithAllNil(t *testing.T) {\n\t// Create completely empty agent (simulates NewAgent() result)\n\tagent := NewAgent()\n\n\t// This should not panic\n\terr := agent.Close()\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error when closing empty agent, got: %v\", err)\n\t}\n}\n\n// TestAgent_Close_FailedInitialization simulates the exact scenario from issue #3232\n// where agent initialization fails but the agent is still assigned to installation\nfunc TestAgent_Close_FailedInitialization(t *testing.T) {\n\t// Simulate the scenario described in the issue:\n\t// 1. StartSSHAgent() fails during Listen() but returns incomplete agent\n\t// 2. Install() method assigns the incomplete agent to installation.SSHAgent\n\t// 3. Later, destroyKeys() calls Destroy() which calls Close() on incomplete agent\n\t\n\t// Create an agent that would be returned by StartSSHAgent() if Listen() failed\n\tincompleteAgent := Agent{\n\t\tKeys: []AgentKey{\n\t\t\t{\n\t\t\t\tKey:        []byte(\"test-private-key\"),\n\t\t\t\tPassphrase: []byte(\"\"),\n\t\t\t},\n\t\t},\n\t\tSocketFile: \"/tmp/test-socket.sock\",\n\t\t// listener and done are nil because Listen() failed\n\t}\n\n\t// This simulates the destroyKeys() -> Destroy() -> Close() call chain\n\t// that was causing the panic\n\terr := incompleteAgent.Close()\n\tif err != nil {\n\t\tt.Errorf(\"Expected no error when closing incomplete agent, got: %v\", err)\n\t}\n}\n"
  },
  {
    "path": "pkg/task_logger/task_logger.go",
    "content": "package task_logger\n\nimport (\n\t\"os/exec\"\n\t\"time\"\n)\n\ntype TaskStatus string\n\nconst (\n\tTaskWaitingStatus       TaskStatus = \"waiting\"\n\tTaskStartingStatus      TaskStatus = \"starting\"\n\tTaskWaitingConfirmation TaskStatus = \"waiting_confirmation\"\n\tTaskConfirmed           TaskStatus = \"confirmed\"\n\tTaskRejected            TaskStatus = \"rejected\"\n\tTaskRunningStatus       TaskStatus = \"running\"\n\tTaskStoppingStatus      TaskStatus = \"stopping\"\n\tTaskStoppedStatus       TaskStatus = \"stopped\"\n\tTaskSuccessStatus       TaskStatus = \"success\"\n\tTaskFailStatus          TaskStatus = \"error\"\n)\n\nfunc UnfinishedTaskStatuses() []TaskStatus {\n\treturn []TaskStatus{\n\t\tTaskWaitingStatus,\n\t\tTaskStartingStatus,\n\t\tTaskWaitingConfirmation,\n\t\tTaskConfirmed,\n\t\tTaskRejected,\n\t\tTaskRunningStatus,\n\t\tTaskStoppingStatus,\n\t}\n}\n\nfunc (s TaskStatus) IsValid() bool {\n\tswitch s {\n\tcase TaskWaitingStatus,\n\t\tTaskStartingStatus,\n\t\tTaskWaitingConfirmation,\n\t\tTaskConfirmed,\n\t\tTaskRejected,\n\t\tTaskRunningStatus,\n\t\tTaskStoppingStatus,\n\t\tTaskStoppedStatus,\n\t\tTaskSuccessStatus,\n\t\tTaskFailStatus:\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (s TaskStatus) IsNotifiable() bool {\n\treturn s == TaskSuccessStatus || s == TaskFailStatus || s == TaskWaitingConfirmation\n}\n\nfunc (s TaskStatus) Format() (res string) {\n\n\tswitch s {\n\tcase TaskFailStatus:\n\t\tres += \"❌\"\n\tcase TaskSuccessStatus:\n\t\tres += \"✅\"\n\tcase TaskStoppedStatus:\n\t\tres += \"⏹️\"\n\tcase TaskWaitingConfirmation:\n\t\tres += \"⚠️\"\n\tdefault:\n\t\tres += \"❓\"\n\t}\n\n\tswitch s {\n\tcase TaskWaitingStatus:\n\t\tres += \" WAITING\"\n\tcase TaskStartingStatus:\n\t\tres += \" STARTING\"\n\tcase TaskWaitingConfirmation:\n\t\tres += \" WAITING_CONFIRMATION\"\n\tcase TaskConfirmed:\n\t\tres += \" CONFIRMED\"\n\tcase TaskRejected:\n\t\tres += \" REJECTED\"\n\tcase TaskRunningStatus:\n\t\tres += \" RUNNING\"\n\tcase TaskStoppingStatus:\n\t\tres += \" STOPPING\"\n\tcase TaskStoppedStatus:\n\t\tres += \" STOPPED\"\n\tcase TaskSuccessStatus:\n\t\tres += \" SUCCESS\"\n\tcase TaskFailStatus:\n\t\tres += \" ERROR\"\n\tdefault:\n\t\tres += \" UNKNOWN\"\n\t}\n\n\treturn\n}\n\nfunc (s TaskStatus) IsFinished() bool {\n\treturn s == TaskStoppedStatus || s == TaskSuccessStatus || s == TaskFailStatus\n}\n\ntype StatusListener func(status TaskStatus)\ntype LogListener func(new time.Time, msg string)\n\ntype Logger interface {\n\tLog(msg string)\n\tLogf(format string, a ...any)\n\tLogWithTime(now time.Time, msg string)\n\tLogfWithTime(now time.Time, format string, a ...any)\n\tLogCmd(cmd *exec.Cmd)\n\tSetStatus(status TaskStatus)\n\tAddStatusListener(l StatusListener)\n\tAddLogListener(l LogListener)\n\n\tSetCommit(hash, message string)\n\n\tWaitLog()\n}\n"
  },
  {
    "path": "pkg/tz/time.go",
    "content": "package tz\n\nimport \"time\"\n\nfunc Now() time.Time {\n\treturn time.Now().UTC()\n}\n\nfunc In(t time.Time) time.Time {\n\treturn t.In(time.UTC)\n}\n"
  },
  {
    "path": "pro/api/auth_verify.go",
    "content": "package api\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc VerifySessionByEmail(session *db.Session, w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusForbidden)\n\treturn\n}\n"
  },
  {
    "path": "pro/api/projects/runners.go",
    "content": "package projects\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n)\n\n// NewProjectRunnerController creates a new ProjectRunnerController instance.\nfunc NewProjectRunnerController(subscriptionService pro_interfaces.SubscriptionService) pro_interfaces.ProjectRunnerController {\n\treturn &ProjectRunnerControllerImpl{}\n}\n\ntype ProjectRunnerControllerImpl struct {\n}\n\nfunc (c *ProjectRunnerControllerImpl) GetRunners(w http.ResponseWriter, r *http.Request) {\n\tproject := helpers.GetFromContext(r, \"project\").(db.Project)\n\trunners, err := helpers.Store(r).GetRunners(project.ID, false, nil)\n\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\thelpers.WriteJSON(w, http.StatusOK, runners)\n}\n\nfunc (c *ProjectRunnerControllerImpl) AddRunner(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) RunnerMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc (c *ProjectRunnerControllerImpl) GetRunner(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) UpdateRunner(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) DeleteRunner(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) SetRunnerActive(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) ClearRunnerCache(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *ProjectRunnerControllerImpl) GetRunnerTags(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []any{})\n}\n"
  },
  {
    "path": "pro/api/projects/terraform_inventory.go",
    "content": "package projects\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"net/http\"\n)\n\ntype terraformInventoryController struct{}\n\nfunc NewTerraformInventoryController(terraformRepo db.TerraformStore) pro_interfaces.TerraformInventoryController {\n\treturn &terraformInventoryController{}\n}\n\nfunc (c *terraformInventoryController) GetTerraformInventoryAliases(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []string{})\n}\n\nfunc (c *terraformInventoryController) AddTerraformInventoryAlias(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) GetTerraformInventoryAlias(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) DeleteTerraformInventoryAlias(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) SetTerraformInventoryAliasAccessKey(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) GetTerraformInventoryStates(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []string{})\n}\n\nfunc (c *terraformInventoryController) GetTerraformInventoryLatestState(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteErrorStatus(w, \"No state found\", http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) GetTerraformInventoryState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *terraformInventoryController) DeleteTerraformInventoryState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n"
  },
  {
    "path": "pro/api/roles.go",
    "content": "package api\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/api/helpers\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype RolesController struct {\n\troleRepo db.RoleRepository\n}\n\nfunc NewRolesController(roleRepo db.RoleRepository) *RolesController {\n\treturn &RolesController{\n\t\troleRepo: roleRepo,\n\t}\n}\n\nfunc (c *RolesController) GetGlobalRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) GetRoles(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []string{})\n}\n\nfunc (c *RolesController) AddRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) UpdateRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) DeleteRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\n// Project-specific role methods\nfunc (c *RolesController) GetProjectRoles(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []string{})\n}\n\nfunc (c *RolesController) GetProjectAndGlobalRoles(w http.ResponseWriter, r *http.Request) {\n\thelpers.WriteJSON(w, http.StatusOK, []string{})\n}\n\nfunc (c *RolesController) AddProjectRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) GetProjectRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) UpdateProjectRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *RolesController) DeleteProjectRole(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n"
  },
  {
    "path": "pro/api/subscriptions.go",
    "content": "package api\n\nimport (\n\t\"net/http\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n)\n\nfunc NewSubscriptionController(\n\toptionsRepo db.OptionsManager,\n\tuserRepo db.UserManager,\n\trunnerRepo db.RunnerManager,\n\ttfRepo db.TerraformStore,\n) pro_interfaces.SubscriptionController {\n\treturn &subscriptionControllerImpl{}\n}\n\ntype subscriptionControllerImpl struct {\n}\n\nfunc (ctrl *subscriptionControllerImpl) Delete(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (ctrl *subscriptionControllerImpl) Activate(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (ctrl *subscriptionControllerImpl) GetSubscription(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (ctrl *subscriptionControllerImpl) Refresh(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n"
  },
  {
    "path": "pro/api/terraform.go",
    "content": "package api\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\t\"net/http\"\n)\n\ntype TerraformController struct {\n\tencryptionServices server.AccessKeyEncryptionService\n}\n\nfunc NewTerraformController(\n\tencryptionServices server.AccessKeyEncryptionService,\n\tterraformRepo db.TerraformStore,\n\tkeyRepo db.AccessKeyManager,\n) *TerraformController {\n\treturn &TerraformController{\n\t\tencryptionServices: encryptionServices,\n\t}\n}\n\nfunc (c *TerraformController) TerraformInventoryAliasMiddleware(next http.Handler) http.Handler {\n\treturn http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {\n\t\tnext.ServeHTTP(w, r)\n\t})\n}\n\nfunc (c *TerraformController) GetTerraformState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *TerraformController) AddTerraformState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *TerraformController) LockTerraformState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n\nfunc (c *TerraformController) UnlockTerraformState(w http.ResponseWriter, r *http.Request) {\n\tw.WriteHeader(http.StatusNotFound)\n}\n"
  },
  {
    "path": "pro/db/factory/factory.go",
    "content": "package factory\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro/db/sql\"\n)\n\nfunc NewTerraformStore(store db.Store) db.TerraformStore {\n\treturn &sql.TerraformStoreImpl{}\n}\n\nfunc NewAnsibleTaskRepository(store db.Store) db.AnsibleTaskRepository {\n\treturn &sql.AnsibleTaskStoreImpl{}\n}\n"
  },
  {
    "path": "pro/db/sql/ansible_task.go",
    "content": "package sql\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/sql\"\n)\n\ntype AnsibleTaskStoreImpl struct {\n}\n\nfunc NewAnsibleTask(connection *sql.SqlDbConnection) db.AnsibleTaskRepository {\n\treturn &AnsibleTaskStoreImpl{}\n}\n\nfunc (d *AnsibleTaskStoreImpl) CreateAnsibleTaskHost(host db.AnsibleTaskHost) error {\n\treturn nil\n}\n\nfunc (d *AnsibleTaskStoreImpl) CreateAnsibleTaskError(error db.AnsibleTaskError) error {\n\treturn nil\n}\n\nfunc (d *AnsibleTaskStoreImpl) GetAnsibleTaskHosts(projectID int, taskID int) (res []db.AnsibleTaskHost, err error) {\n\treturn\n}\n\nfunc (d *AnsibleTaskStoreImpl) GetAnsibleTaskErrors(projectID int, taskID int) (res []db.AnsibleTaskError, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/db/sql/terraform_inventory.go",
    "content": "package sql\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TerraformStoreImpl struct {\n}\n\nfunc (d *TerraformStoreImpl) CreateTerraformInventoryAlias(alias db.TerraformInventoryAlias) (res db.TerraformInventoryAlias, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) UpdateTerraformInventoryAlias(alias db.TerraformInventoryAlias) (err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformInventoryAliasByAlias(alias string) (res db.TerraformInventoryAlias, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformInventoryAlias(projectID, inventoryID int, aliasID string) (res db.TerraformInventoryAlias, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformInventoryAliases(projectID, inventoryID int) (res []db.TerraformInventoryAlias, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) DeleteTerraformInventoryAlias(projectID int, inventoryID int, aliasID string) (err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformInventoryStates(projectID, inventoryID int, params db.RetrieveQueryParams) (res []db.TerraformInventoryState, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) CreateTerraformInventoryState(state db.TerraformInventoryState) (res db.TerraformInventoryState, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) DeleteTerraformInventoryState(projectID int, inventoryID int, stateID int) (err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformInventoryState(projectID int, inventoryId int, stateID int) (res db.TerraformInventoryState, err error) {\n\treturn\n}\n\nfunc (d *TerraformStoreImpl) GetTerraformStateCount() (n int, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/go.mod",
    "content": "module github.com/semaphoreui/semaphore/pro\n\ngo 1.24.6\n\nrequire github.com/semaphoreui/semaphore v0.0.0-20250712180151-72836311c5b9\n\nrequire (\n\tdario.cat/mergo v1.0.1 // indirect\n\tfilippo.io/edwards25519 v1.1.1 // indirect\n\tgithub.com/Masterminds/squirrel v1.5.4 // indirect\n\tgithub.com/Microsoft/go-winio v0.6.2 // indirect\n\tgithub.com/ProtonMail/go-crypto v1.1.6 // indirect\n\tgithub.com/cloudflare/circl v1.6.1 // indirect\n\tgithub.com/creack/pty v1.1.24 // indirect\n\tgithub.com/cyphar/filepath-securejoin v0.4.1 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/emirpasic/gods v1.18.1 // indirect\n\tgithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect\n\tgithub.com/go-git/go-billy/v5 v5.6.2 // indirect\n\tgithub.com/go-git/go-git/v5 v5.16.5 // indirect\n\tgithub.com/go-gorp/gorp/v3 v3.1.0 // indirect\n\tgithub.com/go-sql-driver/mysql v1.9.3 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect\n\tgithub.com/google/go-github v17.0.0+incompatible // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/gorilla/mux v1.8.1 // indirect\n\tgithub.com/gorilla/securecookie v1.1.2 // indirect\n\tgithub.com/gorilla/websocket v1.5.3 // indirect\n\tgithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect\n\tgithub.com/kevinburke/ssh_config v1.2.0 // indirect\n\tgithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect\n\tgithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect\n\tgithub.com/lib/pq v1.11.2 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/ncruces/go-strftime v0.1.9 // indirect\n\tgithub.com/pjbgf/sha1cd v0.3.2 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/robfig/cron/v3 v3.0.1 // indirect\n\tgithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect\n\tgithub.com/sirupsen/logrus v1.9.4 // indirect\n\tgithub.com/skeema/knownhosts v1.3.1 // indirect\n\tgithub.com/xanzy/ssh-agent v0.3.3 // indirect\n\tgolang.org/x/crypto v0.48.0 // indirect\n\tgolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect\n\tgolang.org/x/net v0.49.0 // indirect\n\tgolang.org/x/sys v0.41.0 // indirect\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect\n\tgopkg.in/warnings.v0 v0.1.2 // indirect\n\tmodernc.org/libc v1.66.10 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n\tmodernc.org/sqlite v1.40.1 // indirect\n)\n\nreplace github.com/semaphoreui/semaphore => ../\n"
  },
  {
    "path": "pro/go.sum",
    "content": "dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=\ndario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=\nfilippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=\nfilippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=\ngithub.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM=\ngithub.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=\ngithub.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=\ngithub.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=\ngithub.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=\ngithub.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw=\ngithub.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=\ngithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=\ngithub.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=\ngithub.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=\ngithub.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=\ngithub.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=\ngithub.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=\ngithub.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=\ngithub.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=\ngithub.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=\ngithub.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=\ngithub.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=\ngithub.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=\ngithub.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=\ngithub.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=\ngithub.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=\ngithub.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=\ngithub.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=\ngithub.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=\ngithub.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=\ngithub.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=\ngithub.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=\ngithub.com/go-git/go-git/v5 v5.16.5 h1:mdkuqblwr57kVfXri5TTH+nMFLNUxIj9Z7F5ykFbw5s=\ngithub.com/go-git/go-git/v5 v5.16.5/go.mod h1:QOMLpNf1qxuSY4StA/ArOdfFR2TrKEjJiye2kel2m+M=\ngithub.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=\ngithub.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=\ngithub.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=\ngithub.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=\ngithub.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=\ngithub.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=\ngithub.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=\ngithub.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=\ngithub.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=\ngithub.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=\ngithub.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=\ngithub.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=\ngithub.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=\ngithub.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=\ngithub.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=\ngithub.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=\ngithub.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=\ngithub.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=\ngithub.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=\ngithub.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA=\ngithub.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=\ngithub.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=\ngithub.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=\ngithub.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=\ngithub.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=\ngithub.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=\ngithub.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=\ngithub.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=\ngithub.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=\ngithub.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=\ngithub.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=\ngithub.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=\ngithub.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=\ngithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=\ngithub.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=\ngithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=\ngithub.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=\ngithub.com/lib/pq v1.11.2 h1:x6gxUeu39V0BHZiugWe8LXZYZ+Utk7hSJGThs8sdzfs=\ngithub.com/lib/pq v1.11.2/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA=\ngithub.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=\ngithub.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=\ngithub.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=\ngithub.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=\ngithub.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=\ngithub.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=\ngithub.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=\ngithub.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=\ngithub.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=\ngithub.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=\ngithub.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=\ngithub.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=\ngithub.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=\ngithub.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=\ngithub.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=\ngithub.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=\ngithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=\ngithub.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=\ngithub.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=\ngithub.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=\ngithub.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=\ngithub.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=\ngithub.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=\ngithub.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w=\ngithub.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g=\ngithub.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=\ngithub.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=\ngithub.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=\ngithub.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=\ngithub.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=\ngithub.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=\ngithub.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=\ngithub.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=\ngithub.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=\ngo.etcd.io/bbolt v1.4.1 h1:5mOV+HWjIPLEAlUGMsveaUvK2+byZMFOzojoi7bh7uI=\ngo.etcd.io/bbolt v1.4.1/go.mod h1:c8zu2BnXWTu2XM4XcICtbGSl9cFwsXtcf9zLt2OncM8=\ngolang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=\ngolang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=\ngolang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=\ngolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=\ngolang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=\ngolang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=\ngolang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=\ngolang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=\ngolang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=\ngolang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=\ngolang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=\ngolang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=\ngolang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=\ngolang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=\ngolang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=\ngolang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=\ngolang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=\ngolang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=\ngolang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=\ngolang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=\ngolang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=\ngolang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=\ngolang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=\ngolang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg=\ngolang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s=\ngolang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=\ngopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=\ngopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=\ngopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=\ngopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=\ngopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=\ngopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=\ngopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=\ngopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=\ngopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=\ngopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=\nmodernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4=\nmodernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0=\nmodernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A=\nmodernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q=\nmodernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA=\nmodernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc=\nmodernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=\nmodernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=\nmodernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=\nmodernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=\nmodernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A=\nmodernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I=\nmodernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=\nmodernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=\nmodernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=\nmodernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=\nmodernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=\nmodernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=\nmodernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=\nmodernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=\nmodernc.org/sqlite v1.40.1 h1:VfuXcxcUWWKRBuP8+BR9L7VnmusMgBNNnBYGEe9w/iY=\nmodernc.org/sqlite v1.40.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE=\nmodernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=\nmodernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=\nmodernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=\nmodernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=\n"
  },
  {
    "path": "pro/pkg/features/features.go",
    "content": "package features\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc GetFeatures(user *db.User, plan string) map[string]bool {\n\n\treturn map[string]bool{\n\t\t\"project_runners\":   false,\n\t\t\"terraform_backend\": false,\n\t\t\"task_summary\":      false,\n\t\t\"secret_storages\":   false,\n\t}\n}\n"
  },
  {
    "path": "pro/pkg/stage_parsers/next_step.go",
    "content": "package stage_parsers\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n)\n\nfunc MoveToNextStage(\n\tstore db.Store,\n\tansibleTaskRepo db.AnsibleTaskRepository,\n\tlogWriter pro_interfaces.LogWriteService,\n\tapp db.TemplateApp,\n\tprojectID int,\n\tcurrentState any,\n\tcurrentStage *db.TaskStage,\n\tcurrentOutput *db.TaskOutput,\n\tnewOutput db.TaskOutput,\n) (newStage *db.TaskStage, newState any, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/services/ha/ha.go",
    "content": "package ha\n\nimport (\n\t\"github.com/semaphoreui/semaphore/api/sockets\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/services/schedules\"\n)\n\n// NodeRegistry manages node heartbeats and cluster membership tracking\n// in HA mode. In active-active setups every Semaphore instance registers\n// itself and periodically refreshes a heartbeat so other nodes can detect\n// liveness.\ntype NodeRegistry interface {\n\tStart() error\n\tStop()\n\tNodeCount() int\n\tNodeID() string\n}\n\n// OrphanCleaner periodically detects tasks whose owning node has died and\n// marks them as failed so they do not remain stuck in \"running\" forever.\ntype OrphanCleaner interface {\n\tStart()\n\tStop()\n}\n\n// Stubs – these are replaced by pro_impl via Go workspace.\n\nfunc NewNodeRegistry() NodeRegistry                             { return nil }\nfunc NewScheduleDeduplicator() schedules.ScheduleDeduplicator   { return nil }\nfunc NewWSBroadcaster() sockets.Broadcaster                     { return nil }\nfunc NewOrphanCleaner(_ db.Store) OrphanCleaner                 { return nil }\n"
  },
  {
    "path": "pro/services/server/access_key_serializer_dvls.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype DvlsStorageTokenDeserializer interface {\n\tDeserializeSecret(key *db.AccessKey) error\n}\n\ntype DvlsAccessKeyDeserializer struct {\n}\n\nfunc NewDvlsAccessKeyDeserializer(\n\t_ db.AccessKeyManager,\n\t_ db.SecretStorageRepository,\n\t_ VaultStorageTokenDeserializer,\n) *DvlsAccessKeyDeserializer {\n\treturn &DvlsAccessKeyDeserializer{}\n}\n\nfunc (d *DvlsAccessKeyDeserializer) DeleteSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (d *DvlsAccessKeyDeserializer) SerializeSecret(key *db.AccessKey) (err error) {\n\treturn\n}\n\nfunc (d *DvlsAccessKeyDeserializer) DeserializeSecret(key *db.AccessKey) (res string, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/services/server/access_key_serializer_vault.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype VaultStorageTokenDeserializer interface {\n\tDeserializeSecret(key *db.AccessKey) error\n}\n\ntype VaultAccessKeyDeserializer struct {\n}\n\nfunc NewVaultAccessKeyDeserializer(\n\t_ db.AccessKeyManager,\n\t_ db.SecretStorageRepository,\n\t_ VaultStorageTokenDeserializer,\n) *VaultAccessKeyDeserializer {\n\treturn &VaultAccessKeyDeserializer{}\n}\n\nfunc (d *VaultAccessKeyDeserializer) DeleteSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (d *VaultAccessKeyDeserializer) SerializeSecret(key *db.AccessKey) (err error) {\n\treturn\n}\n\nfunc (d *VaultAccessKeyDeserializer) DeserializeSecret(key *db.AccessKey) (res string, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/services/server/log_write_svc.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n)\n\ntype LogWriteServiceImpl struct {\n}\n\n// NewLogWriteService creates a new instance of LogWriteServiceImpl.\nfunc NewLogWriteService() pro_interfaces.LogWriteService {\n\treturn &LogWriteServiceImpl{}\n}\n\nfunc (l *LogWriteServiceImpl) WriteEventLog(event pro_interfaces.EventLogRecord) error {\n\treturn nil\n}\n\nfunc (l *LogWriteServiceImpl) WriteTaskLog(task pro_interfaces.TaskLogRecord) error {\n\treturn nil\n}\nfunc (l *LogWriteServiceImpl) WriteResult(task any) error {\n\treturn nil\n}\n"
  },
  {
    "path": "pro/services/server/secret_storage_svc.go",
    "content": "package server\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\nfunc GetSecretStorages(repo db.SecretStorageRepository, projectID int) (storages []db.SecretStorage, err error) {\n\tstorages = make([]db.SecretStorage, 0)\n\treturn\n}\n\nfunc SyncDvlsSecrets(\n\tstorage db.SecretStorage,\n\taccessKeyRepo db.AccessKeyManager,\n\tdecryptor DvlsStorageTokenDeserializer,\n) error {\n\treturn nil\n}\n"
  },
  {
    "path": "pro/services/server/subscription_svc.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n)\n\nfunc NewSubscriptionService(userRepo db.UserManager, optionsRepo db.OptionsManager, runnerRepo db.RunnerManager, tfRepo db.TerraformStore) pro_interfaces.SubscriptionService {\n\treturn &SubscriptionServiceImpl{}\n}\n\ntype SubscriptionServiceImpl struct {\n}\n\nfunc (s *SubscriptionServiceImpl) GetToken() (res pro_interfaces.SubscriptionToken, err error) {\n\terr = db.ErrNotFound\n\treturn\n}\n\nfunc (s *SubscriptionServiceImpl) HasActiveSubscription() bool {\n\treturn false\n}\n\nfunc (s *SubscriptionServiceImpl) CanAddProUser() (ok bool, err error) {\n\treturn false, nil\n}\n\nfunc (s *SubscriptionServiceImpl) StartValidationCron() {\n\n}\n\nfunc (s *SubscriptionServiceImpl) CanAddRole() (ok bool, err error) {\n\treturn\n}\n\nfunc (s *SubscriptionServiceImpl) CanAddRunner() (ok bool, err error) {\n\treturn\n}\n\nfunc (s *SubscriptionServiceImpl) CanAddTerraformHTTPBackend() (ok bool, err error) {\n\treturn\n}\n"
  },
  {
    "path": "pro/services/tasks/task_state_store_factory.go",
    "content": "package tasks\n\nimport (\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n)\n\nfunc NewTaskStateStore() tasks.TaskStateStore {\n\treturn tasks.NewMemoryTaskStateStore()\n}\n"
  },
  {
    "path": "pro_interfaces/log_write_svc.go",
    "content": "package pro_interfaces\n\nimport \"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\ntype LogWriteService interface {\n\tWriteEventLog(event EventLogRecord) error\n\tWriteTaskLog(task TaskLogRecord) error\n\tWriteResult(task any) error\n}\n\ntype EventLogRecord struct {\n\tAction        string  `json:\"action\"`\n\tUserID        *int    `json:\"user,omitempty\"`\n\tIntegrationID *int    `json:\"integration,omitempty\"`\n\tProjectID     *int    `json:\"project,omitempty\"`\n\tDescription   *string `json:\"description,omitempty\"`\n}\n\ntype TaskLogRecord struct {\n\tUsername     string                 `json:\"username,omitempty\"`\n\tTaskID       int                    `json:\"task\"`\n\tProjectID    int                    `json:\"project\"`\n\tTemplateID   int                    `json:\"template\"`\n\tTemplateName string                 `json:\"template_name\"`\n\tUserID       *int                   `json:\"user,omitempty\"`\n\tDescription  *string                `json:\"-\"`\n\tRunnerID     *int                   `json:\"runner,omitempty\"`\n\tStatus       task_logger.TaskStatus `json:\"status\"`\n}\n"
  },
  {
    "path": "pro_interfaces/project_runner_ctl.go",
    "content": "package pro_interfaces\n\nimport \"net/http\"\n\ntype ProjectRunnerController interface {\n\tGetRunners(w http.ResponseWriter, r *http.Request)\n\tAddRunner(w http.ResponseWriter, r *http.Request)\n\tRunnerMiddleware(next http.Handler) http.Handler\n\tGetRunner(w http.ResponseWriter, r *http.Request)\n\tUpdateRunner(w http.ResponseWriter, r *http.Request)\n\tDeleteRunner(w http.ResponseWriter, r *http.Request)\n\tSetRunnerActive(w http.ResponseWriter, r *http.Request)\n\tClearRunnerCache(w http.ResponseWriter, r *http.Request)\n\tGetRunnerTags(w http.ResponseWriter, r *http.Request)\n}\n"
  },
  {
    "path": "pro_interfaces/subscription_ctl.go",
    "content": "package pro_interfaces\n\nimport \"net/http\"\n\ntype SubscriptionController interface {\n\tGetSubscription(w http.ResponseWriter, r *http.Request)\n\tActivate(w http.ResponseWriter, r *http.Request)\n\tRefresh(w http.ResponseWriter, r *http.Request)\n\tDelete(w http.ResponseWriter, r *http.Request)\n}\n"
  },
  {
    "path": "pro_interfaces/subscription_svc.go",
    "content": "package pro_interfaces\n\nimport \"time\"\n\ntype SubscriptionToken struct {\n\tCompany   string    `json:\"company,omitempty\"`\n\tState     string    `json:\"state\"`\n\tKey       string    `json:\"key\"`\n\tPlan      string    `json:\"plan\"`\n\tUsers     int       `json:\"users\"`\n\tExpiresAt time.Time `json:\"expiresAt\"`\n\tNodes     int       `json:\"nodes,omitempty\"`\n\tUIs       int       `json:\"uis,omitempty\"`\n}\n\nfunc (t *SubscriptionToken) Validate() error {\n\treturn nil\n}\n\ntype SubscriptionService interface {\n\tHasActiveSubscription() bool\n\tCanAddProUser() (ok bool, err error)\n\tCanAddRunner() (ok bool, err error)\n\tCanAddTerraformHTTPBackend() (ok bool, err error)\n\tStartValidationCron()\n\tGetToken() (res SubscriptionToken, err error)\n}\n"
  },
  {
    "path": "pro_interfaces/terraform_inventory_ctl.go",
    "content": "package pro_interfaces\n\nimport (\n\t\"net/http\"\n)\n\ntype TerraformInventoryController interface {\n\tGetTerraformInventoryAliases(w http.ResponseWriter, r *http.Request)\n\tAddTerraformInventoryAlias(w http.ResponseWriter, r *http.Request)\n\tGetTerraformInventoryAlias(w http.ResponseWriter, r *http.Request)\n\tDeleteTerraformInventoryAlias(w http.ResponseWriter, r *http.Request)\n\tSetTerraformInventoryAliasAccessKey(w http.ResponseWriter, r *http.Request)\n\tGetTerraformInventoryStates(w http.ResponseWriter, r *http.Request)\n\tGetTerraformInventoryLatestState(w http.ResponseWriter, r *http.Request)\n\tGetTerraformInventoryState(w http.ResponseWriter, r *http.Request)\n\tDeleteTerraformInventoryState(w http.ResponseWriter, r *http.Request)\n}\n"
  },
  {
    "path": "qodana.yaml",
    "content": "#-------------------------------------------------------------------------------#\n#               Qodana analysis is configured by qodana.yaml file               #\n#             https://www.jetbrains.com/help/qodana/qodana-yaml.html            #\n#-------------------------------------------------------------------------------#\nversion: \"1.0\"\n\n#Specify inspection profile for code analysis\nprofile:\n  name: qodana.starter\n\n#Enable inspections\n#include:\n#  - name: <SomeEnabledInspectionId>\n\n#Disable inspections\n#exclude:\n#  - name: <SomeDisabledInspectionId>\n#    paths:\n#      - <path/where/not/run/inspection>\n\n#Execute shell command before Qodana execution (Applied in CI/CD pipeline)\n#bootstrap: sh ./prepare-qodana.sh\n\n#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)\n#plugins:\n#  - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)\n\n#Specify Qodana linter for analysis (Applied in CI/CD pipeline)\nlinter: jetbrains/qodana-go:latest\n"
  },
  {
    "path": "renovate.json",
    "content": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:recommended\"\n  ]\n}\n"
  },
  {
    "path": "services/export/AccessKey.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype AccessKeyExporter struct {\n\tValueMap[db.AccessKey]\n}\n\nfunc (e *AccessKeyExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tkeys, err := store.GetAccessKeys(proj, db.GetAccessKeyOptions{IgnoreOwner: true}, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(keys, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *AccessKeyExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *AccessKeyExporter) restoreValue(val EntityObject[db.AccessKey], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\told.EnvironmentID, err = exporter.getNewKeyIntRef(Environment, val.scope, old.EnvironmentID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.StorageID, err = exporter.getNewKeyIntRef(SecretStorage, val.scope, old.StorageID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.UserID, err = exporter.getNewKeyIntRef(User, val.scope, old.UserID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyIntRef(Project, GlobalScope, old.ProjectID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.SourceStorageID, err = exporter.getNewKeyIntRef(SecretStorage, val.scope, old.SourceStorageID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewVault, err := store.CreateAccessKey(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newVault.GetDbKey())\n}\n\nfunc (e *AccessKeyExporter) getName() string {\n\treturn AccessKey\n}\n\nfunc (e *AccessKeyExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *AccessKeyExporter) importDependsOn() []string {\n\treturn []string{User, Project, SecretStorage, Environment}\n}\n"
  },
  {
    "path": "services/export/Environment.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype EnvironmentExporter struct {\n\tValueMap[db.Environment]\n}\n\nfunc (e *EnvironmentExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tenvs, err := store.GetEnvironments(proj, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(envs, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\nfunc (e *EnvironmentExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *EnvironmentExporter) restoreValue(val EntityObject[db.Environment], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.SecretStorageID, err = exporter.getNewKeyIntRef(SecretStorage, val.scope, old.SecretStorageID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewVault, err := store.CreateEnvironment(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newVault.GetDbKey())\n}\n\nfunc (e *EnvironmentExporter) getName() string {\n\treturn Environment\n}\n\nfunc (e *EnvironmentExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *EnvironmentExporter) importDependsOn() []string {\n\treturn []string{Project, SecretStorage}\n}\n"
  },
  {
    "path": "services/export/Event.go",
    "content": "package export\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype EventExporter struct {\n\tValueMap[db.Event]\n}\n\nfunc (e *EventExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tenvs, err := store.GetAllEvents(db.RetrieveQueryParams{Count: math.MaxInt})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\teventsByProject := make(map[string][]db.Event)\n\n\tfor _, event := range envs {\n\n\t\tscope := GlobalScope\n\t\tif event.ProjectID != nil {\n\t\t\tscope = strconv.Itoa(*event.ProjectID)\n\t\t}\n\n\t\tif eventsByProject[scope] == nil {\n\t\t\teventsByProject[scope] = make([]db.Event, 0)\n\t\t}\n\t\teventsByProject[scope] = append(eventsByProject[scope], event)\n\t}\n\n\tfor scope, events := range eventsByProject {\n\t\terr = e.appendValues(events, scope)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *EventExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *EventExporter) restoreValue(val EntityObject[db.Event], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\tscope := GlobalScope\n\tif old.ProjectID != nil {\n\t\tscope = strconv.Itoa(*old.ProjectID)\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyIntRef(Project, GlobalScope, old.ProjectID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.UserID, err = exporter.getNewKeyIntRef(User, GlobalScope, old.UserID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.IntegrationID, err = exporter.getNewKeyIntRef(Integration, scope, old.IntegrationID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = e.restoreEventObject(&old, exporter, scope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = store.CreateEvent(old)\n\treturn err\n}\n\nfunc eventObjectTypeToEntityName(t db.EventObjectType) (string, bool) {\n\tswitch t {\n\tcase db.EventTask:\n\t\treturn Task, true\n\tcase db.EventRepository:\n\t\treturn Repository, true\n\tcase db.EventEnvironment:\n\t\treturn Environment, true\n\tcase db.EventInventory:\n\t\treturn Inventory, true\n\tcase db.EventKey:\n\t\treturn AccessKey, true\n\tcase db.EventProject:\n\t\treturn Project, true\n\tcase db.EventSchedule:\n\t\treturn Schedule, true\n\tcase db.EventTemplate:\n\t\treturn Template, true\n\tcase db.EventUser:\n\t\treturn User, true\n\tcase db.EventView:\n\t\treturn View, true\n\tcase db.EventIntegration:\n\t\treturn Integration, true\n\tcase db.EventIntegrationExtractValue:\n\t\treturn IntegrationExtractValue, true\n\tcase db.EventIntegrationMatcher:\n\t\treturn IntegrationMatcher, true\n\tdefault:\n\t\treturn \"\", false\n\t}\n}\n\nfunc getScope(objectType, scope string) string {\n\tswitch objectType {\n\tcase Project:\n\t\treturn GlobalScope\n\tcase User:\n\t\treturn GlobalScope\n\t}\n\n\treturn scope\n}\n\nfunc (e *EventExporter) restoreEventObject(event *db.Event, exporter DataExporter, scope string) (err error) {\n\tif event.ObjectType != nil {\n\t\tentityName, ok := eventObjectTypeToEntityName(*event.ObjectType)\n\t\tif !ok {\n\t\t\tevent.ObjectID = nil\n\t\t\te.onError(fmt.Sprintf(\"Unknown event object type: %s\", *event.ObjectType))\n\t\t} else {\n\t\t\tevent.ObjectID, err = exporter.getNewKeyIntRef(entityName, getScope(entityName, scope), event.ObjectID, e)\n\t\t\tif err != nil {\n\t\t\t\tevent.ObjectID = nil\n\t\t\t\te.onError(fmt.Sprintf(\"Unable to restore event object %s, %s\", entityName, err.Error()))\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e *EventExporter) exportDependsOn() []string {\n\treturn []string{Project, User}\n}\n\nfunc (e *EventExporter) importDependsOn() []string {\n\treturn []string{Project, User, Integration, AccessKey, Schedule, Environment, Template, Task, Inventory, Repository, View}\n}\n\nfunc (e *EventExporter) getName() string {\n\treturn Event\n}\n"
  },
  {
    "path": "services/export/Exporter.go",
    "content": "package export\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nconst (\n\tUser                    = \"User\"\n\tProject                 = \"Project\"\n\tAccessKey               = \"AccessKey\"\n\tEnvironment             = \"Environment\"\n\tTemplate                = \"Template\"\n\tTemplateVault           = \"TemplateVault\"\n\tTemplateRole            = \"TemplateRole\"\n\tSecretStorage           = \"SecretStorage\"\n\tInventory               = \"Inventory\"\n\tRepository              = \"Repository\"\n\tView                    = \"View\"\n\tRole                    = \"Role\"\n\tTaskParams              = \"TaskParams\"\n\tIntegration             = \"Integration\"\n\tIntegrationAlias        = \"IntegrationAlias\"\n\tIntegrationExtractValue = \"IntegrationExtractValue\"\n\tIntegrationMatcher      = \"IntegrationMatcher\"\n\tSchedule                = \"Schedule\"\n\tTask                    = \"Task\"\n\tTaskStage               = \"TaskStage\"\n\tTaskStageResult         = \"TaskStageResult\"\n\tTaskOutput              = \"TaskOutput\"\n\tProjectUser             = \"ProjectUser\"\n\tOption                  = \"Option\"\n\tEvent                   = \"Event\"\n\tRunner                  = \"Runner\"\n)\n\ntype EntityKey = string\n\nfunc NewKeyFromInt(key int) EntityKey {\n\treturn strconv.Itoa(key)\n}\n\ntype KeyMapper interface {\n\tgetNewKey(name string, scope string, oldKey EntityKey) (EntityKey, error)\n\n\tgetNewKeyInt(name string, scope string, oldKey int) (int, error)\n\n\tgetNewKeyIntRef(name string, scope string, oldKey *int, errHandler ErrorHandler) (*int, error)\n\n\tmapKeys(name string, scope string, oldKey EntityKey, newKey EntityKey) error\n\n\t//mapIntKeys(name string, scope string, oldKey int, newKey int) error\n\n\tignoreKeyNotFound() bool\n}\n\ntype DataExporter interface {\n\tKeyMapper\n\n\tgetTypeExporter(name string) TypeExporter\n\n\tgetLoadedKeys(name string, scope string) ([]EntityKey, error)\n\n\tgetLoadedKeysInt(name string, scope string) ([]int, error)\n}\n\ntype Progress interface {\n\tupdate(progress float32, count int64)\n}\n\ntype ErrorHandler interface {\n\tonError(err string)\n}\n\ntype TypeExporter interface {\n\tload(store db.Store, exporter DataExporter, progress Progress) error\n\n\trestore(store db.Store, exporter DataExporter, progress Progress) error\n\n\tgetLoadedKeys(scope string) ([]EntityKey, error)\n\n\tgetLoadedValues(scope string) ([]EntityType, error)\n\n\tgetName() string\n\n\texportDependsOn() []string\n\n\timportDependsOn() []string\n\n\tgetErrors() []string\n\n\tclear()\n\n\tsetUniqueKeys(uniqueKeys bool)\n}\n\nvar KeyNotFound = -1\nvar GlobalScope = \"\"\n\ntype EntityType interface {\n\tGetDbKey() EntityKey\n}\n\ntype TypeKeyMapper struct {\n\tKeys                 map[string]map[string]map[EntityKey]EntityKey\n\tIgnoreKeyNotFoundErr bool\n}\n\nfunc (d *TypeKeyMapper) getNewKeyInt(name string, scope string, oldKey int) (int, error) {\n\tkey, err := d.getNewKey(name, scope, NewKeyFromInt(oldKey))\n\n\tif err != nil {\n\t\treturn KeyNotFound, err\n\t}\n\n\tnewKey, err := strconv.Atoi(key)\n\tif err != nil {\n\t\treturn KeyNotFound, err\n\t}\n\n\treturn newKey, nil\n}\n\nfunc (d *TypeKeyMapper) getNewKeyIntRef(name string, scope string, oldKey *int, errHandler ErrorHandler) (*int, error) {\n\tif oldKey == nil {\n\t\treturn nil, nil\n\t}\n\n\tkey, err := d.getNewKey(name, scope, NewKeyFromInt(*oldKey))\n\n\tif err != nil {\n\t\tif d.ignoreKeyNotFound() {\n\t\t\terrHandler.onError(err.Error())\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tnewKey, err := strconv.Atoi(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &newKey, nil\n}\n\nfunc (d *TypeKeyMapper) getNewKey(name string, scope string, oldKey EntityKey) (EntityKey, error) {\n\tnewKey, ok := d.Keys[name][scope][oldKey]\n\tif !ok {\n\t\tmsg := fmt.Sprintf(\"%s key %s not found\", name, oldKey)\n\t\treturn \"\", errors.New(msg)\n\t}\n\n\treturn newKey, nil\n}\n\nfunc (d *TypeKeyMapper) mapKeys(name string, scope string, oldKey EntityKey, newKey EntityKey) error {\n\t_, ok := d.Keys[name]\n\tif !ok {\n\t\td.Keys[name] = make(map[string]map[EntityKey]EntityKey)\n\t}\n\n\t_, ok = d.Keys[name][scope]\n\tif !ok {\n\t\td.Keys[name][scope] = make(map[EntityKey]EntityKey)\n\t}\n\n\td.Keys[name][scope][oldKey] = newKey\n\treturn nil\n}\n\n//func (d *TypeKeyMapper) mapIntKeys(name string, scope string, oldKey int, newKey int) error {\n//\tnewStrKey := strconv.Itoa(newKey)\n//\toldStrKey := strconv.Itoa(oldKey)\n//\treturn d.mapKeys(name, scope, oldStrKey, newStrKey)\n//}\n\nfunc (d *TypeKeyMapper) ignoreKeyNotFound() bool {\n\treturn d.IgnoreKeyNotFoundErr\n}\n\ntype EntityObject[T EntityType] struct {\n\tvalue T\n\tscope string\n}\n\ntype ValueExporter[T EntityType] interface {\n\trestoreValue(val EntityObject[T], store db.Store, exporter DataExporter) (err error)\n\n\tgetName() string\n}\n\ntype ValueMap[T EntityType] struct {\n\tvalues      []EntityObject[T]\n\tkeyScopeMap map[string]bool\n\terrs        []string\n\tuniqueKeys  bool\n}\n\nfunc (t *ValueMap[T]) getLoadedKeys(scope string) ([]EntityKey, error) {\n\n\tif t.values == nil {\n\t\treturn nil, fmt.Errorf(\"values not loaded\")\n\t}\n\n\tkeys := make([]EntityKey, 0, len(t.values))\n\tfor _, v := range t.values {\n\t\tif v.scope == scope {\n\t\t\tkeys = append(keys, v.value.GetDbKey())\n\t\t}\n\t}\n\n\treturn keys, nil\n}\n\nfunc (t *ValueMap[T]) getLoadedKeysInt(scope string) ([]int, error) {\n\tkeys, err := t.getLoadedKeys(scope)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tkeysInt := make([]int, 0)\n\tfor _, k := range keys {\n\t\tintKey, err := strconv.Atoi(k)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tkeysInt = append(keysInt, intKey)\n\t}\n\treturn keysInt, nil\n}\n\nfunc (t *ValueMap[T]) getLoadedValues(scope string) ([]EntityType, error) {\n\tkeys := make([]EntityType, 0)\n\tfor _, v := range t.values {\n\t\tif v.scope == scope {\n\t\t\tkeys = append(keys, v.value)\n\t\t}\n\t}\n\treturn keys, nil\n}\n\nfunc (t *ValueMap[T]) appendValues(values []T, scope string) error {\n\treturn t.appendValuesAndCheck(values, scope, t.uniqueKeys)\n}\n\nfunc (t *ValueMap[T]) appendValuesAndCheck(values []T, scope string, checkDuplicates bool) error {\n\tif t.values == nil {\n\t\tt.keyScopeMap = make(map[string]bool)\n\t\tt.values = make([]EntityObject[T], 0)\n\t}\n\tfor _, v := range values {\n\t\tif checkDuplicates {\n\t\t\t_, ok := t.keyScopeMap[scope+v.GetDbKey()]\n\t\t\tif ok {\n\t\t\t\treturn fmt.Errorf(\"duplicate key %s\", v.GetDbKey())\n\t\t\t}\n\t\t\tt.keyScopeMap[scope+v.GetDbKey()] = true\n\t\t}\n\t\tt.values = append(t.values, EntityObject[T]{value: v, scope: scope})\n\t}\n\treturn nil\n}\n\nfunc (t *ValueMap[T]) exportDependsOn() []string {\n\treturn []string{}\n}\n\nfunc (t *ValueMap[T]) importDependsOn() []string {\n\treturn []string{}\n}\n\nfunc (t *ValueMap[T]) onError(err string) {\n\tif t.errs == nil {\n\t\tt.errs = []string{err}\n\t} else {\n\t\tt.errs = append(t.errs, err)\n\t}\n}\n\nfunc (t *ValueMap[T]) getErrors() []string {\n\treturn t.errs\n}\n\nfunc (t *ValueMap[T]) clear() {\n\tt.keyScopeMap = nil\n\tt.values = nil\n\tt.errs = nil\n}\n\nfunc (t *ValueMap[T]) setUniqueKeys(uniqueKeys bool) {\n\tt.uniqueKeys = uniqueKeys\n}\n\nfunc (t *ValueMap[T]) restoreValues(store db.Store, exporter DataExporter, progress Progress, valueExporter ValueExporter[T]) (err error) {\n\n\tsize := len(t.values)\n\n\tfor index, val := range t.values {\n\t\tprogress.update(float32(index)/float32(size), int64(index))\n\n\t\terr := valueExporter.restoreValue(val, store, exporter)\n\t\tif err != nil {\n\t\t\tt.onError(fmt.Sprintf(\"Unable to restore %s: %s\", valueExporter.getName(), err.Error()))\n\t\t\tcontinue\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype ExporterChain struct {\n\texporters map[string]TypeExporter\n\tKeyMapper\n}\n\nfunc (p *ExporterChain) getTypeExporter(name string) TypeExporter {\n\treturn p.exporters[name]\n}\n\nfunc (p *ExporterChain) getLoadedKeys(name string, scope string) ([]EntityKey, error) {\n\texporter, ok := p.exporters[name]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"type %s not found\", name)\n\t}\n\n\treturn exporter.getLoadedKeys(scope)\n}\n\nfunc (p *ExporterChain) getLoadedKeysInt(name string, scope string) ([]int, error) {\n\texporter, ok := p.exporters[name]\n\tif !ok {\n\t\treturn nil, fmt.Errorf(\"type %s not found\", name)\n\t}\n\n\tkeys, err := exporter.getLoadedKeys(scope)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tout := make([]int, len(keys))\n\tfor i, v := range keys {\n\t\tn, err := strconv.Atoi(v)\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tout[i] = n\n\t}\n\treturn out, nil\n}\n\nfunc getSortedKeys(exporters map[string]TypeExporter, dependsOn func(t TypeExporter) []string) ([]string, error) {\n\tvar sorted []string\n\tvisited := make(map[string]bool)\n\tvisiting := make(map[string]bool)\n\n\tvar visit func(name string) error\n\tvisit = func(name string) error {\n\t\tif visiting[name] {\n\t\t\treturn fmt.Errorf(\"cyclic dependency detected involving %s\", name)\n\t\t}\n\t\tif visited[name] {\n\t\t\treturn nil\n\t\t}\n\n\t\tvisiting[name] = true\n\n\t\tif exporter, ok := exporters[name]; ok {\n\n\t\t\torder := dependsOn(exporter)\n\n\t\t\tfor _, dep := range order {\n\t\t\t\tif _, exists := exporters[dep]; exists {\n\t\t\t\t\tif err := visit(dep); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvisiting[name] = false\n\t\tvisited[name] = true\n\t\tsorted = append(sorted, name)\n\t\treturn nil\n\t}\n\n\tfor name := range exporters {\n\t\tif err := visit(name); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn sorted, nil\n}\n\nfunc getUniqueKeys(exporters map[string]TypeExporter) map[string]bool {\n\tuniqueKeys := make(map[string]bool)\n\tfor _, e := range exporters {\n\t\tfor _, dep := range e.importDependsOn() {\n\t\t\tuniqueKeys[dep] = true\n\t\t}\n\t}\n\treturn uniqueKeys\n}\n\nfunc InitProjectExporters(mapper KeyMapper, skipTaskOutput bool, mergeExistingUsers bool) *ExporterChain {\n\n\texporters := map[string]TypeExporter{\n\t\tUser:                    &UserExporter{MergeExisting: mergeExistingUsers},\n\t\tProject:                 &ProjectExporter{},\n\t\tTemplate:                &TemplateExporter{},\n\t\tTemplateVault:           &TemplateVaultExporter{},\n\t\tTemplateRole:            &TemplateRoleExporter{},\n\t\tAccessKey:               &AccessKeyExporter{},\n\t\tEnvironment:             &EnvironmentExporter{},\n\t\tRepository:              &RepositoryExporter{},\n\t\tSecretStorage:           &SecretStorageExporter{},\n\t\tInventory:               &InventoryExporter{},\n\t\tView:                    &ViewExporter{},\n\t\tRole:                    &RoleExporter{},\n\t\tSchedule:                &ScheduleExporter{},\n\t\tProjectUser:             &ProjectUserExporter{},\n\t\tIntegration:             &IntegrationExporter{},\n\t\tIntegrationExtractValue: &IntegrationExtractValueExporter{},\n\t\tIntegrationMatcher:      &IntegrationMatcherExporter{},\n\t\tIntegrationAlias:        &IntegrationAliasExporter{},\n\t\tTask:                    &TaskExporter{},\n\t\t//TaskStage:               &TaskStageExporter{},\n\t\tOption: &OptionExporter{},\n\t\tEvent:  &EventExporter{},\n\t\tRunner: &RunnerExporter{},\n\t}\n\n\tif !skipTaskOutput {\n\t\texporters[TaskOutput] = &TaskOutputExporter{}\n\t}\n\n\tuniqueKeys := getUniqueKeys(exporters)\n\n\tfor _, e := range exporters {\n\t\te.setUniqueKeys(uniqueKeys[e.getName()])\n\t}\n\n\treturn &ExporterChain{exporters: exporters, KeyMapper: mapper}\n}\n\nfunc NewKeyMapper() *TypeKeyMapper {\n\treturn &TypeKeyMapper{Keys: make(map[string]map[string]map[EntityKey]EntityKey), IgnoreKeyNotFoundErr: true}\n}\n\ntype ProgressBar struct {\n\tprogress float32\n\tprinter  func(float32, int64)\n\tcount    int64\n}\n\nfunc (p *ProgressBar) update(progress float32, count int64) {\n\tif progress-p.progress > 0.01 {\n\t\tp.updateForce(progress, count)\n\t}\n}\n\nfunc (p *ProgressBar) updateForce(progress float32, count int64) {\n\tp.printer(progress, count)\n\tp.progress = progress\n\tp.count = count\n}\n\nfunc (p *ExporterChain) Load(store db.Store) (err error) {\n\n\tkeys, err := getSortedKeys(p.exporters, func(t TypeExporter) []string {\n\t\treturn t.exportDependsOn()\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, name := range keys {\n\t\tprogress := &ProgressBar{printer: func(progress float32, count int64) {\n\t\t\tstrLen := len(name)\n\t\t\tspaces := fmt.Sprintf(\"%*s\", 36-strLen, \" \")\n\n\t\t\tfmt.Printf(\"\\rExporting %s%s %d%%\", name, spaces, int(progress*100))\n\t\t}, progress: 0}\n\n\t\tprogress.updateForce(0, 0)\n\t\texporter := p.exporters[name]\n\t\terr = exporter.load(store, p, progress)\n\t\tif err != nil {\n\t\t\tfmt.Println()\n\t\t\treturn fmt.Errorf(\"failed to export %s: %s\", name, err.Error())\n\t\t}\n\t\tprogress.updateForce(1, 0)\n\t\tfmt.Println()\n\t}\n\treturn\n}\n\nfunc (p *ExporterChain) Restore(store db.Store, errLogSize int) error {\n\tkeys, err := getSortedKeys(p.exporters, func(t TypeExporter) []string {\n\t\treturn t.importDependsOn()\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, name := range keys {\n\n\t\tprogress := &ProgressBar{printer: func(progress float32, count int64) {\n\t\t\tstrLen := len(name)\n\t\t\tspaces := fmt.Sprintf(\"%*s\", 36-strLen, \" \")\n\n\t\t\tfmt.Printf(\"\\rImporting %s%s %d%%\", name, spaces, int(progress*100))\n\t\t}, progress: 0}\n\n\t\tprogress.updateForce(0, 0)\n\t\texporter := p.exporters[name]\n\t\terr := exporter.restore(store, p, progress)\n\t\tif err != nil {\n\t\t\tfmt.Println()\n\t\t\treturn fmt.Errorf(\"failed to import %s: %s\", name, err.Error())\n\t\t}\n\t\tprogress.updateForce(1, progress.count)\n\t\tfmt.Println()\n\n\t\terrCount := len(exporter.getErrors())\n\t\tif errCount > 0 {\n\t\t\tfmt.Printf(\"    Errors: %d\\n\", errCount)\n\n\t\t\tif errLogSize > 0 {\n\t\t\t\tfor i, err := range exporter.getErrors() {\n\t\t\t\t\tif i > errLogSize {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tfmt.Println(\"      \", err)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\texporter.clear()\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "services/export/Integration.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype IntegrationExporter struct {\n\tValueMap[db.Integration]\n}\n\nfunc (e *IntegrationExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tkeys, err := store.GetIntegrations(proj, db.RetrieveQueryParams{}, true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = e.appendValues(keys, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *IntegrationExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *IntegrationExporter) restoreValue(val EntityObject[db.Integration], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\tif old.TaskParams != nil {\n\t\told.TaskParams.InventoryID, err = exporter.getNewKeyIntRef(Inventory, val.scope, old.TaskParams.InventoryID, e)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\told.TaskParams.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\told.TemplateID, err = exporter.getNewKeyInt(Template, val.scope, old.TemplateID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.AuthSecretID, err = exporter.getNewKeyIntRef(AccessKey, val.scope, old.AuthSecretID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tintegration, err := store.CreateIntegration(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), integration.GetDbKey())\n\n}\n\nfunc (e *IntegrationExporter) getName() string {\n\treturn Integration\n}\n\nfunc (e *IntegrationExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *IntegrationExporter) importDependsOn() []string {\n\treturn []string{Project, SecretStorage, Template, Inventory, AccessKey}\n}\n"
  },
  {
    "path": "services/export/IntegrationAliases.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype IntegrationAliasExporter struct {\n\tValueMap[db.IntegrationAlias]\n}\n\nfunc (e *IntegrationAliasExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tvals, err := store.GetIntegrationAliases(proj, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tallValues := make([]db.IntegrationAlias, 0)\n\t\tallValues = append(allValues, vals...)\n\n\t\tintegrations, err := exporter.getLoadedKeysInt(Integration, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor _, integration := range integrations {\n\t\t\tvals, err = store.GetIntegrationAliases(proj, &integration)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tallValues = append(allValues, vals...)\n\t\t}\n\n\t\terr = e.appendValues(allValues, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *IntegrationAliasExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *IntegrationAliasExporter) restoreValue(val EntityObject[db.IntegrationAlias], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.IntegrationID, err = exporter.getNewKeyIntRef(Integration, val.scope, old.IntegrationID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewVault, err := store.CreateIntegrationAlias(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newVault.GetDbKey())\n\n}\n\nfunc (e *IntegrationAliasExporter) getName() string {\n\treturn IntegrationAlias\n}\n\nfunc (e *IntegrationAliasExporter) exportDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n\nfunc (e *IntegrationAliasExporter) importDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n"
  },
  {
    "path": "services/export/IntegrationExtractValue.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype IntegrationExtractValueExporter struct {\n\tValueMap[db.IntegrationExtractValue]\n}\n\nfunc (e *IntegrationExtractValueExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\n\t\tintegrations, err := exporter.getLoadedKeysInt(Integration, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tallValues := make([]db.IntegrationExtractValue, 0)\n\n\t\tfor _, integration := range integrations {\n\t\t\tvals, err := store.GetIntegrationExtractValues(proj, db.RetrieveQueryParams{}, integration)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tallValues = append(allValues, vals...)\n\t\t}\n\n\t\terr = e.appendValues(allValues, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *IntegrationExtractValueExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *IntegrationExtractValueExporter) restoreValue(val EntityObject[db.IntegrationExtractValue], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.IntegrationID, err = exporter.getNewKeyInt(Integration, val.scope, old.IntegrationID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewVault, err := store.CreateIntegrationExtractValue(0, old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newVault.GetDbKey())\n}\n\nfunc (e *IntegrationExtractValueExporter) getName() string {\n\treturn IntegrationExtractValue\n}\n\nfunc (e *IntegrationExtractValueExporter) exportDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n\nfunc (e *IntegrationExtractValueExporter) importDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n"
  },
  {
    "path": "services/export/IntegrationMatcher.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype IntegrationMatcherExporter struct {\n\tValueMap[db.IntegrationMatcher]\n}\n\nfunc (e *IntegrationMatcherExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\n\t\tintegrations, err := exporter.getLoadedKeysInt(Integration, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tallValues := make([]db.IntegrationMatcher, 0)\n\n\t\tfor _, integration := range integrations {\n\t\t\tvals, err := store.GetIntegrationMatchers(proj, db.RetrieveQueryParams{}, integration)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tallValues = append(allValues, vals...)\n\t\t}\n\t\terr = e.appendValues(allValues, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *IntegrationMatcherExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *IntegrationMatcherExporter) restoreValue(val EntityObject[db.IntegrationMatcher], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.IntegrationID, err = exporter.getNewKeyInt(Integration, val.scope, old.IntegrationID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewVault, err := store.CreateIntegrationMatcher(0, old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newVault.GetDbKey())\n}\n\nfunc (e *IntegrationMatcherExporter) getName() string {\n\treturn IntegrationMatcher\n}\n\nfunc (e *IntegrationMatcherExporter) exportDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n\nfunc (e *IntegrationMatcherExporter) importDependsOn() []string {\n\treturn []string{Project, Integration}\n}\n"
  },
  {
    "path": "services/export/Inventory.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype InventoryExporter struct {\n\tValueMap[db.Inventory]\n}\n\nfunc (e *InventoryExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tenvs, err := store.GetInventories(proj, db.RetrieveQueryParams{}, []db.InventoryType{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = e.appendValues(envs, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e *InventoryExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *InventoryExporter) restoreValue(val EntityObject[db.Inventory], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.SSHKeyID, err = exporter.getNewKeyIntRef(AccessKey, val.scope, old.SSHKeyID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.BecomeKeyID, err = exporter.getNewKeyIntRef(AccessKey, val.scope, old.BecomeKeyID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.RepositoryID, err = exporter.getNewKeyIntRef(Repository, val.scope, old.RepositoryID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t//templateId, err := exporter.getKeyMapForType(Template, *old.BecomeKeyID)\n\t//if err != nil {\n\t//\treturn err\n\t//}\n\t//old.TemplateID = &templateId\n\n\tnewObj, err := store.CreateInventory(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *InventoryExporter) getName() string {\n\treturn Inventory\n}\n\nfunc (e *InventoryExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *InventoryExporter) importDependsOn() []string {\n\treturn []string{Project, AccessKey, Repository}\n}\n"
  },
  {
    "path": "services/export/Option.go",
    "content": "package export\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype OptionExporter struct {\n\tValueMap[db.Option]\n}\n\nfunc (e *OptionExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\toptions, err := store.GetOptions(db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = e.appendValues(getOption(options), GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getOption(opts map[string]string) []db.Option {\n\tvalues := make([]db.Option, 0)\n\n\tfor key, val := range opts {\n\t\tvalues = append(values, db.Option{\n\t\t\tKey:   key,\n\t\t\tValue: val,\n\t\t})\n\t}\n\n\treturn values\n}\n\nfunc (e *OptionExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *OptionExporter) restoreValue(val EntityObject[db.Option], store db.Store, exporter DataExporter) (err error) {\n\treturn store.SetOption(val.value.Key, val.value.Value)\n}\n\nfunc (e *OptionExporter) exportDependsOn() []string {\n\treturn []string{}\n}\n\nfunc (e *OptionExporter) importDependsOn() []string {\n\treturn []string{}\n}\n\nfunc (e *OptionExporter) getName() string {\n\treturn Option\n}\n"
  },
  {
    "path": "services/export/Project.go",
    "content": "package export\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\ntype ProjectExporter struct {\n\tValueMap[db.Project]\n}\n\nfunc (e *ProjectExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tallKeys := make([]db.Project, 0)\n\n\tusers, err := exporter.getLoadedKeysInt(User, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tids := make(map[int]bool)\n\n\tfor _, userId := range users {\n\t\tprojects, err := store.GetProjects(userId)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor _, proj := range projects {\n\t\t\tif ids[proj.ID] {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tids[proj.ID] = true\n\t\t\tallKeys = append(allKeys, proj)\n\t\t}\n\t}\n\n\treturn e.appendValues(allKeys, GlobalScope)\n}\n\nfunc (e *ProjectExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *ProjectExporter) restoreValue(val EntityObject[db.Project], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\tnewObj, err := store.CreateProject(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *ProjectExporter) exportDependsOn() []string {\n\treturn []string{User}\n}\n\nfunc (e *ProjectExporter) getName() string {\n\treturn Project\n}\n"
  },
  {
    "path": "services/export/ProjectUser.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype ProjectUserExporter struct {\n\tValueMap[db.ProjectUser]\n}\n\nfunc (e *ProjectUserExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\t\tusers, err := store.GetProjectUsers(projId, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(getUsers(users, projId), strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getUsers(vals []db.UserWithProjectRole, projId int) []db.ProjectUser {\n\tvalues := make([]db.ProjectUser, 0)\n\n\tfor _, val := range vals {\n\t\tvalues = append(values, db.ProjectUser{\n\t\t\tUserID:    val.User.ID,\n\t\t\tRole:      val.Role,\n\t\t\tProjectID: projId,\n\t\t})\n\t}\n\n\treturn values\n}\n\nfunc (e *ProjectUserExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *ProjectUserExporter) restoreValue(val EntityObject[db.ProjectUser], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.UserID, err = exporter.getNewKeyInt(User, GlobalScope, old.UserID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateProjectUser(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *ProjectUserExporter) exportDependsOn() []string {\n\treturn []string{User, Project}\n}\n\nfunc (e *ProjectUserExporter) importDependsOn() []string {\n\treturn []string{User, Project}\n}\n\nfunc (e *ProjectUserExporter) getName() string {\n\treturn ProjectUser\n}\n"
  },
  {
    "path": "services/export/Repository.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype RepositoryExporter struct {\n\tValueMap[db.Repository]\n}\n\nfunc (e *RepositoryExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\t\tenvs, err := store.GetRepositories(projId, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(envs, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *RepositoryExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *RepositoryExporter) restoreValue(val EntityObject[db.Repository], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.SSHKeyID, err = exporter.getNewKeyInt(AccessKey, val.scope, old.SSHKeyID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateRepository(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *RepositoryExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *RepositoryExporter) importDependsOn() []string {\n\treturn []string{Project, AccessKey}\n}\n\nfunc (e *RepositoryExporter) getName() string {\n\treturn Repository\n}\n"
  },
  {
    "path": "services/export/Role.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype RoleExporter struct {\n\tValueMap[db.Role]\n}\n\nfunc (e *RoleExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\troles, err := store.GetProjectRoles(proj)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = e.appendValues(roles, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\troles, err := store.GetGlobalRoles()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn e.appendValues(roles, GlobalScope)\n}\n\nfunc (e *RoleExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *RoleExporter) restoreValue(val EntityObject[db.Role], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyIntRef(Project, GlobalScope, old.ProjectID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateRole(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *RoleExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *RoleExporter) importDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *RoleExporter) getName() string {\n\treturn Role\n}\n"
  },
  {
    "path": "services/export/Runner.go",
    "content": "package export\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype RunnerExporter struct {\n\tValueMap[db.Runner]\n}\n\nfunc (e *RunnerExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tenvs, err := store.GetAllRunners(false, false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = e.appendValues(envs, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (e *RunnerExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *RunnerExporter) restoreValue(val EntityObject[db.Runner], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyIntRef(Project, GlobalScope, old.ProjectID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateRunner(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *RunnerExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *RunnerExporter) importDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *RunnerExporter) getName() string {\n\treturn Runner\n}\n"
  },
  {
    "path": "services/export/Schedule.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype ScheduleExporter struct {\n\tValueMap[db.Schedule]\n}\n\nfunc (e *ScheduleExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\tvals, err := store.GetProjectSchedules(proj, true, true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tenvs := getSchedules(vals)\n\t\terr = e.appendValues(envs, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getSchedules(vals []db.ScheduleWithTpl) []db.Schedule {\n\tvalues := make([]db.Schedule, 0)\n\n\tfor _, val := range vals {\n\t\tvalues = append(values, val.Schedule)\n\t}\n\n\treturn values\n}\nfunc (e *ScheduleExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *ScheduleExporter) restoreValue(val EntityObject[db.Schedule], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\tif old.TaskParamsID != nil {\n\t\told.TaskParams.InventoryID, err = exporter.getNewKeyIntRef(Inventory, val.scope, old.TaskParams.InventoryID, e)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\told.TaskParams.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.RepositoryID, err = exporter.getNewKeyIntRef(Repository, val.scope, old.RepositoryID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.TemplateID, err = exporter.getNewKeyInt(Template, val.scope, old.TemplateID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateSchedule(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *ScheduleExporter) getName() string {\n\treturn Schedule\n}\n\nfunc (e *ScheduleExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *ScheduleExporter) importDependsOn() []string {\n\treturn []string{Repository, Project, Inventory, Template}\n}\n"
  },
  {
    "path": "services/export/SecretStorage.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype SecretStorageExporter struct {\n\tValueMap[db.SecretStorage]\n}\n\nfunc (e *SecretStorageExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\n\t\tkeys, err := store.GetSecretStorages(projId)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(keys, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\nfunc (e *SecretStorageExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *SecretStorageExporter) restoreValue(val EntityObject[db.SecretStorage], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\n\tnewObj, err := store.CreateSecretStorage(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *SecretStorageExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *SecretStorageExporter) importDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *SecretStorageExporter) getName() string {\n\treturn SecretStorage\n}\n"
  },
  {
    "path": "services/export/Task.go",
    "content": "package export\n\nimport (\n\t\"slices\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TaskExporter struct {\n\tValueMap[db.Task]\n}\n\nfunc (e *TaskExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\t\ttasksTmpl, err := store.GetProjectTasks(proj, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\ttasks := make([]db.Task, len(tasksTmpl))\n\t\tfor i, task := range tasksTmpl {\n\t\t\ttasks[i] = task.Task\n\t\t}\n\n\t\tslices.Reverse(tasks)\n\n\t\terr = e.appendValues(tasks, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\nfunc (e *TaskExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TaskExporter) restoreValue(val EntityObject[db.Task], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.TemplateID, err = exporter.getNewKeyInt(Template, val.scope, old.TemplateID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.InventoryID, err = exporter.getNewKeyIntRef(Inventory, val.scope, old.InventoryID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ScheduleID, err = exporter.getNewKeyIntRef(Schedule, val.scope, old.ScheduleID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.UserID, err = exporter.getNewKeyIntRef(User, GlobalScope, old.UserID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.IntegrationID, err = exporter.getNewKeyIntRef(Integration, val.scope, old.IntegrationID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.BuildTaskID, err = exporter.getNewKeyIntRef(Task, val.scope, old.BuildTaskID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateTask(old, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *TaskExporter) getName() string {\n\treturn Task\n}\n\nfunc (e *TaskExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *TaskExporter) importDependsOn() []string {\n\treturn []string{Project, Template, Inventory, Integration, Schedule, User}\n}\n"
  },
  {
    "path": "services/export/TaskOutput.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TaskOutputExporter struct {\n\tValueMap[db.TaskOutput]\n}\n\nfunc (e *TaskOutputExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttaskCount, err := taskCount(exporter)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttaskIndex := 0\n\n\tfor _, projId := range projs {\n\n\t\ttasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tallValues := make([]db.TaskOutput, 0)\n\t\tfor _, task := range tasks {\n\n\t\t\toutputRes, err := store.GetTaskOutputs(projId, task, db.RetrieveQueryParams{})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tallValues = append(allValues, outputRes...)\n\n\t\t\ttaskIndex = taskIndex + 1\n\t\t\tprogress.update(float32(taskIndex)/float32(taskCount), 0)\n\t\t}\n\n\t\terr = e.appendValues(allValues, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc taskCount(exporter DataExporter) (int, error) {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tcount := 0\n\n\tfor _, projId := range projs {\n\n\t\ttasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tcount = count + len(tasks)\n\t}\n\n\treturn count, nil\n}\n\nfunc (e *TaskOutputExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\n\toutputs := make([]db.TaskOutput, 0)\n\n\tsize := len(e.values)\n\n\tfor index, val := range e.values {\n\t\told := val.value\n\n\t\told.TaskID, err = exporter.getNewKeyInt(Task, val.scope, old.TaskID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// boltDb currently doesn't support task stages\n\t\told.StageID = nil //, err = exporter.getNewKeyIntRef(TaskStage, val.scope, old.StageID, e)\n\t\t//if err != nil {\n\t\t//\treturn err\n\t\t//}\n\n\t\toutputs = append(outputs, old)\n\n\t\tif len(outputs) >= 1000 {\n\t\t\terr = store.InsertTaskOutputBatch(outputs)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\toutputs = make([]db.TaskOutput, 0)\n\t\t}\n\n\t\tprogress.update(float32(index)/float32(size), int64(index))\n\t}\n\n\tif len(outputs) > 0 {\n\t\terr = store.InsertTaskOutputBatch(outputs)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *TaskOutputExporter) getName() string {\n\treturn TaskOutput\n}\n\nfunc (e *TaskOutputExporter) exportDependsOn() []string {\n\treturn []string{Task}\n}\n\nfunc (e *TaskOutputExporter) importDependsOn() []string {\n\treturn []string{Task, TaskStage}\n}\n"
  },
  {
    "path": "services/export/TaskStage.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TaskStageExporter struct {\n\tValueMap[db.TaskStage]\n}\n\nfunc (e *TaskStageExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\n\t\ttasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tallValues := make([]db.TaskStage, 0)\n\t\tfor _, task := range tasks {\n\n\t\t\tstagesRes, err := store.GetTaskStages(projId, task)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tallValues = append(allValues, getStages(stagesRes)...)\n\t\t}\n\n\t\terr = e.appendValues(allValues, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getStages(vals []db.TaskStageWithResult) []db.TaskStage {\n\tvalues := make([]db.TaskStage, 0)\n\n\tfor _, val := range vals {\n\t\tvalues = append(values, db.TaskStage{\n\t\t\tID:     val.ID,\n\t\t\tTaskID: val.TaskID,\n\t\t\tStart:  val.Start,\n\t\t\tEnd:    val.End,\n\t\t\tType:   val.Type,\n\t\t})\n\t}\n\n\treturn values\n}\n\nfunc (e *TaskStageExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TaskStageExporter) restoreValue(val EntityObject[db.TaskStage], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.TaskID, err = exporter.getNewKeyInt(Task, val.scope, old.TaskID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateTaskStage(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *TaskStageExporter) getName() string {\n\treturn TaskStage\n}\n\nfunc (e *TaskStageExporter) exportDependsOn() []string {\n\treturn []string{Task}\n}\n\nfunc (e *TaskStageExporter) importDependsOn() []string {\n\treturn []string{Task}\n}\n"
  },
  {
    "path": "services/export/TaskStageResult.go",
    "content": "package export\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TaskStageResultExporter struct {\n\tValueMap[db.TaskStageResult]\n}\n\nfunc (e *TaskStageResultExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\n\t\ttasks, err := exporter.getLoadedKeysInt(Task, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tallValues := make([]db.TaskStageResult, 0)\n\t\tfor _, task := range tasks {\n\t\t\tstagesRes, err := store.GetTaskStages(projId, task)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tallValues = append(allValues, getStageResults(stagesRes)...)\n\t\t}\n\n\t\terr = e.appendValues(allValues, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc getStageResults(vals []db.TaskStageWithResult) []db.TaskStageResult {\n\tvalues := make([]db.TaskStageResult, 0)\n\n\tfor _, val := range vals {\n\t\tvalues = append(values, db.TaskStageResult{\n\t\t\tID:     val.ID,\n\t\t\tTaskID: val.TaskID,\n\t\t\tJSON:   val.JSON,\n\t\t})\n\t}\n\n\treturn values\n}\n\nfunc (e *TaskStageResultExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TaskStageResultExporter) restoreValue(val EntityObject[db.TaskStageResult], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.TaskID, err = exporter.getNewKeyInt(Task, val.scope, old.TaskID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tres := make(map[string]any)\n\terr = json.Unmarshal([]byte(old.JSON), &res)\n\tif err != nil {\n\t\tfmt.Println(\"Unable to parse TaskStageResult \" + old.JSON)\n\t}\n\n\treturn store.CreateTaskStageResult(old.TaskID, old.StageID, res)\n}\n\nfunc (e *TaskStageResultExporter) getName() string {\n\treturn TaskStageResult\n}\n\nfunc (e *TaskStageResultExporter) exportDependsOn() []string {\n\treturn []string{Task, Project}\n}\n\nfunc (e *TaskStageResultExporter) importDependsOn() []string {\n\treturn []string{Task, TaskStage}\n}\n"
  },
  {
    "path": "services/export/Template.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TemplateExporter struct {\n\tValueMap[db.Template]\n}\n\nfunc (e *TemplateExporter) load(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\n\t\ttemplates, err := store.GetTemplates(projId, db.TemplateFilter{}, db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(templates, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *TemplateExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TemplateExporter) restoreValue(val EntityObject[db.Template], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.Vaults = nil\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.InventoryID, err = exporter.getNewKeyIntRef(Inventory, val.scope, old.InventoryID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.EnvironmentID, err = exporter.getNewKeyIntRef(Environment, val.scope, old.EnvironmentID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.RepositoryID, err = exporter.getNewKeyInt(Repository, val.scope, old.RepositoryID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ViewID, err = exporter.getNewKeyIntRef(View, val.scope, old.ViewID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.BuildTemplateID, err = exporter.getNewKeyIntRef(Template, val.scope, old.BuildTemplateID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateTemplate(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *TemplateExporter) getName() string {\n\treturn Template\n}\n\nfunc (e *TemplateExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *TemplateExporter) importDependsOn() []string {\n\treturn []string{Project, Inventory, Environment, Repository, View}\n}\n"
  },
  {
    "path": "services/export/TemplateRoles.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TemplateRoleExporter struct {\n\tValueMap[db.TemplateRolePerm]\n}\n\nfunc (e *TemplateRoleExporter) load(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\t\ttemplates, err := exporter.getLoadedKeysInt(Template, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\troles := make([]db.TemplateRolePerm, 0)\n\n\t\tfor key := range templates {\n\t\t\ttemplateRoles, err := store.GetTemplateRoles(projId, key)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\troles = append(roles, templateRoles...)\n\t\t}\n\n\t\terr = e.appendValues(roles, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *TemplateRoleExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TemplateRoleExporter) restoreValue(val EntityObject[db.TemplateRolePerm], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.RoleSlug, err = exporter.getNewKey(Role, val.scope, old.RoleSlug)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.TemplateID, err = exporter.getNewKeyInt(Template, val.scope, old.TemplateID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateTemplateRole(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *TemplateRoleExporter) getName() string {\n\treturn TemplateRole\n}\n\nfunc (e *TemplateRoleExporter) importDependsOn() []string {\n\treturn []string{Role, Template, Project}\n}\n\nfunc (e *TemplateRoleExporter) exportDependsOn() []string {\n\treturn []string{Template, Project}\n}\n"
  },
  {
    "path": "services/export/TemplateVault.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype TemplateVaultExporter struct {\n\tValueMap[db.TemplateVault]\n}\n\nfunc (e *TemplateVaultExporter) load(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, projId := range projs {\n\t\ttemplates, err := exporter.getLoadedKeysInt(Template, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tvaultsArr := make([]db.TemplateVault, 0)\n\n\t\tfor key := range templates {\n\n\t\t\tvaults, err := store.GetTemplateVaults(projId, key)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tvaultsArr = append(vaultsArr, vaults...)\n\t\t}\n\n\t\terr = e.appendValues(vaultsArr, strconv.Itoa(projId))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e *TemplateVaultExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *TemplateVaultExporter) restoreValue(val EntityObject[db.TemplateVault], store db.Store, exporter DataExporter) (err error) {\n\told := val.value\n\n\told.VaultKeyID, err = exporter.getNewKeyIntRef(AccessKey, val.scope, old.VaultKeyID, e)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.TemplateID, err = exporter.getNewKeyInt(Template, val.scope, old.TemplateID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateTemplateVault(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *TemplateVaultExporter) getName() string {\n\treturn TemplateVault\n}\n\nfunc (e *TemplateVaultExporter) importDependsOn() []string {\n\treturn []string{Project, Template, AccessKey}\n}\n\nfunc (e *TemplateVaultExporter) exportDependsOn() []string {\n\treturn []string{Template}\n}\n"
  },
  {
    "path": "services/export/User.go",
    "content": "package export\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype UserExporter struct {\n\tValueMap[db.User]\n\tMergeExisting bool\n}\n\nfunc (a *UserExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\tusers, err := store.GetUsers(db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn a.appendValues(users, GlobalScope)\n}\n\nfunc (a *UserExporter) restore(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tvar userMap = make(map[string]*db.User)\n\tif a.MergeExisting {\n\t\tusers, err := store.GetUsers(db.RetrieveQueryParams{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfor _, user := range users {\n\t\t\tuserMap[user.Username] = &user\n\t\t}\n\t}\n\n\tfor _, val := range a.values {\n\t\tvar err error\n\t\told := val.value\n\t\tvar obj db.User\n\n\t\tif u, ok := userMap[old.Username]; ok && a.MergeExisting {\n\t\t\tobj = *u\n\t\t} else {\n\t\t\tobj, err = store.ImportUser(db.UserWithPwd{Pwd: old.Password, User: old})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\terr = exporter.mapKeys(a.getName(), GlobalScope, old.GetDbKey(), obj.GetDbKey())\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (a *UserExporter) getName() string {\n\treturn User\n}\n"
  },
  {
    "path": "services/export/View.go",
    "content": "package export\n\nimport (\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype ViewExporter struct {\n\tValueMap[db.View]\n}\n\nfunc (e *ViewExporter) load(store db.Store, exporter DataExporter, progress Progress) error {\n\n\tprojs, err := exporter.getLoadedKeysInt(Project, GlobalScope)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, proj := range projs {\n\n\t\tenvs, err := store.GetViews(proj)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = e.appendValues(envs, strconv.Itoa(proj))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e *ViewExporter) restore(store db.Store, exporter DataExporter, progress Progress) (err error) {\n\treturn e.restoreValues(store, exporter, progress, e)\n}\n\nfunc (e *ViewExporter) restoreValue(val EntityObject[db.View], store db.Store, exporter DataExporter) (err error) {\n\n\told := val.value\n\n\told.ProjectID, err = exporter.getNewKeyInt(Project, GlobalScope, old.ProjectID)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewObj, err := store.CreateView(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn exporter.mapKeys(e.getName(), val.scope, old.GetDbKey(), newObj.GetDbKey())\n}\n\nfunc (e *ViewExporter) exportDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *ViewExporter) importDependsOn() []string {\n\treturn []string{Project}\n}\n\nfunc (e *ViewExporter) getName() string {\n\treturn View\n}\n"
  },
  {
    "path": "services/project/backup.go",
    "content": "package project\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"reflect\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n)\n\nfunc findNameBySlug[T db.BackupSluggedEntity](slug string, items []T) (*string, error) {\n\tfor _, o := range items {\n\t\tif o.GetSlug() == slug {\n\t\t\tname := o.GetName()\n\t\t\treturn &name, nil\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"item %s does not exist\", slug)\n}\n\nfunc findNameByID[T db.BackupEntity](ID int, items []T) (*string, error) {\n\tfor _, o := range items {\n\t\tif o.GetID() == ID {\n\t\t\tname := o.GetName()\n\t\t\treturn &name, nil\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"item %d does not exist\", ID)\n}\n\nfunc findEntityByName[T db.BackupEntity](name *string, items []T) *T {\n\tif name == nil {\n\t\treturn nil\n\t}\n\tfor _, o := range items {\n\t\tif o.GetName() == *name {\n\t\t\treturn &o\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getSchedulesByProject(projectID int, schedules []db.Schedule) []db.Schedule {\n\tresult := make([]db.Schedule, 0)\n\tfor _, o := range schedules {\n\t\tif o.ProjectID == projectID {\n\t\t\tresult = append(result, o)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc getScheduleByTemplate(templateID int, schedules []db.Schedule) *string {\n\tfor _, o := range schedules {\n\t\tif o.TemplateID == templateID {\n\t\t\treturn &o.CronFormat\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc getRandomName(name string) string {\n\treturn name + \" - \" + random.String(10)\n}\n\nfunc makeUniqueNames[T any](items []T, getter func(item *T) string, setter func(item *T, name string)) {\n\tfor i := len(items) - 1; i >= 0; i-- {\n\t\tfor k, other := range items {\n\t\t\tif k == i {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tname := getter(&items[i])\n\n\t\t\tif name == getter(&other) {\n\t\t\t\trandomName := getRandomName(name)\n\t\t\t\tsetter(&items[i], randomName)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (b *BackupDB) makeUniqueNames() {\n\n\tmakeUniqueNames(b.templates, func(item *db.Template) string {\n\t\treturn item.Name\n\t}, func(item *db.Template, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.repositories, func(item *db.Repository) string {\n\t\treturn item.Name\n\t}, func(item *db.Repository, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.inventories, func(item *db.Inventory) string {\n\t\treturn item.Name\n\t}, func(item *db.Inventory, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.environments, func(item *db.Environment) string {\n\t\treturn item.Name\n\t}, func(item *db.Environment, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.keys, func(item *db.AccessKey) string {\n\t\treturn item.Name\n\t}, func(item *db.AccessKey, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.views, func(item *db.View) string {\n\t\treturn item.Title\n\t}, func(item *db.View, name string) {\n\t\titem.Title = name\n\t})\n\n\tmakeUniqueNames(b.integrations, func(item *db.Integration) string {\n\t\treturn item.Name\n\t}, func(item *db.Integration, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.schedules, func(item *db.Schedule) string {\n\t\treturn item.Name\n\t}, func(item *db.Schedule, name string) {\n\t\titem.Name = name\n\t})\n\n\tmakeUniqueNames(b.roles, func(item *db.Role) string {\n\t\treturn item.Name\n\t}, func(item *db.Role, name string) {\n\t\titem.Name = name\n\t})\n\n}\n\nfunc (b *BackupDB) load(projectID int, store db.Store) (err error) {\n\n\tb.templates, err = store.GetTemplates(projectID, db.TemplateFilter{}, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor i := range b.templates {\n\t\tvar vaults []db.TemplateVault\n\t\tvaults, err = store.GetTemplateVaults(b.templates[i].ProjectID, b.templates[i].ID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tb.templates[i].Vaults = vaults\n\t}\n\n\tb.repositories, err = store.GetRepositories(projectID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.keys, err = store.GetAccessKeys(projectID, db.GetAccessKeyOptions{IgnoreOwner: true}, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.views, err = store.GetViews(projectID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.inventories, err = store.GetInventories(projectID, db.RetrieveQueryParams{}, []db.InventoryType{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.environments, err = store.GetEnvironments(projectID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tschedules, err := store.GetProjectSchedules(projectID, true, true)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, s := range schedules {\n\t\tb.schedules = append(b.schedules, s.Schedule)\n\t}\n\n\tb.secretStorages, err = store.GetSecretStorages(projectID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.roles, err = store.GetProjectRoles(projectID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.globalRoles, err = store.GetGlobalRoles()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.meta, err = store.GetProject(projectID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.integrationProjAliases, err = store.GetIntegrationAliases(projectID, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.integrations, err = store.GetIntegrations(projectID, db.RetrieveQueryParams{}, true)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tb.integrationAliases = make(map[int][]db.IntegrationAlias)\n\tb.integrationMatchers = make(map[int][]db.IntegrationMatcher)\n\tb.integrationExtractValues = make(map[int][]db.IntegrationExtractValue)\n\tfor _, o := range b.integrations {\n\n\t\tb.integrationAliases[o.ID], err = store.GetIntegrationAliases(projectID, &o.ID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tb.integrationMatchers[o.ID], err = store.GetIntegrationMatchers(projectID, db.RetrieveQueryParams{}, o.ID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tb.integrationExtractValues[o.ID], err = store.GetIntegrationExtractValues(projectID, db.RetrieveQueryParams{}, o.ID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tb.templateRoles = make(map[int][]db.TemplateRolePerm)\n\tfor _, t := range b.templates {\n\t\tb.templateRoles[t.ID], err = store.GetTemplateRoles(projectID, t.ID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tb.makeUniqueNames()\n\n\treturn\n}\n\nfunc (b *BackupDB) format() (*BackupFormat, error) {\n\n\troles := make([]BackupRole, len(b.roles))\n\tfor i, r := range b.roles {\n\t\troles[i] = BackupRole{\n\t\t\tr,\n\t\t}\n\t}\n\n\tschedules := make([]BackupSchedule, len(b.schedules))\n\tfor i, o := range b.schedules {\n\n\t\ttplName, _ := findNameByID[db.Template](o.TemplateID, b.templates)\n\t\tvar repoName *string\n\t\tif o.RepositoryID != nil {\n\t\t\trepoName, _ = findNameByID[db.Repository](*o.RepositoryID, b.repositories)\n\t\t}\n\n\t\tif tplName == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tschedules[i] = BackupSchedule{\n\t\t\to,\n\t\t\t*tplName,\n\t\t\trepoName,\n\t\t}\n\n\t\tif o.TaskParams != nil && o.TaskParams.InventoryID != nil {\n\t\t\tschedules[i].TaskParams.InventoryName, _ = findNameByID[db.Inventory](*o.TaskParams.InventoryID, b.inventories)\n\t\t}\n\t}\n\n\tkeys := make([]BackupAccessKey, len(b.keys))\n\tfor i, o := range b.keys {\n\t\tkeys[i] = BackupAccessKey{\n\t\t\tAccessKey: o,\n\t\t}\n\t}\n\n\tsecretStorages := make([]BackupSecretStorage, len(b.secretStorages))\n\tfor i, o := range b.secretStorages {\n\t\tsecretStorages[i] = BackupSecretStorage{\n\t\t\tSecretStorage: o,\n\t\t}\n\n\t\tfor k := range keys {\n\t\t\tif keys[k].StorageID != nil && *keys[k].StorageID == o.ID {\n\t\t\t\tkeys[k].Storage = &o.Name\n\t\t\t}\n\t\t\tif keys[k].SourceStorageID != nil && *keys[k].SourceStorageID == o.ID {\n\t\t\t\tkeys[k].SourceStorage = &o.Name\n\t\t\t}\n\t\t}\n\t}\n\n\tenvironments := make([]BackupEnvironment, len(b.environments))\n\tfor i, o := range b.environments {\n\t\tenvironments[i] = BackupEnvironment{\n\t\t\to,\n\t\t}\n\t}\n\n\tinventories := make([]BackupInventory, len(b.inventories))\n\tfor i, o := range b.inventories {\n\t\tvar SSHKey *string = nil\n\t\tif o.SSHKeyID != nil {\n\t\t\tSSHKey, _ = findNameByID[db.AccessKey](*o.SSHKeyID, b.keys)\n\t\t}\n\t\tvar BecomeKey *string = nil\n\t\tif o.BecomeKeyID != nil {\n\t\t\tBecomeKey, _ = findNameByID[db.AccessKey](*o.BecomeKeyID, b.keys)\n\t\t}\n\t\tinventories[i] = BackupInventory{\n\t\t\tInventory: o,\n\t\t\tSSHKey:    SSHKey,\n\t\t\tBecomeKey: BecomeKey,\n\t\t}\n\t}\n\n\tviews := make([]BackupView, len(b.views))\n\tfor i, o := range b.views {\n\t\tviews[i] = BackupView{\n\t\t\to,\n\t\t}\n\t}\n\n\trepositories := make([]BackupRepository, len(b.repositories))\n\tfor i, o := range b.repositories {\n\t\tSSHKey, _ := findNameByID[db.AccessKey](o.SSHKeyID, b.keys)\n\t\trepositories[i] = BackupRepository{\n\t\t\tRepository: o,\n\t\t\tSSHKey:     SSHKey,\n\t\t}\n\t}\n\n\ttemplates := make([]BackupTemplate, len(b.templates))\n\tfor i, o := range b.templates {\n\t\tvar View *string = nil\n\t\tif o.ViewID != nil {\n\t\t\tView, _ = findNameByID[db.View](*o.ViewID, b.views)\n\t\t}\n\t\tvar vaults []BackupTemplateVault = nil\n\t\tfor _, vault := range o.Vaults {\n\t\t\tvar vaultKey *string = nil\n\t\t\tif vault.VaultKeyID != nil {\n\t\t\t\tvaultKey, _ = findNameByID[db.AccessKey](*vault.VaultKeyID, b.keys)\n\t\t\t}\n\t\t\tvaults = append(vaults, BackupTemplateVault{\n\t\t\t\tTemplateVault: vault,\n\t\t\t\tVaultKey:      vaultKey,\n\t\t\t})\n\n\t\t}\n\t\tvar Environment *string = nil\n\t\tif o.EnvironmentID != nil {\n\t\t\tEnvironment, _ = findNameByID[db.Environment](*o.EnvironmentID, b.environments)\n\t\t}\n\t\tvar BuildTemplate *string = nil\n\t\tif o.BuildTemplateID != nil {\n\t\t\tBuildTemplate, _ = findNameByID[db.Template](*o.BuildTemplateID, b.templates)\n\t\t}\n\t\tRepository, _ := findNameByID[db.Repository](o.RepositoryID, b.repositories)\n\n\t\tvar Inventory *string = nil\n\t\tif o.InventoryID != nil {\n\t\t\tInventory, _ = findNameByID[db.Inventory](*o.InventoryID, b.inventories)\n\t\t}\n\n\t\tif o.SurveyVarsJSON != nil {\n\t\t\tsurveyVars := make([]db.SurveyVar, 0)\n\t\t\terr := json.Unmarshal([]byte(*o.SurveyVarsJSON), &surveyVars)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\to.SurveyVars = surveyVars\n\t\t}\n\n\t\tvar roles []BackupTemplateRole\n\t\tfor _, r := range b.templateRoles[o.ID] {\n\t\t\tname, err := findNameBySlug[db.Role](r.RoleSlug, b.roles)\n\t\t\tif err == nil {\n\t\t\t\troles = append(roles, BackupTemplateRole{\n\t\t\t\t\tRole:        *name,\n\t\t\t\t\tIsGlobal:    false,\n\t\t\t\t\tPermissions: r.Permissions,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// Try to find in Global\n\t\t\t\tname, err = findNameBySlug[db.Role](r.RoleSlug, b.globalRoles)\n\t\t\t\tif err != nil {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\troles = append(roles, BackupTemplateRole{\n\t\t\t\t\tRole:        *name,\n\t\t\t\t\tIsGlobal:    true,\n\t\t\t\t\tPermissions: r.Permissions,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\ttemplates[i] = BackupTemplate{\n\t\t\tTemplate:      o,\n\t\t\tView:          View,\n\t\t\tRepository:    *Repository,\n\t\t\tInventory:     Inventory,\n\t\t\tEnvironment:   Environment,\n\t\t\tBuildTemplate: BuildTemplate,\n\t\t\tVaults:        vaults,\n\t\t\tRoles:         roles,\n\t\t}\n\t}\n\n\tintegrations := make([]BackupIntegration, len(b.integrations))\n\tfor i, o := range b.integrations {\n\n\t\tvar aliases []string\n\n\t\tfor _, a := range b.integrationAliases[o.ID] {\n\t\t\taliases = append(aliases, a.Alias)\n\t\t}\n\n\t\ttplName, _ := findNameByID[db.Template](o.TemplateID, b.templates)\n\n\t\tif tplName == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar keyName *string\n\n\t\tif o.AuthSecretID != nil {\n\t\t\tkeyName, _ = findNameByID[db.AccessKey](*o.AuthSecretID, b.keys)\n\t\t}\n\n\t\tintegrations[i] = BackupIntegration{\n\t\t\tIntegration:   o,\n\t\t\tAliases:       aliases,\n\t\t\tMatchers:      b.integrationMatchers[o.ID],\n\t\t\tExtractValues: b.integrationExtractValues[o.ID],\n\t\t\tTemplate:      *tplName,\n\t\t\tAuthSecret:    keyName,\n\t\t}\n\n\t\tif o.TaskParams != nil && o.TaskParams.InventoryID != nil {\n\t\t\tintegrations[i].TaskParams.InventoryName, _ = findNameByID[db.Inventory](*o.TaskParams.InventoryID, b.inventories)\n\t\t}\n\t}\n\n\tvar integrationAliases []string\n\n\tfor _, alias := range b.integrationProjAliases {\n\t\tintegrationAliases = append(integrationAliases, alias.Alias)\n\t}\n\n\treturn &BackupFormat{\n\t\tMeta: BackupMeta{\n\t\t\tb.meta,\n\t\t},\n\t\tInventories:        inventories,\n\t\tEnvironments:       environments,\n\t\tViews:              views,\n\t\tRepositories:       repositories,\n\t\tKeys:               keys,\n\t\tTemplates:          templates,\n\t\tIntegration:        integrations,\n\t\tIntegrationAliases: integrationAliases,\n\t\tSchedules:          schedules,\n\t\tSecretStorages:     secretStorages,\n\t\tRoles:              roles,\n\t}, nil\n}\n\nfunc GetBackup(projectID int, store db.Store) (*BackupFormat, error) {\n\tbackup := BackupDB{}\n\tif err := backup.load(projectID, store); err != nil {\n\t\treturn nil, err\n\t}\n\treturn backup.format()\n}\n\nfunc (b *BackupFormat) Marshal() (res string, err error) {\n\tdata, err := marshalValue(reflect.ValueOf(b))\n\tif err != nil {\n\t\treturn\n\t}\n\n\tbytes, err := json.MarshalIndent(data, \"\", \"  \")\n\tif err != nil {\n\t\treturn\n\t}\n\n\tres = string(bytes)\n\n\treturn\n}\n\nfunc (b *BackupFormat) Unmarshal(res string) (err error) {\n\t// Parse the JSON data into a map\n\tvar jsonData any\n\tif err = json.Unmarshal([]byte(res), &jsonData); err != nil {\n\t\treturn\n\t}\n\n\t// Start the recursive unmarshaling process\n\terr = unmarshalValueWithBackupTags(jsonData, reflect.ValueOf(b))\n\treturn\n}\n"
  },
  {
    "path": "services/project/backup_marshal.go",
    "content": "package project\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"reflect\"\n)\n\nfunc marshalValue(v reflect.Value) (any, error) {\n\t// Handle pointers\n\tif v.Kind() == reflect.Ptr {\n\t\tif v.IsNil() {\n\t\t\treturn nil, nil\n\t\t}\n\t\treturn marshalValue(v.Elem())\n\t}\n\n\t// Handle structs\n\tif v.Kind() == reflect.Struct {\n\t\ttypeOfV := v.Type()\n\t\tresult := make(map[string]any)\n\n\t\tfor i := 0; i < v.NumField(); i++ {\n\t\t\tfieldValue := v.Field(i)\n\t\t\tfieldType := typeOfV.Field(i)\n\n\t\t\t// Handle anonymous fields (embedded structs)\n\t\t\tif fieldType.Anonymous {\n\t\t\t\tembeddedValue, err := marshalValue(fieldValue)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tif embeddedMap, ok := embeddedValue.(map[string]any); ok {\n\t\t\t\t\t// Merge embedded struct fields into parent result map\n\t\t\t\t\tfor k, v := range embeddedMap {\n\t\t\t\t\t\tresult[k] = v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ttag := fieldType.Tag.Get(\"backup\")\n\t\t\tif tag == \"-\" {\n\t\t\t\tcontinue // Skip fields with backup:\"-\"\n\t\t\t}\n\n\t\t\t// Check if the field should be backed up\n\t\t\tif tag == \"\" {\n\t\t\t\t// Get the field name from the \"db\" tag\n\t\t\t\ttag = fieldType.Tag.Get(\"db\")\n\t\t\t\tif tag == \"\" || tag == \"-\" {\n\t\t\t\t\tcontinue // Skip if \"db\" tag is empty or \"-\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Recursively process the field value\n\t\t\tvalue, err := marshalValue(fieldValue)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tif value == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tresult[tag] = value\n\t\t}\n\t\treturn result, nil\n\t}\n\n\t// Handle slices and arrays\n\tif v.Kind() == reflect.Slice || v.Kind() == reflect.Array {\n\t\tif v.IsNil() {\n\t\t\treturn make([]any, 0), nil\n\t\t}\n\t\tvar result = make([]any, 0)\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\telemValue, err := marshalValue(v.Index(i))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tresult = append(result, elemValue)\n\t\t}\n\t\treturn result, nil\n\t}\n\n\t// Handle maps\n\tif v.Kind() == reflect.Map {\n\t\tif v.IsNil() {\n\t\t\treturn make(map[string]any), nil\n\t\t}\n\t\tresult := make(map[string]any)\n\t\tfor _, key := range v.MapKeys() {\n\t\t\t// Assuming the key is a string\n\t\t\tmapKey := fmt.Sprintf(\"%v\", key.Interface())\n\t\t\tmapValue, err := marshalValue(v.MapIndex(key))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tresult[mapKey] = mapValue\n\t\t}\n\t\treturn result, nil\n\t}\n\n\t// Handle other types (int, string, etc.)\n\treturn v.Interface(), nil\n}\n\nfunc setBasicType(data any, v reflect.Value) error {\n\tif !v.CanSet() {\n\t\treturn fmt.Errorf(\"cannot set value\")\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\tb, ok := data.(bool)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected bool for field, got %T\", data)\n\t\t}\n\t\tv.SetBool(b)\n\tcase reflect.String:\n\t\ts, ok := data.(string)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected string for field, got %T\", data)\n\t\t}\n\t\tv.SetString(s)\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tn, ok := toFloat64(data)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected number for field, got %T\", data)\n\t\t}\n\t\tv.SetInt(int64(n))\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tn, ok := toFloat64(data)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected number for field, got %T\", data)\n\t\t}\n\t\tv.SetUint(uint64(n))\n\tcase reflect.Float32, reflect.Float64:\n\t\tn, ok := toFloat64(data)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected number for field, got %T\", data)\n\t\t}\n\t\tv.SetFloat(n)\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported kind %v\", v.Kind())\n\t}\n\treturn nil\n}\n\nfunc toFloat64(data any) (float64, bool) {\n\tswitch n := data.(type) {\n\tcase float64:\n\t\treturn n, true\n\tcase float32:\n\t\treturn float64(n), true\n\tcase int:\n\t\treturn float64(n), true\n\tcase int64:\n\t\treturn float64(n), true\n\tcase int32:\n\t\treturn float64(n), true\n\tcase int16:\n\t\treturn float64(n), true\n\tcase int8:\n\t\treturn float64(n), true\n\tcase uint:\n\t\treturn float64(n), true\n\tcase uint64:\n\t\treturn float64(n), true\n\tcase uint32:\n\t\treturn float64(n), true\n\tcase uint16:\n\t\treturn float64(n), true\n\tcase uint8:\n\t\treturn float64(n), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc unmarshalValueWithBackupTags(data any, v reflect.Value) error {\n\t// Handle pointers\n\tif v.Kind() == reflect.Ptr {\n\t\t// Initialize pointer if it's nil\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\treturn unmarshalValueWithBackupTags(data, v.Elem())\n\t}\n\n\t// Handle structs\n\tif v.Kind() == reflect.Struct {\n\t\t// Data should be a map\n\t\tm, ok := data.(map[string]any)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected object for struct, got %T\", data)\n\t\t}\n\t\treturn unmarshalStructWithBackupTags(m, v)\n\t}\n\n\t// Handle slices and arrays\n\tif v.Kind() == reflect.Slice {\n\t\tdataSlice, ok := data.([]any)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected array for slice, got %T\", data)\n\t\t}\n\t\tslice := reflect.MakeSlice(v.Type(), len(dataSlice), len(dataSlice))\n\t\tfor i := 0; i < len(dataSlice); i++ {\n\t\t\telem := slice.Index(i)\n\t\t\tif err := unmarshalValueWithBackupTags(dataSlice[i], elem); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tv.Set(slice)\n\t\treturn nil\n\t}\n\n\tif v.Type() == reflect.TypeOf(db.MapStringAnyField{}) {\n\t\t// Data should be a map\n\t\tm, ok := data.(map[string]any)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected object for map[string]interface{}, got %T\", data)\n\t\t}\n\t\tv.Set(reflect.ValueOf(db.MapStringAnyField(m)))\n\t\treturn nil\n\t}\n\n\t// Handle maps\n\tif v.Kind() == reflect.Map {\n\t\tdataMap, ok := data.(map[string]any)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"expected object for map, got %T\", data)\n\t\t}\n\t\tmapType := v.Type()\n\t\tmapValue := reflect.MakeMap(mapType)\n\t\tfor key, value := range dataMap {\n\t\t\tkeyVal := reflect.ValueOf(key).Convert(mapType.Key())\n\t\t\tvalVal := reflect.New(mapType.Elem()).Elem()\n\t\t\tif err := unmarshalValueWithBackupTags(value, valVal); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tmapValue.SetMapIndex(keyVal, valVal)\n\t\t}\n\t\tv.Set(mapValue)\n\t\treturn nil\n\t}\n\n\t// Handle basic types\n\treturn setBasicType(data, v)\n}\n\nfunc unmarshalStructWithBackupTags(data map[string]any, v reflect.Value) error {\n\tt := v.Type()\n\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tfieldType := t.Field(i)\n\t\tfieldValue := v.Field(i)\n\n\t\t// Handle anonymous fields (embedded structs)\n\t\tif fieldType.Anonymous {\n\t\t\t// Pass the entire data map to the embedded struct\n\t\t\tif err := unmarshalStructWithBackupTags(data, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Skip fields with backup:\"-\"\n\t\tbackupTag := fieldType.Tag.Get(\"backup\")\n\n\t\tif backupTag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Determine the JSON key to use\n\t\tvar jsonKey string\n\t\tif backupTag != \"\" {\n\t\t\tjsonKey = backupTag\n\t\t} else {\n\t\t\tdbTag := fieldType.Tag.Get(\"db\")\n\t\t\tif dbTag != \"\" && dbTag != \"-\" {\n\t\t\t\tjsonKey = dbTag\n\t\t\t} else {\n\t\t\t\tcontinue // Skip if no backup or db tag\n\t\t\t}\n\t\t}\n\n\t\t// Check if the key exists in the data\n\t\tif value, ok := data[jsonKey]; ok {\n\t\t\tif !fieldValue.CanSet() {\n\t\t\t\tcontinue // Skip fields that cannot be set\n\t\t\t}\n\t\t\tif value == nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err := unmarshalValueWithBackupTags(value, fieldValue); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "services/project/backup_marshal_test.go",
    "content": "package project\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/stretchr/testify/assert\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc Test_MarshalValue_NilPointer_ReturnsNil(t *testing.T) {\n\tvar ptr *int\n\tresult, err := marshalValue(reflect.ValueOf(ptr))\n\tassert.NoError(t, err)\n\tassert.Nil(t, result)\n}\n\nfunc Test_MarshalValue_StructWithFields_ReturnsMap(t *testing.T) {\n\ttype TestStruct struct {\n\t\tField1 string `backup:\"field1\"`\n\t\tField2 int    `backup:\"field2\"`\n\t}\n\ttestStruct := TestStruct{Field1: \"value1\", Field2: 42}\n\tresult, err := marshalValue(reflect.ValueOf(testStruct))\n\tassert.NoError(t, err)\n\texpected := map[string]any{\"field1\": \"value1\", \"field2\": 42}\n\tassert.Equal(t, expected, result)\n}\n\nfunc Test_MarshalValue_Slice_ReturnsSlice(t *testing.T) {\n\tslice := []int{1, 2, 3}\n\tresult, err := marshalValue(reflect.ValueOf(slice))\n\tassert.NoError(t, err)\n\texpected := []any{1, 2, 3}\n\tassert.Equal(t, expected, result)\n}\n\nfunc Test_UnmarshalValueWithBackupTags_StructWithFields_SetsFields(t *testing.T) {\n\ttype TestStruct struct {\n\t\t//Field1     string               `backup:\"field1\"`\n\t\t//Field2     int                  `backup:\"field2\"`\n\t\tTaskParams db.MapStringAnyField `backup:\"task_params\"`\n\t}\n\tdata := map[string]any{\n\t\t//\"field1\": \"value1\",\n\t\t//\"field2\": 42,\n\t\t\"task_params\": map[string]any{\n\t\t\t\"allow_debug\": true,\n\t\t\t\"skip_tags\":   []string{\"123\"},\n\t\t},\n\t}\n\tvar testStruct TestStruct\n\terr := unmarshalValueWithBackupTags(data, reflect.ValueOf(&testStruct).Elem())\n\tassert.NoError(t, err)\n\t//assert.Equal(t, \"value1\", testStruct.Field1)\n\t//assert.Equal(t, 42, testStruct.Field2)\n}\nfunc Test_UnmarshalValueWithBackupTags_Slice_SetsElements(t *testing.T) {\n\tdata := []any{1, 2, 3}\n\tvar slice []int\n\terr := unmarshalValueWithBackupTags(data, reflect.ValueOf(&slice).Elem())\n\tassert.NoError(t, err)\n\texpected := []int{1, 2, 3}\n\tassert.Equal(t, expected, slice)\n}\n\nfunc Test_UnmarshalValueWithBackupTags_Map_SetsEntries(t *testing.T) {\n\tdata := map[string]any{\"key1\": \"value1\", \"key2\": \"value2\"}\n\tvar m map[string]string\n\terr := unmarshalValueWithBackupTags(data, reflect.ValueOf(&m).Elem())\n\tassert.NoError(t, err)\n\texpected := map[string]string{\"key1\": \"value1\", \"key2\": \"value2\"}\n\tassert.Equal(t, expected, m)\n}\nfunc Test_SetBasicType_InvalidType_ReturnsError(t *testing.T) {\n\tvar v reflect.Value\n\terr := setBasicType(\"string\", v)\n\tassert.Error(t, err)\n}\n\nfunc Test_ToFloat64_ValidInt_ReturnsFloat64(t *testing.T) {\n\tresult, ok := toFloat64(42)\n\tassert.True(t, ok)\n\tassert.Equal(t, 42.0, result)\n}\n\nfunc Test_ToFloat64_InvalidType_ReturnsFalse(t *testing.T) {\n\t_, ok := toFloat64(\"string\")\n\tassert.False(t, ok)\n}\n"
  },
  {
    "path": "services/project/backup_test.go",
    "content": "package project\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db/sql\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\ntype testItem struct {\n\tName string\n}\n\nfunc TestBackupProject(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tstore := sql.CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tName: \"Test 123\",\n\t})\n\tassert.NoError(t, err)\n\n\tkey, err := store.CreateAccessKey(db.AccessKey{\n\t\tProjectID: &proj.ID,\n\t\tType:      db.AccessKeyNone,\n\t})\n\tassert.NoError(t, err)\n\n\trepo, err := store.CreateRepository(db.Repository{\n\t\tProjectID: proj.ID,\n\t\tSSHKeyID:  key.ID,\n\t\tName:      \"Test\",\n\t\tGitURL:    \"git@example.com:test/test\",\n\t\tGitBranch: \"master\",\n\t})\n\tassert.NoError(t, err)\n\n\tinv, err := store.CreateInventory(db.Inventory{\n\t\tProjectID: proj.ID,\n\t\tID:        1,\n\t})\n\tassert.NoError(t, err)\n\n\tenv, err := store.CreateEnvironment(db.Environment{\n\t\tProjectID: proj.ID,\n\t\tName:      \"test\",\n\t\tJSON:      `{\"author\": \"Denis\", \"comment\": \"Hello, World!\"}`,\n\t})\n\tassert.NoError(t, err)\n\n\t_, err = store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tRepositoryID:  repo.ID,\n\t\tInventoryID:   &inv.ID,\n\t\tEnvironmentID: &env.ID,\n\t})\n\tassert.NoError(t, err)\n\n\tbackup, err := GetBackup(proj.ID, store)\n\tassert.NoError(t, err)\n\tassert.Equal(t, proj.ID, backup.Meta.ID)\n\n\tstr, err := backup.Marshal()\n\tassert.NoError(t, err)\n\n\trestoredBackup := &BackupFormat{}\n\terr = restoredBackup.Unmarshal(str)\n\tassert.NoError(t, err)\n\tassert.Equal(t, restoredBackup.Meta.Name, \"Test 123\")\n\n\trestoredBackup.Meta.Name = \"Test 1234\"\n\n\tuser, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"3412341234123\",\n\t\tUser: db.User{\n\t\t\tUsername: \"test\",\n\t\t\tName:     \"Test\",\n\t\t\tEmail:    \"test@example.com\",\n\t\t\tAdmin:    true,\n\t\t},\n\t})\n\tassert.NoError(t, err)\n\n\trestoredProj, err := restoredBackup.Restore(user, store)\n\tassert.NoError(t, err)\n\tassert.Equal(t, restoredProj.Name, \"Test 1234\")\n}\n\nfunc TestBackup_BackupSecretStorage(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tstore := sql.CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{\n\t\tName: \"Test 123\",\n\t})\n\tassert.NoError(t, err)\n\n\tstorage, err := store.CreateSecretStorage(db.SecretStorage{\n\t\tProjectID: proj.ID,\n\t\tType:      \"vault\",\n\t\tName:      \"Test\",\n\t})\n\tassert.NoError(t, err)\n\n\t_, err = store.CreateAccessKey(db.AccessKey{\n\t\tProjectID: &proj.ID,\n\t\tType:      db.AccessKeyNone,\n\t\tStorageID: &storage.ID,\n\t\tName:      \"Test Key\",\n\t\tOwner:     \"vault\",\n\t})\n\tassert.NoError(t, err)\n\n\tbackup, err := GetBackup(proj.ID, store)\n\tassert.NoError(t, err)\n\tassert.Equal(t, proj.ID, backup.Meta.ID)\n\tbackup.Meta.Name = \"Test 1234\"\n\n\tstr, err := backup.Marshal()\n\tassert.NoError(t, err)\n\n\tvar res map[string]any\n\tjson.Unmarshal([]byte(str), &res)\n\n\tassert.Equal(t, `{\n  \"environments\": [],\n  \"integration_aliases\": [],\n  \"integrations\": [],\n  \"inventories\": [],\n  \"keys\": [\n    {\n      \"name\": \"Test Key\",\n      \"owner\": \"vault\",\n      \"storage\": \"Test\",\n      \"type\": \"none\"\n    }\n  ],\n  \"meta\": {\n    \"alert\": false,\n    \"max_parallel_tasks\": 0,\n    \"name\": \"Test 1234\",\n    \"type\": \"\"\n  },\n  \"repositories\": [],\n  \"roles\": [],\n  \"schedules\": [],\n  \"secret_storages\": [\n    {\n      \"name\": \"Test\",\n      \"params\": {},\n      \"readonly\": false,\n      \"type\": \"vault\"\n    }\n  ],\n  \"templates\": [],\n  \"views\": []\n}`, str)\n\n\trestoredBackup := &BackupFormat{}\n\terr = restoredBackup.Unmarshal(str)\n\tassert.NoError(t, err)\n\tassert.Equal(t, restoredBackup.Meta.Name, \"Test 1234\")\n\n\tuser, err := store.CreateUser(db.UserWithPwd{\n\t\tPwd: \"3412341234123\",\n\t\tUser: db.User{\n\t\t\tUsername: \"test\",\n\t\t\tName:     \"Test\",\n\t\t\tEmail:    \"test@example.com\",\n\t\t\tAdmin:    true,\n\t\t},\n\t})\n\tassert.NoError(t, err)\n\n\trestoredProj, err := restoredBackup.Restore(user, store)\n\tassert.Nil(t, err)\n\n\trestoredStorages, err := store.GetSecretStorages(restoredProj.ID)\n\tassert.NoError(t, err)\n\tassert.Len(t, restoredStorages, 1)\n\n\trestoredKeys, err := store.GetAccessKeys(restoredProj.ID, db.GetAccessKeyOptions{IgnoreOwner: true}, db.RetrieveQueryParams{})\n\tassert.NoError(t, err)\n\tassert.Len(t, restoredKeys, 1)\n\n\tassert.Equal(t, *restoredKeys[0].StorageID, restoredStorages[0].ID)\n}\n\nfunc isUnique(items []testItem) bool {\n\tfor i, item := range items {\n\t\tfor k, other := range items {\n\t\t\tif i == k {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif item.Name == other.Name {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true\n}\n\nfunc TestMakeUniqueNames(t *testing.T) {\n\titems := []testItem{\n\t\t{Name: \"Project\"},\n\t\t{Name: \"Solution\"},\n\t\t{Name: \"Project\"},\n\t\t{Name: \"Project\"},\n\t\t{Name: \"Project\"},\n\t\t{Name: \"Project\"},\n\t}\n\n\tmakeUniqueNames(items, func(item *testItem) string {\n\t\treturn item.Name\n\t}, func(item *testItem, name string) {\n\t\titem.Name = name\n\t})\n\n\tassert.True(t, isUnique(items), \"Not unique names\")\n}\n"
  },
  {
    "path": "services/project/restore.go",
    "content": "package project\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n)\n\nfunc getEntryByName[T BackupEntry](name *string, items []T) *T {\n\tif name == nil {\n\t\treturn nil\n\t}\n\tfor _, o := range items {\n\t\tif o.GetName() == *name {\n\t\t\treturn &o\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc verifyDuplicate[T BackupEntry](name string, items []T) error {\n\tn := 0\n\tfor _, o := range items {\n\t\tif o.GetName() == name {\n\t\t\tn++\n\t\t}\n\t\tif n > 2 {\n\t\t\treturn fmt.Errorf(\"%s is duplicate\", name)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (e BackupSecretStorage) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupSecretStorage](e.Name, backup.SecretStorages)\n}\n\nfunc (e BackupSecretStorage) Restore(store db.Store, b *BackupDB) error {\n\tst := e.SecretStorage\n\tst.ProjectID = b.meta.ID\n\tnewStorage, err := store.CreateSecretStorage(st)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.secretStorages = append(b.secretStorages, newStorage)\n\treturn nil\n}\n\nfunc (e BackupRole) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupRole](e.Name, backup.Roles)\n}\n\nfunc (e BackupRole) Restore(store db.Store, b *BackupDB) error {\n\trole := e.Role\n\trole.ProjectID = &b.meta.ID\n\trole.Slug = random.String(16)\n\tnewRole, err := store.CreateRole(role)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.roles = append(b.roles, newRole)\n\treturn nil\n}\n\nfunc (e BackupEnvironment) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupEnvironment](e.Name, backup.Environments)\n}\n\nfunc (e BackupEnvironment) Restore(store db.Store, b *BackupDB) error {\n\tenv := e.Environment\n\tenv.ProjectID = b.meta.ID\n\tnewEnv, err := store.CreateEnvironment(env)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.environments = append(b.environments, newEnv)\n\treturn nil\n}\n\nfunc (e BackupView) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupView](e.Title, backup.Views)\n}\n\nfunc (e BackupView) Restore(store db.Store, b *BackupDB) error {\n\tv := e.View\n\tv.ProjectID = b.meta.ID\n\tnewView, err := store.CreateView(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.views = append(b.views, newView)\n\treturn nil\n}\n\nfunc (e BackupSchedule) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupSchedule](e.Name, backup.Schedules)\n}\n\nfunc (e BackupSchedule) Restore(store db.Store, b *BackupDB) error {\n\tv := e.Schedule\n\tv.ProjectID = b.meta.ID\n\n\ttpl := findEntityByName[db.Template](&e.Template, b.templates)\n\tif tpl == nil {\n\t\treturn fmt.Errorf(\"template does not exist in templates[].name\")\n\t}\n\tv.TemplateID = tpl.ID\n\n\tif e.CheckableRepository != nil {\n\t\trepo := findEntityByName[db.Repository](e.CheckableRepository, b.repositories)\n\t\tif repo == nil {\n\t\t\treturn fmt.Errorf(\"repo does not exist in repositories[].name\")\n\t\t}\n\t\tv.RepositoryID = &repo.ID\n\t}\n\n\tinv := findEntityByName[db.Inventory](e.TaskParams.InventoryName, b.inventories)\n\tif inv != nil {\n\t\tv.TaskParams.InventoryID = &inv.ID\n\t}\n\n\tnewSchedule, err := store.CreateSchedule(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tb.schedules = append(b.schedules, newSchedule)\n\treturn nil\n}\n\nfunc (e BackupAccessKey) Verify(backup *BackupFormat) error {\n\treturn verifyDuplicate[BackupAccessKey](e.Name, backup.Keys)\n}\n\nfunc (e BackupAccessKey) Restore(store db.Store, b *BackupDB) error {\n\n\tkey := e.AccessKey\n\tkey.ProjectID = &b.meta.ID\n\n\tif e.Storage != nil {\n\t\tstorage := findEntityByName[db.SecretStorage](e.Storage, b.secretStorages)\n\t\tif storage == nil {\n\t\t\treturn fmt.Errorf(\"secret storage does not exist in secret_storage[].name\")\n\t\t}\n\t\tkey.StorageID = &storage.ID\n\t}\n\n\tif e.SourceStorage != nil {\n\t\tsourceStorage := findEntityByName[db.SecretStorage](e.SourceStorage, b.secretStorages)\n\t\tif sourceStorage == nil {\n\t\t\treturn fmt.Errorf(\"secret storage does not exist in secret_storage[].name\")\n\t\t}\n\t\tkey.SourceStorageID = &sourceStorage.ID\n\t}\n\n\tnewKey, err := store.CreateAccessKey(key)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.keys = append(b.keys, newKey)\n\treturn nil\n}\n\nfunc (e BackupInventory) Verify(backup *BackupFormat) error {\n\tif err := verifyDuplicate[BackupInventory](e.Name, backup.Inventories); err != nil {\n\t\treturn err\n\t}\n\tif e.SSHKey != nil && getEntryByName[BackupAccessKey](e.SSHKey, backup.Keys) == nil {\n\t\treturn fmt.Errorf(\"SSHKey does not exist in keys[].Name\")\n\t}\n\tif e.BecomeKey != nil && getEntryByName[BackupAccessKey](e.BecomeKey, backup.Keys) == nil {\n\t\treturn fmt.Errorf(\"BecomeKey does not exist in keys[].Name\")\n\t}\n\treturn nil\n}\n\nfunc (e BackupInventory) Restore(store db.Store, b *BackupDB) error {\n\tvar SSHKeyID *int\n\tif e.SSHKey == nil {\n\t\tSSHKeyID = nil\n\t} else if k := findEntityByName[db.AccessKey](e.SSHKey, b.keys); k == nil {\n\t\tSSHKeyID = nil\n\t} else {\n\t\tSSHKeyID = &((*k).ID)\n\t}\n\tvar BecomeKeyID *int\n\tif e.BecomeKey == nil {\n\t\tBecomeKeyID = nil\n\t} else if k := findEntityByName[db.AccessKey](e.BecomeKey, b.keys); k == nil {\n\t\tBecomeKeyID = nil\n\t} else {\n\t\tBecomeKeyID = &((*k).ID)\n\t}\n\n\tinv := e.Inventory\n\tinv.ProjectID = b.meta.ID\n\tinv.SSHKeyID = SSHKeyID\n\tinv.BecomeKeyID = BecomeKeyID\n\n\tnewInventory, err := store.CreateInventory(inv)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.inventories = append(b.inventories, newInventory)\n\treturn nil\n}\n\nfunc (e BackupRepository) Verify(backup *BackupFormat) error {\n\tif err := verifyDuplicate[BackupRepository](e.Name, backup.Repositories); err != nil {\n\t\treturn err\n\t}\n\tif e.SSHKey != nil && getEntryByName[BackupAccessKey](e.SSHKey, backup.Keys) == nil {\n\t\treturn fmt.Errorf(\"SSHKey does not exist in keys[].Name\")\n\t}\n\treturn nil\n}\n\nfunc (e BackupRepository) Restore(store db.Store, b *BackupDB) error {\n\tvar SSHKeyID int\n\tif k := findEntityByName[db.AccessKey](e.SSHKey, b.keys); k == nil {\n\t\treturn fmt.Errorf(\"SSHKey does not exist in keys[].Name\")\n\t} else {\n\t\tSSHKeyID = (*k).ID\n\t}\n\n\trepo := e.Repository\n\trepo.ProjectID = b.meta.ID\n\trepo.SSHKeyID = SSHKeyID\n\n\tnewRepo, err := store.CreateRepository(repo)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.repositories = append(b.repositories, newRepo)\n\treturn nil\n}\n\nfunc (e BackupTemplate) Verify(backup *BackupFormat) error {\n\tif err := verifyDuplicate[BackupTemplate](e.Name, backup.Templates); err != nil {\n\t\treturn err\n\t}\n\n\tif getEntryByName[BackupRepository](&e.Repository, backup.Repositories) == nil {\n\t\treturn fmt.Errorf(\"repository does not exist in repositories[].name\")\n\t}\n\n\tif e.Inventory != nil && getEntryByName[BackupInventory](e.Inventory, backup.Inventories) == nil {\n\t\treturn fmt.Errorf(\"inventory does not exist in inventories[].name\")\n\t}\n\n\tif e.VaultKey != nil && getEntryByName[BackupAccessKey](e.VaultKey, backup.Keys) == nil {\n\t\treturn fmt.Errorf(\"vault_key does not exist in keys[].name\")\n\t}\n\n\tif e.Vaults != nil {\n\t\tfor _, vault := range e.Vaults {\n\t\t\tif vault.VaultKey != nil {\n\t\t\t\tif getEntryByName[BackupAccessKey](vault.VaultKey, backup.Keys) == nil {\n\t\t\t\t\treturn fmt.Errorf(\"vaults[].vaultKey does not exist in keys[].name\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif e.View != nil && getEntryByName[BackupView](e.View, backup.Views) == nil {\n\t\treturn fmt.Errorf(\"view does not exist in views[].name\")\n\t}\n\n\tif buildTemplate := getEntryByName[BackupTemplate](e.BuildTemplate, backup.Templates); string(e.Type) == \"deploy\" && buildTemplate == nil {\n\t\treturn fmt.Errorf(\"deploy is build but build_template does not exist in templates[].name\")\n\t}\n\n\treturn nil\n}\n\nfunc (e BackupTemplate) Restore(store db.Store, b *BackupDB) error {\n\tvar InventoryID *int\n\tif e.Inventory != nil {\n\t\tif k := findEntityByName[db.Inventory](e.Inventory, b.inventories); k == nil {\n\t\t\treturn fmt.Errorf(\"inventory does not exist in inventories[].name\")\n\t\t} else {\n\t\t\tid := k.GetID()\n\t\t\tInventoryID = &id\n\t\t}\n\t}\n\n\tvar EnvironmentID *int\n\tif e.Environment != nil {\n\t\tif k := findEntityByName[db.Environment](e.Environment, b.environments); k == nil {\n\t\t\treturn fmt.Errorf(\"environment does not exist in environments[].name\")\n\t\t} else {\n\t\t\tid := k.GetID()\n\t\t\tEnvironmentID = &id\n\t\t}\n\t}\n\n\tvar RepositoryID int\n\tif k := findEntityByName[db.Repository](&e.Repository, b.repositories); k == nil {\n\t\treturn fmt.Errorf(\"repository does not exist in repositories[].name\")\n\t} else {\n\t\tRepositoryID = k.GetID()\n\t}\n\n\tvar BuildTemplateID *int\n\tif string(e.Type) != \"deploy\" {\n\t\tBuildTemplateID = nil\n\t} else if k := findEntityByName[db.Template](e.BuildTemplate, b.templates); k == nil {\n\t\tBuildTemplateID = nil\n\t} else {\n\t\tBuildTemplateID = &(k.ID)\n\t}\n\n\tvar ViewID *int\n\tif k := findEntityByName[db.View](e.View, b.views); k == nil {\n\t\tViewID = nil\n\t} else {\n\t\tViewID = &k.ID\n\t}\n\n\ttemplate := e.Template\n\ttemplate.ProjectID = b.meta.ID\n\ttemplate.RepositoryID = RepositoryID\n\ttemplate.EnvironmentID = EnvironmentID\n\ttemplate.InventoryID = InventoryID\n\ttemplate.ViewID = ViewID\n\ttemplate.BuildTemplateID = BuildTemplateID\n\n\tnewTemplate, err := store.CreateTemplate(template)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.templates = append(b.templates, newTemplate)\n\n\tif e.Vaults != nil {\n\t\tfor _, vault := range e.Vaults {\n\t\t\tvar VaultKeyID *int\n\n\t\t\tif vault.VaultKey != nil {\n\t\t\t\tif k := findEntityByName[db.AccessKey](vault.VaultKey, b.keys); k == nil {\n\t\t\t\t\treturn fmt.Errorf(\"vaults[].vaultKey does not exist in keys[].name\")\n\t\t\t\t} else {\n\t\t\t\t\tVaultKeyID = &k.ID\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttplVault := vault.TemplateVault\n\t\t\ttplVault.ProjectID = b.meta.ID\n\t\t\ttplVault.TemplateID = newTemplate.ID\n\t\t\ttplVault.VaultKeyID = VaultKeyID\n\n\t\t\t_, err := store.CreateTemplateVault(tplVault)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\tif e.Roles != nil {\n\t\tfor _, role := range e.Roles {\n\t\t\tif role.IsGlobal {\n\t\t\t\tr, err := store.GetGlobalRoleBySlug(role.Role)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"global role does not exist: %s\", role.Role)\n\t\t\t\t}\n\n\t\t\t\t_, err = store.CreateTemplateRole(db.TemplateRolePerm{\n\t\t\t\t\tTemplateID:  newTemplate.ID,\n\t\t\t\t\tRoleSlug:    r.Slug,\n\t\t\t\t\tProjectID:   b.meta.ID,\n\t\t\t\t\tPermissions: role.Permissions,\n\t\t\t\t})\n\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif k := findEntityByName[db.Role](&role.Role, b.roles); k == nil {\n\t\t\t\treturn fmt.Errorf(\"roles[].role does not exist in roles[].name\")\n\t\t\t} else {\n\t\t\t\t_, err = store.CreateTemplateRole(db.TemplateRolePerm{\n\t\t\t\t\tTemplateID:  newTemplate.ID,\n\t\t\t\t\tRoleSlug:    k.Slug,\n\t\t\t\t\tProjectID:   b.meta.ID,\n\t\t\t\t\tPermissions: role.Permissions,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (e BackupIntegration) Restore(store db.Store, b *BackupDB) error {\n\tvar authSecretID *int\n\n\tif e.AuthSecret == nil {\n\t\tauthSecretID = nil\n\t} else if k := findEntityByName[db.AccessKey](e.AuthSecret, b.keys); k == nil {\n\t\tauthSecretID = nil\n\t} else {\n\t\tauthSecretID = &((*k).ID)\n\t}\n\n\ttpl := findEntityByName[db.Template](&e.Template, b.templates)\n\tif tpl == nil {\n\t\treturn fmt.Errorf(\"template does not exist in templates[].name\")\n\t}\n\n\tintegration := e.Integration\n\tintegration.ProjectID = b.meta.ID\n\tintegration.AuthSecretID = authSecretID\n\tintegration.TemplateID = tpl.ID\n\n\tif integration.TaskParams != nil {\n\t\tinv := findEntityByName[db.Inventory](e.TaskParams.InventoryName, b.inventories)\n\t\tif inv != nil {\n\t\t\tintegration.TaskParams.InventoryID = &inv.ID\n\t\t}\n\t}\n\n\tnewIntegration, err := store.CreateIntegration(integration)\n\tif err != nil {\n\t\treturn err\n\t}\n\tb.integrations = append(b.integrations, newIntegration)\n\n\tfor _, m := range e.Matchers {\n\t\tm.IntegrationID = newIntegration.ID\n\t\t_, _ = store.CreateIntegrationMatcher(b.meta.ID, m)\n\t}\n\n\tfor _, v := range e.ExtractValues {\n\t\tv.IntegrationID = newIntegration.ID\n\t\t_, _ = store.CreateIntegrationExtractValue(b.meta.ID, v)\n\t}\n\n\tfor _, a := range e.Aliases {\n\t\talias := db.IntegrationAlias{\n\t\t\tAlias:         a,\n\t\t\tProjectID:     b.meta.ID,\n\t\t\tIntegrationID: &newIntegration.ID,\n\t\t}\n\t\t_, _ = store.CreateIntegrationAlias(alias)\n\t}\n\n\treturn nil\n}\n\nfunc (backup *BackupFormat) Verify() error {\n\tfor i, o := range backup.Environments {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at environments[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Views {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at views[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Schedules {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at templates[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Keys {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at keys[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Repositories {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at repositories[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Inventories {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at inventories[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.SecretStorages {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at secret storage[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Templates {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at templates[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\tfor i, o := range backup.Roles {\n\t\tif err := o.Verify(backup); err != nil {\n\t\t\treturn fmt.Errorf(\"error at roles[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (backup *BackupFormat) Restore(user db.User, store db.Store) (*db.Project, error) {\n\tvar b = BackupDB{}\n\tproject := backup.Meta.Project\n\n\t// Prevent importing a project with a name that already exists\n\texistingProjects, err := store.GetAllProjects()\n\tif err == nil {\n\t\tfor _, p := range existingProjects {\n\t\t\tif p.Name == project.Name { // exact name match\n\t\t\t\treturn nil, db.NewValidationError(fmt.Sprintf(\"project with name '%s' already exists\", project.Name))\n\t\t\t}\n\t\t}\n\t}\n\n\tnewProject, err := store.CreateProject(project)\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif _, err = store.CreateProjectUser(db.ProjectUser{\n\t\tProjectID: newProject.ID,\n\t\tUserID:    user.ID,\n\t\tRole:      db.ProjectOwner,\n\t}); err != nil {\n\t\treturn nil, err\n\t}\n\n\tb.meta = newProject\n\n\tfor i, o := range backup.SecretStorages {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at secret storage[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Roles {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at roles[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Environments {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at environments[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Views {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at views[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Keys {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at keys[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Repositories {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at repositories[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Inventories {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at inventories[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tdeployTemplates := make([]int, 0)\n\tfor i, o := range backup.Templates {\n\t\tif string(o.Type) == \"deploy\" {\n\t\t\tdeployTemplates = append(deployTemplates, i)\n\t\t\tcontinue\n\t\t}\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at templates[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor _, i := range deployTemplates {\n\t\to := backup.Templates[i]\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at templates[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor i, o := range backup.Integration {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at integrations[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\tfor _, o := range backup.IntegrationAliases {\n\t\talias := db.IntegrationAlias{\n\t\t\tAlias:     o,\n\t\t\tProjectID: b.meta.ID,\n\t\t}\n\t\t_, _ = store.CreateIntegrationAlias(alias)\n\t}\n\n\tfor i, o := range backup.Schedules {\n\t\tif err := o.Restore(store, &b); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"error at schedules[%d]: %s\", i, err.Error())\n\t\t}\n\t}\n\n\treturn &newProject, nil\n}\n"
  },
  {
    "path": "services/project/types.go",
    "content": "package project\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype BackupDB struct {\n\tmeta         db.Project\n\ttemplates    []db.Template\n\trepositories []db.Repository\n\tkeys         []db.AccessKey\n\tviews        []db.View\n\tinventories  []db.Inventory\n\tenvironments []db.Environment\n\tschedules    []db.Schedule\n\n\tintegrationProjAliases   []db.IntegrationAlias\n\tintegrations             []db.Integration\n\tintegrationAliases       map[int][]db.IntegrationAlias\n\tintegrationMatchers      map[int][]db.IntegrationMatcher\n\tintegrationExtractValues map[int][]db.IntegrationExtractValue\n\n\tsecretStorages []db.SecretStorage\n\tglobalRoles    []db.Role\n\troles          []db.Role\n\ttemplateRoles  map[int][]db.TemplateRolePerm\n}\n\ntype BackupFormat struct {\n\tMeta               BackupMeta            `backup:\"meta\"`\n\tTemplates          []BackupTemplate      `backup:\"templates\"`\n\tRepositories       []BackupRepository    `backup:\"repositories\"`\n\tKeys               []BackupAccessKey     `backup:\"keys\"`\n\tViews              []BackupView          `backup:\"views\"`\n\tInventories        []BackupInventory     `backup:\"inventories\"`\n\tEnvironments       []BackupEnvironment   `backup:\"environments\"`\n\tIntegration        []BackupIntegration   `backup:\"integrations\"`\n\tIntegrationAliases []string              `backup:\"integration_aliases\"`\n\tSchedules          []BackupSchedule      `backup:\"schedules\"`\n\tSecretStorages     []BackupSecretStorage `backup:\"secret_storages\"`\n\tRoles              []BackupRole          `backup:\"roles\"`\n}\n\ntype BackupMeta struct {\n\tdb.Project\n}\n\ntype BackupEnvironment struct {\n\tdb.Environment\n}\n\ntype BackupAccessKey struct {\n\tdb.AccessKey\n\tSourceStorage *string `backup:\"source_storage\"`\n\tStorage       *string `backup:\"storage\"`\n}\n\ntype BackupSchedule struct {\n\tdb.Schedule\n\tTemplate            string  `backup:\"template\"`\n\tCheckableRepository *string `backup:\"checkable_repository\"`\n}\n\ntype BackupView struct {\n\tdb.View\n}\n\ntype BackupInventory struct {\n\tdb.Inventory\n\tSSHKey    *string `backup:\"ssh_key\"`\n\tBecomeKey *string `backup:\"become_key\"`\n}\n\ntype BackupRepository struct {\n\tdb.Repository\n\tSSHKey *string `backup:\"ssh_key\"`\n}\n\ntype BackupTemplateRole struct {\n\tRole        string                   `backup:\"role\"`\n\tIsGlobal    bool                     `backup:\"is_global\"`\n\tPermissions db.ProjectUserPermission `backup:\"permissions\"`\n}\n\ntype BackupTemplate struct {\n\tdb.Template\n\n\tInventory     *string               `backup:\"inventory\"`\n\tRepository    string                `backup:\"repository\"`\n\tEnvironment   *string               `backup:\"environment\"`\n\tBuildTemplate *string               `backup:\"build_template\"`\n\tView          *string               `backup:\"view\"`\n\tVaults        []BackupTemplateVault `backup:\"vaults\"`\n\t//Cron          *string               `backup:\"cron\"`\n\n\t// Deprecated: Left here for compatibility with old backups\n\tVaultKey *string `json:\"vault_key\"`\n\n\tRoles []BackupTemplateRole `backup:\"roles\"`\n}\n\ntype BackupTemplateVault struct {\n\tdb.TemplateVault\n\tVaultKey *string `backup:\"vault_key\"`\n}\n\ntype BackupIntegration struct {\n\tdb.Integration\n\tAliases       []string                     `backup:\"aliases\"`\n\tMatchers      []db.IntegrationMatcher      `backup:\"matchers\"`\n\tExtractValues []db.IntegrationExtractValue `backup:\"extract_values\"`\n\tTemplate      string                       `backup:\"template\"`\n\tAuthSecret    *string                      `backup:\"auth_secret\"`\n}\n\ntype BackupSecretStorage struct {\n\tdb.SecretStorage\n}\n\ntype BackupRole struct {\n\tdb.Role\n}\n\ntype BackupEntry interface {\n\tGetName() string\n\tVerify(backup *BackupFormat) error\n\tRestore(store db.Store, b *BackupDB) error\n}\n\nfunc (e BackupEnvironment) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupInventory) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupAccessKey) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupRepository) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupView) GetName() string {\n\treturn e.Title\n}\n\nfunc (e BackupTemplate) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupSecretStorage) GetName() string {\n\treturn e.Name\n}\n\nfunc (e BackupRole) GetName() string {\n\treturn e.Name\n}\n"
  },
  {
    "path": "services/runners/job_pool.go",
    "content": "package runners\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/x509\"\n\t\"encoding/json\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strconv\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype JobLogger struct {\n\tContext string\n}\n\nfunc (e *JobLogger) ActionError(err error, action string, message string) {\n\tutil.LogErrorF(err, log.Fields{\n\t\t\"type\":    \"action\",\n\t\t\"context\": e.Context,\n\t\t\"action\":  action,\n\t\t\"error\":   message,\n\t})\n}\n\nfunc (e *JobLogger) Info(message string) {\n\tlog.WithFields(log.Fields{\n\t\t\"context\": e.Context,\n\t}).Info(message)\n}\n\nfunc (e *JobLogger) TaskInfo(message string, task int, status string) {\n\tlog.WithFields(log.Fields{\n\t\t\"type\":    \"task\",\n\t\t\"context\": e.Context,\n\t\t\"task\":    task,\n\t\t\"status\":  status,\n\t}).Info(message)\n}\n\nfunc (e *JobLogger) Panic(err error, action string, message string) {\n\tlog.WithFields(log.Fields{\n\t\t\"context\": e.Context,\n\t}).Panic(message)\n}\n\nfunc (e *JobLogger) Debug(message string) {\n\tlog.WithFields(log.Fields{\n\t\t\"context\": e.Context,\n\t}).Debug(message)\n}\n\ntype JobPool struct {\n\trunningJobs map[int]*runningJob\n\n\tqueue []*job\n\n\tprocessing int32\n\n\tkeyInstaller db_lib.AccessKeyInstaller\n}\n\nfunc NewJobPool(keyInstaller db_lib.AccessKeyInstaller) *JobPool {\n\treturn &JobPool{\n\t\trunningJobs:  make(map[int]*runningJob),\n\t\tqueue:        make([]*job, 0),\n\t\tprocessing:   0,\n\t\tkeyInstaller: keyInstaller,\n\t}\n}\n\nfunc (p *JobPool) existsInQueue(taskID int) bool {\n\tfor _, j := range p.queue {\n\t\tif j.job.Task.ID == taskID {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (p *JobPool) hasRunningJobs() bool {\n\tfor _, j := range p.runningJobs {\n\t\tif !j.status.IsFinished() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\nfunc (p *JobPool) Register(configFilePath *string) (err error) {\n\n\tok := p.tryRegisterRunner(configFilePath)\n\n\tif !ok {\n\t\terr = fmt.Errorf(\"runner registration failed\")\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (p *JobPool) Unregister() (err error) {\n\n\tif util.Config.Runner.Token == \"\" {\n\t\treturn fmt.Errorf(\"runner is not registered\")\n\t}\n\n\tclient := &http.Client{}\n\n\turl := util.Config.WebHost + \"/api/internal/runners\"\n\n\treq, err := http.NewRequest(\"DELETE\", url, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif resp.StatusCode >= 400 && resp.StatusCode != 404 {\n\t\terr = fmt.Errorf(\"encountered error while unregistering runner; server returned code %d\", resp.StatusCode)\n\t\treturn\n\t}\n\n\tif util.Config.Runner.TokenFile != \"\" {\n\t\terr = os.Remove(util.Config.Runner.TokenFile)\n\t}\n\n\treturn\n}\n\nfunc (p *JobPool) Run() {\n\tlogger := JobLogger{Context: \"running\"}\n\n\tlaunched := false\n\n\tif util.Config.Runner.Token == \"\" {\n\t\tlogger.Panic(fmt.Errorf(\"no token provided\"), \"read input\", \"can not retrieve runner token\")\n\t}\n\n\tqueueTicker := time.NewTicker(5 * time.Second)\n\trequestTimer := time.NewTicker(1 * time.Second)\n\tp.runningJobs = make(map[int]*runningJob)\n\n\tdefer func() {\n\t\tqueueTicker.Stop()\n\t\trequestTimer.Stop()\n\t}()\n\n\tfor {\n\t\tselect {\n\n\t\tcase <-queueTicker.C: // timer 5 seconds: get task from queue and run it\n\t\t\tlogger.Debug(\"Checking queue\")\n\n\t\t\tif len(p.queue) == 0 {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tt := p.queue[0]\n\t\t\tif t.status == task_logger.TaskFailStatus {\n\t\t\t\t//delete failed TaskRunner from queue\n\t\t\t\tp.queue = p.queue[1:]\n\t\t\t\tlogger.TaskInfo(\"Task dequeued\", t.job.Task.ID, \"failed\")\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tp.runningJobs[t.job.Task.ID] = &runningJob{\n\t\t\t\tjob: t.job,\n\t\t\t}\n\n\t\t\tt.job.Logger = t.job.App.SetLogger(p.runningJobs[t.job.Task.ID])\n\n\t\t\tgo func(runningJob *runningJob) {\n\t\t\t\trunningJob.SetStatus(task_logger.TaskRunningStatus)\n\n\t\t\t\terr := runningJob.job.Run(t.username, t.incomingVersion, t.alias)\n\n\t\t\t\tif runningJob.status.IsFinished() {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif err != nil {\n\t\t\t\t\tlogger.ActionError(err, \"launch job\", \"job failed\")\n\t\t\t\t\tt.job.Logger.Log(\"Unable to launch the application. Please contact your system administrator for assistance.\")\n\n\t\t\t\t\tif runningJob.status == task_logger.TaskStoppingStatus {\n\t\t\t\t\t\trunningJob.SetStatus(task_logger.TaskStoppedStatus)\n\t\t\t\t\t} else {\n\t\t\t\t\t\trunningJob.SetStatus(task_logger.TaskFailStatus)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trunningJob.SetStatus(task_logger.TaskSuccessStatus)\n\t\t\t\t}\n\n\t\t\t\tlogger.TaskInfo(\"Task finished\", runningJob.job.Task.ID, string(runningJob.status))\n\t\t\t}(p.runningJobs[t.job.Task.ID])\n\n\t\t\tp.queue = p.queue[1:]\n\t\t\tlogger.TaskInfo(\"Task dequeued\", t.job.Task.ID, string(t.job.Task.Status))\n\t\t\tlogger.TaskInfo(\"Task started\", t.job.Task.ID, string(t.job.Task.Status))\n\n\t\tcase <-requestTimer.C:\n\n\t\t\tgo func() {\n\n\t\t\t\tif !atomic.CompareAndSwapInt32(&p.processing, 0, 1) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tdefer atomic.StoreInt32(&p.processing, 0)\n\n\t\t\t\tok := p.sendProgress()\n\n\t\t\t\tif ok && !launched {\n\t\t\t\t\tlaunched = true\n\t\t\t\t\tfmt.Println(\"Runner connected\")\n\t\t\t\t}\n\n\t\t\t\tif util.Config.Runner.OneOff && len(p.runningJobs) > 0 && !p.hasRunningJobs() {\n\t\t\t\t\tos.Exit(0)\n\t\t\t\t}\n\n\t\t\t\tp.checkNewJobs()\n\t\t\t}()\n\n\t\t}\n\t}\n}\n\nfunc (p *JobPool) sendProgress() (ok bool) {\n\n\tlogger := JobLogger{Context: \"sending_progress\"}\n\n\tclient := &http.Client{}\n\n\turl := util.Config.WebHost + \"/api/internal/runners\"\n\n\tbody := RunnerProgress{\n\t\tJobs: nil,\n\t}\n\n\tfor id, j := range p.runningJobs {\n\n\t\tbody.Jobs = append(body.Jobs, JobProgress{\n\t\t\tID:         id,\n\t\t\tLogRecords: j.logRecords,\n\t\t\tStatus:     j.status,\n\t\t\tCommit:     j.commit,\n\t\t})\n\n\t\tj.logRecords = make([]LogRecord, 0)\n\n\t\tif j.status.IsFinished() {\n\t\t\tlogger.TaskInfo(\"Task removed from running list\", id, string(j.status))\n\t\t\tdelete(p.runningJobs, id)\n\t\t}\n\t}\n\n\tjsonBytes, err := json.Marshal(body)\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"form request body\", \"can not marshal json\")\n\t\treturn\n\t}\n\n\treq, err := http.NewRequest(\"PUT\", url, bytes.NewBuffer(jsonBytes))\n\tif err != nil {\n\t\tlogger.ActionError(err, \"create request\", \"can not create request to the server\")\n\t\treturn\n\t}\n\n\treq.Header.Set(\"X-Runner-Token\", util.Config.Runner.Token)\n\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlogger.ActionError(err, \"send request\", \"the server returned error\")\n\t\treturn\n\t}\n\n\tif resp.StatusCode >= 400 {\n\t\tlogger.ActionError(fmt.Errorf(\"invalid status code\"), \"send request\", \"the server returned error \"+strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tok = true\n\t}\n\n\tdefer resp.Body.Close() //nolint:errcheck\n\n\treturn\n}\n\nfunc (p *JobPool) getResponseErrorMessage(resp *http.Response) (res string) {\n\tres = \"the server returned error \" + strconv.Itoa(resp.StatusCode)\n\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar errRes struct {\n\t\tError string `json:\"error\"`\n\t}\n\n\terr = json.Unmarshal(body, &errRes)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tres += \": \" + errRes.Error\n\n\treturn\n}\n\nfunc (p *JobPool) tryRegisterRunner(configFilePath *string) (ok bool) {\n\n\tlogger := JobLogger{Context: \"registration\"}\n\n\tlog.Info(\"Registering a new runner\")\n\n\tif util.Config.Runner.RegistrationToken == \"\" {\n\t\tlogger.ActionError(fmt.Errorf(\"registration token cannot be empty\"), \"read input\", \"can not retrieve registration token\")\n\t\treturn\n\t}\n\n\tvar err error\n\tpublicKey := \"\"\n\n\tif util.Config.Runner.PrivateKeyFile != \"\" {\n\t\tpublicKey, err = generatePrivateKey(util.Config.Runner.PrivateKeyFile)\n\t}\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"read input\", \"can not generate private key file\")\n\t\treturn\n\t}\n\n\tclient := &http.Client{}\n\n\turl := util.Config.WebHost + \"/api/internal/runners\"\n\n\tjsonBytes, err := json.Marshal(RunnerRegistration{\n\t\tRegistrationToken: util.Config.Runner.RegistrationToken,\n\t\tWebhook:           util.Config.Runner.Webhook,\n\t\tMaxParallelTasks:  util.Config.Runner.MaxParallelTasks,\n\t\tPublicKey:         &publicKey,\n\t})\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"form request\", \"can not marshal json\")\n\t\treturn\n\t}\n\n\treq, err := http.NewRequest(\"POST\", url, bytes.NewBuffer(jsonBytes))\n\tif err != nil {\n\t\tlogger.ActionError(err, \"create request\", \"can not create request to the server\")\n\t\treturn\n\t}\n\n\tresp, err := client.Do(req)\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"send request\", \"unexpected error\")\n\t\treturn\n\t}\n\n\tif resp.StatusCode != 200 {\n\t\tlogger.ActionError(fmt.Errorf(\"invalid status code\"), \"send request\", p.getResponseErrorMessage(resp))\n\t\treturn\n\t}\n\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlogger.ActionError(err, \"read response body\", \"can not read server's response body\")\n\t\treturn\n\t}\n\n\tvar res struct {\n\t\tToken string `json:\"token\"`\n\t}\n\n\terr = json.Unmarshal(body, &res)\n\tif err != nil {\n\t\tlogger.ActionError(err, \"parsing result json\", \"server's response has invalid format\")\n\t\treturn\n\t}\n\n\tif util.Config.Runner.TokenFile != \"\" {\n\t\terr = os.WriteFile(util.Config.Runner.TokenFile, []byte(res.Token), 0644)\n\t} else {\n\t\tif configFilePath == nil {\n\t\t\tlogger.ActionError(fmt.Errorf(\"config file path required\"), \"read input\", \"can not retrieve config file path\")\n\t\t\treturn\n\t\t}\n\n\t\tvar configFileBuffer []byte\n\t\tconfigFileBuffer, err = os.ReadFile(*configFilePath)\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"read config file\", \"can not read config file\")\n\t\t\treturn\n\t\t}\n\n\t\tconfig := util.ConfigType{}\n\t\terr = json.Unmarshal(configFileBuffer, &config)\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"parse config file\", \"can not parse config file\")\n\t\t\treturn\n\t\t}\n\n\t\tconfig.Runner.Token = res.Token\n\t\tconfigFileBuffer, err = json.MarshalIndent(&config, \" \", \"\\t\")\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"marshal config file\", \"can not marshal config file\")\n\t\t\treturn\n\t\t}\n\n\t\terr = os.WriteFile(*configFilePath, configFileBuffer, 0644)\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"write config file\", \"can not write config file\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tdefer resp.Body.Close() //nolint:errcheck\n\n\tok = true\n\treturn\n}\n\nfunc loadPrivateKey(privateKeyFilePath string) (*rsa.PrivateKey, error) {\n\tkeyData, err := os.ReadFile(privateKeyFilePath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tblock, _ := pem.Decode(keyData)\n\tif block == nil || block.Type != \"RSA PRIVATE KEY\" {\n\t\treturn nil, fmt.Errorf(\"invalid private key\")\n\t}\n\treturn x509.ParsePKCS1PrivateKey(block.Bytes)\n}\n\nfunc generatePrivateKey(privateKeyFilePath string) (publicKey string, err error) {\n\n\tprivateKeyFile, err := os.Create(privateKeyFilePath)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer privateKeyFile.Close() //nolint:errcheck\n\n\treturn util.GeneratePrivateKey(privateKeyFile)\n}\n\nfunc decryptChunkedBytes(combinedCiphertext []byte, privateKey *rsa.PrivateKey) (fullPlaintext []byte, err error) {\n\n\trsaBlockSize := privateKey.N.BitLen() / 8 // e.g. 256 for 2048-bit key\n\n\t// 3. Decrypt all chunks\n\tfor i := 0; i < len(combinedCiphertext); i += rsaBlockSize {\n\t\tend := i + rsaBlockSize\n\t\tif end > len(combinedCiphertext) {\n\t\t\t// In case of partial/corrupted data\n\t\t\tend = len(combinedCiphertext)\n\t\t}\n\t\tchunk := combinedCiphertext[i:end]\n\n\t\tvar decryptedChunk []byte\n\t\tdecryptedChunk, err = rsa.DecryptPKCS1v15(rand.Reader, privateKey, chunk)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\t// 4. Append decrypted chunk to our full plaintext buffer\n\t\tfullPlaintext = append(fullPlaintext, decryptedChunk...)\n\t}\n\n\treturn\n}\n\n// checkNewJobs tries to find runner to queued jobs\nfunc (p *JobPool) checkNewJobs() {\n\n\tlogger := JobLogger{Context: \"checking new jobs\"}\n\n\tif util.Config.Runner.Token == \"\" {\n\t\tlogger.ActionError(fmt.Errorf(\"no token provided\"), \"read input\", \"can not retrieve runner token\")\n\t\treturn\n\t}\n\n\tclient := &http.Client{}\n\n\turl := util.Config.WebHost + \"/api/internal/runners\"\n\n\treq, err := http.NewRequest(\"GET\", url, nil)\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"create request\", \"can not create request to the server\")\n\t\treturn\n\t}\n\n\treq.Header.Set(\"X-Runner-Token\", util.Config.Runner.Token)\n\n\tresp, err := client.Do(req)\n\n\tif err != nil {\n\t\tlogger.ActionError(err, \"send request\", \"unexpected error\")\n\t\treturn\n\t}\n\n\tif resp.StatusCode >= 400 {\n\n\t\tlogger.ActionError(fmt.Errorf(\"error status code\"), \"send request\", p.getResponseErrorMessage(resp))\n\t\treturn\n\t}\n\n\tdefer resp.Body.Close() //nolint:errcheck\n\n\tbody, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlogger.ActionError(err, \"read response body\", \"can not read server's response body\")\n\t\treturn\n\t}\n\n\tif util.Config.Runner.PrivateKeyFile != \"\" {\n\t\tvar pk *rsa.PrivateKey\n\n\t\tpk, err = loadPrivateKey(util.Config.Runner.PrivateKeyFile)\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"decrypt response body\", \"can not read private key\")\n\t\t\treturn\n\t\t}\n\n\t\tbody, err = decryptChunkedBytes(body, pk)\n\n\t\tif err != nil {\n\t\t\tlogger.ActionError(err, \"decrypt response body\", \"can not decrypt server's response body\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar response RunnerState\n\terr = json.Unmarshal(body, &response)\n\tif err != nil {\n\t\tlogger.ActionError(err, \"parsing result json\", \"server's response has invalid format\")\n\t\treturn\n\t}\n\n\tif response.ClearCache {\n\t\tif response.CacheCleanProjectID == nil {\n\t\t\tif err2 := util.Config.ClearTmpDir(); err2 != nil {\n\t\t\t\tlogger.ActionError(\n\t\t\t\t\terr2,\n\t\t\t\t\t\"cleaning cache\",\n\t\t\t\t\t\"cannot clear tmp directory\",\n\t\t\t\t)\n\t\t\t}\n\t\t} else {\n\t\t\tif err2 := util.Config.ClearProjectTmpDir(*response.CacheCleanProjectID); err2 != nil {\n\t\t\t\tlogger.ActionError(\n\t\t\t\t\terr2,\n\t\t\t\t\t\"cleaning cache\",\n\t\t\t\t\t\"cannot clear project \"+strconv.Itoa(*response.CacheCleanProjectID)+\" tmp directory\",\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, currJob := range response.CurrentJobs {\n\t\trunJob, exists := p.runningJobs[currJob.ID]\n\n\t\tif !exists {\n\t\t\tcontinue\n\t\t}\n\n\t\tif runJob.status == task_logger.TaskStoppingStatus || runJob.status == task_logger.TaskStoppedStatus {\n\t\t\tp.runningJobs[currJob.ID].job.Kill()\n\t\t}\n\n\t\tif runJob.status.IsFinished() {\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch runJob.status {\n\t\tcase task_logger.TaskRunningStatus:\n\t\t\tif currJob.Status == task_logger.TaskStartingStatus || currJob.Status == task_logger.TaskWaitingStatus || currJob.Status == task_logger.TaskConfirmed {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase task_logger.TaskStoppingStatus:\n\t\t\tif !currJob.Status.IsFinished() {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase task_logger.TaskConfirmed:\n\t\t\tif currJob.Status == task_logger.TaskWaitingConfirmation {\n\t\t\t\tcontinue\n\t\t\t}\n\t\tcase task_logger.TaskWaitingConfirmation:\n\t\t\tif currJob.Status == task_logger.TaskRunningStatus {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\trunJob.SetStatus(currJob.Status)\n\t}\n\n\tif util.Config.Runner.OneOff {\n\t\tif len(p.queue) > 0 || len(p.runningJobs) > 0 {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor _, newJob := range response.NewJobs {\n\t\tif _, exists := p.runningJobs[newJob.Task.ID]; exists {\n\t\t\tcontinue\n\t\t}\n\n\t\tif p.existsInQueue(newJob.Task.ID) {\n\t\t\tcontinue\n\t\t}\n\n\t\tnewJob.Inventory.Repository = newJob.InventoryRepository\n\n\t\ttaskRunner := job{\n\t\t\tusername:        newJob.Username,\n\t\t\tincomingVersion: newJob.IncomingVersion,\n\t\t\talias:           newJob.Alias,\n\n\t\t\tjob: &tasks.LocalJob{\n\t\t\t\tTask:         newJob.Task,\n\t\t\t\tTemplate:     newJob.Template,\n\t\t\t\tInventory:    newJob.Inventory,\n\t\t\t\tRepository:   newJob.Repository,\n\t\t\t\tEnvironment:  newJob.Environment,\n\t\t\t\tKeyInstaller: p.keyInstaller,\n\t\t\t\tApp: db_lib.CreateApp(\n\t\t\t\t\tnewJob.Template,\n\t\t\t\t\tnewJob.Repository,\n\t\t\t\t\tnewJob.Inventory,\n\t\t\t\t\tnil),\n\t\t\t},\n\t\t}\n\n\t\ttaskRunner.job.Repository.SSHKey = response.AccessKeys[taskRunner.job.Repository.SSHKeyID]\n\n\t\tif taskRunner.job.Inventory.SSHKeyID != nil {\n\t\t\ttaskRunner.job.Inventory.SSHKey = response.AccessKeys[*taskRunner.job.Inventory.SSHKeyID]\n\t\t}\n\n\t\tif taskRunner.job.Inventory.BecomeKeyID != nil {\n\t\t\ttaskRunner.job.Inventory.BecomeKey = response.AccessKeys[*taskRunner.job.Inventory.BecomeKeyID]\n\t\t}\n\n\t\tvar vaults []db.TemplateVault\n\t\tif taskRunner.job.Template.Vaults != nil {\n\t\t\tfor _, vault := range taskRunner.job.Template.Vaults {\n\t\t\t\tvault2 := vault\n\t\t\t\tif vault2.VaultKeyID != nil {\n\t\t\t\t\tkey := response.AccessKeys[*vault2.VaultKeyID]\n\t\t\t\t\tvault2.Vault = &key\n\t\t\t\t}\n\t\t\t\tvaults = append(vaults, vault2)\n\t\t\t}\n\t\t}\n\t\ttaskRunner.job.Template.Vaults = vaults\n\n\t\tif taskRunner.job.Inventory.RepositoryID != nil {\n\t\t\ttaskRunner.job.Inventory.Repository.SSHKey = response.AccessKeys[taskRunner.job.Inventory.Repository.SSHKeyID]\n\t\t}\n\n\t\tp.queue = append(p.queue, &taskRunner)\n\n\t\tlogger.TaskInfo(\"Task enqueued\", taskRunner.job.Task.ID, string(taskRunner.job.Task.Status))\n\t}\n}\n"
  },
  {
    "path": "services/runners/running_job.go",
    "content": "package runners\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"io\"\n\t\"os/exec\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype runningJob struct {\n\tstatus     task_logger.TaskStatus\n\tlogRecords []LogRecord\n\tjob        *tasks.LocalJob\n\tcommit     *CommitInfo\n\n\tstatusListeners []task_logger.StatusListener\n\tlogListeners    []task_logger.LogListener\n\n\tlogWG sync.WaitGroup\n}\n\nfunc (p *runningJob) AddStatusListener(l task_logger.StatusListener) {\n\tp.statusListeners = append(p.statusListeners, l)\n}\n\nfunc (p *runningJob) AddLogListener(l task_logger.LogListener) {\n\tp.logListeners = append(p.logListeners, l)\n}\n\nfunc (p *runningJob) Log(msg string) {\n\tp.LogWithTime(tz.Now(), msg)\n}\n\nfunc (p *runningJob) Logf(format string, a ...any) {\n\tp.LogfWithTime(tz.Now(), format, a...)\n}\n\nfunc (p *runningJob) LogWithTime(now time.Time, msg string) {\n\tp.logRecords = append(\n\t\tp.logRecords,\n\t\tLogRecord{\n\t\t\tTime:    now,\n\t\t\tMessage: msg,\n\t\t},\n\t)\n\tfor _, l := range p.logListeners {\n\t\tl(now, msg)\n\t}\n}\n\nfunc (p *runningJob) LogfWithTime(now time.Time, format string, a ...any) {\n\tp.LogWithTime(now, fmt.Sprintf(format, a...))\n}\n\nfunc (p *runningJob) LogCmd(cmd *exec.Cmd) {\n\tstderr, _ := cmd.StderrPipe()\n\tstdout, _ := cmd.StdoutPipe()\n\n\tgo p.logPipe(stderr)\n\tgo p.logPipe(stdout)\n}\n\nfunc (p *runningJob) WaitLog() {\n\tp.logWG.Wait()\n}\n\nfunc (p *runningJob) SetCommit(hash, message string) {\n\tp.commit = &CommitInfo{\n\t\tHash:    hash,\n\t\tMessage: message,\n\t}\n}\n\nfunc (p *runningJob) SetStatus(status task_logger.TaskStatus) {\n\tif p.status == status {\n\t\treturn\n\t}\n\n\tp.status = status\n\tp.job.SetStatus(status)\n\n\tfor _, l := range p.statusListeners {\n\t\tl(status)\n\t}\n}\n\nfunc (p *runningJob) logPipe(reader io.Reader) {\n\tp.logWG.Add(1)\n\tdefer p.logWG.Done()\n\n\tscanner := bufio.NewScanner(reader)\n\tconst maxCapacity = 10 * 1024 * 1024 // 10 MB\n\tbuf := make([]byte, maxCapacity)\n\tscanner.Buffer(buf, maxCapacity)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tp.Log(line)\n\t}\n\n\terr := scanner.Err()\n\n\tif err != nil {\n\t\tmsg := \"Failed to read TaskRunner output\"\n\n\t\tswitch err.Error() {\n\t\tcase \"EOF\",\n\t\t\t\"os: process already finished\",\n\t\t\t\"read |0: file already closed\":\n\t\t\treturn // it is ok\n\t\tcase \"bufio.Scanner: token too long\":\n\t\t\tmsg = \"TaskRunner output exceeds the maximum allowed size of 10MB\"\n\t\t\tbreak\n\t\t}\n\n\t\tp.job.Kill() // kill the job because stdout cannot be read.\n\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"task_id\": p.job.Task.ID,\n\t\t\t\"context\": \"task_logger\",\n\t\t}).Error(msg)\n\n\t\tp.Log(\"Fatal error: \" + msg)\n\t}\n}\n"
  },
  {
    "path": "services/runners/types.go",
    "content": "package runners\n\nimport (\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n)\n\ntype JobData struct {\n\tUsername            string\n\tIncomingVersion     *string\n\tAlias               string\n\tTask                db.Task        `json:\"task\" binding:\"required\"`\n\tTemplate            db.Template    `json:\"template\" binding:\"required\"`\n\tInventory           db.Inventory   `json:\"inventory\" binding:\"required\"`\n\tInventoryRepository *db.Repository `json:\"inventory_repository\" binding:\"required\"`\n\tRepository          db.Repository  `json:\"repository\" binding:\"required\"`\n\tEnvironment         db.Environment `json:\"environment\" binding:\"required\"`\n}\n\ntype RunnerState struct {\n\tCurrentJobs []JobState\n\tNewJobs     []JobData            `json:\"new_jobs\" binding:\"required\"`\n\tAccessKeys  map[int]db.AccessKey `json:\"access_keys\" binding:\"required\"`\n\n\tClearCache          bool `json:\"clear_cache,omitempty\"`\n\tCacheCleanProjectID *int `json:\"cache_clean_project_id,omitempty\"`\n}\n\ntype JobState struct {\n\tID     int                    `json:\"id\" binding:\"required\"`\n\tStatus task_logger.TaskStatus `json:\"status\" binding:\"required\"`\n}\n\ntype LogRecord struct {\n\tTime    time.Time `json:\"time\" binding:\"required\"`\n\tMessage string    `json:\"message\" binding:\"required\"`\n}\n\ntype CommitInfo struct {\n\tHash    string `json:\"hash\" binding:\"required\"`\n\tMessage string `json:\"message\" binding:\"required\"`\n}\n\ntype RunnerProgress struct {\n\tJobs []JobProgress\n}\n\ntype JobProgress struct {\n\tID         int\n\tStatus     task_logger.TaskStatus\n\tLogRecords []LogRecord\n\tCommit     *CommitInfo\n}\n\ntype RunnerRegistration struct {\n\tRegistrationToken string  `json:\"registration_token\" binding:\"required\"`\n\tWebhook           string  `json:\"webhook,omitempty\"`\n\tMaxParallelTasks  int     `json:\"max_parallel_tasks\"`\n\tPublicKey         *string `json:\"public_key,omitempty\"`\n}\n\ntype jobLogRecord struct {\n\ttaskID int\n\trecord LogRecord\n}\n\ntype job struct {\n\tusername        string\n\tincomingVersion *string\n\talias           string\n\n\t// job presents remote or local job information\n\tjob    *tasks.LocalJob\n\tstatus task_logger.TaskStatus\n}\n"
  },
  {
    "path": "services/schedules/SchedulePool.go",
    "content": "package schedules\n\nimport (\n\t\"strconv\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\n\t\"github.com/robfig/cron/v3\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype ScheduleRunner struct {\n\tprojectID         int\n\tscheduleID        int\n\tpool              *SchedulePool\n\tencryptionService server.AccessKeyEncryptionService\n\tkeyInstaller      db_lib.AccessKeyInstaller\n}\n\ntype oneTimeSchedule struct {\n\trunAt time.Time\n\tran   bool\n}\n\nfunc (s *oneTimeSchedule) Next(t time.Time) time.Time {\n\tif s.ran {\n\t\treturn time.Time{}\n\t}\n\n\tif !t.Before(s.runAt) {\n\t\ts.ran = true\n\t\treturn time.Time{}\n\t}\n\n\treturn s.runAt\n}\n\nfunc CreateScheduleRunner(\n\tprojectID int,\n\tscheduleID int,\n\tpool *SchedulePool,\n\tencryptionService server.AccessKeyEncryptionService,\n\tkeyInstaller db_lib.AccessKeyInstaller,\n) ScheduleRunner {\n\treturn ScheduleRunner{\n\t\tprojectID:         projectID,\n\t\tscheduleID:        scheduleID,\n\t\tpool:              pool,\n\t\tencryptionService: encryptionService,\n\t\tkeyInstaller:      keyInstaller,\n\t}\n}\n\nfunc (r ScheduleRunner) tryUpdateScheduleCommitHash(schedule db.Schedule) (updated bool, err error) {\n\trepo, err := r.pool.store.GetRepository(schedule.ProjectID, *schedule.RepositoryID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = r.pool.encryptionService.DeserializeSecret(&repo.SSHKey)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tremoteHash, err := db_lib.GitRepository{\n\t\tLogger:     nil,\n\t\tTemplateID: schedule.TemplateID,\n\t\tRepository: repo,\n\t\tClient:     db_lib.CreateDefaultGitClient(r.keyInstaller),\n\t}.GetLastRemoteCommitHash()\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif schedule.LastCommitHash != nil && remoteHash == *schedule.LastCommitHash {\n\t\treturn\n\t}\n\n\terr = r.pool.store.SetScheduleCommitHash(schedule.ProjectID, schedule.ID, remoteHash)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tupdated = true\n\treturn\n}\n\nfunc (r ScheduleRunner) Run() {\n\tif !r.pool.store.PermanentConnection() {\n\t\tr.pool.store.Connect(\"schedule \" + strconv.Itoa(r.scheduleID))\n\t\tdefer r.pool.store.Close(\"schedule \" + strconv.Itoa(r.scheduleID))\n\t}\n\n\tschedule, err := r.pool.store.GetSchedule(r.projectID, r.scheduleID)\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\"project_id\":  r.projectID,\n\t\t\t\"schedule_id\": r.scheduleID,\n\t\t}).Error(\"failed to get schedule\")\n\t\treturn\n\t}\n\n\tscheduleType := schedule.Type\n\tif scheduleType == \"\" {\n\t\tscheduleType = db.ScheduleTypeCron\n\t}\n\n\tif schedule.RepositoryID != nil {\n\t\tvar updated bool\n\t\tupdated, err = r.tryUpdateScheduleCommitHash(schedule)\n\t\tif err != nil {\n\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\"project_id\":  r.projectID,\n\t\t\t\t\"schedule_id\": r.scheduleID,\n\t\t\t}).Error(\"failed to update schedule commit hash\")\n\t\t\treturn\n\t\t}\n\t\tif !updated {\n\t\t\treturn\n\t\t}\n\t}\n\n\ttpl, err := r.pool.store.GetTemplate(schedule.ProjectID, schedule.TemplateID)\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\"template_id\": schedule.TemplateID,\n\t\t}).Error(\"failed to get template\")\n\t\treturn\n\t}\n\n\t// In HA mode, ensure only one node fires this schedule occurrence.\n\tif r.pool.dedup != nil && !r.pool.dedup.TryLockExecution(r.scheduleID) {\n\t\tlog.WithFields(log.Fields{\n\t\t\t\"project_id\":  r.projectID,\n\t\t\t\"schedule_id\": r.scheduleID,\n\t\t}).Debug(\"schedule already executed by another node\")\n\t\t// For one-time schedules the winning node deactivates/deletes\n\t\t// the schedule in the DB after execution. Refresh so this\n\t\t// node's cron picks up that change and drops the stale entry.\n\t\tif scheduleType == db.ScheduleTypeRunAt {\n\t\t\tr.pool.Refresh()\n\t\t}\n\t\treturn\n\t}\n\n\tvar task db.Task\n\tif schedule.TaskParams != nil {\n\t\ttask = schedule.TaskParams.CreateTask(schedule.TemplateID)\n\t} else {\n\t\ttask = db.Task{\n\t\t\tProjectID:  schedule.ProjectID,\n\t\t\tTemplateID: schedule.TemplateID,\n\t\t}\n\t}\n\ttask.ScheduleID = &schedule.ID\n\n\t_, err = r.pool.taskPool.AddTask(\n\t\ttask,\n\t\tnil,\n\t\t\"\",\n\t\tschedule.ProjectID,\n\t\ttpl.App.NeedTaskAlias(),\n\t)\n\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\"template_id\": schedule.TemplateID,\n\t\t}).Error(\"failed to add task\")\n\t}\n\n\t// For \"RunAt\" schedules, the schedule should only trigger once at the specified time and be deactivated afterwards.\n\t// Calling Refresh here ensures that after the job has fired, the pool reloads the active schedules\n\t// from the database (where this run-at schedule may now be disabled) so it is not executed again.\n\tif scheduleType == db.ScheduleTypeRunAt {\n\t\tr.pool.Refresh()\n\t}\n}\n\n// ScheduleDeduplicator prevents the same schedule from being executed on\n// multiple nodes simultaneously in an HA cluster. When configured, each\n// ScheduleRunner calls TryLockExecution before creating a task.\n//\n// The deduplication lock is intended to cover a *single execution attempt*\n// of a schedule occurrence: a node should acquire the lock immediately\n// before creating a task and release it once the attempt has either\n// completed or failed. Implementations are free to choose the underlying\n// mechanism (in‑memory, database, distributed store, etc.), but they should\n// be robust to node failures and process restarts (for example by using\n// leases with automatic expiry).\n//\n// Callers MUST treat the lock as advisory and best‑effort: if the\n// implementation becomes unavailable or releases the lock early, at‑most‑once\n// execution across the cluster is not guaranteed.\ntype ScheduleDeduplicator interface {\n\t// TryLockExecution attempts to acquire an execution lock for the given\n\t// schedule occurrence.\n\t//\n\t// Lock duration:\n\t//   - The lock is expected to remain held for the duration of the current\n\t//     schedule execution attempt (from just before task creation until\n\t//     the attempt finishes or fails).\n\t//   - Implementations will typically release the lock explicitly when the\n\t//     attempt ends and/or rely on a lease with automatic expiry to avoid\n\t//     permanent deadlocks.\n\t//\n\t// Timeouts and crash behavior:\n\t//   - If the node that acquired the lock crashes or loses connectivity,\n\t//     the behavior is implementation‑specific. Recommended practice is to\n\t//     use a finite TTL/lease so that the lock eventually expires and\n\t//     future executions can proceed.\n\t//\n\t// Idempotency:\n\t//   - TryLockExecution may be called multiple times for the same\n\t//     scheduleID (for example, after retries or rescheduling). The\n\t//     implementation SHOULD behave idempotently such that, for a single\n\t//     schedule occurrence, at most one call across the cluster returns\n\t//     true.\n\t//\n\t// Returns true if this node successfully acquired the lock and should\n\t// execute the schedule, and false otherwise.\n\tTryLockExecution(scheduleID int) bool\n}\n\ntype SchedulePool struct {\n\tcron              *cron.Cron\n\tlocker            sync.Locker\n\tdedup             ScheduleDeduplicator\n\tstore             db.Store\n\ttaskPool          *tasks.TaskPool\n\tencryptionService server.AccessKeyEncryptionService\n\tkeyInstaller      db_lib.AccessKeyInstaller\n}\n\n// SetDeduplicator configures a distributed schedule deduplicator for HA mode.\n// When set, only one node in the cluster fires each schedule occurrence.\nfunc (p *SchedulePool) SetDeduplicator(d ScheduleDeduplicator) {\n\tp.dedup = d\n}\n\nfunc (p *SchedulePool) init() {\n\tloc, err := time.LoadLocation(util.Config.Schedule.Timezone)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tp.cron = cron.New(cron.WithLocation(loc))\n\tp.locker = &sync.Mutex{}\n}\n\nfunc (p *SchedulePool) Refresh() {\n\n\tschedules, err := p.store.GetSchedules()\n\n\tif err != nil {\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": common_errors.GetErrorContext(),\n\t\t}).Error(\"failed to get schedules\")\n\t\treturn\n\t}\n\n\tp.locker.Lock()\n\tdefer p.locker.Unlock()\n\n\tp.clear()\n\tnow := time.Now().In(p.cron.Location())\n\tfor _, schedule := range schedules {\n\t\tscheduleType := schedule.Type\n\t\tif scheduleType == \"\" {\n\t\t\tscheduleType = db.ScheduleTypeCron\n\t\t}\n\n\t\tif schedule.RepositoryID == nil && !schedule.Active {\n\t\t\tcontinue\n\t\t}\n\n\t\trunner := CreateScheduleRunner(\n\t\t\tschedule.ProjectID,\n\t\t\tschedule.ID,\n\t\t\tp,\n\t\t\tp.encryptionService,\n\t\t\tp.keyInstaller,\n\t\t)\n\n\t\tswitch scheduleType {\n\t\tcase db.ScheduleTypeRunAt:\n\t\t\tif schedule.RunAt == nil {\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\t}).Warn(\"run_at schedule has no run_at value\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trunAt := schedule.RunAt.In(p.cron.Location())\n\n\t\t\tif !runAt.After(now) {\n\t\t\t\tif schedule.DeleteAfterRun {\n\t\t\t\t\terr = p.store.DeleteSchedule(schedule.ProjectID, schedule.ID)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\t\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\t\t\t}).Warn(\"failed to delete past run_at schedule\")\n\t\t\t\t\t}\n\t\t\t\t} else if schedule.Active {\n\t\t\t\t\terr = p.store.SetScheduleActive(schedule.ProjectID, schedule.ID, false)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\t\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\t\t\t}).Warn(\"failed to deactivate past run_at schedule\")\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_, err = p.addOneTimeRunner(runner, runAt)\n\t\tcase db.ScheduleTypeCron:\n\t\t\tif schedule.CronFormat == \"\" {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_, err = p.addRunner(runner, schedule.CronFormat)\n\t\tdefault:\n\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t\t\"type\":        schedule.Type,\n\t\t\t}).Warn(\"schedule has unsupported type\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif err != nil {\n\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\"context\":     common_errors.GetErrorContext(),\n\t\t\t\t\"project_id\":  schedule.ProjectID,\n\t\t\t\t\"schedule_id\": schedule.ID,\n\t\t\t}).Errorf(\"failed to add schedule\")\n\t\t}\n\t}\n}\n\nfunc (p *SchedulePool) addRunner(runner ScheduleRunner, cronFormat string) (int, error) {\n\tid, err := p.cron.AddJob(cronFormat, runner)\n\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\treturn int(id), nil\n}\n\nfunc (p *SchedulePool) addOneTimeRunner(runner ScheduleRunner, runAt time.Time) (int, error) {\n\tid := p.cron.Schedule(&oneTimeSchedule{runAt: runAt}, runner)\n\n\treturn int(id), nil\n}\n\nfunc (p *SchedulePool) Run() {\n\tp.cron.Run()\n}\n\nfunc (p *SchedulePool) clear() {\n\trunners := p.cron.Entries()\n\tfor _, r := range runners {\n\t\tp.cron.Remove(r.ID)\n\t}\n}\n\nfunc (p *SchedulePool) Destroy() {\n\tp.locker.Lock()\n\tdefer p.locker.Unlock()\n\tp.cron.Stop()\n\tp.clear()\n\tp.cron = nil\n}\n\nfunc CreateSchedulePool(\n\tstore db.Store,\n\ttaskPool *tasks.TaskPool,\n\tkeyInstaller db_lib.AccessKeyInstaller,\n\tencryptionService server.AccessKeyEncryptionService,\n) SchedulePool {\n\tpool := SchedulePool{\n\t\tstore:             store,\n\t\ttaskPool:          taskPool,\n\t\tkeyInstaller:      keyInstaller,\n\t\tencryptionService: encryptionService,\n\t}\n\tpool.init()\n\tpool.Refresh()\n\treturn pool\n}\n\nfunc ValidateCronFormat(cronFormat string) error {\n\t_, err := cron.ParseStandard(cronFormat)\n\treturn err\n}\n"
  },
  {
    "path": "services/schedules/SchedulePool_test.go",
    "content": "package schedules\n\nimport (\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/services/tasks\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\n// mockEncryptionService is a test implementation of AccessKeyEncryptionService\ntype mockEncryptionService struct{}\n\nfunc (m *mockEncryptionService) SerializeSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (m *mockEncryptionService) DeserializeSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (m *mockEncryptionService) FillEnvironmentSecrets(env *db.Environment, deserializeSecret bool) error {\n\treturn nil\n}\n\nfunc (m *mockEncryptionService) DeleteSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc TestValidateCronFormat(t *testing.T) {\n\terr := ValidateCronFormat(\"* * * *\")\n\tif err == nil {\n\t\tt.Fatal(\"\")\n\t}\n\n\terr = ValidateCronFormat(\"* * 1 * *\")\n\tif err != nil {\n\t\tt.Fatal(err.Error())\n\t}\n}\n\nfunc TestOneTimeSchedule(t *testing.T) {\n\tfuture := time.Now().Add(time.Hour)\n\tschedule := oneTimeSchedule{runAt: future}\n\n\tif schedule.Next(time.Now()) != future {\n\t\tt.Fatalf(\"expected next run at %v\", future)\n\t}\n\n\tif !schedule.Next(future).IsZero() {\n\t\tt.Fatalf(\"expected schedule to stop after run time\")\n\t}\n}\n\n// mockDeduplicator is a test implementation of ScheduleDeduplicator\ntype mockDeduplicator struct {\n\tmu             sync.Mutex\n\tallowExecution map[int]bool\n\tlockAttempts   map[int]int\n}\n\nfunc newMockDeduplicator() *mockDeduplicator {\n\treturn &mockDeduplicator{\n\t\tallowExecution: make(map[int]bool),\n\t\tlockAttempts:   make(map[int]int),\n\t}\n}\n\nfunc (m *mockDeduplicator) TryLockExecution(scheduleID int) bool {\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\tm.lockAttempts[scheduleID]++\n\treturn m.allowExecution[scheduleID]\n}\n\nfunc (m *mockDeduplicator) setAllowExecution(scheduleID int, allow bool) {\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\tm.allowExecution[scheduleID] = allow\n}\n\nfunc (m *mockDeduplicator) getLockAttempts(scheduleID int) int {\n\tm.mu.Lock()\n\tdefer m.mu.Unlock()\n\treturn m.lockAttempts[scheduleID]\n}\n\n// mockAccessKeyInstaller is a test implementation of AccessKeyInstaller\ntype mockAccessKeyInstaller struct{}\n\nfunc (m *mockAccessKeyInstaller) Install(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation ssh.AccessKeyInstallation, err error) {\n\treturn ssh.AccessKeyInstallation{}, nil\n}\n\nfunc setupTestSchedulePool(t *testing.T) (*SchedulePool, db.Store) {\n\tstore := bolt.CreateTestStore()\n\n\t// Store original config and restore after test\n\toriginalSchedule := util.Config.Schedule\n\tt.Cleanup(func() {\n\t\tutil.Config.Schedule = originalSchedule\n\t})\n\n\t// Ensure util.Config Schedule is set (CreateTestStore doesn't set this)\n\tutil.Config.Schedule = &util.ScheduleConfig{\n\t\tTimezone: \"UTC\",\n\t}\n\n\tpool := CreateSchedulePool(\n\t\tstore,\n\t\t&tasks.TaskPool{},\n\t\t&mockAccessKeyInstaller{},\n\t\t&mockEncryptionService{},\n\t)\n\n\tt.Cleanup(func() {\n\t\tpool.Destroy()\n\t})\n\n\treturn &pool, store\n}\n\n// TestSetDeduplicator verifies that SetDeduplicator properly configures the deduplicator\nfunc TestSetDeduplicator(t *testing.T) {\n\tpool, _ := setupTestSchedulePool(t)\n\n\t// Initially no deduplicator should be set\n\tassert.Nil(t, pool.dedup, \"deduplicator should be nil initially\")\n\n\t// Set a deduplicator\n\tdedup := newMockDeduplicator()\n\tpool.SetDeduplicator(dedup)\n\n\t// Verify it's set\n\tassert.NotNil(t, pool.dedup, \"deduplicator should be set after calling SetDeduplicator\")\n\tassert.Equal(t, dedup, pool.dedup, \"deduplicator should be the one we set\")\n}\n\n// TestScheduleExecutesNormallyWithoutDeduplicator verifies schedules execute when no deduplicator is set\nfunc TestScheduleExecutesNormallyWithoutDeduplicator(t *testing.T) {\n\tpool, _ := setupTestSchedulePool(t)\n\n\t// Ensure no deduplicator is set\n\tpool.SetDeduplicator(nil)\n\n\t// Verify that the deduplicator is nil (schedule would execute normally)\n\tassert.Nil(t, pool.dedup, \"deduplicator should be nil, allowing normal execution\")\n}\n\n// TestScheduleSkippedWhenTryLockExecutionReturnsFalse verifies schedules are skipped when TryLockExecution returns false\nfunc TestScheduleSkippedWhenTryLockExecutionReturnsFalse(t *testing.T) {\n\tpool, _ := setupTestSchedulePool(t)\n\n\t// Set up deduplicator to deny execution\n\tdedup := newMockDeduplicator()\n\tscheduleID := 123\n\tdedup.setAllowExecution(scheduleID, false)\n\tpool.SetDeduplicator(dedup)\n\n\t// Simulate the deduplication check that happens in ScheduleRunner.Run()\n\tshouldSkip := pool.dedup != nil && !pool.dedup.TryLockExecution(scheduleID)\n\n\t// Verify the deduplicator was called and returned false\n\tassert.True(t, shouldSkip, \"schedule should be skipped when TryLockExecution returns false\")\n\tassert.Equal(t, 1, dedup.getLockAttempts(scheduleID), \"TryLockExecution should be called once\")\n}\n\n// TestScheduleProceedsWhenTryLockExecutionReturnsTrue verifies schedules proceed when TryLockExecution returns true\nfunc TestScheduleProceedsWhenTryLockExecutionReturnsTrue(t *testing.T) {\n\tpool, _ := setupTestSchedulePool(t)\n\n\t// Set up deduplicator to allow execution\n\tdedup := newMockDeduplicator()\n\tscheduleID := 456\n\tdedup.setAllowExecution(scheduleID, true)\n\tpool.SetDeduplicator(dedup)\n\n\t// Simulate the deduplication check that happens in ScheduleRunner.Run()\n\tshouldSkip := pool.dedup != nil && !pool.dedup.TryLockExecution(scheduleID)\n\n\t// Verify the deduplicator was called and returned true (schedule proceeds)\n\tassert.False(t, shouldSkip, \"schedule should proceed when TryLockExecution returns true\")\n\tassert.Equal(t, 1, dedup.getLockAttempts(scheduleID), \"TryLockExecution should be called once\")\n}\n"
  },
  {
    "path": "services/server/AccessKey_test.go",
    "content": "package server\n\nimport (\n\t\"encoding/base64\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nfunc TestSetSecret(t *testing.T) {\n\taccessKey := db.AccessKey{\n\t\tType: db.AccessKeySSH,\n\t\tName: \"test\",\n\t\tSshKey: db.SshKey{\n\t\t\tPrivateKey: \"qerphqeruqoweurqwerqqeuiqwpavqr\",\n\t\t},\n\t}\n\n\tencryptionService := NewAccessKeyEncryptionService(nil, nil, nil)\n\n\tutil.Config = &util.ConfigType{}\n\terr := encryptionService.SerializeSecret(&accessKey)\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tsecret, err := base64.StdEncoding.DecodeString(*accessKey.Secret)\n\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif string(secret) != \"{\\\"login\\\":\\\"\\\",\\\"passphrase\\\":\\\"\\\",\\\"private_key\\\":\\\"qerphqeruqoweurqwerqqeuiqwpavqr\\\"}\" {\n\t\tt.Error(\"invalid secret\")\n\t}\n}\n\nfunc TestGetSecret(t *testing.T) {\n\tsecret := base64.StdEncoding.EncodeToString([]byte(`{\n\t\"passphrase\": \"123456\",\n\t\"private_key\": \"qerphqeruqoweurqwerqqeuiqwpavqr\"\n}`))\n\tutil.Config = &util.ConfigType{}\n\n\tencryptionService := NewAccessKeyEncryptionService(nil, nil, nil)\n\n\taccessKey := db.AccessKey{\n\t\tSecret: &secret,\n\t\tType:   db.AccessKeySSH,\n\t}\n\n\terr := encryptionService.DeserializeSecret(&accessKey)\n\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif accessKey.SshKey.Passphrase != \"123456\" {\n\t\tt.Errorf(\"\")\n\t}\n\n\tif accessKey.SshKey.PrivateKey != \"qerphqeruqoweurqwerqqeuiqwpavqr\" {\n\t\tt.Errorf(\"\")\n\t}\n}\n\nfunc TestSetGetSecretWithEncryption(t *testing.T) {\n\n\tencryptionService := NewAccessKeyEncryptionService(nil, nil, nil)\n\n\taccessKey := db.AccessKey{\n\t\tName: \"test\",\n\t\tType: db.AccessKeySSH,\n\t\tSshKey: db.SshKey{\n\t\t\tPrivateKey: \"qerphqeruqoweurqwerqqeuiqwpavqr\",\n\t\t},\n\t}\n\n\tutil.Config = &util.ConfigType{\n\t\tAccessKeyEncryption: \"hHYgPrhQTZYm7UFTvcdNfKJMB3wtAXtJENUButH+DmM=\",\n\t}\n\n\terr := encryptionService.SerializeSecret(&accessKey)\n\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\t//accessKey.ClearSecret()\n\n\terr = encryptionService.DeserializeSecret(&accessKey)\n\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif accessKey.SshKey.PrivateKey != \"qerphqeruqoweurqwerqqeuiqwpavqr\" {\n\t\tt.Error(\"invalid secret\")\n\t}\n}\n"
  },
  {
    "path": "services/server/access_key_encryption_svc.go",
    "content": "package server\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\tpro \"github.com/semaphoreui/semaphore/pro/services/server\"\n)\n\nconst RekeyBatchSize = 100\n\nvar ErrReadOnlyStorage = errors.New(\"cannot modify secret in read-only storage\")\n\ntype AccessKeyEncryptionService interface {\n\tSerializeSecret(key *db.AccessKey) error\n\tDeserializeSecret(key *db.AccessKey) error\n\tFillEnvironmentSecrets(env *db.Environment, deserializeSecret bool) error\n\tDeleteSecret(key *db.AccessKey) error\n}\n\nfunc NewAccessKeyEncryptionService(\n\taccessKeyRepo db.AccessKeyManager,\n\tenvironmentRepo db.EnvironmentManager,\n\tsecretStorageRepo db.SecretStorageRepository,\n) AccessKeyEncryptionService {\n\treturn &accessKeyEncryptionServiceImpl{\n\t\taccessKeyRepo:     accessKeyRepo,\n\t\tenvironmentRepo:   environmentRepo,\n\t\tsecretStorageRepo: secretStorageRepo,\n\t}\n}\n\nfunc unmarshalAppropriateField(key *db.AccessKey, secret []byte) (err error) {\n\tswitch key.Type {\n\tcase db.AccessKeyString:\n\t\tkey.String = string(secret)\n\tcase db.AccessKeySSH:\n\t\tsshKey := db.SshKey{}\n\t\terr = json.Unmarshal(secret, &sshKey)\n\t\tif err == nil {\n\t\t\tkey.SshKey = sshKey\n\t\t}\n\tcase db.AccessKeyLoginPassword:\n\t\tloginPass := db.LoginPassword{}\n\t\terr = json.Unmarshal(secret, &loginPass)\n\t\tif err == nil {\n\t\t\tkey.LoginPassword = loginPass\n\t\t}\n\t}\n\treturn\n}\n\ntype accessKeyEncryptionServiceImpl struct {\n\taccessKeyRepo     db.AccessKeyManager\n\tenvironmentRepo   db.EnvironmentManager\n\tsecretStorageRepo db.SecretStorageRepository\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) getDeserializer(key *db.AccessKey) (AccessKeyDeserializer, bool, error) {\n\n\tif key.SourceStorageType == nil {\n\t\treturn &LocalAccessKeyDeserializer{}, false, nil\n\t}\n\n\tswitch *key.SourceStorageType {\n\tcase db.AccessKeySourceStorageEnv, db.AccessKeySourceStorageFile:\n\t\treturn &LocalAccessKeyDeserializer{}, true, nil\n\tcase db.AccessKeySourceStorageVault:\n\t\tif key.SourceStorageID == nil {\n\t\t\treturn &LocalAccessKeyDeserializer{}, false, errors.New(\"vault storage id is required\")\n\t\t}\n\tdefault:\n\t\treturn nil, false, fmt.Errorf(\"unsupported secret storage type '%s'\", *key.SourceStorageType)\n\t}\n\n\tstorage, err := s.secretStorageRepo.GetSecretStorage(*key.ProjectID, *key.SourceStorageID)\n\tif err != nil {\n\t\treturn nil, false, err\n\t}\n\n\tswitch storage.Type {\n\tcase db.SecretStorageTypeVault:\n\t\treturn pro.NewVaultAccessKeyDeserializer(s.accessKeyRepo, s.secretStorageRepo, s), storage.ReadOnly, nil\n\tcase db.SecretStorageTypeDvls:\n\t\treturn pro.NewDvlsAccessKeyDeserializer(s.accessKeyRepo, s.secretStorageRepo, s), storage.ReadOnly, nil\n\t}\n\n\treturn nil, false, fmt.Errorf(\"unsupported secret storage type '%s'\", storage.Type)\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) DeleteSecret(key *db.AccessKey) error {\n\td, _, err := s.getDeserializer(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn d.DeleteSecret(key)\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) SerializeSecret(key *db.AccessKey) error {\n\td, readonly, err := s.getDeserializer(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif readonly {\n\t\treturn nil\n\t}\n\n\terr = key.Validate(true)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn d.SerializeSecret(key)\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) DeserializeSecret(key *db.AccessKey) error {\n\td, _, err := s.getDeserializer(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\tciphertext, err := d.DeserializeSecret(key)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = unmarshalAppropriateField(key, []byte(ciphertext))\n\n\tvar syntaxError *json.SyntaxError\n\tif errors.As(err, &syntaxError) {\n\t\terr = fmt.Errorf(\"secret must be valid json in key '%s'\", key.Name)\n\t}\n\n\treturn err\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) FillEnvironmentSecrets(env *db.Environment, deserializeSecret bool) error {\n\tkeys, err := s.environmentRepo.GetEnvironmentSecrets(env.ProjectID, env.ID)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, k := range keys {\n\t\tvar secretName string\n\t\tvar secretType db.EnvironmentSecretType\n\n\t\tif k.Owner == db.AccessKeyVariable {\n\t\t\tsecretType = db.EnvironmentSecretVar\n\t\t\tsecretName = strings.TrimPrefix(k.Name, string(db.EnvironmentSecretVar)+\".\")\n\t\t} else if k.Owner == db.AccessKeyEnvironment {\n\t\t\tsecretType = db.EnvironmentSecretEnv\n\t\t\tsecretName = strings.TrimPrefix(k.Name, string(db.EnvironmentSecretEnv)+\".\")\n\t\t} else {\n\t\t\tsecretType = db.EnvironmentSecretVar\n\t\t\tsecretName = k.Name\n\t\t}\n\n\t\tif deserializeSecret {\n\t\t\terr = s.DeserializeSecret(&k)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tenv.Secrets = append(env.Secrets, db.EnvironmentSecret{\n\t\t\tID:     k.ID,\n\t\t\tName:   secretName,\n\t\t\tType:   secretType,\n\t\t\tSecret: k.String,\n\t\t})\n\t}\n\n\treturn nil\n}\n\nfunc (s *accessKeyEncryptionServiceImpl) RekeyAccessKeys(oldKey string) (err error) {\n\n\t//var globalProps = db.AccessKeyProps\n\t//globalProps.IsGlobal = true\n\t//\n\t//for i := 0; ; i++ {\n\t//\n\t//\tvar keys []db.AccessKey\n\t//\terr = d.getObjects(-1, globalProps, db.RetrieveQueryParams{Count: RekeyBatchSize, Offset: i * RekeyBatchSize}, nil, &keys)\n\t//\n\t//\tif err != nil {\n\t//\t\treturn\n\t//\t}\n\t//\n\t//\tif len(keys) == 0 {\n\t//\t\tbreak\n\t//\t}\n\t//\n\t//\tfor _, key := range keys {\n\t//\n\t//\t\terr = s.DeserializeSecret(oldKey)\n\t//\t\terr = key.DeserializeSecret2(oldKey)\n\t//\n\t//\t\tif err != nil {\n\t//\t\t\treturn err\n\t//\t\t}\n\t//\n\t//\t\tkey.OverrideSecret = true\n\t//\t\terr = s.accessKeyRepo.UpdateAccessKey(key)\n\t//\n\t//\t\tif err != nil && !errors.Is(err, db.ErrNotFound) {\n\t//\t\t\treturn err\n\t//\t\t}\n\t//\t}\n\t//}\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/access_key_installation_svc.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\ntype AccessKeyInstallationService interface {\n\tInstall(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation ssh.AccessKeyInstallation, err error)\n}\n\nfunc NewAccessKeyInstallationService(encryptionService AccessKeyEncryptionService) AccessKeyInstallationService {\n\treturn &AccessKeyInstallationServiceImpl{\n\t\tencryptionService: encryptionService,\n\t}\n}\n\ntype AccessKeyInstallationServiceImpl struct {\n\tencryptionService AccessKeyEncryptionService\n}\n\nfunc (s *AccessKeyInstallationServiceImpl) Install(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation ssh.AccessKeyInstallation, err error) {\n\n\tif key.Type == db.AccessKeyNone {\n\t\treturn\n\t}\n\n\terr = s.encryptionService.DeserializeSecret(&key)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tinstallation, err = ssh.KeyInstaller{}.Install(key, usage, logger)\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/access_key_serializer.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype AccessKeyDeserializer interface {\n\tDeserializeSecret(key *db.AccessKey) (string, error)\n\tSerializeSecret(key *db.AccessKey) error\n\tDeleteSecret(key *db.AccessKey) error\n}\n"
  },
  {
    "path": "services/server/access_key_serializer_local.go",
    "content": "package server\n\nimport (\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/rand\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype LocalAccessKeyDeserializer struct {\n}\n\nfunc NewLocalAccessKeyDeserializer() *LocalAccessKeyDeserializer {\n\treturn &LocalAccessKeyDeserializer{}\n}\n\nfunc (d *LocalAccessKeyDeserializer) DeleteSecret(key *db.AccessKey) error {\n\t// No-op for local deserializer\n\treturn nil\n}\n\nfunc (d *LocalAccessKeyDeserializer) SerializeSecret(key *db.AccessKey) error {\n\tvar plaintext []byte\n\tvar err error\n\n\tswitch key.Type {\n\tcase db.AccessKeyString:\n\t\tif key.String == \"\" {\n\t\t\tkey.Secret = nil\n\t\t\treturn nil\n\t\t}\n\t\tplaintext = []byte(key.String)\n\tcase db.AccessKeySSH:\n\t\tif key.SshKey.PrivateKey == \"\" {\n\t\t\tif key.SshKey.Login != \"\" || key.SshKey.Passphrase != \"\" {\n\t\t\t\treturn fmt.Errorf(\"invalid ssh key\")\n\t\t\t}\n\t\t\tkey.Secret = nil\n\t\t\treturn nil\n\t\t}\n\n\t\tplaintext, err = json.Marshal(key.SshKey)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\tcase db.AccessKeyLoginPassword:\n\t\tif key.LoginPassword.Password == \"\" {\n\t\t\tif key.LoginPassword.Login != \"\" {\n\t\t\t\treturn fmt.Errorf(\"invalid password key\")\n\t\t\t}\n\t\t\tkey.Secret = nil\n\t\t\treturn nil\n\t\t}\n\n\t\tplaintext, err = json.Marshal(key.LoginPassword)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\tcase db.AccessKeyNone:\n\t\tkey.Secret = nil\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid access token type\")\n\t}\n\n\tencryptionString := util.Config.AccessKeyEncryption\n\n\tif encryptionString == \"\" {\n\t\tsecret := base64.StdEncoding.EncodeToString(plaintext)\n\t\tkey.Secret = &secret\n\t\treturn nil\n\t}\n\n\tencryption, err := base64.StdEncoding.DecodeString(encryptionString)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc, err := aes.NewCipher(encryption)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tgcm, err := cipher.NewGCM(c)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnonce := make([]byte, gcm.NonceSize())\n\tif _, err = io.ReadFull(rand.Reader, nonce); err != nil {\n\t\treturn err\n\t}\n\n\tsecret := base64.StdEncoding.EncodeToString(gcm.Seal(nonce, nonce, plaintext, nil))\n\tkey.Secret = &secret\n\n\treturn nil\n}\n\nfunc (d *LocalAccessKeyDeserializer) DeserializeSecret(key *db.AccessKey) (res string, err error) {\n\treturn d.DeserializeSecret2(key, util.Config.AccessKeyEncryption)\n}\n\nfunc (d *LocalAccessKeyDeserializer) DeserializeSecret2(key *db.AccessKey, encryptionString string) (res string, err error) {\n\n\tif key.SourceStorageType != nil {\n\t\tif key.SourceStorageKey == nil {\n\t\t\treturn \"\", fmt.Errorf(\"source storage key is required\")\n\t\t}\n\n\t\tswitch *key.SourceStorageType {\n\t\tcase db.AccessKeySourceStorageEnv:\n\t\t\tres = os.Getenv(*key.SourceStorageKey)\n\t\t\treturn\n\t\tcase db.AccessKeySourceStorageFile:\n\n\t\t\tfilePath := filepath.Clean(*key.SourceStorageKey)\n\t\t\tif !filepath.IsAbs(filePath) {\n\t\t\t\terr = common_errors.NewUserErrorS(\"file path must be absolute\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tfor _, segment := range strings.Split(filepath.ToSlash(*key.SourceStorageKey), \"/\") {\n\t\t\t\tif segment == \"..\" {\n\t\t\t\t\terr = common_errors.NewUserErrorS(\"file path must not contain traversal segments\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsecretsBasePath := filepath.Clean(util.Config.Dirs.SecretsPath)\n\t\t\tif !filepath.IsAbs(secretsBasePath) {\n\t\t\t\terr = common_errors.NewUserErrorS(\"secrets path must be absolute\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar relPath string\n\t\t\trelPath, err = filepath.Rel(secretsBasePath, filePath)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif relPath == \"..\" || strings.HasPrefix(relPath, \"..\"+string(os.PathSeparator)) {\n\t\t\t\terr = common_errors.NewUserErrorS(\"file path must be inside secrets path\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar data []byte\n\t\t\tdata, err = os.ReadFile(filePath)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tres = string(data)\n\t\t\treturn\n\t\t}\n\t}\n\n\tif key.Secret == nil || *key.Secret == \"\" {\n\t\treturn\n\t}\n\n\tciphertext := []byte(*key.Secret)\n\n\tif ciphertext[len(*key.Secret)-1] == '\\n' { // not encrypted private key, used for back compatibility\n\t\tif key.Type != db.AccessKeySSH {\n\t\t\terr = fmt.Errorf(\"invalid access key type\")\n\t\t\treturn\n\t\t}\n\n\t\tsshKey := db.SshKey{\n\t\t\tPrivateKey: *key.Secret,\n\t\t}\n\n\t\tvar marshaled []byte\n\t\tmarshaled, err = json.Marshal(sshKey)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tres = string(marshaled)\n\n\t\treturn\n\t}\n\n\tciphertext, err = base64.StdEncoding.DecodeString(*key.Secret)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif encryptionString == \"\" {\n\t\tres = string(ciphertext)\n\t\treturn\n\t}\n\n\tencryption, err := base64.StdEncoding.DecodeString(encryptionString)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tc, err := aes.NewCipher(encryption)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tgcm, err := cipher.NewGCM(c)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tnonceSize := gcm.NonceSize()\n\tif len(ciphertext) < nonceSize {\n\t\terr = fmt.Errorf(\"ciphertext too short\")\n\t\treturn\n\t}\n\n\tnonce, ciphertext := ciphertext[:nonceSize], ciphertext[nonceSize:]\n\n\tciphertext, err = gcm.Open(nil, nonce, ciphertext, nil)\n\n\tif err != nil {\n\t\tif err.Error() == \"cipher: message authentication failed\" {\n\t\t\terr = fmt.Errorf(\"cannot decrypt access key, perhaps encryption key was changed\")\n\t\t}\n\t\treturn\n\t}\n\n\tres = string(ciphertext)\n\treturn\n}\n"
  },
  {
    "path": "services/server/access_key_svc.go",
    "content": "package server\n\nimport (\n\t\"errors\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/common_errors\"\n)\n\ntype AccessKeyService interface {\n\tUpdate(key db.AccessKey) error\n\tCreate(key db.AccessKey) (newKey db.AccessKey, err error)\n\tGetAll(projectID int, options db.GetAccessKeyOptions, params db.RetrieveQueryParams) ([]db.AccessKey, error)\n\tDelete(projectID int, keyID int) (err error)\n}\n\ntype AccessKeyServiceImpl struct {\n\taccessKeyRepo     db.AccessKeyManager\n\tencryptionService AccessKeyEncryptionService\n\tsecretStorageRepo db.SecretStorageRepository\n}\n\nfunc NewAccessKeyService(\n\taccessKeyRepo db.AccessKeyManager,\n\tencryptionService AccessKeyEncryptionService,\n\tsecretStorageRepo db.SecretStorageRepository,\n) AccessKeyService {\n\treturn &AccessKeyServiceImpl{\n\t\taccessKeyRepo:     accessKeyRepo,\n\t\tencryptionService: encryptionService,\n\t\tsecretStorageRepo: secretStorageRepo,\n\t}\n}\n\nfunc (s *AccessKeyServiceImpl) Delete(projectID int, keyID int) (err error) {\n\tkey, err := s.accessKeyRepo.GetAccessKey(projectID, keyID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif key.SourceStorageID != nil {\n\t\tvar storage db.SecretStorage\n\t\tstorage, err = s.secretStorageRepo.GetSecretStorage(projectID, *key.SourceStorageID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif !storage.ReadOnly {\n\t\t\terr = s.encryptionService.DeleteSecret(&key)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\terr = s.accessKeyRepo.DeleteAccessKey(projectID, keyID)\n\n\treturn\n}\n\nfunc (s *AccessKeyServiceImpl) GetAll(projectID int, options db.GetAccessKeyOptions, params db.RetrieveQueryParams) ([]db.AccessKey, error) {\n\treturn s.accessKeyRepo.GetAccessKeys(projectID, options, params)\n}\n\nfunc (s *AccessKeyServiceImpl) Create(key db.AccessKey) (newKey db.AccessKey, err error) {\n\n\terr = s.encryptionService.SerializeSecret(&key)\n\tif err != nil && !errors.Is(err, ErrReadOnlyStorage) {\n\t\treturn\n\t}\n\n\tnewKey, err = s.accessKeyRepo.CreateAccessKey(key)\n\treturn\n}\n\nfunc (s *AccessKeyServiceImpl) Update(key db.AccessKey) (err error) {\n\tif !key.OverrideSecret {\n\t\terr = s.accessKeyRepo.UpdateAccessKey(key)\n\t\treturn\n\t}\n\n\tvar oldKey db.AccessKey\n\toldKey, err = s.accessKeyRepo.GetAccessKey(*key.ProjectID, key.ID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif oldKey.SourceStorageType != nil && !oldKey.IsNativelyReadOnly() {\n\t\t// validate if it is secure to override secret storage\n\n\t\tvar oldSt db.SecretStorage\n\t\toldSt, err = s.secretStorageRepo.GetSecretStorage(*key.ProjectID, *oldKey.SourceStorageID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif !oldSt.ReadOnly && (key.SourceStorageID == nil || *oldKey.SourceStorageID != *key.SourceStorageID) {\n\t\t\terr = common_errors.NewUserErrorS(\"cannot override secret storage\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !key.IsNativelyReadOnly() {\n\t\terr = s.encryptionService.SerializeSecret(&key)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = s.accessKeyRepo.UpdateAccessKey(key)\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/environment_svc.go",
    "content": "package server\n\nimport (\n\t\"fmt\"\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype EnvironmentService interface {\n\tDelete(projectID int, environmentID int) error\n}\n\nfunc NewEnvironmentService(\n\tenvironmentRepo db.EnvironmentManager,\n\tencryptionService AccessKeyEncryptionService,\n) EnvironmentService {\n\treturn &EnvironmentServiceImpl{\n\t\tenvironmentRepo:   environmentRepo,\n\t\tencryptionService: encryptionService,\n\t}\n}\n\ntype EnvironmentServiceImpl struct {\n\tenvironmentRepo   db.EnvironmentManager\n\tencryptionService AccessKeyEncryptionService\n}\n\nfunc (s *EnvironmentServiceImpl) Delete(projectID int, environmentID int) (err error) {\n\t// Implement the logic to delete an environment\n\t// This is a placeholder implementation\n\tif projectID <= 0 || environmentID <= 0 {\n\t\treturn fmt.Errorf(\"invalid project or environment ID\")\n\t}\n\n\tsecrets, err := s.environmentRepo.GetEnvironmentSecrets(projectID, environmentID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = s.environmentRepo.DeleteEnvironment(projectID, environmentID)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar errors []error\n\n\tfor _, secret := range secrets {\n\t\terr = s.encryptionService.DeleteSecret(&secret)\n\t\tif err != nil {\n\t\t\terrors = append(errors, err)\n\t\t}\n\t}\n\n\tif len(errors) > 0 {\n\t\terr = fmt.Errorf(\"failed to delete some secrets: %v\", errors)\n\t\treturn\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/intergration_svc.go",
    "content": "package server\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\ntype IntegrationService interface {\n\tFillIntegration(integration *db.Integration) error\n}\n\ntype IntegrationServiceImpl struct {\n\taccessKeyRepo     db.AccessKeyManager\n\tencryptionService AccessKeyEncryptionService\n}\n\nfunc NewIntegrationService(\n\taccessKeyRepo db.AccessKeyManager,\n\tencryptionService AccessKeyEncryptionService,\n) IntegrationService {\n\treturn &IntegrationServiceImpl{\n\t\taccessKeyRepo:     accessKeyRepo,\n\t\tencryptionService: encryptionService,\n\t}\n}\n\nfunc (s *IntegrationServiceImpl) FillIntegration(inventory *db.Integration) (err error) {\n\tif inventory.AuthSecretID != nil {\n\t\tinventory.AuthSecret, err = s.accessKeyRepo.GetAccessKey(inventory.ProjectID, *inventory.AuthSecretID)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = s.encryptionService.DeserializeSecret(&inventory.AuthSecret)\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/inventory_svc.go",
    "content": "package server\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\ntype InventoryService interface {\n\tGetInventory(projectID int, inventoryID int) (inventory db.Inventory, err error)\n}\n\nfunc NewInventoryService(\n\taccessKeyRepo db.AccessKeyManager,\n\trepositoryRepo db.RepositoryManager,\n\tinventoryRepo db.InventoryManager,\n\tencryptionService AccessKeyEncryptionService,\n) InventoryService {\n\treturn &InventoryServiceImpl{\n\t\taccessKeyRepo:     accessKeyRepo,\n\t\trepositoryRepo:    repositoryRepo,\n\t\tencryptionService: encryptionService,\n\t\tinventoryRepo:     inventoryRepo,\n\t}\n}\n\ntype InventoryServiceImpl struct {\n\taccessKeyRepo     db.AccessKeyManager\n\trepositoryRepo    db.RepositoryManager\n\tencryptionService AccessKeyEncryptionService\n\tinventoryRepo     db.InventoryManager\n}\n\nfunc (s *InventoryServiceImpl) GetInventory(projectID int, inventoryID int) (inventory db.Inventory, err error) {\n\tinventory, err = s.inventoryRepo.GetInventory(projectID, inventoryID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = s.fillInventory(&inventory)\n\treturn\n}\n\nfunc (s *InventoryServiceImpl) fillInventory(inventory *db.Inventory) (err error) {\n\tif inventory.SSHKeyID != nil {\n\t\tinventory.SSHKey, err = s.accessKeyRepo.GetAccessKey(inventory.ProjectID, *inventory.SSHKeyID)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif inventory.BecomeKeyID != nil {\n\t\tinventory.BecomeKey, err = s.accessKeyRepo.GetAccessKey(inventory.ProjectID, *inventory.BecomeKeyID)\n\t}\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif inventory.RepositoryID != nil {\n\t\tvar repo db.Repository\n\t\trepo, err = s.repositoryRepo.GetRepository(inventory.ProjectID, *inventory.RepositoryID)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\terr = s.encryptionService.DeserializeSecret(&repo.SSHKey)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tinventory.Repository = &repo\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/project_svc.go",
    "content": "package server\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype ProjectService interface {\n\tUpdateProject(project db.Project) error\n\tDeleteProject(projectID int) error\n}\n\nfunc NewProjectService(\n\tprojectRepo db.ProjectStore,\n\tkeyRepo db.AccessKeyManager,\n) ProjectService {\n\treturn &ProjectServiceImpl{\n\t\tprojectRepo: projectRepo,\n\t\tkeyRepo:     keyRepo,\n\t}\n}\n\ntype ProjectServiceImpl struct {\n\tprojectRepo db.ProjectStore\n\tkeyRepo     db.AccessKeyManager\n}\n\nfunc (s *ProjectServiceImpl) DeleteProject(projectID int) error {\n\treturn s.projectRepo.DeleteProject(projectID)\n}\n\nfunc (s *ProjectServiceImpl) UpdateProject(project db.Project) (err error) {\n\terr = s.projectRepo.UpdateProject(project)\n\n\treturn\n}\n"
  },
  {
    "path": "services/server/project_svc_test.go",
    "content": "package server\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype mockProjectStore struct {\n\tUpdateProjectFn func(project db.Project) error\n\tDeleteProjectFn func(projectID int) error\n}\n\nfunc (m *mockProjectStore) UpdateProject(project db.Project) error {\n\tif m.UpdateProjectFn != nil {\n\t\treturn m.UpdateProjectFn(project)\n\t}\n\treturn nil\n}\nfunc (m *mockProjectStore) DeleteProject(projectID int) error {\n\tif m.DeleteProjectFn != nil {\n\t\treturn m.DeleteProjectFn(projectID)\n\t}\n\treturn nil\n}\n\n// Stub methods to satisfy db.ProjectStore\nfunc (m *mockProjectStore) GetProject(projectID int) (db.Project, error) { return db.Project{}, nil }\nfunc (m *mockProjectStore) GetAllProjects() ([]db.Project, error)        { return nil, nil }\nfunc (m *mockProjectStore) GetProjects(userID int) ([]db.Project, error) { return nil, nil }\nfunc (m *mockProjectStore) CreateProject(project db.Project) (db.Project, error) {\n\treturn db.Project{}, nil\n}\nfunc (m *mockProjectStore) GetProjectUsers(projectID int, params db.RetrieveQueryParams) ([]db.UserWithProjectRole, error) {\n\treturn nil, nil\n}\nfunc (m *mockProjectStore) CreateProjectUser(projectUser db.ProjectUser) (db.ProjectUser, error) {\n\treturn db.ProjectUser{}, nil\n}\nfunc (m *mockProjectStore) DeleteProjectUser(projectID int, userID int) error { return nil }\nfunc (m *mockProjectStore) GetProjectUser(projectID int, userID int) (db.ProjectUser, error) {\n\treturn db.ProjectUser{}, nil\n}\nfunc (m *mockProjectStore) UpdateProjectUser(projectUser db.ProjectUser) error { return nil }\n\ntype mockAccessKeyManager struct {\n\tGetAccessKeysFn   func(projectID int, opts db.GetAccessKeyOptions, params db.RetrieveQueryParams) ([]db.AccessKey, error)\n\tCreateAccessKeyFn func(key db.AccessKey) (db.AccessKey, error)\n\tDeleteAccessKeyFn func(projectID, keyID int) error\n\tUpdateAccessKeyFn func(key db.AccessKey) error\n}\n\nfunc (m *mockAccessKeyManager) GetAccessKeys(projectID int, opts db.GetAccessKeyOptions, params db.RetrieveQueryParams) ([]db.AccessKey, error) {\n\tif m.GetAccessKeysFn != nil {\n\t\treturn m.GetAccessKeysFn(projectID, opts, params)\n\t}\n\treturn nil, nil\n}\nfunc (m *mockAccessKeyManager) CreateAccessKey(key db.AccessKey) (db.AccessKey, error) {\n\tif m.CreateAccessKeyFn != nil {\n\t\treturn m.CreateAccessKeyFn(key)\n\t}\n\treturn db.AccessKey{}, nil\n}\nfunc (m *mockAccessKeyManager) DeleteAccessKey(projectID, keyID int) error {\n\tif m.DeleteAccessKeyFn != nil {\n\t\treturn m.DeleteAccessKeyFn(projectID, keyID)\n\t}\n\treturn nil\n}\nfunc (m *mockAccessKeyManager) UpdateAccessKey(key db.AccessKey) error {\n\tif m.UpdateAccessKeyFn != nil {\n\t\treturn m.UpdateAccessKeyFn(key)\n\t}\n\treturn nil\n}\n\n// Stub methods to satisfy db.AccessKeyManager\nfunc (m *mockAccessKeyManager) GetAccessKey(projectID int, accessKeyID int) (db.AccessKey, error) {\n\treturn db.AccessKey{}, nil\n}\nfunc (m *mockAccessKeyManager) GetAccessKeyRefs(projectID int, accessKeyID int) (db.ObjectReferrers, error) {\n\treturn db.ObjectReferrers{}, nil\n}\nfunc (m *mockAccessKeyManager) RekeyAccessKeys(oldKey string) error { return nil }\n\nfunc TestProjectServiceImpl_DeleteProject(t *testing.T) {\n\tmockRepo := &mockProjectStore{\n\t\tDeleteProjectFn: func(projectID int) error {\n\t\t\tif projectID == 42 {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn errors.New(\"not found\")\n\t\t},\n\t}\n\tservice := &ProjectServiceImpl{projectRepo: mockRepo}\n\n\terr := service.DeleteProject(42)\n\tif err != nil {\n\t\tt.Errorf(\"expected nil, got %v\", err)\n\t}\n\terr = service.DeleteProject(1)\n\tif err == nil || err.Error() != \"not found\" {\n\t\tt.Errorf(\"expected not found error, got %v\", err)\n\t}\n}\n\nfunc TestProjectServiceImpl_UpdateProject(t *testing.T) {\n\tproject := db.Project{ID: 1}\n\n\tt.Run(\"UpdateProject returns error\", func(t *testing.T) {\n\t\tmockRepo := &mockProjectStore{\n\t\t\tUpdateProjectFn: func(p db.Project) error { return errors.New(\"fail\") },\n\t\t}\n\t\tmockKey := &mockAccessKeyManager{}\n\t\tservice := &ProjectServiceImpl{projectRepo: mockRepo, keyRepo: mockKey}\n\t\terr := service.UpdateProject(project)\n\t\tif err == nil || err.Error() != \"fail\" {\n\t\t\tt.Errorf(\"expected fail error, got %v\", err)\n\t\t}\n\t})\n}\n"
  },
  {
    "path": "services/server/secret_storage_svc.go",
    "content": "package server\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\tpro \"github.com/semaphoreui/semaphore/pro/services/server\"\n)\n\ntype SecretStorageService interface {\n\tGetSecretStorage(projectID int, storageID int) (db.SecretStorage, error)\n\tUpdate(storage db.SecretStorage) error\n\tDelete(projectID int, storageID int) error\n\tGetSecretStorages(projectID int) ([]db.SecretStorage, error)\n\tCreate(storage db.SecretStorage) (res db.SecretStorage, err error)\n\tSyncSecrets(storage db.SecretStorage) error\n}\n\nfunc NewSecretStorageService(\n\tsecretStorageRepo db.SecretStorageRepository,\n\taccessKeyRepo db.AccessKeyManager,\n\taccessKeyService AccessKeyService,\n\tencryptionService AccessKeyEncryptionService,\n) SecretStorageService {\n\treturn &SecretStorageServiceImpl{\n\t\tsecretStorageRepo: secretStorageRepo,\n\t\taccessKeyRepo:     accessKeyRepo,\n\t\taccessKeyService:  accessKeyService,\n\t\tencryptionService: encryptionService,\n\t}\n}\n\ntype SecretStorageServiceImpl struct {\n\tsecretStorageRepo db.SecretStorageRepository\n\taccessKeyRepo     db.AccessKeyManager\n\taccessKeyService  AccessKeyService\n\tencryptionService AccessKeyEncryptionService\n}\n\nfunc (s *SecretStorageServiceImpl) SyncSecrets(storage db.SecretStorage) error {\n\tswitch storage.Type {\n\tcase db.SecretStorageTypeDvls:\n\t\treturn pro.SyncDvlsSecrets(storage, s.accessKeyRepo, s.encryptionService)\n\tdefault:\n\t\treturn fmt.Errorf(\"sync is not supported for storage type %q\", storage.Type)\n\t}\n}\n\nfunc (s *SecretStorageServiceImpl) Delete(projectID int, storageID int) (err error) {\n\terr = s.secretStorageRepo.DeleteSecretStorage(projectID, storageID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tkeys, err := s.accessKeyService.GetAll(projectID, db.GetAccessKeyOptions{\n\t\tOwner:     db.AccessKeySecretStorage,\n\t\tStorageID: &storageID,\n\t}, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor _, key := range keys {\n\t\terr = s.accessKeyService.Delete(projectID, key.ID)\n\t}\n\n\treturn\n}\n\nfunc (s *SecretStorageServiceImpl) GetSecretStorage(projectID int, storageID int) (res db.SecretStorage, err error) {\n\treturn s.secretStorageRepo.GetSecretStorage(projectID, storageID)\n}\n\nfunc (s *SecretStorageServiceImpl) Create(storage db.SecretStorage) (res db.SecretStorage, err error) {\n\tsourceStorageType := storage.SourceStorageType\n\tsourceStorageKey := \"\"\n\n\tif storage.Secret == \"\" {\n\t\terr = errors.New(\"secret must be set\")\n\t\treturn\n\t}\n\n\tif sourceStorageType != nil {\n\t\tswitch *sourceStorageType {\n\t\tcase db.AccessKeySourceStorageEnv:\n\t\t\tsourceStorageKey = storage.Secret\n\t\tcase db.AccessKeySourceStorageFile:\n\t\t\tsourceStorageKey = storage.Secret\n\t\tdefault:\n\t\t\terr = errors.New(\"unsupported source storage type\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tres, err = s.secretStorageRepo.CreateSecretStorage(storage)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tkey := db.AccessKey{\n\t\tName:              random.String(10),\n\t\tType:              db.AccessKeyString,\n\t\tProjectID:         &storage.ProjectID,\n\t\tOwner:             db.AccessKeySecretStorage,\n\t\tStorageID:         &res.ID,\n\t\tSourceStorageType: sourceStorageType,\n\t}\n\n\tif sourceStorageKey != \"\" {\n\t\tkey.SourceStorageKey = &sourceStorageKey\n\t} else {\n\t\tkey.String = storage.Secret\n\t}\n\n\t_, err = s.accessKeyService.Create(key)\n\n\treturn\n}\n\nfunc (s *SecretStorageServiceImpl) Update(storage db.SecretStorage) (err error) {\n\terr = s.secretStorageRepo.UpdateSecretStorage(storage)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tkeys, err := s.accessKeyService.GetAll(storage.ProjectID, db.GetAccessKeyOptions{\n\t\tOwner:     db.AccessKeySecretStorage,\n\t\tStorageID: &storage.ID,\n\t}, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(keys) == 0 {\n\t\tif storage.Secret == \"\" {\n\t\t\t// empty vault token means the user didn't set a new token,\n\t\t\t// so we don't create a new access key.\n\t\t\treturn\n\t\t}\n\n\t\tsourceStorageType := storage.SourceStorageType\n\t\tsourceStorageKey := \"\"\n\n\t\tif sourceStorageType != nil {\n\t\t\tswitch *sourceStorageType {\n\t\t\tcase db.AccessKeySourceStorageEnv, db.AccessKeySourceStorageFile:\n\t\t\t\tsourceStorageKey = storage.Secret\n\t\t\tdefault:\n\t\t\t\terr = errors.New(\"unsupported source storage type\")\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tnewKey := db.AccessKey{\n\t\t\tName:              random.String(10),\n\t\t\tType:              db.AccessKeyString,\n\t\t\tProjectID:         &storage.ProjectID,\n\t\t\tOwner:             db.AccessKeySecretStorage,\n\t\t\tStorageID:         &storage.ID,\n\t\t\tSourceStorageType: sourceStorageType,\n\t\t}\n\n\t\tif sourceStorageKey != \"\" {\n\t\t\tnewKey.SourceStorageKey = &sourceStorageKey\n\t\t} else {\n\t\t\tnewKey.String = storage.Secret\n\t\t}\n\n\t\t_, err = s.accessKeyService.Create(newKey)\n\n\t} else {\n\t\tvault := keys[0]\n\t\tif storage.Secret == \"\" {\n\t\t\t// Do nothing if the vault token is empty,\n\t\t\t// as it means the user haven't set a new token.\n\n\t\t\t//err = s.keyRepo.DeleteAccessKey(storage.ProjectID, vault.ID)\n\t\t\treturn\n\t\t}\n\n\t\tsourceStorageType := storage.SourceStorageType\n\t\tsourceStorageKey := \"\"\n\n\t\tif sourceStorageType != nil {\n\t\t\tswitch *sourceStorageType {\n\t\t\tcase db.AccessKeySourceStorageEnv, db.AccessKeySourceStorageFile:\n\t\t\t\tsourceStorageKey = storage.Secret\n\t\t\tdefault:\n\t\t\t\terr = errors.New(\"unsupported source storage type\")\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tvault.OverrideSecret = true\n\t\tvault.SourceStorageType = sourceStorageType\n\t\tif sourceStorageKey != \"\" {\n\t\t\tvault.SourceStorageKey = &sourceStorageKey\n\t\t\tvault.String = \"\"\n\t\t\t// Clear previously persisted encrypted secret when switching to env/file source.\n\t\t\tvault.Secret = nil\n\t\t} else {\n\t\t\tvault.SourceStorageKey = nil\n\t\t\tvault.String = storage.Secret\n\t\t}\n\n\t\terr = s.accessKeyService.Update(vault)\n\t}\n\n\treturn\n}\n\nfunc (s *SecretStorageServiceImpl) GetSecretStorages(projectID int) (storages []db.SecretStorage, err error) {\n\treturn pro.GetSecretStorages(s.secretStorageRepo, projectID)\n}\n"
  },
  {
    "path": "services/session_svc.go",
    "content": "package services\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n\t\"net/http\"\n\t\"time\"\n)\n\ntype SessionService interface {\n\tGetSession(cookie http.Cookie) (*db.Session, bool)\n}\n\ntype sessionServiceImpl struct {\n\tsessionRepo db.SessionManager\n}\n\nfunc NewSessionService(sessionRepo db.SessionManager) SessionService {\n\treturn &sessionServiceImpl{\n\t\tsessionRepo: sessionRepo,\n\t}\n}\n\nfunc (s *sessionServiceImpl) GetSession(cookie http.Cookie) (*db.Session, bool) {\n\tvar err error\n\n\tvalue := make(map[string]any)\n\tif err = util.Cookie.Decode(\"semaphore\", cookie.Value, &value); err != nil {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tuser, ok := value[\"user\"]\n\tsessionVal, okSession := value[\"session\"]\n\tif !ok || !okSession {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tuserID := user.(int)\n\tsessionID := sessionVal.(int)\n\n\t// fetch session\n\tsession, err := s.sessionRepo.GetSession(userID, sessionID)\n\n\tif err != nil {\n\t\t//w.WriteHeader(http.StatusUnauthorized)\n\t\treturn nil, false\n\t}\n\n\tif time.Since(session.LastActive).Hours() > 7*24 {\n\t\t// more than week old unused session\n\t\t// destroy.\n\t\tif err = s.sessionRepo.ExpireSession(userID, sessionID); err != nil {\n\t\t\t// it is internal error, it doesn't concern the user\n\t\t\tlog.Error(err)\n\t\t}\n\n\t\treturn nil, false\n\t}\n\n\treturn &session, true\n}\n"
  },
  {
    "path": "services/tasks/LocalJob.go",
    "content": "package tasks\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"maps\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\n\t\"path\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype LocalJob struct {\n\tTask        db.Task\n\tTemplate    db.Template\n\tInventory   db.Inventory\n\tRepository  db.Repository\n\tEnvironment db.Environment\n\tSecret      string             // Secret contains secrets received from Survey variables\n\tLogger      task_logger.Logger // Logger allows to send logs and status to the server\n\n\tApp db_lib.LocalApp\n\n\tkilled  bool // killed means that API request to stop the job has been received\n\tProcess *os.Process\n\n\tsshKeyInstallation     ssh.AccessKeyInstallation\n\tbecomeKeyInstallation  ssh.AccessKeyInstallation\n\tvaultFileInstallations map[string]ssh.AccessKeyInstallation\n\n\tKeyInstaller db_lib.AccessKeyInstaller\n}\n\nfunc (t *LocalJob) IsKilled() bool {\n\treturn t.killed\n}\n\nfunc (t *LocalJob) Kill() {\n\tt.killed = true\n\n\tif t.Process == nil {\n\t\treturn\n\t}\n\n\terr := t.Process.Kill()\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t}\n}\n\nfunc (t *LocalJob) Log(msg string) {\n\tt.Logger.Log(msg)\n}\n\nfunc (t *LocalJob) SetStatus(status task_logger.TaskStatus) {\n\tt.Logger.SetStatus(status)\n}\n\nfunc (t *LocalJob) SetCommit(hash, message string) {\n\t// TODO: is this the correct place to do?\n\tt.Task.CommitHash = &hash\n\tt.Task.CommitMessage = message\n\tt.Logger.SetCommit(hash, message)\n}\n\nfunc (t *LocalJob) getTaskDetails(username string, incomingVersion *string) (taskDetails map[string]any) {\n\ttaskDetails = make(map[string]any)\n\n\ttaskDetails[\"id\"] = t.Task.ID\n\n\tif t.Task.Message != \"\" {\n\t\ttaskDetails[\"message\"] = t.Task.Message\n\t}\n\n\ttaskDetails[\"username\"] = username\n\ttaskDetails[\"url\"] = t.Task.GetUrl()\n\ttaskDetails[\"commit_hash\"] = t.Task.CommitHash\n\ttaskDetails[\"commit_message\"] = t.Task.CommitMessage\n\ttaskDetails[\"inventory_name\"] = t.Inventory.Name\n\ttaskDetails[\"inventory_id\"] = t.Inventory.ID\n\ttaskDetails[\"repository_name\"] = t.Repository.Name\n\ttaskDetails[\"repository_id\"] = t.Repository.ID\n\n\tif t.Template.Type != db.TemplateTask {\n\t\ttaskDetails[\"type\"] = t.Template.Type\n\t\tif incomingVersion != nil {\n\t\t\ttaskDetails[\"incoming_version\"] = incomingVersion\n\t\t}\n\t\tif t.Template.Type == db.TemplateBuild {\n\t\t\ttaskDetails[\"target_version\"] = t.Task.Version\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) getEnvironmentExtraVars(username string, incomingVersion *string) (extraVars map[string]any, err error) {\n\n\textraVars = make(map[string]any)\n\n\tif t.Environment.JSON != \"\" {\n\t\terr = json.Unmarshal([]byte(t.Environment.JSON), &extraVars)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tvars := make(map[string]any)\n\tvars[\"task_details\"] = t.getTaskDetails(username, incomingVersion)\n\textraVars[\"semaphore_vars\"] = vars\n\n\treturn\n}\n\nfunc (t *LocalJob) getEnvironmentExtraVarsJSON(username string, incomingVersion *string) (str string, err error) {\n\textraVars := make(map[string]any)\n\textraSecretVars := make(map[string]any)\n\n\tif t.Environment.JSON != \"\" {\n\t\terr = json.Unmarshal([]byte(t.Environment.JSON), &extraVars)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tif t.Secret != \"\" {\n\t\terr = json.Unmarshal([]byte(t.Secret), &extraSecretVars)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tt.Secret = \"{}\"\n\n\tmaps.Copy(extraVars, extraSecretVars)\n\n\tvars := make(map[string]any)\n\tvars[\"task_details\"] = t.getTaskDetails(username, incomingVersion)\n\textraVars[\"semaphore_vars\"] = vars\n\n\tev, err := json.Marshal(extraVars)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstr = string(ev)\n\n\treturn\n}\n\nfunc (t *LocalJob) getEnvironmentENV() (res []string, err error) {\n\tenvironmentVars := make(map[string]string)\n\n\tif t.Environment.ENV != nil {\n\t\terr = json.Unmarshal([]byte(*t.Environment.ENV), &environmentVars)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor key, val := range environmentVars {\n\t\tres = append(res, fmt.Sprintf(\"%s=%s\", key, val))\n\t}\n\n\tfor _, secret := range t.Environment.Secrets {\n\t\tif secret.Type != db.EnvironmentSecretEnv {\n\t\t\tcontinue\n\t\t}\n\t\tres = append(res, fmt.Sprintf(\"%s=%s\", secret.Name, secret.Secret))\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) getShellEnvironmentExtraENV(username string, incomingVersion *string) (extraShellVars []string) {\n\ttaskDetails := t.getTaskDetails(username, incomingVersion)\n\n\tfor taskDetail, taskDetailValue := range taskDetails {\n\t\tenvVarName := fmt.Sprintf(\"SEMAPHORE_TASK_DETAILS_%s\", strings.ToUpper(taskDetail))\n\n\t\tdetailAsStr := \"\"\n\t\tswitch taskDetailValueOfType := taskDetailValue.(type) {\n\t\tcase string:\n\t\t\tdetailAsStr = taskDetailValueOfType\n\t\tcase *string:\n\t\t\tif taskDetailValueOfType != nil {\n\t\t\t\tdetailAsStr = *taskDetailValueOfType\n\t\t\t}\n\n\t\tcase int:\n\t\t\tdetailAsStr = strconv.Itoa(taskDetailValueOfType)\n\t\tcase *int:\n\t\t\tif taskDetailValueOfType != nil {\n\t\t\t\tdetailAsStr = strconv.Itoa(*taskDetailValueOfType)\n\t\t\t}\n\n\t\tdefault:\n\t\t\tcontinue\n\t\t}\n\n\t\tif detailAsStr != \"\" {\n\t\t\textraShellVars = append(extraShellVars, fmt.Sprintf(\"%s=%s\", envVarName, util.ShellQuote(util.ShellStripUnsafe(detailAsStr))))\n\t\t}\n\t}\n\n\treturn\n}\n\n// nolint: gocyclo\nfunc (t *LocalJob) getShellArgs(username string, incomingVersion *string) (args []string, err error) {\n\textraVars, err := t.getEnvironmentExtraVars(username, incomingVersion)\n\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\tt.Log(\"Error getting environment extra vars\")\n\t\treturn\n\t}\n\n\ttemplateArgs, taskArgs, err := t.getCLIArgs()\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\treturn\n\t}\n\n\t// Script to run\n\targs = append(args, t.Template.Playbook)\n\n\t// Include Environment Secret Vars\n\tfor _, secret := range t.Environment.Secrets {\n\t\tif secret.Type == db.EnvironmentSecretVar {\n\t\t\targs = append(args, fmt.Sprintf(\"%s=%s\", secret.Name, secret.Secret))\n\t\t}\n\t}\n\n\t// Include extra args from template\n\targs = append(args, templateArgs...)\n\n\t// Include ExtraVars and Survey Vars\n\tfor name, value := range extraVars {\n\t\tif name != \"semaphore_vars\" {\n\t\t\targs = append(args, fmt.Sprintf(\"%s=%s\", name, value))\n\t\t}\n\t}\n\n\t// Include extra args from task\n\targs = append(args, taskArgs...)\n\n\treturn\n}\n\n// nolint: gocyclo\nfunc (t *LocalJob) getTerraformArgs(username string, incomingVersion *string) (argsMap map[string][]string, err error) {\n\n\targsMap = make(map[string][]string)\n\n\textraVars, err := t.getEnvironmentExtraVars(username, incomingVersion)\n\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\tt.Log(\"Could not remove command environment, if existent it will be passed to --extra-vars. This is not fatal but be aware of side effects\")\n\t\treturn\n\t}\n\n\tvar params db.TerraformTaskParams\n\terr = t.Task.ExtractParams(&params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Common args for destroy flag\n\tdestroyArgs := []string{}\n\tif params.Destroy {\n\t\tdestroyArgs = append(destroyArgs, \"-destroy\")\n\t}\n\n\t// Common args for environment variables\n\tvarArgs := []string{}\n\tfor name, value := range extraVars {\n\t\tif name == \"semaphore_vars\" {\n\t\t\tcontinue\n\t\t}\n\t\tvarArgs = append(varArgs, \"-var\", fmt.Sprintf(\"%s=%s\", name, value))\n\t}\n\n\ttemplateArgsMap, taskArgsMap, err := t.getCLIArgsMap()\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\treturn\n\t}\n\n\t// Common args for environment secrets\n\tsecretArgs := []string{}\n\tfor _, secret := range t.Environment.Secrets {\n\t\tif secret.Type != db.EnvironmentSecretVar {\n\t\t\tcontinue\n\t\t}\n\t\tsecretArgs = append(secretArgs, \"-var\", fmt.Sprintf(\"%s=%s\", secret.Name, secret.Secret))\n\t}\n\n\t// Merge template and task args maps\n\tif templateArgsMap != nil {\n\t\tfor stage, stageArgs := range templateArgsMap {\n\t\t\targsMap[stage] = append([]string{}, stageArgs...)\n\t\t}\n\t}\n\n\tif taskArgsMap != nil {\n\t\tfor stage, stageArgs := range taskArgsMap {\n\t\t\tif existing, ok := argsMap[stage]; ok {\n\t\t\t\targsMap[stage] = append(existing, stageArgs...)\n\t\t\t} else {\n\t\t\t\targsMap[stage] = append([]string{}, stageArgs...)\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(argsMap) == 0 {\n\t\targsMap[\"default\"] = []string{}\n\t}\n\n\t// Add common args to each stage except init\n\tfor stage := range argsMap {\n\t\tif stage == \"init\" {\n\t\t\tcontinue\n\t\t}\n\t\t// Prepend destroy args\n\t\tcombined := append([]string{}, destroyArgs...)\n\t\tcombined = append(combined, argsMap[stage]...)\n\t\tcombined = append(combined, varArgs...)\n\t\tcombined = append(combined, secretArgs...)\n\t\targsMap[stage] = combined\n\t}\n\n\treturn\n}\n\n// nolint: gocyclo\nfunc (t *LocalJob) getPlaybookArgs(username string, incomingVersion *string) (args []string, inputs map[string]string, err error) {\n\n\tinputMap := make(map[db.AccessKeyRole]string)\n\tinputs = make(map[string]string)\n\n\tplaybookName := t.Task.Playbook\n\tif playbookName == \"\" {\n\t\tplaybookName = t.Template.Playbook\n\t}\n\n\tvar inventoryFilename string\n\tswitch t.Inventory.Type {\n\tcase db.InventoryFile:\n\t\tif t.Inventory.RepositoryID == nil {\n\t\t\tinventoryFilename = t.Inventory.GetFilename()\n\t\t} else {\n\t\t\tinventoryFilename = path.Join(t.tmpInventoryFullPath(), t.Inventory.GetFilename())\n\t\t}\n\tcase db.InventoryStatic, db.InventoryStaticYaml:\n\t\tinventoryFilename = t.tmpInventoryFullPath()\n\tdefault:\n\t\terr = fmt.Errorf(\"invalid inventory type\")\n\t\treturn\n\t}\n\n\targs = []string{\n\t\t\"-i\", inventoryFilename,\n\t}\n\n\tif t.Inventory.SSHKeyID != nil {\n\t\tswitch t.Inventory.SSHKey.Type {\n\t\tcase db.AccessKeySSH:\n\t\t\tif t.sshKeyInstallation.Login != \"\" {\n\t\t\t\targs = append(args, \"--user\", t.sshKeyInstallation.Login)\n\t\t\t}\n\t\tcase db.AccessKeyLoginPassword:\n\t\t\tif t.sshKeyInstallation.Login != \"\" {\n\t\t\t\targs = append(args, \"--user\", t.sshKeyInstallation.Login)\n\t\t\t}\n\t\t\tif t.sshKeyInstallation.Password != \"\" {\n\t\t\t\targs = append(args, \"--ask-pass\")\n\t\t\t\tinputMap[db.AccessKeyRoleAnsibleUser] = t.sshKeyInstallation.Password\n\t\t\t}\n\t\tcase db.AccessKeyNone:\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"access key does not suite for inventory's user credentials\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tif t.Inventory.BecomeKeyID != nil {\n\t\tswitch t.Inventory.BecomeKey.Type {\n\t\tcase db.AccessKeyLoginPassword:\n\t\t\tif t.becomeKeyInstallation.Login != \"\" {\n\t\t\t\targs = append(args, \"--become-user\", t.becomeKeyInstallation.Login)\n\t\t\t}\n\t\t\tif t.becomeKeyInstallation.Password != \"\" {\n\t\t\t\targs = append(args, \"--ask-become-pass\")\n\t\t\t\tinputMap[db.AccessKeyRoleAnsibleBecomeUser] = t.becomeKeyInstallation.Password\n\t\t\t}\n\t\tcase db.AccessKeyNone:\n\t\tdefault:\n\t\t\terr = fmt.Errorf(\"access key does not suite for inventory's sudo user credentials\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tvar tplParams db.AnsibleTemplateParams\n\n\terr = t.Template.FillParams(&tplParams)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar params db.AnsibleTaskParams\n\n\terr = t.Task.ExtractParams(&params)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif tplParams.AllowDebug && params.Debug {\n\t\tif params.DebugLevel < 1 {\n\t\t\tparams.DebugLevel = 4\n\t\t}\n\n\t\tif params.DebugLevel > 6 {\n\t\t\tparams.DebugLevel = 6\n\t\t}\n\n\t\targs = append(args, \"-\"+strings.Repeat(\"v\", params.DebugLevel))\n\t}\n\n\tif params.Diff {\n\t\targs = append(args, \"--diff\")\n\t}\n\n\tif params.DryRun {\n\t\targs = append(args, \"--check\")\n\t}\n\n\tfor name, install := range t.vaultFileInstallations {\n\t\tif install.Password != \"\" {\n\t\t\targs = append(args, fmt.Sprintf(\"--vault-id=%s@prompt\", name))\n\t\t\tinputs[fmt.Sprintf(\"Vault password (%s):\", name)] = install.Password\n\t\t}\n\t\tif install.Script != \"\" {\n\t\t\targs = append(args, fmt.Sprintf(\"--vault-id=%s@%s\", name, install.Script))\n\t\t}\n\t}\n\n\textraVars, err := t.getEnvironmentExtraVarsJSON(username, incomingVersion)\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\tt.Log(\"Could not remove command environment, if existent it will be passed to --extra-vars. This is not fatal but be aware of side effects\")\n\t} else if extraVars != \"\" {\n\t\targs = append(args, \"--extra-vars\", extraVars)\n\t}\n\n\tfor _, secret := range t.Environment.Secrets {\n\t\tif secret.Type != db.EnvironmentSecretVar {\n\t\t\tcontinue\n\t\t}\n\t\targs = append(args, \"--extra-vars\", fmt.Sprintf(\"%s=%s\", secret.Name, secret.Secret))\n\t}\n\n\ttemplateArgs, taskArgs, err := t.getCLIArgs()\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t\treturn\n\t}\n\n\tvar limit string\n\tvar tags string\n\tvar skipTags string\n\n\t// Fill fields from template\n\tif len(tplParams.Limit) > 0 {\n\t\tlimit = strings.Join(tplParams.Limit, \",\")\n\t}\n\n\tif len(tplParams.Tags) > 0 {\n\t\ttags = strings.Join(tplParams.Tags, \",\")\n\t}\n\n\tif len(tplParams.SkipTags) > 0 {\n\t\tskipTags = strings.Join(tplParams.SkipTags, \",\")\n\t}\n\n\t// Fill fields from task\n\n\tif tplParams.AllowOverrideLimit && params.Limit != nil {\n\t\tlimit = strings.Join(params.Limit, \",\")\n\t}\n\n\tif tplParams.AllowOverrideTags && params.Tags != nil {\n\t\ttags = strings.Join(params.Tags, \",\")\n\t}\n\n\tif tplParams.AllowOverrideSkipTags && params.SkipTags != nil {\n\t\tskipTags = strings.Join(params.SkipTags, \",\")\n\t}\n\n\t// Add final args\n\n\tif limit != \"\" {\n\t\ttemplateArgs = append(templateArgs, \"--limit=\"+limit)\n\t}\n\n\tif tags != \"\" {\n\t\ttemplateArgs = append(templateArgs, \"--tags=\"+tags)\n\t}\n\n\tif skipTags != \"\" {\n\t\ttemplateArgs = append(templateArgs, \"--skip-tags=\"+skipTags)\n\t}\n\n\targs = append(args, templateArgs...)\n\targs = append(args, taskArgs...)\n\targs = append(args, playbookName)\n\n\tif line, ok := inputMap[db.AccessKeyRoleAnsibleUser]; ok {\n\t\tinputs[\"SSH password:\"] = line\n\t}\n\n\tif line, ok := inputMap[db.AccessKeyRoleAnsibleBecomeUser]; ok {\n\t\tinputs[\"BECOME password\"] = line\n\t}\n\n\tif line, ok := inputMap[db.AccessKeyRoleAnsibleBecomeUser]; ok {\n\t\tinputs[\"SUDO password\"] = line\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) getCLIArgs() (templateArgs []string, taskArgs []string, err error) {\n\n\tif t.Template.Arguments != nil {\n\t\terr = json.Unmarshal([]byte(*t.Template.Arguments), &templateArgs)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"invalid format of the template extra arguments, must be valid JSON\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tif t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {\n\t\terr = json.Unmarshal([]byte(*t.Task.Arguments), &taskArgs)\n\t\tif err != nil {\n\t\t\terr = fmt.Errorf(\"invalid format of the TaskRunner extra arguments, must be valid JSON\")\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\n// convertArgsJSONIfArray converts array format JSON to map format with \"default\" key and returns the parsed result\nfunc convertArgsJSONIfArray(argsJSON string) (map[string][]string, error) {\n\tif argsJSON == \"\" {\n\t\treturn nil, nil\n\t}\n\n\t// Try to parse as array first\n\tvar arr []string\n\tif err := json.Unmarshal([]byte(argsJSON), &arr); err == nil {\n\t\t// It's an array, convert to map format\n\t\tmapArgs := map[string][]string{\n\t\t\t\"default\": arr,\n\t\t}\n\t\treturn mapArgs, nil\n\t}\n\n\t// If not an array, verify it's a valid map format\n\tvar mapArgs map[string][]string\n\tif err := json.Unmarshal([]byte(argsJSON), &mapArgs); err != nil {\n\t\treturn nil, fmt.Errorf(\"invalid format of arguments, must be valid JSON array or map: %v\", err)\n\t}\n\n\treturn mapArgs, nil\n}\n\n// getCLIArgsMap returns args that support both array and map formats\n// Array format is automatically converted to map with \"default\" key for backward compatibility\n// Returns: templateArgsMap (map), taskArgsMap (map), err\nfunc (t *LocalJob) getCLIArgsMap() (templateArgsMap map[string][]string, taskArgsMap map[string][]string, err error) {\n\n\t// Convert template arguments if needed\n\tif t.Template.Arguments != nil {\n\t\ttemplateArgsMap, err = convertArgsJSONIfArray(*t.Template.Arguments)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\t// Convert task arguments if needed\n\tif t.Template.AllowOverrideArgsInTask && t.Task.Arguments != nil {\n\t\ttaskArgsMap, err = convertArgsJSONIfArray(*t.Task.Arguments)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) getTemplateParams() (any, error) {\n\tvar params any\n\tswitch t.Template.App {\n\tcase db.AppAnsible:\n\t\tparams = &db.AnsibleTemplateParams{}\n\tcase db.AppTerraform, db.AppTofu, db.AppTerragrunt:\n\t\tparams = &db.TerraformTemplateParams{}\n\tdefault:\n\t\treturn nil, nil\n\t}\n\n\terr := t.Template.FillParams(params)\n\treturn params, err\n}\n\nfunc (t *LocalJob) getParams() (params any, err error) {\n\tswitch t.Template.App {\n\tcase db.AppAnsible:\n\t\tparams = &db.AnsibleTaskParams{}\n\tcase db.AppTerraform, db.AppTofu, db.AppTerragrunt:\n\t\tparams = &db.TerraformTaskParams{}\n\tdefault:\n\t\tparams = &db.DefaultTaskParams{}\n\t}\n\n\terr = t.Task.ExtractParams(params)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) Run(username string, incomingVersion *string, alias string) (err error) {\n\n\tdefer func() {\n\t\tt.destroyKeys()\n\t\tt.destroyInventoryFile()\n\t\tt.App.Clear()\n\t}()\n\n\tt.SetStatus(task_logger.TaskRunningStatus) // It is required for local mode. Don't delete\n\n\tenvironmentVariables, err := t.getEnvironmentENV()\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttplParams, err := t.getTemplateParams()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tparams, err := t.getParams()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif t.Template.App.IsTerraform() && alias != \"\" {\n\t\tenvironmentVariables = append(environmentVariables, \"TF_HTTP_ADDRESS=\"+util.GetPublicAliasURL(\"terraform\", alias))\n\t}\n\n\t// For Terraform apps, get args first so we can pass init args to prepareRun\n\tvar argsMap map[string][]string\n\tvar inputs map[string]string\n\n\tif t.Template.App.IsTerraform() {\n\t\targsMap, err = t.getTerraformArgs(username, incomingVersion)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\t// Use Terraform-specific prepareRun with init args\n\t\tif tfApp, ok := t.App.(*db_lib.TerraformApp); ok {\n\t\t\tinitArgs := []string(nil)\n\t\t\tif argsMap != nil {\n\t\t\t\tif stageArgs, ok := argsMap[\"init\"]; ok {\n\t\t\t\t\tinitArgs = stageArgs\n\t\t\t\t}\n\t\t\t}\n\n\t\t\terr = t.prepareRunTerraform(tfApp, db_lib.LocalAppInstallingArgs{\n\t\t\t\tEnvironmentVars: environmentVariables,\n\t\t\t\tTplParams:       tplParams,\n\t\t\t\tParams:          params,\n\t\t\t\tInstaller:       t.KeyInstaller,\n\t\t\t}, initArgs)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\terr = t.prepareRun(db_lib.LocalAppInstallingArgs{\n\t\t\t\tEnvironmentVars: environmentVariables,\n\t\t\t\tTplParams:       tplParams,\n\t\t\t\tParams:          params,\n\t\t\t\tInstaller:       t.KeyInstaller,\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t} else {\n\t\terr = t.prepareRun(db_lib.LocalAppInstallingArgs{\n\t\t\tEnvironmentVars: environmentVariables,\n\t\t\tTplParams:       tplParams,\n\t\t\tParams:          params,\n\t\t\tInstaller:       t.KeyInstaller,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Get args for non-Terraform apps\n\tvar args []string\n\tswitch t.Template.App {\n\tcase db.AppAnsible:\n\t\targs, inputs, err = t.getPlaybookArgs(username, incomingVersion)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\t// Convert to map format with \"default\" key\n\t\targsMap = map[string][]string{\"default\": args}\n\tcase db.AppTerraform, db.AppTofu, db.AppTerragrunt:\n\t\t// Already got args earlier for Terraform\n\tdefault:\n\t\targs, err = t.getShellArgs(username, incomingVersion)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\t// Convert to map format with \"default\" key\n\t\targsMap = map[string][]string{\"default\": args}\n\t}\n\n\t// Get extra environment vars for non-Terraform apps\n\tswitch t.Template.App {\n\tcase db.AppAnsible:\n\t\t// Semaphore vars / task details were already passed\n\t\t// as 'extra vars' in JSON format\n\t\tbreak\n\tcase db.AppTerraform, db.AppTofu, db.AppTerragrunt:\n\t\tbreak\n\tdefault:\n\t\tenvironmentVariables = append(environmentVariables, t.getShellEnvironmentExtraENV(username, incomingVersion)...)\n\t}\n\n\tif t.Inventory.SSHKey.Type == db.AccessKeySSH && t.Inventory.SSHKeyID != nil {\n\t\tenvironmentVariables = append(environmentVariables, fmt.Sprintf(\"SSH_AUTH_SOCK=%s\", t.sshKeyInstallation.SSHAgent.SocketFile))\n\t}\n\n\tif t.Template.Type != db.TemplateTask {\n\n\t\tenvironmentVariables = append(environmentVariables, fmt.Sprintf(\"SEMAPHORE_TASK_TYPE=%s\", t.Template.Type))\n\n\t\tif incomingVersion != nil {\n\t\t\tenvironmentVariables = append(\n\t\t\t\tenvironmentVariables,\n\t\t\t\tfmt.Sprintf(\"SEMAPHORE_TASK_INCOMING_VERSION=%s\", *incomingVersion))\n\t\t}\n\n\t\tif t.Template.Type == db.TemplateBuild && t.Task.Version != nil {\n\t\t\tenvironmentVariables = append(\n\t\t\t\tenvironmentVariables,\n\t\t\t\tfmt.Sprintf(\"SEMAPHORE_TASK_TARGET_VERSION=%s\", *t.Task.Version))\n\t\t}\n\t}\n\n\tif t.killed {\n\t\tt.SetStatus(task_logger.TaskStoppedStatus)\n\t\treturn nil\n\t}\n\n\treturn t.App.Run(db_lib.LocalAppRunningArgs{\n\t\tCliArgs:         argsMap,\n\t\tEnvironmentVars: environmentVariables,\n\t\tInputs:          inputs,\n\t\tTaskParams:      params,\n\t\tTemplateParams:  tplParams,\n\t\tCallback: func(p *os.Process) {\n\t\t\tt.Process = p\n\t\t},\n\t})\n\n}\n\nfunc (t *LocalJob) prepareRun(installingArgs db_lib.LocalAppInstallingArgs) error {\n\n\tt.Log(\"Preparing: \" + strconv.Itoa(t.Task.ID))\n\n\tif err := checkTmpDir(util.Config.GetProjectTmpDir(t.Template.ProjectID)); err != nil {\n\t\tt.Log(\"Creating tmp dir failed: \" + err.Error())\n\t\treturn err\n\t}\n\n\tif util.Config.HomeDirMode != util.HomeDirModeProjectHome {\n\t\tif err := checkTmpDir(t.Repository.GetHomePath(t.Template.ID)); err != nil {\n\t\t\tt.Log(\"Creating task home dir failed: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Override git branch from template if set\n\tif t.Template.GitBranch != nil && *t.Template.GitBranch != \"\" {\n\t\tt.Repository.GitBranch = *t.Template.GitBranch\n\t}\n\n\t// Override git branch from task if set\n\tif t.Task.GitBranch != nil && *t.Task.GitBranch != \"\" {\n\t\tt.Repository.GitBranch = *t.Task.GitBranch\n\t}\n\n\tif t.Repository.GetType() == db.RepositoryLocal {\n\t\tif _, err := os.Stat(t.Repository.GitURL); err != nil {\n\t\t\tt.Log(\"Failed in finding static repository at \" + t.Repository.GitURL + \": \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tif err := t.updateRepository(); err != nil {\n\t\t\tt.Log(\"Failed updating repository: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t\tif err := t.checkoutRepository(); err != nil {\n\t\t\tt.Log(\"Failed to checkout repository to required commit: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := t.installInventory(); err != nil {\n\t\tt.Log(\"Failed to install inventory: \" + err.Error())\n\t\treturn err\n\t}\n\n\tif err := t.App.InstallRequirements(installingArgs); err != nil {\n\t\tt.Log(\"Failed to install requirements: \" + err.Error())\n\t\treturn err\n\t}\n\n\tif err := t.installVaultKeyFiles(); err != nil {\n\t\tt.Log(\"Failed to install vault password files: \" + err.Error())\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (t *LocalJob) prepareRunTerraform(tfApp *db_lib.TerraformApp, installingArgs db_lib.LocalAppInstallingArgs, initArgs []string) error {\n\n\tt.Log(\"Preparing: \" + strconv.Itoa(t.Task.ID))\n\n\tif err := checkTmpDir(util.Config.GetProjectTmpDir(t.Template.ProjectID)); err != nil {\n\t\tt.Log(\"Creating tmp dir failed: \" + err.Error())\n\t\treturn err\n\t}\n\n\tif util.Config.HomeDirMode != util.HomeDirModeProjectHome {\n\t\tif err := checkTmpDir(t.Repository.GetHomePath(t.Template.ID)); err != nil {\n\t\t\tt.Log(\"Creating task home dir failed: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Override git branch from template if set\n\tif t.Template.GitBranch != nil && *t.Template.GitBranch != \"\" {\n\t\tt.Repository.GitBranch = *t.Template.GitBranch\n\t}\n\n\t// Override git branch from task if set\n\tif t.Task.GitBranch != nil && *t.Task.GitBranch != \"\" {\n\t\tt.Repository.GitBranch = *t.Task.GitBranch\n\t}\n\n\tif t.Repository.GetType() == db.RepositoryLocal {\n\t\tif _, err := os.Stat(t.Repository.GitURL); err != nil {\n\t\t\tt.Log(\"Failed in finding static repository at \" + t.Repository.GitURL + \": \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t} else {\n\t\tif err := t.updateRepository(); err != nil {\n\t\t\tt.Log(\"Failed updating repository: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t\tif err := t.checkoutRepository(); err != nil {\n\t\t\tt.Log(\"Failed to checkout repository to required commit: \" + err.Error())\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := t.installInventory(); err != nil {\n\t\tt.Log(\"Failed to install inventory: \" + err.Error())\n\t\treturn err\n\t}\n\n\t// Call Terraform-specific install with init args\n\tif err := tfApp.InstallRequirementsWithInitArgs(installingArgs, initArgs); err != nil {\n\t\tt.Log(\"Failed to install requirements: \" + err.Error())\n\t\treturn err\n\t}\n\n\tif err := t.installVaultKeyFiles(); err != nil {\n\t\tt.Log(\"Failed to install vault password files: \" + err.Error())\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (t *LocalJob) updateRepository() error {\n\trepo := db_lib.GitRepository{\n\t\tLogger:     t.Logger,\n\t\tTemplateID: t.Template.ID,\n\t\tRepository: t.Repository,\n\t\tClient:     db_lib.CreateDefaultGitClient(t.KeyInstaller),\n\t}\n\n\terr := repo.ValidateRepo()\n\n\tif err != nil {\n\t\tif !os.IsNotExist(err) {\n\t\t\terr = os.RemoveAll(repo.GetFullPath())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn repo.Clone()\n\t}\n\n\tif repo.CanBePulled() {\n\t\terr = repo.Pull()\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\terr = os.RemoveAll(repo.GetFullPath())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn repo.Clone()\n}\n\nfunc (t *LocalJob) checkoutRepository() error {\n\n\trepo := db_lib.GitRepository{\n\t\tLogger:     t.Logger,\n\t\tTemplateID: t.Template.ID,\n\t\tRepository: t.Repository,\n\t\tClient:     db_lib.CreateDefaultGitClient(t.KeyInstaller),\n\t}\n\n\terr := repo.ValidateRepo()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif t.Task.CommitHash != nil {\n\t\t// checkout to commit if it is provided for TaskRunner\n\t\treturn repo.Checkout(*t.Task.CommitHash)\n\t}\n\n\t// store commit to TaskRunner table\n\n\tcommitHash, err := repo.GetLastCommitHash()\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tcommitMessage, err := repo.GetLastCommitMessage()\n\n\tif err != nil {\n\t\tt.Log(err.Error())\n\t}\n\n\tt.SetCommit(commitHash, commitMessage)\n\n\treturn nil\n}\n\nfunc (t *LocalJob) installVaultKeyFiles() (err error) {\n\tt.vaultFileInstallations = make(map[string]ssh.AccessKeyInstallation)\n\n\tif len(t.Template.Vaults) == 0 {\n\t\treturn nil\n\t}\n\n\tfor _, vault := range t.Template.Vaults {\n\t\tvar name string\n\t\tif vault.Name != nil {\n\t\t\tname = *vault.Name\n\t\t} else {\n\t\t\tname = \"default\"\n\t\t}\n\n\t\tvar install ssh.AccessKeyInstallation\n\t\tif vault.Type == db.TemplateVaultPassword {\n\t\t\tinstall, err = t.KeyInstaller.Install(*vault.Vault, db.AccessKeyRoleAnsiblePasswordVault, t.Logger)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tif vault.Type == db.TemplateVaultScript && vault.Script != nil {\n\t\t\tinstall.Script = *vault.Script\n\t\t}\n\n\t\tt.vaultFileInstallations[name] = install\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "services/tasks/LocalJob_inventory.go",
    "content": "package tasks\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nfunc (t *LocalJob) installInventory() (err error) {\n\tif t.Inventory.SSHKeyID != nil {\n\t\tt.sshKeyInstallation, err = t.KeyInstaller.Install(t.Inventory.SSHKey, db.AccessKeyRoleAnsibleUser, t.Logger)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif t.Inventory.BecomeKeyID != nil {\n\t\tt.becomeKeyInstallation, err = t.KeyInstaller.Install(t.Inventory.BecomeKey, db.AccessKeyRoleAnsibleBecomeUser, t.Logger)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tswitch t.Inventory.Type {\n\tcase db.InventoryFile:\n\t\terr = t.cloneInventoryRepo(t.KeyInstaller)\n\tcase db.InventoryStatic, db.InventoryStaticYaml:\n\t\terr = t.installStaticInventory()\n\t}\n\n\treturn\n}\n\nfunc (t *LocalJob) tmpInventoryFilename() string {\n\tif t.Inventory.Repository == nil {\n\t\treturn \"inventory_\" + strconv.Itoa(t.Inventory.ID)\n\t}\n\treturn t.Inventory.Repository.GetDirName(t.Template.ID) + \"_inventory_\" + strconv.Itoa(t.Inventory.ID)\n}\n\nfunc (t *LocalJob) tmpInventoryFullPath() string {\n\tif t.Inventory.Repository != nil && t.Inventory.Repository.GetType() == db.RepositoryLocal {\n\t\treturn t.Inventory.Repository.GetGitURL(true)\n\t}\n\tpathname := path.Join(util.Config.GetProjectTmpDir(t.Template.ProjectID), t.tmpInventoryFilename())\n\tif t.Inventory.Type == db.InventoryStaticYaml {\n\t\tpathname += \".yml\"\n\t}\n\treturn pathname\n}\n\nfunc (t *LocalJob) cloneInventoryRepo(keyInstaller db_lib.AccessKeyInstaller) error {\n\tif t.Inventory.Repository == nil {\n\t\treturn nil\n\t}\n\n\tif t.Inventory.Repository.GetType() == db.RepositoryLocal {\n\t\treturn nil\n\t}\n\n\tt.Log(\"cloning inventory repository\")\n\n\trepo := db_lib.GitRepository{\n\t\tLogger:     t.Logger,\n\t\tTmpDirName: t.tmpInventoryFilename(),\n\t\tRepository: *t.Inventory.Repository,\n\t\tClient:     db_lib.CreateDefaultGitClient(keyInstaller),\n\t}\n\n\t// Try to pull the repo before trying to clone it\n\tif repo.CanBePulled() {\n\t\terr := repo.Pull()\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\terr := os.RemoveAll(repo.GetFullPath())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn repo.Clone()\n}\n\nfunc (t *LocalJob) installStaticInventory() error {\n\tt.Log(\"installing static inventory\")\n\n\tfullPath := t.tmpInventoryFullPath()\n\n\t// create inventory file\n\treturn os.WriteFile(fullPath, []byte(t.Inventory.Inventory), 0664)\n}\n\nfunc (t *LocalJob) destroyInventoryFile() {\n\tif !t.Inventory.Type.IsStatic() {\n\t\treturn\n\t}\n\n\tfullPath := t.tmpInventoryFullPath()\n\tif err := os.Remove(fullPath); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn\n\t\t}\n\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"context\": \"task_running\",\n\t\t\t\"task_id\": t.Task.ID,\n\t\t}).Warn(\"failed to remove inventory file\")\n\t}\n}\n\nfunc (t *LocalJob) destroyKeys() {\n\terr := t.sshKeyInstallation.Destroy()\n\tif err != nil {\n\t\tt.Log(\"Can't destroy inventory user key, error: \" + err.Error())\n\t}\n\n\terr = t.becomeKeyInstallation.Destroy()\n\tif err != nil {\n\t\tt.Log(\"Can't destroy inventory become user key, error: \" + err.Error())\n\t}\n\n\tfor _, vault := range t.vaultFileInstallations {\n\t\terr = vault.Destroy()\n\t\tif err != nil {\n\t\t\tt.Log(\"Can't destroy inventory vault password file, error: \" + err.Error())\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "services/tasks/RemoteJob.go",
    "content": "package tasks\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\tlog \"github.com/sirupsen/logrus\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\n// ErrAllRunnersBusy is returned when all available runners are busy\nvar ErrAllRunnersBusy = errors.New(\"all runners busy\")\n\ntype RemoteJob struct {\n\tRunnerTag *string\n\tTask      db.Task\n\ttaskPool  *TaskPool\n\tkilled    bool\n}\n\ntype runnerWebhookPayload struct {\n\tAction     string `json:\"action\"`\n\tProjectID  int    `json:\"project_id\"`\n\tTaskID     int    `json:\"task_id\"`\n\tTemplateID int    `json:\"template_id\"`\n\tRunnerID   int    `json:\"runner_id\"`\n}\n\nfunc callRunnerWebhook(runner *db.Runner, tsk *TaskRunner, action string) (err error) {\n\tif runner.Webhook == \"\" {\n\t\treturn\n\t}\n\n\tlog.WithFields(log.Fields{\n\t\t\"runner_id\": runner.ID,\n\t\t\"task_id\":   tsk.Task.ID,\n\t\t\"action\":    action,\n\t}).Infof(\"Calling runner webhook\")\n\n\tvar jsonBytes []byte\n\tjsonBytes, err = json.Marshal(runnerWebhookPayload{\n\t\tAction:     action,\n\t\tProjectID:  tsk.Task.ProjectID,\n\t\tTaskID:     tsk.Task.ID,\n\t\tTemplateID: tsk.Template.ID,\n\t\tRunnerID:   runner.ID,\n\t})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclient := &http.Client{}\n\n\tvar req *http.Request\n\treq, err = http.NewRequest(\"POST\", runner.Webhook, bytes.NewBuffer(jsonBytes))\n\tif err != nil {\n\t\treturn\n\t}\n\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tvar resp *http.Response\n\tresp, err = client.Do(req)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n\n\tif resp.StatusCode != 200 && resp.StatusCode != 204 {\n\t\terr = fmt.Errorf(\"webhook returned incorrect status\")\n\t\treturn\n\t}\n\n\tlog.WithFields(log.Fields{\n\t\t\"runner_id\": runner.ID,\n\t\t\"task_id\":   tsk.Task.ID,\n\t\t\"action\":    action,\n\t}).Infof(\"Runner webhook returned %d\", resp.StatusCode)\n\n\treturn\n}\n\nfunc (t *RemoteJob) Run(username string, incomingVersion *string, alias string) (err error) {\n\n\ttsk := t.taskPool.GetTask(t.Task.ID)\n\n\tif tsk == nil {\n\t\treturn fmt.Errorf(\"task not found\")\n\t}\n\n\ttsk.IncomingVersion = incomingVersion\n\ttsk.Username = username\n\ttsk.Alias = alias\n\tt.taskPool.state.UpdateRuntimeFields(tsk)\n\n\tvar runners []db.Runner\n\tdb.StoreSession(t.taskPool.store, \"run remote job\", func() {\n\t\tvar projectRunners []db.Runner\n\t\tprojectRunners, err = t.taskPool.store.GetRunners(t.Task.ProjectID, true, t.RunnerTag)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tvar globalRunners []db.Runner\n\t\tglobalRunners, err = t.taskPool.store.GetAllRunners(true, true)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\trunners = append(runners, projectRunners...)\n\t\trunners = append(runners, globalRunners...)\n\t})\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif len(runners) == 0 {\n\t\terr = fmt.Errorf(\"no runners available\")\n\t\treturn\n\t}\n\n\tvar runner *db.Runner\n\n\tfor _, r := range runners {\n\t\tn := t.taskPool.GetNumberOfRunningTasksOfRunner(r.ID)\n\t\tif n < r.MaxParallelTasks || r.MaxParallelTasks == 0 {\n\t\t\trunner = &r\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif runner == nil {\n\t\terr = ErrAllRunnersBusy\n\t\treturn\n\t}\n\n\terr = callRunnerWebhook(runner, tsk, \"start\")\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttsk.RunnerID = runner.ID\n\tif t.taskPool != nil && t.taskPool.state != nil {\n\t\tt.taskPool.state.UpdateRuntimeFields(tsk)\n\t}\n\n\tstartTime := tz.Now()\n\n\ttaskTimedOut := false\n\n\tfor {\n\t\tif util.Config.MaxTaskDurationSec > 0 && int(tz.Now().Sub(startTime).Seconds()) > util.Config.MaxTaskDurationSec {\n\t\t\ttaskTimedOut = true\n\t\t\tbreak\n\t\t}\n\n\t\ttime.Sleep(1_000_000_000)\n\t\ttsk = t.taskPool.GetTask(t.Task.ID)\n\n\t\tif tsk == nil {\n\t\t\terr = fmt.Errorf(\"task %d not found\", t.Task.ID)\n\t\t\treturn\n\t\t}\n\n\t\tif tsk.Task.Status == task_logger.TaskSuccessStatus ||\n\t\t\ttsk.Task.Status == task_logger.TaskStoppedStatus ||\n\t\t\ttsk.Task.Status == task_logger.TaskFailStatus {\n\t\t\tbreak\n\t\t}\n\t}\n\n\terr = callRunnerWebhook(runner, tsk, \"finish\")\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif tsk.Task.Status == task_logger.TaskFailStatus {\n\t\terr = fmt.Errorf(\"task failed\")\n\t} else if taskTimedOut {\n\t\terr = fmt.Errorf(\"task timed out\")\n\t}\n\n\treturn\n}\n\nfunc (t *RemoteJob) Kill() {\n\tt.killed = true\n\t// Do nothing because you can't kill remote process\n}\n\nfunc (t *RemoteJob) IsKilled() bool {\n\treturn t.killed\n}\n"
  },
  {
    "path": "services/tasks/TaskPool.go",
    "content": "package tasks\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/random\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/semaphoreui/semaphore/pro/pkg/stage_parsers\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"github.com/semaphoreui/semaphore/services/server\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype logRecord struct {\n\ttask         *TaskRunner\n\toutput       string\n\ttime         time.Time\n\tcurrentStage *db.TaskStage\n}\n\ntype EventType uint\n\nconst (\n\tEventTypeNew      EventType = 0 // EventTypeNew represents an event when a new task is created, typically sent during a periodic check or timer.\n\tEventTypeFinished EventType = 1 // EventTypeFinished represents an event when a task finishes, typically sent during a periodic check or timer.\n\tEventTypeFailed   EventType = 2 // EventTypeFailed represents an event when a task fails, typically sent during a periodic check or timer.\n\tEventTypeEmpty    EventType = 3 // EventTypeEmpty represents an event when the queue is empty, typically sent during a periodic check or timer.\n\tEventTypeRequeued EventType = 4 // EventTypeRequeued represents an event when a task is moved back to the waiting state for reprocessing.\n)\n\nconst (\n\tTaskOutputBatchSize        = 500\n\tTaskOutputInsertIntervalMs = 500\n)\n\ntype PoolEvent struct {\n\teventType EventType\n\ttask      *TaskRunner\n}\n\ntype TaskPool struct {\n\t// register channel used to put tasks to queue.\n\tregister chan *TaskRunner\n\n\t// logger channel used to putting log records to database.\n\tlogger chan logRecord\n\n\tstore                  db.Store\n\tansibleTaskRepo        db.AnsibleTaskRepository\n\tlogWriteService        pro_interfaces.LogWriteService\n\tinventoryService       server.InventoryService\n\tencryptionService      server.AccessKeyEncryptionService\n\tkeyInstallationService server.AccessKeyInstallationService\n\n\tqueueEvents chan PoolEvent\n\n\t// state provides pluggable storage for Queue, active projects, running tasks and aliases\n\tstate TaskStateStore\n}\n\nfunc CreateTaskPool(\n\tstore db.Store,\n\tstate TaskStateStore,\n\tansibleTaskRepo db.AnsibleTaskRepository,\n\tinventoryService server.InventoryService,\n\tencryptionService server.AccessKeyEncryptionService,\n\tkeyInstallationService server.AccessKeyInstallationService,\n\tlogWriteService pro_interfaces.LogWriteService,\n) TaskPool {\n\tp := TaskPool{\n\t\tregister:               make(chan *TaskRunner),      // add TaskRunner to queue\n\t\tlogger:                 make(chan logRecord, 10000), // store log records to database\n\t\tstore:                  store,\n\t\tstate:                  state,\n\t\tqueueEvents:            make(chan PoolEvent),\n\t\tinventoryService:       inventoryService,\n\t\tansibleTaskRepo:        ansibleTaskRepo,\n\t\tencryptionService:      encryptionService,\n\t\tlogWriteService:        logWriteService,\n\t\tkeyInstallationService: keyInstallationService,\n\t}\n\t// attempt to start HA state store (no-op for memory)\n\t_ = p.state.Start(p.hydrateTaskRunner)\n\treturn p\n}\n\n// CreateTaskPoolWithState allows passing a custom TaskStateStore (e.g., Redis-backed)\nfunc CreateTaskPoolWithState(\n\tstateStore TaskStateStore,\n\tstore db.Store,\n\tansibleTaskRepo db.AnsibleTaskRepository,\n\tinventoryService server.InventoryService,\n\tencryptionService server.AccessKeyEncryptionService,\n\tkeyInstallationService server.AccessKeyInstallationService,\n\tlogWriteService pro_interfaces.LogWriteService,\n) TaskPool {\n\tp := TaskPool{\n\t\tregister:               make(chan *TaskRunner),      // add TaskRunner to queue\n\t\tlogger:                 make(chan logRecord, 10000), // store log records to database\n\t\tstore:                  store,\n\t\tqueueEvents:            make(chan PoolEvent),\n\t\tstate:                  stateStore,\n\t\tinventoryService:       inventoryService,\n\t\tansibleTaskRepo:        ansibleTaskRepo,\n\t\tencryptionService:      encryptionService,\n\t\tlogWriteService:        logWriteService,\n\t\tkeyInstallationService: keyInstallationService,\n\t}\n\t_ = p.state.Start(p.hydrateTaskRunner)\n\treturn p\n}\nfunc (p *TaskPool) GetNumberOfRunningTasksOfRunner(runnerID int) (res int) {\n\tfor _, task := range p.state.RunningRange() {\n\t\tif task.RunnerID == runnerID {\n\t\t\tres++\n\t\t}\n\t}\n\treturn\n}\n\nfunc (p *TaskPool) GetRunningTasks() (res []*TaskRunner) {\n\treturn p.state.RunningRange()\n}\n\nfunc (p *TaskPool) GetTask(id int) (task *TaskRunner) {\n\tfor _, t := range p.state.QueueRange() {\n\t\tif t.Task.ID == id {\n\t\t\ttask = t\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif task == nil {\n\t\tfor _, t := range p.state.RunningRange() {\n\t\t\tif t.Task.ID == id {\n\t\t\t\ttask = t\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (p *TaskPool) GetTaskByAlias(alias string) (task *TaskRunner) {\n\treturn p.state.GetByAlias(alias)\n}\n\n// nolint: gocyclo\nfunc (p *TaskPool) Run() {\n\tticker := time.NewTicker(5 * time.Second)\n\n\tdefer ticker.Stop()\n\n\tgo p.handleQueue()\n\tgo p.handleLogs()\n\n\tfor {\n\t\tselect {\n\t\tcase task := <-p.register: // new task created by API or schedule\n\n\t\t\tdb.StoreSession(p.store, \"new task\", func() {\n\t\t\t\t//p.Queue = append(p.Queue, task)\n\t\t\t\tmsg := \"Task \" + task.Template.Name + \" added to queue\"\n\t\t\t\ttask.Log(msg)\n\t\t\t\tlog.WithFields(log.Fields{\n\t\t\t\t\t\"task_id\": task.Task.ID,\n\t\t\t\t}).Info(msg)\n\t\t\t\ttask.saveStatus()\n\t\t\t})\n\t\t\tp.queueEvents <- PoolEvent{EventTypeNew, task}\n\n\t\tcase <-ticker.C: // timer 5 seconds\n\t\t\tp.queueEvents <- PoolEvent{EventTypeEmpty, nil}\n\n\t\t}\n\t}\n}\n\nfunc getTaskName(t *TaskRunner) string {\n\treturn t.Template.Name + \" \" + strconv.Itoa(t.Task.ID)\n}\n\nfunc (p *TaskPool) handleQueue() {\n\tfor t := range p.queueEvents {\n\t\t// When a task is re-queued (e.g., no remote runner available), we should\n\t\t// clean up its \"running\" bookkeeping but avoid immediately retrying it in\n\t\t// the same queue pass to prevent hot retry loops.\n\t\tskipTaskID := 0\n\n\t\tswitch t.eventType {\n\t\tcase EventTypeRequeued:\n\t\t\t// Task was started but moved back to waiting. It must not remain in\n\t\t\t// running/active sets and must release its claim so it can be picked\n\t\t\t// up again later.\n\t\t\tp.onTaskStop(t.task)\n\t\t\t// Avoid immediate retry in this same event handling iteration; it\n\t\t\t// will be retried on the next periodic tick or when another event\n\t\t\t// triggers queue processing.\n\t\t\tskipTaskID = t.task.Task.ID\n\t\tcase EventTypeNew:\n\t\t\tp.state.Enqueue(t.task)\n\t\tcase EventTypeFinished:\n\t\t\tp.onTaskStop(t.task)\n\t\t}\n\n\t\tif p.state.QueueLen() == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar i = 0\n\t\tfor i < p.state.QueueLen() {\n\t\t\tcurr := p.state.QueueGet(i)\n\t\t\tif curr == nil { // item may no longer be local, move ahead\n\t\t\t\ti = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// When handling a requeue event, don't immediately start the same task again.\n\t\t\tif skipTaskID != 0 && curr.Task.ID == skipTaskID {\n\t\t\t\ti = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif curr.Task.Status == task_logger.TaskFailStatus {\n\t\t\t\t//delete failed TaskRunner from queue\n\t\t\t\t_ = p.state.DequeueAt(i)\n\t\t\t\tlog.Info(\"Task \" + getTaskName(curr) + \" removed from queue\")\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif p.blocks(curr) {\n\t\t\t\ti = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// ensure only one instance claims the task before dequeue\n\t\t\tif !p.state.TryClaim(curr.Task.ID) {\n\t\t\t\ti = i + 1\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t_ = p.state.DequeueAt(i)\n\t\t\trunTask(curr, p)\n\t\t}\n\t}\n}\n\nfunc (p *TaskPool) handleLogs() {\n\tlogTicker := time.NewTicker(TaskOutputInsertIntervalMs * time.Millisecond)\n\n\tdefer logTicker.Stop()\n\n\tlogs := make([]logRecord, 0)\n\n\tfor {\n\n\t\tselect {\n\t\tcase record := <-p.logger:\n\t\t\tlogs = append(logs, record)\n\n\t\t\tif len(logs) >= TaskOutputBatchSize {\n\t\t\t\tp.flushLogs(&logs)\n\t\t\t}\n\t\tcase <-logTicker.C:\n\t\t\tp.flushLogs(&logs)\n\t\t}\n\t}\n}\n\nfunc (p *TaskPool) flushLogs(logs *[]logRecord) {\n\tif len(*logs) > 0 {\n\t\tp.writeLogs(*logs)\n\t\t*logs = (*logs)[:0]\n\t}\n}\n\nfunc (p *TaskPool) writeLogs(logs []logRecord) {\n\n\ttaskOutput := make([]db.TaskOutput, 0)\n\n\tfor _, record := range logs {\n\t\tnewOutput := db.TaskOutput{\n\t\t\tTaskID: record.task.Task.ID,\n\t\t\tOutput: record.output,\n\t\t\tTime:   record.time,\n\t\t}\n\n\t\tcurrentOutput := record.task.currentOutput\n\t\trecord.task.currentOutput = &newOutput\n\n\t\tdb.StoreSession(p.store, \"logger\", func() {\n\n\t\t\tnewStage, newState, err := stage_parsers.MoveToNextStage(\n\t\t\t\tp.store,\n\t\t\t\tp.ansibleTaskRepo,\n\t\t\t\tp.logWriteService,\n\t\t\t\trecord.task.Template.App,\n\t\t\t\trecord.task.Task.ProjectID,\n\t\t\t\trecord.task.currentState,\n\t\t\t\trecord.task.currentStage,\n\t\t\t\tcurrentOutput,\n\t\t\t\tnewOutput)\n\n\t\t\tif err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\trecord.task.currentState = newState\n\n\t\t\tif newStage != nil {\n\t\t\t\trecord.task.currentStage = newStage\n\t\t\t}\n\n\t\t\tif record.task.currentStage != nil {\n\t\t\t\tnewOutput.StageID = &record.task.currentStage.ID\n\t\t\t}\n\t\t})\n\t\ttaskOutput = append(taskOutput, newOutput)\n\t}\n\n\tdb.StoreSession(p.store, \"logger\", func() {\n\t\terr := p.store.InsertTaskOutputBatch(taskOutput)\n\t\tif err != nil {\n\t\t\tlog.Error(err)\n\t\t\treturn\n\t\t}\n\t})\n}\n\nfunc runTask(task *TaskRunner, p *TaskPool) {\n\tlog.Info(\"Set resource locker with TaskRunner \" + getTaskName(task))\n\tp.onTaskRun(task)\n\n\tlog.Info(\"Task \" + getTaskName(task) + \" started\")\n\tgo func() {\n\t\ttime.Sleep(1 * time.Second)\n\t\ttask.run()\n\t}()\n}\n\nfunc (p *TaskPool) onTaskRun(t *TaskRunner) {\n\tp.state.AddActive(t.Task.ProjectID, t)\n\tp.state.SetRunning(t)\n\tif t.Alias != \"\" {\n\t\tp.state.SetAlias(t.Alias, t)\n\t}\n}\n\nfunc (p *TaskPool) onTaskStop(t *TaskRunner) {\n\tp.state.RemoveActive(t.Task.ProjectID, t.Task.ID)\n\tp.state.DeleteRunning(t.Task.ID)\n\tp.state.DeleteClaim(t.Task.ID)\n\tif t.Alias != \"\" {\n\t\tp.state.DeleteAlias(t.Alias)\n\t}\n}\n\n// hydrateTaskRunner builds a TaskRunner for an existing task from DB without starting it\nfunc (p *TaskPool) hydrateTaskRunner(taskID int, projectID int) (*TaskRunner, error) {\n\ttask, err := p.store.GetTask(projectID, taskID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ttr := NewTaskRunner(task, p, \"\", p.keyInstallationService)\n\tif err := tr.populateDetails(); err != nil {\n\t\treturn nil, err\n\t}\n\t// load runtime fields from HA store (e.g., Redis)\n\tif p.state != nil {\n\t\tp.state.LoadRuntimeFields(tr)\n\t}\n\t// set appropriate job handler for consistency (not run)\n\tvar job Job\n\tif util.Config.UseRemoteRunner || tr.Template.RunnerTag != nil || tr.Inventory.RunnerTag != nil {\n\t\ttag := tr.Template.RunnerTag\n\t\tif tag == nil {\n\t\t\ttag = tr.Inventory.RunnerTag\n\t\t}\n\t\tjob = &RemoteJob{RunnerTag: tag, Task: tr.Task, taskPool: p}\n\t} else {\n\t\tapp := db_lib.CreateApp(tr.Template, tr.Repository, tr.Inventory, tr)\n\t\tjob = &LocalJob{\n\t\t\tTask:         tr.Task,\n\t\t\tTemplate:     tr.Template,\n\t\t\tInventory:    tr.Inventory,\n\t\t\tRepository:   tr.Repository,\n\t\t\tEnvironment:  tr.Environment,\n\t\t\tSecret:       \"{}\",\n\t\t\tLogger:       app.SetLogger(tr),\n\t\t\tApp:          app,\n\t\t\tKeyInstaller: p.keyInstallationService,\n\t\t}\n\t}\n\ttr.job = job\n\treturn tr, nil\n}\n\nfunc (p *TaskPool) blocks(t *TaskRunner) bool {\n\n\tif util.Config.MaxParallelTasks > 0 && p.state.RunningCount() >= util.Config.MaxParallelTasks {\n\t\treturn true\n\t}\n\n\tif p.state.ActiveCount(t.Task.ProjectID) == 0 {\n\t\treturn false\n\t}\n\n\tfor _, r := range p.state.GetActive(t.Task.ProjectID) {\n\t\tif r.Task.Status.IsFinished() {\n\t\t\tcontinue\n\t\t}\n\t\tif r.Template.ID == t.Task.TemplateID && !r.Template.AllowParallelTasks {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tproj, err := p.store.GetProject(t.Task.ProjectID)\n\n\tif err != nil {\n\t\tlog.Error(err)\n\t\treturn false\n\t}\n\n\tres := proj.MaxParallelTasks > 0 && p.state.ActiveCount(t.Task.ProjectID) >= proj.MaxParallelTasks\n\n\tif res {\n\t\treturn true\n\t}\n\n\treturn res\n}\n\nfunc (p *TaskPool) ConfirmTask(targetTask db.Task) error {\n\ttsk := p.GetTask(targetTask.ID)\n\n\tif tsk == nil { // task not active, but exists in database\n\t\treturn fmt.Errorf(\"task is not active\")\n\t}\n\n\ttsk.SetStatus(task_logger.TaskConfirmed)\n\n\treturn nil\n}\n\nfunc (p *TaskPool) RejectTask(targetTask db.Task) error {\n\ttsk := p.GetTask(targetTask.ID)\n\n\tif tsk == nil { // task not active, but exists in database\n\t\treturn fmt.Errorf(\"task is not active\")\n\t}\n\n\ttsk.SetStatus(task_logger.TaskRejected)\n\n\treturn nil\n}\n\nfunc (p *TaskPool) StopTask(targetTask db.Task, forceStop bool) error {\n\ttsk := p.GetTask(targetTask.ID)\n\tif tsk == nil { // task not active, but exists in database\n\n\t\ttsk = NewTaskRunner(targetTask, p, \"\", p.keyInstallationService)\n\n\t\terr := tsk.populateDetails()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttsk.SetStatus(task_logger.TaskStoppedStatus)\n\t\ttsk.createTaskEvent()\n\t} else {\n\t\tstatus := tsk.Task.Status\n\n\t\tif forceStop {\n\t\t\ttsk.SetStatus(task_logger.TaskStoppedStatus)\n\t\t} else {\n\t\t\ttsk.SetStatus(task_logger.TaskStoppingStatus)\n\t\t}\n\n\t\tif status == task_logger.TaskRunningStatus {\n\t\t\ttsk.kill()\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// StopTasksByTemplate stops all active (queued or running) tasks that belong to\n// the specified project and template. If forceStop is true, tasks are marked as\n// stopped immediately and running tasks are killed; otherwise tasks are marked\n// as stopping and will gracefully transition to stopped.\nfunc (p *TaskPool) StopTasksByTemplate(projectID int, templateID int, forceStop bool) {\n\t// Handle queued tasks\n\tfor _, t := range p.state.QueueRange() {\n\t\tif t == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif t.Task.ProjectID != projectID || t.Task.TemplateID != templateID {\n\t\t\tcontinue\n\t\t}\n\t\tif t.Task.Status.IsFinished() {\n\t\t\tcontinue\n\t\t}\n\t\tif forceStop {\n\t\t\tt.SetStatus(task_logger.TaskStoppedStatus)\n\t\t} else {\n\t\t\tt.SetStatus(task_logger.TaskStoppingStatus)\n\t\t}\n\t\t// Queued tasks will be dequeued and immediately finalize to Stopped in run()\n\t}\n\n\t// Handle running tasks\n\tfor _, t := range p.state.RunningRange() {\n\t\tif t == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif t.Task.ProjectID != projectID || t.Task.TemplateID != templateID {\n\t\t\tcontinue\n\t\t}\n\t\tif t.Task.Status.IsFinished() {\n\t\t\tcontinue\n\t\t}\n\t\tprevStatus := t.Task.Status\n\t\tif forceStop {\n\t\t\tt.SetStatus(task_logger.TaskStoppedStatus)\n\t\t} else {\n\t\t\tt.SetStatus(task_logger.TaskStoppingStatus)\n\t\t}\n\t\tif prevStatus == task_logger.TaskRunningStatus {\n\t\t\tt.kill()\n\t\t}\n\t}\n\n\t// Update tasks in DB that are neither queued nor running but still active\n\t// (e.g., created but not present in this instance's memory state).\n\tif tasks, err := p.store.GetTemplateTasks(projectID, templateID, db.RetrieveQueryParams{\n\t\tTaskFilter: &db.TaskFilter{\n\t\t\tStatus: task_logger.UnfinishedTaskStatuses(),\n\t\t},\n\t}); err == nil {\n\t\tfor _, twt := range tasks {\n\n\t\t\t// if task is managed locally (queued/running), it was handled above\n\t\t\tif p.GetTask(twt.Task.ID) != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// mark non-local task as stopped and write event for history\n\t\t\ttr := NewTaskRunner(twt.Task, p, \"\", p.keyInstallationService)\n\t\t\tif err := tr.populateDetails(); err != nil {\n\t\t\t\tlog.Error(err)\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ttr.SetStatus(task_logger.TaskStoppedStatus)\n\t\t\ttr.createTaskEvent()\n\t\t}\n\t} else {\n\t\tlog.Error(err)\n\t}\n}\n\n// GetQueuedTasks returns a snapshot of tasks currently queued\nfunc (p *TaskPool) GetQueuedTasks() []*TaskRunner {\n\treturn p.state.QueueRange()\n}\n\nfunc getNextBuildVersion(startVersion string, currentVersion string) string {\n\tre := regexp.MustCompile(`^(.*[^\\d])?(\\d+)([^\\d].*)?$`)\n\tm := re.FindStringSubmatch(startVersion)\n\n\tif m == nil {\n\t\treturn startVersion\n\t}\n\n\tvar prefix, suffix, body string\n\n\tswitch len(m) - 1 {\n\tcase 3:\n\t\tprefix = m[1]\n\t\tbody = m[2]\n\t\tsuffix = m[3]\n\tcase 2:\n\t\tif _, err := strconv.Atoi(m[1]); err == nil {\n\t\t\tbody = m[1]\n\t\t\tsuffix = m[2]\n\t\t} else {\n\t\t\tprefix = m[1]\n\t\t\tbody = m[2]\n\t\t}\n\tcase 1:\n\t\tbody = m[1]\n\tdefault:\n\t\treturn startVersion\n\t}\n\n\tif !strings.HasPrefix(currentVersion, prefix) ||\n\t\t!strings.HasSuffix(currentVersion, suffix) {\n\t\treturn startVersion\n\t}\n\n\tcurr, err := strconv.Atoi(currentVersion[len(prefix) : len(currentVersion)-len(suffix)])\n\tif err != nil {\n\t\treturn startVersion\n\t}\n\n\tstart, err := strconv.Atoi(body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tvar newVer int\n\tif start > curr {\n\t\tnewVer = start\n\t} else {\n\t\tnewVer = curr + 1\n\t}\n\n\treturn prefix + strconv.Itoa(newVer) + suffix\n}\n\n// AddTask creates and queues a new task for execution in the task pool.\n//\n// Parameters:\n//   - taskObj: The task object with initial configuration\n//   - userID: Optional ID of the user initiating the task\n//   - username: Username of the user initiating the task\n//   - projectID: ID of the project this task belongs to\n//   - needAlias: Whether to generate a unique alias for the task\n//\n// The method:\n//   - Sets initial task properties (created time, waiting status, etc.)\n//   - Validates the task against its template\n//   - For build templates, calculates the next version number\n//   - Creates the task record in the database\n//   - Sets up appropriate job handler (local or remote)\n//   - Queues the task for execution\n//\n// Returns:\n//   - The newly created task with all properties set\n//   - An error if task creation or validation fails\nfunc (p *TaskPool) AddTask(\n\ttaskObj db.Task,\n\tuserID *int,\n\tusername string,\n\tprojectID int,\n\tneedAlias bool,\n) (newTask db.Task, err error) {\n\ttaskObj.Created = tz.Now()\n\ttaskObj.Status = task_logger.TaskWaitingStatus\n\ttaskObj.UserID = userID\n\ttaskObj.ProjectID = projectID\n\textraSecretVars := taskObj.Secret\n\ttaskObj.Secret = \"{}\"\n\n\ttpl, err := p.store.GetTemplate(projectID, taskObj.TemplateID)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = taskObj.ValidateNewTask(tpl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif tpl.Type == db.TemplateBuild { // get next version for TaskRunner if it is a Build\n\t\tvar builds []db.TaskWithTpl\n\t\tbuilds, err = p.store.GetTemplateTasks(tpl.ProjectID, tpl.ID, db.RetrieveQueryParams{Count: 1})\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tif len(builds) == 0 || builds[0].Version == nil {\n\t\t\ttaskObj.Version = tpl.StartVersion\n\t\t} else {\n\t\t\tv := getNextBuildVersion(*tpl.StartVersion, *builds[0].Version)\n\t\t\ttaskObj.Version = &v\n\t\t}\n\t}\n\n\tnewTask, err = p.store.CreateTask(taskObj, util.Config.MaxTasksPerTemplate)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttaskRunner := NewTaskRunner(newTask, p, username, p.keyInstallationService)\n\n\tif needAlias {\n\t\t// A unique, randomly-generated identifier that persists throughout the task's lifecycle.\n\t\ttaskRunner.Alias = random.String(32)\n\t}\n\n\terr = taskRunner.populateDetails()\n\tif err != nil {\n\t\ttaskRunner.Log(\"Error: \" + err.Error())\n\t\ttaskRunner.SetStatus(task_logger.TaskFailStatus)\n\t\treturn\n\t}\n\n\tvar job Job\n\n\tif util.Config.UseRemoteRunner ||\n\t\ttaskRunner.Template.RunnerTag != nil ||\n\t\ttaskRunner.Inventory.RunnerTag != nil {\n\n\t\ttag := taskRunner.Template.RunnerTag\n\t\tif tag == nil {\n\t\t\ttag = taskRunner.Inventory.RunnerTag\n\t\t}\n\n\t\tjob = &RemoteJob{\n\t\t\tRunnerTag: tag,\n\t\t\tTask:      taskRunner.Task,\n\t\t\ttaskPool:  p,\n\t\t}\n\t} else {\n\t\tapp := db_lib.CreateApp(\n\t\t\ttaskRunner.Template,\n\t\t\ttaskRunner.Repository,\n\t\t\ttaskRunner.Inventory,\n\t\t\ttaskRunner)\n\n\t\tjob = &LocalJob{\n\t\t\tTask:         taskRunner.Task,\n\t\t\tTemplate:     taskRunner.Template,\n\t\t\tInventory:    taskRunner.Inventory,\n\t\t\tRepository:   taskRunner.Repository,\n\t\t\tEnvironment:  taskRunner.Environment,\n\t\t\tSecret:       extraSecretVars,\n\t\t\tLogger:       app.SetLogger(taskRunner),\n\t\t\tApp:          app,\n\t\t\tKeyInstaller: p.keyInstallationService,\n\t\t}\n\t}\n\n\ttaskRunner.job = job\n\n\tp.register <- taskRunner\n\n\ttaskRunner.createTaskEvent()\n\n\treturn\n}\n"
  },
  {
    "path": "services/tasks/TaskPool_test.go",
    "content": "package tasks\n\nimport (\n\t\"sync\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/stretchr/testify/assert\"\n)\n\ntype spyTaskStateStore struct {\n\t*MemoryTaskStateStore\n\ttryClaimCalls int\n}\n\nfunc newSpyTaskStateStore() *spyTaskStateStore {\n\treturn &spyTaskStateStore{\n\t\tMemoryTaskStateStore: NewMemoryTaskStateStore(),\n\t}\n}\n\n// TryClaim returns false to ensure tests don't actually start tasks; we only want to\n// observe whether the queue loop attempted to claim a task.\nfunc (s *spyTaskStateStore) TryClaim(_ int) bool {\n\ts.tryClaimCalls++\n\treturn false\n}\n\nfunc TestTaskPool_RequeuedEventCleansRunningStateAndSkipsImmediateRetry(t *testing.T) {\n\t// Ensure util.Config is non-nil for p.blocks() checks.\n\tprevCfg := util.Config\n\tt.Cleanup(func() { util.Config = prevCfg })\n\tutil.Config = &util.ConfigType{MaxParallelTasks: 0}\n\n\tstore := bolt.CreateTestStore()\n\tproj, err := store.CreateProject(db.Project{})\n\tassert.NoError(t, err)\n\n\tstate := newSpyTaskStateStore()\n\n\tpool := TaskPool{\n\t\tqueueEvents: make(chan PoolEvent),\n\t\tstate:       state,\n\t\tstore:       store,\n\t}\n\n\ttr := &TaskRunner{\n\t\tTask: db.Task{\n\t\t\tID:         42,\n\t\t\tProjectID:  proj.ID,\n\t\t\tTemplateID: 7,\n\t\t\tStatus:     task_logger.TaskWaitingStatus,\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tID:   7,\n\t\t\tName: \"Test Template\",\n\t\t},\n\t\tAlias: \"alias-42\",\n\t}\n\n\t// Simulate a task that was marked as running and then re-queued (the state that\n\t// exists right before EventTypeRequeued is handled).\n\tstate.SetRunning(tr)\n\tstate.AddActive(tr.Task.ProjectID, tr)\n\tstate.SetAlias(tr.Alias, tr)\n\tstate.Enqueue(tr)\n\n\tvar wg sync.WaitGroup\n\twg.Add(1)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\tpool.handleQueue()\n\t}()\n\n\tpool.queueEvents <- PoolEvent{EventTypeRequeued, tr}\n\tclose(pool.queueEvents)\n\twg.Wait()\n\n\tassert.Equal(t, 0, state.RunningCount(), \"requeued task must be removed from running set\")\n\tassert.Equal(t, 0, state.ActiveCount(tr.Task.ProjectID), \"requeued task must be removed from active-by-project set\")\n\tassert.Nil(t, state.GetByAlias(tr.Alias), \"requeued task alias mapping must be cleared\")\n\tassert.Equal(t, 1, state.QueueLen(), \"requeued task must remain queued\")\n\tassert.Equal(t, 0, state.tryClaimCalls, \"requeued task should not be immediately retried in the same queue pass\")\n}\n\n\n"
  },
  {
    "path": "services/tasks/TaskRunner.go",
    "content": "package tasks\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"github.com/semaphoreui/semaphore/services/tasks/hooks\"\n\n\t\"github.com/semaphoreui/semaphore/api/sockets\"\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\ntype Job interface {\n\tRun(username string, incomingVersion *string, alias string) error\n\tKill()\n\tIsKilled() bool\n}\n\ntype TaskRunner struct {\n\tTask        db.Task\n\tTemplate    db.Template\n\tInventory   db.Inventory\n\tRepository  db.Repository\n\tEnvironment db.Environment\n\n\tcurrentStage  *db.TaskStage\n\tcurrentOutput *db.TaskOutput\n\tcurrentState  any\n\n\tusers        []int\n\talert        bool\n\talertChat    *string\n\tpool         *TaskPool\n\tkeyInstaller db_lib.AccessKeyInstaller\n\n\t// job executes Ansible and returns stdout to Semaphore logs\n\tjob Job\n\n\tRunnerID        int\n\tUsername        string\n\tIncomingVersion *string\n\n\tstatusListeners []task_logger.StatusListener\n\tlogListeners    []task_logger.LogListener\n\n\t// Alias uses if task require an alias for run.\n\t// For example, terraform task require an alias for run.\n\tAlias string\n\n\tlogWG sync.WaitGroup\n}\n\nfunc NewTaskRunner(\n\tnewTask db.Task,\n\tp *TaskPool,\n\tusername string,\n\tkeyInstaller db_lib.AccessKeyInstaller,\n) *TaskRunner {\n\treturn &TaskRunner{\n\t\tTask:         newTask,\n\t\tpool:         p,\n\t\tUsername:     username,\n\t\tkeyInstaller: keyInstaller,\n\t}\n}\n\nfunc (t *TaskRunner) AddStatusListener(l task_logger.StatusListener) {\n\tt.statusListeners = append(t.statusListeners, l)\n}\n\nfunc (t *TaskRunner) AddLogListener(l task_logger.LogListener) {\n\tt.logListeners = append(t.logListeners, l)\n}\n\nfunc (t *TaskRunner) saveStatus() {\n\tfor _, user := range t.users {\n\t\tb, err := json.Marshal(&map[string]any{\n\t\t\t\"type\":        \"update\",\n\t\t\t\"start\":       t.Task.Start,\n\t\t\t\"end\":         t.Task.End,\n\t\t\t\"status\":      t.Task.Status,\n\t\t\t\"task_id\":     t.Task.ID,\n\t\t\t\"template_id\": t.Task.TemplateID,\n\t\t\t\"project_id\":  t.Task.ProjectID,\n\t\t\t\"version\":     t.Task.Version,\n\t\t})\n\n\t\tutil.LogPanic(err)\n\n\t\tsockets.Message(user, b)\n\t}\n\n\tif err := t.pool.store.UpdateTask(t.Task); err != nil {\n\t\tt.panicOnError(err, \"Failed to update TaskRunner status\")\n\t}\n\t// persist runtime fields in HA store\n\tif t.pool != nil && t.pool.state != nil {\n\t\tt.pool.state.UpdateRuntimeFields(t)\n\t}\n}\n\nfunc (t *TaskRunner) kill() {\n\tt.job.Kill()\n}\n\nfunc (t *TaskRunner) createTaskEvent() {\n\n\tdesc := \"Task ID \" + strconv.Itoa(t.Task.ID) + \" (\" + t.Template.Name + \")\"\n\n\tif t.Task.Status.IsFinished() {\n\t\tdesc += \" finished with status \" + strings.ToUpper(string(t.Task.Status))\n\n\t\thook := hooks.GetHook(t.Template.App)\n\t\tif hook != nil {\n\t\t\tgo hook.End(t.pool.store, t.Task.ProjectID, t.Task.ID)\n\t\t}\n\t} else {\n\t\tdesc += \" \" + strings.ToUpper(string(t.Task.Status))\n\t}\n\n\tobjType := db.EventTask\n\tevent := db.Event{\n\t\tUserID:      t.Task.UserID,\n\t\tProjectID:   &t.Task.ProjectID,\n\t\tObjectType:  &objType,\n\t\tObjectID:    &t.Task.ID,\n\t\tDescription: &desc,\n\t}\n\n\tvar runnerID *int\n\tif t.RunnerID > 0 {\n\t\trunnerID = &t.RunnerID\n\t}\n\n\tif err := t.pool.logWriteService.WriteTaskLog(pro_interfaces.TaskLogRecord{\n\t\tProjectID:    t.Task.ProjectID,\n\t\tTemplateID:   t.Template.ID,\n\t\tTemplateName: t.Template.Name,\n\t\tTaskID:       t.Task.ID,\n\t\tUserID:       t.Task.UserID,\n\t\tDescription:  &desc,\n\t\tUsername:     t.Username,\n\t\tRunnerID:     runnerID,\n\t\tStatus:       t.Task.Status,\n\t}); err != nil {\n\t\tlog.Error(err)\n\t}\n\n\t_, err := t.pool.store.CreateEvent(event)\n\n\tif err != nil {\n\t\tmsg := \"Fatal error inserting an event\"\n\t\tt.Log(msg)\n\t\tlog.WithError(err).Error(msg)\n\t}\n}\n\nfunc (t *TaskRunner) run() {\n\tif !t.pool.store.PermanentConnection() {\n\t\tt.pool.store.Connect(\"run task \" + strconv.Itoa(t.Task.ID))\n\t\tdefer t.pool.store.Close(\"run task \" + strconv.Itoa(t.Task.ID))\n\t}\n\n\t// requeued indicates task should go back to waiting state (e.g., all runners busy)\n\trequeued := false\n\n\tdefer func() {\n\t\tif requeued {\n\t\t\t// Task is being re-queued, don't mark as finished\n\t\t\tlog.Info(\"Task \" + strconv.Itoa(t.Task.ID) + \" re-queued (waiting for available runner)\")\n\t\t\tt.pool.queueEvents <- PoolEvent{EventTypeRequeued, t}\n\t\t\treturn\n\t\t}\n\n\t\tlog.WithFields(log.Fields{\n\t\t\t\"task_id\": t.Task.ID,\n\t\t}).Info(\"Stopped running task \" + t.Template.Name)\n\n\t\t//log.Info(\"Release resource locker with \" + strconv.Itoa(t.Task.ID))\n\n\t\tnow := tz.Now()\n\t\tt.Task.End = &now\n\t\tt.saveStatus()\n\t\tt.createTaskEvent()\n\t\tt.pool.queueEvents <- PoolEvent{EventTypeFinished, t}\n\t}()\n\n\t// Mark task as stopped if user stopped task during preparation (before task run).\n\tif t.Task.Status == task_logger.TaskStoppingStatus {\n\t\tt.SetStatus(task_logger.TaskStoppedStatus)\n\t\treturn\n\t}\n\n\tt.SetStatus(task_logger.TaskStartingStatus)\n\tt.createTaskEvent()\n\n\tt.Log(\"Started: \" + strconv.Itoa(t.Task.ID))\n\tt.Log(\"Run TaskRunner with template: \" + t.Template.Name + \"\\n\")\n\n\tvar err error\n\tvar username string\n\tvar incomingVersion *string\n\n\tif t.Task.UserID != nil {\n\t\tvar user db.User\n\t\tuser, err = t.pool.store.GetUser(*t.Task.UserID)\n\t\tif err == nil {\n\t\t\tusername = user.Username\n\t\t}\n\t}\n\n\tif t.Template.Type != db.TemplateTask {\n\t\tincomingVersion = t.Task.GetIncomingVersion(t.pool.store)\n\n\t}\n\n\terr = t.job.Run(username, incomingVersion, t.Alias)\n\n\tif err != nil {\n\t\tif errors.Is(err, ErrAllRunnersBusy) {\n\t\t\t// No runners available right now, put task back in waiting state\n\t\t\tt.SetStatus(task_logger.TaskWaitingStatus)\n\t\t\tt.pool.state.Enqueue(t)\n\t\t\trequeued = true\n\t\t\treturn\n\t\t}\n\n\t\tif t.job.IsKilled() {\n\t\t\tt.SetStatus(task_logger.TaskStoppedStatus)\n\t\t} else {\n\t\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\t\"task_id\":     t.Task.ID,\n\t\t\t\t\"context\":     \"task_runner\",\n\t\t\t\t\"task_status\": t.Task.Status,\n\t\t\t}).Warn(\"Failed to run task\")\n\t\t\tt.Log(\"Failed to run task: \" + err.Error())\n\t\t\tt.SetStatus(task_logger.TaskFailStatus)\n\t\t}\n\t\treturn\n\t}\n\n\tif t.Task.Status == task_logger.TaskRunningStatus {\n\t\tt.SetStatus(task_logger.TaskSuccessStatus)\n\t}\n\n\ttpls, err := t.pool.store.GetTemplates(t.Task.ProjectID, db.TemplateFilter{\n\t\tBuildTemplateID: &t.Task.TemplateID,\n\t\tAutorunOnly:     true,\n\t}, db.RetrieveQueryParams{})\n\n\tif err != nil {\n\t\tt.Log(\"Running app failed: \" + err.Error())\n\t\treturn\n\t}\n\n\tfor _, tpl := range tpls {\n\t\ttask := db.Task{\n\t\t\tTemplateID:  tpl.ID,\n\t\t\tProjectID:   tpl.ProjectID,\n\t\t\tBuildTaskID: &t.Task.ID,\n\t\t}\n\t\t_, err = t.pool.AddTask(\n\t\t\ttask,\n\t\t\tnil,\n\t\t\t\"\",\n\t\t\ttpl.ProjectID,\n\t\t\ttpl.App.NeedTaskAlias(),\n\t\t)\n\t\tif err != nil {\n\t\t\tt.Log(\"Running app failed: \" + err.Error())\n\t\t\tcontinue\n\t\t}\n\t}\n}\n\nfunc (t *TaskRunner) prepareError(err error, errMsg string) error {\n\tif errors.Is(err, db.ErrNotFound) {\n\t\tt.Log(errMsg)\n\t\treturn err\n\t}\n\n\tif err != nil {\n\t\tt.SetStatus(task_logger.TaskFailStatus)\n\t\tpanic(err)\n\t}\n\n\treturn nil\n}\n\nfunc (t *TaskRunner) populateTaskEnvironment() (err error) {\n\n\tif t.Task.Environment == \"\" {\n\t\treturn\n\n\t}\n\n\ttplEnvironment := make(map[string]any)\n\terr = json.Unmarshal([]byte(t.Environment.JSON), &tplEnvironment)\n\tif err != nil {\n\t\treturn\n\t}\n\n\ttaskEnvironment := make(map[string]any)\n\terr = json.Unmarshal([]byte(t.Task.Environment), &taskEnvironment)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tfor k, v := range taskEnvironment {\n\t\ttplEnvironment[k] = v\n\t}\n\n\tvar ev []byte\n\tev, err = json.Marshal(tplEnvironment)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tt.Environment.JSON = string(ev)\n\n\treturn\n}\n\n// nolint: gocyclo\nfunc (t *TaskRunner) populateDetails() error {\n\t// get template\n\tvar err error\n\n\tt.Template, err = t.pool.store.GetTemplate(t.Task.ProjectID, t.Task.TemplateID)\n\tif err != nil {\n\t\treturn t.prepareError(err, \"Template not found!\")\n\t}\n\n\t// get project alert setting\n\tproject, err := t.pool.store.GetProject(t.Template.ProjectID)\n\tif err != nil {\n\t\treturn t.prepareError(err, \"Project not found!\")\n\t}\n\n\tt.alert = project.Alert\n\tt.alertChat = project.AlertChat\n\n\t// get project users\n\tprojectUsers, err := t.pool.store.GetProjectUsers(t.Template.ProjectID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn t.prepareError(err, \"Users not found!\")\n\t}\n\n\tusers := make(map[int]bool)\n\n\tfor _, user := range projectUsers {\n\t\tusers[user.ID] = true\n\t}\n\n\tadmins, err := t.pool.store.GetAllAdmins()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, admin := range admins {\n\t\tusers[admin.ID] = true\n\t}\n\n\tt.users = []int{}\n\tfor userID := range users {\n\t\tt.users = append(t.users, userID)\n\t}\n\n\t// get inventory\n\tcanOverrideInventory, err := t.Template.CanOverrideInventory()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif canOverrideInventory && t.Task.InventoryID != nil {\n\t\tt.Inventory, err = t.pool.inventoryService.GetInventory(t.Template.ProjectID, *t.Task.InventoryID)\n\t\tif err != nil {\n\t\t\tif t.Template.InventoryID != nil {\n\t\t\t\tt.Inventory, err = t.pool.inventoryService.GetInventory(t.Template.ProjectID, *t.Template.InventoryID)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn t.prepareError(err, \"Template Inventory not found!\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif t.Template.InventoryID != nil {\n\t\t\tt.Inventory, err = t.pool.inventoryService.GetInventory(t.Template.ProjectID, *t.Template.InventoryID)\n\t\t\tif err != nil {\n\t\t\t\treturn t.prepareError(err, \"Template Inventory not found!\")\n\t\t\t}\n\t\t}\n\t}\n\n\t// get repository\n\tt.Repository, err = t.pool.store.GetRepository(t.Template.ProjectID, t.Template.RepositoryID)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = t.pool.encryptionService.DeserializeSecret(&t.Repository.SSHKey); err != nil {\n\t\treturn err\n\t}\n\n\t// get environment\n\tif t.Template.EnvironmentID != nil {\n\t\tt.Environment, err = t.pool.store.GetEnvironment(t.Template.ProjectID, *t.Template.EnvironmentID)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\terr = t.pool.encryptionService.FillEnvironmentSecrets(&t.Environment, true)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\terr = t.populateTaskEnvironment()\n\n\treturn err\n}\n\n// checkTmpDir checks to see if the temporary directory exists\n// and if it does not attempts to create it\nfunc checkTmpDir(path string) error {\n\tvar err error\n\tif _, err = os.Stat(path); err != nil {\n\t\tif os.IsNotExist(err) {\n\t\t\treturn os.MkdirAll(path, 0755)\n\t\t}\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "services/tasks/TaskRunner_logging.go",
    "content": "package tasks\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os/exec\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\n\t\"github.com/semaphoreui/semaphore/api/sockets\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\tlog \"github.com/sirupsen/logrus\"\n)\n\nfunc (t *TaskRunner) Log(msg string) {\n\tt.LogWithTime(tz.Now(), msg)\n}\n\nfunc (t *TaskRunner) Logf(format string, a ...any) {\n\tt.LogfWithTime(tz.Now(), format, a...)\n}\n\nfunc (t *TaskRunner) LogWithTime(now time.Time, msg string) {\n\tt.sendToWs(now, msg)\n\n\tt.pool.logger <- logRecord{\n\t\ttask:   t,\n\t\toutput: msg,\n\t\ttime:   now,\n\t}\n\n\tfor _, l := range t.logListeners {\n\t\tl(now, msg)\n\t}\n}\n\nfunc (t *TaskRunner) sendToWs(now time.Time, msg string) {\n\tfor _, user := range t.users {\n\t\tb, err := json.Marshal(&map[string]any{\n\t\t\t\"type\":       \"log\",\n\t\t\t\"output\":     msg,\n\t\t\t\"time\":       now,\n\t\t\t\"task_id\":    t.Task.ID,\n\t\t\t\"project_id\": t.Task.ProjectID,\n\t\t})\n\n\t\tutil.LogPanic(err)\n\t\tsockets.Message(user, b)\n\t}\n}\n\nfunc (t *TaskRunner) LogfWithTime(now time.Time, format string, a ...any) {\n\tt.LogWithTime(now, fmt.Sprintf(format, a...))\n}\n\nfunc (t *TaskRunner) LogCmd(cmd *exec.Cmd) {\n\tstderr, _ := cmd.StderrPipe()\n\tstdout, _ := cmd.StdoutPipe()\n\n\tgo t.logPipe(stderr)\n\tgo t.logPipe(stdout)\n}\n\nfunc (t *TaskRunner) WaitLog() {\n\tt.logWG.Wait()\n}\n\nfunc (t *TaskRunner) SetCommit(hash, message string) {\n\n\tt.Task.CommitHash = &hash\n\tt.Task.CommitMessage = message\n\n\tif err := t.pool.store.UpdateTask(t.Task); err != nil {\n\t\tt.panicOnError(err, \"Failed to update task commit\")\n\t}\n}\n\nfunc (t *TaskRunner) SetStatus(status task_logger.TaskStatus) {\n\tif status == t.Task.Status {\n\t\treturn\n\t}\n\n\tswitch t.Task.Status { // check old status\n\tcase task_logger.TaskConfirmed:\n\t\tif status == task_logger.TaskWaitingConfirmation {\n\t\t\treturn\n\t\t}\n\tcase task_logger.TaskRunningStatus:\n\t\tif status == task_logger.TaskWaitingStatus {\n\t\t\treturn\n\t\t}\n\tcase task_logger.TaskStoppingStatus:\n\t\tif status == task_logger.TaskWaitingStatus || status == task_logger.TaskRunningStatus {\n\t\t\t//panic(\"stopping TaskRunner cannot be \" + status)\n\t\t\treturn\n\t\t}\n\tcase task_logger.TaskSuccessStatus:\n\tcase task_logger.TaskFailStatus:\n\tcase task_logger.TaskStoppedStatus:\n\t\treturn\n\t}\n\n\tt.Task.Status = status\n\n\tif status == task_logger.TaskRunningStatus {\n\t\tnow := tz.Now()\n\t\tt.Task.Start = &now\n\t}\n\n\tt.saveStatus()\n\n\tif localJob, ok := t.job.(*LocalJob); ok {\n\t\tlocalJob.SetStatus(status)\n\t}\n\n\tif status == task_logger.TaskFailStatus {\n\t\tt.sendMailAlert()\n\t}\n\n\tif status.IsNotifiable() {\n\t\tt.sendTelegramAlert()\n\t\tt.sendSlackAlert()\n\t\tt.sendRocketChatAlert()\n\t\tt.sendMicrosoftTeamsAlert()\n\t\tt.sendDingTalkAlert()\n\t\tt.sendGotifyAlert()\n\t}\n\n\tfor _, l := range t.statusListeners {\n\t\tl(status)\n\t}\n}\n\nfunc (t *TaskRunner) panicOnError(err error, msg string) {\n\tif err == nil {\n\t\treturn\n\t}\n\n\tt.Log(msg)\n\tutil.LogPanicF(err, log.Fields{\"error\": msg})\n}\n\nfunc (t *TaskRunner) logPipe(reader io.Reader) {\n\tt.logWG.Add(1)\n\n\tlinesCh := make(chan string, 100000)\n\n\tgo func() {\n\t\tdefer t.logWG.Done()\n\n\t\tfor line := range linesCh {\n\t\t\tt.Log(line)\n\t\t}\n\t}()\n\n\tscanner := bufio.NewScanner(reader)\n\tconst maxCapacity = 10 * 1024 * 1024 // 10 MB\n\tbuf := make([]byte, maxCapacity)\n\tscanner.Buffer(buf, maxCapacity)\n\n\tfor scanner.Scan() {\n\t\tline := scanner.Text()\n\t\tlinesCh <- line\n\t}\n\n\tclose(linesCh)\n\n\terr := scanner.Err()\n\n\tif err != nil {\n\t\tmsg := \"Failed to read TaskRunner output\"\n\n\t\tswitch err.Error() {\n\t\tcase \"EOF\",\n\t\t\t\"os: process already finished\",\n\t\t\t\"read |0: file already closed\":\n\t\t\treturn // it is ok\n\t\tcase \"bufio.Scanner: token too long\":\n\t\t\tmsg = \"TaskRunner output exceeds the maximum allowed size of 10MB\"\n\t\t}\n\n\t\tt.kill() // kill the job because stdout cannot be read.\n\n\t\tlog.WithError(err).WithFields(log.Fields{\n\t\t\t\"task_id\": t.Task.ID,\n\t\t\t\"context\": \"task_logger\",\n\t\t}).Error(msg)\n\n\t\tt.Log(\"Fatal error: \" + msg)\n\t}\n}\n"
  },
  {
    "path": "services/tasks/TaskRunner_test.go",
    "content": "package tasks\n\nimport (\n\t\"math/rand\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/ssh\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/pro_interfaces\"\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/semaphoreui/semaphore/db_lib\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/db/bolt\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\ntype KeyInstallerMock struct {\n}\n\nfunc (s *KeyInstallerMock) Install(key db.AccessKey, usage db.AccessKeyRole, logger task_logger.Logger) (installation ssh.AccessKeyInstallation, err error) {\n\treturn ssh.AccessKeyInstallation{}, nil\n}\n\ntype InventoryServiceMock struct {\n}\n\nfunc (s *InventoryServiceMock) GetInventory(projectID int, inventoryID int) (inventory db.Inventory, err error) {\n\treturn db.Inventory{}, nil\n}\n\ntype EncryptionServiceMock struct {\n}\n\nfunc (s *EncryptionServiceMock) DeleteSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (s *EncryptionServiceMock) SerializeSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (s *EncryptionServiceMock) DeserializeSecret(key *db.AccessKey) error {\n\treturn nil\n}\n\nfunc (s *EncryptionServiceMock) FillEnvironmentSecrets(env *db.Environment, deserializeSecret bool) error {\n\treturn nil\n}\n\ntype mockLogWriteService struct {\n}\n\nfunc (l *mockLogWriteService) WriteEventLog(event pro_interfaces.EventLogRecord) error {\n\treturn nil\n}\n\nfunc (l *mockLogWriteService) WriteTaskLog(task pro_interfaces.TaskLogRecord) error {\n\treturn nil\n}\nfunc (l *mockLogWriteService) WriteResult(task any) error {\n\treturn nil\n}\n\nfunc TestTaskRunnerRun(t *testing.T) {\n\n\tstore := bolt.CreateTestStore()\n\tkeyInstaller := &KeyInstallerMock{}\n\n\tpool := CreateTaskPool(\n\t\tstore,\n\t\t&MemoryTaskStateStore{},\n\t\tnil,\n\t\t&InventoryServiceMock{},\n\t\tnil,\n\t\tkeyInstaller,\n\t\t&mockLogWriteService{},\n\t)\n\n\tgo pool.Run()\n\n\tvar task db.Task\n\n\tvar err error\n\n\tdb.StoreSession(store, \"\", func() {\n\t\ttask, err = store.CreateTask(db.Task{}, 0)\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttaskRunner := TaskRunner{\n\t\tTask:         task,\n\t\tpool:         &pool,\n\t\tkeyInstaller: keyInstaller,\n\t}\n\ttaskRunner.job = &LocalJob{\n\t\tTask:         taskRunner.Task,\n\t\tTemplate:     taskRunner.Template,\n\t\tInventory:    taskRunner.Inventory,\n\t\tRepository:   taskRunner.Repository,\n\t\tEnvironment:  taskRunner.Environment,\n\t\tLogger:       &taskRunner,\n\t\tKeyInstaller: keyInstaller,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   taskRunner.Template,\n\t\t\tRepository: taskRunner.Repository,\n\t\t\tLogger:     &taskRunner,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &taskRunner,\n\t\t\t\tTemplateID: taskRunner.Template.ID,\n\t\t\t\tRepository: taskRunner.Repository,\n\t\t\t},\n\t\t},\n\t}\n\ttaskRunner.run()\n}\n\nfunc TestGetRepoPath(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tinventoryID := 1\n\n\ttsk := TaskRunner{\n\t\tTask: db.Task{},\n\t\tInventory: db.Inventory{\n\t\t\tSSHKeyID: &inventoryID,\n\t\t\tSSHKey: db.AccessKey{\n\t\t\t\tID:   12345,\n\t\t\t\tType: db.AccessKeySSH,\n\t\t\t},\n\t\t\tType: db.InventoryStatic,\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tPlaybook: \"deploy/test.yml\",\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\tdir := tsk.job.(*LocalJob).App.(*db_lib.AnsibleApp).GetPlaybookDir()\n\tif dir != \"/tmp/project_0/repository_0_template_0/deploy\" {\n\t\tt.Fatal(\"Invalid playbook dir: \" + dir)\n\t}\n}\n\nfunc TestGetRepoPath_whenStartsWithSlash(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tinventoryID := 1\n\n\ttsk := TaskRunner{\n\t\tTask: db.Task{},\n\t\tInventory: db.Inventory{\n\t\t\tSSHKeyID: &inventoryID,\n\t\t\tSSHKey: db.AccessKey{\n\t\t\t\tID:   12345,\n\t\t\t\tType: db.AccessKeySSH,\n\t\t\t},\n\t\t\tType: db.InventoryStatic,\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tPlaybook: \"/deploy/test.yml\",\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\tdir := tsk.job.(*LocalJob).App.(*db_lib.AnsibleApp).GetPlaybookDir()\n\tif dir != \"/tmp/project_0/repository_0_template_0/deploy\" {\n\t\tt.Fatal(\"Invalid playbook dir: \" + dir)\n\t}\n}\n\nfunc TestPopulateDetails(t *testing.T) {\n\tstore := bolt.CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tkey, err := store.CreateAccessKey(db.AccessKey{\n\t\tProjectID: &proj.ID,\n\t\tType:      db.AccessKeyNone,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\trepo, err := store.CreateRepository(db.Repository{\n\t\tProjectID: proj.ID,\n\t\tSSHKeyID:  key.ID,\n\t\tName:      \"Test\",\n\t\tGitURL:    \"git@example.com:test/test\",\n\t\tGitBranch: \"master\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tinv, err := store.CreateInventory(db.Inventory{\n\t\tProjectID: proj.ID,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tenv, err := store.CreateEnvironment(db.Environment{\n\t\tProjectID: proj.ID,\n\t\tName:      \"test\",\n\t\tJSON:      `{\"author\": \"Denis\", \"comment\": \"Hello, World!\"}`,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttpl, err := store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tRepositoryID:  repo.ID,\n\t\tInventoryID:   &inv.ID,\n\t\tEnvironmentID: &env.ID,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tpool := TaskPool{\n\t\tstore:             store,\n\t\tinventoryService:  &InventoryServiceMock{},\n\t\tencryptionService: &EncryptionServiceMock{},\n\t}\n\n\ttsk := TaskRunner{\n\t\tpool: &pool,\n\t\tTask: db.Task{\n\t\t\tTemplateID:  tpl.ID,\n\t\t\tProjectID:   proj.ID,\n\t\t\tEnvironment: `{\"comment\": \"Just do it!\", \"time\": \"2021-11-02\"}`,\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\terr = tsk.populateDetails()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tassert.Equal(t, `{\"author\":\"Denis\",\"comment\":\"Just do it!\",\"time\":\"2021-11-02\"}`, tsk.Environment.JSON)\n\n}\n\nfunc TestPopulateDetailsInventory(t *testing.T) {\n\tstore := bolt.CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tkey, err := store.CreateAccessKey(db.AccessKey{\n\t\tProjectID: &proj.ID,\n\t\tType:      db.AccessKeyNone,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\trepo, err := store.CreateRepository(db.Repository{\n\t\tProjectID: proj.ID,\n\t\tSSHKeyID:  key.ID,\n\t\tName:      \"Test\",\n\t\tGitURL:    \"git@example.com:test/test\",\n\t\tGitBranch: \"master\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tinv, err := store.CreateInventory(db.Inventory{\n\t\tProjectID: proj.ID,\n\t\tID:        1,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tinv2, err := store.CreateInventory(db.Inventory{\n\t\tProjectID: proj.ID,\n\t\tID:        2,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tenv, err := store.CreateEnvironment(db.Environment{\n\t\tProjectID: proj.ID,\n\t\tName:      \"test\",\n\t\tJSON:      `{\"author\": \"Denis\", \"comment\": \"Hello, World!\"}`,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttpl, err := store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tRepositoryID:  repo.ID,\n\t\tInventoryID:   &inv.ID,\n\t\tEnvironmentID: &env.ID,\n\t\tTaskParams: map[string]any{\n\t\t\t\"allow_override_inventory\": true,\n\t\t},\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tpool := TaskPool{\n\t\tstore:             store,\n\t\tinventoryService:  &InventoryServiceMock{},\n\t\tencryptionService: &EncryptionServiceMock{},\n\t}\n\n\ttsk := TaskRunner{\n\t\tpool: &pool,\n\t\tTask: db.Task{\n\t\t\tTemplateID:  tpl.ID,\n\t\t\tProjectID:   proj.ID,\n\t\t\tEnvironment: `{\"comment\": \"Just do it!\", \"time\": \"2021-11-02\"}`,\n\t\t\tInventoryID: &inv2.ID,\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\terr = tsk.populateDetails()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//if tsk.Inventory.ID != 2 {\n\t//\tt.Fatal(err)\n\t//}\n}\n\nfunc TestPopulateDetailsInventory1(t *testing.T) {\n\tstore := bolt.CreateTestStore()\n\n\tproj, err := store.CreateProject(db.Project{})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tkey, err := store.CreateAccessKey(db.AccessKey{\n\t\tProjectID: &proj.ID,\n\t\tType:      db.AccessKeyNone,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\trepo, err := store.CreateRepository(db.Repository{\n\t\tProjectID: proj.ID,\n\t\tSSHKeyID:  key.ID,\n\t\tName:      \"Test\",\n\t\tGitURL:    \"git@example.com:test/test\",\n\t\tGitBranch: \"master\",\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tinv, err := store.CreateInventory(db.Inventory{\n\t\tProjectID: proj.ID,\n\t\tID:        1,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\tenv, err := store.CreateEnvironment(db.Environment{\n\t\tProjectID: proj.ID,\n\t\tName:      \"test\",\n\t\tJSON:      `{\"author\": \"Denis\", \"comment\": \"Hello, World!\"}`,\n\t})\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\ttpl, err := store.CreateTemplate(db.Template{\n\t\tName:          \"Test\",\n\t\tPlaybook:      \"test.yml\",\n\t\tProjectID:     proj.ID,\n\t\tRepositoryID:  repo.ID,\n\t\tInventoryID:   &inv.ID,\n\t\tEnvironmentID: &env.ID,\n\t})\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tpool := TaskPool{\n\t\tstore:             store,\n\t\tinventoryService:  &InventoryServiceMock{},\n\t\tencryptionService: &EncryptionServiceMock{},\n\t}\n\n\ttsk := TaskRunner{\n\t\tpool: &pool,\n\t\tTask: db.Task{\n\t\t\tTemplateID:  tpl.ID,\n\t\t\tProjectID:   proj.ID,\n\t\t\tEnvironment: `{\"comment\": \"Just do it!\", \"time\": \"2021-11-02\"}`,\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\terr = tsk.populateDetails()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//if tsk.Inventory.ID != 1 {\n\t//\tt.Fatal(err)\n\t//}\n}\n\nfunc TestTaskGetPlaybookArgs(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tinventoryID := 1\n\n\ttsk := TaskRunner{\n\t\tTask: db.Task{},\n\t\tInventory: db.Inventory{\n\t\t\tSSHKeyID: &inventoryID,\n\t\t\tSSHKey: db.AccessKey{\n\t\t\t\tID:   12345,\n\t\t\t\tType: db.AccessKeySSH,\n\t\t\t},\n\t\t\tType: db.InventoryStatic,\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tPlaybook: \"test.yml\",\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\targs, _, err := tsk.job.(*LocalJob).getPlaybookArgs(\"\", nil)\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tres := strings.Join(args, \" \")\n\tif res != \"-i /tmp/project_0/inventory_0 --extra-vars {\\\"semaphore_vars\\\":{\\\"task_details\\\":{\\\"commit_hash\\\":null,\\\"commit_message\\\":\\\"\\\",\\\"id\\\":0,\\\"inventory_id\\\":0,\\\"inventory_name\\\":\\\"\\\",\\\"repository_id\\\":0,\\\"repository_name\\\":\\\"\\\",\\\"url\\\":null,\\\"username\\\":\\\"\\\"}}} test.yml\" {\n\t\tt.Fatal(\"incorrect result\")\n\t}\n}\n\nfunc TestTaskGetPlaybookArgs2(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tinventoryID := 1\n\n\ttsk := TaskRunner{\n\t\tTask: db.Task{},\n\t\tInventory: db.Inventory{\n\t\t\tType:     db.InventoryStatic,\n\t\t\tSSHKeyID: &inventoryID,\n\t\t\tSSHKey: db.AccessKey{\n\t\t\t\tID:   12345,\n\t\t\t\tType: db.AccessKeyLoginPassword,\n\t\t\t\tLoginPassword: db.LoginPassword{\n\t\t\t\t\tPassword: \"123456\",\n\t\t\t\t\tLogin:    \"root\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tPlaybook: \"test.yml\",\n\t\t},\n\t}\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\targs, _, err := tsk.job.(*LocalJob).getPlaybookArgs(\"\", nil)\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tres := strings.Join(args, \" \")\n\tif res != \"-i /tmp/project_0/inventory_0 --extra-vars {\\\"semaphore_vars\\\":{\\\"task_details\\\":{\\\"commit_hash\\\":null,\\\"commit_message\\\":\\\"\\\",\\\"id\\\":0,\\\"inventory_id\\\":0,\\\"inventory_name\\\":\\\"\\\",\\\"repository_id\\\":0,\\\"repository_name\\\":\\\"\\\",\\\"url\\\":null,\\\"username\\\":\\\"\\\"}}} test.yml\" {\n\t\tt.Fatal(\"incorrect result\")\n\t}\n}\n\nfunc TestTaskGetPlaybookArgs3(t *testing.T) {\n\tutil.Config = &util.ConfigType{\n\t\tTmpPath: \"/tmp\",\n\t}\n\n\tinventoryID := 1\n\n\ttsk := TaskRunner{\n\t\tTask: db.Task{},\n\t\tInventory: db.Inventory{\n\t\t\tType:        db.InventoryStatic,\n\t\t\tBecomeKeyID: &inventoryID,\n\t\t\tBecomeKey: db.AccessKey{\n\t\t\t\tID:   12345,\n\t\t\t\tType: db.AccessKeyLoginPassword,\n\t\t\t\tLoginPassword: db.LoginPassword{\n\t\t\t\t\tPassword: \"123456\",\n\t\t\t\t\tLogin:    \"root\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tPlaybook: \"test.yml\",\n\t\t},\n\t}\n\n\ttsk.job = &LocalJob{\n\t\tTask:        tsk.Task,\n\t\tTemplate:    tsk.Template,\n\t\tInventory:   tsk.Inventory,\n\t\tRepository:  tsk.Repository,\n\t\tEnvironment: tsk.Environment,\n\t\tLogger:      &tsk,\n\t\tApp: &db_lib.AnsibleApp{\n\t\t\tTemplate:   tsk.Template,\n\t\t\tRepository: tsk.Repository,\n\t\t\tLogger:     &tsk,\n\t\t\tPlaybook: &db_lib.AnsiblePlaybook{\n\t\t\t\tLogger:     &tsk,\n\t\t\t\tTemplateID: tsk.Template.ID,\n\t\t\t\tRepository: tsk.Repository,\n\t\t\t},\n\t\t},\n\t}\n\n\targs, _, err := tsk.job.(*LocalJob).getPlaybookArgs(\"\", nil)\n\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tres := strings.Join(args, \" \")\n\tif res != \"-i /tmp/project_0/inventory_0 --extra-vars {\\\"semaphore_vars\\\":{\\\"task_details\\\":{\\\"commit_hash\\\":null,\\\"commit_message\\\":\\\"\\\",\\\"id\\\":0,\\\"inventory_id\\\":0,\\\"inventory_name\\\":\\\"\\\",\\\"repository_id\\\":0,\\\"repository_name\\\":\\\"\\\",\\\"url\\\":null,\\\"username\\\":\\\"\\\"}}} test.yml\" {\n\t\tt.Fatal(\"incorrect result\")\n\t}\n}\n\nfunc TestCheckTmpDir(t *testing.T) {\n\t//It should be able to create a random dir in /tmp\n\tdirName := path.Join(os.TempDir(), util.RandString(rand.Intn(10-4)+4))\n\terr := checkTmpDir(dirName)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//checking again for this directory should return no error, as it exists\n\terr = checkTmpDir(dirName)\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\terr = os.Chmod(dirName, os.FileMode(int(0550)))\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\t//nolint: vetshadow\n\tif stat, err := os.Stat(dirName); err != nil {\n\t\tt.Fatal(err)\n\t} else if stat.Mode() != os.FileMode(int(0550)) {\n\t\t// File System is not support 0550 mode, skip this test\n\t\treturn\n\t}\n\n\terr = checkTmpDir(dirName + \"/noway\")\n\tif err == nil {\n\t\tt.Fatal(\"You should not be able to write in this folder, causing an error\")\n\t}\n\terr = os.Remove(dirName)\n\tif err != nil {\n\t\tt.Log(err)\n\t}\n}\n\nfunc TestTaskRunner_populateTaskEnvironment(t *testing.T) {\n\ttsk := TaskRunner{\n\t\tTask: db.Task{\n\t\t\tEnvironment: \"{\\\"a\\\":11, \\\"b\\\": 22, \\\"c\\\": 33}\",\n\t\t},\n\t\tEnvironment: db.Environment{\n\t\t\tJSON: \"{\\\"a\\\":1, \\\"d\\\": 4}\",\n\t\t},\n\t}\n\n\terr := tsk.populateTaskEnvironment()\n\tif err != nil {\n\t\tt.Fatal(err)\n\t}\n\n\tassert.Equal(t, tsk.Environment.JSON, \"{\\\"a\\\":11,\\\"b\\\":22,\\\"c\\\":33,\\\"d\\\":4}\")\n}\n"
  },
  {
    "path": "services/tasks/alert.go",
    "content": "package tasks\n\nimport (\n\t\"bytes\"\n\t\"embed\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"text/template\"\n\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n\t\"github.com/semaphoreui/semaphore/util\"\n\t\"github.com/semaphoreui/semaphore/util/mailer\"\n)\n\n//go:embed templates/*.tmpl\nvar templates embed.FS\n\n// Alert represents an alert that will be templated and sent to the appropriate service\ntype Alert struct {\n\tName   string\n\tAuthor string\n\tColor  string\n\tTask   alertTask\n\tChat   alertChat\n}\n\ntype alertTask struct {\n\tID      string\n\tURL     string\n\tResult  string\n\tDesc    string\n\tVersion string\n}\n\ntype alertChat struct {\n\tID string\n}\n\nfunc (t *TaskRunner) sendMailAlert() {\n\tif !util.Config.EmailAlert || !t.alert {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"email\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/email.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse email alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate email alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for email alert is empty\")\n\t\treturn\n\t}\n\n\tfor _, uid := range t.users {\n\t\tuser, err := t.pool.store.GetUser(uid)\n\n\t\tif err != nil {\n\t\t\tutil.LogError(err)\n\t\t\tcontinue\n\t\t}\n\n\t\tif !user.Alert {\n\t\t\tcontinue\n\t\t}\n\n\t\tt.Logf(\"Attempting to send email alert to %s\", user.Email)\n\n\t\tif err := mailer.Send(\n\t\t\tutil.Config.EmailSecure,\n\t\t\tutil.Config.EmailTls,\n\t\t\tutil.Config.EmailHost,\n\t\t\tutil.Config.EmailPort,\n\t\t\tutil.Config.EmailUsername,\n\t\t\tutil.Config.EmailPassword,\n\t\t\tutil.Config.EmailSender,\n\t\t\tuser.Email,\n\t\t\tfmt.Sprintf(\"Task '%s' failed\", t.Template.Name),\n\t\t\tbody.String(),\n\t\t); err != nil {\n\t\t\tutil.LogError(err)\n\t\t\tcontinue\n\t\t}\n\n\t\tt.Logf(\"Sent successfully email alert to %s\", user.Email)\n\t}\n}\n\nfunc (t *TaskRunner) sendTelegramAlert() {\n\tif !util.Config.TelegramAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tchatID := util.Config.TelegramChat\n\tif t.alertChat != nil && *t.alertChat != \"\" {\n\t\tchatID = *t.alertChat\n\t}\n\n\tif chatID == \"\" {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"telegram\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t\tChat: alertChat{\n\t\t\tID: chatID,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/telegram.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse telegram alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate telegram alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for telegram alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send telegram alert\")\n\n\tresp, err := http.Post(\n\t\tfmt.Sprintf(\n\t\t\t\"https://api.telegram.org/bot%s/sendMessage\",\n\t\t\tutil.Config.TelegramToken,\n\t\t),\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send telegram alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 {\n\t\tt.Log(\"Can't send telegram alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully telegram alert\")\n\t}\n\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) sendSlackAlert() {\n\tif !util.Config.SlackAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"slack\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/slack.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse slack alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate slack alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for slack alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send slack alert\")\n\n\tresp, err := http.Post(\n\t\tutil.Config.SlackUrl,\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send slack alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 {\n\t\tt.Log(\"Can't send slack alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully slack alert\")\n\t}\n\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) sendRocketChatAlert() {\n\tif !util.Config.RocketChatAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"rocketchat\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/rocketchat.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse rocketchat alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate rocketchat alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for rocketchat alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send rocketchat alert\")\n\n\tresp, err := http.Post(\n\t\tutil.Config.RocketChatUrl,\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send rocketchat alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 {\n\t\tt.Log(\"Can't send rocketchat alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully rocketchat alert\")\n\t}\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) sendMicrosoftTeamsAlert() {\n\tif !util.Config.MicrosoftTeamsAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"microsoft-teams\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/microsoft-teams.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse microsoft teams alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate microsoft teams alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for microsoft teams alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send microsoft teams alert\")\n\n\tresp, err := http.Post(\n\t\tutil.Config.MicrosoftTeamsUrl,\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send microsoft teams alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 && resp.StatusCode != 202 {\n\t\tt.Log(\"Can't send microsoft teams alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully microsoft teams alert\")\n\t}\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) sendDingTalkAlert() {\n\tif !util.Config.DingTalkAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"dingtalk\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/dingtalk.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse dingtalk alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate dingtalk alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for dingtalk alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send dingtalk alert\")\n\n\tresp, err := http.Post(\n\t\tutil.Config.DingTalkUrl,\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send dingtalk alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 {\n\t\tt.Log(\"Can't send dingtalk alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully dingtalk alert\")\n\t}\n\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) sendGotifyAlert() {\n\tif !util.Config.GotifyAlert || !t.alert {\n\t\treturn\n\t}\n\n\tif t.Template.SuppressSuccessAlerts && t.Task.Status == task_logger.TaskSuccessStatus {\n\t\treturn\n\t}\n\n\tbody := bytes.NewBufferString(\"\")\n\tauthor, version := t.alertInfos()\n\n\talert := Alert{\n\t\tName:   t.Template.Name,\n\t\tAuthor: author,\n\t\tColor:  t.alertColor(\"gotify\"),\n\t\tTask: alertTask{\n\t\t\tID:      strconv.Itoa(t.Task.ID),\n\t\t\tURL:     t.taskLink(),\n\t\t\tResult:  t.Task.Status.Format(),\n\t\t\tVersion: version,\n\t\t\tDesc:    t.Task.Message,\n\t\t},\n\t}\n\n\ttpl, err := template.ParseFS(templates, \"templates/gotify.tmpl\")\n\n\tif err != nil {\n\t\tt.Log(\"Can't parse gotify alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif err := tpl.Execute(body, alert); err != nil {\n\t\tt.Log(\"Can't generate gotify alert template!\")\n\t\tpanic(err)\n\t}\n\n\tif body.Len() == 0 {\n\t\tt.Log(\"Buffer for gotify alert is empty\")\n\t\treturn\n\t}\n\n\tt.Log(\"Attempting to send gotify alert\")\n\n\tresp, err := http.Post(\n\t\tfmt.Sprintf(\n\t\t\t\"%s/message?token=%s\",\n\t\t\tutil.Config.GotifyUrl,\n\t\t\tutil.Config.GotifyToken),\n\t\t\"application/json\",\n\t\tbody,\n\t)\n\n\tif err != nil {\n\t\tt.Log(\"Can't send gotify alert! Error: \" + err.Error())\n\t} else if resp.StatusCode != 200 {\n\t\tt.Log(\"Can't send gotify alert! Response code: \" + strconv.Itoa(resp.StatusCode))\n\t} else {\n\t\tt.Log(\"Sent successfully gotify alert\")\n\t}\n\n\tif resp != nil {\n\t\tdefer resp.Body.Close() //nolint:errcheck\n\t}\n}\n\nfunc (t *TaskRunner) alertInfos() (string, string) {\n\tversion := \"\"\n\n\tif t.Task.Version != nil {\n\t\tversion = *t.Task.Version\n\t} else if t.Template.Type != db.TemplateTask {\n\t\tv := t.Task.GetIncomingVersion(t.pool.store)\n\t\tif v != nil {\n\t\t\tversion = \"build \" + *v\n\t\t} else {\n\t\t\tversion = \"\"\n\t\t}\n\t} else {\n\t\tversion = \"\"\n\t}\n\n\tauthor := \"—\"\n\n\tif t.Task.UserID != nil {\n\t\tuser, err := t.pool.store.GetUser(*t.Task.UserID)\n\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tauthor = user.Name\n\t}\n\n\treturn author, version\n}\n\nfunc (t *TaskRunner) alertColor(kind string) string {\n\tswitch kind {\n\tcase \"slack\":\n\t\tswitch t.Task.Status {\n\t\tcase task_logger.TaskSuccessStatus:\n\t\t\treturn \"good\"\n\t\tcase task_logger.TaskFailStatus:\n\t\t\treturn \"danger\"\n\t\tcase task_logger.TaskRunningStatus:\n\t\t\treturn \"#333CFF\"\n\t\tcase task_logger.TaskWaitingStatus:\n\t\t\treturn \"#FFFC33\"\n\t\tcase task_logger.TaskStoppingStatus:\n\t\t\treturn \"#BEBEBE\"\n\t\tcase task_logger.TaskStoppedStatus:\n\t\t\treturn \"#5B5B5B\"\n\t\t}\n\tcase \"rocketchat\":\n\t\tswitch t.Task.Status {\n\t\tcase task_logger.TaskSuccessStatus:\n\t\t\treturn \"#00EE00\"\n\t\tcase task_logger.TaskFailStatus:\n\t\t\treturn \"#EE0000\"\n\t\tcase task_logger.TaskRunningStatus:\n\t\t\treturn \"#333CFF\"\n\t\tcase task_logger.TaskWaitingStatus:\n\t\t\treturn \"#FFFC33\"\n\t\tcase task_logger.TaskStoppingStatus:\n\t\t\treturn \"#BEBEBE\"\n\t\tcase task_logger.TaskStoppedStatus:\n\t\t\treturn \"#5B5B5B\"\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc (t *TaskRunner) taskLink() string {\n\treturn fmt.Sprintf(\n\t\t\"%s/project/%d/templates/%d?t=%d\",\n\t\tutil.Config.WebHost,\n\t\tt.Template.ProjectID,\n\t\tt.Template.ID,\n\t\tt.Task.ID,\n\t)\n}\n"
  },
  {
    "path": "services/tasks/alert_test_sender.go",
    "content": "package tasks\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n\t\"github.com/semaphoreui/semaphore/pkg/task_logger\"\n)\n\n// SendProjectTestAlerts sends test alerts to all enabled notifiers for the given project.\nfunc SendProjectTestAlerts(project db.Project, store db.Store) (err error) {\n\n\tprojectUsers, err := store.GetProjectUsers(project.ID, db.RetrieveQueryParams{})\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar userIDs []int\n\tfor _, u := range projectUsers {\n\t\tuserIDs = append(userIDs, u.ID)\n\t}\n\n\ttr := &TaskRunner{\n\t\tTask: db.Task{\n\t\t\tProjectID:  project.ID,\n\t\t\tTemplateID: 0,\n\t\t\tStatus:     task_logger.TaskSuccessStatus,\n\t\t\tMessage:    \"This is a test notification\",\n\t\t},\n\t\tTemplate: db.Template{\n\t\t\tID:        0,\n\t\t\tProjectID: project.ID,\n\t\t\tName:      \"Test Notification\",\n\t\t\tType:      db.TemplateTask,\n\t\t},\n\t\tusers:     userIDs,\n\t\talert:     project.Alert,\n\t\talertChat: project.AlertChat,\n\t\tpool: &TaskPool{\n\t\t\tlogger: make(chan logRecord, 100),\n\t\t\tstore:  store,\n\t\t},\n\t}\n\n\ttr.sendTelegramAlert()\n\ttr.sendSlackAlert()\n\ttr.sendRocketChatAlert()\n\ttr.sendMicrosoftTeamsAlert()\n\ttr.sendDingTalkAlert()\n\ttr.sendGotifyAlert()\n\ttr.sendMailAlert()\n\n\treturn\n}\n"
  },
  {
    "path": "services/tasks/hooks/ansible.go",
    "content": "package hooks\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\ntype AnsibleHook struct {\n}\n\nfunc (h *AnsibleHook) End(store db.Store, projectID int, taskID int) {\n}\n"
  },
  {
    "path": "services/tasks/hooks/common.go",
    "content": "package hooks\n\nimport \"github.com/semaphoreui/semaphore/db\"\n\ntype Hook interface {\n\tEnd(store db.Store, projectID int, taskID int)\n}\n"
  },
  {
    "path": "services/tasks/hooks/factory.go",
    "content": "package hooks\n\nimport (\n\t\"github.com/semaphoreui/semaphore/db\"\n)\n\nfunc GetHook(app db.TemplateApp) Hook {\n\tswitch app {\n\tcase db.AppAnsible:\n\t\treturn &AnsibleHook{}\n\tdefault:\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "services/tasks/http_test.go",
    "content": "package tasks\n\nimport (\n\t\"testing\"\n)\n\nfunc TestGetNextBuildVersion(t *testing.T) {\n\ts := getNextBuildVersion(\"new-1.4-patch\", \"new-1.5-patch\")\n\tif s != \"new-1.6-patch\" {\n\t\tt.Fatal()\n\t}\n\n\ts = getNextBuildVersion(\"new-1.4\", \"new-1.5\")\n\tif s != \"new-1.6\" {\n\t\tt.Fatal()\n\t}\n\n\ts = getNextBuildVersion(\"1.4-patch\", \"1.5-patch\")\n\tif s != \"1.6-patch\" {\n\t\tt.Fatal()\n\t}\n\n\ts = getNextBuildVersion(\"1.4.8\", \"1.4.9\")\n\tif s != \"1.4.10\" {\n\t\tt.Fatal()\n\t}\n\n\ts = getNextBuildVersion(\"0\", \"7\")\n\tif s != \"8\" {\n\t\tt.Fatal()\n\t}\n}\n"
  },
  {
    "path": "services/tasks/task_state_store.go",
    "content": "package tasks\n\nimport \"sync\"\n\n// TaskRunnerHydrator constructs a TaskRunner for an existing task\n// identified by taskID and projectID without starting it.\ntype TaskRunnerHydrator func(taskID int, projectID int) (*TaskRunner, error)\n\n// TaskStateStore defines pluggable storage for task pool state\ntype TaskStateStore interface {\n\t// Start allows the store to initialize, restore its in-memory\n\t// pointers from the underlying backend and start background\n\t// sync listeners (e.g., Redis Pub/Sub). Implementations may no-op.\n\tStart(hydrator TaskRunnerHydrator) error\n\n\t// Queue operations\n\tEnqueue(task *TaskRunner)\n\tDequeueAt(index int) error\n\tQueueRange() []*TaskRunner\n\tQueueGet(index int) *TaskRunner\n\tQueueLen() int\n\n\t// Running tasks map operations\n\tSetRunning(task *TaskRunner)\n\tDeleteRunning(taskID int)\n\tRunningRange() []*TaskRunner\n\tRunningCount() int\n\n\t// Active-by-project operations\n\tAddActive(projectID int, task *TaskRunner)\n\tRemoveActive(projectID int, taskID int)\n\tGetActive(projectID int) []*TaskRunner\n\tActiveCount(projectID int) int\n\n\t// Aliases operations\n\tSetAlias(alias string, task *TaskRunner)\n\tGetByAlias(alias string) *TaskRunner\n\tDeleteAlias(alias string)\n\n\t// Distributed claim to ensure single runner starts a task\n\tTryClaim(taskID int) bool\n\tDeleteClaim(taskID int)\n\n\t// UpdateRuntimeFields persists transient fields of TaskRunner so\n\t// they can be restored after restart in HA mode.\n\tUpdateRuntimeFields(task *TaskRunner)\n\t// LoadRuntimeFields fills runtime fields (RunnerID, Username, IncomingVersion, Alias)\n\t// from the backend into the provided task. No-op if not supported.\n\tLoadRuntimeFields(task *TaskRunner)\n}\n\n// MemoryTaskStateStore is an in-memory implementation of TaskStateStore\ntype MemoryTaskStateStore struct {\n\tmu         sync.RWMutex\n\tqueue      []*TaskRunner\n\trunning    map[int]*TaskRunner\n\tactiveProj map[int]map[int]*TaskRunner // projectID -> taskID -> task\n\taliases    map[string]*TaskRunner\n}\n\nfunc NewMemoryTaskStateStore() *MemoryTaskStateStore {\n\treturn &MemoryTaskStateStore{\n\t\tqueue:      make([]*TaskRunner, 0),\n\t\trunning:    make(map[int]*TaskRunner),\n\t\tactiveProj: make(map[int]map[int]*TaskRunner),\n\t\taliases:    make(map[string]*TaskRunner),\n\t}\n}\n\n// Start is a no-op for the in-memory store\nfunc (s *MemoryTaskStateStore) Start(_ TaskRunnerHydrator) error { return nil }\n\n// Claims always succeed in memory single-process mode\nfunc (s *MemoryTaskStateStore) TryClaim(_ int) bool               { return true }\nfunc (s *MemoryTaskStateStore) DeleteClaim(_ int)                 {}\nfunc (s *MemoryTaskStateStore) UpdateRuntimeFields(_ *TaskRunner) {}\nfunc (s *MemoryTaskStateStore) LoadRuntimeFields(_ *TaskRunner)   {}\n\n// Queue\nfunc (s *MemoryTaskStateStore) Enqueue(task *TaskRunner) {\n\ts.mu.Lock()\n\ts.queue = append(s.queue, task)\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) DequeueAt(index int) error {\n\ts.mu.Lock()\n\tif index < 0 || index >= len(s.queue) {\n\t\ts.mu.Unlock()\n\t\treturn nil\n\t}\n\ts.queue = append(s.queue[:index], s.queue[index+1:]...)\n\ts.mu.Unlock()\n\treturn nil\n}\n\nfunc (s *MemoryTaskStateStore) QueueRange() []*TaskRunner {\n\ts.mu.RLock()\n\tout := make([]*TaskRunner, len(s.queue))\n\tcopy(out, s.queue)\n\ts.mu.RUnlock()\n\treturn out\n}\n\nfunc (s *MemoryTaskStateStore) QueueGet(index int) *TaskRunner {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\tif index < 0 || index >= len(s.queue) {\n\t\treturn nil\n\t}\n\treturn s.queue[index]\n}\n\nfunc (s *MemoryTaskStateStore) QueueLen() int {\n\ts.mu.RLock()\n\tl := len(s.queue)\n\ts.mu.RUnlock()\n\treturn l\n}\n\n// Running\nfunc (s *MemoryTaskStateStore) SetRunning(task *TaskRunner) {\n\ts.mu.Lock()\n\ts.running[task.Task.ID] = task\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) DeleteRunning(taskID int) {\n\ts.mu.Lock()\n\tdelete(s.running, taskID)\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) RunningRange() []*TaskRunner {\n\ts.mu.RLock()\n\tres := make([]*TaskRunner, 0, len(s.running))\n\tfor _, t := range s.running {\n\t\tres = append(res, t)\n\t}\n\ts.mu.RUnlock()\n\treturn res\n}\n\nfunc (s *MemoryTaskStateStore) RunningCount() int {\n\ts.mu.RLock()\n\tl := len(s.running)\n\ts.mu.RUnlock()\n\treturn l\n}\n\n// Active by project\nfunc (s *MemoryTaskStateStore) AddActive(projectID int, task *TaskRunner) {\n\ts.mu.Lock()\n\tm, ok := s.activeProj[projectID]\n\tif !ok {\n\t\tm = make(map[int]*TaskRunner)\n\t\ts.activeProj[projectID] = m\n\t}\n\tm[task.Task.ID] = task\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) RemoveActive(projectID int, taskID int) {\n\ts.mu.Lock()\n\tif s.activeProj[projectID] != nil {\n\t\tdelete(s.activeProj[projectID], taskID)\n\t\tif len(s.activeProj[projectID]) == 0 {\n\t\t\tdelete(s.activeProj, projectID)\n\t\t}\n\t}\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) GetActive(projectID int) []*TaskRunner {\n\ts.mu.RLock()\n\tres := make([]*TaskRunner, 0)\n\tif s.activeProj[projectID] != nil {\n\t\tfor _, t := range s.activeProj[projectID] {\n\t\t\tres = append(res, t)\n\t\t}\n\t}\n\ts.mu.RUnlock()\n\treturn res\n}\n\nfunc (s *MemoryTaskStateStore) ActiveCount(projectID int) int {\n\ts.mu.RLock()\n\tl := 0\n\tif s.activeProj[projectID] != nil {\n\t\tl = len(s.activeProj[projectID])\n\t}\n\ts.mu.RUnlock()\n\treturn l\n}\n\n// Aliases\nfunc (s *MemoryTaskStateStore) SetAlias(alias string, task *TaskRunner) {\n\ts.mu.Lock()\n\ts.aliases[alias] = task\n\ts.mu.Unlock()\n}\n\nfunc (s *MemoryTaskStateStore) GetByAlias(alias string) *TaskRunner {\n\ts.mu.RLock()\n\tt := s.aliases[alias]\n\ts.mu.RUnlock()\n\treturn t\n}\n\nfunc (s *MemoryTaskStateStore) DeleteAlias(alias string) {\n\ts.mu.Lock()\n\tdelete(s.aliases, alias)\n\ts.mu.Unlock()\n}\n"
  },
  {
    "path": "services/tasks/templates/dingtalk.tmpl",
    "content": "{\n    \"msgtype\": \"markdown\",\n    \"markdown\": {\n        \"title\": \"Task: {{ .Name }}\",\n        \"text\": \"#### Task: {{ .Name }}\\nExecution #: {{ .Task.ID }}  \\nStatus: {{ .Task.Result }}  \\nAuthor: {{ .Author }}  \\n{{ if .Task.Version }}Version: {{ .Task.Version }}  \\n{{ end }}[Task Link]({{ .Task.URL }})\"\n    }\n}"
  },
  {
    "path": "services/tasks/templates/email.tmpl",
    "content": "<p>Task {{ .Task.ID }} with template '{{ .Name }}' has failed!</p>\n<p>Task Log: <a href=\"{{ .Task.URL }}\">Link</a></p>\n"
  },
  {
    "path": "services/tasks/templates/gotify.tmpl",
    "content": "{\n  \"extras\": {\n    \"client::display\": {\n      \"contentType\": \"text/markdown\"\n    }\n  },\n  \"message\": \"Execution #: {{ .Task.ID }}   \\nStatus: {{ .Task.Result }}   \\nAuthor: {{ .Author }}   \\n{{ if .Task.Version }}Version: {{ .Task.Version }}   \\n{{ end }}[Task Link]({{ .Task.URL }})\",\n  \"title\": \"Task: {{ .Name }}\"\n}"
  },
  {
    "path": "services/tasks/templates/microsoft-teams.tmpl",
    "content": "{\n    \"type\": \"message\",\n    \"attachments\": [\n        {\n            \"contentType\": \"application/vnd.microsoft.card.adaptive\",\n            \"content\": {\n                \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",\n                \"type\": \"AdaptiveCard\",\n                \"version\": \"1.4\",\n                \"body\": [\n                    {\n                        \"type\": \"TextBlock\",\n                        \"text\": \"Ansible Task Template Execution by: {{ .Author }}\"\n                    },\n                    {\n                        \"type\": \"FactSet\",\n                        \"facts\": [\n                            {\n                                \"title\": \"Task:\",\n                                \"value\": \"{{ .Name }}\"\n                            },\n                            {\n                                \"title\": \"Status:\",\n                                \"value\": \"{{ .Task.Result }}\"\n                            },\n                            {\n                                \"title\": \"Task ID:\",\n                                \"value\": \"{{ .Task.ID }}\"\n                            }\n                        ],\n                        \"separator\": true\n                    }\n                ],\n                \"actions\": [\n                    {\n                        \"type\": \"Action.OpenUrl\",\n                        \"title\": \"Task URL\",\n                        \"url\": \"{{ .Task.URL }}\"\n                    }\n                ],\n                \"msteams\": {\n                    \"width\": \"Full\"\n                },\n                \"backgroundImage\": {\n                    \"horizontalAlignment\": \"Center\",\n                    \"url\": \"data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAABSgAAAAFCAYAAABGmwLHAAAARklEQVR4nO3YMQEAIBDEsANPSMC/AbzwMm5JJHTseuf+AAAAAAAUbNEBAAAAgBaDEgAAAACoMSgBAAAAgBqDEgAAAADoSDL8RAJfcbcsoQAAAABJRU5ErkJggg==\",\n                    \"fillMode\": \"RepeatHorizontally\"\n                }\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "services/tasks/templates/rocketchat.tmpl",
    "content": "{\n    \"text\": \"execution #{{ .Task.ID }}, status: {{ .Task.Result }}!\",\n    \"attachments\": [\n        {\n            \"title\": \"Task: {{ .Name }}\",\n            \"title_link\": \"{{ .Task.URL }}\",\n            \"text\": \"execution #{{ .Task.ID }}, status: {{ .Task.Result }}!\",\n            \"color\": \"{{ .Color }}\"\n        }\n    ]\n}\n"
  },
  {
    "path": "services/tasks/templates/slack.tmpl",
    "content": "{\n    \"attachments\": [\n        {\n            \"title\": \"Task: {{ .Name }}\",\n            \"title_link\": \"{{ .Task.URL }}\",\n            \"text\": \"execution #{{ .Task.ID }}, status: {{ .Task.Result }}!\",\n            \"color\": \"{{ .Color }}\",\n            \"mrkdwn_in\": [\n                \"text\"\n            ],\n            \"fields\": [\n                {\n                    \"title\": \"Author\",\n                    \"value\": \"{{ .Author }}\",\n                    \"short\": true\n                {{ if .Task.Version }}\n                },\n                {\n                    \"title\": \"Version\",\n                    \"value\": \"{{ .Task.Version }}\",\n                    \"short\": true\n                {{ end }}\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "services/tasks/templates/telegram.tmpl",
    "content": "{\n    \"chat_id\": \"{{ .Chat.ID }}\",\n    \"parse_mode\": \"HTML\",\n    \"text\": \"<code>{{ .Name }}</code>\\n#{{ .Task.ID }} <b>{{ .Task.Result }}</b> <code>{{ .Task.Version }}</code> - {{ .Task.Desc }}\\nby {{ .Author }}\\n{{ .Task.URL }}\"\n}\n"
  },
  {
    "path": "test/e2e/.gitignore",
    "content": "\n# Playwright\nnode_modules/\n/test-results/\n/playwright-report/\n/blob-report/\n/playwright/.cache/\n/.env"
  },
  {
    "path": "test/e2e/package.json",
    "content": "{\n  \"name\": \"dredd\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {},\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"@playwright/test\": \"^1.52.0\",\n    \"@types/node\": \"^24.0.0\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^17.0.0\",\n    \"playwright\": \"^1.56.1\"\n  }\n}\n"
  },
  {
    "path": "test/e2e/playwright.config.ts",
    "content": "import { defineConfig, devices } from '@playwright/test';\n\n/**\n * Read environment variables from file.\n * https://github.com/motdotla/dotenv\n */\n// @ts-ignore\nimport dotenv from 'dotenv';\n// @ts-ignore\nimport path from 'path';\ndotenv.config({ path: path.resolve(__dirname, '.env') });\n\n/**\n * See https://playwright.dev/docs/test-configuration.\n */\nexport default defineConfig({\n  testDir: './tests',\n  /* Run tests in files in parallel */\n  fullyParallel: true,\n  /* Fail the build on CI if you accidentally left test.only in the source code. */\n  forbidOnly: !!process.env.CI,\n  /* Retry on CI only */\n  retries: process.env.CI ? 2 : 0,\n  /* Opt out of parallel tests on CI. */\n  workers: 3, // process.env.CI ? 1 : undefined,\n  /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n  reporter: 'html',\n  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */\n  use: {\n    /* Base URL to use in actions like `await page.goto('/')`. */\n    baseURL: 'http://localhost:8080',\n\n    // video: 'retain-on-failure',\n    /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */\n    // trace: 'on-first-retry',\n  },\n\n  /* Configure projects for major browsers */\n  projects: [\n    {\n      name: 'chromium',\n      use: { ...devices['Desktop Chrome'], channel: 'chromium' },\n    },\n\n    // {\n    //   name: 'firefox',\n    //   use: { ...devices['Desktop Firefox'] },\n    // },\n    //\n    // {\n    //   name: 'webkit',\n    //   use: { ...devices['Desktop Safari'] },\n    // },\n\n    /* Test against mobile viewports. */\n    // {\n    //   name: 'Mobile Chrome',\n    //   use: { ...devices['Pixel 5'] },\n    // },\n    // {\n    //   name: 'Mobile Safari',\n    //   use: { ...devices['iPhone 12'] },\n    // },\n\n    /* Test against branded browsers. */\n    // {\n    //   name: 'Microsoft Edge',\n    //   use: { ...devices['Desktop Edge'], channel: 'msedge' },\n    // },\n    // {\n    //   name: 'Google Chrome',\n    //   use: { ...devices['Desktop Chrome'], channel: 'chrome' },\n    // },\n  ],\n\n  /* Run your local dev server before starting the tests */\n  // webServer: {\n  //   command: 'npm run start',\n  //   url: 'http://127.0.0.1:3000',\n  //   reuseExistingServer: !process.env.CI,\n  // },\n});\n"
  },
  {
    "path": "test/e2e/tests/fixtures.ts",
    "content": "import { test as base } from \"@playwright/test\";\n\nexport const test = base.extend<{\n  login: (asAdmin: boolean) => Promise<void>;\n  project: {\n    create: (\n      role?: \"owner\" | \"manager\" | \"task_runner\" | \"guest\",\n      demo?: boolean,\n      name?: string\n    ) => Promise<string>;\n    delete: () => Promise<void>;\n  };\n}>({\n  login: async ({ page }, use) => {\n    await use(async (asAdmin: boolean) => {\n      await page.goto(\"/auth/login\");\n      const username = asAdmin\n        ? process.env.TEST_ADMIN_LOGIN\n        : process.env.TEST_USER_LOGIN;\n      if (!username) {\n        throw new Error(\"TEST_ADMIN_LOGIN or TEST_USER_LOGIN is not set\");\n      }\n      const password = asAdmin\n        ? process.env.TEST_ADMIN_PASSWORD\n        : process.env.TEST_USER_PASSWORD;\n      if (!password) {\n        throw new Error(\"TEST_ADMIN_PASSWORD or TEST_USER_PASSWORD is not set\");\n      }\n      await page.getByTestId(\"auth-username\").fill(username);\n      await page.getByTestId(\"auth-password\").fill(password);\n      await page.getByTestId(\"auth-signin\").click();\n    });\n  },\n\n  project: async ({ page }, use) => {\n    await use({\n      /**\n       * Create a new project.\n       * @param role   One of 'owner'|'manager'|'task_runner'|'guest'; defaults to 'owner'\n       * @param demo   Whether to enable the \"Demo\" flag; defaults to false\n       * @param name   Optional custom project name; if omitted, a timestamped name is generated\n       * @returns      The name of the newly created project\n       */\n      create: async (role = \"owner\", demo = false, name?: string) => {\n        const projectName = name ?? `test-${role}-${Date.now()}`;\n        // open new-project dialog\n        await page.getByTestId(\"sidebar-currentProject\").click();\n        await page.getByTestId(\"sidebar-newProject\").click();\n        // fill in details\n        await page.getByTestId(\"newProject-name\").fill(projectName);\n        if (demo) {\n          await page.getByRole(\"dialog\").getByText(\"Demo\").click();\n        }\n        // (optional) select role if your UI supports it:\n        // await page.getByRole('combobox', { name: 'Role' }).selectOption(role);\n        await page\n          .getByRole(\"dialog\")\n          .getByRole(\"button\", { name: \"Create\" })\n          .click();\n\n        await page.getByText(`Project ${projectName} created`).waitFor();\n\n        // wait for the project to appear in the sidebar\n        await page\n          .getByTestId(\"sidebar-currentProject\")\n          .getByText(projectName)\n          .waitFor();\n\n        await page.waitForTimeout(500);\n\n        return projectName;\n      },\n\n      /**\n       * Delete an existing project by name.\n       * @param name  The exact project name to delete\n       */\n      delete: async () => {\n\n        await page.getByTestId(\"sidebar-dashboard\").click();\n\n        await page.getByTestId(\"dashboard-settings\").click();\n\n        await page.getByTestId(\"settings-deleteProject\").click();\n\n        await page\n          .getByRole(\"dialog\")\n          .getByRole(\"button\", { name: \"Yes\" })\n          .click();\n      },\n    });\n  },\n});\n\nexport { expect } from \"@playwright/test\";\n"
  },
  {
    "path": "test/e2e/tests/task.spec.ts",
    "content": "import { test, expect } from \"./fixtures\";\n\ntest.describe(\"task running\", () => {\n  test.beforeEach(async ({ page, login, project }) => {\n    await login(true);\n\n    await project.create(\"task_runner\", true);\n\n    await page.getByTestId(\"sidebar-templates\").click();\n\n    await page.getByRole(\"link\", { name: \"Build demo app\" }).click();\n\n    await page.getByTestId(\"template-run\").click();\n\n    await page\n      .getByTestId(\"newTaskDialog\")\n      .getByRole(\"textbox\", { name: \"Message (Optional)\" })\n      .fill(\"Test\");\n\n    await page\n      .getByTestId(\"newTaskDialog\")\n      .getByTestId(\"editDialog-save\")\n      .click();\n\n    test.setTimeout(90000);\n  });\n\n  test.afterEach(async ({ page, project }) => {\n    await page\n      .getByTestId(\"taskLogDialog\")\n      .getByTestId(\"editDialog-close\")\n      .click();\n\n    await project.delete();\n  });\n\n  test(\"run task from demo project\", async ({ page }) => {\n    await page.getByTestId(\"task-rawLog\").waitFor({ timeout: 90000 });\n\n    await expect(page.getByTestId(\"task-status\")).toHaveText(\"Success\");\n  });\n\n  test(\"stop task on waiting\", async ({ page }) => {\n    await page\n      .getByRole(\"dialog\")\n      .getByRole(\"button\", { name: \"Stop\" })\n      .click();\n\n    await page.getByTestId(\"task-rawLog\").waitFor({ timeout: 600000 });\n\n    await expect(page.getByTestId(\"task-status\")).toHaveText(\"Stopped\");\n  });\n\n  test(\"stop task on cloning\", async ({ page }) => {\n    await page\n      .getByRole(\"dialog\")\n      .getByText(\"Get current commit hash\")\n      .waitFor();\n\n    await page\n      .getByRole(\"dialog\")\n      .getByRole(\"button\", { name: \"Stop\" })\n      .click();\n\n    await page.getByTestId(\"task-rawLog\").waitFor({ timeout: 60000 });\n\n    await expect(page.getByTestId(\"task-status\")).toHaveText(\"Stopped\");\n  });\n\n  test(\"stop task on running\", async ({ page }) => {\n    await page\n      .getByRole(\"dialog\")\n      .getByText(\n        \"TASK [Gathering Facts] *********************************************************\"\n      )\n      .waitFor({ timeout: 100000 });\n\n    await page\n      .getByRole(\"dialog\")\n      .getByRole(\"button\", { name: \"Stop\" })\n      .click();\n\n    await page.getByTestId(\"task-rawLog\").waitFor({ timeout: 60000 });\n\n    await expect(page.getByTestId(\"task-status\")).toHaveText(\"Stopped\");\n  });\n});\n"
  },
  {
    "path": "test/e2e/tests/variable-group.spec.ts",
    "content": "import { test, expect } from \"./fixtures\";\n\ntest.describe(\"Variable Groups\", () => {\n  test.beforeEach(async ({ page, login, project }) => {\n    await login(true);\n\n    await project.create(\"manager\", true);\n  });\n\n  test.afterEach(async ({ project, page }) => {\n    await page\n      .getByTestId(\"varGroupDialog\")\n      .getByTestId(\"editDialog-close\")\n      .click();\n    await project.delete();\n  });\n\n  test(\"saving variables with empty names is prohibited\", async ({\n    page,\n    login,\n  }) => {\n    await page.getByTestId(\"sidebar-environment\").click();\n\n    await page.getByRole(\"button\", { name: \"New Group\" }).click();\n    await page.getByRole(\"textbox\", { name: \"Group Name\" }).fill(\"Test\");\n\n    await page.getByTestId(\"varGroup-addEnv\").click();\n\n    await page.getByRole(\"textbox\", { name: \"Value\" }).fill(\"Test\");\n    await page.getByRole(\"button\", { name: \"Save\" }).click();\n    await page.getByTestId(\"varGroup-error\").waitFor({ timeout: 1000 });\n    await expect(page.getByTestId(\"varGroup-error\")).toHaveText(\n      \"Environment variables key can not be empty\"\n    );\n  });\n});\n"
  },
  {
    "path": "test/mcp/api/AGENT.md",
    "content": "# Manual QA Agent Guide (MCP)\n\nThis directory is intended to be executed by an LLM acting as a **manual QA engineer**.\nThe LLM should use **MCP tools** (Semaphore) to execute the cases in `test_plan.md` and write a clear,\nreproducible test report. \n\nRun test cases simultaneously (in parallel).\n\n1. For each test case create a new project with demo flag.\n2. Use this project for tests.\n3. After each test case delete the project.\n\n\n## Goals (what \"good\" looks like)\n\n- Execute each test case end-to-end (or mark it **BLOCKED** with a precise reason).\n- Prefer deterministic verification (API/MCP) and capture evidence (IDs, logs, screenshots).\n- Never damage real user data: use **ephemeral test data**, and **clean up** what you create.\n- Produce a single report file: `artifacts/results-<run-id>.md`.\n\n## Safety rules (must-follow)\n\n- **Do not delete or modify** any pre-existing resources you did not create for this run.\n- Create all resources with a unique prefix: `llm-qa-<run-id>-...`.\n- If you are unsure whether something is \"test-only\", treat it as production and do not touch it.\n- Prefer **read-only** actions first (list/get) before any create/update/delete.\n- If a step would be destructive and you cannot prove it is safe, mark the test **BLOCKED** and explain.\n\n## Run workflow (recommended)\n\n1. **Preflight**\n   - Verify MCP connectivity (at minimum): list projects, list templates in a project, list tasks.\n   - Record environment context in the report (date/time, host/base URL if known, git commit if available).\n2. **Execute test cases** in `test_plan.md` in order.\n3. **Capture evidence**\n   - For each created resource, record: name, ID, and the API/UI location where it can be found.\n   - For tasks: record template name/id, task id, final status, and output excerpt.\n4. **Cleanup**\n   - Delete resources created by this run (projects/environments/inventory/tasks as applicable).\n5. **Write report**: save as `tests/mcp-api/results-<run-id>.md`.\n\n## Handling missing prerequisites\n\nIf the environment does not contain the preconditions needed to run a test case \n(e.g. no templates exist, or no failures exist for TC3), do **not** fabricate results.\n\nInstead:\n- Mark the test **BLOCKED**.\n- State exactly what is missing.\n- Include the discovery evidence (e.g. \"`list_templates` returned 0 templates for project X\").\n- Suggest the minimal setup to unblock.\n\n## Test-case playbooks (how to execute `test_plan.md`)\n\nUse these as the \"default implementation\" of each test case. If a required MCP capability does not \nexist in your environment, mark **BLOCKED**.\n\n## Status definitions\n\n- **PASS**: All steps completed and expected results met.\n- **FAIL**: Steps completed but at least one expected result not met (include bug report).\n- **BLOCKED**: Cannot execute due to missing prerequisite/tooling/access.\n- **SKIPPED**: Intentionally not executed (must include explicit reason).\n\n## Reporting template (copy into `artifacts/results-<run-id>.md`)\n\n### Run metadata\n\n- **Run ID**: `<run-id>`\n- **Date/time**: `<iso8601>`\n- **Environment**: `<dev/staging/prod?>`\n- **Semaphore context**: `<base URL / instance name / version if known>`\n- **MCP servers used**: `semaphore`, `playwright` (as applicable)\n\n### Executive summary\n\n- **Overall**: `<PASS/FAIL/BLOCKED>`\n- **Highlights**: `<1–5 bullets>`\n- **Key risks**: `<1–5 bullets>`\n\n### Results table\n\n| Test Case | Status | Evidence | Notes |\n|---|---|---|---|\n| TC1 Project Lifecycle Management |  |  |  |\n| TC2 Template Execution and Task Monitoring |  |  |  |\n| TC3 Failed Task Analysis |  |  |  |\n| TC4 Environment and Inventory Management |  |  |  |\n| TC5 Bulk Task Operations and Filtering |  |  |  |\n\n### Detailed execution notes\n\nFor each test case include:\n- **What you did**: concise step list (include MCP calls and important parameters)\n- **What you observed**: key outputs/IDs/log excerpts\n- **Pass/Fail rationale**: map to “Expected Results”\n- **Cleanup**: what you deleted/left behind (should be “none left behind”)\n\n### Bugs found\n\nIf any test case FAILS, include at least one bug entry:\n\n#### Bug: <title>\n\n- **Severity**: `<blocker/critical/major/minor/trivial>`\n- **Area**: `<UI/API/Tasks/Templates/Auth/...>`\n- **Environment**: `<dev/staging/...>`\n- **Repro rate**: `<100% / flaky / once>`\n- **Steps to reproduce**:\n  1. ...\n- **Expected**: ...\n- **Actual**: ...\n- **Evidence**:\n  - Task IDs: `<id list>`\n  - Logs: `<link/embedded excerpt>`\n  - Screenshots/snapshots: `<paths if saved>`\n- **Notes / suspected cause** (optional): ...\n\n\n"
  },
  {
    "path": "test/mcp/api/data/case4/test.sh",
    "content": "echo Hello World"
  },
  {
    "path": "test/mcp/api/run.sh",
    "content": "cursor-agent --approve-mcps --force --print \"$(cat test_plan.md)\""
  },
  {
    "path": "test/mcp/api/test_plan.md",
    "content": "# Semaphore UI Test Plan\n\n> For LLM/MCP execution instructions, safety rules, and reporting templates, see `AGENT.md`.\n\n## Test Case 1: Project Lifecycle Management\n**Objective**: Verify complete project creation, update, and deletion workflow\n**Steps**:\n1. Verify project creation and retrieve project details\n2. Update project properties (name, max_parallel_tasks)\n3. Verify updates were applied correctly\n\n**Expected Results**:\n- Project created successfully with correct initial values\n- Project details retrieved accurately\n- Updates applied and reflected in project data\n- Project deleted successfully\n\n\n## Test Case 2: Template Execution and Task Monitoring\n**Objective**: Execute a template task and monitor its execution lifecycle\n**Steps**:\n1. Execute the template \"Ping semaphoreui.com\"\n2. Monitor task execution status\n3. Retrieve task details and verify completion\n4. Verify task output/logs are accessible\n\n**Expected Results**:\n- Task starts successfully\n- Task status transitions correctly (running → success/error)\n- Task details are accurate and complete\n- Task output is accessible\n\n\n## Test Case 3: Template simple pipeline\n**Objective**: Verify that build task triggers deploy task\n**Steps**:\n1. Run \"Build demo app\" template\n2. Wait until it finished and check if it is ok\n3. Check if template \"Deploy demo app to Dev\" automatically triggered after \"Build demo app\" complete in 10 seconds.\n4. Wait until it finished and check if it is ok.\n\n**Expected Results**:\n- \"Deploy demo app to Dev\" successfully executed\n\n## Test Case 4: Test bash script\n**Objective**: Verify running bash scripts\n**Steps**:\n1. Add repository \"Semaphore\" https://github.com/semaphoreui/semaphore with branch `develop`.\n2. Create a template with following options:\n   * Type: Bash script\n   * Script path test/mcp/api/data/case4/test.sh\n3. Run the template\n4. Wait until it finished and check if it is ok.\n\n**Expected Results**:\n- Task complate successfully"
  },
  {
    "path": "test/mcp/e2e/.gitignore",
    "content": "\n# Playwright\nnode_modules/\n/test-results/\n/playwright-report/\n/blob-report/\n/playwright/.cache/\n/playwright/.auth/\n"
  },
  {
    "path": "test/mcp/e2e/AGENT.md",
    "content": "# Playwright QA Agent's Guide (MCP)\n\nThis directory is intended to be executed by an LLM acting as a **manual QA engineer**.\nThe LLM must use **Playwright MCP** to execute the cases in `test_plan.md` and write a clear,\nreproducible test report. \n\nRun test cases simultaneously (in parallel).\n\n1. Use Playwright MCP (NOT Semaphore MCP!) to execute the cases in `test_plan.md` in **headless mode** (do not show a browser window).\n2. Open page http://localhost:8080/auth/login and login using **fiftin** with password **150986**\n3. Use the UI http://localhost:8080/ to execute the test cases.\n4. For each test case create a new project.\n5. Use this project for tests.\n6. After each test case delete the project.\n\n\n## Goals (what \"good\" looks like)\n\n- Execute each test case end-to-end (or mark it **BLOCKED** with a precise reason).\n- Prefer deterministic verification (API/MCP) and capture evidence (IDs, logs, screenshots).\n- Never damage real user data: use **ephemeral test data**, and **clean up** what you create.\n- Produce a single report file: `artifacts/results-<run-id>.md`.\n\n## Safety rules (must-follow)\n\n- **Do not delete or modify** any pre-existing resources you did not create for this run.\n- Create all resources with a unique prefix: `llm-qa-<run-id>-...`.\n- If you are unsure whether something is \"test-only\", treat it as production and do not touch it.\n- Prefer **read-only** actions first (list/get) before any create/update/delete.\n- If a step would be destructive and you cannot prove it is safe, mark the test **BLOCKED** and explain.\n\n## Run workflow (recommended)\n\n1. **Preflight**\n   - Verify MCP connectivity (at minimum): list projects, list templates in a project, list tasks.\n   - Record environment context in the report (date/time, host/base URL if known, git commit if available).\n2. **Execute test cases** in `test_plan.md` in order.\n3. **Capture evidence**\n   - For each created resource, record: name, ID, and the API/UI location where it can be found.\n   - For tasks: record template name/id, task id, final status, and output excerpt.\n4. **Cleanup**\n   - Delete resources created by this run (projects/environments/inventory/tasks as applicable).\n5. **Write report**: save as `tests/mcp-ui/results-<run-id>.md`.\n\n## Handling missing prerequisites\n\nIf the environment does not contain the preconditions needed to run a test case \n(e.g. no templates exist, or no failures exist for TC3), do **not** fabricate results.\n\nInstead:\n- Mark the test **BLOCKED**.\n- State exactly what is missing.\n- Include the discovery evidence (e.g. \"`list_templates` returned 0 templates for project X\").\n- Suggest the minimal setup to unblock.\n\n## Test-case playbooks (how to execute `test_plan.md`)\n\nUse these as the \"default implementation\" of each test case. If a required MCP capability does not \nexist in your environment, mark **BLOCKED**.\n\n## Status definitions\n\n- **PASS**: All steps completed and expected results met.\n- **FAIL**: Steps completed but at least one expected result not met (include bug report).\n- **BLOCKED**: Cannot execute due to missing prerequisite/tooling/access.\n- **SKIPPED**: Intentionally not executed (must include explicit reason).\n\n## Reporting template (copy into `artifacts/results-<run-id>.md`)\n\n### Run metadata\n\n- **Run ID**: `<run-id>`\n- **Date/time**: `<iso8601>`\n- **Environment**: `<dev/staging/prod?>`\n- **Semaphore context**: `<base URL / instance name / version if known>`\n- **MCP servers used**: `semaphore`, `playwright` (as applicable)\n\n### Executive summary\n\n- **Overall**: `<PASS/FAIL/BLOCKED>`\n- **Highlights**: `<1–5 bullets>`\n- **Key risks**: `<1–5 bullets>`\n\n### Results table\n\n| Test Case | Status | Evidence | Notes |\n|---|---|---|---|\n| TC1 Project Lifecycle Management |  |  |  |\n| TC2 Template Execution and Task Monitoring |  |  |  |\n| TC3 Failed Task Analysis |  |  |  |\n| TC4 Environment and Inventory Management |  |  |  |\n| TC5 Bulk Task Operations and Filtering |  |  |  |\n\n### Detailed execution notes\n\nFor each test case include:\n- **What you did**: concise step list (include MCP calls and important parameters)\n- **What you observed**: key outputs/IDs/log excerpts\n- **Pass/Fail rationale**: map to “Expected Results”\n- **Cleanup**: what you deleted/left behind (should be “none left behind”)\n\n### Bugs found\n\nIf any test case FAILS, include at least one bug entry:\n\n#### Bug: <title>\n\n- **Severity**: `<blocker/critical/major/minor/trivial>`\n- **Area**: `<UI/API/Tasks/Templates/Auth/...>`\n- **Environment**: `<dev/staging/...>`\n- **Repro rate**: `<100% / flaky / once>`\n- **Steps to reproduce**:\n  1. ...\n- **Expected**: ...\n- **Actual**: ...\n- **Evidence**:\n  - Task IDs: `<id list>`\n  - Logs: `<link/embedded excerpt>`\n  - Screenshots/snapshots: `<paths if saved>`\n- **Notes / suspected cause** (optional): ...\n\n\n"
  },
  {
    "path": "test/mcp/e2e/package.json",
    "content": "{\n  \"name\": \"mcp-ui\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {},\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"type\": \"commonjs\",\n  \"devDependencies\": {\n    \"@playwright/test\": \"^1.57.0\",\n    \"@types/node\": \"^25.0.2\"\n  }\n}\n"
  },
  {
    "path": "test/mcp/e2e/playwright.config.ts",
    "content": "import { defineConfig, devices } from '@playwright/test';\n\n/**\n * Read environment variables from file.\n * https://github.com/motdotla/dotenv\n */\n// import dotenv from 'dotenv';\n// import path from 'path';\n// dotenv.config({ path: path.resolve(__dirname, '.env') });\n\n/**\n * See https://playwright.dev/docs/test-configuration.\n */\nexport default defineConfig({\n  // testDir: './tests',\n  /* Run tests in files in parallel */\n  fullyParallel: true,\n  /* Fail the build on CI if you accidentally left test.only in the source code. */\n  forbidOnly: !!process.env.CI,\n  /* Retry on CI only */\n  retries: process.env.CI ? 2 : 0,\n  /* Opt out of parallel tests on CI. */\n  workers: process.env.CI ? 1 : undefined,\n  /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n  reporter: 'html',\n  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */\n  use: {\n    headless: true,\n    /* Base URL to use in actions like `await page.goto('')`. */\n    baseURL: 'http://localhost:8080',\n\n    /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */\n    trace: 'on-first-retry',\n  },\n\n  /* Configure projects for major browsers */\n  // projects: [\n  //   {\n  //     name: 'chromium',\n  //     use: { ...devices['Desktop Chrome'] },\n  //   },\n  //\n  //   {\n  //     name: 'firefox',\n  //     use: { ...devices['Desktop Firefox'] },\n  //   },\n  //\n  // ],\n});\n"
  },
  {
    "path": "test/mcp/e2e/run.sh",
    "content": "cursor-agent --approve-mcps --force --print \"$(cat test_plan.md)\""
  },
  {
    "path": "test/mcp/e2e/test_plan.md",
    "content": "# Test Plan for Semaphore UI using Playwright MCP\n\n> For LLM/MCP execution instructions, safety rules, and reporting templates, see `AGENT.md`.\n\n## Test Case 1: Project Lifecycle Management\n**Objective**: Verify complete project creation, update, and deletion workflow\n**Steps**:\n1. Verify project creation and retrieve project details\n2. Update project properties\n3. Verify updates were applied correctly\n\n**Expected Results**:\n- Project created successfully with correct initial values\n- Project details retrieved accurately\n- Updates applied and reflected in project data\n- Project deleted successfully\n\n\n## Test Case 2: Create a new user\n**Objective**: Verify complete user creation, update, and deletion workflow\n**Steps**:\n1. Go to /users\n2. Click the button \"New User\" to open the form\n3. Fill required fields in the form\n4. Click \"Save\"\n5. Verify user created successfully\n6. Delete the user\n\n**Expected Results**:\n- User created successfully with correct initial values\n- User details retrieved accurately\n- Updates applied and reflected in user data\n- User deleted successfully\n\n\n"
  },
  {
    "path": "util/App.go",
    "content": "package util\n\ntype App struct {\n\tActive    bool     `json:\"active\"`\n\tPriority  int      `json:\"priority\"`\n\tTitle     string   `json:\"title\"`\n\tIcon      string   `json:\"icon\"`\n\tColor     string   `json:\"color\"`\n\tDarkColor string   `json:\"dark_color\"`\n\tAppPath   string   `json:\"path\"`\n\tAppArgs   []string `json:\"args\"`\n}\n"
  },
  {
    "path": "util/OdbcProvider.go",
    "content": "package util\n\ntype OidcProvider struct {\n\tClientID         string       `json:\"client_id\"`\n\tClientIDFile     string       `json:\"client_id_file\"`\n\tClientSecret     string       `json:\"client_secret\"`\n\tClientSecretFile string       `json:\"client_secret_file\"`\n\tRedirectURL      string       `json:\"redirect_url\"`\n\tScopes           []string     `json:\"scopes\"`\n\tDisplayName      string       `json:\"display_name\"`\n\tColor            string       `json:\"color\"`\n\tIcon             string       `json:\"icon\"`\n\tAutoDiscovery    string       `json:\"provider_url\"`\n\tEndpoint         oidcEndpoint `json:\"endpoint\"`\n\tUsernameClaim    string       `json:\"username_claim\" default:\"preferred_username\"`\n\tNameClaim        string       `json:\"name_claim\" default:\"preferred_username\"`\n\tEmailClaim       string       `json:\"email_claim\" default:\"email\"`\n\tOrder            int          `json:\"order\"`\n\t// ReturnViaState when true, passes the return path via the OAuth state parameter instead of the redirect URL path. This is useful for OAuth providers that have strict redirect URL validation.\n\tReturnViaState   bool         `json:\"return_via_state\" default:\"true\"`\n}\n\ntype ClaimsProvider interface {\n\tGetUsernameClaim() string\n\tGetEmailClaim() string\n\tGetNameClaim() string\n}\n\nfunc (p *OidcProvider) GetUsernameClaim() string {\n\treturn p.UsernameClaim\n}\n\nfunc (p *OidcProvider) GetEmailClaim() string {\n\treturn p.EmailClaim\n}\n\nfunc (p *OidcProvider) GetNameClaim() string {\n\treturn p.NameClaim\n}\n"
  },
  {
    "path": "util/ansi.go",
    "content": "package util\n\nimport (\n\t\"regexp\"\n)\n\n// ansiCodeRE is a regex to remove ANSI escape sequences from a string.\n// ANSI escape sequences are typically in the form: \\x1b[<parameters><letter>\nvar ansiCodeRE = regexp.MustCompile(\"\\x1b\\\\[[0-9;]*[a-zA-Z]\")\n\nfunc ClearFromAnsiCodes(s string) string {\n\treturn ansiCodeRE.ReplaceAllString(s, \"\")\n}\n"
  },
  {
    "path": "util/config.go",
    "content": "package util\n\nimport (\n\t\"context\"\n\t\"crypto/rand\"\n\t\"encoding/base32\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/url\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/crypto/bcrypt\"\n\t\"gopkg.in/natefinch/lumberjack.v2\"\n\n\t\"github.com/google/go-github/github\"\n\t\"github.com/gorilla/securecookie\"\n)\n\n// Cookie is a runtime generated secure cookie used for authentication\nvar Cookie *securecookie.SecureCookie\n\n// WebHostURL is the public route to the semaphore server\nvar WebHostURL *url.URL\n\nconst (\n\tDbDriverMySQL    = \"mysql\"\n\tDbDriverBolt     = \"bolt\" // Deprecated: replaced with sqlite\n\tDbDriverPostgres = \"postgres\"\n\tDbDriverSQLite   = \"sqlite\"\n)\n\nconst (\n\t// HomeDirModeUserHome does not override HOME.\n\t// Sets ANSIBLE_HOME per template to isolate .ansible/ across parallel tasks.\n\tHomeDirModeUserHome = \"user_home\"\n\n\t// HomeDirModeProjectHome sets HOME to the project temp directory.\n\t// This is the legacy behavior. Parallel ansible-galaxy runs may conflict.\n\tHomeDirModeProjectHome = \"project_home\"\n\n\t// HomeDirModeTemplateDir does not override HOME.\n\t// Sets ANSIBLE_HOME to a per-template \"_home/.ansible\" directory\n\t// (e.g. repository_15_template_114_home/.ansible) to isolate\n\t// .ansible/ artifacts across parallel tasks.\n\tHomeDirModeTemplateDir = \"template_dir\"\n)\n\ntype DbConfig struct {\n\tDialect string `json:\"-\"`\n\n\tHostname string            `json:\"host,omitempty\" env:\"SEMAPHORE_DB_HOST\" default:\"0.0.0.0\"`\n\tUsername string            `json:\"user,omitempty\" env:\"SEMAPHORE_DB_USER\"`\n\tPassword string            `json:\"pass,omitempty\" env:\"SEMAPHORE_DB_PASS\"`\n\tDbName   string            `json:\"name,omitempty\" env:\"SEMAPHORE_DB\" default:\"semaphore\"`\n\tOptions  map[string]string `json:\"options,omitempty\" env:\"SEMAPHORE_DB_OPTIONS\"`\n}\n\ntype LdapMappings struct {\n\tDN   string `json:\"dn\" env:\"SEMAPHORE_LDAP_MAPPING_DN\" default:\"dn\"`\n\tMail string `json:\"mail\" env:\"SEMAPHORE_LDAP_MAPPING_MAIL\" default:\"mail\"`\n\tUID  string `json:\"uid\" env:\"SEMAPHORE_LDAP_MAPPING_UID\" default:\"uid\"`\n\tCN   string `json:\"cn\" env:\"SEMAPHORE_LDAP_MAPPING_CN\" default:\"cn\"`\n}\n\nfunc (p *LdapMappings) GetUsernameClaim() string {\n\treturn p.UID\n}\n\nfunc (p *LdapMappings) GetEmailClaim() string {\n\treturn p.Mail\n}\n\nfunc (p *LdapMappings) GetNameClaim() string {\n\treturn p.CN\n}\n\ntype oidcEndpoint struct {\n\tIssuerURL   string   `json:\"issuer\"`\n\tAuthURL     string   `json:\"auth\"`\n\tTokenURL    string   `json:\"token\"`\n\tUserInfoURL string   `json:\"userinfo\"`\n\tJWKSURL     string   `json:\"jwks\"`\n\tAlgorithms  []string `json:\"algorithms\"`\n}\n\nconst (\n\t// GoGitClientId is builtin Git client. It is not require external dependencies and is preferred.\n\t// Use it if you don't need external SSH authorization.\n\tGoGitClientId = \"go_git\"\n\t// CmdGitClientId is external Git client.\n\t// Default Git client. It is use external Git binary to clone repositories.\n\tCmdGitClientId = \"cmd_git\"\n)\n\n// // basic config validation using regex\n// /* NOTE: other basic regex could be used:\n//\n//\tipv4: ^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$\n//\tipv6: ^(?:[A-Fa-f0-9]{1,4}:|:){3,7}[A-Fa-f0-9]{1,4}$\n//\tdomain: ^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}$\n//\tpath+filename: ^([\\\\/[a-zA-Z0-9_\\\\-${}:~]*]*\\\\/)?[a-zA-Z0-9\\\\.~_${}\\\\-:]*$\n//\temail address: ^(|.*@[A-Za-z0-9-\\\\.]*)$\n//\n// */\n\ntype RunnerConfig struct {\n\tRegistrationToken string `json:\"-\" env:\"SEMAPHORE_RUNNER_REGISTRATION_TOKEN\"`\n\tToken             string `json:\"token,omitempty\" env:\"SEMAPHORE_RUNNER_TOKEN\"`\n\tTokenFile         string `json:\"token_file,omitempty\" env:\"SEMAPHORE_RUNNER_TOKEN_FILE\"`\n\tPrivateKeyFile    string `json:\"private_key_file,omitempty\" env:\"SEMAPHORE_RUNNER_PRIVATE_KEY_FILE\"`\n\n\t// OneOff indicates than runner runs only one job and exit. It is very useful for dynamic runners.\n\t// How it works?\n\t// Example:\n\t// 1) User starts the task.\n\t// 2) Semaphore found runner for task and calls runner's webhook if it provided.\n\t// 3) Your server or lambda handling the call and starts the one-off runner.\n\t// 4) The runner connects to the Semaphore server and handles the enqueued task(s).\n\tOneOff bool `json:\"one_off,omitempty\" env:\"SEMAPHORE_RUNNER_ONE_OFF\"`\n\n\tWebhook string `json:\"webhook,omitempty\" env:\"SEMAPHORE_RUNNER_WEBHOOK\"`\n\n\tMaxParallelTasks int `json:\"max_parallel_tasks,omitempty\" default:\"1\" env:\"SEMAPHORE_RUNNER_MAX_PARALLEL_TASKS\"`\n}\n\ntype TLSConfig struct {\n\tEnabled          bool   `json:\"enabled\" env:\"SEMAPHORE_TLS_ENABLED\"`\n\tCertFile         string `json:\"cert_file\" env:\"SEMAPHORE_TLS_CERT_FILE\"`\n\tKeyFile          string `json:\"key_file\" env:\"SEMAPHORE_TLS_KEY_FILE\"`\n\tHTTPRedirectPort *int   `json:\"http_redirect_port,omitempty\" env:\"SEMAPHORE_TLS_HTTP_REDIRECT_PORT\"`\n}\n\ntype TotpConfig struct {\n\tEnabled       bool   `json:\"enabled\" env:\"SEMAPHORE_TOTP_ENABLED\"`\n\tAllowRecovery bool   `json:\"allow_recovery\" env:\"SEMAPHORE_TOTP_ALLOW_RECOVERY\"`\n\tIssuer        string `json:\"app_name\" env:\"SEMAPHORE_TOTP_ISSUER\"`\n}\n\ntype EventLogType struct {\n\tFormat  string             `json:\"format,omitempty\" env:\"SEMAPHORE_EVENT_LOG_FORMAT\"`\n\tEnabled bool               `json:\"enabled\" env:\"SEMAPHORE_EVENT_LOG_ENABLED\"`\n\tLogger  *lumberjack.Logger `json:\"logger,omitempty\" env:\"SEMAPHORE_EVENT_LOGGER\"`\n}\n\nconst (\n\tFileLogJSON string = \"json\"\n\tFileLogRaw  string = \"\"\n)\n\ntype TaskLogType struct {\n\tEnabled      bool               `json:\"enabled\" env:\"SEMAPHORE_TASK_LOG_ENABLED\"`\n\tFormat       string             `json:\"format,omitempty\" env:\"SEMAPHORE_TASK_LOG_FORMAT\"`\n\tLogger       *lumberjack.Logger `json:\"logger,omitempty\" env:\"SEMAPHORE_TASK_LOGGER\"`\n\tResultLogger *lumberjack.Logger `json:\"result_logger,omitempty\" env:\"SEMAPHORE_TASK_RESULT_LOGGER\"`\n}\n\ntype ConfigLog struct {\n\tEvents *EventLogType `json:\"events,omitempty\"`\n\tTasks  *TaskLogType  `json:\"tasks,omitempty\"`\n}\n\ntype SyslogFormat string\n\nconst (\n\tSyslogDefault SyslogFormat = \"\"\n\tSyslogRFC5424 SyslogFormat = \"rfc5424\"\n)\n\ntype SyslogConfig struct {\n\tEnabled bool         `json:\"enabled\" env:\"SEMAPHORE_SYSLOG_ENABLED\"`\n\tNetwork string       `json:\"network,omitempty\" env:\"SEMAPHORE_SYSLOG_NETWORK\"`\n\tAddress string       `json:\"address,omitempty\" env:\"SEMAPHORE_SYSLOG_ADDRESS\"`\n\tTag     string       `json:\"tag,omitempty\" env:\"SEMAPHORE_SYSLOG_TAG\"`\n\tFormat  SyslogFormat `json:\"format,omitempty\" env:\"SEMAPHORE_SYSLOG_FORMAT\"`\n}\n\ntype ConfigProcess struct {\n\tUser   string `json:\"user,omitempty\" env:\"SEMAPHORE_PROCESS_USER\"`\n\tUID    *int   `json:\"uid,omitempty\" env:\"SEMAPHORE_PROCESS_UID\"`\n\tChroot string `json:\"chroot,omitempty\" env:\"SEMAPHORE_PROCESS_CHROOT\"`\n\tGID    *int   `json:\"gid,omitempty\" env:\"SEMAPHORE_PROCESS_GID\"`\n}\n\ntype ScheduleConfig struct {\n\tTimezone string `json:\"timezone,omitempty\" env:\"SEMAPHORE_SCHEDULE_TIMEZONE\" default:\"UTC\"`\n}\n\ntype DebuggingConfig struct {\n\tApiDelay     string `json:\"api_delay,omitempty\" env:\"SEMAPHORE_API_DELAY\"`\n\tPprofDumpDir string `json:\"pprof_dump_dir,omitempty\" env:\"SEMAPHORE_PPROF_DUMP_DIR\"`\n}\n\ntype HARedisConfig struct {\n\tAddr          string `json:\"addr,omitempty\" env:\"SEMAPHORE_HA_REDIS_ADDR\"`\n\tDB            int    `json:\"db,omitempty\" env:\"SEMAPHORE_HA_REDIS_DB\"`\n\tPass          string `json:\"pass,omitempty\" env:\"SEMAPHORE_HA_REDIS_PASS\"`\n\tUser          string `json:\"user,omitempty\" env:\"SEMAPHORE_HA_REDIS_USER\"`\n\tTLS           bool   `json:\"tls,omitempty\" env:\"SEMAPHORE_HA_REDIS_TLS\"`\n\tTLSSkipVerify bool   `json:\"tls_skip_verify,omitempty\" env:\"SEMAPHORE_HA_REDIS_TLS_SKIP_VERIFY\"`\n}\n\ntype HAConfig struct {\n\tEnabled bool           `json:\"enabled\" env:\"SEMAPHORE_HA_ENABLED\"`\n\tNodeID  string         `json:\"node_id,omitempty\" env:\"SEMAPHORE_HA_NODE_ID\"` // auto-generated if empty\n\tRedis   *HARedisConfig `json:\"redis,omitempty\"`\n}\n\n// HAEnabled returns true when high-availability mode is configured.\nfunc HAEnabled() bool {\n\treturn Config.HA != nil && Config.HA.Enabled\n}\n\n// InitHANodeID generates a unique node identifier for this instance if one\n// was not explicitly configured. Must be called after ConfigInit.\nfunc InitHANodeID() {\n\tif Config.HA == nil {\n\t\treturn\n\t}\n\tif Config.HA.NodeID == \"\" {\n\t\tConfig.HA.NodeID = RandString(16)\n\t}\n}\n\ntype TeamInviteType string\n\nconst (\n\tTeamInviteEmail    TeamInviteType = \"email\"\n\tTeamInviteUsername TeamInviteType = \"username\"\n\tTeamInviteBoth     TeamInviteType = \"both\"\n)\n\ntype TeamsConfig struct {\n\tInvitesEnabled  bool           `json:\"invites_enabled,omitempty\" env:\"SEMAPHORE_TEAMS_INVITES_ENABLED\"`\n\tInviteType      TeamInviteType `json:\"invite_type,omitempty\" env:\"SEMAPHORE_TEAMS_INVITE_TYPE\" default:\"username\"`\n\tMembersCanLeave bool           `json:\"members_can_leave,omitempty\" env:\"SEMAPHORE_TEAMS_MEMBERS_CAN_LEAVE\"`\n}\n\ntype ConfigDirs struct {\n\tSecretsPath string `json:\"secrets_path,omitempty\" env:\"SEMAPHORE_SECRETS_PATH\" default:\"/tmp/semaphore\"`\n\tReposPath   string `json:\"repos_path,omitempty\" env:\"SEMAPHORE_REPOS_PATH\"`\n}\n\n// ConfigType mapping between Config and the json file that sets it\ntype ConfigType struct {\n\tMySQL    *DbConfig `json:\"mysql,omitempty\"`\n\tBoltDb   *DbConfig `json:\"bolt,omitempty\"` // Deprecated\n\tPostgres *DbConfig `json:\"postgres,omitempty\"`\n\tSQLite   *DbConfig `json:\"sqlite,omitempty\"`\n\n\tDialect string `json:\"dialect,omitempty\" default:\"bolt\" rule:\"^mysql|bolt|postgres|sqlite$\" env:\"SEMAPHORE_DB_DIALECT\"`\n\n\t// Format `:port_num` eg, :3000\n\t// if : is missing it will be corrected\n\tPort string     `json:\"port,omitempty\" default:\":3000\" rule:\"^:?([0-9]{1,5})$\" env:\"SEMAPHORE_PORT\"`\n\tTLS  *TLSConfig `json:\"tls,omitempty\"`\n\n\tAuth *AuthConfig `json:\"auth,omitempty\"`\n\n\t// Interface ip, put in front of the port.\n\t// defaults to empty\n\tInterface string `json:\"interface,omitempty\" env:\"SEMAPHORE_INTERFACE\"`\n\n\t// semaphore stores ephemeral projects here\n\tTmpPath string `json:\"tmp_path,omitempty\" default:\"/tmp/semaphore\" env:\"SEMAPHORE_TMP_PATH\"`\n\n\t// HomeDirMode controls how the HOME environment variable is set for tasks.\n\t//   \"template_home\" (default) — HOME is set to a per-template directory,\n\t//       isolating .ansible/ across parallel tasks. Repo is cloned into a\n\t//       \"src\" subdirectory under HOME.\n\t//   \"project_home\" — HOME is set to the project temp directory (legacy\n\t//       behavior). Parallel ansible-galaxy runs in the same project may conflict.\n\t//   \"user_home\" — HOME is not overridden (keeps the real user HOME).\n\t//       ANSIBLE_HOME is set per template to isolate .ansible/ for Ansible tasks.\n\tHomeDirMode string `json:\"home_dir_mode,omitempty\" rule:\"^(user_home|project_home|template_dir)?$\" env:\"SEMAPHORE_HOME_DIR_MODE\" default:\"template_dir\"`\n\n\t// SshConfigPath is a path to the custom SSH config file.\n\t// Default path is ~/.ssh/config.\n\tSshConfigPath string `json:\"ssh_config_path,omitempty\" env:\"SEMAPHORE_SSH_PATH\"`\n\n\tGitClientId string `json:\"git_client,omitempty\" rule:\"^go_git|cmd_git$\" env:\"SEMAPHORE_GIT_CLIENT\" default:\"cmd_git\"`\n\n\t// web host\n\tWebHost string `json:\"web_host,omitempty\" env:\"SEMAPHORE_WEB_ROOT\"`\n\n\t// cookie hashing & encryption\n\tCookieHash       string `json:\"cookie_hash,omitempty\" env:\"SEMAPHORE_COOKIE_HASH\"`\n\tCookieEncryption string `json:\"cookie_encryption,omitempty\" env:\"SEMAPHORE_COOKIE_ENCRYPTION\"`\n\t// AccessKeyEncryption is BASE64 encoded byte array used\n\t// for encrypting and decrypting access keys stored in database.\n\tAccessKeyEncryption string `json:\"access_key_encryption,omitempty\" env:\"SEMAPHORE_ACCESS_KEY_ENCRYPTION\"`\n\n\t// email alerting\n\tEmailAlert         bool   `json:\"email_alert,omitempty\" env:\"SEMAPHORE_EMAIL_ALERT\"`\n\tEmailSender        string `json:\"email_sender,omitempty\" env:\"SEMAPHORE_EMAIL_SENDER\"`\n\tEmailHost          string `json:\"email_host,omitempty\" env:\"SEMAPHORE_EMAIL_HOST\"`\n\tEmailPort          string `json:\"email_port,omitempty\" rule:\"^(|[0-9]{1,5})$\" env:\"SEMAPHORE_EMAIL_PORT\"`\n\tEmailUsername      string `json:\"email_username,omitempty\" env:\"SEMAPHORE_EMAIL_USERNAME\"`\n\tEmailPassword      string `json:\"email_password,omitempty\" env:\"SEMAPHORE_EMAIL_PASSWORD\"`\n\tEmailSecure        bool   `json:\"email_secure,omitempty\" env:\"SEMAPHORE_EMAIL_SECURE\"`\n\tEmailTls           bool   `json:\"email_tls,omitempty\" env:\"SEMAPHORE_EMAIL_TLS\"`\n\tEmailTlsMinVersion string `json:\"email_tls_min_version,omitempty\" default:\"1.2\" rule:\"^(1\\\\.[0123])$\" env:\"SEMAPHORE_EMAIL_TLS_MIN_VERSION\"`\n\n\t// ldap settings\n\tLdapEnable       bool          `json:\"ldap_enable,omitempty\" env:\"SEMAPHORE_LDAP_ENABLE\"`\n\tLdapBindDN       string        `json:\"ldap_binddn,omitempty\" env:\"SEMAPHORE_LDAP_BIND_DN\"`\n\tLdapBindPassword string        `json:\"ldap_bindpassword,omitempty\" env:\"SEMAPHORE_LDAP_BIND_PASSWORD\"`\n\tLdapServer       string        `json:\"ldap_server,omitempty\" env:\"SEMAPHORE_LDAP_SERVER\"`\n\tLdapSearchDN     string        `json:\"ldap_searchdn,omitempty\" env:\"SEMAPHORE_LDAP_SEARCH_DN\"`\n\tLdapSearchFilter string        `json:\"ldap_searchfilter,omitempty\" env:\"SEMAPHORE_LDAP_SEARCH_FILTER\"`\n\tLdapMappings     *LdapMappings `json:\"ldap_mappings,omitempty\"`\n\tLdapNeedTLS      bool          `json:\"ldap_needtls,omitempty\" env:\"SEMAPHORE_LDAP_NEEDTLS\"`\n\n\t// Telegram, Slack, Rocket.Chat, Microsoft Teams, DingTalk, and Gotify alerting\n\tTelegramAlert       bool   `json:\"telegram_alert,omitempty\" env:\"SEMAPHORE_TELEGRAM_ALERT\"`\n\tTelegramChat        string `json:\"telegram_chat,omitempty\" env:\"SEMAPHORE_TELEGRAM_CHAT\"`\n\tTelegramToken       string `json:\"telegram_token,omitempty\" env:\"SEMAPHORE_TELEGRAM_TOKEN\"`\n\tSlackAlert          bool   `json:\"slack_alert,omitempty\" env:\"SEMAPHORE_SLACK_ALERT\"`\n\tSlackUrl            string `json:\"slack_url,omitempty\" env:\"SEMAPHORE_SLACK_URL\"`\n\tRocketChatAlert     bool   `json:\"rocketchat_alert,omitempty\" env:\"SEMAPHORE_ROCKETCHAT_ALERT\"`\n\tRocketChatUrl       string `json:\"rocketchat_url,omitempty\" env:\"SEMAPHORE_ROCKETCHAT_URL\"`\n\tMicrosoftTeamsAlert bool   `json:\"microsoft_teams_alert,omitempty\" env:\"SEMAPHORE_MICROSOFT_TEAMS_ALERT\"`\n\tMicrosoftTeamsUrl   string `json:\"microsoft_teams_url,omitempty\" env:\"SEMAPHORE_MICROSOFT_TEAMS_URL\"`\n\tDingTalkAlert       bool   `json:\"dingtalk_alert,omitempty\" env:\"SEMAPHORE_DINGTALK_ALERT\"`\n\tDingTalkUrl         string `json:\"dingtalk_url,omitempty\" env:\"SEMAPHORE_DINGTALK_URL\"`\n\tGotifyAlert         bool   `json:\"gotify_alert,omitempty\" env:\"SEMAPHORE_GOTIFY_ALERT\"`\n\tGotifyUrl           string `json:\"gotify_url,omitempty\" env:\"SEMAPHORE_GOTIFY_URL\"`\n\tGotifyToken         string `json:\"gotify_token,omitempty\" env:\"SEMAPHORE_GOTIFY_TOKEN\"`\n\n\t// oidc settings\n\tOidcProviders map[string]OidcProvider `json:\"oidc_providers,omitempty\" env:\"SEMAPHORE_OIDC_PROVIDERS\"`\n\n\tMaxTaskDurationSec  int `json:\"max_task_duration_sec,omitempty\" env:\"SEMAPHORE_MAX_TASK_DURATION_SEC\"`\n\tMaxTasksPerTemplate int `json:\"max_tasks_per_template,omitempty\" env:\"SEMAPHORE_MAX_TASKS_PER_TEMPLATE\"`\n\n\t// task concurrency\n\tMaxParallelTasks int `json:\"max_parallel_tasks,omitempty\" default:\"10\" rule:\"^[0-9]{1,10}$\" env:\"SEMAPHORE_MAX_PARALLEL_TASKS\"`\n\n\tRunnerRegistrationToken string `json:\"runner_registration_token,omitempty\" env:\"SEMAPHORE_RUNNER_REGISTRATION_TOKEN\"`\n\n\t// feature switches\n\tPasswordLoginDisable     bool `json:\"password_login_disable,omitempty\" env:\"SEMAPHORE_PASSWORD_LOGIN_DISABLED\"`\n\tNonAdminCanCreateProject bool `json:\"non_admin_can_create_project,omitempty\" env:\"SEMAPHORE_NON_ADMIN_CAN_CREATE_PROJECT\"`\n\n\tUseRemoteRunner bool `json:\"use_remote_runner,omitempty\" env:\"SEMAPHORE_USE_REMOTE_RUNNER\"`\n\n\tIntegrationAlias string `json:\"global_integration_alias,omitempty\" env:\"SEMAPHORE_INTEGRATION_ALIAS\"`\n\n\tApps map[string]App `json:\"apps,omitempty\" env:\"SEMAPHORE_APPS\"`\n\n\tRunner *RunnerConfig `json:\"runner,omitempty\"`\n\n\tEnvVars map[string]string `json:\"env_vars,omitempty\" env:\"SEMAPHORE_ENV_VARS\"`\n\n\tForwardedEnvVars []string `json:\"forwarded_env_vars,omitempty\" env:\"SEMAPHORE_FORWARDED_ENV_VARS\"`\n\n\tTeams *TeamsConfig `json:\"teams,omitempty\"`\n\n\tSyslog *SyslogConfig `json:\"syslog,omitempty\"`\n\n\tLog *ConfigLog `json:\"log,omitempty\"`\n\n\tProcess *ConfigProcess `json:\"process,omitempty\"`\n\n\tSchedule *ScheduleConfig `json:\"schedule,omitempty\"`\n\n\tDebugging *DebuggingConfig `json:\"debugging,omitempty\"`\n\n\tHA *HAConfig `json:\"ha,omitempty\"`\n\n\t// SubscriptionKey is a subscription key or token that can be set via config.\n\t// When this is set, subscription activation from the web interface is disabled.\n\tSubscriptionKey     string `json:\"subscription_key,omitempty\" db:\"-\" env:\"SEMAPHORE_SUBSCRIPTION_KEY\"`\n\tSubscriptionKeyFile string `json:\"subscription_key_file,omitempty\" db:\"-\" env:\"SEMAPHORE_SUBSCRIPTION_KEY_FILE\"`\n\n\tDirs *ConfigDirs `json:\"dirs,omitempty\"`\n}\n\nfunc NewConfigType() *ConfigType {\n\treturn &ConfigType{\n\t\tLdapMappings: &LdapMappings{},\n\t}\n}\n\n// Config exposes the application configuration storage for use in the application\nvar Config *ConfigType\n\nfunc ClearDir(dir string, preserveFiles bool, prefix string) error {\n\td, err := os.Open(dir)\n\n\tif os.IsNotExist(err) {\n\t\treturn nil\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer d.Close() //nolint:errcheck\n\n\tfiles, err := d.ReadDir(0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfor _, f := range files {\n\t\tif preserveFiles && !f.IsDir() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif prefix != \"\" && !strings.HasPrefix(f.Name(), prefix) {\n\t\t\tcontinue\n\t\t}\n\n\t\terr = os.RemoveAll(path.Join(dir, f.Name()))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (conf *ConfigType) ClearTmpDir() error {\n\treturn ClearDir(conf.TmpPath, false, \"\")\n}\n\nfunc (conf *ConfigType) GetProjectTmpDir(projectID int) string {\n\treturn path.Join(conf.TmpPath, fmt.Sprintf(\"project_%d\", projectID))\n}\n\nfunc (conf *ConfigType) ClearProjectTmpDir(projectID int) error {\n\treturn ClearDir(conf.GetProjectTmpDir(projectID), false, \"\")\n}\n\n// ToJSON returns a JSON string of the config\nfunc (conf *ConfigType) ToJSON() ([]byte, error) {\n\treturn json.MarshalIndent(&conf, \" \", \"\\t\")\n}\n\n// ConfigInit reads in cli flags, and switches actions appropriately on them\nfunc ConfigInit(configPath string, noConfigFile bool) (usedConfigPath *string) {\n\t//fmt.Println(\"Loading config\")\n\n\tConfig = NewConfigType()\n\tConfig.Apps = map[string]App{}\n\n\tif !noConfigFile {\n\t\tusedConfigPath = loadConfigFile(configPath)\n\t}\n\n\tloadConfigEnvironment()\n\tloadConfigDefaults()\n\n\t//fmt.Println(\"Validating config\")\n\tvalidateConfig()\n\n\tvar encryption []byte\n\n\thash, _ := base64.StdEncoding.DecodeString(Config.CookieHash)\n\tif len(Config.CookieEncryption) > 0 {\n\t\tencryption, _ = base64.StdEncoding.DecodeString(Config.CookieEncryption)\n\t}\n\n\tCookie = securecookie.New(hash, encryption)\n\n\tif Config.WebHost != \"\" {\n\t\tvar err error\n\t\tWebHostURL, err = url.Parse(Config.WebHost)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tif len(WebHostURL.String()) == 0 {\n\t\t\tWebHostURL = nil\n\t\t}\n\t} else {\n\t\tWebHostURL = nil\n\t}\n\n\tif Config.Runner != nil && Config.Runner.TokenFile != \"\" {\n\t\trunnerTokenBytes, err := os.ReadFile(Config.Runner.TokenFile)\n\t\tif err == nil {\n\t\t\tConfig.Runner.Token = strings.TrimSpace(string(runnerTokenBytes))\n\t\t}\n\t}\n\n\tif Config.SubscriptionKeyFile != \"\" {\n\t\tsubscriptionKeyBytes, err := os.ReadFile(Config.SubscriptionKeyFile)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tConfig.SubscriptionKey = strings.TrimSpace(string(subscriptionKeyBytes))\n\t}\n\n\treturn\n}\n\nfunc loadConfigFile(configPath string) (usedConfigPath *string) {\n\tif configPath == \"\" {\n\t\tconfigPath = os.Getenv(\"SEMAPHORE_CONFIG_PATH\")\n\t}\n\n\t// If the configPath option has been set try to load and decode it\n\t// var usedPath string\n\n\tif configPath == \"\" {\n\t\tcwd, err := os.Getwd()\n\t\texitOnConfigFileError(err)\n\t\tpaths := []string{\n\t\t\tpath.Join(cwd, \"config.json\"),\n\t\t\t\"/usr/local/etc/semaphore/config.json\",\n\t\t\t\"/etc/semaphore/config.json\",\n\t\t}\n\t\tfor _, p := range paths {\n\t\t\t_, err = os.Stat(p)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar file *os.File\n\t\t\tfile, err = os.Open(p)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tdecodeConfig(file)\n\t\t\tusedConfigPath = &p\n\t\t\tbreak\n\t\t}\n\t\texitOnConfigFileError(err)\n\t} else {\n\t\tp := configPath\n\t\tfile, err := os.Open(p)\n\t\texitOnConfigFileError(err)\n\t\tusedConfigPath = &p\n\t\tdecodeConfig(file)\n\t}\n\n\treturn\n}\n\nfunc loadDefaultsToObject(obj any) error {\n\tt := reflect.TypeOf(obj)\n\tv := reflect.ValueOf(obj)\n\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t\tv = reflect.Indirect(v)\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfieldInfo := t.Field(i)\n\t\tfieldValue := v.Field(i)\n\n\t\tif !fieldInfo.IsExported() {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldKind := fieldInfo.Type.Kind()\n\t\tisPtrToStruct := fieldKind == reflect.Ptr && fieldInfo.Type.Elem().Kind() == reflect.Struct\n\n\t\tif !fieldValue.IsZero() && fieldKind != reflect.Struct && fieldKind != reflect.Map && !isPtrToStruct {\n\t\t\tcontinue\n\t\t}\n\n\t\tif fieldKind == reflect.Struct {\n\t\t\terr := loadDefaultsToObject(fieldValue.Addr().Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if isPtrToStruct {\n\t\t\tif fieldValue.IsNil() {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\terr := loadDefaultsToObject(fieldValue.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if fieldKind == reflect.Map {\n\t\t\tfor _, key := range fieldValue.MapKeys() {\n\t\t\t\tval := fieldValue.MapIndex(key)\n\n\t\t\t\tif val.Type().Kind() != reflect.Struct {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tnewVal := reflect.New(val.Type())\n\t\t\t\tpointerValue := newVal.Elem()\n\t\t\t\tpointerValue.Set(val)\n\n\t\t\t\terr := loadDefaultsToObject(newVal.Interface())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tfieldValue.SetMapIndex(key, newVal.Elem())\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tdefaultVar := fieldInfo.Tag.Get(\"default\")\n\t\tif defaultVar == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tsetConfigValue(fieldValue, defaultVar) // defaultVar always string!!!\n\t}\n\n\treturn nil\n}\n\nfunc loadConfigDefaults() {\n\terr := loadDefaultsToObject(Config)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc castStringToInt(value string) int {\n\tvalueInt, err := strconv.Atoi(value)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn valueInt\n}\n\nfunc castStringToBool(value string) bool {\n\tvar valueBool bool\n\tif value == \"1\" || strings.ToLower(value) == \"true\" || strings.ToLower(value) == \"yes\" {\n\t\tvalueBool = true\n\t} else {\n\t\tvalueBool = false\n\t}\n\treturn valueBool\n}\n\nfunc AssignMapToStruct[P *S, S any](m map[string]any, s P) error {\n\tv := reflect.ValueOf(s).Elem()\n\treturn assignMapToStructRecursive(m, v)\n}\n\nfunc cloneStruct(origValue reflect.Value) reflect.Value {\n\t// Create a new instance of the same type as the original struct\n\tcloneValue := reflect.New(origValue.Type()).Elem()\n\n\t// Iterate over the fields of the struct\n\tfor i := 0; i < origValue.NumField(); i++ {\n\t\t// Get the field value\n\t\tfieldValue := origValue.Field(i)\n\t\t// Set the field value in the clone\n\t\tcloneValue.Field(i).Set(fieldValue)\n\t}\n\n\t// Return the cloned struct\n\treturn cloneValue\n}\n\nfunc assignMapToStructRecursive(m map[string]any, structValue reflect.Value) error {\n\tstructType := structValue.Type()\n\n\tfor i := 0; i < structType.NumField(); i++ {\n\t\tfield := structType.Field(i)\n\n\t\t// Skip fields with db:\"-\" tag\n\t\tdbTag := field.Tag.Get(\"db\")\n\t\tif dbTag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tjsonTag := field.Tag.Get(\"json\")\n\t\tif jsonTag == \"\" {\n\t\t\tjsonTag = field.Name\n\t\t} else {\n\t\t\tjsonTag = strings.Split(jsonTag, \",\")[0]\n\t\t}\n\n\t\tif value, ok := m[jsonTag]; ok {\n\t\t\tfieldValue := structValue.FieldByName(field.Name)\n\t\t\tif fieldValue.CanSet() {\n\n\t\t\t\tval := reflect.ValueOf(value)\n\n\t\t\t\tswitch fieldValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\n\t\t\t\t\tif val.Kind() != reflect.Map {\n\t\t\t\t\t\treturn fmt.Errorf(\"expected map for nested struct field %s but got %T\", field.Name, value)\n\t\t\t\t\t}\n\n\t\t\t\t\tmapValue, ok := value.(map[string]any)\n\t\t\t\t\tif !ok {\n\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign value of type %T to field %s of type %s\", value, field.Name, field.Type)\n\t\t\t\t\t}\n\t\t\t\t\terr := assignMapToStructRecursive(mapValue, fieldValue)\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Slice:\n\t\t\t\t\t// Handle slice assignment\n\t\t\t\t\tfieldElemType := fieldValue.Type().Elem()\n\t\t\t\t\tvar sourceSlice reflect.Value\n\t\t\t\t\tif val.Kind() == reflect.Slice || val.Kind() == reflect.Array {\n\t\t\t\t\t\tsourceSlice = val\n\t\t\t\t\t} else if val.Kind() == reflect.String {\n\t\t\t\t\t\t// Try to parse JSON array from string\n\t\t\t\t\t\tstr := val.String()\n\t\t\t\t\t\t// First, try to unmarshal into []any\n\t\t\t\t\t\tvar anyArr []any\n\t\t\t\t\t\tif err := json.Unmarshal([]byte(str), &anyArr); err == nil {\n\t\t\t\t\t\t\tsourceSlice = reflect.ValueOf(anyArr)\n\t\t\t\t\t\t} else if fieldElemType.Kind() == reflect.String {\n\t\t\t\t\t\t\t// Fallback: treat as single element string\n\t\t\t\t\t\t\tsourceSlice = reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf(\"\")), 1, 1)\n\t\t\t\t\t\t\tsourceSlice.Index(0).SetString(str)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"expected slice or json array string for field %s but got %T\", field.Name, value)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn fmt.Errorf(\"expected slice for field %s but got %T\", field.Name, value)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Build destination slice\n\t\t\t\t\tnewSlice := reflect.MakeSlice(fieldValue.Type(), 0, sourceSlice.Len())\n\t\t\t\t\tfor i := 0; i < sourceSlice.Len(); i++ {\n\t\t\t\t\t\tsrcElemVal := sourceSlice.Index(i)\n\t\t\t\t\t\t// When source is []any, elements come as interface{}, unwrap reflect.Value\n\t\t\t\t\t\tif srcElemVal.Kind() == reflect.Interface && !srcElemVal.IsNil() {\n\t\t\t\t\t\t\tsrcElemVal = reflect.ValueOf(srcElemVal.Interface())\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar dstElem reflect.Value\n\t\t\t\t\t\t// Prepare destination element\n\t\t\t\t\t\tif fieldElemType.Kind() == reflect.Struct {\n\t\t\t\t\t\t\tdstElem = reflect.New(fieldElemType).Elem()\n\t\t\t\t\t\t\tif srcElemVal.Kind() == reflect.Map {\n\t\t\t\t\t\t\t\t// Expect map[string]any\n\t\t\t\t\t\t\t\tmIface, ok := srcElemVal.Interface().(map[string]any)\n\t\t\t\t\t\t\t\tif !ok {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign element of type %T to slice element of type %s\", srcElemVal.Interface(), fieldElemType)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif err := assignMapToStructRecursive(mIface, dstElem); err != nil {\n\t\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if srcElemVal.Type().ConvertibleTo(fieldElemType) {\n\t\t\t\t\t\t\t\tdstElem = srcElemVal.Convert(fieldElemType)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign element of type %s to slice element of type %s\", srcElemVal.Type(), fieldElemType)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Primitive or other kinds\n\t\t\t\t\t\t\tif srcElemVal.Type().ConvertibleTo(fieldElemType) {\n\t\t\t\t\t\t\t\tdstElem = srcElemVal.Convert(fieldElemType)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewVal, converted := CastValueToKind(srcElemVal.Interface(), fieldElemType.Kind())\n\t\t\t\t\t\t\t\tif !converted {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign element of type %s to slice element of type %s\", srcElemVal.Type(), fieldElemType)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdstElem = reflect.ValueOf(newVal)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewSlice = reflect.Append(newSlice, dstElem)\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldValue.Set(newSlice)\n\t\t\t\tcase reflect.Map:\n\t\t\t\t\tif fieldValue.IsNil() {\n\t\t\t\t\t\tmapValue := reflect.MakeMap(fieldValue.Type())\n\t\t\t\t\t\tfieldValue.Set(mapValue)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle map\n\t\t\t\t\tif val.Kind() != reflect.Map {\n\t\t\t\t\t\treturn fmt.Errorf(\"expected map for field %s but got %T\", field.Name, value)\n\t\t\t\t\t}\n\n\t\t\t\t\tfor _, key := range val.MapKeys() {\n\t\t\t\t\t\tmapElemValue := val.MapIndex(key)\n\t\t\t\t\t\tmapElemType := fieldValue.Type().Elem()\n\n\t\t\t\t\t\tsrcVal := fieldValue.MapIndex(key)\n\t\t\t\t\t\tvar mapElem reflect.Value\n\t\t\t\t\t\tif srcVal.IsValid() {\n\t\t\t\t\t\t\tmapElem = cloneStruct(srcVal)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmapElem = reflect.New(mapElemType).Elem()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif mapElemType.Kind() == reflect.Struct {\n\t\t\t\t\t\t\tif err := assignMapToStructRecursive(mapElemValue.Interface().(map[string]any), mapElem); err != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif mapElemValue.Type().ConvertibleTo(mapElemType) {\n\t\t\t\t\t\t\t\tmapElem.Set(mapElemValue.Convert(mapElemType))\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewVal, converted := CastValueToKind(mapElemValue.Interface(), mapElemType.Kind())\n\t\t\t\t\t\t\t\tif !converted {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign value of type %s to map element of type %s\",\n\t\t\t\t\t\t\t\t\t\tmapElemValue.Type(), mapElemType)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tmapElem.Set(reflect.ValueOf(newVal))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfieldValue.SetMapIndex(key, mapElem)\n\t\t\t\t\t}\n\n\t\t\t\tdefault:\n\t\t\t\t\t// Handle simple types\n\t\t\t\t\tif val.Type().ConvertibleTo(fieldValue.Type()) {\n\t\t\t\t\t\tfieldValue.Set(val.Convert(fieldValue.Type()))\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tnewVal, converted := CastValueToKind(val.Interface(), fieldValue.Type().Kind())\n\t\t\t\t\t\tif !converted {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"cannot assign value of type %s to map element of type %s\",\n\t\t\t\t\t\t\t\tval.Type(), val)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfieldValue.Set(reflect.ValueOf(newVal))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc CastValueToKind(value any, kind reflect.Kind) (res any, ok bool) {\n\tres = value\n\n\tswitch kind {\n\tcase reflect.String:\n\t\t// strings are always acceptable as-is, or will be coerced upstream\n\t\tok = true\n\tcase reflect.Int:\n\t\tif reflect.ValueOf(value).Kind() == reflect.Int {\n\t\t\tok = true\n\t\t} else {\n\t\t\tres = castStringToInt(fmt.Sprintf(\"%v\", reflect.ValueOf(value)))\n\t\t\tok = true\n\t\t}\n\tcase reflect.Bool:\n\t\tif reflect.ValueOf(value).Kind() == reflect.Bool {\n\t\t\tok = true\n\t\t} else {\n\t\t\tres = castStringToBool(fmt.Sprintf(\"%v\", reflect.ValueOf(value)))\n\t\t\tok = true\n\t\t}\n\tdefault:\n\t}\n\n\treturn\n}\n\nfunc setConfigValue(attribute reflect.Value, value string) {\n\tif attribute.IsValid() {\n\t\tkind := attribute.Kind()\n\n\t\tswitch kind {\n\t\tcase reflect.Slice:\n\t\t\tvar arr []string\n\t\t\terr := json.Unmarshal([]byte(value), &arr)\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tattribute.Set(reflect.ValueOf(arr))\n\t\tcase reflect.Map:\n\t\t\tmapType := attribute.Type()\n\t\t\tmapValue := reflect.New(mapType)\n\t\t\terr := json.Unmarshal([]byte(value), mapValue.Interface())\n\t\t\tif err != nil {\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t\tattribute.Set(mapValue.Elem())\n\t\tdefault:\n\t\t\tnewValue, _ := CastValueToKind(value, kind)\n\t\t\tconvertedValue := reflect.ValueOf(newValue)\n\t\t\tif convertedValue.Type().AssignableTo(attribute.Type()) {\n\t\t\t\tattribute.Set(convertedValue)\n\t\t\t} else if convertedValue.Type().ConvertibleTo(attribute.Type()) {\n\t\t\t\tattribute.Set(convertedValue.Convert(attribute.Type()))\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Errorf(\"cannot assign value of type %s to field of type %s\", convertedValue.Type(), attribute.Type()))\n\t\t\t}\n\t\t}\n\n\t} else {\n\t\tpanic(fmt.Errorf(\"got non-existent config attribute\"))\n\t}\n}\n\nfunc getConfigValue(path string) string {\n\tattribute := reflect.ValueOf(Config)\n\tnested_path := strings.Split(path, \".\")\n\n\tfor i, nested := range nested_path {\n\t\tattribute = reflect.Indirect(attribute).FieldByName(nested)\n\t\tlastDepth := len(nested_path) == i+1\n\t\tif !lastDepth && attribute.Kind() != reflect.Struct && attribute.Kind() != reflect.Pointer ||\n\t\t\tlastDepth && attribute.Kind() == reflect.Invalid {\n\t\t\tpanic(fmt.Errorf(\"got non-existent config attribute '%v'\", path))\n\t\t}\n\t}\n\n\treturn fmt.Sprintf(\"%v\", attribute)\n}\n\nfunc validate(value any) error {\n\tt := reflect.TypeOf(value)\n\tv := reflect.ValueOf(value)\n\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t\tv = reflect.Indirect(v)\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfieldType := t.Field(i)\n\t\tfieldValue := v.Field(i)\n\n\t\trule := fieldType.Tag.Get(\"rule\")\n\t\tif rule == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar strVal string\n\n\t\tif fieldType.Type.Kind() == reflect.Int {\n\t\t\tstrVal = strconv.FormatInt(fieldValue.Int(), 10)\n\t\t} else if fieldType.Type.Kind() == reflect.Uint {\n\t\t\tstrVal = strconv.FormatUint(fieldValue.Uint(), 10)\n\t\t} else {\n\t\t\tstrVal = fieldValue.String()\n\t\t}\n\n\t\tmatch, _ := regexp.MatchString(rule, strVal)\n\n\t\tif match {\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldName := strings.ToLower(fieldType.Name)\n\n\t\tif strings.Contains(fieldName, \"password\") || strings.Contains(fieldName, \"secret\") || strings.Contains(fieldName, \"key\") {\n\t\t\tstrVal = \"***\"\n\t\t}\n\n\t\treturn fmt.Errorf(\n\t\t\t\"value of field '%v' is not valid: %v (Must match regex: '%v')\",\n\t\t\tfieldType.Name, strVal, rule,\n\t\t)\n\t}\n\n\treturn nil\n}\n\nfunc validateConfig() {\n\terr := validate(Config)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc loadEnvironmentToObject(obj any) error {\n\tt := reflect.TypeOf(obj)\n\tv := reflect.ValueOf(obj)\n\n\tif t.Kind() == reflect.Ptr {\n\t\tt = t.Elem()\n\t\tv = reflect.Indirect(v)\n\t}\n\n\tfor i := 0; i < t.NumField(); i++ {\n\t\tfieldType := t.Field(i)\n\t\tfieldValue := v.Field(i)\n\n\t\tif !fieldType.IsExported() {\n\t\t\tcontinue\n\t\t}\n\n\t\tif fieldType.Type.Kind() == reflect.Struct {\n\t\t\terr := loadEnvironmentToObject(fieldValue.Addr().Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t} else if fieldType.Type.Kind() == reflect.Ptr && fieldType.Type.Elem().Kind() == reflect.Struct {\n\t\t\tif fieldValue.IsZero() {\n\t\t\t\tnewValue := reflect.New(fieldType.Type.Elem())\n\t\t\t\tfieldValue.Set(newValue)\n\t\t\t}\n\n\t\t\tenvVar := fieldType.Tag.Get(\"env\")\n\t\t\tif envVar != \"\" {\n\t\t\t\tif envValue, exists := os.LookupEnv(envVar); exists {\n\t\t\t\t\tnewValue := reflect.New(fieldType.Type.Elem())\n\t\t\t\t\terr := json.Unmarshal([]byte(envValue), newValue.Interface())\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t\tfieldValue.Set(newValue)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\terr := loadEnvironmentToObject(fieldValue.Interface())\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tenvVar := fieldType.Tag.Get(\"env\")\n\t\tif envVar == \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tenvValue, exists := os.LookupEnv(envVar)\n\n\t\tif !exists {\n\t\t\tcontinue\n\t\t}\n\n\t\tsetConfigValue(fieldValue, envValue) // envValue always string!!!\n\t}\n\n\treturn nil\n}\n\nfunc loadConfigEnvironment() {\n\terr := loadEnvironmentToObject(Config)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc exitOnConfigError(msg string) {\n\tfmt.Println(msg)\n\tos.Exit(1)\n}\n\nfunc exitOnConfigFileError(err error) {\n\tif err != nil {\n\t\texitOnConfigError(\"Cannot Find configuration! Use --config parameter to point to a JSON file generated by `semaphore setup`.\")\n\t}\n}\n\nfunc decodeConfig(file io.Reader) {\n\tif err := json.NewDecoder(file).Decode(&Config); err != nil {\n\t\tfmt.Println(\"Could not decode configuration!\")\n\t\tpanic(err)\n\t}\n}\n\nfunc mapToQueryString(m map[string]string) (str string) {\n\tfor option, value := range m {\n\t\tif str != \"\" {\n\t\t\tstr += \"&\"\n\t\t}\n\t\tstr += option + \"=\" + value\n\t}\n\tif str != \"\" {\n\t\tstr = \"?\" + str\n\t}\n\treturn\n}\n\n// FindSemaphore looks in the PATH for the semaphore variable\n// if not found it will attempt to find the absolute path of the first\n// os argument, the semaphore command, and return it\nfunc FindSemaphore() string {\n\tcmdPath, _ := exec.LookPath(\"semaphore\") //nolint: gas\n\n\tif len(cmdPath) == 0 {\n\t\tcmdPath, _ = filepath.Abs(os.Args[0]) // nolint: gas\n\t}\n\n\treturn cmdPath\n}\n\nfunc AnsibleVersion() string {\n\tbytes, err := exec.Command(\"ansible\", \"--version\").Output()\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn string(bytes)\n}\n\n// CheckUpdate uses the GitHub client to check for new tags in the semaphore repo\nfunc CheckUpdate() (updateAvailable *github.RepositoryRelease, err error) {\n\t// fetch releases\n\tgh := github.NewClient(nil)\n\treleases, _, err := gh.Repositories.ListReleases(context.TODO(), \"semaphoreui\", \"semaphore\", nil)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tupdateAvailable = nil\n\tif (*releases[0].TagName)[1:] != Version() {\n\t\tupdateAvailable = releases[0]\n\t}\n\n\treturn\n}\n\nfunc (d *DbConfig) IsPresent() bool {\n\treturn d.GetHostname() != \"\"\n}\n\nfunc (d *DbConfig) HasSupportMultipleDatabases() bool {\n\treturn true\n}\n\nfunc (d *DbConfig) GetDbName() string {\n\tdbName := os.Getenv(\"SEMAPHORE_DB_NAME\")\n\tif dbName != \"\" {\n\t\treturn dbName\n\t}\n\treturn d.DbName\n}\n\nfunc (d *DbConfig) GetUsername() string {\n\tusername := os.Getenv(\"SEMAPHORE_DB_USER\")\n\tif username != \"\" {\n\t\treturn username\n\t}\n\treturn d.Username\n}\n\nfunc (d *DbConfig) GetPassword() string {\n\tpassword := os.Getenv(\"SEMAPHORE_DB_PASS\")\n\tif password != \"\" {\n\t\treturn password\n\t}\n\treturn d.Password\n}\n\nfunc (d *DbConfig) GetHostname() string {\n\thostname := os.Getenv(\"SEMAPHORE_DB_HOST\")\n\tif hostname != \"\" {\n\t\treturn hostname\n\t}\n\treturn d.Hostname\n}\n\n// GetConnectionString constructs the database connection string based on the current configuration.\n// It supports MySQL, BoltDB, and PostgreSQL dialects.\n// If the dialect is unsupported, it returns an error.\n//\n// Parameters:\n// - includeDbName: a boolean indicating whether to include the database name in the connection string.\n//\n// Returns:\n// - connectionString: the constructed database connection string.\n// - err: an error if the dialect is unsupported.\nfunc (d *DbConfig) GetConnectionString(includeDbName bool) (connectionString string, err error) {\n\tdbName := d.GetDbName()\n\tdbUser := d.GetUsername()\n\tdbPass := d.GetPassword()\n\tdbHost := d.GetHostname()\n\n\tswitch d.Dialect {\n\tcase DbDriverBolt:\n\t\tconnectionString = dbHost\n\tcase DbDriverMySQL:\n\t\tif includeDbName {\n\t\t\tconnectionString = fmt.Sprintf(\n\t\t\t\t\"%s:%s@tcp(%s)/%s\",\n\t\t\t\tdbUser,\n\t\t\t\tdbPass,\n\t\t\t\tdbHost,\n\t\t\t\tdbName)\n\t\t} else {\n\t\t\tconnectionString = fmt.Sprintf(\n\t\t\t\t\"%s:%s@tcp(%s)/\",\n\t\t\t\tdbUser,\n\t\t\t\tdbPass,\n\t\t\t\tdbHost)\n\t\t}\n\t\toptions := map[string]string{\n\t\t\t\"parseTime\":         \"true\",\n\t\t\t\"interpolateParams\": \"true\",\n\t\t}\n\t\tfor v, k := range d.Options {\n\t\t\toptions[v] = k\n\t\t}\n\t\tconnectionString += mapToQueryString(options)\n\tcase DbDriverPostgres:\n\t\tif includeDbName {\n\t\t\tconnectionString = fmt.Sprintf(\n\t\t\t\t\"postgres://%s:%s@%s/%s\",\n\t\t\t\tdbUser,\n\t\t\t\turl.QueryEscape(dbPass),\n\t\t\t\tdbHost,\n\t\t\t\tdbName)\n\t\t} else {\n\t\t\tconnectionString = fmt.Sprintf(\n\t\t\t\t\"postgres://%s:%s@%s/postgres\",\n\t\t\t\tdbUser,\n\t\t\t\turl.QueryEscape(dbPass),\n\t\t\t\tdbHost)\n\t\t}\n\t\tconnectionString += mapToQueryString(d.Options)\n\tcase DbDriverSQLite:\n\t\tconnectionString = \"file:\" + dbHost\n\t\tconnectionString += mapToQueryString(d.Options)\n\tdefault:\n\t\terr = fmt.Errorf(\"unsupported database driver: %s\", d.Dialect)\n\t}\n\treturn\n}\n\n// PrintDbInfo prints the database connection information based on the current configuration.\n// It retrieves the database dialect and prints the corresponding connection details.\n// If the dialect is not found, it panics with an error message.\nfunc (conf *ConfigType) PrintDbInfo() {\n\t// Get the database dialect\n\tdialect, err := conf.GetDialect()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\t// Print database connection information based on the dialect\n\tswitch dialect {\n\tcase DbDriverMySQL:\n\t\tfmt.Printf(\"MySQL %v@%v %v\\n\", conf.MySQL.GetUsername(), conf.MySQL.GetHostname(), conf.MySQL.GetDbName())\n\tcase DbDriverBolt:\n\t\tfmt.Printf(\"BoltDB %v\\n\", conf.BoltDb.GetHostname())\n\tcase DbDriverPostgres:\n\t\tfmt.Printf(\"Postgres %v@%v %v\\n\", conf.Postgres.GetUsername(), conf.Postgres.GetHostname(), conf.Postgres.GetDbName())\n\tcase DbDriverSQLite:\n\t\tfmt.Printf(\"SQLite %v@%v %v\\n\", conf.SQLite.GetUsername(), conf.SQLite.GetHostname(), conf.SQLite.GetDbName())\n\tdefault:\n\t\tpanic(fmt.Errorf(\"database configuration not found\"))\n\t}\n}\n\nfunc (conf *ConfigType) GetDialect() (dialect string, err error) {\n\tif conf.Dialect == \"\" {\n\t\tswitch {\n\t\tcase conf.MySQL.IsPresent():\n\t\t\tdialect = DbDriverMySQL\n\t\tcase conf.BoltDb.IsPresent():\n\t\t\tdialect = DbDriverBolt\n\t\tcase conf.Postgres.IsPresent():\n\t\t\tdialect = DbDriverPostgres\n\t\tcase conf.SQLite.IsPresent():\n\t\t\tdialect = DbDriverSQLite\n\t\tdefault:\n\t\t\terr = errors.New(\"database configuration not found\")\n\t\t}\n\t\treturn\n\t}\n\n\tdialect = conf.Dialect\n\treturn\n}\n\nfunc (conf *ConfigType) GetDBConfig() (dbConfig DbConfig, err error) {\n\tvar dialect string\n\tdialect, err = conf.GetDialect()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tswitch dialect {\n\tcase DbDriverBolt:\n\t\tdbConfig = *conf.BoltDb\n\tcase DbDriverPostgres:\n\t\tdbConfig = *conf.Postgres\n\tcase DbDriverSQLite:\n\t\tdbConfig = *conf.SQLite\n\tcase DbDriverMySQL:\n\t\tdbConfig = *conf.MySQL\n\tdefault:\n\t\terr = errors.New(\"database configuration not found\")\n\t}\n\n\tdbConfig.Dialect = dialect\n\n\treturn\n}\n\n// GenerateSecrets generates cookie secret during setup\nfunc (conf *ConfigType) GenerateSecrets() {\n\thash := securecookie.GenerateRandomKey(32)\n\tencryption := securecookie.GenerateRandomKey(32)\n\taccessKeyEncryption := securecookie.GenerateRandomKey(32)\n\n\tconf.CookieHash = base64.StdEncoding.EncodeToString(hash)\n\tconf.CookieEncryption = base64.StdEncoding.EncodeToString(encryption)\n\tconf.AccessKeyEncryption = base64.StdEncoding.EncodeToString(accessKeyEncryption)\n}\n\nvar appCommands = map[string]string{\n\t\"ansible\":    \"ansible-playbook\",\n\t\"terraform\":  \"terraform\",\n\t\"tofu\":       \"tofu\",\n\t\"terragrunt\": \"terragrunt\",\n\t\"bash\":       \"bash\",\n}\n\nvar appPriorities = map[string]int{\n\t\"ansible\":    1000,\n\t\"terraform\":  900,\n\t\"tofu\":       800,\n\t\"terragrunt\": 850,\n\t\"bash\":       700,\n\t\"powershell\": 600,\n\t\"python\":     500,\n}\n\nfunc LookupDefaultApps() {\n\tfor appID, cmd := range appCommands {\n\t\tif _, ok := Config.Apps[appID]; ok {\n\t\t\tcontinue\n\t\t}\n\n\t\t_, err := exec.LookPath(cmd)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif Config.Apps == nil {\n\t\t\tConfig.Apps = make(map[string]App)\n\t\t}\n\n\t\tConfig.Apps[appID] = App{\n\t\t\tActive: true,\n\t\t}\n\t}\n\n\tfor k, v := range appPriorities {\n\t\tapp := Config.Apps[k]\n\t\tif app.Priority <= 0 {\n\t\t\tapp.Priority = v\n\t\t}\n\t\tConfig.Apps[k] = app\n\t}\n}\n\nfunc GetPublicHost() string {\n\taliasURL := Config.WebHost\n\tport := Config.Port\n\tif port == \"\" {\n\t\tport = \"3000\"\n\t}\n\n\tif strings.HasPrefix(port, \":\") {\n\t\tport = port[1:]\n\t}\n\n\tif aliasURL == \"\" {\n\t\taliasURL = \"http://localhost:\" + port\n\t}\n\n\treturn aliasURL\n}\n\nfunc GetPublicAliasURL(scope string, alias string) string {\n\taliasURL := GetPublicHost()\n\n\tif !strings.HasSuffix(aliasURL, \"/\") {\n\t\taliasURL += \"/\"\n\t}\n\n\taliasURL += \"api/\" + scope + \"/\" + alias\n\n\treturn aliasURL\n}\n\nfunc GenerateRecoveryCode() (code string, hash string, err error) {\n\tbuf := make([]byte, 10)\n\t_, err = io.ReadFull(rand.Reader, buf)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tcode = base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(buf)\n\n\thashBytes, err := bcrypt.GenerateFromPassword([]byte(code), bcrypt.DefaultCost)\n\tif err != nil {\n\t\treturn\n\t}\n\n\thash = string(hashBytes)\n\treturn\n}\n\nfunc VerifyRecoveryCode(inputCode, storedHash string) bool {\n\terr := bcrypt.CompareHashAndPassword([]byte(storedHash), []byte(inputCode))\n\treturn err == nil\n}\n"
  },
  {
    "path": "util/config_assign_test.go",
    "content": "package util\n\nimport (\n    \"encoding/json\"\n    \"reflect\"\n    \"testing\"\n)\n\n\nfunc TestAssignMapToStruct_SlicesAndConversions(t *testing.T) {\n    type Item struct {\n        K string `json:\"k\"`\n        V int    `json:\"v\"`\n    }\n\n    type Sample struct {\n        Names    []string        `json:\"names\"`\n        Numbers  []int           `json:\"numbers\"`\n        Objects  []Item          `json:\"objects\"`\n        Enabled  bool            `json:\"enabled\"`\n        Count    int             `json:\"count\"`\n        Settings map[string]Item `json:\"settings\"`\n    }\n\n    t.Run(\"primitive slice from json string and fallback single string\", func(t *testing.T) {\n        var s Sample\n        m := map[string]any{\n            \"names\": \"[\\\"a\\\",\\\"b\\\"]\",\n        }\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if !reflect.DeepEqual(s.Names, []string{\"a\", \"b\"}) {\n            t.Fatalf(\"names mismatch: %+v\", s.Names)\n        }\n\n        // fallback: non-JSON string becomes single element when elem type is string\n        s = Sample{}\n        m = map[string]any{\"names\": \"hello\"}\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if !reflect.DeepEqual(s.Names, []string{\"hello\"}) {\n            t.Fatalf(\"names fallback mismatch: %+v\", s.Names)\n        }\n    })\n\n    t.Run(\"int slice with mixed string/int and coercion\", func(t *testing.T) {\n        var s Sample\n        // input as a real slice ([]any) with mixed types\n        src := []any{\"1\", 2, \"3\"}\n        m := map[string]any{\"numbers\": src}\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if !reflect.DeepEqual(s.Numbers, []int{1, 2, 3}) {\n            t.Fatalf(\"numbers mismatch: %+v\", s.Numbers)\n        }\n\n        // input as JSON string\n        s = Sample{}\n        jsonStr := \"[\\\"4\\\",5,\\\"6\\\"]\"\n        m = map[string]any{\"numbers\": jsonStr}\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if !reflect.DeepEqual(s.Numbers, []int{4, 5, 6}) {\n            t.Fatalf(\"numbers from json mismatch: %+v\", s.Numbers)\n        }\n    })\n\n    t.Run(\"slice of structs from []map and JSON string of maps\", func(t *testing.T) {\n        var s Sample\n        objs := []any{\n            map[string]any{\"k\": \"a\", \"v\": 1},\n            map[string]any{\"k\": \"b\", \"v\": \"2\"}, // v as string, should coerce to int\n        }\n        m := map[string]any{\"objects\": objs}\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if len(s.Objects) != 2 || s.Objects[0].K != \"a\" || s.Objects[0].V != 1 || s.Objects[1].K != \"b\" || s.Objects[1].V != 2 {\n            t.Fatalf(\"objects mismatch: %+v\", s.Objects)\n        }\n\n        // JSON string input\n        s = Sample{}\n        arr := []map[string]any{{\"k\": \"x\", \"v\": 7}, {\"k\": \"y\", \"v\": 8}}\n        b, _ := json.Marshal(arr)\n        m = map[string]any{\"objects\": string(b)}\n        if err := AssignMapToStruct(m, &s); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if len(s.Objects) != 2 || s.Objects[0].K != \"x\" || s.Objects[0].V != 7 || s.Objects[1].K != \"y\" || s.Objects[1].V != 8 {\n            t.Fatalf(\"objects from json mismatch: %+v\", s.Objects)\n        }\n    })\n\n    t.Run(\"map update preserves existing nested struct fields\", func(t *testing.T) {\n        type Detail struct{\n            Value       string `json:\"value\"`\n            Description string `json:\"description\"`\n        }\n        type Holder struct{ Details map[string]Detail `json:\"details\"` }\n        h := Holder{Details: map[string]Detail{\n            \"interests\": {Value: \"politics\", Description: \"Follows current events\"},\n        }}\n        m := map[string]any{\"details\": map[string]any{\n            \"interests\": map[string]any{\"description\": \"Ho ho ho\"},\n        }}\n        if err := AssignMapToStruct(m, &h); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if h.Details[\"interests\"].Value != \"politics\" || h.Details[\"interests\"].Description != \"Ho ho ho\" {\n            t.Fatalf(\"map preservation failed: %+v\", h.Details[\"interests\"])\n        }\n    })\n\n    t.Run(\"primitive field conversions string->int and string->bool\", func(t *testing.T) {\n        type Conv struct {\n            I int  `json:\"i\"`\n            B bool `json:\"b\"`\n        }\n        var c Conv\n        m := map[string]any{\"i\": \"42\", \"b\": \"true\"}\n        if err := AssignMapToStruct(m, &c); err != nil {\n            t.Fatalf(\"unexpected error: %v\", err)\n        }\n        if c.I != 42 || c.B != true {\n            t.Fatalf(\"conversions mismatch: %+v\", c)\n        }\n    })\n\n    t.Run(\"error cases: wrong types for struct and slices\", func(t *testing.T) {\n        // wrong nested struct source\n        type Nested struct{ A struct{ X int } `json:\"a\"` }\n        var n Nested\n        if err := AssignMapToStruct(map[string]any{\"a\": 123}, &n); err == nil {\n            t.Fatalf(\"expected error for non-map nested struct input\")\n        }\n\n        // wrong slice: non-JSON string for []int should error\n        type S struct{ N []int `json:\"n\"` }\n        var s S\n        if err := AssignMapToStruct(map[string]any{\"n\": \"not-json\"}, &s); err == nil {\n            t.Fatalf(\"expected error for non-JSON string to []int\")\n        }\n    })\n}\n\nfunc TestAssignMapToStruct_MapPrimitiveConversions(t *testing.T) {\n    type C struct{\n        M map[string]int `json:\"m\"`\n    }\n    var c C\n    m := map[string]any{\"m\": map[string]any{\"a\": \"1\", \"b\": 2}}\n    if err := AssignMapToStruct(m, &c); err != nil {\n        t.Fatalf(\"unexpected error: %v\", err)\n    }\n    if len(c.M) != 2 || c.M[\"a\"] != 1 || c.M[\"b\"] != 2 {\n        t.Fatalf(\"map primitive conversions mismatch: %+v\", c.M)\n    }\n}\n\nfunc TestAssignMapToStruct_SkipsDbMinusTag(t *testing.T) {\n\ttype Sample struct {\n\t\tName     string `json:\"name\"`\n\t\tPassword string `json:\"password\" db:\"-\"`\n\t\tAge      int    `json:\"age\"`\n\t\tSecret   string `json:\"secret\" db:\"-\"`\n\t}\n\n\tt.Run(\"fields with db:- tag should not be assigned\", func(t *testing.T) {\n\t\ts := Sample{\n\t\t\tName:     \"original\",\n\t\t\tPassword: \"original_password\",\n\t\t\tAge:      25,\n\t\t\tSecret:   \"original_secret\",\n\t\t}\n\n\t\tm := map[string]any{\n\t\t\t\"name\":     \"updated\",\n\t\t\t\"password\": \"new_password\",\n\t\t\t\"age\":      30,\n\t\t\t\"secret\":   \"new_secret\",\n\t\t}\n\n\t\tif err := AssignMapToStruct(m, &s); err != nil {\n\t\t\tt.Fatalf(\"unexpected error: %v\", err)\n\t\t}\n\n\t\t// Fields without db:\"-\" should be updated\n\t\tif s.Name != \"updated\" {\n\t\t\tt.Errorf(\"expected Name to be 'updated', got '%s'\", s.Name)\n\t\t}\n\t\tif s.Age != 30 {\n\t\t\tt.Errorf(\"expected Age to be 30, got %d\", s.Age)\n\t\t}\n\n\t\t// Fields with db:\"-\" should retain original values\n\t\tif s.Password != \"original_password\" {\n\t\t\tt.Errorf(\"expected Password to remain 'original_password', got '%s'\", s.Password)\n\t\t}\n\t\tif s.Secret != \"original_secret\" {\n\t\t\tt.Errorf(\"expected Secret to remain 'original_secret', got '%s'\", s.Secret)\n\t\t}\n\t})\n\n\tt.Run(\"nested struct with db:- tag fields\", func(t *testing.T) {\n\t\ttype Inner struct {\n\t\t\tPublic  string `json:\"public\"`\n\t\t\tPrivate string `json:\"private\" db:\"-\"`\n\t\t}\n\t\ttype Outer struct {\n\t\t\tInner Inner `json:\"inner\"`\n\t\t}\n\n\t\to := Outer{\n\t\t\tInner: Inner{\n\t\t\t\tPublic:  \"original_public\",\n\t\t\t\tPrivate: \"original_private\",\n\t\t\t},\n\t\t}\n\n\t\tm := map[string]any{\n\t\t\t\"inner\": map[string]any{\n\t\t\t\t\"public\":  \"updated_public\",\n\t\t\t\t\"private\": \"updated_private\",\n\t\t\t},\n\t\t}\n\n\t\tif err := AssignMapToStruct(m, &o); err != nil {\n\t\t\tt.Fatalf(\"unexpected error: %v\", err)\n\t\t}\n\n\t\tif o.Inner.Public != \"updated_public\" {\n\t\t\tt.Errorf(\"expected Inner.Public to be 'updated_public', got '%s'\", o.Inner.Public)\n\t\t}\n\t\tif o.Inner.Private != \"original_private\" {\n\t\t\tt.Errorf(\"expected Inner.Private to remain 'original_private', got '%s'\", o.Inner.Private)\n\t\t}\n\t})\n}\n\nfunc TestSetConfigValue_SliceAndMap(t *testing.T) {\n    // This ensures setConfigValue (used by defaults/env) is compatible with slice/map JSON\n    type X struct {\n        Arr []string\n        Mp  map[string]int\n        I   int\n    }\n    var x X\n    // slice\n    setConfigValue(reflect.ValueOf(&x).Elem().FieldByName(\"Arr\"), \"[\\\"a\\\",\\\"b\\\"]\")\n    if !reflect.DeepEqual(x.Arr, []string{\"a\", \"b\"}) {\n        t.Fatalf(\"setConfigValue slice mismatch: %+v\", x.Arr)\n    }\n    // map\n    setConfigValue(reflect.ValueOf(&x).Elem().FieldByName(\"Mp\"), \"{\\\"a\\\":1}\")\n    if x.Mp[\"a\"] != 1 {\n        t.Fatalf(\"setConfigValue map mismatch: %+v\", x.Mp)\n    }\n    // primitive\n    setConfigValue(reflect.ValueOf(&x).Elem().FieldByName(\"I\"), \"123\")\n    if x.I != 123 {\n        t.Fatalf(\"setConfigValue primitive mismatch: %+v\", x.I)\n    }\n}\n"
  },
  {
    "path": "util/config_auth.go",
    "content": "package util\n\ntype RecaptchaConfig struct {\n\tEnabled string `json:\"enabled,omitempty\" env:\"SEMAPHORE_RECAPTCHA_ENABLED\"`\n\tSiteKey string `json:\"site_key,omitempty\" env:\"SEMAPHORE_RECAPTCHA_SITE_KEY\"`\n}\n\ntype EmailAuthConfig struct {\n\tEnabled                  bool     `json:\"enabled\" env:\"SEMAPHORE_EMAIL_2TP_ENABLED\"`\n\tAllowLoginAsExternalUser bool     `json:\"allow_login_as_external_user\" env:\"SEMAPHORE_EMAIL_2TP_ALLOW_LOGIN_AS_EXTERNAL_USER\"`\n\tAllowCreateExternalUsers bool     `json:\"allow_create_external_user\" env:\"SEMAPHORE_EMAIL_2TP_ALLOW_CREATE_EXTERNAL_USER\"`\n\tAllowedDomains           []string `json:\"allowed_domains\" env:\"SEMAPHORE_EMAIL_2TP_ALLOWED_DOMAINS\"`\n\tDisableForOidc           bool     `json:\"disable_for_oidc\" env:\"SEMAPHORE_EMAIL_2TP_DISABLE_FOR_OIDC\"`\n}\n\ntype AuthConfig struct {\n\tTotp  *TotpConfig      `json:\"totp,omitempty\"`\n\tEmail *EmailAuthConfig `json:\"email,omitempty\"`\n}\n"
  },
  {
    "path": "util/config_sysproc.go",
    "content": "//go:build !windows\n\npackage util\n\nimport (\n\t\"os/user\"\n\t\"strconv\"\n\t\"syscall\"\n)\n\nfunc (conf *ConfigType) GetSysProcAttr() (res *syscall.SysProcAttr) {\n\n\tif conf.Process.Chroot != \"\" {\n\t\tres = &syscall.SysProcAttr{}\n\t\tres.Chroot = conf.Process.Chroot\n\t}\n\n\tvar uid *int\n\tvar gid *int\n\n\tuid = nil\n\tgid = conf.Process.GID\n\n\tif conf.Process.User != \"\" {\n\t\tusr, err := user.Lookup(conf.Process.User)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tu, err := strconv.Atoi(usr.Uid)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tg, err := strconv.Atoi(usr.Gid)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\n\t\tuid = &u\n\t\tgid = &g\n\t}\n\n\tif uid != nil && gid != nil {\n\t\tif res == nil {\n\t\t\tres = &syscall.SysProcAttr{}\n\t\t}\n\n\t\tres.Credential = &syscall.Credential{\n\t\t\tUid: uint32(*uid),\n\t\t\tGid: uint32(*gid),\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "util/config_sysproc_windows.go",
    "content": "//go:build windows\n\npackage util\n\nimport (\n\t\"syscall\"\n)\n\nfunc (conf *ConfigType) GetSysProcAttr() (res *syscall.SysProcAttr) {\n\n\treturn\n}\n"
  },
  {
    "path": "util/config_test.go",
    "content": "package util\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"testing\"\n)\n\nfunc mockError(msg string) {\n\tpanic(msg)\n}\n\nfunc TestValidate(t *testing.T) {\n\tvar val struct {\n\t\tTest string `rule:\"^\\\\d+$\"`\n\t}\n\tval.Test = \"45243524\"\n\n\terr := validate(val)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n}\n\nfunc TestLoadEnvironmentToObject(t *testing.T) {\n\tvar val struct {\n\t\tFlag     bool   `env:\"TEST_FLAG\"`\n\t\tTest     string `env:\"TEST_ENV_VAR\"`\n\t\tSubfield struct {\n\t\t\tValue string `env:\"TEST_VALUE_ENV_VAR\"`\n\t\t}\n\t\tStringArr []string `env:\"TEST_STRING_ARR\"`\n\t}\n\n\terr := os.Setenv(\"TEST_FLAG\", \"yes\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = os.Setenv(\"TEST_ENV_VAR\", \"758478\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = os.Setenv(\"TEST_VALUE_ENV_VAR\", \"test_value\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = os.Setenv(\"TEST_STRING_ARR\", \"[\\\"test1\\\",\\\"test2\\\"]\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = loadEnvironmentToObject(&val)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif val.Flag != true {\n\t\tt.Error(\"Invalid value\")\n\t}\n\n\tif val.Test != \"758478\" {\n\t\tt.Error(\"Invalid value\")\n\t}\n\n\tif val.Subfield.Value != \"test_value\" {\n\t\tt.Error(\"Invalid value\")\n\t}\n\n\tif val.StringArr == nil {\n\t\tt.Error(\"Invalid array value\")\n\t}\n\n\tif val.StringArr[0] != \"test1\" {\n\t\tt.Error(\"Invalid array item value\")\n\t}\n\n\tif val.StringArr[1] != \"test2\" {\n\t\tt.Error(\"Invalid array item value\")\n\t}\n}\n\nfunc TestLoadEnvironmentToObject_Arr(t *testing.T) {\n\tvar val struct {\n\t\tStringArr []string `env:\"TEST_STRING_ARR\"`\n\t}\n\n\terr := os.Setenv(\"TEST_STRING_ARR\", \"[\\\"test1\\\",\\\"test2\\\"]\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = loadEnvironmentToObject(&val)\n\tif err != nil {\n\t\tt.Error(err)\n\t}\n\n\tif val.StringArr == nil {\n\t\tt.Error(\"Invalid array value\")\n\t}\n\n\tif val.StringArr[0] != \"test1\" {\n\t\tt.Error(\"Invalid array item value\")\n\t}\n\n\tif val.StringArr[1] != \"test2\" {\n\t\tt.Error(\"Invalid array item value\")\n\t}\n}\n\nfunc TestLoadEnvironmentToObject_Map(t *testing.T) {\n\ttype User struct {\n\t\tName string `json:\"name\"`\n\t\tAge  int    `json:\"age\"`\n\t}\n\tvar val struct {\n\t\tUsers map[string]User `env:\"TEST_USERS\"`\n\t}\n\n\terr := os.Setenv(\"TEST_USERS\", \"{\\\"test\\\":{\\\"name\\\":\\\"test\\\",\\\"age\\\":5}}\")\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = loadEnvironmentToObject(&val)\n\n\tif val.Users[\"test\"].Name != \"test\" {\n\t\tt.Error(\"Invalid field value\")\n\t}\n}\n\nfunc TestCastStringToInt(t *testing.T) {\n\terrMsg := \"Cast string => int failed\"\n\n\tif castStringToInt(\"5\") != 5 {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToInt(\"0\") != 0 {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToInt(\"-1\") != -1 {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToInt(\"999\") != 999 {\n\t\tt.Error(errMsg)\n\t}\n\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Errorf(\"Cast string => int did not panic on invalid input\")\n\t\t}\n\t}()\n\tcastStringToInt(\"xxx\")\n}\n\nfunc TestCastStringToBool(t *testing.T) {\n\terrMsg := \"Cast string => bool failed\"\n\n\tif castStringToBool(\"1\") != true {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToBool(\"0\") != false {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToBool(\"true\") != true {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToBool(\"false\") != false {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToBool(\"xxx\") != false {\n\t\tt.Error(errMsg)\n\t}\n\tif castStringToBool(\"\") != false {\n\t\tt.Error(errMsg)\n\t}\n}\n\nfunc TestConfigInitialization(t *testing.T) {\n\ttestLdapMappingsUID := \"uid\"\n\n\tConfig = NewConfigType()\n\n\t// should not panic\n\tConfig.LdapMappings.UID = testLdapMappingsUID\n}\n\nfunc TestGetConfigValue(t *testing.T) {\n\tConfig = NewConfigType()\n\n\ttestPort := \"1337\"\n\ttestCookieHash := \"0Sn+edH3doJ4EO4Rl49Y0KrxjUkXuVtR5zKHGGWerxQ=\"\n\ttestMaxParallelTasks := 5\n\ttestLdapNeedTls := true\n\ttestDbHost := \"192.168.0.1\"\n\n\tConfig.Port = testPort\n\tConfig.CookieHash = testCookieHash\n\tConfig.MaxParallelTasks = testMaxParallelTasks\n\tConfig.LdapNeedTLS = testLdapNeedTls\n\tConfig.BoltDb = &DbConfig{\n\t\tHostname: testDbHost,\n\t}\n\n\tif getConfigValue(\"Port\") != testPort {\n\t\tt.Error(\"Could not get value for config attribute 'Port'!\")\n\t}\n\tif getConfigValue(\"CookieHash\") != testCookieHash {\n\t\tt.Error(\"Could not get value for config attribute 'CookieHash'!\")\n\t}\n\tif getConfigValue(\"MaxParallelTasks\") != fmt.Sprintf(\"%v\", testMaxParallelTasks) {\n\t\tt.Error(\"Could not get value for config attribute 'MaxParallelTasks'!\")\n\t}\n\tif getConfigValue(\"LdapNeedTLS\") != fmt.Sprintf(\"%v\", testLdapNeedTls) {\n\t\tt.Error(\"Could not get value for config attribute 'LdapNeedTLS'!\")\n\t}\n\n\tif getConfigValue(\"BoltDb.Hostname\") != fmt.Sprintf(\"%v\", testDbHost) {\n\t\tt.Error(\"Could not get value for config attribute 'BoltDb.Hostname'!\")\n\t}\n\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Error(\"Did not fail on non-existent config attribute!\")\n\t\t}\n\t}()\n\tgetConfigValue(\"NotExistent\")\n\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Error(\"Did not fail on non-existent config attribute!\")\n\t\t}\n\t}()\n\tgetConfigValue(\"Not.Existent\")\n}\n\nfunc TestSetConfigValue(t *testing.T) {\n\tConfig = new(ConfigType)\n\n\tconfigValue := reflect.ValueOf(Config).Elem()\n\n\ttestPort := \"1337\"\n\ttestCookieHash := \"0Sn+edH3doJ4EO4Rl49Y0KrxjUkXuVtR5zKHGGWerxQ=\"\n\ttestMaxParallelTasks := 5\n\ttestLdapNeedTls := true\n\t// var testDbHost string = \"192.168.0.1\"\n\ttestEmailSecure := \"1\"\n\texpectEmailSecure := true\n\n\tsetConfigValue(configValue.FieldByName(\"Port\"), testPort)\n\tsetConfigValue(configValue.FieldByName(\"CookieHash\"), testCookieHash)\n\tsetConfigValue(configValue.FieldByName(\"MaxParallelTasks\"), strconv.Itoa(testMaxParallelTasks))\n\tsetConfigValue(configValue.FieldByName(\"LdapNeedTLS\"), \"true\")\n\t// setConfigValue(configValue.FieldByName(\"BoltDb.Hostname\"), testDbHost)\n\tsetConfigValue(configValue.FieldByName(\"EmailSecure\"), testEmailSecure)\n\n\tif Config.Port != testPort {\n\t\tt.Error(\"Could not set value for config attribute 'Port'!\")\n\t}\n\tif Config.CookieHash != testCookieHash {\n\t\tt.Error(\"Could not set value for config attribute 'CookieHash'!\")\n\t}\n\tif Config.MaxParallelTasks != testMaxParallelTasks {\n\t\tt.Error(\"Could not set value for config attribute 'MaxParallelTasks'!\")\n\t}\n\tif Config.LdapNeedTLS != testLdapNeedTls {\n\t\tt.Error(\"Could not set value for config attribute 'LdapNeedTls'!\")\n\t}\n\t//if Config.BoltDb.Hostname != testDbHost {\n\t//\tt.Error(\"Could not set value for config attribute 'BoltDb.Hostname'!\")\n\t//}\n\tif Config.EmailSecure != expectEmailSecure {\n\t\tt.Error(\"Could not set value for config attribute 'EmailSecure'!\")\n\t}\n\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Error(\"Did not fail on non-existent config attribute!\")\n\t\t}\n\t}()\n\tsetConfigValue(configValue.FieldByName(\"NotExistent\"), \"someValue\")\n\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Error(\"Did not fail on non-existent config attribute!\")\n\t\t}\n\t}()\n\t// setConfigValue(configValue.FieldByName(\"Not.Existent\"), \"someValue\")\n\n}\n\nfunc TestLoadConfigEnvironmet(t *testing.T) {\n\tConfig = new(ConfigType)\n\tConfig.BoltDb = &DbConfig{}\n\tConfig.Dialect = DbDriverBolt\n\n\tenvPort := \"1337\"\n\tenvCookieHash := \"0Sn+edH3doJ4EO4Rl49Y0KrxjUkXuVtR5zKHGGWerxQ=\"\n\tenvAccessKeyEncryption := \"1/wRYXQltDGwbzNZRP9ZfJb2IoWcn1hYrxA0vOdvVos=\"\n\tenvMaxParallelTasks := \"5\"\n\texpectMaxParallelTasks := 5\n\texpectLdapNeedTls := true\n\tenvLdapNeedTls := \"1\"\n\tenvDbHost := \"192.168.0.1\"\n\n\tos.Setenv(\"SEMAPHORE_PORT\", envPort)                                 //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_COOKIE_HASH\", envCookieHash)                    //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_ACCESS_KEY_ENCRYPTION\", envAccessKeyEncryption) //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_MAX_PARALLEL_TASKS\", envMaxParallelTasks)       //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_LDAP_NEEDTLS\", envLdapNeedTls)                  //nolint:errcheck\n\tos.Setenv(\"SEMAPHORE_DB_HOST\", envDbHost)                            //nolint:errcheck\n\n\tloadConfigEnvironment()\n\n\tif Config.Port != envPort {\n\t\tt.Error(\"Setting 'Port' was not loaded from environment-vars!\")\n\t}\n\tif Config.CookieHash != envCookieHash {\n\t\tt.Error(\"Setting 'CookieHash' was not loaded from environment-vars!\")\n\t}\n\tif Config.AccessKeyEncryption != envAccessKeyEncryption {\n\t\tt.Error(\"Setting 'AccessKeyEncryption' was not loaded from environment-vars!\")\n\t}\n\tif Config.MaxParallelTasks != expectMaxParallelTasks {\n\t\tt.Error(\"Setting 'MaxParallelTasks' was not loaded from environment-vars!\")\n\t}\n\tif Config.LdapNeedTLS != expectLdapNeedTls {\n\t\tt.Error(\"Setting 'LdapNeedTLS' was not loaded from environment-vars!\")\n\t}\n\tif Config.BoltDb.Hostname != envDbHost {\n\t\tt.Error(\"Setting 'BoltDb.Hostname' was not loaded from environment-vars!\")\n\t}\n\n\t//if Config.MySQL.Hostname == envDbHost || Config.Postgres.Hostname == envDbHost {\n\t//\t// inactive db-dialects could be set as they share the same env-vars; but should be ignored\n\t//\tt.Error(\"DB-Hostname was loaded for inactive DB-dialects!\")\n\t//}\n}\n\nfunc TestLoadConfigDefaults(t *testing.T) {\n\tConfig = new(ConfigType)\n\terrMsg := \"Failed to load config-default\"\n\n\tloadConfigDefaults()\n\n\tif Config.Port != \":3000\" {\n\t\tt.Error(errMsg)\n\t}\n\tif Config.TmpPath != \"/tmp/semaphore\" {\n\t\tt.Error(errMsg)\n\t}\n}\n\nfunc ensureConfigValidationFailure(t *testing.T, attribute string, value any) {\n\tdefer func() {\n\t\tif r := recover(); r == nil {\n\t\t\tt.Errorf(\n\t\t\t\t\"Config validation for attribute '%v' did not fail! (value '%v')\",\n\t\t\t\tattribute, value,\n\t\t\t)\n\t\t}\n\t}()\n\tvalidateConfig()\n}\n\nfunc TestValidateConfig(t *testing.T) {\n\t// assert := assert.New(t)\n\n\tConfig = new(ConfigType)\n\n\ttestPort := \":3000\"\n\ttestDbDialect := DbDriverBolt\n\ttestCookieHash := \"0Sn+edH3doJ4EO4Rl49Y0KrxjUkXuVtR5zKHGGWerxQ=\"\n\ttestMaxParallelTasks := 0\n\ttestEmailTlsMinVersion := \"1.2\"\n\n\tConfig.Port = testPort\n\tConfig.Dialect = testDbDialect\n\tConfig.CookieHash = testCookieHash\n\tConfig.MaxParallelTasks = testMaxParallelTasks\n\tConfig.GitClientId = GoGitClientId\n\tConfig.CookieEncryption = testCookieHash\n\tConfig.AccessKeyEncryption = testCookieHash\n\tConfig.EmailTlsMinVersion = testEmailTlsMinVersion\n\tvalidateConfig()\n\n\tConfig.Port = \"INVALID\"\n\tensureConfigValidationFailure(t, \"Port\", Config.Port)\n\n\tConfig.Port = \":100000\"\n\tensureConfigValidationFailure(t, \"Port\", Config.Port)\n\tConfig.Port = testPort\n\n\tConfig.MaxParallelTasks = -1\n\tensureConfigValidationFailure(t, \"MaxParallelTasks\", Config.MaxParallelTasks)\n\n\tensureConfigValidationFailure(t, \"MaxParallelTasks\", Config.MaxParallelTasks)\n\tConfig.MaxParallelTasks = testMaxParallelTasks\n\n\t// Config.CookieHash = \"\\\"0Sn+edH3doJ4EO4Rl49Y0KrxjUkXuVtR5zKHGGWerxQ=\\\"\" // invalid with quotes (can happen when supplied as env-var)\n\t// ensureConfigValidationFailure(t, \"CookieHash\", Config.CookieHash)\n\n\t// Config.CookieHash = \"!)394340\"\n\t// ensureConfigValidationFailure(t, \"CookieHash\", Config.CookieHash)\n\n\t// Config.CookieHash = \"\"\n\t// ensureConfigValidationFailure(t, \"CookieHash\", Config.CookieHash)\n\n\t// Config.CookieHash = \"TQwjDZ5fIQtaIw==\" // valid b64, but too small\n\t// ensureConfigValidationFailure(t, \"CookieHash\", Config.CookieHash)\n\tConfig.CookieHash = testCookieHash\n\n\tConfig.Dialect = \"someOtherDB\"\n\tensureConfigValidationFailure(t, \"Dialect\", Config.Dialect)\n\tConfig.Dialect = testDbDialect\n}\n"
  },
  {
    "path": "util/debug.go",
    "content": "package util\n\nimport (\n\tlog \"github.com/sirupsen/logrus\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nfunc Goid() (int, error) {\n\tvar buf [64]byte\n\tn := runtime.Stack(buf[:], false)\n\tidField := strings.Fields(strings.TrimPrefix(string(buf[:n]), \"goroutine \"))[0]\n\tid, err := strconv.Atoi(idField)\n\tif err != nil {\n\t\tlog.Debug(\"Cannot get goroutine id: \", err)\n\t\treturn -1, err\n\t}\n\treturn id, nil\n}\n\nfunc LogGoid(msg string) {\n\tid, err := Goid()\n\tif err == nil {\n\t\tlog.Info(msg, \", goid=\", id)\n\t}\n}\n"
  },
  {
    "path": "util/encryption.go",
    "content": "package util\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"io\"\n)\n\nfunc GeneratePrivateKey(privateKeyFile io.Writer) (publicKey string, err error) {\n\t// 1. Generate RSA Private Key (2048 bits)\n\tprivateKey, err := rsa.GenerateKey(rand.Reader, 2048)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// 2. Encode the private key to PKCS#1 ASN.1 PEM\n\tprivateKeyBytes := x509.MarshalPKCS1PrivateKey(privateKey)\n\tprivateKeyPem := &pem.Block{\n\t\tType:  \"RSA PRIVATE KEY\",\n\t\tBytes: privateKeyBytes,\n\t}\n\n\t// 3. Write private key to file\n\tif err = pem.Encode(privateKeyFile, privateKeyPem); err != nil {\n\t\treturn\n\t}\n\n\tpublicKeyBytes := x509.MarshalPKCS1PublicKey(&privateKey.PublicKey)\n\tpublicKeyPem := &pem.Block{\n\t\tType:  \"PUBLIC KEY\",\n\t\tBytes: publicKeyBytes,\n\t}\n\n\tvar b bytes.Buffer\n\tpublicKeyFile := bufio.NewWriter(&b)\n\n\tif err = pem.Encode(publicKeyFile, publicKeyPem); err != nil {\n\t\treturn\n\t}\n\n\tpublicKeyFile.Flush()\n\n\tpublicKey = b.String()\n\treturn\n}\n"
  },
  {
    "path": "util/errorLogging.go",
    "content": "package util\n\nimport (\n\tlog \"github.com/sirupsen/logrus\"\n)\n\n// LogWarning logs a warning with arbitrary field if error\nfunc LogWarning(err error) {\n\tLogWarningF(err, log.Fields{\"level\": \"Warn\"})\n}\n\n// LogDebugF logs a debug with added field context if error\nfunc LogDebugF(err error, fields log.Fields) {\n\tif err != nil {\n\t\tlog.WithFields(fields).Debug(err.Error())\n\t}\n}\n\n// LogWarningF logs a warning with added field context if error\nfunc LogWarningF(err error, fields log.Fields) {\n\tif err != nil {\n\t\tlog.WithFields(fields).Warn(err.Error())\n\t}\n}\n\n// LogError logs an error with arbitrary field if error\nfunc LogError(err error) {\n\tLogErrorF(err, log.Fields{\"level\": \"Error\"})\n}\n\n// LogErrorF logs a error with added field context if error\nfunc LogErrorF(err error, fields log.Fields) {\n\tif err != nil {\n\t\tlog.WithFields(fields).Error(err.Error())\n\t}\n}\n\n// LogPanic logs and panics with arbitrary field if error\nfunc LogPanic(err error) {\n\tLogPanicF(err, log.Fields{\"level\": \"Panic\"})\n}\n\n// LogPanicF logs and panics with added field context if error\nfunc LogPanicF(err error, fields log.Fields) {\n\tif err != nil {\n\t\tlog.WithFields(fields).Panic(err.Error())\n\t}\n}\n"
  },
  {
    "path": "util/mailer/auth.go",
    "content": "package mailer\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/smtp\"\n\t\"slices\"\n)\n\nfunc PlainOrLoginAuth(username, password, host string) smtp.Auth {\n\treturn &plainOrLoginAuth{username: username, password: password, host: host}\n}\n\nfunc isLocalhost(name string) bool {\n\treturn name == \"localhost\" || name == \"127.0.0.1\" || name == \"::1\"\n}\n\ntype plainOrLoginAuth struct {\n\tusername   string\n\tpassword   string\n\thost       string\n\tauthMethod string\n}\n\nfunc (a *plainOrLoginAuth) Start(server *smtp.ServerInfo) (string, []byte, error) {\n\t// Must have TLS, or else localhost server.\n\t// Note: If TLS is not true, then we can't trust ANYTHING in ServerInfo.\n\t// In particular, it doesn't matter if the server advertises PLAIN auth.\n\t// That might just be the attacker saying\n\t// \"it's ok, you can trust me with your password.\"\n\tif !server.TLS && !isLocalhost(server.Name) {\n\t\treturn \"\", nil, errors.New(\"unencrypted connection\")\n\t}\n\tif server.Name != a.host {\n\t\treturn \"\", nil, errors.New(\"wrong host name\")\n\t}\n\tif !slices.Contains(server.Auth, \"PLAIN\") {\n\t\ta.authMethod = \"LOGIN\"\n\t\treturn a.authMethod, nil, nil\n\t} else {\n\t\ta.authMethod = \"PLAIN\"\n\t\tresp := []byte(\"\\x00\" + a.username + \"\\x00\" + a.password)\n\t\treturn a.authMethod, resp, nil\n\t}\n}\n\nfunc (a *plainOrLoginAuth) Next(fromServer []byte, more bool) ([]byte, error) {\n\tif !more {\n\t\treturn nil, nil\n\t}\n\n\tif a.authMethod == \"PLAIN\" {\n\t\t// We've already sent everything.\n\t\treturn nil, errors.New(\"unexpected server challenge\")\n\t}\n\n\tswitch {\n\tcase bytes.Equal(fromServer, []byte(\"Username:\")):\n\t\treturn []byte(a.username), nil\n\tcase bytes.Equal(fromServer, []byte(\"Password:\")):\n\t\treturn []byte(a.password), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unexpected server challenge: %s\", fromServer)\n\t}\n}\n"
  },
  {
    "path": "util/mailer/mailer.go",
    "content": "package mailer\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"net\"\n\t\"net/smtp\"\n\t\"strings\"\n\t\"text/template\"\n\t\"time\"\n\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"github.com/semaphoreui/semaphore/util\"\n)\n\nconst (\n\tmailerBase = \"MIME-version: 1.0\\r\\n\" +\n\t\t\"Content-Type: text/html; charset=UTF-8\\r\\n\" +\n\t\t//\"Content-Transfer-Encoding: quoted-printable\\r\\n\" +\n\t\t\"Date: {{ .Date }}\\r\\n\" +\n\t\t\"To: {{ .To }}\\r\\n\" +\n\t\t\"From: {{ .From }}\\r\\n\" +\n\t\t\"Subject: {{ .Subject }}\\r\\n\\r\\n\" +\n\t\t\"{{ .Body }}\"\n)\n\nvar r = strings.NewReplacer(\n\t\"\\r\\n\", \"\",\n\t\"\\r\", \"\",\n\t\"\\n\", \"\",\n\t\"%0a\", \"\",\n\t\"%0d\", \"\",\n)\n\nfunc parseTlsVersion(version string) (uint16, error) {\n\tswitch version {\n\tcase \"1.0\":\n\t\treturn tls.VersionTLS10, nil\n\tcase \"1.1\":\n\t\treturn tls.VersionTLS11, nil\n\tcase \"1.2\":\n\t\treturn tls.VersionTLS12, nil\n\tcase \"1.3\":\n\t\treturn tls.VersionTLS13, nil\n\t}\n\n\treturn 0, fmt.Errorf(\"Unsupported TLS version %s\", version)\n}\n\n// Send simply sends the defined mail via SMTP.\nfunc Send(\n\tsecure bool,\n\tuseTls bool,\n\thost string,\n\tport string,\n\tusername,\n\tpassword,\n\tfrom,\n\tto,\n\tsubject string,\n\tcontent string,\n) error {\n\tbody := bytes.NewBufferString(\"\")\n\ttpl, err := template.New(\"\").Parse(mailerBase)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = tpl.Execute(body, struct {\n\t\tDate    string\n\t\tTo      string\n\t\tFrom    string\n\t\tSubject string\n\t\tBody    string\n\t}{\n\t\tDate:    tz.Now().Format(time.RFC1123),\n\t\tTo:      r.Replace(to),\n\t\tFrom:    r.Replace(from),\n\t\tSubject: r.Replace(subject),\n\t\tBody:    content,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif secure {\n\t\tif useTls {\n\t\t\treturn sendTls(\n\t\t\t\thost,\n\t\t\t\tport,\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t\tbody,\n\t\t\t)\n\t\t} else {\n\t\t\treturn plainauth(\n\t\t\t\thost,\n\t\t\t\tport,\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t\tbody,\n\t\t\t)\n\t\t}\n\t}\n\n\treturn anonymous(\n\t\thost,\n\t\tport,\n\t\tfrom,\n\t\tto,\n\t\tbody,\n\t)\n}\n\nfunc plainauth(\n\thost string,\n\tport string,\n\tusername string,\n\tpassword string,\n\tfrom string,\n\tto string,\n\tbody *bytes.Buffer,\n) error {\n\tauth := PlainOrLoginAuth(username, password, host)\n\t// auth := smtp.PlainAuth(\"\", username, password, host)\n\n\treturn smtp.SendMail(\n\t\tnet.JoinHostPort(host, port),\n\t\tauth,\n\t\tfrom,\n\t\t[]string{to},\n\t\tbody.Bytes(),\n\t)\n}\n\nfunc sendTls(\n\thost,\n\tport,\n\tusername,\n\tpassword,\n\tfrom,\n\tto string,\n\tbody *bytes.Buffer,\n) error {\n\tauth := PlainOrLoginAuth(username, password, host)\n\n\ttlsVersion, err := parseTlsVersion(util.Config.EmailTlsMinVersion)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttlsConfig := &tls.Config{\n\t\tInsecureSkipVerify: false,\n\t\tServerName:         host,\n\t\tMinVersion:         tlsVersion,\n\t}\n\n\t// Here is the key, you need to call tls.Dial instead of smtp.Dial\n\t// for smtp servers running on 465 that require an ssl connection\n\t// from the very beginning (no starttls)\n\tconn, err := tls.Dial(\"tcp\", net.JoinHostPort(host, port), tlsConfig)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc, err := smtp.NewClient(conn, host)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = c.Auth(auth); err != nil {\n\t\treturn err\n\t}\n\n\tif err = c.Mail(from); err != nil {\n\t\treturn err\n\t}\n\n\tif err = c.Rcpt(to); err != nil {\n\t\treturn err\n\t}\n\n\tw, err := c.Data()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = w.Write(body.Bytes())\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = w.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = c.Quit()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc anonymous(\n\thost string,\n\tport string,\n\tfrom string,\n\tto string,\n\tbody *bytes.Buffer,\n) error {\n\tc, err := smtp.Dial(net.JoinHostPort(host, port))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer c.Close() //nolint:errcheck\n\n\tif err := c.Mail(r.Replace(from)); err != nil {\n\t\treturn err\n\t}\n\n\tif err = c.Rcpt(r.Replace(to)); err != nil {\n\t\treturn err\n\t}\n\n\tw, err := c.Data()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer w.Close() //nolint:errcheck\n\n\tif _, err := body.WriteTo(w); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "util/shell.go",
    "content": "package util\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\t\"unicode\"\n)\n\n// Imported from https://github.com/alessio/shellescape/blob/master/shellescape.go\n// Credits goes to https://github.com/alessio/shellescape maintainers\n\nvar shellQuotePattern *regexp.Regexp\n\nfunc init() {\n\tshellQuotePattern = regexp.MustCompile(`[^\\w@%+=:,./-]`)\n}\n\n// Quote returns a shell-escaped version of the string s. The returned value\n// is a string that can safely be used as one token in a shell command line.\nfunc ShellQuote(s string) string {\n\tif len(s) == 0 {\n\t\treturn \"''\"\n\t}\n\n\tif shellQuotePattern.MatchString(s) {\n\t\treturn \"'\" + strings.ReplaceAll(s, \"'\", \"'\\\"'\\\"'\") + \"'\"\n\t}\n\n\treturn s\n}\n\n// StripUnsafe remove non-printable runes, e.g. control characters in\n// a string that is meant  for consumption by terminals that support\n// control characters.\nfunc ShellStripUnsafe(s string) string {\n\treturn strings.Map(func(r rune) rune {\n\t\tif unicode.IsPrint(r) {\n\t\t\treturn r\n\t\t}\n\n\t\treturn -1\n\t}, s)\n}\n"
  },
  {
    "path": "util/test_helpers.go",
    "content": "package util\n\nimport (\n\t\"github.com/semaphoreui/semaphore/pkg/tz\"\n\t\"math/rand\"\n)\n\n//HELPERS\n\n// https://stackoverflow.com/questions/22892120/how-to-generate-a-random-string-of-a-fixed-length-in-golang\nvar src = rand.NewSource(tz.Now().UnixNano())\n\nconst letterBytes = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\nconst (\n\tletterIdxBits = 6                    // 6 bits to represent a letter index\n\tletterIdxMask = 1<<letterIdxBits - 1 // All 1-bits, as many as letterIdxBits\n\tletterIdxMax  = 63 / letterIdxBits   // # of letter indices fitting in 63 bits\n)\n\nfunc RandString(n int) string {\n\tb := make([]byte, n)\n\t// A src.Int63() generates 63 random bits, enough for letterIdxMax characters!\n\tfor i, cache, remain := n-1, src.Int63(), letterIdxMax; i >= 0; {\n\t\tif remain == 0 {\n\t\t\tcache, remain = src.Int63(), letterIdxMax\n\t\t}\n\t\tif idx := int(cache & letterIdxMask); idx < len(letterBytes) {\n\t\t\tb[i] = letterBytes[idx]\n\t\t\ti--\n\t\t}\n\t\tcache >>= letterIdxBits\n\t\tremain--\n\t}\n\treturn string(b)\n}\n"
  },
  {
    "path": "util/version.go",
    "content": "package util\n\nimport (\n\t\"strings\"\n)\n\nvar (\n\tVer    = \"undefined\"\n\tCommit = \"00000000\"\n\tDate   = \"\"\n)\n\nfunc Version() string {\n\treturn strings.Join([]string{\n\t\tVer,\n\t\tCommit,\n\t\tDate,\n\t}, \"-\")\n}\n"
  },
  {
    "path": "web/.browserslistrc",
    "content": "> 1%\nlast 2 versions\nnot dead\n"
  },
  {
    "path": "web/.editorconfig",
    "content": "[*.{js,jsx,ts,tsx,vue}]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nmax_line_length = 100\nquote_type = single"
  },
  {
    "path": "web/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n\n  env: {\n    node: true,\n  },\n\n  extends: [\n    'plugin:import/recommended',\n    'plugin:vue/essential',\n    '@vue/airbnb',\n  ],\n\n  parserOptions: {\n    parser: 'babel-eslint',\n  },\n\n  rules: {\n    'no-bitwise': 'off',\n    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',\n    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',\n    'linebreak-style': 'off',\n    'prefer-destructuring': 'off',\n    'vuejs-accessibility/click-events-have-key-events': 'off',\n    'vue/valid-v-slot': 'off',\n    'vue/multi-word-component-names': 'off',\n  },\n\n  overrides: [\n    {\n      files: [\n        '**/__tests__/*.{j,t}s?(x)',\n        '**/tests/unit/**/*.spec.{j,t}s?(x)',\n      ],\n      env: {\n        mocha: true,\n      },\n    },\n  ],\n\n  settings: {\n    'import/resolver': {\n      node: {\n        extensions: ['.js', '.vue'],\n      },\n      alias: {\n        map: ['@', './src'],\n        extensions: ['.vue', '.js'],\n      },\n    },\n  },\n};\n"
  },
  {
    "path": "web/README.md",
    "content": "# web\n\n## Project setup\n```\nnpm install\n```\n\n### Compiles and hot-reloads for development\n```\nnpm run serve\n```\n\n### Compiles and minifies for production\n```\nnpm run build\n```\n\n### Run your unit tests\n```\nnpm run test:unit\n```\n\n### Lints and fixes files\n```\nnpm run lint\n```\n\n### Customize configuration\nSee [Configuration Reference](https://cli.vuejs.org/config/).\n"
  },
  {
    "path": "web/babel.config.js",
    "content": "module.exports = {\n  presets: [\n    '@vue/cli-plugin-babel/preset',\n  ],\n};\n"
  },
  {
    "path": "web/gulp-gpt-translate.js",
    "content": "const through = require('through2');\nconst PluginError = require('plugin-error');\nconst { OpenAI } = require('openai');\n\nconst PLUGIN_NAME = 'gulp-gpt-translate';\n\nfunction gptTranslate(options) {\n  if (!options || !options.apiKey) {\n    throw new PluginError(PLUGIN_NAME, 'An OpenAI API key is required.');\n  }\n\n  if (!options.targetLanguage) {\n    throw new PluginError(PLUGIN_NAME, 'A target language must be specified.');\n  }\n\n  const openai = new OpenAI();\n\n  return through.obj(function (file, enc, cb) {\n    const self = this;\n\n    if (file.isNull()) {\n      return cb(null, file); // Pass along if no contents\n    }\n\n    if (file.isStream()) {\n      self.emit('error', new PluginError(PLUGIN_NAME, 'Streaming not supported.'));\n      return cb();\n    }\n\n    (async () => {\n      try {\n        const content = file.contents.toString(enc);\n\n        const response = await openai.chat.completions.create({\n          model: options.model || 'gpt-4o-mini',\n          temperature: 0,\n          messages: [\n            {\n              role: 'system',\n              content: `You are a helpful assistant that translates text to ${options.targetLanguage}. `,\n            },\n            ...(options.messages || []).map((m) => ({ role: 'user', content: m })),\n            { role: 'user', content },\n          ],\n        });\n\n        file.contents = Buffer.from(`${response.choices[0].message.content}\\n`, enc);\n\n        self.push(file);\n        cb();\n      } catch (err) {\n        self.emit('error', new PluginError(PLUGIN_NAME, err.message));\n        cb(err);\n      }\n    })();\n  });\n}\n\nmodule.exports = gptTranslate;\n"
  },
  {
    "path": "web/gulpfile.js",
    "content": "const { src, dest } = require('gulp');\nconst rename = require('gulp-rename');\nrequire('dotenv').config();\nconst gptTranslate = require('./gulp-gpt-translate');\n\nconst LANG_NAMES = {\n  en: 'English',\n  ru: 'Russian',\n  es: 'Spanish',\n  fr: 'French',\n  de: 'German',\n  it: 'Italian',\n  ja: 'Japanese',\n  ko: 'Korean',\n  pt: 'Portuguese',\n  zh_cn: 'Simplified Chinese',\n  zh_tw: 'Traditional Chinese',\n  nl: 'Dutch (Netherlands)',\n  pl: 'Polish',\n  pt_br: 'Brazilian Portuguese',\n};\n\nfunction tr() {\n  return Object.keys(LANG_NAMES).filter((lang) => lang !== 'en').map((lang) => src('src/lang/en.js')\n    .pipe(gptTranslate({\n      apiKey: process.env.OPENAI_API_KEY,\n      targetLanguage: LANG_NAMES[lang],\n      messages: [\n        'Translate values of the JS object fields.',\n        'Preserve file format. Do not wrap result to markdown tag. Result must be valid js file.',\n      ],\n    }))\n    .pipe(rename({ basename: lang }))\n    .pipe(dest('src/lang')));\n}\n\nmodule.exports = {\n  tr,\n};\n"
  },
  {
    "path": "web/package.json",
    "content": "{\r\n  \"name\": \"web\",\r\n  \"version\": \"0.1.0\",\r\n  \"private\": true,\r\n  \"scripts\": {\r\n    \"serve\": \"vue-cli-service serve\",\r\n    \"build\": \"vue-cli-service build\",\r\n    \"test:unit\": \"vue-cli-service test:unit\",\r\n    \"lint\": \"vue-cli-service lint\"\r\n  },\r\n  \"dependencies\": {\r\n    \"@mdi/font\": \"^7.0.0\",\r\n    \"ansi_up\": \"^6.0.6\",\r\n    \"axios\": \"^1.13.5\",\r\n    \"chart.js\": \"^3.8.0\",\r\n    \"core-js\": \"^3.48.0\",\r\n    \"cron-parser\": \"^5.3.0\",\r\n    \"dayjs\": \"^1.11.13\",\r\n    \"vue\": \"^2.6.14\",\r\n    \"vue-chartjs\": \"^4.0.0\",\r\n    \"vue-codemirror\": \"^4.0.6\",\r\n    \"vue-i18n\": \"^8.18.2\",\r\n    \"vue-router\": \"^3.5.4\",\r\n    \"vue-virtual-scroll-list\": \"^2.3.5\",\r\n    \"vuedraggable\": \"^2.24.3\",\r\n    \"vuetify\": \"^2.6.10\"\r\n  },\r\n  \"devDependencies\": {\r\n    \"@vue/cli-plugin-babel\": \"^5.0.6\",\r\n    \"@vue/cli-plugin-eslint\": \"^5.0.6\",\r\n    \"@vue/cli-plugin-router\": \"^5.0.6\",\r\n    \"@vue/cli-plugin-unit-mocha\": \"^5.0.6\",\r\n    \"@vue/cli-service\": \"^5.0.6\",\r\n    \"@vue/eslint-config-airbnb\": \"^6.0.0\",\r\n    \"@vue/test-utils\": \"^2.0.0\",\r\n    \"babel-eslint\": \"^10.1.0\",\r\n    \"chai\": \"^6.0.0\",\r\n    \"dotenv\": \"^17.0.0\",\r\n    \"eslint\": \"^7.32.0\",\r\n    \"eslint-config-prettier\": \"^10.0.0\",\r\n    \"eslint-import-resolver-alias\": \"^1.1.2\",\r\n    \"eslint-plugin-import\": \"^2.31.0\",\r\n    \"eslint-plugin-vue\": \"^9.1.1\",\r\n    \"eslint-plugin-vuejs-accessibility\": \"^1.2.0\",\r\n    \"glob-parent\": \">=5.1.2\",\r\n    \"gulp\": \"^5.0.0\",\r\n    \"gulp-cli\": \"^3.0.0\",\r\n    \"gulp-rename\": \"^2.0.0\",\r\n    \"nanoid\": \">=3.1.31\",\r\n    \"nyc\": \"^17.0.0\",\r\n    \"openai\": \"^6.0.0\",\r\n    \"plugin-error\": \"^2.0.1\",\r\n    \"prettier\": \"^3.4.2\",\r\n    \"sass\": \"~1.32.12\",\r\n    \"sass-loader\": \"^13.0.0\",\r\n    \"through2\": \"^4.0.2\",\r\n    \"vue-cli-plugin-vuetify\": \"~2.5.0\",\r\n    \"vue-template-compiler\": \"^2.6.14\",\r\n    \"vuetify-loader\": \"^1.8.0\"\r\n  }\r\n}\r\n"
  },
  {
    "path": "web/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <base href=\"/\">\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n    <link rel=\"icon\" href=\"favicon.png\">\n    <title>Dashboard - Semaphore UI</title>\n  </head>\n  <body>\n    <noscript>\n      <strong>\n          We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly\n          without JavaScript enabled. Please enable it to continue.\n      </strong>\n    </noscript>\n    <div id=\"app\"></div>\n    <!-- built files will be auto injected -->\n  </body>\n</html>\n"
  },
  {
    "path": "web/public/swagger/api-docs.yml",
    "content": "---\nswagger: '2.0'\ninfo:\n  title: Semaphore API\n  description: |\n    Semaphore API provides endpoints for managing and interacting with the Semaphore UI.\n    This documentation outlines the available operations and data models.\n  version: \"2.16.14\"\n\nconsumes:\n  - application/json\nproduces:\n  - application/json\n  - text/plain; charset=utf-8\n\ntags:\n  - name: authentication\n    description: Authentication, Logout & API Tokens\n  - name: project\n    description: Everything related to a project\n  - name: user\n    description: User-related API\n  - name: integration\n    description: Integration API\n\nschemes:\n  - http\n  - https\n\nbasePath: /api\n\ndefinitions:\n  App:\n    type: object\n\n  Pong:\n    type: string\n    x-example: pong\n\n  Login:\n    type: object\n    properties:\n      auth:\n        type: string\n        description: Username/Email address\n        x-example: user@semaphoreui.com\n      password:\n        type: string\n        format: password\n        description: Password\n\n  LoginMetadata:\n    type: object\n    properties:\n      oidc_providers:\n        type: array\n        description: List of OIDC providers\n        items:\n          type: object\n          properties:\n            id:\n              type: string\n              description: ID of the provider, used in the login URL\n              x-example: mysso\n            name:\n              type: string\n              description: Text to show on the login button\n              x-example: Sign in with MySSO\n\n  UserRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        x-example: Integration Test User\n        example: Integration Test User\n      username:\n        type: string\n        x-example: test-user\n        example: test-user\n      email:\n        type: string\n        x-example: test@ansiblesemaphore.test\n        example: test@ansiblesemaphore.test\n      password:\n        type: string\n        format: password\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n      external:\n        type: boolean\n\n  UserPutRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        x-example: Integration Test User2\n        example: Integration Test User2\n      username:\n        type: string\n        x-example: test-user2\n        example: test-user2\n      email:\n        type: string\n        x-example: test2@ansiblesemaphore.test\n        example: test2@ansiblesemaphore.test\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n\n  User:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n      username:\n        type: string\n      email:\n        type: string\n      created:\n        type: string\n      alert:\n        type: boolean\n      admin:\n        type: boolean\n      external:\n        type: boolean\n\n  ProjectUser:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n      username:\n        type: string\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n\n  ProjectInvite:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      project_id:\n        type: integer\n        minimum: 1\n      user_id:\n        type: integer\n        minimum: 1\n        description: User ID for user-based invites (optional)\n      email:\n        type: string\n        format: email\n        description: Email address for email-based invites (optional)\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n        example: manager\n      status:\n        type: string\n        enum: [pending, accepted, declined, expired]\n        example: pending\n      inviter_user_id:\n        type: integer\n        minimum: 1\n        description: ID of the user who created the invite\n      created:\n        type: string\n        format: date-time\n        description: When the invite was created\n      expires_at:\n        type: string\n        format: date-time\n        description: When the invite expires (optional)\n      accepted_at:\n        type: string\n        format: date-time\n        description: When the invite was accepted (optional)\n      inviter_user:\n        $ref: \"#/definitions/User\"\n        description: Details of the user who created the invite\n      user:\n        $ref: \"#/definitions/User\"\n        description: Details of the invited user (for user-based invites)\n\n  ProjectInviteRequest:\n    type: object\n    properties:\n#      user_id:\n#        type: integer\n#        minimum: 1\n#        description: User ID to invite (use either user_id or email, not both)\n      email:\n        type: string\n        format: email\n        description: Email address to invite (use either user_id or email, not both)\n        x-example: user@example.com\n      role:\n        type: string\n        enum: [owner, manager, task_runner, guest]\n        example: manager\n      expires_at:\n        type: string\n        format: date-time\n        description: When the invite should expire (optional, defaults to 7 days)\n    required:\n      - role\n\n  AcceptInviteRequest:\n    type: object\n    properties:\n      token:\n        type: string\n        description: The invitation token\n        x-example: \"a1b2c3d4e5f6...\"\n    required:\n      - token\n\n  ProjectBackup:\n    type: object\n    example: {\"meta\":{\"name\":\"homelab\",\"alert\":true,\"alert_chat\":\"Test\",\"max_parallel_tasks\":0,\"type\":null},\"templates\":[{\"inventory\":\"Build\",\"repository\":\"Demo\",\"environment\":\"Empty\",\"name\":\"Build\",\"playbook\":\"build.yml\",\"arguments\":\"[]\",\"allow_override_args_in_task\":false,\"description\":\"Build Job\",\"vault_key\":null,\"type\":\"build\",\"start_version\":\"1.0.0\",\"build_template\":null,\"view\":\"Build\",\"autorun\":false,\"survey_vars\":[],\"suppress_success_alerts\":false,\"cron\":\"* * * * *\"}],\"repositories\":[{\"name\":\"Demo\",\"git_url\":\"https://github.com/semaphoreui/semaphore-demo.git\",\"git_branch\":\"main\",\"ssh_key\":\"None\"}],\"keys\":[{\"name\":\"None\",\"type\":\"none\"},{\"name\":\"Vault Password\",\"type\":\"login_password\"}],\"views\":[{\"title\":\"Build\",\"position\":0}],\"inventories\":[{\"name\":\"Build\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"static\"},{\"name\":\"Dev\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"file\"},{\"name\":\"Prod\",\"inventory\":\"\",\"ssh_key\":\"None\",\"become_key\":\"None\",\"type\":\"file\"}],\"environments\":[{\"name\":\"Empty\",\"password\":null,\"json\":\"{}\",\"env\":null}]}\n    properties:\n      meta:\n        type: object\n        properties:\n          name:\n            type: string\n          alert:\n            type: boolean\n          alert_chat:\n            type: string\n          max_parallel_tasks:\n            type: integer\n            minimum: 0\n          type:\n            type: string\n      templates:\n        type: array\n        items:\n          type: object\n          properties:\n            inventory:\n              type: string\n            repository:\n              type: string\n            environment:\n              type: string\n            view:\n              type: string\n            name:\n              type: string\n            playbook:\n              type: string\n            arguments:\n              type: string\n            description:\n              type: string\n            allow_override_args_in_task:\n              type: boolean\n            suppress_success_alerts:\n              type: boolean\n            cron:\n              type: string\n            build_template:\n              type: string\n            autorun:\n              type: boolean\n            survey_vars:\n              type: string\n            start_version:\n              type: string\n            type:\n              type: string\n            vault_key:\n              type: string\n            allow_override_branch_in_task:\n              type: boolean\n      repositories:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            git_url:\n              type: string\n            git_branch:\n              type: string\n            ssh_key:\n              type: string\n      keys:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            type:\n              type: string\n              enum: [ssh, login_password, none]\n      views:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            position:\n              type: integer\n              minimum: 0\n      inventories:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            inventory:\n              type: string\n            ssh_key:\n              type: string\n            become_key:\n              type: string\n            type:\n              type: string\n              enum: [static, static-yaml, file]\n      environments:\n        type: array\n        items:\n          type: object\n          properties:\n            name:\n              type: string\n            password:\n              type: string\n            json:\n              type: string\n            env:\n              type: string\n\n  APIToken:\n    type: object\n    properties:\n      id:\n        type: string\n      created:\n        type: string\n      #        pattern: ^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\\d{2}:\\d{2}:\\d{2}Z$\n      expired:\n        type: boolean\n      user_id:\n        type: integer\n        minimum: 1\n\n  ProjectRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: Test\n      alert:\n        type: boolean\n      alert_chat:\n        type: string\n        example: Test\n      max_parallel_tasks:\n        type: integer\n        minimum: 0\n      type:\n        type: string\n      demo:\n        description: Create Demo project resources?\n        type: boolean\n\n  Project:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      created:\n        type: string\n      #        pattern: ^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\\d{2}:\\d{2}:\\d{2}Z$\n      alert:\n        type: boolean\n      alert_chat:\n        type: string\n        example: Test\n      max_parallel_tasks:\n        type: integer\n        minimum: 0\n      type:\n        type: string\n\n  AccessKeyRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        x-example: None\n        example: None\n      type:\n        type: string\n        enum: [none, ssh, login_password]\n        x-example: none\n      project_id:\n        type: integer\n        minimum: 1\n        x-example: 2\n      override_secret:\n        type: boolean\n      login_password:\n        type: object\n        properties:\n          password:\n            type: string\n            x-example: password\n            example: password\n          login:\n            type: string\n            x-example: username\n            example: username\n      ssh:\n        type: object\n        properties:\n          login:\n            type: string\n            x-example: user\n            example: user\n          passphrase:\n            type: string\n            x-example: passphrase\n            example: passphrase\n          private_key:\n            type: string\n            x-example: private key\n            example: private key\n\n  AccessKey:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      type:\n        type: string\n        enum: [none, ssh, login_password]\n      project_id:\n        type: integer\n\n  EnvironmentSecret:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n      type:\n        type: string\n        enum: [env, var]\n\n  EnvironmentSecretRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      secret:\n        type: string\n      type:\n        type: string\n        enum: [env, var]\n      operation:\n        type: string\n        enum: [create, update, delete]\n\n  EnvironmentRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 1\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      password:\n        type: string\n      json:\n        type: string\n        example: '{}'\n      env:\n        type: string\n        example: '{}'\n      secrets:\n        type: array\n        items:\n          $ref: '#/definitions/EnvironmentSecretRequest'\n\n  Environment:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      password:\n        type: string\n      json:\n        type: string\n        example: '{}'\n      env:\n        type: string\n        example: '{}'\n      secrets:\n        type: array\n        items:\n          $ref: '#/definitions/EnvironmentSecret'\n\n  InventoryRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      inventory:\n        type: string\n      ssh_key_id:\n        type: integer\n        minimum: 1\n      become_key_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n        minimum: 1\n      type:\n        type: string\n        enum: [static, static-yaml, file, terraform-workspace]\n\n  Inventory:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      inventory:\n        type: string\n      ssh_key_id:\n        type: integer\n      become_key_id:\n        type: integer\n      repository_id:\n        type: integer\n      type:\n        type: string\n        enum: [static, static-yaml, file, terraform-workspace]\n\n  Integration:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: deploy\n      project_id:\n        type: integer\n        minimum: 1\n      template_id:\n        type: integer\n        minimum: 1\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  IntegrationRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      params:\n        $ref: '#/definitions/TaskPrams'\n\n  IntegrationExtractValueRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      value_source:\n        type: string\n        enum: [body, header]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      variable:\n        type: string\n        example: variable\n      variable_type:\n        type: string\n        enum: [environment, task]\n\n  IntegrationExtractValue:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: extract this value\n      value_source:\n        type: string\n        enum: [body, header]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      variable:\n        type: string\n        example: variable\n      variable_type:\n        type: string\n        enum: [environment, task]\n      integration_id:\n        type: integer\n\n  IntegrationMatcherRequest:\n    type: object\n    properties:\n      name:\n        type: string\n        example: deploy\n      match_type:\n        type: string\n        enum: [body, header]\n      method:\n        type: string\n        enum: [equals, unequals, contains]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      value:\n        type: string\n        example: value\n\n  IntegrationMatcher:\n    type: object\n    properties:\n      id:\n        type: integer\n      integration_id:\n        type: integer\n      name:\n        type: string\n        example: deploy\n      match_type:\n        type: string\n        enum: [body, header]\n      method:\n        type: string\n        enum: [equals, unequals, contains]\n      body_data_type:\n        type: string\n        enum: [json, xml, string]\n      key:\n        type: string\n        example: key\n      value:\n        type: string\n        example: value\n\n  IntegrationAlias:\n    type: object\n    properties:\n      id:\n        type: integer\n      url:\n        type: string\n\n  RepositoryRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      git_url:\n        type: string\n        example: git@example.com\n      git_branch:\n        type: string\n        example: master\n      ssh_key_id:\n        type: integer\n  \n  Repository:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n      git_url:\n        type: string\n        example: git@example.com\n      git_branch:\n        type: string\n        example: master\n      ssh_key_id:\n        type: integer\n\n  Task:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 23\n      template_id:\n        type: integer\n      status:\n        type: string\n      playbook:\n        type: string\n      environment:\n        type: string\n      secret:\n        type: string\n      arguments:\n        type: string\n      git_branch:\n        type: string\n      message:\n        type: string\n      inventory_id:\n        type: integer\n      params:\n        allOf:\n          - $ref: '#/definitions/AnsibleTaskParams'\n          - $ref: '#/definitions/TerraformTaskParams'\n      limit:\n        type: string\n\n  AnsibleTaskParams:\n    type: object\n    properties:\n      debug:\n        type: boolean\n      dry_run:\n        type: boolean\n      diff:\n        type: boolean\n      limit:\n        type: array\n        items:\n          type: string\n      tags:\n        type: array\n        items:\n          type: string\n      skip_tags:\n        type: array\n        items:\n          type: string\n\n  TerraformTaskParams:\n    type: object\n    properties:\n      plan:\n        type: boolean\n      destroy:\n        type: boolean\n      auto_approve:\n        type: boolean\n      upgrade:\n        type: boolean\n\n  TaskPrams:\n    type: object\n    properties:\n      environment:\n        type: string\n      git_branch:\n        type: string\n      message:\n        type: string\n      inventory_id:\n        type: integer\n      arguments:\n        type: string\n      params:\n        allOf:\n          - $ref: '#/definitions/AnsibleTaskParams'\n          - $ref: '#/definitions/TerraformTaskParams'\n\n  TaskOutput:\n    type: object\n    properties:\n      task_id:\n        type: integer\n        example: 23\n      time:\n        type: string\n        format: date-time\n      output:\n        type: string\n\n  TemplateRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n        example: 1\n      project_id:\n        type: integer\n        minimum: 1\n      inventory_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n        minimum: 1\n      environment_id:\n        type: integer\n        minimum: 1\n      view_id:\n        type: integer\n        minimum: 1\n      vaults:\n        type: array\n        items:\n          $ref: '#/definitions/TemplateVault'\n      name:\n        type: string\n        example: Test\n      playbook:\n        type: string\n        example: test.yml\n      arguments:\n        type: string\n        example: '[]'\n      description:\n        type: string\n        example: Hello, World!\n      allow_override_args_in_task:\n        type: boolean\n        example: false\n      limit:\n        type: string\n        example: ''\n      suppress_success_alerts:\n        type: boolean\n      app:\n        type: string\n        example: ansible\n      git_branch:\n        type: string\n        example: main\n      survey_vars:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVar\"\n      type:\n        type: string\n        enum: [\"\", build, deploy]\n      start_version:\n        type: string\n      build_template_id:\n        type: integer\n      autorun:\n        type: boolean\n\n  Template:\n    type: object\n    properties:\n      id:\n        type: integer\n        minimum: 1\n      project_id:\n        type: integer\n        minimum: 1\n      inventory_id:\n        type: integer\n        minimum: 1\n      repository_id:\n        type: integer\n      environment_id:\n        type: integer\n        minimum: 1\n      view_id:\n        type: integer\n        minimum: 1\n      name:\n        type: string\n        example: Test\n      playbook:\n        type: string\n        example: test.yml\n      arguments:\n        type: string\n        example: '[]'\n      description:\n        type: string\n        example: Hello, World!\n      allow_override_args_in_task:\n        type: boolean\n        example: false\n      suppress_success_alerts:\n        type: boolean\n      app:\n        type: string\n      git_branch:\n        type: string\n        example: main\n      type:\n        type: string\n        enum: [\"\", build, deploy]\n      start_version:\n        type: string\n      build_template_id:\n        type: integer\n      autorun:\n        type: boolean\n      survey_vars:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVar\"\n      vaults:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateVault\"\n\n  TemplateSurveyVar:\n    type: object\n    properties:\n      name:\n        type: string\n      title:\n        type: string\n      description:\n        type: string\n      type:\n        type: string\n        enum: [\"\", int, enum, secret] # String => \"\", Integer => \"int\"\n        example: int\n      required:\n        type: boolean\n      values:\n        type: array\n        items:\n          $ref: \"#/definitions/TemplateSurveyVarValue\"\n\n  TemplateSurveyVarValue:\n    type: object\n    properties:\n      name:\n        type: string\n      value:\n        type: string\n\n  TemplateVault:\n    type: object\n    properties:\n      id:\n        type: integer\n      name:\n        type: string\n        example: default\n      type:\n        type: string\n        enum: [password, script]\n        example: script\n      vault_key_id:\n        type: integer\n      script:\n        type: string\n        example: path/to/script-client.py\n\n  ScheduleRequest:\n    type: object\n    properties:\n      id:\n        type: integer\n      cron_format:\n        type: string\n        x-example: \"* * * 1 *\"\n        example: \"* * * 1 *\"\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      name:\n        type: string\n      active:\n        type: boolean\n      run_at:\n        type: string\n        format: date-time\n      type:\n        type: string\n        enum: ['', 'run_at']\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  Schedule:\n    type: object\n    properties:\n      id:\n        type: integer\n      cron_format:\n        type: string\n      project_id:\n        type: integer\n      template_id:\n        type: integer\n      name:\n        type: string\n      active:\n        type: boolean\n      run_at:\n        type: string\n        format: date-time\n      type:\n        type: string\n        enum: ['', 'run_at']\n      task_params:\n        $ref: '#/definitions/TaskPrams'\n\n  ViewRequest:\n    type: object\n    properties:\n      title:\n        type: string\n        example: Test\n      project_id:\n        type: integer\n        minimum: 1\n      position:\n        type: integer\n        minimum: 1\n  View:\n    type: object\n    properties:\n      id:\n        type: integer\n      title:\n        type: string\n      project_id:\n        type: integer\n      position:\n        type: integer\n\n  Runner:\n    type: object\n    properties:\n      token:\n        type: string\n\n  Event:\n    type: object\n    properties:\n      project_id:\n        type: integer\n      user_id:\n        type: integer\n      object_id:\n        type: integer\n      object_type:\n        type: string\n      description:\n        type: string\n\n  InfoType:\n    type: object\n    properties:\n      version:\n        type: string\n      ansible:\n        type: string\n      web_host:\n        type: string\n      use_remote_runner:\n        type: boolean\n      auth_methods:\n        type: object\n      git_client:\n        type: string\n      schedule_timezone:\n        type: string\n      premium_features:\n        type: object\n\nsecurityDefinitions:\n  cookie:\n    type: apiKey\n    name: Cookie\n    in: header\n  bearer:\n    type: apiKey\n    name: Authorization\n    in: header\n\nsecurity:\n  - bearer: []\n  - cookie: []\n\nparameters:\n  project_id:\n    name: project_id\n    description: Project ID\n    in: path\n    type: integer\n    required: true\n    x-example: 1\n  user_id:\n    name: user_id\n    description: User ID\n    in: path\n    type: integer\n    required: true\n    x-example: 2\n  key_id:\n    name: key_id\n    description: key ID\n    in: path\n    type: integer\n    required: true\n    x-example: 3\n  repository_id:\n    name: repository_id\n    description: repository ID\n    in: path\n    type: integer\n    required: true\n    x-example: 4\n  inventory_id:\n    name: inventory_id\n    description: inventory ID\n    in: path\n    type: integer\n    required: true\n    x-example: 5\n  environment_id:\n    name: environment_id\n    description: environment ID\n    in: path\n    type: integer\n    required: true\n    x-example: 6\n  template_id:\n    name: template_id\n    description: template ID\n    in: path\n    type: integer\n    required: true\n    x-example: 7\n  task_id:\n    name: task_id\n    description: task ID\n    in: path\n    type: integer\n    required: true\n    x-example: 8\n  schedule_id:\n    name: schedule_id\n    description: schedule ID\n    in: path\n    type: integer\n    required: true\n    x-example: 9\n  view_id:\n    name: view_id\n    description: view ID\n    in: path\n    type: integer\n    required: true\n    x-example: 10\n  integration_id:\n    name: integration_id\n    description: integration ID\n    in: path\n    type: integer\n    required: true\n    x-example: 11\n  extractvalue_id:\n    name: extractvalue_id\n    description: extractValue ID\n    in: path\n    type: integer\n    required: true\n    x-example: 12\n  matcher_id:\n    name: matcher_id\n    description: matcher ID\n    in: path\n    type: integer\n    required: true\n    x-example: 13\n  alias_id:\n    name: alias_id\n    description: Integration Alias ID\n    in: path\n    type: integer\n    required: true\n    x-example: 15\n  invite_id:\n    name: invite_id\n    description: Invite ID\n    in: path\n    type: integer\n    required: true\n    x-example: 14\n\npaths:\n  /debug/gc:\n    post:\n      summary: Garbage collector\n      description: Run the garbage collector\n      responses:\n        204:\n          description: Successful \"OK\" reply\n\n  /ping:\n    get:\n      summary: PING test\n      produces:\n        - text/plain\n      security: []   # No security\n      responses:\n        200:\n          description: Successful \"PONG\" reply\n          schema:\n            $ref: \"#/definitions/Pong\"\n          headers:\n            content-type:\n              type: string\n              x-example: text/plain; charset=utf-8\n\n  /ws:\n    get:\n      summary: Websocket handler\n      schemes:\n        - ws\n        - wss\n      responses:\n        200:\n          description: OK\n        401:\n          description: not authenticated\n\n  /info:\n    get:\n      summary: Fetches information about semaphore\n      description: you must be authenticated to use this\n      responses:\n        200:\n          description: ok\n          schema:\n            $ref: \"#/definitions/InfoType\"\n\n  # Authentication\n  /auth/login:\n    get:\n      tags:\n        - authentication\n      summary: Fetches login metadata\n      description: Fetches metadata for login, such as available OIDC providers\n      security: []\n      responses:\n        200:\n          description: Login metadata\n          schema:\n            $ref: \"#/definitions/LoginMetadata\"\n    post:\n      tags:\n        - authentication\n      summary: Performs Login\n      description: Upon success you will be logged in\n      security: []   # No security\n      parameters:\n        - name: Login Body\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/Login'\n      responses:\n        204:\n          description: You are logged in\n        400:\n          description: something in body is missing / is invalid\n\n  /auth/logout:\n    post:\n      tags:\n        - authentication\n      summary: Destroys current session\n      responses:\n        204:\n          description: Your session was successfully nuked\n\n  /auth/oidc/{provider_id}/login:\n    parameters:\n      - name: provider_id\n        in: path\n        type: string\n        required: true\n        x-example: \"mysso\"\n    get:\n      tags:\n        - authentication\n      summary: Begin OIDC authentication flow and redirect to OIDC provider\n      description: The user agent is redirected to this endpoint when chosing to sign in via OIDC\n      responses:\n        302:\n          description: Redirection to the OIDC provider on success, or to the login page on error\n\n  /auth/oidc/{provider_id}/redirect:\n    parameters:\n      - name: provider_id\n        in: path\n        type: string\n        required: true\n        x-example: \"mysso\"\n    get:\n      tags:\n        - authentication\n      summary: Finish OIDC authentication flow, upon succes you will be logged in\n      description: The user agent is redirected here by the OIDC provider to complete authentication\n      responses:\n        302:\n          description: Redirection to the Semaphore root URL on success, or to the login page on error\n\n  # User Tokens\n  /user/:\n    get:\n      tags:\n        - user\n      summary: Fetch logged in user\n      responses:\n        200:\n          description: User\n          schema:\n            $ref: \"#/definitions/User\"\n\n  /user/tokens:\n    get:\n      tags:\n        - authentication\n        - user\n      summary: Fetch API tokens for user\n      responses:\n        200:\n          description: API Tokens\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/APIToken\"\n    post:\n      tags:\n        - authentication\n        - user\n      summary: Create an API token\n      responses:\n        201:\n          description: API Token\n          schema:\n            $ref: \"#/definitions/APIToken\"\n\n  /user/tokens/{api_token_id}:\n    parameters:\n      - name: api_token_id\n        in: path\n        type: string\n        required: true\n        x-example: \"kwofd61g93-yuqvex8efmhjkgnbxlo8mp1tin6spyhu=\"\n    delete:\n      tags:\n        - authentication\n        - user\n      summary: Expires API token\n      responses:\n        204:\n          description: Expired API Token\n\n  # User Profiles\n  /users:\n    get:\n      tags:\n        - user\n      summary: Fetches all users\n      responses:\n        200:\n          description: Users\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/User\"\n    post:\n      tags:\n        - user\n      summary: Creates a user\n      consumes:\n        - application/json\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/UserRequest\"\n      responses:\n        400:\n          description: User creation failed\n        201:\n          description: User created\n          schema:\n            $ref: \"#/definitions/User\"\n\n  /users/{user_id}/:\n    parameters:\n      - $ref: \"#/parameters/user_id\"\n    get:\n      tags:\n        - user\n      summary: Fetches a user profile\n      responses:\n        200:\n          description: User profile\n          schema:\n            $ref: \"#/definitions/User\"\n    put:\n      tags:\n        - user\n      summary: Updates user details\n      consumes:\n        - application/json\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/UserPutRequest\"\n      responses:\n        204:\n          description: User Updated\n\n    delete:\n      tags:\n        - user\n      summary: Deletes user\n      responses:\n        204:\n          description: User deleted\n\n  /users/{user_id}/password:\n    parameters:\n      - $ref: \"#/parameters/user_id\"\n    post:\n      tags:\n        - user\n      summary: Updates user password\n      consumes:\n        - application/json\n      parameters:\n        - name: Password\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              password:\n                type: string\n                format: password\n      responses:\n        204:\n          description: Password updated\n\n  # Projects\n  /projects:\n    get:\n      tags:\n        - project\n      summary: Get projects\n      responses:\n        200:\n          description: List of projects\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Project\"\n    post:\n      tags:\n        - project\n      summary: Create a new project\n      consumes:\n        - application/json\n      parameters:\n        - name: Project\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/ProjectRequest'\n      responses:\n        201:\n          description: Created project\n          schema:\n            $ref: \"#/definitions/Project\"\n  \n  /projects/restore:\n    post:\n      tags:\n        - project\n      summary: Restore Project\n      consumes:\n        - application/json\n      parameters:\n        - name: Backup\n          in: body\n          required: true\n          schema:\n            $ref: '#/definitions/ProjectBackup'\n      responses:\n        200:\n          description: Created project\n          schema:\n            $ref: \"#/definitions/Project\"\n\n  /events:\n    get:\n      summary: Get Events related to Semaphore and projects you are part of\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n  \n  /events/last:\n    get:\n      summary: Get last 200 Events related to Semaphore and projects you are part of\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n\n  /project/{project_id}/:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Fetch project\n      responses:\n        200:\n          description: Project\n          schema:\n            $ref: \"#/definitions/Project\"\n    put:\n      tags:\n        - project\n      summary: Update project\n      parameters:\n        - name: Project\n          in: body\n          required: true\n          schema:\n            allOf:\n              - $ref: '#/definitions/ProjectRequest'\n              - properties:\n                  id:\n                    type: integer\n                    minimum: 1\n      responses:\n        204:\n          description: Project saved\n    delete:\n      tags:\n        - project\n      summary: Delete project\n      responses:\n        204:\n          description: Project deleted\n\n  /project/{project_id}/backup:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Backup A Project\n      responses:\n        200:\n          description: Backup\n          schema:\n            $ref: '#/definitions/ProjectBackup'\n\n  /project/{project_id}/role:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Fetch permissions of the current user for project\n      responses:\n        200:\n          description: Permissions\n          schema:\n            type: object\n            properties:\n              role:\n                type: string\n                example: owner\n              permissions:\n                type: number\n                example: 0\n\n\n  /project/{project_id}/events:\n    parameters:\n      - $ref: '#/parameters/project_id'\n    get:\n      tags:\n        - project\n      summary: Get Events related to this project\n      responses:\n        200:\n          description: Array of events in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Event'\n\n  # User management\n  /project/{project_id}/users:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Get users linked to project\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, username, email, role]\n          description: sorting name\n          x-example: email\n        - name: order\n          in: query\n          required: true\n          type: string\n          enum: [asc, desc]\n          description: ordering manner\n          x-example: desc\n      responses:\n        200:\n          description: Users\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/ProjectUser\"\n    post:\n      tags:\n        - project\n      summary: Link user to project\n      parameters:\n        - name: User\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              user_id:\n                type: integer\n                minimum: 2\n              role:\n                type: string\n                enum: [owner, manager, task_runner, guest]\n                example: owner\n      responses:\n        204:\n          description: User added\n  /project/{project_id}/users/{user_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/user_id\"\n    delete:\n      tags:\n        - project\n      summary: Removes user from project\n      responses:\n        204:\n          description: User removed\n    put:\n      parameters:\n        - name: Project User\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              role:\n                type: string\n                enum: [owner, manager, task_runner, guest]\n                example: owner\n      summary: Update user role\n      tags:\n        - project\n      responses:\n        204:\n          description: User updated\n\n  # Invite management\n  /project/{project_id}/invites:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Get invitations for project\n      parameters:\n        - name: sort\n          in: query\n          required: false\n          type: string\n          enum: [created, status, role]\n          description: sorting field\n          x-example: created\n        - name: order\n          in: query\n          required: false\n          type: string\n          enum: [asc, desc]\n          description: ordering manner\n          x-example: desc\n      responses:\n        200:\n          description: Project invitations\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/ProjectInvite\"\n    post:\n      tags:\n        - project\n      summary: Create project invitation\n      parameters:\n        - name: Invite\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ProjectInviteRequest\"\n      responses:\n        201:\n          description: Invitation created\n          schema:\n            $ref: \"#/definitions/ProjectInvite\"\n        400:\n          description: Bad request (invalid role, missing user_id/email, or both provided)\n        409:\n          description: User already a member or invitation already exists\n\n  /project/{project_id}/invites/{invite_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/invite_id\"\n    get:\n      tags:\n        - project\n      summary: Get specific project invitation\n      responses:\n        200:\n          description: Project invitation\n          schema:\n            $ref: \"#/definitions/ProjectInvite\"\n        404:\n          description: Invitation not found\n#    put:\n#      tags:\n#        - project\n#      summary: Update project invitation status\n#      parameters:\n#        - name: Invite Update\n#          in: body\n#          required: true\n#          schema:\n#            type: object\n#            properties:\n#              status:\n#                type: string\n#                enum: [pending, declined, expired]\n#                example: declined\n#      responses:\n#        204:\n#          description: Invitation updated\n#        400:\n#          description: Invalid status or status transition\n#    delete:\n#      tags:\n#        - project\n#      summary: Delete project invitation\n#      responses:\n#        204:\n#          description: Invitation deleted\n#\n#  /invites/accept:\n#    post:\n#      tags:\n#        - project\n#      summary: Accept project invitation\n#      parameters:\n#        - name: Accept Invite\n#          in: body\n#          required: true\n#          schema:\n#            $ref: \"#/definitions/AcceptInviteRequest\"\n#      responses:\n#        204:\n#          description: Invitation accepted successfully\n#        400:\n#          description: Invalid token, invitation expired, or user already a member\n#        403:\n#          description: Invitation not for this user\n#        404:\n#          description: Invitation not found\n\n  /project/{project_id}/integrations:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - integration\n      summary: get all integrations\n      responses:\n        200:\n          description: integration\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Integration\"\n    post:\n      summary: create a new integration\n      tags:\n        - integration\n      parameters:\n        - name: Integration\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationRequest\"\n      responses:\n        201:\n          description: Integration Created\n          schema:\n            $ref: \"#/definitions/Integration\"\n  \n  /project/{project_id}/integrations/{integration_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration\n      responses:\n        200:\n          description: Integration Value\n          schema:\n            $ref: \"#/definitions/Integration\"\n    put:\n      tags:\n        - integration\n      summary: Update Integration\n      parameters:\n        - name: Integration\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationRequest\"\n      responses:\n        204:\n          description: Integration updated\n    delete:\n      tags:\n        - integration\n      summary: Remove integration\n      responses:\n        204:\n          description: integration removed\n  /project/{project_id}/integrations/{integration_id}/values:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration Extracted Values linked to integration extractor\n      responses:\n        200:\n          description: Integration Extracted Value\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationExtractValue\"\n    post:\n      tags:\n        - integration\n      summary: Add Integration Extracted Value\n      parameters:\n        - name: Integration Extracted Value\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationExtractValue\"\n      responses:\n        201:\n          description: Integration Extract Value Created\n        400:\n          description: Bad Integration Extract Value params\n  /project/{project_id}/integrations/{integration_id}/values/{extractvalue_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/extractvalue_id\"\n    put:\n      tags:\n        - integration\n      summary: Updates Integration ExtractValue\n      parameters:\n        - name: Integration ExtractValue\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationExtractValueRequest\"\n      responses:\n        204:\n          description: Integration Extract Value updated\n        400:\n          description: Bad integration extract value parameter\n    delete:\n      tags:\n        - integration\n      summary: Removes integration extract value\n      responses:\n        204:\n          description: integration extract value removed\n  /project/{project_id}/integrations/{integration_id}/matchers:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get Integration Matcher linked to integration extractor\n      responses:\n        200:\n          description: Integration Matcher\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationMatcher\"\n    post:\n      tags:\n        - integration\n      summary: Add Integration Matcher\n      parameters:\n        - name: Integration Matcher\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationMatcher\"\n      responses:\n        200:\n          description: Integration Matcher Created\n        400:\n          description: Bad Integration Matcher params\n  /project/{project_id}/integrations/{integration_id}/matchers/{matcher_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/matcher_id\"\n    put:\n      tags:\n        - integration\n      summary: Updates Integration Matcher\n      parameters:\n        - name: Integration Matcher\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/IntegrationMatcherRequest\"\n      responses:\n        204:\n          description: Integration Matcher updated\n        400:\n          description: Bad integration matcher parameter\n    delete:\n      tags:\n        - integration\n      summary: Removes integration matcher\n      responses:\n        204:\n          description: integration matcher removed\n\n  /project/{project_id}/integrations/aliases:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - integration\n      summary: Get all integration aliases for the project\n      responses:\n        200:\n          description: Integration Aliases\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationAlias\"\n    post:\n      tags:\n        - integration\n      summary: Create a new integration alias for the project\n      responses:\n        200:\n          description: Integration Alias Created\n          schema:\n            $ref: \"#/definitions/IntegrationAlias\"\n\n  /project/{project_id}/integrations/aliases/{alias_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/alias_id\"\n    delete:\n      tags:\n        - integration\n      summary: Remove integration alias\n      responses:\n        204:\n          description: integration alias removed\n\n  /project/{project_id}/integrations/{integration_id}/aliases:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n    get:\n      tags:\n        - integration\n      summary: Get all aliases for an integration\n      responses:\n        200:\n          description: Integration Aliases\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/IntegrationAlias\"\n    post:\n      tags:\n        - integration\n      summary: Create a new alias for an integration\n      responses:\n        200:\n          description: Integration Alias Created\n          schema:\n            $ref: \"#/definitions/IntegrationAlias\"\n\n  /project/{project_id}/integrations/{integration_id}/aliases/{alias_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/integration_id\"\n      - $ref: \"#/parameters/alias_id\"\n    delete:\n      tags:\n        - integration\n      summary: Remove integration alias\n      responses:\n        204:\n          description: integration alias removed\n\n  # project access keys\n  /project/{project_id}/keys:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - key-store\n      summary: Get access keys linked to project\n      parameters:\n        # TODO - the space in this parameter name results in a dredd warning\n        - name: Key type\n          in: query\n          required: false\n          type: string\n          enum: [none, ssh, login_password]\n          description: Filter by key type\n          x-example: none\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, type]\n          description: sorting name\n          x-example: type\n        - name: order\n          in: query\n          required: true\n          type: string\n          enum: [asc, desc]\n          description: ordering manner\n          x-example: asc\n      responses:\n        200:\n          description: Access Keys\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/AccessKey\"\n    post:\n      tags:\n        - key-store\n      summary: Add access key\n      parameters:\n        - name: Access Key\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/AccessKeyRequest\"\n      responses:\n        201:\n          description: Access Key created\n          schema:\n            $ref: \"#/definitions/AccessKey\"\n        400:\n          description: Bad type\n  /project/{project_id}/keys/{key_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/key_id\"\n    put:\n      tags:\n        - key-store\n      summary: Updates access key\n      parameters:\n        - name: Access Key\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/AccessKeyRequest\"\n      responses:\n        204:\n          description: Key updated\n        400:\n          description: Bad type\n    delete:\n      tags:\n        - key-store\n      summary: Removes access key\n      responses:\n        204:\n          description: access key removed\n\n  # project repositories\n  /project/{project_id}/repositories:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - repository\n      summary: Get repositories\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          enum: [name, git_url, ssh_key]\n          description: sorting name\n        - name: order\n          in: query\n          required: true\n          type: string\n          format: asc/desc\n          enum: [asc, desc]\n          description: ordering manner\n      responses:\n        200:\n          description: repositories\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Repository\"\n    post:\n      tags:\n        - repository\n      summary: Add repository\n      parameters:\n        - name: Repository\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/RepositoryRequest\"\n      responses:\n        201:\n          description: Repository created\n          schema:\n            $ref: \"#/definitions/Repository\"\n\n  /project/{project_id}/repositories/{repository_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/repository_id\"\n    get:\n      tags:\n        - repository\n      summary: Get repository\n      responses:\n        200:\n          description: repository object\n          schema:\n            $ref: \"#/definitions/Repository\"\n    put:\n      tags:\n        - repository\n      summary: Updates repository\n      parameters:\n        - name: Repository\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/RepositoryRequest\"\n      responses:\n        204:\n          description: Repository updated\n        400:\n          description: Bad request\n    delete:\n      tags:\n        - repository\n      summary: Removes repository\n      responses:\n        204:\n          description: repository removed\n\n  # project inventory\n  /project/{project_id}/inventory:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - inventory\n      summary: Get inventory\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          description: sorting name\n          enum: [name, type]\n        - name: order\n          in: query\n          required: true\n          type: string\n          description: ordering manner\n          enum: [asc, desc]\n      responses:\n        200:\n          description: inventory\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Inventory\"\n    post:\n      tags:\n        - inventory\n      summary: create inventory\n      parameters:\n        - name: Inventory\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/InventoryRequest\"\n      responses:\n        201:\n          description: inventory created\n          schema:\n            $ref: \"#/definitions/Inventory\"\n  /project/{project_id}/inventory/{inventory_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/inventory_id\"\n    get:\n      tags:\n        - inventory\n      summary: Get inventory\n      responses:\n        200:\n          description: inventory object\n          schema:\n            $ref: \"#/definitions/Inventory\"\n    put:\n      tags:\n        - inventory\n      summary: Updates inventory\n      parameters:\n        - name: Inventory\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/InventoryRequest\"\n      responses:\n        204:\n          description: Inventory updated\n    delete:\n      tags:\n        - inventory\n      summary: Removes inventory\n      responses:\n        204:\n          description: inventory removed\n\n  # project environment\n  /project/{project_id}/environment:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - variable-group\n      summary: Get environment\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          format: name\n          description: sorting name\n          x-example: name\n        - name: order\n          in: query\n          required: true\n          type: string\n          format: asc/desc\n          description: ordering manner\n          x-example: desc\n      responses:\n        200:\n          description: environment\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Environment\"\n    post:\n      tags:\n        - variable-group\n      summary: Add environment\n      parameters:\n        - name: environment\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/EnvironmentRequest\"\n      responses:\n        201:\n          description: Environment created\n          schema:\n            $ref: \"#/definitions/Environment\"\n  /project/{project_id}/environment/{environment_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/environment_id\"\n    get:\n      tags:\n        - variable-group\n      summary: Get environment\n      responses:\n        200:\n          description: environment object\n          schema:\n            $ref: \"#/definitions/Environment\"\n    put:\n      tags:\n        - variable-group\n      summary: Update environment\n      parameters:\n        - name: environment\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/EnvironmentRequest\"\n      responses:\n        204:\n          description: Environment Updated\n    delete:\n      tags:\n        - variable-group\n      summary: Removes environment\n      responses:\n        204:\n          description: environment removed\n\n  # project templates\n  /project/{project_id}/templates:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - template\n      summary: Get template\n      parameters:\n        - name: sort\n          in: query\n          required: true\n          type: string\n          description: sorting name\n          enum: [name, playbook, ssh_key, inventory, environment, repository]\n        - name: order\n          in: query\n          required: true\n          type: string\n          description: ordering manner\n          enum: [asc, desc]\n      responses:\n        200:\n          description: template\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Template\"\n              properties:\n                survey_vars:\n                  type: array\n                  items:\n                    $ref: \"#/definitions/TemplateSurveyVar\"\n                last_task:\n                  $ref: \"#/definitions/Task\"\n    post:\n      tags:\n        - template\n      summary: create template\n      parameters:\n        - name: template\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/TemplateRequest\"\n      responses:\n        201:\n          description: template created\n          schema:\n            $ref: \"#/definitions/Template\"\n  /project/{project_id}/templates/{template_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/template_id\"\n    get:\n      tags:\n        - template\n      summary: Get template\n      responses:\n        200:\n          description: template object\n          schema:\n            $ref: \"#/definitions/Template\"\n    put:\n      tags:\n        - template\n      summary: Updates template\n      parameters:\n        - name: template\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/TemplateRequest\"\n      responses:\n        204:\n          description: template updated\n    delete:\n      tags:\n        - template\n      summary: Removes template\n      responses:\n        204:\n          description: template removed\n\n  /project/{project_id}/templates/{template_id}/stop_all_tasks:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/template_id\"\n    post:\n      tags:\n        - template\n      summary: Stop all active tasks of template\n      parameters:\n        - name: body\n          in: body\n          required: false\n          schema:\n            type: object\n            properties:\n              force:\n                type: boolean\n                description: Force stop (kill) all tasks immediately\n      responses:\n        204:\n          description: tasks stopped\n\n\n  # project schedules\n  /project/{project_id}/schedules/{schedule_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/schedule_id\"\n    get:\n      tags:\n        - schedule\n      summary: Get schedule\n      responses:\n        200:\n          description: Schedule\n          schema:\n            $ref: \"#/definitions/Schedule\"\n    delete:\n      tags:\n        - schedule\n      summary: Deletes schedule\n      responses:\n        204:\n          description: schedule deleted\n    put:\n      tags:\n        - schedule\n      summary: Updates schedule\n      parameters:\n        - name: schedule\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ScheduleRequest\"\n      responses:\n        204:\n          description: schedule updated\n\n  /project/{project_id}/schedules:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    post:\n      tags:\n        - schedule\n      summary: create schedule\n      parameters:\n        - name: schedule\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ScheduleRequest\"\n      responses:\n        201:\n          description: schedule created\n          schema:\n            $ref: \"#/definitions/Schedule\"\n\n  # project views\n  /project/{project_id}/views:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - project\n      summary: Get view\n      responses:\n        200:\n          description: view\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/View\"\n    post:\n      tags:\n        - project\n      summary: create view\n      parameters:\n        - name: view\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ViewRequest\"\n      responses:\n        201:\n          description: view created\n          schema:\n            $ref: \"#/definitions/View\"\n  /project/{project_id}/views/{view_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/view_id\"\n    get:\n      tags:\n        - project\n      summary: Get view\n      responses:\n        200:\n          description: view object\n          schema:\n            $ref: \"#/definitions/View\"\n    put:\n      tags:\n        - project\n      summary: Updates view\n      parameters:\n        - name: view\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/ViewRequest\"\n      responses:\n        204:\n          description: view updated\n    delete:\n      tags:\n        - project\n      summary: Removes view\n      responses:\n        204:\n          description: view removed\n\n\n  # tasks\n  /project/{project_id}/tasks:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - task\n      summary: Get Tasks related to current project\n      responses:\n        200:\n          description: Array of tasks in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Task'\n    post:\n      tags:\n        - task\n      summary: Starts a job\n      parameters:\n        - name: task\n          in: body\n          required: true\n          schema:\n            type: object\n            properties:\n              template_id:\n                type: integer\n              debug:\n                type: boolean\n              dry_run:\n                type: boolean\n              diff:\n                type: boolean\n              playbook:\n                type: string\n              environment:\n                type: string\n              limit:\n                type: string\n              git_branch:\n                type: string\n              message:\n                type: string\n              arguments:\n                type: string\n              inventory_id:\n                type: integer\n      responses:\n        201:\n          description: Task queued\n          schema:\n            $ref: \"#/definitions/Task\"\n\n\n  /project/{project_id}/tasks/last:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n    get:\n      tags:\n        - task\n      summary: Get last 200 Tasks related to current project\n      responses:\n        200:\n          description: Array of tasks in chronological order\n          schema:\n            type: array\n            items:\n              $ref: '#/definitions/Task'\n\n\n  /project/{project_id}/tasks/{task_id}/stop:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: '#/parameters/task_id'\n    post:\n      tags:\n        - task\n      summary: Stop a job\n      parameters:\n        - name: body\n          in: body\n          required: false\n          schema:\n            type: object\n            properties:\n              force:\n                type: boolean\n                description: Force stop (kill) the task immediately\n      responses:\n        204:\n          description: Task queued\n\n  /project/{project_id}/tasks/{task_id}:\n    parameters:\n      - $ref: \"#/parameters/project_id\"\n      - $ref: \"#/parameters/task_id\"\n    get:\n      tags:\n        - task\n      summary: Get a single task\n      responses:\n        200:\n          description: Task\n          schema:\n            $ref: \"#/definitions/Task\"\n    delete:\n      tags:\n        - task\n      summary: Deletes task (including output)\n      responses:\n        204:\n          description: task deleted\n\n  /project/{project_id}/tasks/{task_id}/output:\n    parameters:\n      - $ref: '#/parameters/project_id'\n      - $ref: '#/parameters/task_id'\n    get:\n      tags:\n        - task\n      summary: Get task output\n      responses:\n        200:\n          description: output\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/TaskOutput\"\n\n  /project/{project_id}/tasks/{task_id}/raw_output:\n    parameters:\n      - $ref: '#/parameters/project_id'\n      - $ref: '#/parameters/task_id'\n    get:\n      tags:\n        - task\n      summary: Get task raw output\n      responses:\n        200:\n          description: output\n          headers:\n            content-type:\n              type: string\n              x-example: text/plain; charset=utf-8\n  /apps:\n    get:\n      summary: Get apps\n      responses:\n        200:\n          description: Apps\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/App\"\n\n  /project/{project_id}/notifications/test:\n    post:\n      tags:\n        - project\n      summary: Send test notification\n      description: Sends a test notification to all enabled messengers for the project\n      parameters:\n        - $ref: \"#/parameters/project_id\"\n      responses:\n        409:\n          description: Alerts not enabled for the project\n#        204:\n#          description: Test notification dispatched (or alerts disabled)"
  },
  {
    "path": "web/public/swagger/index.css",
    "content": "html {\n    box-sizing: border-box;\n    overflow: -moz-scrollbars-vertical;\n    overflow-y: scroll;\n}\n\n*,\n*:before,\n*:after {\n    box-sizing: inherit;\n}\n\nbody {\n    margin: 0;\n    background: #fafafa;\n}\n"
  },
  {
    "path": "web/public/swagger/index.html",
    "content": "<!-- HTML for static distribution bundle build -->\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <title>Swagger UI</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"./swagger-ui.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"index.css\" />\n    <link rel=\"icon\" type=\"image/png\" href=\"./favicon-32x32.png\" sizes=\"32x32\" />\n    <link rel=\"icon\" type=\"image/png\" href=\"./favicon-16x16.png\" sizes=\"16x16\" />\n  </head>\n\n  <body>\n    <div id=\"swagger-ui\"></div>\n    <script src=\"./swagger-ui-bundle.js\" charset=\"UTF-8\"> </script>\n    <script src=\"./swagger-ui-standalone-preset.js\" charset=\"UTF-8\"> </script>\n    <script src=\"./swagger-initializer.js\" charset=\"UTF-8\"> </script>\n  </body>\n</html>\n"
  },
  {
    "path": "web/public/swagger/oauth2-redirect.html",
    "content": "<!doctype html>\n<html lang=\"en-US\">\n<head>\n    <title>Swagger UI: OAuth2 Redirect</title>\n</head>\n<body>\n<script>\n    'use strict';\n    function run () {\n        var oauth2 = window.opener.swaggerUIRedirectOauth2;\n        var sentState = oauth2.state;\n        var redirectUrl = oauth2.redirectUrl;\n        var isValid, qp, arr;\n\n        if (/code|token|error/.test(window.location.hash)) {\n            qp = window.location.hash.substring(1).replace('?', '&');\n        } else {\n            qp = location.search.substring(1);\n        }\n\n        arr = qp.split(\"&\");\n        arr.forEach(function (v,i,_arr) { _arr[i] = '\"' + v.replace('=', '\":\"') + '\"';});\n        qp = qp ? JSON.parse('{' + arr.join() + '}',\n                function (key, value) {\n                    return key === \"\" ? value : decodeURIComponent(value);\n                }\n        ) : {};\n\n        isValid = qp.state === sentState;\n\n        if ((\n          oauth2.auth.schema.get(\"flow\") === \"accessCode\" ||\n          oauth2.auth.schema.get(\"flow\") === \"authorizationCode\" ||\n          oauth2.auth.schema.get(\"flow\") === \"authorization_code\"\n        ) && !oauth2.auth.code) {\n            if (!isValid) {\n                oauth2.errCb({\n                    authId: oauth2.auth.name,\n                    source: \"auth\",\n                    level: \"warning\",\n                    message: \"Authorization may be unsafe, passed state was changed in server. The passed state wasn't returned from auth server.\"\n                });\n            }\n\n            if (qp.code) {\n                delete oauth2.state;\n                oauth2.auth.code = qp.code;\n                oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});\n            } else {\n                let oauthErrorMsg;\n                if (qp.error) {\n                    oauthErrorMsg = \"[\"+qp.error+\"]: \" +\n                        (qp.error_description ? qp.error_description+ \". \" : \"no accessCode received from the server. \") +\n                        (qp.error_uri ? \"More info: \"+qp.error_uri : \"\");\n                }\n\n                oauth2.errCb({\n                    authId: oauth2.auth.name,\n                    source: \"auth\",\n                    level: \"error\",\n                    message: oauthErrorMsg || \"[Authorization failed]: no accessCode received from the server.\"\n                });\n            }\n        } else {\n            oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});\n        }\n        window.close();\n    }\n\n    if (document.readyState !== 'loading') {\n        run();\n    } else {\n        document.addEventListener('DOMContentLoaded', function () {\n            run();\n        });\n    }\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "web/public/swagger/swagger-initializer.js",
    "content": "window.onload = function () {\n  // <editor-fold desc=\"Changeable Configuration Block\">\n\n  // the following lines will be replaced by docker/configurator, when it runs in a docker-container\n  window.ui = SwaggerUIBundle({\n    url: 'api-docs.yml',\n    dom_id: '#swagger-ui',\n    deepLinking: true,\n    presets: [\n      SwaggerUIBundle.presets.apis,\n      SwaggerUIStandalonePreset,\n    ],\n    plugins: [\n      SwaggerUIBundle.plugins.DownloadUrl,\n    ],\n    layout: 'StandaloneLayout',\n  });\n\n  // </editor-fold>\n};\n"
  },
  {
    "path": "web/public/swagger/swagger-ui-bundle.js",
    "content": "/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */\n!function webpackUniversalModuleDefinition(s,o){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define([],o):\"object\"==typeof exports?exports.SwaggerUIBundle=o():s.SwaggerUIBundle=o()}(this,(()=>(()=>{var s={251:(s,o)=>{o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<<x)-1,j=C>>1,L=-7,B=i?u-1:0,$=i?-1:1,V=s[o+B];for(B+=$,_=V&(1<<-L)-1,V>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(V?-1:1);w+=Math.pow(2,a),_-=j}return(V?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<<j)-1,B=L>>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,V=a?0:_-1,U=a?1:-1,z=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+V]=255&x,V+=U,x/=256,u-=8);for(w=w<<u|x,j+=u;j>0;s[i+V]=255&w,V+=U,w/=256,j-=8);s[i+V-U]|=128*z}},462:(s,o,i)=>{\"use strict\";var a=i(40975);s.exports=a},659:(s,o,i)=>{var a=i(51873),u=Object.prototype,_=u.hasOwnProperty,w=u.toString,x=a?a.toStringTag:void 0;s.exports=function getRawTag(s){var o=_.call(s,x),i=s[x];try{s[x]=void 0;var a=!0}catch(s){}var u=w.call(s);return a&&(o?s[x]=i:delete s[x]),u}},694:(s,o,i)=>{\"use strict\";i(91599);var a=i(37257);i(12560),s.exports=a},953:(s,o,i)=>{\"use strict\";s.exports=i(53375)},1733:s=>{var o=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;s.exports=function asciiWords(s){return s.match(o)||[]}},1882:(s,o,i)=>{var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return\"[object Function]\"==o||\"[object GeneratorFunction]\"==o||\"[object AsyncFunction]\"==o||\"[object Proxy]\"==o}},1907:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype,_=u.call,w=a&&u.bind.bind(_,_);s.exports=a?w:function(s){return function(){return _.apply(s,arguments)}}},2205:function(s,o,i){var a;a=void 0!==i.g?i.g:this,s.exports=function(s){if(s.CSS&&s.CSS.escape)return s.CSS.escape;var cssEscape=function(s){if(0==arguments.length)throw new TypeError(\"`CSS.escape` requires an argument.\");for(var o,i=String(s),a=i.length,u=-1,_=\"\",w=i.charCodeAt(0);++u<a;)0!=(o=i.charCodeAt(u))?_+=o>=1&&o<=31||127==o||0==u&&o>=48&&o<=57||1==u&&o>=48&&o<=57&&45==w?\"\\\\\"+o.toString(16)+\" \":0==u&&1==a&&45==o||!(o>=128||45==o||95==o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?\"\\\\\"+i.charAt(u):i.charAt(u):_+=\"�\";return _};return s.CSS||(s.CSS={}),s.CSS.escape=cssEscape,cssEscape}(a)},2209:(s,o,i)=>{\"use strict\";var a,u=i(9404),_=function productionTypeChecker(){invariant(!1,\"ImmutablePropTypes type checking code is stripped in production.\")};_.isRequired=_;var w=function getProductionTypeChecker(){return _};function getPropType(s){var o=typeof s;return Array.isArray(s)?\"array\":s instanceof RegExp?\"object\":s instanceof u.Iterable?\"Immutable.\"+s.toSource().split(\" \")[0]:o}function createChainableTypeChecker(s){function checkType(o,i,a,u,_,w){for(var x=arguments.length,C=Array(x>6?x-6:0),j=6;j<x;j++)C[j-6]=arguments[j];return w=w||a,u=u||\"<<anonymous>>\",null!=i[a]?s.apply(void 0,[i,a,u,_,w].concat(C)):o?new Error(\"Required \"+_+\" `\"+w+\"` was not specified in `\"+u+\"`.\"):void 0}var o=checkType.bind(null,!1);return o.isRequired=checkType.bind(null,!0),o}function createIterableSubclassTypeChecker(s,o){return function createImmutableTypeChecker(s,o){return createChainableTypeChecker((function validate(i,a,u,_,w){var x=i[a];if(!o(x)){var C=getPropType(x);return new Error(\"Invalid \"+_+\" `\"+w+\"` of type `\"+C+\"` supplied to `\"+u+\"`, expected `\"+s+\"`.\")}return null}))}(\"Iterable.\"+s,(function(s){return u.Iterable.isIterable(s)&&o(s)}))}(a={listOf:w,mapOf:w,orderedMapOf:w,setOf:w,orderedSetOf:w,stackOf:w,iterableOf:w,recordOf:w,shape:w,contains:w,mapContains:w,orderedMapContains:w,list:_,map:_,orderedMap:_,set:_,orderedSet:_,stack:_,seq:_,record:_,iterable:_}).iterable.indexed=createIterableSubclassTypeChecker(\"Indexed\",u.Iterable.isIndexed),a.iterable.keyed=createIterableSubclassTypeChecker(\"Keyed\",u.Iterable.isKeyed),s.exports=a},2404:(s,o,i)=>{var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},2523:s=>{s.exports=function baseFindIndex(s,o,i,a){for(var u=s.length,_=i+(a?1:-1);a?_--:++_<u;)if(o(s[_],_,s))return _;return-1}},2532:(s,o,i)=>{\"use strict\";var a=i(45951),u=Object.defineProperty;s.exports=function(s,o){try{u(a,s,{value:o,configurable:!0,writable:!0})}catch(i){a[s]=o}return o}},2694:(s,o,i)=>{\"use strict\";var a=i(6925);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,s.exports=function(){function shim(s,o,i,u,_,w){if(w!==a){var x=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw x.name=\"Invariant Violation\",x}}function getShim(){return shim}shim.isRequired=shim;var s={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return s.PropTypes=s,s}},2874:s=>{s.exports={}},2875:(s,o,i)=>{\"use strict\";var a=i(23045),u=i(80376);s.exports=Object.keys||function keys(s){return a(s,u)}},2955:(s,o,i)=>{\"use strict\";var a,u=i(65606);function _defineProperty(s,o,i){return(o=function _toPropertyKey(s){var o=function _toPrimitive(s,o){if(\"object\"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof o?o:String(o)}(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var _=i(86238),w=Symbol(\"lastResolve\"),x=Symbol(\"lastReject\"),C=Symbol(\"error\"),j=Symbol(\"ended\"),L=Symbol(\"lastPromise\"),B=Symbol(\"handlePromise\"),$=Symbol(\"stream\");function createIterResult(s,o){return{value:s,done:o}}function readAndResolve(s){var o=s[w];if(null!==o){var i=s[$].read();null!==i&&(s[L]=null,s[w]=null,s[x]=null,o(createIterResult(i,!1)))}}function onReadable(s){u.nextTick(readAndResolve,s)}var V=Object.getPrototypeOf((function(){})),U=Object.setPrototypeOf((_defineProperty(a={get stream(){return this[$]},next:function next(){var s=this,o=this[C];if(null!==o)return Promise.reject(o);if(this[j])return Promise.resolve(createIterResult(void 0,!0));if(this[$].destroyed)return new Promise((function(o,i){u.nextTick((function(){s[C]?i(s[C]):o(createIterResult(void 0,!0))}))}));var i,a=this[L];if(a)i=new Promise(function wrapForNext(s,o){return function(i,a){s.then((function(){o[j]?i(createIterResult(void 0,!0)):o[B](i,a)}),a)}}(a,this));else{var _=this[$].read();if(null!==_)return Promise.resolve(createIterResult(_,!1));i=new Promise(this[B])}return this[L]=i,i}},Symbol.asyncIterator,(function(){return this})),_defineProperty(a,\"return\",(function _return(){var s=this;return new Promise((function(o,i){s[$].destroy(null,(function(s){s?i(s):o(createIterResult(void 0,!0))}))}))})),a),V);s.exports=function createReadableStreamAsyncIterator(s){var o,i=Object.create(U,(_defineProperty(o={},$,{value:s,writable:!0}),_defineProperty(o,w,{value:null,writable:!0}),_defineProperty(o,x,{value:null,writable:!0}),_defineProperty(o,C,{value:null,writable:!0}),_defineProperty(o,j,{value:s._readableState.endEmitted,writable:!0}),_defineProperty(o,B,{value:function value(s,o){var a=i[$].read();a?(i[L]=null,i[w]=null,i[x]=null,s(createIterResult(a,!1))):(i[w]=s,i[x]=o)},writable:!0}),o));return i[L]=null,_(s,(function(s){if(s&&\"ERR_STREAM_PREMATURE_CLOSE\"!==s.code){var o=i[x];return null!==o&&(i[L]=null,i[w]=null,i[x]=null,o(s)),void(i[C]=s)}var a=i[w];null!==a&&(i[L]=null,i[w]=null,i[x]=null,a(createIterResult(void 0,!0))),i[j]=!0})),s.on(\"readable\",onReadable.bind(null,i)),i}},3110:(s,o,i)=>{const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register(\"null\",j.NullElement).register(\"string\",j.StringElement).register(\"number\",j.NumberElement).register(\"boolean\",j.BooleanElement).register(\"array\",j.ArrayElement).register(\"object\",j.ObjectElement).register(\"member\",j.MemberElement).register(\"ref\",j.RefElement).register(\"link\",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i<this.elementDetection.length;i+=1){const a=this.elementDetection[i][0],u=this.elementDetection[i][1];if(a(s)){o=new u(s);break}}return o}getElementClass(s){const o=this.elementMap[s];return void 0===o?this.Element:o}fromRefract(s){return this.serialiser.deserialise(s)}toRefract(s){return this.serialiser.serialise(s)}get elements(){return void 0===this._elements&&(this._elements={Element:this.Element},Object.keys(this.elementMap).forEach((s=>{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},3121:(s,o,i)=>{\"use strict\";var a=i(65482),u=Math.min;s.exports=function(s){var o=a(s);return o>0?u(o,9007199254740991):0}},3209:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(36306),w=\"__lodash_placeholder__\",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var V=o[3];if(V){var U=s[3];s[3]=U?a(U,V,o[4]):V,s[4]=U?_(s[3],w):o[4]}return(V=o[5])&&(U=s[5],s[5]=U?u(U,V,o[6]):V,s[6]=U?_(s[5],w):o[6]),(V=o[7])&&(s[7]=V),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},3650:(s,o,i)=>{var a=i(74335)(Object.keys,Object);s.exports=a},3656:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},4509:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},4640:s=>{\"use strict\";var o=String;s.exports=function(s){try{return o(s)}catch(s){return\"Object\"}}},4664:(s,o,i)=>{var a=i(79770),u=i(63345),_=Object.prototype.propertyIsEnumerable,w=Object.getOwnPropertySymbols,x=w?function(s){return null==s?[]:(s=Object(s),a(w(s),(function(o){return _.call(s,o)})))}:u;s.exports=x},4901:(s,o,i)=>{var a=i(72552),u=i(30294),_=i(40346),w={};w[\"[object Float32Array]\"]=w[\"[object Float64Array]\"]=w[\"[object Int8Array]\"]=w[\"[object Int16Array]\"]=w[\"[object Int32Array]\"]=w[\"[object Uint8Array]\"]=w[\"[object Uint8ClampedArray]\"]=w[\"[object Uint16Array]\"]=w[\"[object Uint32Array]\"]=!0,w[\"[object Arguments]\"]=w[\"[object Array]\"]=w[\"[object ArrayBuffer]\"]=w[\"[object Boolean]\"]=w[\"[object DataView]\"]=w[\"[object Date]\"]=w[\"[object Error]\"]=w[\"[object Function]\"]=w[\"[object Map]\"]=w[\"[object Number]\"]=w[\"[object Object]\"]=w[\"[object RegExp]\"]=w[\"[object Set]\"]=w[\"[object String]\"]=w[\"[object WeakMap]\"]=!1,s.exports=function baseIsTypedArray(s){return _(s)&&u(s.length)&&!!w[a(s)]}},4993:(s,o,i)=>{\"use strict\";var a=i(16946),u=i(74239);s.exports=function(s){return a(u(s))}},5187:s=>{s.exports=function isNull(s){return null===s}},5419:s=>{s.exports=function(s,o,i,a){var u=new Blob(void 0!==a?[a,s]:[s],{type:i||\"application/octet-stream\"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(u,o);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(u):window.webkitURL.createObjectURL(u),w=document.createElement(\"a\");w.style.display=\"none\",w.href=_,w.setAttribute(\"download\",o),void 0===w.download&&w.setAttribute(\"target\",\"_blank\"),document.body.appendChild(w),w.click(),setTimeout((function(){document.body.removeChild(w),window.URL.revokeObjectURL(_)}),200)}}},5556:(s,o,i)=>{s.exports=i(2694)()},5861:(s,o,i)=>{var a=i(55580),u=i(68223),_=i(32804),w=i(76545),x=i(28303),C=i(72552),j=i(47473),L=\"[object Map]\",B=\"[object Promise]\",$=\"[object Set]\",V=\"[object WeakMap]\",U=\"[object DataView]\",z=j(a),Y=j(u),Z=j(_),ee=j(w),ie=j(x),ae=C;(a&&ae(new a(new ArrayBuffer(1)))!=U||u&&ae(new u)!=L||_&&ae(_.resolve())!=B||w&&ae(new w)!=$||x&&ae(new x)!=V)&&(ae=function(s){var o=C(s),i=\"[object Object]\"==o?s.constructor:void 0,a=i?j(i):\"\";if(a)switch(a){case z:return U;case Y:return L;case Z:return B;case ee:return $;case ie:return V}return o}),s.exports=ae},6048:s=>{s.exports=function negate(s){if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},6205:s=>{s.exports={ROOT:0,GROUP:1,POSITION:2,SET:3,RANGE:4,REPETITION:5,REFERENCE:6,CHAR:7}},6233:(s,o,i)=>{const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element=\"array\"}primitive(){return\"array\"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a=\"object\"===this.primitive()?this.first.value:this.first);for(let o=i;o<this.length;o+=1){const i=this.content[o];a=\"object\"===this.primitive()?this.refract(s(a,i.value,i.key,i,this)):this.refract(s(a,i,o,this))}return a}forEach(s,o){this.content.forEach(((i,a)=>{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}\"fantasy-land/empty\"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}\"fantasy-land/concat\"(s){return this.concat(s)}\"fantasy-land/map\"(s){return new this.constructor(this.map(s))}\"fantasy-land/chain\"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}\"fantasy-land/filter\"(s){return new this.constructor(this.content.filter(s))}\"fantasy-land/reduce\"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement[\"fantasy-land/empty\"]=ArrayElement.empty,\"undefined\"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},6499:(s,o,i)=>{\"use strict\";var a=i(1907),u=0,_=Math.random(),w=a(1..toString);s.exports=function(s){return\"Symbol(\"+(void 0===s?\"\":s)+\")_\"+w(++u+_,36)}},6925:s=>{\"use strict\";s.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},7057:(s,o,i)=>{\"use strict\";var a=i(11470).charAt,u=i(90160),_=i(64932),w=i(60183),x=i(59550),C=\"String Iterator\",j=_.set,L=_.getterFor(C);w(String,\"String\",(function(s){j(this,{type:C,string:u(s),index:0})}),(function next(){var s,o=L(this),i=o.string,u=o.index;return u>=i.length?x(void 0,!0):(s=a(i,u),o.index+=s.length,x(s,!1))}))},7309:(s,o,i)=>{var a=i(62006)(i(24713));s.exports=a},7376:s=>{\"use strict\";s.exports=!0},7463:(s,o,i)=>{\"use strict\";var a=i(98828),u=i(62250),_=/#|\\.prototype\\./,isForced=function(s,o){var i=x[w(s)];return i===j||i!==C&&(u(o)?a(o):!!o)},w=isForced.normalize=function(s){return String(s).replace(_,\".\").toLowerCase()},x=isForced.data={},C=isForced.NATIVE=\"N\",j=isForced.POLYFILL=\"P\";s.exports=isForced},7666:(s,o,i)=>{var a=i(84851),u=i(953);function _extends(){var o;return s.exports=_extends=a?u(o=a).call(o):function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},s.exports.__esModule=!0,s.exports.default=s.exports,_extends.apply(null,arguments)}s.exports=_extends,s.exports.__esModule=!0,s.exports.default=s.exports},8048:(s,o,i)=>{const a=i(6205);o.wordBoundary=()=>({type:a.POSITION,value:\"b\"}),o.nonWordBoundary=()=>({type:a.POSITION,value:\"B\"}),o.begin=()=>({type:a.POSITION,value:\"^\"}),o.end=()=>({type:a.POSITION,value:\"$\"})},8068:s=>{\"use strict\";var o=(()=>{var s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable,__defNormalProp=(o,i,a)=>i in o?s(o,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[i]=a,__spreadValues=(s,o)=>{for(var i in o||(o={}))u.call(o,i)&&__defNormalProp(s,i,o[i]);if(a)for(var i of a(o))_.call(o,i)&&__defNormalProp(s,i,o[i]);return s},__publicField=(s,o,i)=>__defNormalProp(s,\"symbol\"!=typeof o?o+\"\":o,i),w={};((o,i)=>{for(var a in i)s(o,a,{get:i[a],enumerable:!0})})(w,{DEFAULT_OPTIONS:()=>C,DEFAULT_UUID_LENGTH:()=>x,default:()=>B});var x=6,C={dictionary:\"alphanum\",shuffle:!0,debug:!1,length:x,counter:0},j=class _ShortUniqueId{constructor(s={}){__publicField(this,\"counter\"),__publicField(this,\"debug\"),__publicField(this,\"dict\"),__publicField(this,\"version\"),__publicField(this,\"dictIndex\",0),__publicField(this,\"dictRange\",[]),__publicField(this,\"lowerBound\",0),__publicField(this,\"upperBound\",0),__publicField(this,\"dictLength\",0),__publicField(this,\"uuidLength\"),__publicField(this,\"_digit_first_ascii\",48),__publicField(this,\"_digit_last_ascii\",58),__publicField(this,\"_alpha_lower_first_ascii\",97),__publicField(this,\"_alpha_lower_last_ascii\",123),__publicField(this,\"_hex_last_ascii\",103),__publicField(this,\"_alpha_upper_first_ascii\",65),__publicField(this,\"_alpha_upper_last_ascii\",91),__publicField(this,\"_number_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii]}),__publicField(this,\"_alpha_dict_ranges\",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alpha_lower_dict_ranges\",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,\"_alpha_upper_dict_ranges\",{upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alphanum_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alphanum_lower_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,\"_alphanum_upper_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_hex_dict_ranges\",{decDigits:[this._digit_first_ascii,this._digit_last_ascii],alphaDigits:[this._alpha_lower_first_ascii,this._hex_last_ascii]}),__publicField(this,\"_dict_ranges\",{_number_dict_ranges:this._number_dict_ranges,_alpha_dict_ranges:this._alpha_dict_ranges,_alpha_lower_dict_ranges:this._alpha_lower_dict_ranges,_alpha_upper_dict_ranges:this._alpha_upper_dict_ranges,_alphanum_dict_ranges:this._alphanum_dict_ranges,_alphanum_lower_dict_ranges:this._alphanum_lower_dict_ranges,_alphanum_upper_dict_ranges:this._alphanum_upper_dict_ranges,_hex_dict_ranges:this._hex_dict_ranges}),__publicField(this,\"log\",((...s)=>{const o=[...s];o[0]=\"[short-unique-id] \".concat(s[0]),!0!==this.debug||\"undefined\"==typeof console||null===console||console.log(...o)})),__publicField(this,\"_normalizeDictionary\",((s,o)=>{let i;if(s&&Array.isArray(s)&&s.length>1)i=s;else{i=[],this.dictIndex=0;const o=\"_\".concat(s,\"_dict_ranges\"),a=this._dict_ranges[o];let u=0;for(const[,s]of Object.entries(a)){const[o,i]=s;u+=Math.abs(i-o)}i=new Array(u);let _=0;for(const[,s]of Object.entries(a)){this.dictRange=s,this.lowerBound=this.dictRange[0],this.upperBound=this.dictRange[1];const o=this.lowerBound<=this.upperBound,a=this.lowerBound,u=this.upperBound;if(o)for(let s=a;s<u;s++)i[_++]=String.fromCharCode(s),this.dictIndex=s;else for(let s=a;s>u;s--)i[_++]=String.fromCharCode(s),this.dictIndex=s}i.length=_}if(o){for(let s=i.length-1;s>0;s--){const o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}}return i})),__publicField(this,\"setDictionary\",((s,o)=>{this.dict=this._normalizeDictionary(s,o),this.dictLength=this.dict.length,this.setCounter(0)})),__publicField(this,\"seq\",(()=>this.sequentialUUID())),__publicField(this,\"sequentialUUID\",(()=>{const s=this.dictLength,o=this.dict;let i=this.counter;const a=[];do{const u=i%s;i=Math.trunc(i/s),a.push(o[u])}while(0!==i);const u=a.join(\"\");return this.counter+=1,u})),__publicField(this,\"rnd\",((s=this.uuidLength||x)=>this.randomUUID(s))),__publicField(this,\"randomUUID\",((s=this.uuidLength||x)=>{if(null==s||s<1)throw new Error(\"Invalid UUID Length Provided\");const o=new Array(s),i=this.dictLength,a=this.dict;for(let u=0;u<s;u++){const s=Math.floor(Math.random()*i);o[u]=a[s]}return o.join(\"\")})),__publicField(this,\"fmt\",((s,o)=>this.formattedUUID(s,o))),__publicField(this,\"formattedUUID\",((s,o)=>{const i={$r:this.randomUUID,$s:this.sequentialUUID,$t:this.stamp};return s.replace(/\\$[rs]\\d{0,}|\\$t0|\\$t[1-9]\\d{1,}/g,(s=>{const a=s.slice(0,2),u=Number.parseInt(s.slice(2),10);return\"$s\"===a?i[a]().padStart(u,\"0\"):\"$t\"===a&&o?i[a](u,o):i[a](u)}))})),__publicField(this,\"availableUUIDs\",((s=this.uuidLength)=>Number.parseFloat(([...new Set(this.dict)].length**s).toFixed(0)))),__publicField(this,\"_collisionCache\",new Map),__publicField(this,\"approxMaxBeforeCollision\",((s=this.availableUUIDs(this.uuidLength))=>{const o=s,i=this._collisionCache.get(o);if(void 0!==i)return i;const a=Number.parseFloat(Math.sqrt(Math.PI/2*s).toFixed(20));return this._collisionCache.set(o,a),a})),__publicField(this,\"collisionProbability\",((s=this.availableUUIDs(this.uuidLength),o=this.uuidLength)=>Number.parseFloat((this.approxMaxBeforeCollision(s)/this.availableUUIDs(o)).toFixed(20)))),__publicField(this,\"uniqueness\",((s=this.availableUUIDs(this.uuidLength))=>{const o=Number.parseFloat((1-this.approxMaxBeforeCollision(s)/s).toFixed(20));return o>1?1:o<0?0:o})),__publicField(this,\"getVersion\",(()=>this.version)),__publicField(this,\"stamp\",((s,o)=>{const i=Math.floor(+(o||new Date)/1e3).toString(16);if(\"number\"==typeof s&&0===s)return i;if(\"number\"!=typeof s||s<10)throw new Error([\"Param finalLength must be a number greater than or equal to 10,\",\"or 0 if you want the raw hexadecimal timestamp\"].join(\"\\n\"));const a=s-9,u=Math.round(Math.random()*(a>15?15:a)),_=this.randomUUID(a);return\"\".concat(_.substring(0,u)).concat(i).concat(_.substring(u)).concat(u.toString(16))})),__publicField(this,\"parseStamp\",((s,o)=>{if(o&&!/t0|t[1-9]\\d{1,}/.test(o))throw new Error(\"Cannot extract date from a formated UUID with no timestamp in the format\");const i=o?o.replace(/\\$[rs]\\d{0,}|\\$t0|\\$t[1-9]\\d{1,}/g,(s=>{const o={$r:s=>[...Array(s)].map((()=>\"r\")).join(\"\"),$s:s=>[...Array(s)].map((()=>\"s\")).join(\"\"),$t:s=>[...Array(s)].map((()=>\"t\")).join(\"\")},i=s.slice(0,2),a=Number.parseInt(s.slice(2),10);return o[i](a)})).replace(/^(.*?)(t{8,})(.*)$/g,((o,i,a)=>s.substring(i.length,i.length+a.length))):s;if(8===i.length)return new Date(1e3*Number.parseInt(i,16));if(i.length<10)throw new Error(\"Stamp length invalid\");const a=Number.parseInt(i.substring(i.length-1),16);return new Date(1e3*Number.parseInt(i.substring(a,a+8),16))})),__publicField(this,\"setCounter\",(s=>{this.counter=s})),__publicField(this,\"validate\",((s,o)=>{const i=o?this._normalizeDictionary(o):this.dict;return s.split(\"\").every((s=>i.includes(s)))}));const o=__spreadValues(__spreadValues({},C),s);this.counter=0,this.debug=!1,this.dict=[],this.version=\"5.3.2\";const{dictionary:i,shuffle:a,length:u,counter:_}=o;this.uuidLength=u,this.setDictionary(i,a),this.setCounter(_),this.debug=o.debug,this.log(this.dict),this.log(\"Generator instantiated with Dictionary Size \".concat(this.dictLength,\" and counter set to \").concat(this.counter)),this.log=this.log.bind(this),this.setDictionary=this.setDictionary.bind(this),this.setCounter=this.setCounter.bind(this),this.seq=this.seq.bind(this),this.sequentialUUID=this.sequentialUUID.bind(this),this.rnd=this.rnd.bind(this),this.randomUUID=this.randomUUID.bind(this),this.fmt=this.fmt.bind(this),this.formattedUUID=this.formattedUUID.bind(this),this.availableUUIDs=this.availableUUIDs.bind(this),this.approxMaxBeforeCollision=this.approxMaxBeforeCollision.bind(this),this.collisionProbability=this.collisionProbability.bind(this),this.uniqueness=this.uniqueness.bind(this),this.getVersion=this.getVersion.bind(this),this.stamp=this.stamp.bind(this),this.parseStamp=this.parseStamp.bind(this)}};__publicField(j,\"default\",j);var L,B=j;return L=w,((a,_,w,x)=>{if(_&&\"object\"==typeof _||\"function\"==typeof _)for(let C of i(_))u.call(a,C)||C===w||s(a,C,{get:()=>_[C],enumerable:!(x=o(_,C))||x.enumerable});return a})(s({},\"__esModule\",{value:!0}),L)})();s.exports=o.default,\"undefined\"!=typeof window&&(o=o.default)},9325:(s,o,i)=>{var a=i(34840),u=\"object\"==typeof self&&self&&self.Object===Object&&self,_=a||u||Function(\"return this\")();s.exports=_},9404:function(s){s.exports=function(){\"use strict\";var s=Array.prototype.slice;function createClass(s,o){o&&(s.prototype=Object.create(o.prototype)),s.prototype.constructor=s}function Iterable(s){return isIterable(s)?s:Seq(s)}function KeyedIterable(s){return isKeyed(s)?s:KeyedSeq(s)}function IndexedIterable(s){return isIndexed(s)?s:IndexedSeq(s)}function SetIterable(s){return isIterable(s)&&!isAssociative(s)?s:SetSeq(s)}function isIterable(s){return!(!s||!s[o])}function isKeyed(s){return!(!s||!s[i])}function isIndexed(s){return!(!s||!s[a])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}function isOrdered(s){return!(!s||!s[u])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var o=\"@@__IMMUTABLE_ITERABLE__@@\",i=\"@@__IMMUTABLE_KEYED__@@\",a=\"@@__IMMUTABLE_INDEXED__@@\",u=\"@@__IMMUTABLE_ORDERED__@@\",_=\"delete\",w=5,x=1<<w,C=x-1,j={},L={value:!1},B={value:!1};function MakeRef(s){return s.value=!1,s}function SetRef(s){s&&(s.value=!0)}function OwnerID(){}function arrCopy(s,o){o=o||0;for(var i=Math.max(0,s.length-o),a=new Array(i),u=0;u<i;u++)a[u]=s[u+o];return a}function ensureSize(s){return void 0===s.size&&(s.size=s.__iterate(returnTrue)),s.size}function wrapIndex(s,o){if(\"number\"!=typeof o){var i=o>>>0;if(\"\"+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:s<0?Math.max(0,o+s):void 0===o?s:Math.min(o,s)}var $=0,V=1,U=2,z=\"function\"==typeof Symbol&&Symbol.iterator,Y=\"@@iterator\",Z=z||Y;function Iterator(s){this.next=s}function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!getIteratorFn(s)}function isIterator(s){return s&&\"function\"==typeof s.next}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(z&&s[z]||s[Y]);if(\"function\"==typeof o)return o}function isArrayLike(s){return s&&\"number\"==typeof s.length}function Seq(s){return null==s?emptySequence():isIterable(s)?s.toSeq():seqFromValue(s)}function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isIterable(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():keyedSeqFromValue(s)}function IndexedSeq(s){return null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():indexedSeqFromValue(s)}function SetSeq(s){return(null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s:indexedSeqFromValue(s)).toSetSeq()}Iterator.prototype.toString=function(){return\"[Iterator]\"},Iterator.KEYS=$,Iterator.VALUES=V,Iterator.ENTRIES=U,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[Z]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString(\"Seq {\",\"}\")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!0)},Seq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString(\"Seq [\",\"]\")},IndexedSeq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!1)},IndexedSeq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var ee,ie,ae,ce=\"@@__IMMUTABLE_SEQ__@@\";function ArraySeq(s){this._array=s,this.size=s.length}function ObjectSeq(s){var o=Object.keys(s);this._object=s,this._keys=o,this.size=o.length}function IterableSeq(s){this._iterable=s,this.size=s.length||s.size}function IteratorSeq(s){this._iterator=s,this._iteratorCache=[]}function isSeq(s){return!(!s||!s[ce])}function emptySequence(){return ee||(ee=new ArraySeq([]))}function keyedSeqFromValue(s){var o=Array.isArray(s)?new ArraySeq(s).fromEntrySeq():isIterator(s)?new IteratorSeq(s).fromEntrySeq():hasIterator(s)?new IterableSeq(s).fromEntrySeq():\"object\"==typeof s?new ObjectSeq(s):void 0;if(!o)throw new TypeError(\"Expected Array or iterable object of [k, v] entries, or keyed object: \"+s);return o}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(!o)throw new TypeError(\"Expected Array or iterable object of values: \"+s);return o}function seqFromValue(s){var o=maybeIndexedSeqFromValue(s)||\"object\"==typeof s&&new ObjectSeq(s);if(!o)throw new TypeError(\"Expected Array or iterable object of values, or keyed object: \"+s);return o}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ArraySeq(s):isIterator(s)?new IteratorSeq(s):hasIterator(s)?new IterableSeq(s):void 0}function seqIterate(s,o,i,a){var u=s._cache;if(u){for(var _=u.length-1,w=0;w<=_;w++){var x=u[i?_-w:w];if(!1===o(x[1],a?x[0]:w,s))return w+1}return w}return s.__iterateUncached(o,i)}function seqIterator(s,o,i,a){var u=s._cache;if(u){var _=u.length-1,w=0;return new Iterator((function(){var s=u[i?_-w:w];return w++>_?iteratorDone():iteratorValue(o,a?s[0]:w-1,s[1])}))}return s.__iteratorUncached(o,i)}function fromJS(s,o){return o?fromJSWith(o,s,\"\",{\"\":s}):fromJSDefault(s)}function fromJSWith(s,o,i,a){return Array.isArray(o)?s.call(a,i,IndexedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):isPlainObj(o)?s.call(a,i,KeyedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):o}function fromJSDefault(s){return Array.isArray(s)?IndexedSeq(s).map(fromJSDefault).toList():isPlainObj(s)?KeyedSeq(s).map(fromJSDefault).toMap():s}function isPlainObj(s){return s&&(s.constructor===Object||void 0===s.constructor)}function is(s,o){if(s===o||s!=s&&o!=o)return!0;if(!s||!o)return!1;if(\"function\"==typeof s.valueOf&&\"function\"==typeof o.valueOf){if((s=s.valueOf())===(o=o.valueOf())||s!=s&&o!=o)return!0;if(!s||!o)return!1}return!(\"function\"!=typeof s.equals||\"function\"!=typeof o.equals||!s.equals(o))}function deepEqual(s,o){if(s===o)return!0;if(!isIterable(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)\"function\"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,j)):!is(s.get(a,j),o))return w=!1,!1}));return w&&s.size===x}function Repeat(s,o){if(!(this instanceof Repeat))return new Repeat(s,o);if(this._value=s,this.size=void 0===o?1/0:Math.max(0,o),0===this.size){if(ie)return ie;ie=this}}function invariant(s,o){if(!s)throw new Error(o)}function Range(s,o,i){if(!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,\"Cannot step a Range by 0\"),s=s||0,void 0===o&&(o=1/0),i=void 0===i?1:Math.abs(i),o<s&&(i=-i),this._start=s,this._end=o,this._step=i,this.size=Math.max(0,Math.ceil((o-s)/i-1)+1),0===this.size){if(ae)return ae;ae=this}}function Collection(){throw TypeError(\"Abstract\")}function KeyedCollection(){}function IndexedCollection(){}function SetCollection(){}Seq.prototype[ce]=!0,createClass(ArraySeq,IndexedSeq),ArraySeq.prototype.get=function(s,o){return this.has(s)?this._array[wrapIndex(this,s)]:o},ArraySeq.prototype.__iterate=function(s,o){for(var i=this._array,a=i.length-1,u=0;u<=a;u++)if(!1===s(i[o?a-u:u],u,this))return u+1;return u},ArraySeq.prototype.__iterator=function(s,o){var i=this._array,a=i.length-1,u=0;return new Iterator((function(){return u>a?iteratorDone():iteratorValue(s,u,i[o?a-u++:u++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function(s){return this._object.hasOwnProperty(s)},ObjectSeq.prototype.__iterate=function(s,o){for(var i=this._object,a=this._keys,u=a.length-1,_=0;_<=u;_++){var w=a[o?u-_:_];if(!1===s(i[w],w,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(s,o){var i=this._object,a=this._keys,u=a.length-1,_=0;return new Iterator((function(){var w=a[o?u-_:_];return _++>u?iteratorDone():iteratorValue(s,w,i[w])}))},ObjectSeq.prototype[u]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._iterable),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},IterableSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._iterable);if(!isIterator(i))return new Iterator(iteratorDone);var a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);for(var i,a=this._iterator,u=this._iteratorCache,_=0;_<u.length;)if(!1===s(u[_],_++,this))return _;for(;!(i=a.next()).done;){var w=i.value;if(u[_]=w,!1===s(w,_++,this))break}return _},IteratorSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=this._iterator,a=this._iteratorCache,u=0;return new Iterator((function(){if(u>=a.length){var o=i.next();if(o.done)return o;a[u]=o.value}return iteratorValue(s,u,a[u++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?\"Repeat []\":\"Repeat [ \"+this._value+\" \"+this.size+\" times ]\"},Repeat.prototype.get=function(s,o){return this.has(s)?this._value:o},Repeat.prototype.includes=function(s){return is(this._value,s)},Repeat.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:new Repeat(this._value,resolveEnd(o,i)-resolveBegin(s,i))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(s){return is(this._value,s)?0:-1},Repeat.prototype.lastIndexOf=function(s){return is(this._value,s)?this.size:-1},Repeat.prototype.__iterate=function(s,o){for(var i=0;i<this.size;i++)if(!1===s(this._value,i,this))return i+1;return i},Repeat.prototype.__iterator=function(s,o){var i=this,a=0;return new Iterator((function(){return a<i.size?iteratorValue(s,a++,i._value):iteratorDone()}))},Repeat.prototype.equals=function(s){return s instanceof Repeat?is(this._value,s._value):deepEqual(s)},createClass(Range,IndexedSeq),Range.prototype.toString=function(){return 0===this.size?\"Range []\":\"Range [ \"+this._start+\"...\"+this._end+(1!==this._step?\" by \"+this._step:\"\")+\" ]\"},Range.prototype.get=function(s,o){return this.has(s)?this._start+wrapIndex(this,s)*this._step:o},Range.prototype.includes=function(s){var o=(s-this._start)/this._step;return o>=0&&o<this.size&&o===Math.floor(o)},Range.prototype.slice=function(s,o){return wholeSlice(s,o,this.size)?this:(s=resolveBegin(s,this.size),(o=resolveEnd(o,this.size))<=s?new Range(0,0):new Range(this.get(s,this._end),this.get(o,this._end),this._step))},Range.prototype.indexOf=function(s){var o=s-this._start;if(o%this._step==0){var i=o/this._step;if(i>=0&&i<this.size)return i}return-1},Range.prototype.lastIndexOf=function(s){return this.indexOf(s)},Range.prototype.__iterate=function(s,o){for(var i=this.size-1,a=this._step,u=o?this._start+i*a:this._start,_=0;_<=i;_++){if(!1===s(u,_,this))return _+1;u+=o?-a:a}return _},Range.prototype.__iterator=function(s,o){var i=this.size-1,a=this._step,u=o?this._start+i*a:this._start,_=0;return new Iterator((function(){var w=u;return u+=o?-a:a,_>i?iteratorDone():iteratorValue(s,_++,w)}))},Range.prototype.equals=function(s){return s instanceof Range?this._start===s._start&&this._end===s._end&&this._step===s._step:deepEqual(this,s)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var le=\"function\"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}function hash(s){if(!1===s||null==s)return 0;if(\"function\"==typeof s.valueOf&&(!1===(s=s.valueOf())||null==s))return 0;if(!0===s)return 1;var o=typeof s;if(\"number\"===o){if(s!=s||s===1/0)return 0;var i=0|s;for(i!==s&&(i^=4294967295*s);s>4294967295;)i^=s/=4294967295;return smi(i)}if(\"string\"===o)return s.length>Se?cachedHashString(s):hashString(s);if(\"function\"==typeof s.hashCode)return s.hashCode();if(\"object\"===o)return hashJSObj(s);if(\"function\"==typeof s.toString)return hashString(s.toString());throw new Error(\"Value type \"+o+\" cannot be hashed.\")}function cachedHashString(s){var o=Pe[s];return void 0===o&&(o=hashString(s),xe===we&&(xe=0,Pe={}),xe++,Pe[s]=o),o}function hashString(s){for(var o=0,i=0;i<s.length;i++)o=31*o+s.charCodeAt(i)|0;return smi(o)}function hashJSObj(s){var o;if(ye&&void 0!==(o=fe.get(s)))return o;if(void 0!==(o=s[_e]))return o;if(!de){if(void 0!==(o=s.propertyIsEnumerable&&s.propertyIsEnumerable[_e]))return o;if(void 0!==(o=getIENodeHash(s)))return o}if(o=++be,1073741824&be&&(be=0),ye)fe.set(s,o);else{if(void 0!==pe&&!1===pe(s))throw new Error(\"Non-extensible objects are not allowed as keys.\");if(de)Object.defineProperty(s,_e,{enumerable:!1,configurable:!1,writable:!1,value:o});else if(void 0!==s.propertyIsEnumerable&&s.propertyIsEnumerable===s.constructor.prototype.propertyIsEnumerable)s.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},s.propertyIsEnumerable[_e]=o;else{if(void 0===s.nodeType)throw new Error(\"Unable to set a non-enumerable property on object.\");s[_e]=o}}return o}var pe=Object.isExtensible,de=function(){try{return Object.defineProperty({},\"@\",{}),!0}catch(s){return!1}}();function getIENodeHash(s){if(s&&s.nodeType>0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}var fe,ye=\"function\"==typeof WeakMap;ye&&(fe=new WeakMap);var be=0,_e=\"__immutablehash__\";\"function\"==typeof Symbol&&(_e=Symbol(_e));var Se=16,we=255,xe=0,Pe={};function assertNotInfinite(s){invariant(s!==1/0,\"Cannot perform this action with an infinite size.\")}function Map(s){return null==s?emptyMap():isMap(s)&&!isOrdered(s)?s:emptyMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isMap(s){return!(!s||!s[Re])}createClass(Map,KeyedCollection),Map.of=function(){var o=s.call(arguments,0);return emptyMap().withMutations((function(s){for(var i=0;i<o.length;i+=2){if(i+1>=o.length)throw new Error(\"Missing value for key: \"+o[i]);s.set(o[i],o[i+1])}}))},Map.prototype.toString=function(){return this.__toString(\"Map {\",\"}\")},Map.prototype.get=function(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function(s,o){return updateMap(this,s,o)},Map.prototype.setIn=function(s,o){return this.updateIn(s,j,(function(){return o}))},Map.prototype.remove=function(s){return updateMap(this,s,j)},Map.prototype.deleteIn=function(s){return this.updateIn(s,(function(){return j}))},Map.prototype.update=function(s,o,i){return 1===arguments.length?s(this):this.updateIn([s],o,i)},Map.prototype.updateIn=function(s,o,i){i||(i=o,o=void 0);var a=updateInDeepMap(this,forceIterator(s),o,i);return a===j?void 0:a},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(o){return mergeIntoMapWith(this,o,s.call(arguments,1))},Map.prototype.mergeIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return\"function\"==typeof s.merge?s.merge.apply(s,i):i[i.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(o),i)},Map.prototype.mergeDeepIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return\"function\"==typeof s.mergeDeep?s.mergeDeep.apply(s,i):i[i.length-1]}))},Map.prototype.sort=function(s){return OrderedMap(sortFactory(this,s))},Map.prototype.sortBy=function(s,o){return OrderedMap(sortFactory(this,o,s))},Map.prototype.withMutations=function(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(s,o){return new MapIterator(this,s,o)},Map.prototype.__iterate=function(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Map.isMap=isMap;var Te,Re=\"@@__IMMUTABLE_MAP__@@\",$e=Map.prototype;function ArrayMapNode(s,o){this.ownerID=s,this.entries=o}function BitmapIndexedNode(s,o,i){this.ownerID=s,this.bitmap=o,this.nodes=i}function HashArrayMapNode(s,o,i){this.ownerID=s,this.count=o,this.nodes=i}function HashCollisionNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entries=i}function ValueNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entry=i}function MapIterator(s,o,i){this._type=o,this._reverse=i,this._stack=s._root&&mapIteratorFrame(s._root)}function mapIteratorValue(s,o){return iteratorValue(s,o[0],o[1])}function mapIteratorFrame(s,o){return{node:s,index:0,__prev:o}}function makeMap(s,o,i,a){var u=Object.create($e);return u.size=s,u._root=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyMap(){return Te||(Te=makeMap(0))}function updateMap(s,o,i){var a,u;if(s._root){var _=MakeRef(L),w=MakeRef(B);if(a=updateNode(s._root,s.__ownerID,0,void 0,o,i,_,w),!w.value)return s;u=s.size+(_.value?i===j?-1:1:0)}else{if(i===j)return s;u=1,a=new ArrayMapNode(s.__ownerID,[[o,i]])}return s.__ownerID?(s.size=u,s._root=a,s.__hash=void 0,s.__altered=!0,s):a?makeMap(u,a):emptyMap()}function updateNode(s,o,i,a,u,_,w,x){return s?s.update(o,i,a,u,_,w,x):_===j?s:(SetRef(x),SetRef(w),new ValueNode(o,a,[u,_]))}function isLeafNode(s){return s.constructor===ValueNode||s.constructor===HashCollisionNode}function mergeIntoNode(s,o,i,a,u){if(s.keyHash===a)return new HashCollisionNode(o,a,[s.entry,u]);var _,x=(0===i?s.keyHash:s.keyHash>>>i)&C,j=(0===i?a:a>>>i)&C;return new BitmapIndexedNode(o,1<<x|1<<j,x===j?[mergeIntoNode(s,o,i+w,a,u)]:(_=new ValueNode(o,a,u),x<j?[s,_]:[_,s]))}function createNodes(s,o,i,a){s||(s=new OwnerID);for(var u=new ValueNode(s,hash(i),[i,a]),_=0;_<o.length;_++){var w=o[_];u=u.update(s,0,void 0,w[0],w[1])}return u}function packNodes(s,o,i,a){for(var u=0,_=0,w=new Array(i),x=0,C=1,j=o.length;x<j;x++,C<<=1){var L=o[x];void 0!==L&&x!==a&&(u|=C,w[_++]=L)}return new BitmapIndexedNode(s,u,w)}function expandNodes(s,o,i,a,u){for(var _=0,w=new Array(x),C=0;0!==i;C++,i>>>=1)w[C]=1&i?o[_++]:void 0;return w[a]=u,new HashArrayMapNode(s,_+1,w)}function mergeIntoMapWith(s,o,i){for(var a=[],u=0;u<i.length;u++){var _=i[u],w=KeyedIterable(_);isIterable(_)||(w=w.map((function(s){return fromJS(s)}))),a.push(w)}return mergeIntoCollectionWith(s,o,a)}function deepMerger(s,o,i){return s&&s.mergeDeep&&isIterable(o)?s.mergeDeep(o):is(s,o)?s:o}function deepMergerWith(s){return function(o,i,a){if(o&&o.mergeDeepWith&&isIterable(i))return o.mergeDeepWith(s,i);var u=s(o,i,a);return is(o,u)?o:u}}function mergeIntoCollectionWith(s,o,i){return 0===(i=i.filter((function(s){return 0!==s.size}))).length?s:0!==s.size||s.__ownerID||1!==i.length?s.withMutations((function(s){for(var a=o?function(i,a){s.update(a,j,(function(s){return s===j?i:o(s,i,a)}))}:function(o,i){s.set(i,o)},u=0;u<i.length;u++)i[u].forEach(a)})):s.constructor(i[0])}function updateInDeepMap(s,o,i,a){var u=s===j,_=o.next();if(_.done){var w=u?i:s,x=a(w);return x===w?s:x}invariant(u||s&&s.set,\"invalid keyPath\");var C=_.value,L=u?j:s.get(C,j),B=updateInDeepMap(L,o,i,a);return B===L?s:B===j?s.remove(C):(u?emptyMap():s).set(C,B)}function popCount(s){return s=(s=(858993459&(s-=s>>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setIn(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}function spliceIn(s,o,i,a){var u=s.length+1;if(a&&o+1===u)return s[o]=i,s;for(var _=new Array(u),w=0,x=0;x<u;x++)x===o?(_[x]=i,w=-1):_[x]=s[x+w];return _}function spliceOut(s,o,i){var a=s.length-1;if(i&&o===a)return s.pop(),s;for(var u=new Array(a),_=0,w=0;w<a;w++)w===o&&(_=1),u[w]=s[w+_];return u}$e[Re]=!0,$e[_]=$e.remove,$e.removeIn=$e.deleteIn,ArrayMapNode.prototype.get=function(s,o,i,a){for(var u=this.entries,_=0,w=u.length;_<w;_++)if(is(i,u[_][0]))return u[_][1];return a},ArrayMapNode.prototype.update=function(s,o,i,a,u,_,w){for(var x=u===j,C=this.entries,L=0,B=C.length;L<B&&!is(a,C[L][0]);L++);var $=L<B;if($?C[L][1]===u:x)return this;if(SetRef(w),(x||!$)&&SetRef(_),!x||1!==C.length){if(!$&&!x&&C.length>=qe)return createNodes(s,C,a,u);var V=s&&s===this.ownerID,U=V?C:arrCopy(C);return $?x?L===B-1?U.pop():U[L]=U.pop():U[L]=[a,u]:U.push([a,u]),V?(this.entries=U,this):new ArrayMapNode(s,U)}},BitmapIndexedNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=1<<((0===s?o:o>>>s)&C),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+w,o,i,a):a},BitmapIndexedNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=1<<L,$=this.bitmap,V=!!($&B);if(!V&&u===j)return this;var U=popCount($&B-1),z=this.nodes,Y=V?z[U]:void 0,Z=updateNode(Y,s,o+w,i,a,u,_,x);if(Z===Y)return this;if(!V&&Z&&z.length>=ze)return expandNodes(s,z,$,L,Z);if(V&&!Z&&2===z.length&&isLeafNode(z[1^U]))return z[1^U];if(V&&Z&&1===z.length&&isLeafNode(Z))return Z;var ee=s&&s===this.ownerID,ie=V?Z?$:$^B:$|B,ae=V?Z?setIn(z,U,Z,ee):spliceOut(z,U,ee):spliceIn(z,U,Z,ee);return ee?(this.bitmap=ie,this.nodes=ae,this):new BitmapIndexedNode(s,ie,ae)},HashArrayMapNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=(0===s?o:o>>>s)&C,_=this.nodes[u];return _?_.get(s+w,o,i,a):a},HashArrayMapNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=u===j,$=this.nodes,V=$[L];if(B&&!V)return this;var U=updateNode(V,s,o+w,i,a,u,_,x);if(U===V)return this;var z=this.count;if(V){if(!U&&--z<We)return packNodes(s,$,z,L)}else z++;var Y=s&&s===this.ownerID,Z=setIn($,L,U,Y);return Y?(this.count=z,this.nodes=Z,this):new HashArrayMapNode(s,z,Z)},HashCollisionNode.prototype.get=function(s,o,i,a){for(var u=this.entries,_=0,w=u.length;_<w;_++)if(is(i,u[_][0]))return u[_][1];return a},HashCollisionNode.prototype.update=function(s,o,i,a,u,_,w){void 0===i&&(i=hash(a));var x=u===j;if(i!==this.keyHash)return x?this:(SetRef(w),SetRef(_),mergeIntoNode(this,s,o,i,[a,u]));for(var C=this.entries,L=0,B=C.length;L<B&&!is(a,C[L][0]);L++);var $=L<B;if($?C[L][1]===u:x)return this;if(SetRef(w),(x||!$)&&SetRef(_),x&&2===B)return new ValueNode(s,this.keyHash,C[1^L]);var V=s&&s===this.ownerID,U=V?C:arrCopy(C);return $?x?L===B-1?U.pop():U[L]=U.pop():U[L]=[a,u]:U.push([a,u]),V?(this.entries=U,this):new HashCollisionNode(s,this.keyHash,U)},ValueNode.prototype.get=function(s,o,i,a){return is(i,this.entry[0])?this.entry[1]:a},ValueNode.prototype.update=function(s,o,i,a,u,_,w){var x=u===j,C=is(a,this.entry[0]);return(C?u===this.entry[1]:x)?this:(SetRef(w),x?void SetRef(_):C?s&&s===this.ownerID?(this.entry[1]=u,this):new ValueNode(s,this.keyHash,[a,u]):(SetRef(_),mergeIntoNode(this,s,o,hash(a),[a,u])))},ArrayMapNode.prototype.iterate=HashCollisionNode.prototype.iterate=function(s,o){for(var i=this.entries,a=0,u=i.length-1;a<=u;a++)if(!1===s(i[o?u-a:a]))return!1},BitmapIndexedNode.prototype.iterate=HashArrayMapNode.prototype.iterate=function(s,o){for(var i=this.nodes,a=0,u=i.length-1;a<=u;a++){var _=i[o?u-a:a];if(_&&!1===_.iterate(s,o))return!1}},ValueNode.prototype.iterate=function(s,o){return s(this.entry)},createClass(MapIterator,Iterator),MapIterator.prototype.next=function(){for(var s=this._type,o=this._stack;o;){var i,a=o.node,u=o.index++;if(a.entry){if(0===u)return mapIteratorValue(s,a.entry)}else if(a.entries){if(u<=(i=a.entries.length-1))return mapIteratorValue(s,a.entries[this._reverse?i-u:u])}else if(u<=(i=a.nodes.length-1)){var _=a.nodes[this._reverse?i-u:u];if(_){if(_.entry)return mapIteratorValue(s,_.entry);o=this._stack=mapIteratorFrame(_,o)}continue}o=this._stack=this._stack.__prev}return iteratorDone()};var qe=x/4,ze=x/2,We=x/4;function List(s){var o=emptyList();if(null==s)return o;if(isList(s))return s;var i=IndexedIterable(s),a=i.size;return 0===a?o:(assertNotInfinite(a),a>0&&a<x?makeList(0,a,w,null,new VNode(i.toArray())):o.withMutations((function(s){s.setSize(a),i.forEach((function(o,i){return s.set(i,o)}))})))}function isList(s){return!(!s||!s[He])}createClass(List,IndexedCollection),List.of=function(){return this(arguments)},List.prototype.toString=function(){return this.__toString(\"List [\",\"]\")},List.prototype.get=function(s,o){if((s=wrapIndex(this,s))>=0&&s<this.size){var i=listNodeFor(this,s+=this._origin);return i&&i.array[s&C]}return o},List.prototype.set=function(s,o){return updateList(this,s,o)},List.prototype.remove=function(s){return this.has(s)?0===s?this.shift():s===this.size-1?this.pop():this.splice(s,1):this},List.prototype.insert=function(s,o){return this.splice(s,0,o)},List.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=w,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):emptyList()},List.prototype.push=function(){var s=arguments,o=this.size;return this.withMutations((function(i){setListBounds(i,0,o+s.length);for(var a=0;a<s.length;a++)i.set(o+a,s[a])}))},List.prototype.pop=function(){return setListBounds(this,0,-1)},List.prototype.unshift=function(){var s=arguments;return this.withMutations((function(o){setListBounds(o,-s.length);for(var i=0;i<s.length;i++)o.set(i,s[i])}))},List.prototype.shift=function(){return setListBounds(this,1)},List.prototype.merge=function(){return mergeIntoListWith(this,void 0,arguments)},List.prototype.mergeWith=function(o){return mergeIntoListWith(this,o,s.call(arguments,1))},List.prototype.mergeDeep=function(){return mergeIntoListWith(this,deepMerger,arguments)},List.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoListWith(this,deepMergerWith(o),i)},List.prototype.setSize=function(s){return setListBounds(this,0,s)},List.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:setListBounds(this,resolveBegin(s,i),resolveEnd(o,i))},List.prototype.__iterator=function(s,o){var i=0,a=iterateList(this,o);return new Iterator((function(){var o=a();return o===et?iteratorDone():iteratorValue(s,i++,o)}))},List.prototype.__iterate=function(s,o){for(var i,a=0,u=iterateList(this,o);(i=u())!==et&&!1!==s(i,a++,this););return a},List.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeList(this._origin,this._capacity,this._level,this._root,this._tail,s,this.__hash):(this.__ownerID=s,this)},List.isList=isList;var He=\"@@__IMMUTABLE_LIST__@@\",Ye=List.prototype;function VNode(s,o){this.array=s,this.ownerID=o}Ye[He]=!0,Ye[_]=Ye.remove,Ye.setIn=$e.setIn,Ye.deleteIn=Ye.removeIn=$e.removeIn,Ye.update=$e.update,Ye.updateIn=$e.updateIn,Ye.mergeIn=$e.mergeIn,Ye.mergeDeepIn=$e.mergeDeepIn,Ye.withMutations=$e.withMutations,Ye.asMutable=$e.asMutable,Ye.asImmutable=$e.asImmutable,Ye.wasAltered=$e.wasAltered,VNode.prototype.removeBefore=function(s,o,i){if(i===o?1<<o:0===this.array.length)return this;var a=i>>>o&C;if(a>=this.array.length)return new VNode([],s);var u,_=0===a;if(o>0){var x=this.array[a];if((u=x&&x.removeBefore(s,o-w,i))===x&&_)return this}if(_&&!u)return this;var j=editableVNode(this,s);if(!_)for(var L=0;L<a;L++)j.array[L]=void 0;return u&&(j.array[a]=u),j},VNode.prototype.removeAfter=function(s,o,i){if(i===(o?1<<o:0)||0===this.array.length)return this;var a,u=i-1>>>o&C;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-w,i))===_&&u===this.array.length-1)return this}var x=editableVNode(this,s);return x.array.splice(u+1),a&&(x.array[u]=a),x};var Xe,Qe,et={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,o,i){return 0===o?iterateLeaf(s,i):iterateNode(s,o,i)}function iterateLeaf(s,w){var C=w===u?_&&_.array:s&&s.array,j=w>i?0:i-w,L=a-w;return L>x&&(L=x),function(){if(j===L)return et;var s=o?--L:j++;return C&&C[s]}}function iterateNode(s,u,_){var C,j=s&&s.array,L=_>i?0:i-_>>u,B=1+(a-_>>u);return B>x&&(B=x),function(){for(;;){if(C){var s=C();if(s!==et)return s;C=null}if(L===B)return et;var i=o?--B:L++;C=iterateNodeOrLeaf(j&&j[i],u-w,_+(i<<u))}}}}function makeList(s,o,i,a,u,_,w){var x=Object.create(Ye);return x.size=o-s,x._origin=s,x._capacity=o,x._level=i,x._root=a,x._tail=u,x.__ownerID=_,x.__hash=w,x.__altered=!1,x}function emptyList(){return Xe||(Xe=makeList(0,0,w))}function updateList(s,o,i){if((o=wrapIndex(s,o))!=o)return s;if(o>=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_=MakeRef(B);return o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_),_.value?s.__ownerID?(s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s):makeList(s._origin,s._capacity,s._level,u,a):s}function updateVNode(s,o,i,a,u,_){var x,j=a>>>i&C,L=s&&j<s.array.length;if(!L&&void 0===u)return s;if(i>0){var B=s&&s.array[j],$=updateVNode(B,o,i-w,a,u,_);return $===B?s:((x=editableVNode(s,o)).array[j]=$,x)}return L&&s.array[j]===u?s:(SetRef(_),x=editableVNode(s,o),void 0===u&&j===x.array.length-1?x.array.pop():x.array[j]=u,x)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new VNode(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<<s._level+w){for(var i=s._root,a=s._level;i&&a>0;)i=i.array[o>>>a&C],a-=w;return i}}function setListBounds(s,o,i){void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,x=u+o,j=void 0===i?_:i<0?_+i:u+i;if(x===u&&j===_)return s;if(x>=j)return s.clear();for(var L=s._level,B=s._root,$=0;x+$<0;)B=new VNode(B&&B.array.length?[void 0,B]:[],a),$+=1<<(L+=w);$&&(x+=$,u+=$,j+=$,_+=$);for(var V=getTailOffset(_),U=getTailOffset(j);U>=1<<L+w;)B=new VNode(B&&B.array.length?[B]:[],a),L+=w;var z=s._tail,Y=U<V?listNodeFor(s,j-1):U>V?new VNode([],a):z;if(z&&U>V&&x<_&&z.array.length){for(var Z=B=editableVNode(B,a),ee=L;ee>w;ee-=w){var ie=V>>>ee&C;Z=Z.array[ie]=editableVNode(Z.array[ie],a)}Z.array[V>>>w&C]=z}if(j<_&&(Y=Y&&Y.removeAfter(a,0,j)),x>=U)x-=U,j-=U,L=w,B=null,Y=Y&&Y.removeBefore(a,0,x);else if(x>u||U<V){for($=0;B;){var ae=x>>>L&C;if(ae!==U>>>L&C)break;ae&&($+=(1<<L)*ae),L-=w,B=B.array[ae]}B&&x>u&&(B=B.removeBefore(a,L,x-$)),B&&U<V&&(B=B.removeAfter(a,L,U-$)),$&&(x-=$,j-=$)}return s.__ownerID?(s.size=j-x,s._origin=x,s._capacity=j,s._level=L,s._root=B,s._tail=Y,s.__hash=void 0,s.__altered=!0,s):makeList(x,j,L,B,Y)}function mergeIntoListWith(s,o,i){for(var a=[],u=0,_=0;_<i.length;_++){var w=i[_],x=IndexedIterable(w);x.size>u&&(u=x.size),isIterable(w)||(x=x.map((function(s){return fromJS(s)}))),a.push(x)}return u>s.size&&(s=s.setSize(u)),mergeIntoCollectionWith(s,o,a)}function getTailOffset(s){return s<x?0:s-1>>>w<<w}function OrderedMap(s){return null==s?emptyOrderedMap():isOrderedMap(s)?s:emptyOrderedMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isOrderedMap(s){return isMap(s)&&isOrdered(s)}function makeOrderedMap(s,o,i,a){var u=Object.create(OrderedMap.prototype);return u.size=s?s.size:0,u._map=s,u._list=o,u.__ownerID=i,u.__hash=a,u}function emptyOrderedMap(){return Qe||(Qe=makeOrderedMap(emptyMap(),emptyList()))}function updateOrderedMap(s,o,i){var a,u,_=s._map,w=s._list,C=_.get(o),L=void 0!==C;if(i===j){if(!L)return s;w.size>=x&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&C!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=C===w.size-1?w.pop():w.set(C,void 0))}else if(L){if(i===w.get(C)[1])return s;a=_,u=w.set(C,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s):makeOrderedMap(a,u)}function ToKeyedSequence(s,o){this._iter=s,this._useKeys=o,this.size=s.size}function ToIndexedSequence(s){this._iter=s,this.size=s.size}function ToSetSequence(s){this._iter=s,this.size=s.size}function FromEntriesSequence(s){this._iter=s,this.size=s.size}function flipFactory(s){var o=makeSequence(s);return o._iter=s,o.size=s.size,o.flip=function(){return s},o.reverse=function(){var o=s.reverse.apply(this);return o.flip=function(){return s.reverse()},o},o.has=function(o){return s.includes(o)},o.includes=function(o){return s.has(o)},o.cacheResult=cacheResultThrough,o.__iterateUncached=function(o,i){var a=this;return s.__iterate((function(s,i){return!1!==o(i,s,a)}),i)},o.__iteratorUncached=function(o,i){if(o===U){var a=s.__iterator(o,i);return new Iterator((function(){var s=a.next();if(!s.done){var o=s.value[0];s.value[0]=s.value[1],s.value[1]=o}return s}))}return s.__iterator(o===V?$:V,i)},o}function mapFactory(s,o,i){var a=makeSequence(s);return a.size=s.size,a.has=function(o){return s.has(o)},a.get=function(a,u){var _=s.get(a,j);return _===j?u:o.call(i,_,a,s)},a.__iterateUncached=function(a,u){var _=this;return s.__iterate((function(s,u,w){return!1!==a(o.call(i,s,u,w),u,_)}),u)},a.__iteratorUncached=function(a,u){var _=s.__iterator(U,u);return new Iterator((function(){var u=_.next();if(u.done)return u;var w=u.value,x=w[0];return iteratorValue(a,x,o.call(i,w[1],x,s),u)}))},a}function reverseFactory(s,o){var i=makeSequence(s);return i._iter=s,i.size=s.size,i.reverse=function(){return s},s.flip&&(i.flip=function(){var o=flipFactory(s);return o.reverse=function(){return s.flip()},o}),i.get=function(i,a){return s.get(o?i:-1-i,a)},i.has=function(i){return s.has(o?i:-1-i)},i.includes=function(o){return s.includes(o)},i.cacheResult=cacheResultThrough,i.__iterate=function(o,i){var a=this;return s.__iterate((function(s,i){return o(s,i,a)}),!i)},i.__iterator=function(o,i){return s.__iterator(o,!i)},i}function filterFactory(s,o,i,a){var u=makeSequence(s);return a&&(u.has=function(a){var u=s.get(a,j);return u!==j&&!!o.call(i,u,a,s)},u.get=function(a,u){var _=s.get(a,j);return _!==j&&o.call(i,_,a,s)?_:u}),u.__iterateUncached=function(u,_){var w=this,x=0;return s.__iterate((function(s,_,C){if(o.call(i,s,_,C))return x++,u(s,a?_:x-1,w)}),_),x},u.__iteratorUncached=function(u,_){var w=s.__iterator(U,_),x=0;return new Iterator((function(){for(;;){var _=w.next();if(_.done)return _;var C=_.value,j=C[0],L=C[1];if(o.call(i,L,j,s))return iteratorValue(u,a?j:x++,L,_)}}))},u}function countByFactory(s,o,i){var a=Map().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?OrderedMap():Map()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=iterableClass(s);return u.map((function(o){return reify(s,_(o))}))}function sliceFactory(s,o,i,a){var u=s.size;if(void 0!==o&&(o|=0),void 0!==i&&(i===1/0?i=u:i|=0),wholeSlice(o,i,u))return s;var _=resolveBegin(o,u),w=resolveEnd(i,u);if(_!=_||w!=w)return sliceFactory(s.toSeq().cacheResult(),o,i,a);var x,C=w-_;C==C&&(x=C<0?0:C);var j=makeSequence(s);return j.size=0===x?x:s.size&&x||void 0,!a&&isSeq(s)&&x>=0&&(j.get=function(o,i){return(o=wrapIndex(this,o))>=0&&o<x?s.get(o+_,i):i}),j.__iterateUncached=function(o,i){var u=this;if(0===x)return 0;if(i)return this.cacheResult().__iterate(o,i);var w=0,C=!0,j=0;return s.__iterate((function(s,i){if(!C||!(C=w++<_))return j++,!1!==o(s,a?i:j-1,u)&&j!==x})),j},j.__iteratorUncached=function(o,i){if(0!==x&&i)return this.cacheResult().__iterator(o,i);var u=0!==x&&s.__iterator(o,i),w=0,C=0;return new Iterator((function(){for(;w++<_;)u.next();if(++C>x)return iteratorDone();var s=u.next();return a||o===V?s:iteratorValue(o,C-1,o===$?void 0:s.value[1],s)}))},j}function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(U,u),x=!0;return new Iterator((function(){if(!x)return iteratorDone();var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?a===U?s:iteratorValue(a,C,j,s):(x=!1,iteratorDone())}))},a}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(U,_),C=!0,j=0;return new Iterator((function(){var s,_,L;do{if((s=x.next()).done)return a||u===V?s:iteratorValue(u,j++,u===$?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return u===U?s:iteratorValue(u,_,L,s)}))},u}function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isIterable(s)?i&&(s=KeyedIterable(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}var _=new ArraySeq(a);return i?_=_.toKeyedSeq():isIndexed(s)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=a.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),_}function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=0,w=!1;function flatDeep(s,x){var C=this;s.__iterate((function(s,u){return(!o||x<o)&&isIterable(s)?flatDeep(s,x+1):!1===a(s,i?u:_++,C)&&(w=!0),!w}),u)}return flatDeep(s,0),_},a.__iteratorUncached=function(a,u){var _=s.__iterator(a,u),w=[],x=0;return new Iterator((function(){for(;_;){var s=_.next();if(!1===s.done){var C=s.value;if(a===U&&(C=C[1]),o&&!(w.length<o)||!isIterable(C))return i?s:iteratorValue(a,x++,C,s);w.push(_),_=C.__iterator(a,u)}else _=w.pop()}return iteratorDone()}))},a}function flatMapFactory(s,o,i){var a=iterableClass(s);return s.toSeq().map((function(u,_){return a(o.call(i,u,_,s))})).flatten(!0)}function interposeFactory(s,o){var i=makeSequence(s);return i.size=s.size&&2*s.size-1,i.__iterateUncached=function(i,a){var u=this,_=0;return s.__iterate((function(s,a){return(!_||!1!==i(o,_++,u))&&!1!==i(s,_++,u)}),a),_},i.__iteratorUncached=function(i,a){var u,_=s.__iterator(V,a),w=0;return new Iterator((function(){return(!u||w%2)&&(u=_.next()).done?u:w%2?iteratorValue(i,w++,o):iteratorValue(i,w++,u.value,u)}))},i}function sortFactory(s,o,i){o||(o=defaultComparator);var a=isKeyed(s),u=0,_=s.toSeq().map((function(o,a){return[a,o,u++,i?i(o,a,s):o]})).toArray();return _.sort((function(s,i){return o(s[3],i[3])||s[2]-i[2]})).forEach(a?function(s,o){_[o].length=2}:function(s,o){_[o]=s[1]}),a?KeyedSeq(_):isIndexed(s)?IndexedSeq(_):SetSeq(_)}function maxFactory(s,o,i){if(o||(o=defaultComparator),i){var a=s.toSeq().map((function(o,a){return[o,i(o,a,s)]})).reduce((function(s,i){return maxCompare(o,s[1],i[1])?i:s}));return a&&a[0]}return s.reduce((function(s,i){return maxCompare(o,s,i)?i:s}))}function maxCompare(s,o,i){var a=s(i,o);return 0===a&&i!==o&&(null==i||i!=i)||a>0}function zipWithFactory(s,o,i){var a=makeSequence(s);return a.size=new ArraySeq(i).map((function(s){return s.size})).min(),a.__iterate=function(s,o){for(var i,a=this.__iterator(V,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},a.__iteratorUncached=function(s,a){var u=i.map((function(s){return s=Iterable(s),getIterator(a?s.reverse():s)})),_=0,w=!1;return new Iterator((function(){var i;return w||(i=u.map((function(s){return s.next()})),w=i.some((function(s){return s.done}))),w?iteratorDone():iteratorValue(s,_++,o.apply(null,i.map((function(s){return s.value}))))}))},a}function reify(s,o){return isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError(\"Expected [K, V] tuple: \"+s)}function resolveSize(s){return assertNotInfinite(s.size),ensureSize(s)}function iterableClass(s){return isKeyed(s)?KeyedIterable:isIndexed(s)?IndexedIterable:SetIterable}function makeSequence(s){return Object.create((isKeyed(s)?KeyedSeq:isIndexed(s)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(s,o){return s>o?1:s<o?-1:0}function forceIterator(s){var o=getIterator(s);if(!o){if(!isArrayLike(s))throw new TypeError(\"Expected iterable or array-like: \"+s);o=getIterator(Iterable(s))}return o}function Record(s,o){var i,a=function Record(_){if(_ instanceof a)return _;if(!(this instanceof a))return new a(_);if(!i){i=!0;var w=Object.keys(s);setProps(u,w),u.size=w.length,u._name=o,u._keys=w,u._defaultValues=s}this._map=Map(_)},u=a.prototype=Object.create(tt);return u.constructor=a,a}createClass(OrderedMap,Map),OrderedMap.of=function(){return this(arguments)},OrderedMap.prototype.toString=function(){return this.__toString(\"OrderedMap {\",\"}\")},OrderedMap.prototype.get=function(s,o){var i=this._map.get(s);return void 0!==i?this._list.get(i)[1]:o},OrderedMap.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):emptyOrderedMap()},OrderedMap.prototype.set=function(s,o){return updateOrderedMap(this,s,o)},OrderedMap.prototype.remove=function(s){return updateOrderedMap(this,s,j)},OrderedMap.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},OrderedMap.prototype.__iterate=function(s,o){var i=this;return this._list.__iterate((function(o){return o&&s(o[1],o[0],i)}),o)},OrderedMap.prototype.__iterator=function(s,o){return this._list.fromEntrySeq().__iterator(s,o)},OrderedMap.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map.__ensureOwner(s),i=this._list.__ensureOwner(s);return s?makeOrderedMap(o,i,s,this.__hash):(this.__ownerID=s,this._map=o,this._list=i,this)},OrderedMap.isOrderedMap=isOrderedMap,OrderedMap.prototype[u]=!0,OrderedMap.prototype[_]=OrderedMap.prototype.remove,createClass(ToKeyedSequence,KeyedSeq),ToKeyedSequence.prototype.get=function(s,o){return this._iter.get(s,o)},ToKeyedSequence.prototype.has=function(s){return this._iter.has(s)},ToKeyedSequence.prototype.valueSeq=function(){return this._iter.valueSeq()},ToKeyedSequence.prototype.reverse=function(){var s=this,o=reverseFactory(this,!0);return this._useKeys||(o.valueSeq=function(){return s._iter.toSeq().reverse()}),o},ToKeyedSequence.prototype.map=function(s,o){var i=this,a=mapFactory(this,s,o);return this._useKeys||(a.valueSeq=function(){return i._iter.toSeq().map(s,o)}),a},ToKeyedSequence.prototype.__iterate=function(s,o){var i,a=this;return this._iter.__iterate(this._useKeys?function(o,i){return s(o,i,a)}:(i=o?resolveSize(this):0,function(u){return s(u,o?--i:i++,a)}),o)},ToKeyedSequence.prototype.__iterator=function(s,o){if(this._useKeys)return this._iter.__iterator(s,o);var i=this._iter.__iterator(V,o),a=o?resolveSize(this):0;return new Iterator((function(){var u=i.next();return u.done?u:iteratorValue(s,o?--a:a++,u.value,u)}))},ToKeyedSequence.prototype[u]=!0,createClass(ToIndexedSequence,IndexedSeq),ToIndexedSequence.prototype.includes=function(s){return this._iter.includes(s)},ToIndexedSequence.prototype.__iterate=function(s,o){var i=this,a=0;return this._iter.__iterate((function(o){return s(o,a++,i)}),o)},ToIndexedSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o),a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value,o)}))},createClass(ToSetSequence,SetSeq),ToSetSequence.prototype.has=function(s){return this._iter.includes(s)},ToSetSequence.prototype.__iterate=function(s,o){var i=this;return this._iter.__iterate((function(o){return s(o,o,i)}),o)},ToSetSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o);return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,o.value,o.value,o)}))},createClass(FromEntriesSequence,KeyedSeq),FromEntriesSequence.prototype.entrySeq=function(){return this._iter.toSeq()},FromEntriesSequence.prototype.__iterate=function(s,o){var i=this;return this._iter.__iterate((function(o){if(o){validateEntry(o);var a=isIterable(o);return s(a?o.get(1):o[1],a?o.get(0):o[0],i)}}),o)},FromEntriesSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o);return new Iterator((function(){for(;;){var o=i.next();if(o.done)return o;var a=o.value;if(a){validateEntry(a);var u=isIterable(a);return iteratorValue(s,u?a.get(0):a[0],u?a.get(1):a[1],o)}}}))},ToIndexedSequence.prototype.cacheResult=ToKeyedSequence.prototype.cacheResult=ToSetSequence.prototype.cacheResult=FromEntriesSequence.prototype.cacheResult=cacheResultThrough,createClass(Record,KeyedCollection),Record.prototype.toString=function(){return this.__toString(recordName(this)+\" {\",\"}\")},Record.prototype.has=function(s){return this._defaultValues.hasOwnProperty(s)},Record.prototype.get=function(s,o){if(!this.has(s))return o;var i=this._defaultValues[s];return this._map?this._map.get(s,i):i},Record.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var s=this.constructor;return s._empty||(s._empty=makeRecord(this,emptyMap()))},Record.prototype.set=function(s,o){if(!this.has(s))throw new Error('Cannot set unknown key \"'+s+'\" on '+recordName(this));if(this._map&&!this._map.has(s)&&o===this._defaultValues[s])return this;var i=this._map&&this._map.set(s,o);return this.__ownerID||i===this._map?this:makeRecord(this,i)},Record.prototype.remove=function(s){if(!this.has(s))return this;var o=this._map&&this._map.remove(s);return this.__ownerID||o===this._map?this:makeRecord(this,o)},Record.prototype.wasAltered=function(){return this._map.wasAltered()},Record.prototype.__iterator=function(s,o){var i=this;return KeyedIterable(this._defaultValues).map((function(s,o){return i.get(o)})).__iterator(s,o)},Record.prototype.__iterate=function(s,o){var i=this;return KeyedIterable(this._defaultValues).map((function(s,o){return i.get(o)})).__iterate(s,o)},Record.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map&&this._map.__ensureOwner(s);return s?makeRecord(this,o,s):(this.__ownerID=s,this._map=o,this)};var tt=Record.prototype;function makeRecord(s,o,i){var a=Object.create(Object.getPrototypeOf(s));return a._map=o,a.__ownerID=i,a}function recordName(s){return s._name||s.constructor.name||\"Record\"}function setProps(s,o){try{o.forEach(setProp.bind(void 0,s))}catch(s){}}function setProp(s,o){Object.defineProperty(s,o,{get:function(){return this.get(o)},set:function(s){invariant(this.__ownerID,\"Cannot set on an immutable record.\"),this.set(o,s)}})}function Set(s){return null==s?emptySet():isSet(s)&&!isOrdered(s)?s:emptySet().withMutations((function(o){var i=SetIterable(s);assertNotInfinite(i.size),i.forEach((function(s){return o.add(s)}))}))}function isSet(s){return!(!s||!s[nt])}tt[_]=tt.remove,tt.deleteIn=tt.removeIn=$e.removeIn,tt.merge=$e.merge,tt.mergeWith=$e.mergeWith,tt.mergeIn=$e.mergeIn,tt.mergeDeep=$e.mergeDeep,tt.mergeDeepWith=$e.mergeDeepWith,tt.mergeDeepIn=$e.mergeDeepIn,tt.setIn=$e.setIn,tt.update=$e.update,tt.updateIn=$e.updateIn,tt.withMutations=$e.withMutations,tt.asMutable=$e.asMutable,tt.asImmutable=$e.asImmutable,createClass(Set,SetCollection),Set.of=function(){return this(arguments)},Set.fromKeys=function(s){return this(KeyedIterable(s).keySeq())},Set.prototype.toString=function(){return this.__toString(\"Set {\",\"}\")},Set.prototype.has=function(s){return this._map.has(s)},Set.prototype.add=function(s){return updateSet(this,this._map.set(s,!0))},Set.prototype.remove=function(s){return updateSet(this,this._map.remove(s))},Set.prototype.clear=function(){return updateSet(this,this._map.clear())},Set.prototype.union=function(){var o=s.call(arguments,0);return 0===(o=o.filter((function(s){return 0!==s.size}))).length?this:0!==this.size||this.__ownerID||1!==o.length?this.withMutations((function(s){for(var i=0;i<o.length;i++)SetIterable(o[i]).forEach((function(o){return s.add(o)}))})):this.constructor(o[0])},Set.prototype.intersect=function(){var o=s.call(arguments,0);if(0===o.length)return this;o=o.map((function(s){return SetIterable(s)}));var i=this;return this.withMutations((function(s){i.forEach((function(i){o.every((function(s){return s.includes(i)}))||s.remove(i)}))}))},Set.prototype.subtract=function(){var o=s.call(arguments,0);if(0===o.length)return this;o=o.map((function(s){return SetIterable(s)}));var i=this;return this.withMutations((function(s){i.forEach((function(i){o.some((function(s){return s.includes(i)}))&&s.remove(i)}))}))},Set.prototype.merge=function(){return this.union.apply(this,arguments)},Set.prototype.mergeWith=function(o){var i=s.call(arguments,1);return this.union.apply(this,i)},Set.prototype.sort=function(s){return OrderedSet(sortFactory(this,s))},Set.prototype.sortBy=function(s,o){return OrderedSet(sortFactory(this,o,s))},Set.prototype.wasAltered=function(){return this._map.wasAltered()},Set.prototype.__iterate=function(s,o){var i=this;return this._map.__iterate((function(o,a){return s(a,a,i)}),o)},Set.prototype.__iterator=function(s,o){return this._map.map((function(s,o){return o})).__iterator(s,o)},Set.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map.__ensureOwner(s);return s?this.__make(o,s):(this.__ownerID=s,this._map=o,this)},Set.isSet=isSet;var rt,nt=\"@@__IMMUTABLE_SET__@@\",st=Set.prototype;function updateSet(s,o){return s.__ownerID?(s.size=o.size,s._map=o,s):o===s._map?s:0===o.size?s.__empty():s.__make(o)}function makeSet(s,o){var i=Object.create(st);return i.size=s?s.size:0,i._map=s,i.__ownerID=o,i}function emptySet(){return rt||(rt=makeSet(emptyMap()))}function OrderedSet(s){return null==s?emptyOrderedSet():isOrderedSet(s)?s:emptyOrderedSet().withMutations((function(o){var i=SetIterable(s);assertNotInfinite(i.size),i.forEach((function(s){return o.add(s)}))}))}function isOrderedSet(s){return isSet(s)&&isOrdered(s)}st[nt]=!0,st[_]=st.remove,st.mergeDeep=st.merge,st.mergeDeepWith=st.mergeWith,st.withMutations=$e.withMutations,st.asMutable=$e.asMutable,st.asImmutable=$e.asImmutable,st.__empty=emptySet,st.__make=makeSet,createClass(OrderedSet,Set),OrderedSet.of=function(){return this(arguments)},OrderedSet.fromKeys=function(s){return this(KeyedIterable(s).keySeq())},OrderedSet.prototype.toString=function(){return this.__toString(\"OrderedSet {\",\"}\")},OrderedSet.isOrderedSet=isOrderedSet;var ot,it=OrderedSet.prototype;function makeOrderedSet(s,o){var i=Object.create(it);return i.size=s?s.size:0,i._map=s,i.__ownerID=o,i}function emptyOrderedSet(){return ot||(ot=makeOrderedSet(emptyOrderedMap()))}function Stack(s){return null==s?emptyStack():isStack(s)?s:emptyStack().unshiftAll(s)}function isStack(s){return!(!s||!s[ct])}it[u]=!0,it.__empty=emptyOrderedSet,it.__make=makeOrderedSet,createClass(Stack,IndexedCollection),Stack.of=function(){return this(arguments)},Stack.prototype.toString=function(){return this.__toString(\"Stack [\",\"]\")},Stack.prototype.get=function(s,o){var i=this._head;for(s=wrapIndex(this,s);i&&s--;)i=i.next;return i?i.value:o},Stack.prototype.peek=function(){return this._head&&this._head.value},Stack.prototype.push=function(){if(0===arguments.length)return this;for(var s=this.size+arguments.length,o=this._head,i=arguments.length-1;i>=0;i--)o={value:arguments[i],next:o};return this.__ownerID?(this.size=s,this._head=o,this.__hash=void 0,this.__altered=!0,this):makeStack(s,o)},Stack.prototype.pushAll=function(s){if(0===(s=IndexedIterable(s)).size)return this;assertNotInfinite(s.size);var o=this.size,i=this._head;return s.reverse().forEach((function(s){o++,i={value:s,next:i}})),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(s){return this.pushAll(s)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(s,o){if(wholeSlice(s,o,this.size))return this;var i=resolveBegin(s,this.size);if(resolveEnd(o,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,s,o);for(var a=this.size-i,u=this._head;i--;)u=u.next;return this.__ownerID?(this.size=a,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(a,u)},Stack.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function(s,o){if(o)return this.reverse().__iterate(s);for(var i=0,a=this._head;a&&!1!==s(a.value,i++,this);)a=a.next;return i},Stack.prototype.__iterator=function(s,o){if(o)return this.reverse().__iterator(s);var i=0,a=this._head;return new Iterator((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return iteratorDone()}))},Stack.isStack=isStack;var at,ct=\"@@__IMMUTABLE_STACK__@@\",lt=Stack.prototype;function makeStack(s,o,i,a){var u=Object.create(lt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return at||(at=makeStack(0))}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}lt[ct]=!0,lt.withMutations=$e.withMutations,lt.asMutable=$e.asMutable,lt.asImmutable=$e.asImmutable,lt.wasAltered=$e.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var s=new Array(this.size||0);return this.valueSeq().__iterate((function(o,i){s[i]=o})),s},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(s){return s&&\"function\"==typeof s.toJS?s.toJS():s})).__toJS()},toJSON:function(){return this.toSeq().map((function(s){return s&&\"function\"==typeof s.toJSON?s.toJSON():s})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var s={};return this.__iterate((function(o,i){s[i]=o})),s},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return\"[Iterable]\"},__toString:function(s,o){return 0===this.size?s+o:s+\" \"+this.toSeq().map(this.__toStringMapper).join(\", \")+\" \"+o},concat:function(){return reify(this,concatFactory(this,s.call(arguments,0)))},includes:function(s){return this.some((function(o){return is(o,s)}))},entries:function(){return this.__iterator(U)},every:function(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function(s,o){return reify(this,filterFactory(this,s,o,!0))},find:function(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function(s){assertNotInfinite(this.size),s=void 0!==s?\"\"+s:\",\";var o=\"\",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():\"\"})),o},keys:function(){return this.__iterator($)},map:function(s,o){return reify(this,mapFactory(this,s,o))},reduce:function(s,o,i){var a,u;return assertNotInfinite(this.size),arguments.length<2?u=!0:a=o,this.__iterate((function(o,_,w){u?(u=!1,a=o):a=s.call(i,a,o,_,w)})),a},reduceRight:function(s,o,i){var a=this.toKeyedSeq().reverse();return a.reduce.apply(a,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function(s,o){return!this.every(not(s),o)},sort:function(s){return reify(this,sortFactory(this,s))},values:function(){return this.__iterator(V)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function(s,o){return countByFactory(this,s,o)},equals:function(s){return deepEqual(this,s)},entrySeq:function(){var s=this;if(s._cache)return new ArraySeq(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function(s,o){return this.filter(not(s),o)},findEntry:function(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function(){return this.find(returnTrue)},flatMap:function(s,o){return reify(this,flatMapFactory(this,s,o))},flatten:function(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn:function(s,o){for(var i,a=this,u=forceIterator(s);!(i=u.next()).done;){var _=i.value;if((a=a&&a.get?a.get(_,j):j)===j)return o}return a},groupBy:function(s,o){return groupByFactory(this,s,o)},has:function(s){return this.get(s,j)!==j},hasIn:function(s){return this.getIn(s,j)!==j},isSubset:function(s){return s=\"function\"==typeof s.includes?s:Iterable(s),this.every((function(o){return s.includes(o)}))},isSuperset:function(s){return(s=\"function\"==typeof s.isSubset?s:Iterable(s)).isSubset(this)},keyOf:function(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function(s){return maxFactory(this,s)},maxBy:function(s,o){return maxFactory(this,o,s)},min:function(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function(){return this.slice(1)},skip:function(s){return this.slice(Math.max(0,s))},skipLast:function(s){return reify(this,this.toSeq().reverse().skip(s).reverse())},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function(s,o){return this.skipWhile(not(s),o)},sortBy:function(s,o){return reify(this,sortFactory(this,o,s))},take:function(s){return this.slice(0,Math.max(0,s))},takeLast:function(s){return reify(this,this.toSeq().reverse().take(s).reverse())},takeWhile:function(s,o){return reify(this,takeWhileFactory(this,s,o))},takeUntil:function(s,o){return this.takeWhile(not(s),o)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ut=Iterable.prototype;ut[o]=!0,ut[Z]=ut.values,ut.__toJS=ut.toArray,ut.__toStringMapper=quoteString,ut.inspect=ut.toSource=function(){return this.toString()},ut.chain=ut.flatMap,ut.contains=ut.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){return!s.apply(this,arguments)}}function neg(s){return function(){return-s.apply(this,arguments)}}function quoteString(s){return\"string\"==typeof s?JSON.stringify(s):String(s)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(s,o){return s<o?1:s>o?-1:0}function hashIterable(s){if(s.size===1/0)return 0;var o=isOrdered(s),i=isKeyed(s),a=o?1:0;return murmurHashOfSize(s.__iterate(i?o?function(s,o){a=31*a+hashMerge(hash(s),hash(o))|0}:function(s,o){a=a+hashMerge(hash(s),hash(o))|0}:o?function(s){a=31*a+hash(s)|0}:function(s){a=a+hash(s)|0}),a)}function murmurHashOfSize(s,o){return o=le(o,3432918353),o=le(o<<15|o>>>-15,461845907),o=le(o<<13|o>>>-13,5),o=le((o=o+3864292196^s)^o>>>16,2246822507),o=smi((o=le(o^o>>>13,3266489909))^o>>>16)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}return pt[i]=!0,pt[Z]=ut.entries,pt.__toJS=ut.toObject,pt.__toStringMapper=function(s,o){return JSON.stringify(o)+\": \"+quoteString(s)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function(s,o){var i=arguments.length;if(o=Math.max(0|o,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function(){return this.get(0)},flatten:function(s){return reify(this,flattenFactory(this,s,!1))},get:function(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s<this.size:-1!==this.indexOf(s))},interpose:function(s){return reify(this,interposeFactory(this,s))},interleave:function(){var s=[this].concat(arrCopy(arguments)),o=zipWithFactory(this.toSeq(),IndexedSeq.of,s),i=o.flatten(!0);return o.size&&(i.size=o.size*s.length),reify(this,i)},keySeq:function(){return Range(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!1))},zip:function(){return reify(this,zipWithFactory(this,defaultZipper,[this].concat(arrCopy(arguments))))},zipWith:function(s){var o=arrCopy(arguments);return o[0]=this,reify(this,zipWithFactory(this,s,o))}}),IndexedIterable.prototype[a]=!0,IndexedIterable.prototype[u]=!0,mixin(SetIterable,{get:function(s,o){return this.has(s)?s:o},includes:function(s){return this.has(s)},keySeq:function(){return this.valueSeq()}}),SetIterable.prototype.has=ut.includes,SetIterable.prototype.contains=SetIterable.prototype.includes,mixin(KeyedSeq,KeyedIterable.prototype),mixin(IndexedSeq,IndexedIterable.prototype),mixin(SetSeq,SetIterable.prototype),mixin(KeyedCollection,KeyedIterable.prototype),mixin(IndexedCollection,IndexedIterable.prototype),mixin(SetCollection,SetIterable.prototype),{Iterable,Seq,Collection,Map,OrderedMap,List,Stack,Set,OrderedSet,Record,Range,Repeat,is,fromJS}}()},9748:(s,o,i)=>{\"use strict\";i(71340);var a=i(92046);s.exports=a.Object.assign},9999:(s,o,i)=>{var a=i(37217),u=i(83729),_=i(16547),w=i(74733),x=i(43838),C=i(93290),j=i(23007),L=i(92271),B=i(48948),$=i(50002),V=i(83349),U=i(5861),z=i(76189),Y=i(77199),Z=i(35529),ee=i(56449),ie=i(3656),ae=i(87730),ce=i(23805),le=i(38440),pe=i(95950),de=i(37241),fe=\"[object Arguments]\",ye=\"[object Function]\",be=\"[object Object]\",_e={};_e[fe]=_e[\"[object Array]\"]=_e[\"[object ArrayBuffer]\"]=_e[\"[object DataView]\"]=_e[\"[object Boolean]\"]=_e[\"[object Date]\"]=_e[\"[object Float32Array]\"]=_e[\"[object Float64Array]\"]=_e[\"[object Int8Array]\"]=_e[\"[object Int16Array]\"]=_e[\"[object Int32Array]\"]=_e[\"[object Map]\"]=_e[\"[object Number]\"]=_e[be]=_e[\"[object RegExp]\"]=_e[\"[object Set]\"]=_e[\"[object String]\"]=_e[\"[object Symbol]\"]=_e[\"[object Uint8Array]\"]=_e[\"[object Uint8ClampedArray]\"]=_e[\"[object Uint16Array]\"]=_e[\"[object Uint32Array]\"]=!0,_e[\"[object Error]\"]=_e[ye]=_e[\"[object WeakMap]\"]=!1,s.exports=function baseClone(s,o,i,Se,we,xe){var Pe,Te=1&o,Re=2&o,$e=4&o;if(i&&(Pe=we?i(s,Se,we,xe):i(s)),void 0!==Pe)return Pe;if(!ce(s))return s;var qe=ee(s);if(qe){if(Pe=z(s),!Te)return j(s,Pe)}else{var ze=U(s),We=ze==ye||\"[object GeneratorFunction]\"==ze;if(ie(s))return C(s,Te);if(ze==be||ze==fe||We&&!we){if(Pe=Re||We?{}:Z(s),!Te)return Re?B(s,x(Pe,s)):L(s,w(Pe,s))}else{if(!_e[ze])return we?s:{};Pe=Y(s,ze,Te)}}xe||(xe=new a);var He=xe.get(s);if(He)return He;xe.set(s,Pe),le(s)?s.forEach((function(a){Pe.add(baseClone(a,o,i,a,s,xe))})):ae(s)&&s.forEach((function(a,u){Pe.set(u,baseClone(a,o,i,u,s,xe))}));var Ye=qe?void 0:($e?Re?V:$:Re?de:pe)(s);return u(Ye||s,(function(a,u){Ye&&(a=s[u=a]),_(Pe,u,baseClone(a,o,i,u,s,xe))})),Pe}},10023:(s,o,i)=>{const a=i(6205),INTS=()=>[{type:a.RANGE,from:48,to:57}],WORDS=()=>[{type:a.CHAR,value:95},{type:a.RANGE,from:97,to:122},{type:a.RANGE,from:65,to:90}].concat(INTS()),WHITESPACE=()=>[{type:a.CHAR,value:9},{type:a.CHAR,value:10},{type:a.CHAR,value:11},{type:a.CHAR,value:12},{type:a.CHAR,value:13},{type:a.CHAR,value:32},{type:a.CHAR,value:160},{type:a.CHAR,value:5760},{type:a.RANGE,from:8192,to:8202},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233},{type:a.CHAR,value:8239},{type:a.CHAR,value:8287},{type:a.CHAR,value:12288},{type:a.CHAR,value:65279}];o.words=()=>({type:a.SET,set:WORDS(),not:!1}),o.notWords=()=>({type:a.SET,set:WORDS(),not:!0}),o.ints=()=>({type:a.SET,set:INTS(),not:!1}),o.notInts=()=>({type:a.SET,set:INTS(),not:!0}),o.whitespace=()=>({type:a.SET,set:WHITESPACE(),not:!1}),o.notWhitespace=()=>({type:a.SET,set:WHITESPACE(),not:!0}),o.anyChar=()=>({type:a.SET,set:[{type:a.CHAR,value:10},{type:a.CHAR,value:13},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233}],not:!0})},10043:(s,o,i)=>{\"use strict\";var a=i(54018),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(\"Can't set \"+u(s)+\" as a prototype\")}},10124:(s,o,i)=>{var a=i(9325);s.exports=function(){return a.Date.now()}},10300:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(82159),_=i(36624),w=i(4640),x=i(73448),C=TypeError;s.exports=function(s,o){var i=arguments.length<2?x(s):o;if(u(i))return _(a(i,s));throw new C(w(s)+\" is not iterable\")}},10316:(s,o,i)=>{const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(\"\"===this.id.toValue())throw Error(\"Cannot create reference to an element that does not contain an ID\");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error(\"Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`\");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||\"element\"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if(\"string\"==typeof s||\"number\"==typeof s||\"boolean\"==typeof s||\"null\"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if(\"object\"!=typeof s)throw new Error(\"Cannot set content to given value\");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty(\"id\",\"\")}set id(s){this.setMetaProperty(\"id\",s)}get classes(){return this.getMetaProperty(\"classes\",[])}set classes(s){this.setMetaProperty(\"classes\",s)}get title(){return this.getMetaProperty(\"title\",\"\")}set title(s){this.setMetaProperty(\"title\",s)}get description(){return this.getMetaProperty(\"description\",\"\")}set description(s){this.setMetaProperty(\"description\",s)}get links(){return this.getMetaProperty(\"links\",[])}set links(s){this.setMetaProperty(\"links\",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},10392:s=>{s.exports=function getValue(s,o){return null==s?void 0:s[o]}},10776:(s,o,i)=>{var a=i(30756),u=i(95950);s.exports=function getMatchData(s){for(var o=u(s),i=o.length;i--;){var _=o[i],w=s[_];o[i]=[_,w,a(w)]}return o}},10866:(s,o,i)=>{const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},11042:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(1907),_=i(24443),w=i(87170),x=i(36624),C=u([].concat);s.exports=a(\"Reflect\",\"ownKeys\")||function ownKeys(s){var o=_.f(x(s)),i=w.f;return i?C(o,i(s)):o}},11091:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(76024),_=i(92361),w=i(62250),x=i(13846).f,C=i(7463),j=i(92046),L=i(28311),B=i(61626),$=i(49724);i(36128);var wrapConstructor=function(s){var Wrapper=function(o,i,a){if(this instanceof Wrapper){switch(arguments.length){case 0:return new s;case 1:return new s(o);case 2:return new s(o,i)}return new s(o,i,a)}return u(s,this,arguments)};return Wrapper.prototype=s.prototype,Wrapper};s.exports=function(s,o){var i,u,V,U,z,Y,Z,ee,ie,ae=s.target,ce=s.global,le=s.stat,pe=s.proto,de=ce?a:le?a[ae]:a[ae]&&a[ae].prototype,fe=ce?j:j[ae]||B(j,ae,{})[ae],ye=fe.prototype;for(U in o)u=!(i=C(ce?U:ae+(le?\".\":\"#\")+U,s.forced))&&de&&$(de,U),Y=fe[U],u&&(Z=s.dontCallGetSet?(ie=x(de,U))&&ie.value:de[U]),z=u&&Z?Z:o[U],(i||pe||typeof Y!=typeof z)&&(ee=s.bind&&u?L(z,a):s.wrap&&u?wrapConstructor(z):pe&&w(z)?_(z):z,(s.sham||z&&z.sham||Y&&Y.sham)&&B(ee,\"sham\",!0),B(fe,U,ee),pe&&($(j,V=ae+\"Prototype\")||B(j,V,{}),B(j[V],U,z),s.real&&ye&&(i||!ye[U])&&B(ye,U,z)))}},11287:s=>{s.exports=function getHolder(s){return s.placeholder}},11331:(s,o,i)=>{var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||\"[object Object]\"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,\"constructor\")&&o.constructor;return\"function\"==typeof i&&i instanceof i&&C.call(i)==L}},11470:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(65482),_=i(90160),w=i(74239),x=a(\"\".charAt),C=a(\"\".charCodeAt),j=a(\"\".slice),createMethod=function(s){return function(o,i){var a,L,B=_(w(o)),$=u(i),V=B.length;return $<0||$>=V?s?\"\":void 0:(a=C(B,$))<55296||a>56319||$+1===V||(L=C(B,$+1))<56320||L>57343?s?x(B,$):a:s?j(B,$,$+2):L-56320+(a-55296<<10)+65536}};s.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},11842:(s,o,i)=>{var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12242:(s,o,i)=>{const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"boolean\"}primitive(){return\"boolean\"}}},12507:(s,o,i)=>{var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(\"\"):o.slice(1);return x[s]()+C}}},12560:(s,o,i)=>{\"use strict\";i(99363);var a=i(19287),u=i(45951),_=i(14840),w=i(93742);for(var x in a)_(u[x],x),w[x]=w.Array},12651:(s,o,i)=>{var a=i(74218);s.exports=function getMapData(s,o){var i=s.__data__;return a(o)?i[\"string\"==typeof o?\"string\":\"hash\"]:i.map}},12749:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashHas(s){var o=this.__data__;return a?void 0!==o[s]:u.call(o,s)}},13222:(s,o,i)=>{var a=i(77556);s.exports=function toString(s){return null==s?\"\":a(s)}},13846:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(13930),_=i(22574),w=i(75817),x=i(4993),C=i(70470),j=i(49724),L=i(73648),B=Object.getOwnPropertyDescriptor;o.f=a?B:function getOwnPropertyDescriptor(s,o){if(s=x(s),o=C(o),L)try{return B(s,o)}catch(s){}if(j(s,o))return w(!u(_.f,s,o),s[o])}},13930:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype.call;s.exports=a?u.bind(u):function(){return u.apply(u,arguments)}},14248:s=>{s.exports=function arraySome(s,o){for(var i=-1,a=null==s?0:s.length;++i<a;)if(o(s[i],i,s))return!0;return!1}},14528:s=>{s.exports=function arrayPush(s,o){for(var i=-1,a=o.length,u=s.length;++i<a;)s[u+i]=o[i];return s}},14540:(s,o,i)=>{const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element=\"ref\",this.path||(this.path=\"element\")}get path(){return this.attributes.get(\"path\")}set path(s){this.attributes.set(\"path\",s)}}},14744:s=>{\"use strict\";var o=function isMergeableObject(s){return function isNonNullObject(s){return!!s&&\"object\"==typeof s}(s)&&!function isSpecial(s){var o=Object.prototype.toString.call(s);return\"[object RegExp]\"===o||\"[object Date]\"===o||function isReactElement(s){return s.$$typeof===i}(s)}(s)};var i=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function cloneUnlessOtherwiseSpecified(s,o){return!1!==o.clone&&o.isMergeableObject(s)?deepmerge(function emptyTarget(s){return Array.isArray(s)?[]:{}}(s),s,o):s}function defaultArrayMerge(s,o,i){return s.concat(o).map((function(s){return cloneUnlessOtherwiseSpecified(s,i)}))}function getKeys(s){return Object.keys(s).concat(function getEnumerableOwnPropertySymbols(s){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s).filter((function(o){return Object.propertyIsEnumerable.call(s,o)})):[]}(s))}function propertyIsOnObject(s,o){try{return o in s}catch(s){return!1}}function mergeObject(s,o,i){var a={};return i.isMergeableObject(s)&&getKeys(s).forEach((function(o){a[o]=cloneUnlessOtherwiseSpecified(s[o],i)})),getKeys(o).forEach((function(u){(function propertyIsUnsafe(s,o){return propertyIsOnObject(s,o)&&!(Object.hasOwnProperty.call(s,o)&&Object.propertyIsEnumerable.call(s,o))})(s,u)||(propertyIsOnObject(s,u)&&i.isMergeableObject(o[u])?a[u]=function getMergeFunction(s,o){if(!o.customMerge)return deepmerge;var i=o.customMerge(s);return\"function\"==typeof i?i:deepmerge}(u,i)(s[u],o[u],i):a[u]=cloneUnlessOtherwiseSpecified(o[u],i))})),a}function deepmerge(s,i,a){(a=a||{}).arrayMerge=a.arrayMerge||defaultArrayMerge,a.isMergeableObject=a.isMergeableObject||o,a.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var u=Array.isArray(i);return u===Array.isArray(s)?u?a.arrayMerge(s,i,a):mergeObject(s,i,a):cloneUnlessOtherwiseSpecified(i,a)}deepmerge.all=function deepmergeAll(s,o){if(!Array.isArray(s))throw new Error(\"first argument should be an array\");return s.reduce((function(s,i){return deepmerge(s,i,o)}),{})};var a=deepmerge;s.exports=a},14792:(s,o,i)=>{var a=i(13222),u=i(55808);s.exports=function capitalize(s){return u(a(s).toLowerCase())}},14840:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(74284).f,_=i(61626),w=i(49724),x=i(54878),C=i(76264)(\"toStringTag\");s.exports=function(s,o,i,j){var L=i?s:s&&s.prototype;L&&(w(L,C)||u(L,C,{configurable:!0,value:o}),j&&!a&&_(L,\"toString\",x))}},14974:s=>{s.exports=function safeGet(s,o){if((\"constructor\"!==o||\"function\"!=typeof s[o])&&\"__proto__\"!=o)return s[o]}},15287:(s,o)=>{\"use strict\";var i=Symbol.for(\"react.element\"),a=Symbol.for(\"react.portal\"),u=Symbol.for(\"react.fragment\"),_=Symbol.for(\"react.strict_mode\"),w=Symbol.for(\"react.profiler\"),x=Symbol.for(\"react.provider\"),C=Symbol.for(\"react.context\"),j=Symbol.for(\"react.forward_ref\"),L=Symbol.for(\"react.suspense\"),B=Symbol.for(\"react.memo\"),$=Symbol.for(\"react.lazy\"),V=Symbol.iterator;var U={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},z=Object.assign,Y={};function E(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||U}function F(){}function G(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||U}E.prototype.isReactComponent={},E.prototype.setState=function(s,o){if(\"object\"!=typeof s&&\"function\"!=typeof s&&null!=s)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,s,o,\"setState\")},E.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,\"forceUpdate\")},F.prototype=E.prototype;var Z=G.prototype=new F;Z.constructor=G,z(Z,E.prototype),Z.isPureReactComponent=!0;var ee=Array.isArray,ie=Object.prototype.hasOwnProperty,ae={current:null},ce={key:!0,ref:!0,__self:!0,__source:!0};function M(s,o,a){var u,_={},w=null,x=null;if(null!=o)for(u in void 0!==o.ref&&(x=o.ref),void 0!==o.key&&(w=\"\"+o.key),o)ie.call(o,u)&&!ce.hasOwnProperty(u)&&(_[u]=o[u]);var C=arguments.length-2;if(1===C)_.children=a;else if(1<C){for(var j=Array(C),L=0;L<C;L++)j[L]=arguments[L+2];_.children=j}if(s&&s.defaultProps)for(u in C=s.defaultProps)void 0===_[u]&&(_[u]=C[u]);return{$$typeof:i,type:s,key:w,ref:x,props:_,_owner:ae.current}}function O(s){return\"object\"==typeof s&&null!==s&&s.$$typeof===i}var le=/\\/+/g;function Q(s,o){return\"object\"==typeof s&&null!==s&&null!=s.key?function escape(s){var o={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+s.replace(/[=:]/g,(function(s){return o[s]}))}(\"\"+s.key):o.toString(36)}function R(s,o,u,_,w){var x=typeof s;\"undefined\"!==x&&\"boolean\"!==x||(s=null);var C=!1;if(null===s)C=!0;else switch(x){case\"string\":case\"number\":C=!0;break;case\"object\":switch(s.$$typeof){case i:case a:C=!0}}if(C)return w=w(C=s),s=\"\"===_?\".\"+Q(C,0):_,ee(w)?(u=\"\",null!=s&&(u=s.replace(le,\"$&/\")+\"/\"),R(w,o,u,\"\",(function(s){return s}))):null!=w&&(O(w)&&(w=function N(s,o){return{$$typeof:i,type:s.type,key:o,ref:s.ref,props:s.props,_owner:s._owner}}(w,u+(!w.key||C&&C.key===w.key?\"\":(\"\"+w.key).replace(le,\"$&/\")+\"/\")+s)),o.push(w)),1;if(C=0,_=\"\"===_?\".\":_+\":\",ee(s))for(var j=0;j<s.length;j++){var L=_+Q(x=s[j],j);C+=R(x,o,u,L,w)}else if(L=function A(s){return null===s||\"object\"!=typeof s?null:\"function\"==typeof(s=V&&s[V]||s[\"@@iterator\"])?s:null}(s),\"function\"==typeof L)for(s=L.call(s),j=0;!(x=s.next()).done;)C+=R(x=x.value,o,u,L=_+Q(x,j++),w);else if(\"object\"===x)throw o=String(s),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===o?\"object with keys {\"+Object.keys(s).join(\", \")+\"}\":o)+\"). If you meant to render a collection of children, use an array instead.\");return C}function S(s,o,i){if(null==s)return s;var a=[],u=0;return R(s,a,\"\",\"\",(function(s){return o.call(i,s,u++)})),a}function T(s){if(-1===s._status){var o=s._result;(o=o()).then((function(o){0!==s._status&&-1!==s._status||(s._status=1,s._result=o)}),(function(o){0!==s._status&&-1!==s._status||(s._status=2,s._result=o)})),-1===s._status&&(s._status=0,s._result=o)}if(1===s._status)return s._result.default;throw s._result}var pe={current:null},de={transition:null},fe={ReactCurrentDispatcher:pe,ReactCurrentBatchConfig:de,ReactCurrentOwner:ae};function X(){throw Error(\"act(...) is not supported in production builds of React.\")}o.Children={map:S,forEach:function(s,o,i){S(s,(function(){o.apply(this,arguments)}),i)},count:function(s){var o=0;return S(s,(function(){o++})),o},toArray:function(s){return S(s,(function(s){return s}))||[]},only:function(s){if(!O(s))throw Error(\"React.Children.only expected to receive a single React element child.\");return s}},o.Component=E,o.Fragment=u,o.Profiler=w,o.PureComponent=G,o.StrictMode=_,o.Suspense=L,o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fe,o.act=X,o.cloneElement=function(s,o,a){if(null==s)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+s+\".\");var u=z({},s.props),_=s.key,w=s.ref,x=s._owner;if(null!=o){if(void 0!==o.ref&&(w=o.ref,x=ae.current),void 0!==o.key&&(_=\"\"+o.key),s.type&&s.type.defaultProps)var C=s.type.defaultProps;for(j in o)ie.call(o,j)&&!ce.hasOwnProperty(j)&&(u[j]=void 0===o[j]&&void 0!==C?C[j]:o[j])}var j=arguments.length-2;if(1===j)u.children=a;else if(1<j){C=Array(j);for(var L=0;L<j;L++)C[L]=arguments[L+2];u.children=C}return{$$typeof:i,type:s.type,key:_,ref:w,props:u,_owner:x}},o.createContext=function(s){return(s={$$typeof:C,_currentValue:s,_currentValue2:s,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:x,_context:s},s.Consumer=s},o.createElement=M,o.createFactory=function(s){var o=M.bind(null,s);return o.type=s,o},o.createRef=function(){return{current:null}},o.forwardRef=function(s){return{$$typeof:j,render:s}},o.isValidElement=O,o.lazy=function(s){return{$$typeof:$,_payload:{_status:-1,_result:s},_init:T}},o.memo=function(s,o){return{$$typeof:B,type:s,compare:void 0===o?null:o}},o.startTransition=function(s){var o=de.transition;de.transition={};try{s()}finally{de.transition=o}},o.unstable_act=X,o.useCallback=function(s,o){return pe.current.useCallback(s,o)},o.useContext=function(s){return pe.current.useContext(s)},o.useDebugValue=function(){},o.useDeferredValue=function(s){return pe.current.useDeferredValue(s)},o.useEffect=function(s,o){return pe.current.useEffect(s,o)},o.useId=function(){return pe.current.useId()},o.useImperativeHandle=function(s,o,i){return pe.current.useImperativeHandle(s,o,i)},o.useInsertionEffect=function(s,o){return pe.current.useInsertionEffect(s,o)},o.useLayoutEffect=function(s,o){return pe.current.useLayoutEffect(s,o)},o.useMemo=function(s,o){return pe.current.useMemo(s,o)},o.useReducer=function(s,o,i){return pe.current.useReducer(s,o,i)},o.useRef=function(s){return pe.current.useRef(s)},o.useState=function(s){return pe.current.useState(s)},o.useSyncExternalStore=function(s,o,i){return pe.current.useSyncExternalStore(s,o,i)},o.useTransition=function(){return pe.current.useTransition()},o.version=\"18.3.1\"},15325:(s,o,i)=>{var a=i(96131);s.exports=function arrayIncludes(s,o){return!!(null==s?0:s.length)&&a(s,o,0)>-1}},15340:()=>{},15389:(s,o,i)=>{var a=i(93663),u=i(87978),_=i(83488),w=i(56449),x=i(50583);s.exports=function baseIteratee(s){return\"function\"==typeof s?s:null==s?_:\"object\"==typeof s?w(s)?u(s[0],s[1]):a(s):x(s)}},15972:(s,o,i)=>{\"use strict\";var a=i(49724),u=i(62250),_=i(39298),w=i(92522),x=i(57382),C=w(\"IE_PROTO\"),j=Object,L=j.prototype;s.exports=x?j.getPrototypeOf:function(s){var o=_(s);if(a(o,C))return o[C];var i=o.constructor;return u(i)&&o instanceof i?i.prototype:o instanceof j?L:null}},16038:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsSet(s){return u(s)&&\"[object Set]\"==a(s)}},16426:s=>{s.exports=function(){var s=document.getSelection();if(!s.rangeCount)return function(){};for(var o=document.activeElement,i=[],a=0;a<s.rangeCount;a++)i.push(s.getRangeAt(a));switch(o.tagName.toUpperCase()){case\"INPUT\":case\"TEXTAREA\":o.blur();break;default:o=null}return s.removeAllRanges(),function(){\"Caret\"===s.type&&s.removeAllRanges(),s.rangeCount||i.forEach((function(o){s.addRange(o)})),o&&o.focus()}}},16547:(s,o,i)=>{var a=i(43360),u=i(75288),_=Object.prototype.hasOwnProperty;s.exports=function assignValue(s,o,i){var w=s[o];_.call(s,o)&&u(w,i)&&(void 0!==i||o in s)||a(s,o,i)}},16708:(s,o,i)=>{\"use strict\";var a,u=i(65606);function CorkedRequest(s){var o=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(s,o,i){var a=s.entry;s.entry=null;for(;a;){var u=a.callback;o.pendingcb--,u(i),a=a.next}o.corkedRequestsFree.next=s}(o,s)}}s.exports=Writable,Writable.WritableState=WritableState;var _={deprecate:i(94643)},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(75896),B=i(65291).getHighWaterMark,$=i(86048).F,V=$.ERR_INVALID_ARG_TYPE,U=$.ERR_METHOD_NOT_IMPLEMENTED,z=$.ERR_MULTIPLE_CALLBACK,Y=$.ERR_STREAM_CANNOT_PIPE,Z=$.ERR_STREAM_DESTROYED,ee=$.ERR_STREAM_NULL_VALUES,ie=$.ERR_STREAM_WRITE_AFTER_END,ae=$.ERR_UNKNOWN_ENCODING,ce=L.errorOrDestroy;function nop(){}function WritableState(s,o,_){a=a||i(25382),s=s||{},\"boolean\"!=typeof _&&(_=o instanceof a),this.objectMode=!!s.objectMode,_&&(this.objectMode=this.objectMode||!!s.writableObjectMode),this.highWaterMark=B(this,s,\"writableHighWaterMark\",_),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var w=!1===s.decodeStrings;this.decodeStrings=!w,this.defaultEncoding=s.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){!function onwrite(s,o){var i=s._writableState,a=i.sync,_=i.writecb;if(\"function\"!=typeof _)throw new z;if(function onwriteStateUpdate(s){s.writing=!1,s.writecb=null,s.length-=s.writelen,s.writelen=0}(i),o)!function onwriteError(s,o,i,a,_){--o.pendingcb,i?(u.nextTick(_,a),u.nextTick(finishMaybe,s,o),s._writableState.errorEmitted=!0,ce(s,a)):(_(a),s._writableState.errorEmitted=!0,ce(s,a),finishMaybe(s,o))}(s,i,a,o,_);else{var w=needFinish(i)||s.destroyed;w||i.corked||i.bufferProcessing||!i.bufferedRequest||clearBuffer(s,i),a?u.nextTick(afterWrite,s,i,w,_):afterWrite(s,i,w,_)}}(o,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(s){var o=this instanceof(a=a||i(25382));if(!o&&!j.call(Writable,this))return new Writable(s);this._writableState=new WritableState(s,this,o),this.writable=!0,s&&(\"function\"==typeof s.write&&(this._write=s.write),\"function\"==typeof s.writev&&(this._writev=s.writev),\"function\"==typeof s.destroy&&(this._destroy=s.destroy),\"function\"==typeof s.final&&(this._final=s.final)),w.call(this)}function doWrite(s,o,i,a,u,_,w){o.writelen=a,o.writecb=w,o.writing=!0,o.sync=!0,o.destroyed?o.onwrite(new Z(\"write\")):i?s._writev(u,o.onwrite):s._write(u,_,o.onwrite),o.sync=!1}function afterWrite(s,o,i,a){i||function onwriteDrain(s,o){0===o.length&&o.needDrain&&(o.needDrain=!1,s.emit(\"drain\"))}(s,o),o.pendingcb--,a(),finishMaybe(s,o)}function clearBuffer(s,o){o.bufferProcessing=!0;var i=o.bufferedRequest;if(s._writev&&i&&i.next){var a=o.bufferedRequestCount,u=new Array(a),_=o.corkedRequestsFree;_.entry=i;for(var w=0,x=!0;i;)u[w]=i,i.isBuf||(x=!1),i=i.next,w+=1;u.allBuffers=x,doWrite(s,o,!0,o.length,u,\"\",_.finish),o.pendingcb++,o.lastBufferedRequest=null,_.next?(o.corkedRequestsFree=_.next,_.next=null):o.corkedRequestsFree=new CorkedRequest(o),o.bufferedRequestCount=0}else{for(;i;){var C=i.chunk,j=i.encoding,L=i.callback;if(doWrite(s,o,!1,o.objectMode?1:C.length,C,j,L),i=i.next,o.bufferedRequestCount--,o.writing)break}null===i&&(o.lastBufferedRequest=null)}o.bufferedRequest=i,o.bufferProcessing=!1}function needFinish(s){return s.ending&&0===s.length&&null===s.bufferedRequest&&!s.finished&&!s.writing}function callFinal(s,o){s._final((function(i){o.pendingcb--,i&&ce(s,i),o.prefinished=!0,s.emit(\"prefinish\"),finishMaybe(s,o)}))}function finishMaybe(s,o){var i=needFinish(o);if(i&&(function prefinish(s,o){o.prefinished||o.finalCalled||(\"function\"!=typeof s._final||o.destroyed?(o.prefinished=!0,s.emit(\"prefinish\")):(o.pendingcb++,o.finalCalled=!0,u.nextTick(callFinal,s,o)))}(s,o),0===o.pendingcb&&(o.finished=!0,s.emit(\"finish\"),o.autoDestroy))){var a=s._readableState;(!a||a.autoDestroy&&a.endEmitted)&&s.destroy()}return i}i(56698)(Writable,w),WritableState.prototype.getBuffer=function getBuffer(){for(var s=this.bufferedRequest,o=[];s;)o.push(s),s=s.next;return o},function(){try{Object.defineProperty(WritableState.prototype,\"buffer\",{get:_.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(s){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(j=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(s){return!!j.call(this,s)||this===Writable&&(s&&s._writableState instanceof WritableState)}})):j=function realHasInstance(s){return s instanceof this},Writable.prototype.pipe=function(){ce(this,new Y)},Writable.prototype.write=function(s,o,i){var a=this._writableState,_=!1,w=!a.objectMode&&function _isUint8Array(s){return x.isBuffer(s)||s instanceof C}(s);return w&&!x.isBuffer(s)&&(s=function _uint8ArrayToBuffer(s){return x.from(s)}(s)),\"function\"==typeof o&&(i=o,o=null),w?o=\"buffer\":o||(o=a.defaultEncoding),\"function\"!=typeof i&&(i=nop),a.ending?function writeAfterEnd(s,o){var i=new ie;ce(s,i),u.nextTick(o,i)}(this,i):(w||function validChunk(s,o,i,a){var _;return null===i?_=new ee:\"string\"==typeof i||o.objectMode||(_=new V(\"chunk\",[\"string\",\"Buffer\"],i)),!_||(ce(s,_),u.nextTick(a,_),!1)}(this,a,s,i))&&(a.pendingcb++,_=function writeOrBuffer(s,o,i,a,u,_){if(!i){var w=function decodeChunk(s,o,i){s.objectMode||!1===s.decodeStrings||\"string\"!=typeof o||(o=x.from(o,i));return o}(o,a,u);a!==w&&(i=!0,u=\"buffer\",a=w)}var C=o.objectMode?1:a.length;o.length+=C;var j=o.length<o.highWaterMark;j||(o.needDrain=!0);if(o.writing||o.corked){var L=o.lastBufferedRequest;o.lastBufferedRequest={chunk:a,encoding:u,isBuf:i,callback:_,next:null},L?L.next=o.lastBufferedRequest:o.bufferedRequest=o.lastBufferedRequest,o.bufferedRequestCount+=1}else doWrite(s,o,!1,C,a,u,_);return j}(this,a,w,s,o,i)),_},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var s=this._writableState;s.corked&&(s.corked--,s.writing||s.corked||s.bufferProcessing||!s.bufferedRequest||clearBuffer(this,s))},Writable.prototype.setDefaultEncoding=function setDefaultEncoding(s){if(\"string\"==typeof s&&(s=s.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((s+\"\").toLowerCase())>-1))throw new ae(s);return this._writableState.defaultEncoding=s,this},Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(s,o,i){i(new U(\"_write()\"))},Writable.prototype._writev=null,Writable.prototype.end=function(s,o,i){var a=this._writableState;return\"function\"==typeof s?(i=s,s=null,o=null):\"function\"==typeof o&&(i=o,o=null),null!=s&&this.write(s,o),a.corked&&(a.corked=1,this.uncork()),a.ending||function endWritable(s,o,i){o.ending=!0,finishMaybe(s,o),i&&(o.finished?u.nextTick(i):s.once(\"finish\",i));o.ended=!0,s.writable=!1}(this,a,i),this},Object.defineProperty(Writable.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(s){this._writableState&&(this._writableState.destroyed=s)}}),Writable.prototype.destroy=L.destroy,Writable.prototype._undestroy=L.undestroy,Writable.prototype._destroy=function(s,o){o(s)}},16946:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(98828),_=i(45807),w=Object,x=a(\"\".split);s.exports=u((function(){return!w(\"z\").propertyIsEnumerable(0)}))?function(s){return\"String\"===_(s)?x(s,\"\"):w(s)}:w},16962:(s,o)=>{o.aliasToReal={each:\"forEach\",eachRight:\"forEachRight\",entries:\"toPairs\",entriesIn:\"toPairsIn\",extend:\"assignIn\",extendAll:\"assignInAll\",extendAllWith:\"assignInAllWith\",extendWith:\"assignInWith\",first:\"head\",conforms:\"conformsTo\",matches:\"isMatch\",property:\"get\",__:\"placeholder\",F:\"stubFalse\",T:\"stubTrue\",all:\"every\",allPass:\"overEvery\",always:\"constant\",any:\"some\",anyPass:\"overSome\",apply:\"spread\",assoc:\"set\",assocPath:\"set\",complement:\"negate\",compose:\"flowRight\",contains:\"includes\",dissoc:\"unset\",dissocPath:\"unset\",dropLast:\"dropRight\",dropLastWhile:\"dropRightWhile\",equals:\"isEqual\",identical:\"eq\",indexBy:\"keyBy\",init:\"initial\",invertObj:\"invert\",juxt:\"over\",omitAll:\"omit\",nAry:\"ary\",path:\"get\",pathEq:\"matchesProperty\",pathOr:\"getOr\",paths:\"at\",pickAll:\"pick\",pipe:\"flow\",pluck:\"map\",prop:\"get\",propEq:\"matchesProperty\",propOr:\"getOr\",props:\"at\",symmetricDifference:\"xor\",symmetricDifferenceBy:\"xorBy\",symmetricDifferenceWith:\"xorWith\",takeLast:\"takeRight\",takeLastWhile:\"takeRightWhile\",unapply:\"rest\",unnest:\"flatten\",useWith:\"overArgs\",where:\"conformsTo\",whereEq:\"isMatch\",zipObj:\"zipObject\"},o.aryMethod={1:[\"assignAll\",\"assignInAll\",\"attempt\",\"castArray\",\"ceil\",\"create\",\"curry\",\"curryRight\",\"defaultsAll\",\"defaultsDeepAll\",\"floor\",\"flow\",\"flowRight\",\"fromPairs\",\"invert\",\"iteratee\",\"memoize\",\"method\",\"mergeAll\",\"methodOf\",\"mixin\",\"nthArg\",\"over\",\"overEvery\",\"overSome\",\"rest\",\"reverse\",\"round\",\"runInContext\",\"spread\",\"template\",\"trim\",\"trimEnd\",\"trimStart\",\"uniqueId\",\"words\",\"zipAll\"],2:[\"add\",\"after\",\"ary\",\"assign\",\"assignAllWith\",\"assignIn\",\"assignInAllWith\",\"at\",\"before\",\"bind\",\"bindAll\",\"bindKey\",\"chunk\",\"cloneDeepWith\",\"cloneWith\",\"concat\",\"conformsTo\",\"countBy\",\"curryN\",\"curryRightN\",\"debounce\",\"defaults\",\"defaultsDeep\",\"defaultTo\",\"delay\",\"difference\",\"divide\",\"drop\",\"dropRight\",\"dropRightWhile\",\"dropWhile\",\"endsWith\",\"eq\",\"every\",\"filter\",\"find\",\"findIndex\",\"findKey\",\"findLast\",\"findLastIndex\",\"findLastKey\",\"flatMap\",\"flatMapDeep\",\"flattenDepth\",\"forEach\",\"forEachRight\",\"forIn\",\"forInRight\",\"forOwn\",\"forOwnRight\",\"get\",\"groupBy\",\"gt\",\"gte\",\"has\",\"hasIn\",\"includes\",\"indexOf\",\"intersection\",\"invertBy\",\"invoke\",\"invokeMap\",\"isEqual\",\"isMatch\",\"join\",\"keyBy\",\"lastIndexOf\",\"lt\",\"lte\",\"map\",\"mapKeys\",\"mapValues\",\"matchesProperty\",\"maxBy\",\"meanBy\",\"merge\",\"mergeAllWith\",\"minBy\",\"multiply\",\"nth\",\"omit\",\"omitBy\",\"overArgs\",\"pad\",\"padEnd\",\"padStart\",\"parseInt\",\"partial\",\"partialRight\",\"partition\",\"pick\",\"pickBy\",\"propertyOf\",\"pull\",\"pullAll\",\"pullAt\",\"random\",\"range\",\"rangeRight\",\"rearg\",\"reject\",\"remove\",\"repeat\",\"restFrom\",\"result\",\"sampleSize\",\"some\",\"sortBy\",\"sortedIndex\",\"sortedIndexOf\",\"sortedLastIndex\",\"sortedLastIndexOf\",\"sortedUniqBy\",\"split\",\"spreadFrom\",\"startsWith\",\"subtract\",\"sumBy\",\"take\",\"takeRight\",\"takeRightWhile\",\"takeWhile\",\"tap\",\"throttle\",\"thru\",\"times\",\"trimChars\",\"trimCharsEnd\",\"trimCharsStart\",\"truncate\",\"union\",\"uniqBy\",\"uniqWith\",\"unset\",\"unzipWith\",\"without\",\"wrap\",\"xor\",\"zip\",\"zipObject\",\"zipObjectDeep\"],3:[\"assignInWith\",\"assignWith\",\"clamp\",\"differenceBy\",\"differenceWith\",\"findFrom\",\"findIndexFrom\",\"findLastFrom\",\"findLastIndexFrom\",\"getOr\",\"includesFrom\",\"indexOfFrom\",\"inRange\",\"intersectionBy\",\"intersectionWith\",\"invokeArgs\",\"invokeArgsMap\",\"isEqualWith\",\"isMatchWith\",\"flatMapDepth\",\"lastIndexOfFrom\",\"mergeWith\",\"orderBy\",\"padChars\",\"padCharsEnd\",\"padCharsStart\",\"pullAllBy\",\"pullAllWith\",\"rangeStep\",\"rangeStepRight\",\"reduce\",\"reduceRight\",\"replace\",\"set\",\"slice\",\"sortedIndexBy\",\"sortedLastIndexBy\",\"transform\",\"unionBy\",\"unionWith\",\"update\",\"xorBy\",\"xorWith\",\"zipWith\"],4:[\"fill\",\"setWith\",\"updateWith\"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:\"assign\",assignAllWith:\"assignWith\",assignInAll:\"assignIn\",assignInAllWith:\"assignInWith\",curryN:\"curry\",curryRightN:\"curryRight\",defaultsAll:\"defaults\",defaultsDeepAll:\"defaultsDeep\",findFrom:\"find\",findIndexFrom:\"findIndex\",findLastFrom:\"findLast\",findLastIndexFrom:\"findLastIndex\",getOr:\"get\",includesFrom:\"includes\",indexOfFrom:\"indexOf\",invokeArgs:\"invoke\",invokeArgsMap:\"invokeMap\",lastIndexOfFrom:\"lastIndexOf\",mergeAll:\"merge\",mergeAllWith:\"mergeWith\",padChars:\"pad\",padCharsEnd:\"padEnd\",padCharsStart:\"padStart\",propertyOf:\"get\",rangeStep:\"range\",rangeStepRight:\"rangeRight\",restFrom:\"rest\",spreadFrom:\"spread\",trimChars:\"trim\",trimCharsEnd:\"trimEnd\",trimCharsStart:\"trimStart\",zipAll:\"zip\"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},17255:(s,o,i)=>{var a=i(47422);s.exports=function basePropertyDeep(s){return function(o){return a(o,s)}}},17285:s=>{function source(s){return s?\"string\"==typeof s?s:s.source:null}function lookahead(s){return concat(\"(?=\",s,\")\")}function concat(...s){return s.map((s=>source(s))).join(\"\")}function either(...s){return\"(\"+s.map((s=>source(s))).join(\"|\")+\")\"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat(\"(\",s,\")?\")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:\"symbol\",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\\s/,contains:[{className:\"meta-keyword\",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\\n/}]},u=s.inherit(a,{begin:/\\(/,end:/\\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:\"meta-string\"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:\"meta-string\"}),x={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:\"attr\",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\\s*/,relevance:0,contains:[{className:\"string\",endsParent:!0,variants:[{begin:/\"/,end:/\"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\\s\"'=<>`]+/}]}]}]};return{name:\"HTML, XML\",aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xjb\",\"xsd\",\"xsl\",\"plist\",\"wsf\",\"svg\"],case_insensitive:!0,contains:[{className:\"meta\",begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,w,_,u,{begin:/\\[/,end:/\\]/,contains:[{className:\"meta\",begin:/<![a-z]/,end:/>/,contains:[a,u,w,_]}]}]},s.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\\[CDATA\\[/,end:/\\]\\]>/,relevance:10},i,{className:\"meta\",begin:/<\\?xml/,end:/\\?>/,relevance:10},{className:\"tag\",begin:/<style(?=\\s|>)/,end:/>/,keywords:{name:\"style\"},contains:[x],starts:{end:/<\\/style>/,returnEnd:!0,subLanguage:[\"css\",\"xml\"]}},{className:\"tag\",begin:/<script(?=\\s|>)/,end:/>/,keywords:{name:\"script\"},contains:[x],starts:{end:/<\\/script>/,returnEnd:!0,subLanguage:[\"javascript\",\"handlebars\",\"xml\"]}},{className:\"tag\",begin:/<>|<\\/>/},{className:\"tag\",begin:concat(/</,lookahead(concat(o,either(/\\/>/,/>/,/\\s/)))),end:/\\/?>/,contains:[{className:\"name\",begin:o,relevance:0,starts:x}]},{className:\"tag\",begin:concat(/<\\//,lookahead(concat(o,/>/))),contains:[{className:\"name\",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17400:(s,o,i)=>{var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},17533:s=>{s.exports=function yaml(s){var o=\"true false yes no null\",i=\"[\\\\w#;/?:@&=+$,.~*'()[\\\\]]+\",a={className:\"string\",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/\\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:\"template-variable\",variants:[{begin:/\\{\\{/,end:/\\}\\}/},{begin:/%\\{/,end:/\\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/[^\\s,{}[\\]]+/}]}),_={className:\"number\",begin:\"\\\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\\\.[0-9]*)?([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\\\b\"},w={end:\",\",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\\{/,end:/\\}/,contains:[w],illegal:\"\\\\n\",relevance:0},C={begin:\"\\\\[\",end:\"\\\\]\",contains:[w],illegal:\"\\\\n\",relevance:0},j=[{className:\"attr\",variants:[{begin:\"\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)\"},{begin:'\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)'},{begin:\"'\\\\w[\\\\w :\\\\/.-]*':(?=[ \\t]|$)\"}]},{className:\"meta\",begin:\"^---\\\\s*$\",relevance:10},{className:\"string\",begin:\"[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*\"},{begin:\"<%[%=-]?\",end:\"[%-]?%>\",subLanguage:\"ruby\",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:\"type\",begin:\"!\\\\w+!\"+i},{className:\"type\",begin:\"!<\"+i+\">\"},{className:\"type\",begin:\"!\"+i},{className:\"type\",begin:\"!!\"+i},{className:\"meta\",begin:\"&\"+s.UNDERSCORE_IDENT_RE+\"$\"},{className:\"meta\",begin:\"\\\\*\"+s.UNDERSCORE_IDENT_RE+\"$\"},{className:\"bullet\",begin:\"-(?=[ ]|$)\",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:\"number\",begin:s.C_NUMBER_RE+\"\\\\b\",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:\"YAML\",case_insensitive:!0,aliases:[\"yml\"],contains:j}}},17670:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},17965:(s,o,i)=>{\"use strict\";var a=i(16426),u={\"text/plain\":\"Text\",\"text/html\":\"Url\",default:\"Text\"};s.exports=function copy(s,o){var i,_,w,x,C,j,L=!1;o||(o={}),i=o.debug||!1;try{if(w=a(),x=document.createRange(),C=document.getSelection(),(j=document.createElement(\"span\")).textContent=s,j.ariaHidden=\"true\",j.style.all=\"unset\",j.style.position=\"fixed\",j.style.top=0,j.style.clip=\"rect(0, 0, 0, 0)\",j.style.whiteSpace=\"pre\",j.style.webkitUserSelect=\"text\",j.style.MozUserSelect=\"text\",j.style.msUserSelect=\"text\",j.style.userSelect=\"text\",j.addEventListener(\"copy\",(function(a){if(a.stopPropagation(),o.format)if(a.preventDefault(),void 0===a.clipboardData){i&&console.warn(\"unable to use e.clipboardData\"),i&&console.warn(\"trying IE specific stuff\"),window.clipboardData.clearData();var _=u[o.format]||u.default;window.clipboardData.setData(_,s)}else a.clipboardData.clearData(),a.clipboardData.setData(o.format,s);o.onCopy&&(a.preventDefault(),o.onCopy(a.clipboardData))})),document.body.appendChild(j),x.selectNodeContents(j),C.addRange(x),!document.execCommand(\"copy\"))throw new Error(\"copy command was unsuccessful\");L=!0}catch(a){i&&console.error(\"unable to copy using execCommand: \",a),i&&console.warn(\"trying IE specific stuff\");try{window.clipboardData.setData(o.format||\"text\",s),o.onCopy&&o.onCopy(window.clipboardData),L=!0}catch(a){i&&console.error(\"unable to copy using clipboardData: \",a),i&&console.error(\"falling back to prompt\"),_=function format(s){var o=(/mac os x/i.test(navigator.userAgent)?\"⌘\":\"Ctrl\")+\"+C\";return s.replace(/#{\\s*key\\s*}/g,o)}(\"message\"in o?o.message:\"Copy to clipboard: #{key}, Enter\"),window.prompt(_,s)}}finally{C&&(\"function\"==typeof C.removeRange?C.removeRange(x):C.removeAllRanges()),j&&document.body.removeChild(j),w()}return L}},18073:(s,o,i)=>{var a=i(85087),u=i(54641),_=i(70981);s.exports=function createRecurry(s,o,i,w,x,C,j,L,B,$){var V=8&o;o|=V?32:64,4&(o&=~(V?64:32))||(o&=-4);var U=[s,o,x,V?C:void 0,V?j:void 0,V?void 0:C,V?void 0:j,L,B,$],z=i.apply(void 0,U);return a(s)&&u(z,U),z.placeholder=w,_(z,s,o)}},19123:(s,o,i)=>{var a=i(65606),u=i(31499),_=i(88310).Stream;function resolve(s,o,i){var a,_=function create_indent(s,o){return new Array(o||0).join(s||\"\")}(o,i=i||0),w=s;if(\"object\"==typeof s&&((w=s[a=Object.keys(s)[0]])&&w._elem))return w._elem.name=a,w._elem.icount=i,w._elem.indent=o,w._elem.indents=_,w._elem.interrupt=w,w._elem;var x,C=[],j=[];function get_attributes(s){Object.keys(s).forEach((function(o){C.push(function attribute(s,o){return s+'=\"'+u(o)+'\"'}(o,s[o]))}))}switch(typeof w){case\"object\":if(null===w)break;w._attr&&get_attributes(w._attr),w._cdata&&j.push((\"<![CDATA[\"+w._cdata).replace(/\\]\\]>/g,\"]]]]><![CDATA[>\")+\"]]>\"),w.forEach&&(x=!1,j.push(\"\"),w.forEach((function(s){\"object\"==typeof s?\"_attr\"==Object.keys(s)[0]?get_attributes(s._attr):j.push(resolve(s,o,i+1)):(j.pop(),x=!0,j.push(u(s)))})),x||j.push(\"\"));break;default:j.push(u(w))}return{name:a,interrupt:!1,attributes:C,content:j,icount:i,indents:_,indent:o}}function format(s,o,i){if(\"object\"!=typeof o)return s(!1,o);var a=o.interrupt?1:o.content.length;function proceed(){for(;o.content.length;){var u=o.content.shift();if(void 0!==u){if(interrupt(u))return;format(s,u)}}s(!1,(a>1?o.indents:\"\")+(o.name?\"</\"+o.name+\">\":\"\")+(o.indent&&!i?\"\\n\":\"\")),i&&i()}function interrupt(o){return!!o.interrupt&&(o.interrupt.append=s,o.interrupt.end=proceed,o.interrupt=!1,s(!0),!0)}if(s(!1,o.indents+(o.name?\"<\"+o.name:\"\")+(o.attributes.length?\" \"+o.attributes.join(\" \"):\"\")+(a?o.name?\">\":\"\":o.name?\"/>\":\"\")+(o.indent&&a>1?\"\\n\":\"\")),!a)return s(!1,o.indent?\"\\n\":\"\");interrupt(o)||proceed()}s.exports=function xml(s,o){\"object\"!=typeof o&&(o={indent:o});var i=o.stream?new _:null,u=\"\",w=!1,x=o.indent?!0===o.indent?\"    \":o.indent:\"\",C=!0;function delay(s){C?a.nextTick(s):s()}function append(s,o){if(void 0!==o&&(u+=o),s&&!w&&(i=i||new _,w=!0),s&&w){var a=u;delay((function(){i.emit(\"data\",a)})),u=\"\"}}function add(s,o){format(append,resolve(s,x,x?1:0),o)}function end(){if(i){var s=u;delay((function(){i.emit(\"data\",s),i.emit(\"end\"),i.readable=!1,i.emit(\"close\")}))}}return delay((function(){C=!1})),o.declaration&&function addXmlDeclaration(s){var o={version:\"1.0\",encoding:s.encoding||\"UTF-8\"};s.standalone&&(o.standalone=s.standalone),add({\"?xml\":{_attr:o}}),u=u.replace(\"/>\",\"?>\")}(o.declaration),s&&s.forEach?s.forEach((function(o,i){var a;i+1===s.length&&(a=end),add(o,a)})):add(s,end),i?(i.readable=!0,i):u},s.exports.element=s.exports.Element=function element(){var s={_elem:resolve(Array.prototype.slice.call(arguments)),push:function(s){if(!this.append)throw new Error(\"not assigned to a parent!\");var o=this,i=this._elem.indent;format(this.append,resolve(s,i,this._elem.icount+(i?1:0)),(function(){o.append(!0)}))},close:function(s){void 0!==s&&this.push(s),this.end&&this.end()}};return s}},19219:s=>{s.exports=function cacheHas(s,o){return s.has(o)}},19287:s=>{\"use strict\";s.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},19358:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(49724),_=i(61626),w=i(88280),x=i(79192),C=i(19595),j=i(54829),L=i(34084),B=i(32096),$=i(39259),V=i(85884),U=i(39447),z=i(7376);s.exports=function(s,o,i,Y){var Z=\"stackTraceLimit\",ee=Y?2:1,ie=s.split(\".\"),ae=ie[ie.length-1],ce=a.apply(null,ie);if(ce){var le=ce.prototype;if(!z&&u(le,\"cause\")&&delete le.cause,!i)return ce;var pe=a(\"Error\"),de=o((function(s,o){var i=B(Y?o:s,void 0),a=Y?new ce(s):new ce;return void 0!==i&&_(a,\"message\",i),V(a,de,a.stack,2),this&&w(le,this)&&L(a,this,de),arguments.length>ee&&$(a,arguments[ee]),a}));if(de.prototype=le,\"Error\"!==ae?x?x(de,pe):C(de,pe,{name:!0}):U&&Z in ce&&(j(de,ce,Z),j(de,ce,\"prepareStackTrace\")),C(de,ce),!z)try{le.name!==ae&&_(le,\"name\",ae),le.constructor=de}catch(s){}return de}}},19570:(s,o,i)=>{var a=i(37334),u=i(93243),_=i(83488),w=u?function(s,o){return u(s,\"toString\",{configurable:!0,enumerable:!1,value:a(o),writable:!0})}:_;s.exports=w},19595:(s,o,i)=>{\"use strict\";var a=i(49724),u=i(11042),_=i(13846),w=i(74284);s.exports=function(s,o,i){for(var x=u(o),C=w.f,j=_.f,L=0;L<x.length;L++){var B=x[L];a(s,B)||i&&a(i,B)||C(s,B,j(o,B))}}},19709:(s,o,i)=>{\"use strict\";var a=i(23034);s.exports=a},19846:(s,o,i)=>{\"use strict\";var a=i(20798),u=i(98828),_=i(45951).String;s.exports=!!Object.getOwnPropertySymbols&&!u((function(){var s=Symbol(\"symbol detection\");return!_(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},19931:(s,o,i)=>{var a=i(31769),u=i(68090),_=i(68969),w=i(77797);s.exports=function baseUnset(s,o){return o=a(o,s),null==(s=_(s,o))||delete s[w(u(o))]}},20181:(s,o,i)=>{var a=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,x=parseInt,C=\"object\"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,j=\"object\"==typeof self&&self&&self.Object===Object&&self,L=C||j||Function(\"return this\")(),B=Object.prototype.toString,$=Math.max,V=Math.min,now=function(){return L.Date.now()};function isObject(s){var o=typeof s;return!!s&&(\"object\"==o||\"function\"==o)}function toNumber(s){if(\"number\"==typeof s)return s;if(function isSymbol(s){return\"symbol\"==typeof s||function isObjectLike(s){return!!s&&\"object\"==typeof s}(s)&&\"[object Symbol]\"==B.call(s)}(s))return NaN;if(isObject(s)){var o=\"function\"==typeof s.valueOf?s.valueOf():s;s=isObject(o)?o+\"\":o}if(\"string\"!=typeof s)return 0===s?s:+s;s=s.replace(a,\"\");var i=_.test(s);return i||w.test(s)?x(s.slice(2),i?2:8):u.test(s)?NaN:+s}s.exports=function debounce(s,o,i){var a,u,_,w,x,C,j=0,L=!1,B=!1,U=!0;if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");function invokeFunc(o){var i=a,_=u;return a=u=void 0,j=o,w=s.apply(_,i)}function shouldInvoke(s){var i=s-C;return void 0===C||i>=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?V(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,U&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B=\"maxWait\"in i)?$(toNumber(i.maxWait)||0,o):_,U=\"trailing\"in i?!!i.trailing:U),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},20317:s=>{s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},20334:(s,o,i)=>{\"use strict\";var a=i(48287).Buffer;class NonError extends Error{constructor(s){super(NonError._prepareSuperMessage(s)),Object.defineProperty(this,\"name\",{value:\"NonError\",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,NonError)}static _prepareSuperMessage(s){try{return JSON.stringify(s)}catch{return String(s)}}}const u=[{property:\"name\",enumerable:!1},{property:\"message\",enumerable:!1},{property:\"stack\",enumerable:!1},{property:\"code\",enumerable:!0}],_=Symbol(\".toJSON called\"),destroyCircular=({from:s,seen:o,to_:i,forceEnumerable:w,maxDepth:x,depth:C})=>{const j=i||(Array.isArray(s)?[]:{});if(o.push(s),C>=x)return j;if(\"function\"==typeof s.toJSON&&!0!==s[_])return(s=>{s[_]=!0;const o=s.toJSON();return delete s[_],o})(s);for(const[i,u]of Object.entries(s))\"function\"==typeof a&&a.isBuffer(u)?j[i]=\"[object Buffer]\":\"function\"!=typeof u&&(u&&\"object\"==typeof u?o.includes(s[i])?j[i]=\"[Circular]\":(C++,j[i]=destroyCircular({from:s[i],seen:o.slice(),forceEnumerable:w,maxDepth:x,depth:C})):j[i]=u);for(const{property:o,enumerable:i}of u)\"string\"==typeof s[o]&&Object.defineProperty(j,o,{value:s[o],enumerable:!!w||i,configurable:!0,writable:!0});return j};s.exports={serializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;return\"object\"==typeof s&&null!==s?destroyCircular({from:s,seen:[],forceEnumerable:!0,maxDepth:i,depth:0}):\"function\"==typeof s?`[Function: ${s.name||\"anonymous\"}]`:s},deserializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;if(s instanceof Error)return s;if(\"object\"==typeof s&&null!==s&&!Array.isArray(s)){const o=new Error;return destroyCircular({from:s,seen:[],to_:o,maxDepth:i,depth:0}),o}return new NonError(s)}}},20426:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},20575:(s,o,i)=>{\"use strict\";var a=i(3121);s.exports=function(s){return a(s.length)}},20798:(s,o,i)=>{\"use strict\";var a,u,_=i(45951),w=i(96794),x=_.process,C=_.Deno,j=x&&x.versions||C&&C.version,L=j&&j.v8;L&&(u=(a=L.split(\".\"))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!u&&w&&(!(a=w.match(/Edge\\/(\\d+)/))||a[1]>=74)&&(a=w.match(/Chrome\\/(\\d+)/))&&(u=+a[1]),s.exports=u},20850:(s,o,i)=>{\"use strict\";s.exports=i(46076)},20999:(s,o,i)=>{var a=i(69302),u=i(36800);s.exports=function createAssigner(s){return a((function(o,i){var a=-1,_=i.length,w=_>1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&\"function\"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},21549:(s,o,i)=>{var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}Hash.prototype.clear=a,Hash.prototype.delete=u,Hash.prototype.get=_,Hash.prototype.has=w,Hash.prototype.set=x,s.exports=Hash},21791:(s,o,i)=>{var a=i(16547),u=i(43360);s.exports=function copyObject(s,o,i,_){var w=!i;i||(i={});for(var x=-1,C=o.length;++x<C;){var j=o[x],L=_?_(i[j],s[j],j,i,s):void 0;void 0===L&&(L=s[j]),w?u(i,j,L):a(i,j,L)}return i}},21986:(s,o,i)=>{var a=i(51873),u=i(37828),_=i(75288),w=i(25911),x=i(20317),C=i(84247),j=a?a.prototype:void 0,L=j?j.valueOf:void 0;s.exports=function equalByTag(s,o,i,a,j,B,$){switch(i){case\"[object DataView]\":if(s.byteLength!=o.byteLength||s.byteOffset!=o.byteOffset)return!1;s=s.buffer,o=o.buffer;case\"[object ArrayBuffer]\":return!(s.byteLength!=o.byteLength||!B(new u(s),new u(o)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return _(+s,+o);case\"[object Error]\":return s.name==o.name&&s.message==o.message;case\"[object RegExp]\":case\"[object String]\":return s==o+\"\";case\"[object Map]\":var V=x;case\"[object Set]\":var U=1&a;if(V||(V=C),s.size!=o.size&&!U)return!1;var z=$.get(s);if(z)return z==o;a|=2,$.set(s,o);var Y=w(V(s),V(o),a,j,B,$);return $.delete(s),Y;case\"[object Symbol]\":if(L)return L.call(s)==L.call(o)}return!1}},22032:(s,o,i)=>{var a=i(81042);s.exports=function hashClear(){this.__data__=a?a(null):{},this.size=0}},22225:s=>{var o=\"\\\\ud800-\\\\udfff\",i=\"\\\\u2700-\\\\u27bf\",a=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",u=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",_=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",w=\"[\"+_+\"]\",x=\"\\\\d+\",C=\"[\"+i+\"]\",j=\"[\"+a+\"]\",L=\"[^\"+o+_+x+i+a+u+\"]\",B=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",$=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",V=\"[\"+u+\"]\",U=\"(?:\"+j+\"|\"+L+\")\",z=\"(?:\"+V+\"|\"+L+\")\",Y=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",Z=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",ee=\"(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?\",ie=\"[\\\\ufe0e\\\\ufe0f]?\",ae=ie+ee+(\"(?:\\\\u200d(?:\"+[\"[^\"+o+\"]\",B,$].join(\"|\")+\")\"+ie+ee+\")*\"),ce=\"(?:\"+[C,B,$].join(\"|\")+\")\"+ae,le=RegExp([V+\"?\"+j+\"+\"+Y+\"(?=\"+[w,V,\"$\"].join(\"|\")+\")\",z+\"+\"+Z+\"(?=\"+[w,V+U,\"$\"].join(\"|\")+\")\",V+\"?\"+U+\"+\"+Y,V+\"+\"+Z,\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",x,ce].join(\"|\"),\"g\");s.exports=function unicodeWords(s){return s.match(le)||[]}},22551:(s,o,i)=>{\"use strict\";var a=i(96540),u=i(69982);function p(s){for(var o=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+s,i=1;i<arguments.length;i++)o+=\"&args[]=\"+encodeURIComponent(arguments[i]);return\"Minified React error #\"+s+\"; visit \"+o+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var _=new Set,w={};function fa(s,o){ha(s,o),ha(s+\"Capture\",o)}function ha(s,o){for(w[s]=o,s=0;s<o.length;s++)_.add(o[s])}var x=!(\"undefined\"==typeof window||void 0===window.document||void 0===window.document.createElement),C=Object.prototype.hasOwnProperty,j=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,L={},B={};function v(s,o,i,a,u,_,w){this.acceptsBooleans=2===o||3===o||4===o,this.attributeName=a,this.attributeNamespace=u,this.mustUseProperty=i,this.propertyName=s,this.type=o,this.sanitizeURL=_,this.removeEmptyString=w}var $={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(s){$[s]=new v(s,0,!1,s,null,!1,!1)})),[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(s){var o=s[0];$[o]=new v(o,1,!1,s[1],null,!1,!1)})),[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(s){$[s]=new v(s,2,!1,s.toLowerCase(),null,!1,!1)})),[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(s){$[s]=new v(s,2,!1,s,null,!1,!1)})),\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(s){$[s]=new v(s,3,!1,s.toLowerCase(),null,!1,!1)})),[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(s){$[s]=new v(s,3,!0,s,null,!1,!1)})),[\"capture\",\"download\"].forEach((function(s){$[s]=new v(s,4,!1,s,null,!1,!1)})),[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(s){$[s]=new v(s,6,!1,s,null,!1,!1)})),[\"rowSpan\",\"start\"].forEach((function(s){$[s]=new v(s,5,!1,s.toLowerCase(),null,!1,!1)}));var V=/[\\-:]([a-z])/g;function sa(s){return s[1].toUpperCase()}function ta(s,o,i,a){var u=$.hasOwnProperty(o)?$[o]:null;(null!==u?0!==u.type:a||!(2<o.length)||\"o\"!==o[0]&&\"O\"!==o[0]||\"n\"!==o[1]&&\"N\"!==o[1])&&(function qa(s,o,i,a){if(null==o||function pa(s,o,i,a){if(null!==i&&0===i.type)return!1;switch(typeof o){case\"function\":case\"symbol\":return!0;case\"boolean\":return!a&&(null!==i?!i.acceptsBooleans:\"data-\"!==(s=s.toLowerCase().slice(0,5))&&\"aria-\"!==s);default:return!1}}(s,o,i,a))return!0;if(a)return!1;if(null!==i)switch(i.type){case 3:return!o;case 4:return!1===o;case 5:return isNaN(o);case 6:return isNaN(o)||1>o}return!1}(o,i,u,a)&&(i=null),a||null===u?function oa(s){return!!C.call(B,s)||!C.call(L,s)&&(j.test(s)?B[s]=!0:(L[s]=!0,!1))}(o)&&(null===i?s.removeAttribute(o):s.setAttribute(o,\"\"+i)):u.mustUseProperty?s[u.propertyName]=null===i?3!==u.type&&\"\":i:(o=u.attributeName,a=u.attributeNamespace,null===i?s.removeAttribute(o):(i=3===(u=u.type)||4===u&&!0===i?\"\":\"\"+i,a?s.setAttributeNS(a,o,i):s.setAttribute(o,i))))}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,null,!1,!1)})),\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,\"http://www.w3.org/1999/xlink\",!1,!1)})),[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,\"http://www.w3.org/XML/1998/namespace\",!1,!1)})),[\"tabIndex\",\"crossOrigin\"].forEach((function(s){$[s]=new v(s,1,!1,s.toLowerCase(),null,!1,!1)})),$.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1),[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(s){$[s]=new v(s,1,!1,s.toLowerCase(),null,!0,!0)}));var U=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,z=Symbol.for(\"react.element\"),Y=Symbol.for(\"react.portal\"),Z=Symbol.for(\"react.fragment\"),ee=Symbol.for(\"react.strict_mode\"),ie=Symbol.for(\"react.profiler\"),ae=Symbol.for(\"react.provider\"),ce=Symbol.for(\"react.context\"),le=Symbol.for(\"react.forward_ref\"),pe=Symbol.for(\"react.suspense\"),de=Symbol.for(\"react.suspense_list\"),fe=Symbol.for(\"react.memo\"),ye=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\"),Symbol.for(\"react.debug_trace_mode\");var be=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\"),Symbol.for(\"react.cache\"),Symbol.for(\"react.tracing_marker\");var _e=Symbol.iterator;function Ka(s){return null===s||\"object\"!=typeof s?null:\"function\"==typeof(s=_e&&s[_e]||s[\"@@iterator\"])?s:null}var Se,we=Object.assign;function Ma(s){if(void 0===Se)try{throw Error()}catch(s){var o=s.stack.trim().match(/\\n( *(at )?)/);Se=o&&o[1]||\"\"}return\"\\n\"+Se+s}var xe=!1;function Oa(s,o){if(!s||xe)return\"\";xe=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(o)if(o=function(){throw Error()},Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),\"object\"==typeof Reflect&&Reflect.construct){try{Reflect.construct(o,[])}catch(s){var a=s}Reflect.construct(s,[],o)}else{try{o.call()}catch(s){a=s}s.call(o.prototype)}else{try{throw Error()}catch(s){a=s}s()}}catch(o){if(o&&a&&\"string\"==typeof o.stack){for(var u=o.stack.split(\"\\n\"),_=a.stack.split(\"\\n\"),w=u.length-1,x=_.length-1;1<=w&&0<=x&&u[w]!==_[x];)x--;for(;1<=w&&0<=x;w--,x--)if(u[w]!==_[x]){if(1!==w||1!==x)do{if(w--,0>--x||u[w]!==_[x]){var C=\"\\n\"+u[w].replace(\" at new \",\" at \");return s.displayName&&C.includes(\"<anonymous>\")&&(C=C.replace(\"<anonymous>\",s.displayName)),C}}while(1<=w&&0<=x);break}}}finally{xe=!1,Error.prepareStackTrace=i}return(s=s?s.displayName||s.name:\"\")?Ma(s):\"\"}function Pa(s){switch(s.tag){case 5:return Ma(s.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return s=Oa(s.type,!1);case 11:return s=Oa(s.type.render,!1);case 1:return s=Oa(s.type,!0);default:return\"\"}}function Qa(s){if(null==s)return null;if(\"function\"==typeof s)return s.displayName||s.name||null;if(\"string\"==typeof s)return s;switch(s){case Z:return\"Fragment\";case Y:return\"Portal\";case ie:return\"Profiler\";case ee:return\"StrictMode\";case pe:return\"Suspense\";case de:return\"SuspenseList\"}if(\"object\"==typeof s)switch(s.$$typeof){case ce:return(s.displayName||\"Context\")+\".Consumer\";case ae:return(s._context.displayName||\"Context\")+\".Provider\";case le:var o=s.render;return(s=s.displayName)||(s=\"\"!==(s=o.displayName||o.name||\"\")?\"ForwardRef(\"+s+\")\":\"ForwardRef\"),s;case fe:return null!==(o=s.displayName||null)?o:Qa(s.type)||\"Memo\";case ye:o=s._payload,s=s._init;try{return Qa(s(o))}catch(s){}}return null}function Ra(s){var o=s.type;switch(s.tag){case 24:return\"Cache\";case 9:return(o.displayName||\"Context\")+\".Consumer\";case 10:return(o._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return s=(s=o.render).displayName||s.name||\"\",o.displayName||(\"\"!==s?\"ForwardRef(\"+s+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return o;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(o);case 8:return o===ee?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"==typeof o)return o.displayName||o.name||null;if(\"string\"==typeof o)return o}return null}function Sa(s){switch(typeof s){case\"boolean\":case\"number\":case\"string\":case\"undefined\":case\"object\":return s;default:return\"\"}}function Ta(s){var o=s.type;return(s=s.nodeName)&&\"input\"===s.toLowerCase()&&(\"checkbox\"===o||\"radio\"===o)}function Va(s){s._valueTracker||(s._valueTracker=function Ua(s){var o=Ta(s)?\"checked\":\"value\",i=Object.getOwnPropertyDescriptor(s.constructor.prototype,o),a=\"\"+s[o];if(!s.hasOwnProperty(o)&&void 0!==i&&\"function\"==typeof i.get&&\"function\"==typeof i.set){var u=i.get,_=i.set;return Object.defineProperty(s,o,{configurable:!0,get:function(){return u.call(this)},set:function(s){a=\"\"+s,_.call(this,s)}}),Object.defineProperty(s,o,{enumerable:i.enumerable}),{getValue:function(){return a},setValue:function(s){a=\"\"+s},stopTracking:function(){s._valueTracker=null,delete s[o]}}}}(s))}function Wa(s){if(!s)return!1;var o=s._valueTracker;if(!o)return!0;var i=o.getValue(),a=\"\";return s&&(a=Ta(s)?s.checked?\"true\":\"false\":s.value),(s=a)!==i&&(o.setValue(s),!0)}function Xa(s){if(void 0===(s=s||(\"undefined\"!=typeof document?document:void 0)))return null;try{return s.activeElement||s.body}catch(o){return s.body}}function Ya(s,o){var i=o.checked;return we({},o,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=i?i:s._wrapperState.initialChecked})}function Za(s,o){var i=null==o.defaultValue?\"\":o.defaultValue,a=null!=o.checked?o.checked:o.defaultChecked;i=Sa(null!=o.value?o.value:i),s._wrapperState={initialChecked:a,initialValue:i,controlled:\"checkbox\"===o.type||\"radio\"===o.type?null!=o.checked:null!=o.value}}function ab(s,o){null!=(o=o.checked)&&ta(s,\"checked\",o,!1)}function bb(s,o){ab(s,o);var i=Sa(o.value),a=o.type;if(null!=i)\"number\"===a?(0===i&&\"\"===s.value||s.value!=i)&&(s.value=\"\"+i):s.value!==\"\"+i&&(s.value=\"\"+i);else if(\"submit\"===a||\"reset\"===a)return void s.removeAttribute(\"value\");o.hasOwnProperty(\"value\")?cb(s,o.type,i):o.hasOwnProperty(\"defaultValue\")&&cb(s,o.type,Sa(o.defaultValue)),null==o.checked&&null!=o.defaultChecked&&(s.defaultChecked=!!o.defaultChecked)}function db(s,o,i){if(o.hasOwnProperty(\"value\")||o.hasOwnProperty(\"defaultValue\")){var a=o.type;if(!(\"submit\"!==a&&\"reset\"!==a||void 0!==o.value&&null!==o.value))return;o=\"\"+s._wrapperState.initialValue,i||o===s.value||(s.value=o),s.defaultValue=o}\"\"!==(i=s.name)&&(s.name=\"\"),s.defaultChecked=!!s._wrapperState.initialChecked,\"\"!==i&&(s.name=i)}function cb(s,o,i){\"number\"===o&&Xa(s.ownerDocument)===s||(null==i?s.defaultValue=\"\"+s._wrapperState.initialValue:s.defaultValue!==\"\"+i&&(s.defaultValue=\"\"+i))}var Pe=Array.isArray;function fb(s,o,i,a){if(s=s.options,o){o={};for(var u=0;u<i.length;u++)o[\"$\"+i[u]]=!0;for(i=0;i<s.length;i++)u=o.hasOwnProperty(\"$\"+s[i].value),s[i].selected!==u&&(s[i].selected=u),u&&a&&(s[i].defaultSelected=!0)}else{for(i=\"\"+Sa(i),o=null,u=0;u<s.length;u++){if(s[u].value===i)return s[u].selected=!0,void(a&&(s[u].defaultSelected=!0));null!==o||s[u].disabled||(o=s[u])}null!==o&&(o.selected=!0)}}function gb(s,o){if(null!=o.dangerouslySetInnerHTML)throw Error(p(91));return we({},o,{value:void 0,defaultValue:void 0,children:\"\"+s._wrapperState.initialValue})}function hb(s,o){var i=o.value;if(null==i){if(i=o.children,o=o.defaultValue,null!=i){if(null!=o)throw Error(p(92));if(Pe(i)){if(1<i.length)throw Error(p(93));i=i[0]}o=i}null==o&&(o=\"\"),i=o}s._wrapperState={initialValue:Sa(i)}}function ib(s,o){var i=Sa(o.value),a=Sa(o.defaultValue);null!=i&&((i=\"\"+i)!==s.value&&(s.value=i),null==o.defaultValue&&s.defaultValue!==i&&(s.defaultValue=i)),null!=a&&(s.defaultValue=\"\"+a)}function jb(s){var o=s.textContent;o===s._wrapperState.initialValue&&\"\"!==o&&null!==o&&(s.value=o)}function kb(s){switch(s){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(s,o){return null==s||\"http://www.w3.org/1999/xhtml\"===s?kb(o):\"http://www.w3.org/2000/svg\"===s&&\"foreignObject\"===o?\"http://www.w3.org/1999/xhtml\":s}var Te,Re,$e=(Re=function(s,o){if(\"http://www.w3.org/2000/svg\"!==s.namespaceURI||\"innerHTML\"in s)s.innerHTML=o;else{for((Te=Te||document.createElement(\"div\")).innerHTML=\"<svg>\"+o.valueOf().toString()+\"</svg>\",o=Te.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;o.firstChild;)s.appendChild(o.firstChild)}},\"undefined\"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(s,o,i,a){MSApp.execUnsafeLocalFunction((function(){return Re(s,o)}))}:Re);function ob(s,o){if(o){var i=s.firstChild;if(i&&i===s.lastChild&&3===i.nodeType)return void(i.nodeValue=o)}s.textContent=o}var qe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ze=[\"Webkit\",\"ms\",\"Moz\",\"O\"];function rb(s,o,i){return null==o||\"boolean\"==typeof o||\"\"===o?\"\":i||\"number\"!=typeof o||0===o||qe.hasOwnProperty(s)&&qe[s]?(\"\"+o).trim():o+\"px\"}function sb(s,o){for(var i in s=s.style,o)if(o.hasOwnProperty(i)){var a=0===i.indexOf(\"--\"),u=rb(i,o[i],a);\"float\"===i&&(i=\"cssFloat\"),a?s.setProperty(i,u):s[i]=u}}Object.keys(qe).forEach((function(s){ze.forEach((function(o){o=o+s.charAt(0).toUpperCase()+s.substring(1),qe[o]=qe[s]}))}));var We=we({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(s,o){if(o){if(We[s]&&(null!=o.children||null!=o.dangerouslySetInnerHTML))throw Error(p(137,s));if(null!=o.dangerouslySetInnerHTML){if(null!=o.children)throw Error(p(60));if(\"object\"!=typeof o.dangerouslySetInnerHTML||!(\"__html\"in o.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=o.style&&\"object\"!=typeof o.style)throw Error(p(62))}}function vb(s,o){if(-1===s.indexOf(\"-\"))return\"string\"==typeof o.is;switch(s){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var He=null;function xb(s){return(s=s.target||s.srcElement||window).correspondingUseElement&&(s=s.correspondingUseElement),3===s.nodeType?s.parentNode:s}var Ye=null,Xe=null,Qe=null;function Bb(s){if(s=Cb(s)){if(\"function\"!=typeof Ye)throw Error(p(280));var o=s.stateNode;o&&(o=Db(o),Ye(s.stateNode,s.type,o))}}function Eb(s){Xe?Qe?Qe.push(s):Qe=[s]:Xe=s}function Fb(){if(Xe){var s=Xe,o=Qe;if(Qe=Xe=null,Bb(s),o)for(s=0;s<o.length;s++)Bb(o[s])}}function Gb(s,o){return s(o)}function Hb(){}var et=!1;function Jb(s,o,i){if(et)return s(o,i);et=!0;try{return Gb(s,o,i)}finally{et=!1,(null!==Xe||null!==Qe)&&(Hb(),Fb())}}function Kb(s,o){var i=s.stateNode;if(null===i)return null;var a=Db(i);if(null===a)return null;i=a[o];e:switch(o){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(a=!a.disabled)||(a=!(\"button\"===(s=s.type)||\"input\"===s||\"select\"===s||\"textarea\"===s)),s=!a;break e;default:s=!1}if(s)return null;if(i&&\"function\"!=typeof i)throw Error(p(231,o,typeof i));return i}var tt=!1;if(x)try{var rt={};Object.defineProperty(rt,\"passive\",{get:function(){tt=!0}}),window.addEventListener(\"test\",rt,rt),window.removeEventListener(\"test\",rt,rt)}catch(Re){tt=!1}function Nb(s,o,i,a,u,_,w,x,C){var j=Array.prototype.slice.call(arguments,3);try{o.apply(i,j)}catch(s){this.onError(s)}}var nt=!1,st=null,ot=!1,it=null,at={onError:function(s){nt=!0,st=s}};function Tb(s,o,i,a,u,_,w,x,C){nt=!1,st=null,Nb.apply(at,arguments)}function Vb(s){var o=s,i=s;if(s.alternate)for(;o.return;)o=o.return;else{s=o;do{!!(4098&(o=s).flags)&&(i=o.return),s=o.return}while(s)}return 3===o.tag?i:null}function Wb(s){if(13===s.tag){var o=s.memoizedState;if(null===o&&(null!==(s=s.alternate)&&(o=s.memoizedState)),null!==o)return o.dehydrated}return null}function Xb(s){if(Vb(s)!==s)throw Error(p(188))}function Zb(s){return null!==(s=function Yb(s){var o=s.alternate;if(!o){if(null===(o=Vb(s)))throw Error(p(188));return o!==s?null:s}for(var i=s,a=o;;){var u=i.return;if(null===u)break;var _=u.alternate;if(null===_){if(null!==(a=u.return)){i=a;continue}break}if(u.child===_.child){for(_=u.child;_;){if(_===i)return Xb(u),s;if(_===a)return Xb(u),o;_=_.sibling}throw Error(p(188))}if(i.return!==a.return)i=u,a=_;else{for(var w=!1,x=u.child;x;){if(x===i){w=!0,i=u,a=_;break}if(x===a){w=!0,a=u,i=_;break}x=x.sibling}if(!w){for(x=_.child;x;){if(x===i){w=!0,i=_,a=u;break}if(x===a){w=!0,a=_,i=u;break}x=x.sibling}if(!w)throw Error(p(189))}}if(i.alternate!==a)throw Error(p(190))}if(3!==i.tag)throw Error(p(188));return i.stateNode.current===i?s:o}(s))?$b(s):null}function $b(s){if(5===s.tag||6===s.tag)return s;for(s=s.child;null!==s;){var o=$b(s);if(null!==o)return o;s=s.sibling}return null}var ct=u.unstable_scheduleCallback,lt=u.unstable_cancelCallback,ut=u.unstable_shouldYield,pt=u.unstable_requestPaint,ht=u.unstable_now,dt=u.unstable_getCurrentPriorityLevel,mt=u.unstable_ImmediatePriority,gt=u.unstable_UserBlockingPriority,yt=u.unstable_NormalPriority,vt=u.unstable_LowPriority,bt=u.unstable_IdlePriority,_t=null,St=null;var Et=Math.clz32?Math.clz32:function nc(s){return s>>>=0,0===s?32:31-(wt(s)/xt|0)|0},wt=Math.log,xt=Math.LN2;var kt=64,Ot=4194304;function tc(s){switch(s&-s){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&s;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&s;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return s}}function uc(s,o){var i=s.pendingLanes;if(0===i)return 0;var a=0,u=s.suspendedLanes,_=s.pingedLanes,w=268435455&i;if(0!==w){var x=w&~u;0!==x?a=tc(x):0!==(_&=w)&&(a=tc(_))}else 0!==(w=i&~u)?a=tc(w):0!==_&&(a=tc(_));if(0===a)return 0;if(0!==o&&o!==a&&!(o&u)&&((u=a&-a)>=(_=o&-o)||16===u&&4194240&_))return o;if(4&a&&(a|=16&i),0!==(o=s.entangledLanes))for(s=s.entanglements,o&=a;0<o;)u=1<<(i=31-Et(o)),a|=s[i],o&=~u;return a}function vc(s,o){switch(s){case 1:case 2:case 4:return o+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;default:return-1}}function xc(s){return 0!==(s=-1073741825&s.pendingLanes)?s:1073741824&s?1073741824:0}function yc(){var s=kt;return!(4194240&(kt<<=1))&&(kt=64),s}function zc(s){for(var o=[],i=0;31>i;i++)o.push(s);return o}function Ac(s,o,i){s.pendingLanes|=o,536870912!==o&&(s.suspendedLanes=0,s.pingedLanes=0),(s=s.eventTimes)[o=31-Et(o)]=i}function Cc(s,o){var i=s.entangledLanes|=o;for(s=s.entanglements;i;){var a=31-Et(i),u=1<<a;u&o|s[a]&o&&(s[a]|=o),i&=~u}}var Ct=0;function Dc(s){return 1<(s&=-s)?4<s?268435455&s?16:536870912:4:1}var At,jt,It,Pt,Tt,Nt=!1,Mt=[],Rt=null,Dt=null,Lt=null,Ft=new Map,Bt=new Map,$t=[],qt=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Sc(s,o){switch(s){case\"focusin\":case\"focusout\":Rt=null;break;case\"dragenter\":case\"dragleave\":Dt=null;break;case\"mouseover\":case\"mouseout\":Lt=null;break;case\"pointerover\":case\"pointerout\":Ft.delete(o.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":Bt.delete(o.pointerId)}}function Tc(s,o,i,a,u,_){return null===s||s.nativeEvent!==_?(s={blockedOn:o,domEventName:i,eventSystemFlags:a,nativeEvent:_,targetContainers:[u]},null!==o&&(null!==(o=Cb(o))&&jt(o)),s):(s.eventSystemFlags|=a,o=s.targetContainers,null!==u&&-1===o.indexOf(u)&&o.push(u),s)}function Vc(s){var o=Wc(s.target);if(null!==o){var i=Vb(o);if(null!==i)if(13===(o=i.tag)){if(null!==(o=Wb(i)))return s.blockedOn=o,void Tt(s.priority,(function(){It(i)}))}else if(3===o&&i.stateNode.current.memoizedState.isDehydrated)return void(s.blockedOn=3===i.tag?i.stateNode.containerInfo:null)}s.blockedOn=null}function Xc(s){if(null!==s.blockedOn)return!1;for(var o=s.targetContainers;0<o.length;){var i=Yc(s.domEventName,s.eventSystemFlags,o[0],s.nativeEvent);if(null!==i)return null!==(o=Cb(i))&&jt(o),s.blockedOn=i,!1;var a=new(i=s.nativeEvent).constructor(i.type,i);He=a,i.target.dispatchEvent(a),He=null,o.shift()}return!0}function Zc(s,o,i){Xc(s)&&i.delete(o)}function $c(){Nt=!1,null!==Rt&&Xc(Rt)&&(Rt=null),null!==Dt&&Xc(Dt)&&(Dt=null),null!==Lt&&Xc(Lt)&&(Lt=null),Ft.forEach(Zc),Bt.forEach(Zc)}function ad(s,o){s.blockedOn===o&&(s.blockedOn=null,Nt||(Nt=!0,u.unstable_scheduleCallback(u.unstable_NormalPriority,$c)))}function bd(s){function b(o){return ad(o,s)}if(0<Mt.length){ad(Mt[0],s);for(var o=1;o<Mt.length;o++){var i=Mt[o];i.blockedOn===s&&(i.blockedOn=null)}}for(null!==Rt&&ad(Rt,s),null!==Dt&&ad(Dt,s),null!==Lt&&ad(Lt,s),Ft.forEach(b),Bt.forEach(b),o=0;o<$t.length;o++)(i=$t[o]).blockedOn===s&&(i.blockedOn=null);for(;0<$t.length&&null===(o=$t[0]).blockedOn;)Vc(o),null===o.blockedOn&&$t.shift()}var Vt=U.ReactCurrentBatchConfig,Ut=!0;function ed(s,o,i,a){var u=Ct,_=Vt.transition;Vt.transition=null;try{Ct=1,fd(s,o,i,a)}finally{Ct=u,Vt.transition=_}}function gd(s,o,i,a){var u=Ct,_=Vt.transition;Vt.transition=null;try{Ct=4,fd(s,o,i,a)}finally{Ct=u,Vt.transition=_}}function fd(s,o,i,a){if(Ut){var u=Yc(s,o,i,a);if(null===u)hd(s,o,a,zt,i),Sc(s,a);else if(function Uc(s,o,i,a,u){switch(o){case\"focusin\":return Rt=Tc(Rt,s,o,i,a,u),!0;case\"dragenter\":return Dt=Tc(Dt,s,o,i,a,u),!0;case\"mouseover\":return Lt=Tc(Lt,s,o,i,a,u),!0;case\"pointerover\":var _=u.pointerId;return Ft.set(_,Tc(Ft.get(_)||null,s,o,i,a,u)),!0;case\"gotpointercapture\":return _=u.pointerId,Bt.set(_,Tc(Bt.get(_)||null,s,o,i,a,u)),!0}return!1}(u,s,o,i,a))a.stopPropagation();else if(Sc(s,a),4&o&&-1<qt.indexOf(s)){for(;null!==u;){var _=Cb(u);if(null!==_&&At(_),null===(_=Yc(s,o,i,a))&&hd(s,o,a,zt,i),_===u)break;u=_}null!==u&&a.stopPropagation()}else hd(s,o,a,null,i)}}var zt=null;function Yc(s,o,i,a){if(zt=null,null!==(s=Wc(s=xb(a))))if(null===(o=Vb(s)))s=null;else if(13===(i=o.tag)){if(null!==(s=Wb(o)))return s;s=null}else if(3===i){if(o.stateNode.current.memoizedState.isDehydrated)return 3===o.tag?o.stateNode.containerInfo:null;s=null}else o!==s&&(s=null);return zt=s,null}function jd(s){switch(s){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(dt()){case mt:return 1;case gt:return 4;case yt:case vt:return 16;case bt:return 536870912;default:return 16}default:return 16}}var Wt=null,Jt=null,Ht=null;function nd(){if(Ht)return Ht;var s,o,i=Jt,a=i.length,u=\"value\"in Wt?Wt.value:Wt.textContent,_=u.length;for(s=0;s<a&&i[s]===u[s];s++);var w=a-s;for(o=1;o<=w&&i[a-o]===u[_-o];o++);return Ht=u.slice(s,1<o?1-o:void 0)}function od(s){var o=s.keyCode;return\"charCode\"in s?0===(s=s.charCode)&&13===o&&(s=13):s=o,10===s&&(s=13),32<=s||13===s?s:0}function pd(){return!0}function qd(){return!1}function rd(s){function b(o,i,a,u,_){for(var w in this._reactName=o,this._targetInst=a,this.type=i,this.nativeEvent=u,this.target=_,this.currentTarget=null,s)s.hasOwnProperty(w)&&(o=s[w],this[w]=o?o(u):u[w]);return this.isDefaultPrevented=(null!=u.defaultPrevented?u.defaultPrevented:!1===u.returnValue)?pd:qd,this.isPropagationStopped=qd,this}return we(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():\"unknown\"!=typeof s.returnValue&&(s.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():\"unknown\"!=typeof s.cancelBubble&&(s.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd}),b}var Kt,Gt,Yt,Xt={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(s){return s.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qt=rd(Xt),Zt=we({},Xt,{view:0,detail:0}),er=rd(Zt),tr=we({},Zt,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(s){return void 0===s.relatedTarget?s.fromElement===s.srcElement?s.toElement:s.fromElement:s.relatedTarget},movementX:function(s){return\"movementX\"in s?s.movementX:(s!==Yt&&(Yt&&\"mousemove\"===s.type?(Kt=s.screenX-Yt.screenX,Gt=s.screenY-Yt.screenY):Gt=Kt=0,Yt=s),Kt)},movementY:function(s){return\"movementY\"in s?s.movementY:Gt}}),rr=rd(tr),nr=rd(we({},tr,{dataTransfer:0})),sr=rd(we({},Zt,{relatedTarget:0})),ir=rd(we({},Xt,{animationName:0,elapsedTime:0,pseudoElement:0})),ar=we({},Xt,{clipboardData:function(s){return\"clipboardData\"in s?s.clipboardData:window.clipboardData}}),cr=rd(ar),lr=rd(we({},Xt,{data:0})),ur={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},pr={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},dr={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(s){var o=this.nativeEvent;return o.getModifierState?o.getModifierState(s):!!(s=dr[s])&&!!o[s]}function zd(){return Pd}var fr=we({},Zt,{key:function(s){if(s.key){var o=ur[s.key]||s.key;if(\"Unidentified\"!==o)return o}return\"keypress\"===s.type?13===(s=od(s))?\"Enter\":String.fromCharCode(s):\"keydown\"===s.type||\"keyup\"===s.type?pr[s.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(s){return\"keypress\"===s.type?od(s):0},keyCode:function(s){return\"keydown\"===s.type||\"keyup\"===s.type?s.keyCode:0},which:function(s){return\"keypress\"===s.type?od(s):\"keydown\"===s.type||\"keyup\"===s.type?s.keyCode:0}}),mr=rd(fr),gr=rd(we({},tr,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),yr=rd(we({},Zt,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd})),vr=rd(we({},Xt,{propertyName:0,elapsedTime:0,pseudoElement:0})),br=we({},tr,{deltaX:function(s){return\"deltaX\"in s?s.deltaX:\"wheelDeltaX\"in s?-s.wheelDeltaX:0},deltaY:function(s){return\"deltaY\"in s?s.deltaY:\"wheelDeltaY\"in s?-s.wheelDeltaY:\"wheelDelta\"in s?-s.wheelDelta:0},deltaZ:0,deltaMode:0}),_r=rd(br),Sr=[9,13,27,32],Er=x&&\"CompositionEvent\"in window,wr=null;x&&\"documentMode\"in document&&(wr=document.documentMode);var xr=x&&\"TextEvent\"in window&&!wr,kr=x&&(!Er||wr&&8<wr&&11>=wr),Or=String.fromCharCode(32),Cr=!1;function ge(s,o){switch(s){case\"keyup\":return-1!==Sr.indexOf(o.keyCode);case\"keydown\":return 229!==o.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(s){return\"object\"==typeof(s=s.detail)&&\"data\"in s?s.data:null}var Ar=!1;var jr={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(s){var o=s&&s.nodeName&&s.nodeName.toLowerCase();return\"input\"===o?!!jr[s.type]:\"textarea\"===o}function ne(s,o,i,a){Eb(a),0<(o=oe(o,\"onChange\")).length&&(i=new Qt(\"onChange\",\"change\",null,i,a),s.push({event:i,listeners:o}))}var Ir=null,Pr=null;function re(s){se(s,0)}function te(s){if(Wa(ue(s)))return s}function ve(s,o){if(\"change\"===s)return o}var Tr=!1;if(x){var Nr;if(x){var Mr=\"oninput\"in document;if(!Mr){var Rr=document.createElement(\"div\");Rr.setAttribute(\"oninput\",\"return;\"),Mr=\"function\"==typeof Rr.oninput}Nr=Mr}else Nr=!1;Tr=Nr&&(!document.documentMode||9<document.documentMode)}function Ae(){Ir&&(Ir.detachEvent(\"onpropertychange\",Be),Pr=Ir=null)}function Be(s){if(\"value\"===s.propertyName&&te(Pr)){var o=[];ne(o,Pr,s,xb(s)),Jb(re,o)}}function Ce(s,o,i){\"focusin\"===s?(Ae(),Pr=i,(Ir=o).attachEvent(\"onpropertychange\",Be)):\"focusout\"===s&&Ae()}function De(s){if(\"selectionchange\"===s||\"keyup\"===s||\"keydown\"===s)return te(Pr)}function Ee(s,o){if(\"click\"===s)return te(o)}function Fe(s,o){if(\"input\"===s||\"change\"===s)return te(o)}var Dr=\"function\"==typeof Object.is?Object.is:function Ge(s,o){return s===o&&(0!==s||1/s==1/o)||s!=s&&o!=o};function Ie(s,o){if(Dr(s,o))return!0;if(\"object\"!=typeof s||null===s||\"object\"!=typeof o||null===o)return!1;var i=Object.keys(s),a=Object.keys(o);if(i.length!==a.length)return!1;for(a=0;a<i.length;a++){var u=i[a];if(!C.call(o,u)||!Dr(s[u],o[u]))return!1}return!0}function Je(s){for(;s&&s.firstChild;)s=s.firstChild;return s}function Ke(s,o){var i,a=Je(s);for(s=0;a;){if(3===a.nodeType){if(i=s+a.textContent.length,s<=o&&i>=o)return{node:a,offset:o-s};s=i}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Je(a)}}function Le(s,o){return!(!s||!o)&&(s===o||(!s||3!==s.nodeType)&&(o&&3===o.nodeType?Le(s,o.parentNode):\"contains\"in s?s.contains(o):!!s.compareDocumentPosition&&!!(16&s.compareDocumentPosition(o))))}function Me(){for(var s=window,o=Xa();o instanceof s.HTMLIFrameElement;){try{var i=\"string\"==typeof o.contentWindow.location.href}catch(s){i=!1}if(!i)break;o=Xa((s=o.contentWindow).document)}return o}function Ne(s){var o=s&&s.nodeName&&s.nodeName.toLowerCase();return o&&(\"input\"===o&&(\"text\"===s.type||\"search\"===s.type||\"tel\"===s.type||\"url\"===s.type||\"password\"===s.type)||\"textarea\"===o||\"true\"===s.contentEditable)}function Oe(s){var o=Me(),i=s.focusedElem,a=s.selectionRange;if(o!==i&&i&&i.ownerDocument&&Le(i.ownerDocument.documentElement,i)){if(null!==a&&Ne(i))if(o=a.start,void 0===(s=a.end)&&(s=o),\"selectionStart\"in i)i.selectionStart=o,i.selectionEnd=Math.min(s,i.value.length);else if((s=(o=i.ownerDocument||document)&&o.defaultView||window).getSelection){s=s.getSelection();var u=i.textContent.length,_=Math.min(a.start,u);a=void 0===a.end?_:Math.min(a.end,u),!s.extend&&_>a&&(u=a,a=_,_=u),u=Ke(i,_);var w=Ke(i,a);u&&w&&(1!==s.rangeCount||s.anchorNode!==u.node||s.anchorOffset!==u.offset||s.focusNode!==w.node||s.focusOffset!==w.offset)&&((o=o.createRange()).setStart(u.node,u.offset),s.removeAllRanges(),_>a?(s.addRange(o),s.extend(w.node,w.offset)):(o.setEnd(w.node,w.offset),s.addRange(o)))}for(o=[],s=i;s=s.parentNode;)1===s.nodeType&&o.push({element:s,left:s.scrollLeft,top:s.scrollTop});for(\"function\"==typeof i.focus&&i.focus(),i=0;i<o.length;i++)(s=o[i]).element.scrollLeft=s.left,s.element.scrollTop=s.top}}var Lr=x&&\"documentMode\"in document&&11>=document.documentMode,Fr=null,Br=null,$r=null,qr=!1;function Ue(s,o,i){var a=i.window===i?i.document:9===i.nodeType?i:i.ownerDocument;qr||null==Fr||Fr!==Xa(a)||(\"selectionStart\"in(a=Fr)&&Ne(a)?a={start:a.selectionStart,end:a.selectionEnd}:a={anchorNode:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset},$r&&Ie($r,a)||($r=a,0<(a=oe(Br,\"onSelect\")).length&&(o=new Qt(\"onSelect\",\"select\",null,o,i),s.push({event:o,listeners:a}),o.target=Fr)))}function Ve(s,o){var i={};return i[s.toLowerCase()]=o.toLowerCase(),i[\"Webkit\"+s]=\"webkit\"+o,i[\"Moz\"+s]=\"moz\"+o,i}var Vr={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Ur={},zr={};function Ze(s){if(Ur[s])return Ur[s];if(!Vr[s])return s;var o,i=Vr[s];for(o in i)if(i.hasOwnProperty(o)&&o in zr)return Ur[s]=i[o];return s}x&&(zr=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vr.animationend.animation,delete Vr.animationiteration.animation,delete Vr.animationstart.animation),\"TransitionEvent\"in window||delete Vr.transitionend.transition);var Wr=Ze(\"animationend\"),Jr=Ze(\"animationiteration\"),Hr=Ze(\"animationstart\"),Kr=Ze(\"transitionend\"),Gr=new Map,Yr=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function ff(s,o){Gr.set(s,o),fa(o,[s])}for(var Xr=0;Xr<Yr.length;Xr++){var Qr=Yr[Xr];ff(Qr.toLowerCase(),\"on\"+(Qr[0].toUpperCase()+Qr.slice(1)))}ff(Wr,\"onAnimationEnd\"),ff(Jr,\"onAnimationIteration\"),ff(Hr,\"onAnimationStart\"),ff(\"dblclick\",\"onDoubleClick\"),ff(\"focusin\",\"onFocus\"),ff(\"focusout\",\"onBlur\"),ff(Kr,\"onTransitionEnd\"),ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]),ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]),ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]),ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]),fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \")),fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \")),fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]),fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \")),fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")),fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Zr=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),en=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Zr));function nf(s,o,i){var a=s.type||\"unknown-event\";s.currentTarget=i,function Ub(s,o,i,a,u,_,w,x,C){if(Tb.apply(this,arguments),nt){if(!nt)throw Error(p(198));var j=st;nt=!1,st=null,ot||(ot=!0,it=j)}}(a,o,void 0,s),s.currentTarget=null}function se(s,o){o=!!(4&o);for(var i=0;i<s.length;i++){var a=s[i],u=a.event;a=a.listeners;e:{var _=void 0;if(o)for(var w=a.length-1;0<=w;w--){var x=a[w],C=x.instance,j=x.currentTarget;if(x=x.listener,C!==_&&u.isPropagationStopped())break e;nf(u,x,j),_=C}else for(w=0;w<a.length;w++){if(C=(x=a[w]).instance,j=x.currentTarget,x=x.listener,C!==_&&u.isPropagationStopped())break e;nf(u,x,j),_=C}}}if(ot)throw s=it,ot=!1,it=null,s}function D(s,o){var i=o[mn];void 0===i&&(i=o[mn]=new Set);var a=s+\"__bubble\";i.has(a)||(pf(o,s,2,!1),i.add(a))}function qf(s,o,i){var a=0;o&&(a|=4),pf(i,s,a,o)}var tn=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(s){if(!s[tn]){s[tn]=!0,_.forEach((function(o){\"selectionchange\"!==o&&(en.has(o)||qf(o,!1,s),qf(o,!0,s))}));var o=9===s.nodeType?s:s.ownerDocument;null===o||o[tn]||(o[tn]=!0,qf(\"selectionchange\",!1,o))}}function pf(s,o,i,a){switch(jd(o)){case 1:var u=ed;break;case 4:u=gd;break;default:u=fd}i=u.bind(null,o,i,s),u=void 0,!tt||\"touchstart\"!==o&&\"touchmove\"!==o&&\"wheel\"!==o||(u=!0),a?void 0!==u?s.addEventListener(o,i,{capture:!0,passive:u}):s.addEventListener(o,i,!0):void 0!==u?s.addEventListener(o,i,{passive:u}):s.addEventListener(o,i,!1)}function hd(s,o,i,a,u){var _=a;if(!(1&o||2&o||null===a))e:for(;;){if(null===a)return;var w=a.tag;if(3===w||4===w){var x=a.stateNode.containerInfo;if(x===u||8===x.nodeType&&x.parentNode===u)break;if(4===w)for(w=a.return;null!==w;){var C=w.tag;if((3===C||4===C)&&((C=w.stateNode.containerInfo)===u||8===C.nodeType&&C.parentNode===u))return;w=w.return}for(;null!==x;){if(null===(w=Wc(x)))return;if(5===(C=w.tag)||6===C){a=_=w;continue e}x=x.parentNode}}a=a.return}Jb((function(){var a=_,u=xb(i),w=[];e:{var x=Gr.get(s);if(void 0!==x){var C=Qt,j=s;switch(s){case\"keypress\":if(0===od(i))break e;case\"keydown\":case\"keyup\":C=mr;break;case\"focusin\":j=\"focus\",C=sr;break;case\"focusout\":j=\"blur\",C=sr;break;case\"beforeblur\":case\"afterblur\":C=sr;break;case\"click\":if(2===i.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":C=rr;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":C=nr;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":C=yr;break;case Wr:case Jr:case Hr:C=ir;break;case Kr:C=vr;break;case\"scroll\":C=er;break;case\"wheel\":C=_r;break;case\"copy\":case\"cut\":case\"paste\":C=cr;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":C=gr}var L=!!(4&o),B=!L&&\"scroll\"===s,$=L?null!==x?x+\"Capture\":null:x;L=[];for(var V,U=a;null!==U;){var z=(V=U).stateNode;if(5===V.tag&&null!==z&&(V=z,null!==$&&(null!=(z=Kb(U,$))&&L.push(tf(U,z,V)))),B)break;U=U.return}0<L.length&&(x=new C(x,j,null,i,u),w.push({event:x,listeners:L}))}}if(!(7&o)){if(C=\"mouseout\"===s||\"pointerout\"===s,(!(x=\"mouseover\"===s||\"pointerover\"===s)||i===He||!(j=i.relatedTarget||i.fromElement)||!Wc(j)&&!j[fn])&&(C||x)&&(x=u.window===u?u:(x=u.ownerDocument)?x.defaultView||x.parentWindow:window,C?(C=a,null!==(j=(j=i.relatedTarget||i.toElement)?Wc(j):null)&&(j!==(B=Vb(j))||5!==j.tag&&6!==j.tag)&&(j=null)):(C=null,j=a),C!==j)){if(L=rr,z=\"onMouseLeave\",$=\"onMouseEnter\",U=\"mouse\",\"pointerout\"!==s&&\"pointerover\"!==s||(L=gr,z=\"onPointerLeave\",$=\"onPointerEnter\",U=\"pointer\"),B=null==C?x:ue(C),V=null==j?x:ue(j),(x=new L(z,U+\"leave\",C,i,u)).target=B,x.relatedTarget=V,z=null,Wc(u)===a&&((L=new L($,U+\"enter\",j,i,u)).target=V,L.relatedTarget=B,z=L),B=z,C&&j)e:{for($=j,U=0,V=L=C;V;V=vf(V))U++;for(V=0,z=$;z;z=vf(z))V++;for(;0<U-V;)L=vf(L),U--;for(;0<V-U;)$=vf($),V--;for(;U--;){if(L===$||null!==$&&L===$.alternate)break e;L=vf(L),$=vf($)}L=null}else L=null;null!==C&&wf(w,x,C,L,!1),null!==j&&null!==B&&wf(w,B,j,L,!0)}if(\"select\"===(C=(x=a?ue(a):window).nodeName&&x.nodeName.toLowerCase())||\"input\"===C&&\"file\"===x.type)var Y=ve;else if(me(x))if(Tr)Y=Fe;else{Y=De;var Z=Ce}else(C=x.nodeName)&&\"input\"===C.toLowerCase()&&(\"checkbox\"===x.type||\"radio\"===x.type)&&(Y=Ee);switch(Y&&(Y=Y(s,a))?ne(w,Y,i,u):(Z&&Z(s,x,a),\"focusout\"===s&&(Z=x._wrapperState)&&Z.controlled&&\"number\"===x.type&&cb(x,\"number\",x.value)),Z=a?ue(a):window,s){case\"focusin\":(me(Z)||\"true\"===Z.contentEditable)&&(Fr=Z,Br=a,$r=null);break;case\"focusout\":$r=Br=Fr=null;break;case\"mousedown\":qr=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":qr=!1,Ue(w,i,u);break;case\"selectionchange\":if(Lr)break;case\"keydown\":case\"keyup\":Ue(w,i,u)}var ee;if(Er)e:{switch(s){case\"compositionstart\":var ie=\"onCompositionStart\";break e;case\"compositionend\":ie=\"onCompositionEnd\";break e;case\"compositionupdate\":ie=\"onCompositionUpdate\";break e}ie=void 0}else Ar?ge(s,i)&&(ie=\"onCompositionEnd\"):\"keydown\"===s&&229===i.keyCode&&(ie=\"onCompositionStart\");ie&&(kr&&\"ko\"!==i.locale&&(Ar||\"onCompositionStart\"!==ie?\"onCompositionEnd\"===ie&&Ar&&(ee=nd()):(Jt=\"value\"in(Wt=u)?Wt.value:Wt.textContent,Ar=!0)),0<(Z=oe(a,ie)).length&&(ie=new lr(ie,s,null,i,u),w.push({event:ie,listeners:Z}),ee?ie.data=ee:null!==(ee=he(i))&&(ie.data=ee))),(ee=xr?function je(s,o){switch(s){case\"compositionend\":return he(o);case\"keypress\":return 32!==o.which?null:(Cr=!0,Or);case\"textInput\":return(s=o.data)===Or&&Cr?null:s;default:return null}}(s,i):function ke(s,o){if(Ar)return\"compositionend\"===s||!Er&&ge(s,o)?(s=nd(),Ht=Jt=Wt=null,Ar=!1,s):null;switch(s){case\"paste\":default:return null;case\"keypress\":if(!(o.ctrlKey||o.altKey||o.metaKey)||o.ctrlKey&&o.altKey){if(o.char&&1<o.char.length)return o.char;if(o.which)return String.fromCharCode(o.which)}return null;case\"compositionend\":return kr&&\"ko\"!==o.locale?null:o.data}}(s,i))&&(0<(a=oe(a,\"onBeforeInput\")).length&&(u=new lr(\"onBeforeInput\",\"beforeinput\",null,i,u),w.push({event:u,listeners:a}),u.data=ee))}se(w,o)}))}function tf(s,o,i){return{instance:s,listener:o,currentTarget:i}}function oe(s,o){for(var i=o+\"Capture\",a=[];null!==s;){var u=s,_=u.stateNode;5===u.tag&&null!==_&&(u=_,null!=(_=Kb(s,i))&&a.unshift(tf(s,_,u)),null!=(_=Kb(s,o))&&a.push(tf(s,_,u))),s=s.return}return a}function vf(s){if(null===s)return null;do{s=s.return}while(s&&5!==s.tag);return s||null}function wf(s,o,i,a,u){for(var _=o._reactName,w=[];null!==i&&i!==a;){var x=i,C=x.alternate,j=x.stateNode;if(null!==C&&C===a)break;5===x.tag&&null!==j&&(x=j,u?null!=(C=Kb(i,_))&&w.unshift(tf(i,C,x)):u||null!=(C=Kb(i,_))&&w.push(tf(i,C,x))),i=i.return}0!==w.length&&s.push({event:o,listeners:w})}var rn=/\\r\\n?/g,nn=/\\u0000|\\uFFFD/g;function zf(s){return(\"string\"==typeof s?s:\"\"+s).replace(rn,\"\\n\").replace(nn,\"\")}function Af(s,o,i){if(o=zf(o),zf(s)!==o&&i)throw Error(p(425))}function Bf(){}var sn=null,on=null;function Ef(s,o){return\"textarea\"===s||\"noscript\"===s||\"string\"==typeof o.children||\"number\"==typeof o.children||\"object\"==typeof o.dangerouslySetInnerHTML&&null!==o.dangerouslySetInnerHTML&&null!=o.dangerouslySetInnerHTML.__html}var an=\"function\"==typeof setTimeout?setTimeout:void 0,cn=\"function\"==typeof clearTimeout?clearTimeout:void 0,ln=\"function\"==typeof Promise?Promise:void 0,un=\"function\"==typeof queueMicrotask?queueMicrotask:void 0!==ln?function(s){return ln.resolve(null).then(s).catch(If)}:an;function If(s){setTimeout((function(){throw s}))}function Kf(s,o){var i=o,a=0;do{var u=i.nextSibling;if(s.removeChild(i),u&&8===u.nodeType)if(\"/$\"===(i=u.data)){if(0===a)return s.removeChild(u),void bd(o);a--}else\"$\"!==i&&\"$?\"!==i&&\"$!\"!==i||a++;i=u}while(i);bd(o)}function Lf(s){for(;null!=s;s=s.nextSibling){var o=s.nodeType;if(1===o||3===o)break;if(8===o){if(\"$\"===(o=s.data)||\"$!\"===o||\"$?\"===o)break;if(\"/$\"===o)return null}}return s}function Mf(s){s=s.previousSibling;for(var o=0;s;){if(8===s.nodeType){var i=s.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i){if(0===o)return s;o--}else\"/$\"===i&&o++}s=s.previousSibling}return null}var pn=Math.random().toString(36).slice(2),hn=\"__reactFiber$\"+pn,dn=\"__reactProps$\"+pn,fn=\"__reactContainer$\"+pn,mn=\"__reactEvents$\"+pn,gn=\"__reactListeners$\"+pn,yn=\"__reactHandles$\"+pn;function Wc(s){var o=s[hn];if(o)return o;for(var i=s.parentNode;i;){if(o=i[fn]||i[hn]){if(i=o.alternate,null!==o.child||null!==i&&null!==i.child)for(s=Mf(s);null!==s;){if(i=s[hn])return i;s=Mf(s)}return o}i=(s=i).parentNode}return null}function Cb(s){return!(s=s[hn]||s[fn])||5!==s.tag&&6!==s.tag&&13!==s.tag&&3!==s.tag?null:s}function ue(s){if(5===s.tag||6===s.tag)return s.stateNode;throw Error(p(33))}function Db(s){return s[dn]||null}var vn=[],bn=-1;function Uf(s){return{current:s}}function E(s){0>bn||(s.current=vn[bn],vn[bn]=null,bn--)}function G(s,o){bn++,vn[bn]=s.current,s.current=o}var _n={},Sn=Uf(_n),En=Uf(!1),wn=_n;function Yf(s,o){var i=s.type.contextTypes;if(!i)return _n;var a=s.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===o)return a.__reactInternalMemoizedMaskedChildContext;var u,_={};for(u in i)_[u]=o[u];return a&&((s=s.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,s.__reactInternalMemoizedMaskedChildContext=_),_}function Zf(s){return null!=(s=s.childContextTypes)}function $f(){E(En),E(Sn)}function ag(s,o,i){if(Sn.current!==_n)throw Error(p(168));G(Sn,o),G(En,i)}function bg(s,o,i){var a=s.stateNode;if(o=o.childContextTypes,\"function\"!=typeof a.getChildContext)return i;for(var u in a=a.getChildContext())if(!(u in o))throw Error(p(108,Ra(s)||\"Unknown\",u));return we({},i,a)}function cg(s){return s=(s=s.stateNode)&&s.__reactInternalMemoizedMergedChildContext||_n,wn=Sn.current,G(Sn,s),G(En,En.current),!0}function dg(s,o,i){var a=s.stateNode;if(!a)throw Error(p(169));i?(s=bg(s,o,wn),a.__reactInternalMemoizedMergedChildContext=s,E(En),E(Sn),G(Sn,s)):E(En),G(En,i)}var xn=null,kn=!1,On=!1;function hg(s){null===xn?xn=[s]:xn.push(s)}function jg(){if(!On&&null!==xn){On=!0;var s=0,o=Ct;try{var i=xn;for(Ct=1;s<i.length;s++){var a=i[s];do{a=a(!0)}while(null!==a)}xn=null,kn=!1}catch(o){throw null!==xn&&(xn=xn.slice(s+1)),ct(mt,jg),o}finally{Ct=o,On=!1}}return null}var Cn=[],An=0,jn=null,In=0,Pn=[],Tn=0,Nn=null,Mn=1,Rn=\"\";function tg(s,o){Cn[An++]=In,Cn[An++]=jn,jn=s,In=o}function ug(s,o,i){Pn[Tn++]=Mn,Pn[Tn++]=Rn,Pn[Tn++]=Nn,Nn=s;var a=Mn;s=Rn;var u=32-Et(a)-1;a&=~(1<<u),i+=1;var _=32-Et(o)+u;if(30<_){var w=u-u%5;_=(a&(1<<w)-1).toString(32),a>>=w,u-=w,Mn=1<<32-Et(o)+u|i<<u|a,Rn=_+s}else Mn=1<<_|i<<u|a,Rn=s}function vg(s){null!==s.return&&(tg(s,1),ug(s,1,0))}function wg(s){for(;s===jn;)jn=Cn[--An],Cn[An]=null,In=Cn[--An],Cn[An]=null;for(;s===Nn;)Nn=Pn[--Tn],Pn[Tn]=null,Rn=Pn[--Tn],Pn[Tn]=null,Mn=Pn[--Tn],Pn[Tn]=null}var Dn=null,Ln=null,Fn=!1,Bn=null;function Ag(s,o){var i=Bg(5,null,null,0);i.elementType=\"DELETED\",i.stateNode=o,i.return=s,null===(o=s.deletions)?(s.deletions=[i],s.flags|=16):o.push(i)}function Cg(s,o){switch(s.tag){case 5:var i=s.type;return null!==(o=1!==o.nodeType||i.toLowerCase()!==o.nodeName.toLowerCase()?null:o)&&(s.stateNode=o,Dn=s,Ln=Lf(o.firstChild),!0);case 6:return null!==(o=\"\"===s.pendingProps||3!==o.nodeType?null:o)&&(s.stateNode=o,Dn=s,Ln=null,!0);case 13:return null!==(o=8!==o.nodeType?null:o)&&(i=null!==Nn?{id:Mn,overflow:Rn}:null,s.memoizedState={dehydrated:o,treeContext:i,retryLane:1073741824},(i=Bg(18,null,null,0)).stateNode=o,i.return=s,s.child=i,Dn=s,Ln=null,!0);default:return!1}}function Dg(s){return!(!(1&s.mode)||128&s.flags)}function Eg(s){if(Fn){var o=Ln;if(o){var i=o;if(!Cg(s,o)){if(Dg(s))throw Error(p(418));o=Lf(i.nextSibling);var a=Dn;o&&Cg(s,o)?Ag(a,i):(s.flags=-4097&s.flags|2,Fn=!1,Dn=s)}}else{if(Dg(s))throw Error(p(418));s.flags=-4097&s.flags|2,Fn=!1,Dn=s}}}function Fg(s){for(s=s.return;null!==s&&5!==s.tag&&3!==s.tag&&13!==s.tag;)s=s.return;Dn=s}function Gg(s){if(s!==Dn)return!1;if(!Fn)return Fg(s),Fn=!0,!1;var o;if((o=3!==s.tag)&&!(o=5!==s.tag)&&(o=\"head\"!==(o=s.type)&&\"body\"!==o&&!Ef(s.type,s.memoizedProps)),o&&(o=Ln)){if(Dg(s))throw Hg(),Error(p(418));for(;o;)Ag(s,o),o=Lf(o.nextSibling)}if(Fg(s),13===s.tag){if(!(s=null!==(s=s.memoizedState)?s.dehydrated:null))throw Error(p(317));e:{for(s=s.nextSibling,o=0;s;){if(8===s.nodeType){var i=s.data;if(\"/$\"===i){if(0===o){Ln=Lf(s.nextSibling);break e}o--}else\"$\"!==i&&\"$!\"!==i&&\"$?\"!==i||o++}s=s.nextSibling}Ln=null}}else Ln=Dn?Lf(s.stateNode.nextSibling):null;return!0}function Hg(){for(var s=Ln;s;)s=Lf(s.nextSibling)}function Ig(){Ln=Dn=null,Fn=!1}function Jg(s){null===Bn?Bn=[s]:Bn.push(s)}var $n=U.ReactCurrentBatchConfig;function Lg(s,o,i){if(null!==(s=i.ref)&&\"function\"!=typeof s&&\"object\"!=typeof s){if(i._owner){if(i=i._owner){if(1!==i.tag)throw Error(p(309));var a=i.stateNode}if(!a)throw Error(p(147,s));var u=a,_=\"\"+s;return null!==o&&null!==o.ref&&\"function\"==typeof o.ref&&o.ref._stringRef===_?o.ref:(o=function(s){var o=u.refs;null===s?delete o[_]:o[_]=s},o._stringRef=_,o)}if(\"string\"!=typeof s)throw Error(p(284));if(!i._owner)throw Error(p(290,s))}return s}function Mg(s,o){throw s=Object.prototype.toString.call(o),Error(p(31,\"[object Object]\"===s?\"object with keys {\"+Object.keys(o).join(\", \")+\"}\":s))}function Ng(s){return(0,s._init)(s._payload)}function Og(s){function b(o,i){if(s){var a=o.deletions;null===a?(o.deletions=[i],o.flags|=16):a.push(i)}}function c(o,i){if(!s)return null;for(;null!==i;)b(o,i),i=i.sibling;return null}function d(s,o){for(s=new Map;null!==o;)null!==o.key?s.set(o.key,o):s.set(o.index,o),o=o.sibling;return s}function e(s,o){return(s=Pg(s,o)).index=0,s.sibling=null,s}function f(o,i,a){return o.index=a,s?null!==(a=o.alternate)?(a=a.index)<i?(o.flags|=2,i):a:(o.flags|=2,i):(o.flags|=1048576,i)}function g(o){return s&&null===o.alternate&&(o.flags|=2),o}function h(s,o,i,a){return null===o||6!==o.tag?((o=Qg(i,s.mode,a)).return=s,o):((o=e(o,i)).return=s,o)}function k(s,o,i,a){var u=i.type;return u===Z?m(s,o,i.props.children,a,i.key):null!==o&&(o.elementType===u||\"object\"==typeof u&&null!==u&&u.$$typeof===ye&&Ng(u)===o.type)?((a=e(o,i.props)).ref=Lg(s,o,i),a.return=s,a):((a=Rg(i.type,i.key,i.props,null,s.mode,a)).ref=Lg(s,o,i),a.return=s,a)}function l(s,o,i,a){return null===o||4!==o.tag||o.stateNode.containerInfo!==i.containerInfo||o.stateNode.implementation!==i.implementation?((o=Sg(i,s.mode,a)).return=s,o):((o=e(o,i.children||[])).return=s,o)}function m(s,o,i,a,u){return null===o||7!==o.tag?((o=Tg(i,s.mode,a,u)).return=s,o):((o=e(o,i)).return=s,o)}function q(s,o,i){if(\"string\"==typeof o&&\"\"!==o||\"number\"==typeof o)return(o=Qg(\"\"+o,s.mode,i)).return=s,o;if(\"object\"==typeof o&&null!==o){switch(o.$$typeof){case z:return(i=Rg(o.type,o.key,o.props,null,s.mode,i)).ref=Lg(s,null,o),i.return=s,i;case Y:return(o=Sg(o,s.mode,i)).return=s,o;case ye:return q(s,(0,o._init)(o._payload),i)}if(Pe(o)||Ka(o))return(o=Tg(o,s.mode,i,null)).return=s,o;Mg(s,o)}return null}function r(s,o,i,a){var u=null!==o?o.key:null;if(\"string\"==typeof i&&\"\"!==i||\"number\"==typeof i)return null!==u?null:h(s,o,\"\"+i,a);if(\"object\"==typeof i&&null!==i){switch(i.$$typeof){case z:return i.key===u?k(s,o,i,a):null;case Y:return i.key===u?l(s,o,i,a):null;case ye:return r(s,o,(u=i._init)(i._payload),a)}if(Pe(i)||Ka(i))return null!==u?null:m(s,o,i,a,null);Mg(s,i)}return null}function y(s,o,i,a,u){if(\"string\"==typeof a&&\"\"!==a||\"number\"==typeof a)return h(o,s=s.get(i)||null,\"\"+a,u);if(\"object\"==typeof a&&null!==a){switch(a.$$typeof){case z:return k(o,s=s.get(null===a.key?i:a.key)||null,a,u);case Y:return l(o,s=s.get(null===a.key?i:a.key)||null,a,u);case ye:return y(s,o,i,(0,a._init)(a._payload),u)}if(Pe(a)||Ka(a))return m(o,s=s.get(i)||null,a,u,null);Mg(o,a)}return null}function n(o,i,a,u){for(var _=null,w=null,x=i,C=i=0,j=null;null!==x&&C<a.length;C++){x.index>C?(j=x,x=null):j=x.sibling;var L=r(o,x,a[C],u);if(null===L){null===x&&(x=j);break}s&&x&&null===L.alternate&&b(o,x),i=f(L,i,C),null===w?_=L:w.sibling=L,w=L,x=j}if(C===a.length)return c(o,x),Fn&&tg(o,C),_;if(null===x){for(;C<a.length;C++)null!==(x=q(o,a[C],u))&&(i=f(x,i,C),null===w?_=x:w.sibling=x,w=x);return Fn&&tg(o,C),_}for(x=d(o,x);C<a.length;C++)null!==(j=y(x,o,C,a[C],u))&&(s&&null!==j.alternate&&x.delete(null===j.key?C:j.key),i=f(j,i,C),null===w?_=j:w.sibling=j,w=j);return s&&x.forEach((function(s){return b(o,s)})),Fn&&tg(o,C),_}function t(o,i,a,u){var _=Ka(a);if(\"function\"!=typeof _)throw Error(p(150));if(null==(a=_.call(a)))throw Error(p(151));for(var w=_=null,x=i,C=i=0,j=null,L=a.next();null!==x&&!L.done;C++,L=a.next()){x.index>C?(j=x,x=null):j=x.sibling;var B=r(o,x,L.value,u);if(null===B){null===x&&(x=j);break}s&&x&&null===B.alternate&&b(o,x),i=f(B,i,C),null===w?_=B:w.sibling=B,w=B,x=j}if(L.done)return c(o,x),Fn&&tg(o,C),_;if(null===x){for(;!L.done;C++,L=a.next())null!==(L=q(o,L.value,u))&&(i=f(L,i,C),null===w?_=L:w.sibling=L,w=L);return Fn&&tg(o,C),_}for(x=d(o,x);!L.done;C++,L=a.next())null!==(L=y(x,o,C,L.value,u))&&(s&&null!==L.alternate&&x.delete(null===L.key?C:L.key),i=f(L,i,C),null===w?_=L:w.sibling=L,w=L);return s&&x.forEach((function(s){return b(o,s)})),Fn&&tg(o,C),_}return function J(s,o,i,a){if(\"object\"==typeof i&&null!==i&&i.type===Z&&null===i.key&&(i=i.props.children),\"object\"==typeof i&&null!==i){switch(i.$$typeof){case z:e:{for(var u=i.key,_=o;null!==_;){if(_.key===u){if((u=i.type)===Z){if(7===_.tag){c(s,_.sibling),(o=e(_,i.props.children)).return=s,s=o;break e}}else if(_.elementType===u||\"object\"==typeof u&&null!==u&&u.$$typeof===ye&&Ng(u)===_.type){c(s,_.sibling),(o=e(_,i.props)).ref=Lg(s,_,i),o.return=s,s=o;break e}c(s,_);break}b(s,_),_=_.sibling}i.type===Z?((o=Tg(i.props.children,s.mode,a,i.key)).return=s,s=o):((a=Rg(i.type,i.key,i.props,null,s.mode,a)).ref=Lg(s,o,i),a.return=s,s=a)}return g(s);case Y:e:{for(_=i.key;null!==o;){if(o.key===_){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){c(s,o.sibling),(o=e(o,i.children||[])).return=s,s=o;break e}c(s,o);break}b(s,o),o=o.sibling}(o=Sg(i,s.mode,a)).return=s,s=o}return g(s);case ye:return J(s,o,(_=i._init)(i._payload),a)}if(Pe(i))return n(s,o,i,a);if(Ka(i))return t(s,o,i,a);Mg(s,i)}return\"string\"==typeof i&&\"\"!==i||\"number\"==typeof i?(i=\"\"+i,null!==o&&6===o.tag?(c(s,o.sibling),(o=e(o,i)).return=s,s=o):(c(s,o),(o=Qg(i,s.mode,a)).return=s,s=o),g(s)):c(s,o)}}var qn=Og(!0),Vn=Og(!1),Un=Uf(null),zn=null,Wn=null,Jn=null;function $g(){Jn=Wn=zn=null}function ah(s){var o=Un.current;E(Un),s._currentValue=o}function bh(s,o,i){for(;null!==s;){var a=s.alternate;if((s.childLanes&o)!==o?(s.childLanes|=o,null!==a&&(a.childLanes|=o)):null!==a&&(a.childLanes&o)!==o&&(a.childLanes|=o),s===i)break;s=s.return}}function ch(s,o){zn=s,Jn=Wn=null,null!==(s=s.dependencies)&&null!==s.firstContext&&(!!(s.lanes&o)&&(bs=!0),s.firstContext=null)}function eh(s){var o=s._currentValue;if(Jn!==s)if(s={context:s,memoizedValue:o,next:null},null===Wn){if(null===zn)throw Error(p(308));Wn=s,zn.dependencies={lanes:0,firstContext:s}}else Wn=Wn.next=s;return o}var Hn=null;function gh(s){null===Hn?Hn=[s]:Hn.push(s)}function hh(s,o,i,a){var u=o.interleaved;return null===u?(i.next=i,gh(o)):(i.next=u.next,u.next=i),o.interleaved=i,ih(s,a)}function ih(s,o){s.lanes|=o;var i=s.alternate;for(null!==i&&(i.lanes|=o),i=s,s=s.return;null!==s;)s.childLanes|=o,null!==(i=s.alternate)&&(i.childLanes|=o),i=s,s=s.return;return 3===i.tag?i.stateNode:null}var Kn=!1;function kh(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function lh(s,o){s=s.updateQueue,o.updateQueue===s&&(o.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,effects:s.effects})}function mh(s,o){return{eventTime:s,lane:o,tag:0,payload:null,callback:null,next:null}}function nh(s,o,i){var a=s.updateQueue;if(null===a)return null;if(a=a.shared,2&Ls){var u=a.pending;return null===u?o.next=o:(o.next=u.next,u.next=o),a.pending=o,ih(s,i)}return null===(u=a.interleaved)?(o.next=o,gh(a)):(o.next=u.next,u.next=o),a.interleaved=o,ih(s,i)}function oh(s,o,i){if(null!==(o=o.updateQueue)&&(o=o.shared,4194240&i)){var a=o.lanes;i|=a&=s.pendingLanes,o.lanes=i,Cc(s,i)}}function ph(s,o){var i=s.updateQueue,a=s.alternate;if(null!==a&&i===(a=a.updateQueue)){var u=null,_=null;if(null!==(i=i.firstBaseUpdate)){do{var w={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};null===_?u=_=w:_=_.next=w,i=i.next}while(null!==i);null===_?u=_=o:_=_.next=o}else u=_=o;return i={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:_,shared:a.shared,effects:a.effects},void(s.updateQueue=i)}null===(s=i.lastBaseUpdate)?i.firstBaseUpdate=o:s.next=o,i.lastBaseUpdate=o}function qh(s,o,i,a){var u=s.updateQueue;Kn=!1;var _=u.firstBaseUpdate,w=u.lastBaseUpdate,x=u.shared.pending;if(null!==x){u.shared.pending=null;var C=x,j=C.next;C.next=null,null===w?_=j:w.next=j,w=C;var L=s.alternate;null!==L&&((x=(L=L.updateQueue).lastBaseUpdate)!==w&&(null===x?L.firstBaseUpdate=j:x.next=j,L.lastBaseUpdate=C))}if(null!==_){var B=u.baseState;for(w=0,L=j=C=null,x=_;;){var $=x.lane,V=x.eventTime;if((a&$)===$){null!==L&&(L=L.next={eventTime:V,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var U=s,z=x;switch($=o,V=i,z.tag){case 1:if(\"function\"==typeof(U=z.payload)){B=U.call(V,B,$);break e}B=U;break e;case 3:U.flags=-65537&U.flags|128;case 0:if(null==($=\"function\"==typeof(U=z.payload)?U.call(V,B,$):U))break e;B=we({},B,$);break e;case 2:Kn=!0}}null!==x.callback&&0!==x.lane&&(s.flags|=64,null===($=u.effects)?u.effects=[x]:$.push(x))}else V={eventTime:V,lane:$,tag:x.tag,payload:x.payload,callback:x.callback,next:null},null===L?(j=L=V,C=B):L=L.next=V,w|=$;if(null===(x=x.next)){if(null===(x=u.shared.pending))break;x=($=x).next,$.next=null,u.lastBaseUpdate=$,u.shared.pending=null}}if(null===L&&(C=B),u.baseState=C,u.firstBaseUpdate=j,u.lastBaseUpdate=L,null!==(o=u.shared.interleaved)){u=o;do{w|=u.lane,u=u.next}while(u!==o)}else null===_&&(u.shared.lanes=0);Ws|=w,s.lanes=w,s.memoizedState=B}}function sh(s,o,i){if(s=o.effects,o.effects=null,null!==s)for(o=0;o<s.length;o++){var a=s[o],u=a.callback;if(null!==u){if(a.callback=null,a=i,\"function\"!=typeof u)throw Error(p(191,u));u.call(a)}}}var Gn={},Yn=Uf(Gn),Xn=Uf(Gn),Qn=Uf(Gn);function xh(s){if(s===Gn)throw Error(p(174));return s}function yh(s,o){switch(G(Qn,o),G(Xn,s),G(Yn,Gn),s=o.nodeType){case 9:case 11:o=(o=o.documentElement)?o.namespaceURI:lb(null,\"\");break;default:o=lb(o=(s=8===s?o.parentNode:o).namespaceURI||null,s=s.tagName)}E(Yn),G(Yn,o)}function zh(){E(Yn),E(Xn),E(Qn)}function Ah(s){xh(Qn.current);var o=xh(Yn.current),i=lb(o,s.type);o!==i&&(G(Xn,s),G(Yn,i))}function Bh(s){Xn.current===s&&(E(Yn),E(Xn))}var Zn=Uf(0);function Ch(s){for(var o=s;null!==o;){if(13===o.tag){var i=o.memoizedState;if(null!==i&&(null===(i=i.dehydrated)||\"$?\"===i.data||\"$!\"===i.data))return o}else if(19===o.tag&&void 0!==o.memoizedProps.revealOrder){if(128&o.flags)return o}else if(null!==o.child){o.child.return=o,o=o.child;continue}if(o===s)break;for(;null===o.sibling;){if(null===o.return||o.return===s)return null;o=o.return}o.sibling.return=o.return,o=o.sibling}return null}var es=[];function Eh(){for(var s=0;s<es.length;s++)es[s]._workInProgressVersionPrimary=null;es.length=0}var ts=U.ReactCurrentDispatcher,rs=U.ReactCurrentBatchConfig,ns=0,ss=null,os=null,as=null,cs=!1,ls=!1,us=0,ps=0;function P(){throw Error(p(321))}function Mh(s,o){if(null===o)return!1;for(var i=0;i<o.length&&i<s.length;i++)if(!Dr(s[i],o[i]))return!1;return!0}function Nh(s,o,i,a,u,_){if(ns=_,ss=o,o.memoizedState=null,o.updateQueue=null,o.lanes=0,ts.current=null===s||null===s.memoizedState?ds:fs,s=i(a,u),ls){_=0;do{if(ls=!1,us=0,25<=_)throw Error(p(301));_+=1,as=os=null,o.updateQueue=null,ts.current=ms,s=i(a,u)}while(ls)}if(ts.current=hs,o=null!==os&&null!==os.next,ns=0,as=os=ss=null,cs=!1,o)throw Error(p(300));return s}function Sh(){var s=0!==us;return us=0,s}function Th(){var s={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===as?ss.memoizedState=as=s:as=as.next=s,as}function Uh(){if(null===os){var s=ss.alternate;s=null!==s?s.memoizedState:null}else s=os.next;var o=null===as?ss.memoizedState:as.next;if(null!==o)as=o,os=s;else{if(null===s)throw Error(p(310));s={memoizedState:(os=s).memoizedState,baseState:os.baseState,baseQueue:os.baseQueue,queue:os.queue,next:null},null===as?ss.memoizedState=as=s:as=as.next=s}return as}function Vh(s,o){return\"function\"==typeof o?o(s):o}function Wh(s){var o=Uh(),i=o.queue;if(null===i)throw Error(p(311));i.lastRenderedReducer=s;var a=os,u=a.baseQueue,_=i.pending;if(null!==_){if(null!==u){var w=u.next;u.next=_.next,_.next=w}a.baseQueue=u=_,i.pending=null}if(null!==u){_=u.next,a=a.baseState;var x=w=null,C=null,j=_;do{var L=j.lane;if((ns&L)===L)null!==C&&(C=C.next={lane:0,action:j.action,hasEagerState:j.hasEagerState,eagerState:j.eagerState,next:null}),a=j.hasEagerState?j.eagerState:s(a,j.action);else{var B={lane:L,action:j.action,hasEagerState:j.hasEagerState,eagerState:j.eagerState,next:null};null===C?(x=C=B,w=a):C=C.next=B,ss.lanes|=L,Ws|=L}j=j.next}while(null!==j&&j!==_);null===C?w=a:C.next=x,Dr(a,o.memoizedState)||(bs=!0),o.memoizedState=a,o.baseState=w,o.baseQueue=C,i.lastRenderedState=a}if(null!==(s=i.interleaved)){u=s;do{_=u.lane,ss.lanes|=_,Ws|=_,u=u.next}while(u!==s)}else null===u&&(i.lanes=0);return[o.memoizedState,i.dispatch]}function Xh(s){var o=Uh(),i=o.queue;if(null===i)throw Error(p(311));i.lastRenderedReducer=s;var a=i.dispatch,u=i.pending,_=o.memoizedState;if(null!==u){i.pending=null;var w=u=u.next;do{_=s(_,w.action),w=w.next}while(w!==u);Dr(_,o.memoizedState)||(bs=!0),o.memoizedState=_,null===o.baseQueue&&(o.baseState=_),i.lastRenderedState=_}return[_,a]}function Yh(){}function Zh(s,o){var i=ss,a=Uh(),u=o(),_=!Dr(a.memoizedState,u);if(_&&(a.memoizedState=u,bs=!0),a=a.queue,$h(ai.bind(null,i,a,s),[s]),a.getSnapshot!==o||_||null!==as&&1&as.memoizedState.tag){if(i.flags|=2048,bi(9,ci.bind(null,i,a,u,o),void 0,null),null===Fs)throw Error(p(349));30&ns||di(i,o,u)}return u}function di(s,o,i){s.flags|=16384,s={getSnapshot:o,value:i},null===(o=ss.updateQueue)?(o={lastEffect:null,stores:null},ss.updateQueue=o,o.stores=[s]):null===(i=o.stores)?o.stores=[s]:i.push(s)}function ci(s,o,i,a){o.value=i,o.getSnapshot=a,ei(o)&&fi(s)}function ai(s,o,i){return i((function(){ei(o)&&fi(s)}))}function ei(s){var o=s.getSnapshot;s=s.value;try{var i=o();return!Dr(s,i)}catch(s){return!0}}function fi(s){var o=ih(s,1);null!==o&&gi(o,s,1,-1)}function hi(s){var o=Th();return\"function\"==typeof s&&(s=s()),o.memoizedState=o.baseState=s,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:s},o.queue=s,s=s.dispatch=ii.bind(null,ss,s),[o.memoizedState,s]}function bi(s,o,i,a){return s={tag:s,create:o,destroy:i,deps:a,next:null},null===(o=ss.updateQueue)?(o={lastEffect:null,stores:null},ss.updateQueue=o,o.lastEffect=s.next=s):null===(i=o.lastEffect)?o.lastEffect=s.next=s:(a=i.next,i.next=s,s.next=a,o.lastEffect=s),s}function ji(){return Uh().memoizedState}function ki(s,o,i,a){var u=Th();ss.flags|=s,u.memoizedState=bi(1|o,i,void 0,void 0===a?null:a)}function li(s,o,i,a){var u=Uh();a=void 0===a?null:a;var _=void 0;if(null!==os){var w=os.memoizedState;if(_=w.destroy,null!==a&&Mh(a,w.deps))return void(u.memoizedState=bi(o,i,_,a))}ss.flags|=s,u.memoizedState=bi(1|o,i,_,a)}function mi(s,o){return ki(8390656,8,s,o)}function $h(s,o){return li(2048,8,s,o)}function ni(s,o){return li(4,2,s,o)}function oi(s,o){return li(4,4,s,o)}function pi(s,o){return\"function\"==typeof o?(s=s(),o(s),function(){o(null)}):null!=o?(s=s(),o.current=s,function(){o.current=null}):void 0}function qi(s,o,i){return i=null!=i?i.concat([s]):null,li(4,4,pi.bind(null,o,s),i)}function ri(){}function si(s,o){var i=Uh();o=void 0===o?null:o;var a=i.memoizedState;return null!==a&&null!==o&&Mh(o,a[1])?a[0]:(i.memoizedState=[s,o],s)}function ti(s,o){var i=Uh();o=void 0===o?null:o;var a=i.memoizedState;return null!==a&&null!==o&&Mh(o,a[1])?a[0]:(s=s(),i.memoizedState=[s,o],s)}function ui(s,o,i){return 21&ns?(Dr(i,o)||(i=yc(),ss.lanes|=i,Ws|=i,s.baseState=!0),o):(s.baseState&&(s.baseState=!1,bs=!0),s.memoizedState=i)}function vi(s,o){var i=Ct;Ct=0!==i&&4>i?i:4,s(!0);var a=rs.transition;rs.transition={};try{s(!1),o()}finally{Ct=i,rs.transition=a}}function wi(){return Uh().memoizedState}function xi(s,o,i){var a=yi(s);if(i={lane:a,action:i,hasEagerState:!1,eagerState:null,next:null},zi(s))Ai(o,i);else if(null!==(i=hh(s,o,i,a))){gi(i,s,a,R()),Bi(i,o,a)}}function ii(s,o,i){var a=yi(s),u={lane:a,action:i,hasEagerState:!1,eagerState:null,next:null};if(zi(s))Ai(o,u);else{var _=s.alternate;if(0===s.lanes&&(null===_||0===_.lanes)&&null!==(_=o.lastRenderedReducer))try{var w=o.lastRenderedState,x=_(w,i);if(u.hasEagerState=!0,u.eagerState=x,Dr(x,w)){var C=o.interleaved;return null===C?(u.next=u,gh(o)):(u.next=C.next,C.next=u),void(o.interleaved=u)}}catch(s){}null!==(i=hh(s,o,u,a))&&(gi(i,s,a,u=R()),Bi(i,o,a))}}function zi(s){var o=s.alternate;return s===ss||null!==o&&o===ss}function Ai(s,o){ls=cs=!0;var i=s.pending;null===i?o.next=o:(o.next=i.next,i.next=o),s.pending=o}function Bi(s,o,i){if(4194240&i){var a=o.lanes;i|=a&=s.pendingLanes,o.lanes=i,Cc(s,i)}}var hs={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},ds={readContext:eh,useCallback:function(s,o){return Th().memoizedState=[s,void 0===o?null:o],s},useContext:eh,useEffect:mi,useImperativeHandle:function(s,o,i){return i=null!=i?i.concat([s]):null,ki(4194308,4,pi.bind(null,o,s),i)},useLayoutEffect:function(s,o){return ki(4194308,4,s,o)},useInsertionEffect:function(s,o){return ki(4,2,s,o)},useMemo:function(s,o){var i=Th();return o=void 0===o?null:o,s=s(),i.memoizedState=[s,o],s},useReducer:function(s,o,i){var a=Th();return o=void 0!==i?i(o):o,a.memoizedState=a.baseState=o,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:o},a.queue=s,s=s.dispatch=xi.bind(null,ss,s),[a.memoizedState,s]},useRef:function(s){return s={current:s},Th().memoizedState=s},useState:hi,useDebugValue:ri,useDeferredValue:function(s){return Th().memoizedState=s},useTransition:function(){var s=hi(!1),o=s[0];return s=vi.bind(null,s[1]),Th().memoizedState=s,[o,s]},useMutableSource:function(){},useSyncExternalStore:function(s,o,i){var a=ss,u=Th();if(Fn){if(void 0===i)throw Error(p(407));i=i()}else{if(i=o(),null===Fs)throw Error(p(349));30&ns||di(a,o,i)}u.memoizedState=i;var _={value:i,getSnapshot:o};return u.queue=_,mi(ai.bind(null,a,_,s),[s]),a.flags|=2048,bi(9,ci.bind(null,a,_,i,o),void 0,null),i},useId:function(){var s=Th(),o=Fs.identifierPrefix;if(Fn){var i=Rn;o=\":\"+o+\"R\"+(i=(Mn&~(1<<32-Et(Mn)-1)).toString(32)+i),0<(i=us++)&&(o+=\"H\"+i.toString(32)),o+=\":\"}else o=\":\"+o+\"r\"+(i=ps++).toString(32)+\":\";return s.memoizedState=o},unstable_isNewReconciler:!1},fs={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},useDebugValue:ri,useDeferredValue:function(s){return ui(Uh(),os.memoizedState,s)},useTransition:function(){return[Wh(Vh)[0],Uh().memoizedState]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},ms={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(s){var o=Uh();return null===os?o.memoizedState=s:ui(o,os.memoizedState,s)},useTransition:function(){return[Xh(Vh)[0],Uh().memoizedState]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(s,o){if(s&&s.defaultProps){for(var i in o=we({},o),s=s.defaultProps)void 0===o[i]&&(o[i]=s[i]);return o}return o}function Di(s,o,i,a){i=null==(i=i(a,o=s.memoizedState))?o:we({},o,i),s.memoizedState=i,0===s.lanes&&(s.updateQueue.baseState=i)}var gs={isMounted:function(s){return!!(s=s._reactInternals)&&Vb(s)===s},enqueueSetState:function(s,o,i){s=s._reactInternals;var a=R(),u=yi(s),_=mh(a,u);_.payload=o,null!=i&&(_.callback=i),null!==(o=nh(s,_,u))&&(gi(o,s,u,a),oh(o,s,u))},enqueueReplaceState:function(s,o,i){s=s._reactInternals;var a=R(),u=yi(s),_=mh(a,u);_.tag=1,_.payload=o,null!=i&&(_.callback=i),null!==(o=nh(s,_,u))&&(gi(o,s,u,a),oh(o,s,u))},enqueueForceUpdate:function(s,o){s=s._reactInternals;var i=R(),a=yi(s),u=mh(i,a);u.tag=2,null!=o&&(u.callback=o),null!==(o=nh(s,u,a))&&(gi(o,s,a,i),oh(o,s,a))}};function Fi(s,o,i,a,u,_,w){return\"function\"==typeof(s=s.stateNode).shouldComponentUpdate?s.shouldComponentUpdate(a,_,w):!o.prototype||!o.prototype.isPureReactComponent||(!Ie(i,a)||!Ie(u,_))}function Gi(s,o,i){var a=!1,u=_n,_=o.contextType;return\"object\"==typeof _&&null!==_?_=eh(_):(u=Zf(o)?wn:Sn.current,_=(a=null!=(a=o.contextTypes))?Yf(s,u):_n),o=new o(i,_),s.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=gs,s.stateNode=o,o._reactInternals=s,a&&((s=s.stateNode).__reactInternalMemoizedUnmaskedChildContext=u,s.__reactInternalMemoizedMaskedChildContext=_),o}function Hi(s,o,i,a){s=o.state,\"function\"==typeof o.componentWillReceiveProps&&o.componentWillReceiveProps(i,a),\"function\"==typeof o.UNSAFE_componentWillReceiveProps&&o.UNSAFE_componentWillReceiveProps(i,a),o.state!==s&&gs.enqueueReplaceState(o,o.state,null)}function Ii(s,o,i,a){var u=s.stateNode;u.props=i,u.state=s.memoizedState,u.refs={},kh(s);var _=o.contextType;\"object\"==typeof _&&null!==_?u.context=eh(_):(_=Zf(o)?wn:Sn.current,u.context=Yf(s,_)),u.state=s.memoizedState,\"function\"==typeof(_=o.getDerivedStateFromProps)&&(Di(s,o,_,i),u.state=s.memoizedState),\"function\"==typeof o.getDerivedStateFromProps||\"function\"==typeof u.getSnapshotBeforeUpdate||\"function\"!=typeof u.UNSAFE_componentWillMount&&\"function\"!=typeof u.componentWillMount||(o=u.state,\"function\"==typeof u.componentWillMount&&u.componentWillMount(),\"function\"==typeof u.UNSAFE_componentWillMount&&u.UNSAFE_componentWillMount(),o!==u.state&&gs.enqueueReplaceState(u,u.state,null),qh(s,i,u,a),u.state=s.memoizedState),\"function\"==typeof u.componentDidMount&&(s.flags|=4194308)}function Ji(s,o){try{var i=\"\",a=o;do{i+=Pa(a),a=a.return}while(a);var u=i}catch(s){u=\"\\nError generating stack: \"+s.message+\"\\n\"+s.stack}return{value:s,source:o,stack:u,digest:null}}function Ki(s,o,i){return{value:s,source:null,stack:null!=i?i:null,digest:null!=o?o:null}}function Li(s,o){try{console.error(o.value)}catch(s){setTimeout((function(){throw s}))}}var ys=\"function\"==typeof WeakMap?WeakMap:Map;function Ni(s,o,i){(i=mh(-1,i)).tag=3,i.payload={element:null};var a=o.value;return i.callback=function(){Zs||(Zs=!0,eo=a),Li(0,o)},i}function Qi(s,o,i){(i=mh(-1,i)).tag=3;var a=s.type.getDerivedStateFromError;if(\"function\"==typeof a){var u=o.value;i.payload=function(){return a(u)},i.callback=function(){Li(0,o)}}var _=s.stateNode;return null!==_&&\"function\"==typeof _.componentDidCatch&&(i.callback=function(){Li(0,o),\"function\"!=typeof a&&(null===to?to=new Set([this]):to.add(this));var s=o.stack;this.componentDidCatch(o.value,{componentStack:null!==s?s:\"\"})}),i}function Si(s,o,i){var a=s.pingCache;if(null===a){a=s.pingCache=new ys;var u=new Set;a.set(o,u)}else void 0===(u=a.get(o))&&(u=new Set,a.set(o,u));u.has(i)||(u.add(i),s=Ti.bind(null,s,o,i),o.then(s,s))}function Ui(s){do{var o;if((o=13===s.tag)&&(o=null===(o=s.memoizedState)||null!==o.dehydrated),o)return s;s=s.return}while(null!==s);return null}function Vi(s,o,i,a,u){return 1&s.mode?(s.flags|=65536,s.lanes=u,s):(s===o?s.flags|=65536:(s.flags|=128,i.flags|=131072,i.flags&=-52805,1===i.tag&&(null===i.alternate?i.tag=17:((o=mh(-1,1)).tag=2,nh(i,o,1))),i.lanes|=1),s)}var vs=U.ReactCurrentOwner,bs=!1;function Xi(s,o,i,a){o.child=null===s?Vn(o,null,i,a):qn(o,s.child,i,a)}function Yi(s,o,i,a,u){i=i.render;var _=o.ref;return ch(o,u),a=Nh(s,o,i,a,_,u),i=Sh(),null===s||bs?(Fn&&i&&vg(o),o.flags|=1,Xi(s,o,a,u),o.child):(o.updateQueue=s.updateQueue,o.flags&=-2053,s.lanes&=~u,Zi(s,o,u))}function $i(s,o,i,a,u){if(null===s){var _=i.type;return\"function\"!=typeof _||aj(_)||void 0!==_.defaultProps||null!==i.compare||void 0!==i.defaultProps?((s=Rg(i.type,null,a,o,o.mode,u)).ref=o.ref,s.return=o,o.child=s):(o.tag=15,o.type=_,bj(s,o,_,a,u))}if(_=s.child,!(s.lanes&u)){var w=_.memoizedProps;if((i=null!==(i=i.compare)?i:Ie)(w,a)&&s.ref===o.ref)return Zi(s,o,u)}return o.flags|=1,(s=Pg(_,a)).ref=o.ref,s.return=o,o.child=s}function bj(s,o,i,a,u){if(null!==s){var _=s.memoizedProps;if(Ie(_,a)&&s.ref===o.ref){if(bs=!1,o.pendingProps=a=_,!(s.lanes&u))return o.lanes=s.lanes,Zi(s,o,u);131072&s.flags&&(bs=!0)}}return cj(s,o,i,a,u)}function dj(s,o,i){var a=o.pendingProps,u=a.children,_=null!==s?s.memoizedState:null;if(\"hidden\"===a.mode)if(1&o.mode){if(!(1073741824&i))return s=null!==_?_.baseLanes|i:i,o.lanes=o.childLanes=1073741824,o.memoizedState={baseLanes:s,cachePool:null,transitions:null},o.updateQueue=null,G(Vs,qs),qs|=s,null;o.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=null!==_?_.baseLanes:i,G(Vs,qs),qs|=a}else o.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(Vs,qs),qs|=i;else null!==_?(a=_.baseLanes|i,o.memoizedState=null):a=i,G(Vs,qs),qs|=a;return Xi(s,o,u,i),o.child}function gj(s,o){var i=o.ref;(null===s&&null!==i||null!==s&&s.ref!==i)&&(o.flags|=512,o.flags|=2097152)}function cj(s,o,i,a,u){var _=Zf(i)?wn:Sn.current;return _=Yf(o,_),ch(o,u),i=Nh(s,o,i,a,_,u),a=Sh(),null===s||bs?(Fn&&a&&vg(o),o.flags|=1,Xi(s,o,i,u),o.child):(o.updateQueue=s.updateQueue,o.flags&=-2053,s.lanes&=~u,Zi(s,o,u))}function hj(s,o,i,a,u){if(Zf(i)){var _=!0;cg(o)}else _=!1;if(ch(o,u),null===o.stateNode)ij(s,o),Gi(o,i,a),Ii(o,i,a,u),a=!0;else if(null===s){var w=o.stateNode,x=o.memoizedProps;w.props=x;var C=w.context,j=i.contextType;\"object\"==typeof j&&null!==j?j=eh(j):j=Yf(o,j=Zf(i)?wn:Sn.current);var L=i.getDerivedStateFromProps,B=\"function\"==typeof L||\"function\"==typeof w.getSnapshotBeforeUpdate;B||\"function\"!=typeof w.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof w.componentWillReceiveProps||(x!==a||C!==j)&&Hi(o,w,a,j),Kn=!1;var $=o.memoizedState;w.state=$,qh(o,a,w,u),C=o.memoizedState,x!==a||$!==C||En.current||Kn?(\"function\"==typeof L&&(Di(o,i,L,a),C=o.memoizedState),(x=Kn||Fi(o,i,x,a,$,C,j))?(B||\"function\"!=typeof w.UNSAFE_componentWillMount&&\"function\"!=typeof w.componentWillMount||(\"function\"==typeof w.componentWillMount&&w.componentWillMount(),\"function\"==typeof w.UNSAFE_componentWillMount&&w.UNSAFE_componentWillMount()),\"function\"==typeof w.componentDidMount&&(o.flags|=4194308)):(\"function\"==typeof w.componentDidMount&&(o.flags|=4194308),o.memoizedProps=a,o.memoizedState=C),w.props=a,w.state=C,w.context=j,a=x):(\"function\"==typeof w.componentDidMount&&(o.flags|=4194308),a=!1)}else{w=o.stateNode,lh(s,o),x=o.memoizedProps,j=o.type===o.elementType?x:Ci(o.type,x),w.props=j,B=o.pendingProps,$=w.context,\"object\"==typeof(C=i.contextType)&&null!==C?C=eh(C):C=Yf(o,C=Zf(i)?wn:Sn.current);var V=i.getDerivedStateFromProps;(L=\"function\"==typeof V||\"function\"==typeof w.getSnapshotBeforeUpdate)||\"function\"!=typeof w.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof w.componentWillReceiveProps||(x!==B||$!==C)&&Hi(o,w,a,C),Kn=!1,$=o.memoizedState,w.state=$,qh(o,a,w,u);var U=o.memoizedState;x!==B||$!==U||En.current||Kn?(\"function\"==typeof V&&(Di(o,i,V,a),U=o.memoizedState),(j=Kn||Fi(o,i,j,a,$,U,C)||!1)?(L||\"function\"!=typeof w.UNSAFE_componentWillUpdate&&\"function\"!=typeof w.componentWillUpdate||(\"function\"==typeof w.componentWillUpdate&&w.componentWillUpdate(a,U,C),\"function\"==typeof w.UNSAFE_componentWillUpdate&&w.UNSAFE_componentWillUpdate(a,U,C)),\"function\"==typeof w.componentDidUpdate&&(o.flags|=4),\"function\"==typeof w.getSnapshotBeforeUpdate&&(o.flags|=1024)):(\"function\"!=typeof w.componentDidUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=4),\"function\"!=typeof w.getSnapshotBeforeUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=1024),o.memoizedProps=a,o.memoizedState=U),w.props=a,w.state=U,w.context=C,a=j):(\"function\"!=typeof w.componentDidUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=4),\"function\"!=typeof w.getSnapshotBeforeUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=1024),a=!1)}return jj(s,o,i,a,_,u)}function jj(s,o,i,a,u,_){gj(s,o);var w=!!(128&o.flags);if(!a&&!w)return u&&dg(o,i,!1),Zi(s,o,_);a=o.stateNode,vs.current=o;var x=w&&\"function\"!=typeof i.getDerivedStateFromError?null:a.render();return o.flags|=1,null!==s&&w?(o.child=qn(o,s.child,null,_),o.child=qn(o,null,x,_)):Xi(s,o,x,_),o.memoizedState=a.state,u&&dg(o,i,!0),o.child}function kj(s){var o=s.stateNode;o.pendingContext?ag(0,o.pendingContext,o.pendingContext!==o.context):o.context&&ag(0,o.context,!1),yh(s,o.containerInfo)}function lj(s,o,i,a,u){return Ig(),Jg(u),o.flags|=256,Xi(s,o,i,a),o.child}var _s,Ss,Es,ws,xs={dehydrated:null,treeContext:null,retryLane:0};function nj(s){return{baseLanes:s,cachePool:null,transitions:null}}function oj(s,o,i){var a,u=o.pendingProps,_=Zn.current,w=!1,x=!!(128&o.flags);if((a=x)||(a=(null===s||null!==s.memoizedState)&&!!(2&_)),a?(w=!0,o.flags&=-129):null!==s&&null===s.memoizedState||(_|=1),G(Zn,1&_),null===s)return Eg(o),null!==(s=o.memoizedState)&&null!==(s=s.dehydrated)?(1&o.mode?\"$!\"===s.data?o.lanes=8:o.lanes=1073741824:o.lanes=1,null):(x=u.children,s=u.fallback,w?(u=o.mode,w=o.child,x={mode:\"hidden\",children:x},1&u||null===w?w=pj(x,u,0,null):(w.childLanes=0,w.pendingProps=x),s=Tg(s,u,i,null),w.return=o,s.return=o,w.sibling=s,o.child=w,o.child.memoizedState=nj(i),o.memoizedState=xs,s):qj(o,x));if(null!==(_=s.memoizedState)&&null!==(a=_.dehydrated))return function rj(s,o,i,a,u,_,w){if(i)return 256&o.flags?(o.flags&=-257,sj(s,o,w,a=Ki(Error(p(422))))):null!==o.memoizedState?(o.child=s.child,o.flags|=128,null):(_=a.fallback,u=o.mode,a=pj({mode:\"visible\",children:a.children},u,0,null),(_=Tg(_,u,w,null)).flags|=2,a.return=o,_.return=o,a.sibling=_,o.child=a,1&o.mode&&qn(o,s.child,null,w),o.child.memoizedState=nj(w),o.memoizedState=xs,_);if(!(1&o.mode))return sj(s,o,w,null);if(\"$!\"===u.data){if(a=u.nextSibling&&u.nextSibling.dataset)var x=a.dgst;return a=x,sj(s,o,w,a=Ki(_=Error(p(419)),a,void 0))}if(x=!!(w&s.childLanes),bs||x){if(null!==(a=Fs)){switch(w&-w){case 4:u=2;break;case 16:u=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:u=32;break;case 536870912:u=268435456;break;default:u=0}0!==(u=u&(a.suspendedLanes|w)?0:u)&&u!==_.retryLane&&(_.retryLane=u,ih(s,u),gi(a,s,u,-1))}return tj(),sj(s,o,w,a=Ki(Error(p(421))))}return\"$?\"===u.data?(o.flags|=128,o.child=s.child,o=uj.bind(null,s),u._reactRetry=o,null):(s=_.treeContext,Ln=Lf(u.nextSibling),Dn=o,Fn=!0,Bn=null,null!==s&&(Pn[Tn++]=Mn,Pn[Tn++]=Rn,Pn[Tn++]=Nn,Mn=s.id,Rn=s.overflow,Nn=o),o=qj(o,a.children),o.flags|=4096,o)}(s,o,x,u,a,_,i);if(w){w=u.fallback,x=o.mode,a=(_=s.child).sibling;var C={mode:\"hidden\",children:u.children};return 1&x||o.child===_?(u=Pg(_,C)).subtreeFlags=14680064&_.subtreeFlags:((u=o.child).childLanes=0,u.pendingProps=C,o.deletions=null),null!==a?w=Pg(a,w):(w=Tg(w,x,i,null)).flags|=2,w.return=o,u.return=o,u.sibling=w,o.child=u,u=w,w=o.child,x=null===(x=s.child.memoizedState)?nj(i):{baseLanes:x.baseLanes|i,cachePool:null,transitions:x.transitions},w.memoizedState=x,w.childLanes=s.childLanes&~i,o.memoizedState=xs,u}return s=(w=s.child).sibling,u=Pg(w,{mode:\"visible\",children:u.children}),!(1&o.mode)&&(u.lanes=i),u.return=o,u.sibling=null,null!==s&&(null===(i=o.deletions)?(o.deletions=[s],o.flags|=16):i.push(s)),o.child=u,o.memoizedState=null,u}function qj(s,o){return(o=pj({mode:\"visible\",children:o},s.mode,0,null)).return=s,s.child=o}function sj(s,o,i,a){return null!==a&&Jg(a),qn(o,s.child,null,i),(s=qj(o,o.pendingProps.children)).flags|=2,o.memoizedState=null,s}function vj(s,o,i){s.lanes|=o;var a=s.alternate;null!==a&&(a.lanes|=o),bh(s.return,o,i)}function wj(s,o,i,a,u){var _=s.memoizedState;null===_?s.memoizedState={isBackwards:o,rendering:null,renderingStartTime:0,last:a,tail:i,tailMode:u}:(_.isBackwards=o,_.rendering=null,_.renderingStartTime=0,_.last=a,_.tail=i,_.tailMode=u)}function xj(s,o,i){var a=o.pendingProps,u=a.revealOrder,_=a.tail;if(Xi(s,o,a.children,i),2&(a=Zn.current))a=1&a|2,o.flags|=128;else{if(null!==s&&128&s.flags)e:for(s=o.child;null!==s;){if(13===s.tag)null!==s.memoizedState&&vj(s,i,o);else if(19===s.tag)vj(s,i,o);else if(null!==s.child){s.child.return=s,s=s.child;continue}if(s===o)break e;for(;null===s.sibling;){if(null===s.return||s.return===o)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}a&=1}if(G(Zn,a),1&o.mode)switch(u){case\"forwards\":for(i=o.child,u=null;null!==i;)null!==(s=i.alternate)&&null===Ch(s)&&(u=i),i=i.sibling;null===(i=u)?(u=o.child,o.child=null):(u=i.sibling,i.sibling=null),wj(o,!1,u,i,_);break;case\"backwards\":for(i=null,u=o.child,o.child=null;null!==u;){if(null!==(s=u.alternate)&&null===Ch(s)){o.child=u;break}s=u.sibling,u.sibling=i,i=u,u=s}wj(o,!0,i,null,_);break;case\"together\":wj(o,!1,null,null,void 0);break;default:o.memoizedState=null}else o.memoizedState=null;return o.child}function ij(s,o){!(1&o.mode)&&null!==s&&(s.alternate=null,o.alternate=null,o.flags|=2)}function Zi(s,o,i){if(null!==s&&(o.dependencies=s.dependencies),Ws|=o.lanes,!(i&o.childLanes))return null;if(null!==s&&o.child!==s.child)throw Error(p(153));if(null!==o.child){for(i=Pg(s=o.child,s.pendingProps),o.child=i,i.return=o;null!==s.sibling;)s=s.sibling,(i=i.sibling=Pg(s,s.pendingProps)).return=o;i.sibling=null}return o.child}function Dj(s,o){if(!Fn)switch(s.tailMode){case\"hidden\":o=s.tail;for(var i=null;null!==o;)null!==o.alternate&&(i=o),o=o.sibling;null===i?s.tail=null:i.sibling=null;break;case\"collapsed\":i=s.tail;for(var a=null;null!==i;)null!==i.alternate&&(a=i),i=i.sibling;null===a?o||null===s.tail?s.tail=null:s.tail.sibling=null:a.sibling=null}}function S(s){var o=null!==s.alternate&&s.alternate.child===s.child,i=0,a=0;if(o)for(var u=s.child;null!==u;)i|=u.lanes|u.childLanes,a|=14680064&u.subtreeFlags,a|=14680064&u.flags,u.return=s,u=u.sibling;else for(u=s.child;null!==u;)i|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=s,u=u.sibling;return s.subtreeFlags|=a,s.childLanes=i,o}function Ej(s,o,i){var a=o.pendingProps;switch(wg(o),o.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(o),null;case 1:case 17:return Zf(o.type)&&$f(),S(o),null;case 3:return a=o.stateNode,zh(),E(En),E(Sn),Eh(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),null!==s&&null!==s.child||(Gg(o)?o.flags|=4:null===s||s.memoizedState.isDehydrated&&!(256&o.flags)||(o.flags|=1024,null!==Bn&&(Fj(Bn),Bn=null))),Ss(s,o),S(o),null;case 5:Bh(o);var u=xh(Qn.current);if(i=o.type,null!==s&&null!=o.stateNode)Es(s,o,i,a,u),s.ref!==o.ref&&(o.flags|=512,o.flags|=2097152);else{if(!a){if(null===o.stateNode)throw Error(p(166));return S(o),null}if(s=xh(Yn.current),Gg(o)){a=o.stateNode,i=o.type;var _=o.memoizedProps;switch(a[hn]=o,a[dn]=_,s=!!(1&o.mode),i){case\"dialog\":D(\"cancel\",a),D(\"close\",a);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);break;case\"video\":case\"audio\":for(u=0;u<Zr.length;u++)D(Zr[u],a);break;case\"source\":D(\"error\",a);break;case\"img\":case\"image\":case\"link\":D(\"error\",a),D(\"load\",a);break;case\"details\":D(\"toggle\",a);break;case\"input\":Za(a,_),D(\"invalid\",a);break;case\"select\":a._wrapperState={wasMultiple:!!_.multiple},D(\"invalid\",a);break;case\"textarea\":hb(a,_),D(\"invalid\",a)}for(var x in ub(i,_),u=null,_)if(_.hasOwnProperty(x)){var C=_[x];\"children\"===x?\"string\"==typeof C?a.textContent!==C&&(!0!==_.suppressHydrationWarning&&Af(a.textContent,C,s),u=[\"children\",C]):\"number\"==typeof C&&a.textContent!==\"\"+C&&(!0!==_.suppressHydrationWarning&&Af(a.textContent,C,s),u=[\"children\",\"\"+C]):w.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",a)}switch(i){case\"input\":Va(a),db(a,_,!0);break;case\"textarea\":Va(a),jb(a);break;case\"select\":case\"option\":break;default:\"function\"==typeof _.onClick&&(a.onclick=Bf)}a=u,o.updateQueue=a,null!==a&&(o.flags|=4)}else{x=9===u.nodeType?u:u.ownerDocument,\"http://www.w3.org/1999/xhtml\"===s&&(s=kb(i)),\"http://www.w3.org/1999/xhtml\"===s?\"script\"===i?((s=x.createElement(\"div\")).innerHTML=\"<script><\\/script>\",s=s.removeChild(s.firstChild)):\"string\"==typeof a.is?s=x.createElement(i,{is:a.is}):(s=x.createElement(i),\"select\"===i&&(x=s,a.multiple?x.multiple=!0:a.size&&(x.size=a.size))):s=x.createElementNS(s,i),s[hn]=o,s[dn]=a,_s(s,o,!1,!1),o.stateNode=s;e:{switch(x=vb(i,a),i){case\"dialog\":D(\"cancel\",s),D(\"close\",s),u=a;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",s),u=a;break;case\"video\":case\"audio\":for(u=0;u<Zr.length;u++)D(Zr[u],s);u=a;break;case\"source\":D(\"error\",s),u=a;break;case\"img\":case\"image\":case\"link\":D(\"error\",s),D(\"load\",s),u=a;break;case\"details\":D(\"toggle\",s),u=a;break;case\"input\":Za(s,a),u=Ya(s,a),D(\"invalid\",s);break;case\"option\":default:u=a;break;case\"select\":s._wrapperState={wasMultiple:!!a.multiple},u=we({},a,{value:void 0}),D(\"invalid\",s);break;case\"textarea\":hb(s,a),u=gb(s,a),D(\"invalid\",s)}for(_ in ub(i,u),C=u)if(C.hasOwnProperty(_)){var j=C[_];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?null!=(j=j?j.__html:void 0)&&$e(s,j):\"children\"===_?\"string\"==typeof j?(\"textarea\"!==i||\"\"!==j)&&ob(s,j):\"number\"==typeof j&&ob(s,\"\"+j):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(w.hasOwnProperty(_)?null!=j&&\"onScroll\"===_&&D(\"scroll\",s):null!=j&&ta(s,_,j,x))}switch(i){case\"input\":Va(s),db(s,a,!1);break;case\"textarea\":Va(s),jb(s);break;case\"option\":null!=a.value&&s.setAttribute(\"value\",\"\"+Sa(a.value));break;case\"select\":s.multiple=!!a.multiple,null!=(_=a.value)?fb(s,!!a.multiple,_,!1):null!=a.defaultValue&&fb(s,!!a.multiple,a.defaultValue,!0);break;default:\"function\"==typeof u.onClick&&(s.onclick=Bf)}switch(i){case\"button\":case\"input\":case\"select\":case\"textarea\":a=!!a.autoFocus;break e;case\"img\":a=!0;break e;default:a=!1}}a&&(o.flags|=4)}null!==o.ref&&(o.flags|=512,o.flags|=2097152)}return S(o),null;case 6:if(s&&null!=o.stateNode)ws(s,o,s.memoizedProps,a);else{if(\"string\"!=typeof a&&null===o.stateNode)throw Error(p(166));if(i=xh(Qn.current),xh(Yn.current),Gg(o)){if(a=o.stateNode,i=o.memoizedProps,a[hn]=o,(_=a.nodeValue!==i)&&null!==(s=Dn))switch(s.tag){case 3:Af(a.nodeValue,i,!!(1&s.mode));break;case 5:!0!==s.memoizedProps.suppressHydrationWarning&&Af(a.nodeValue,i,!!(1&s.mode))}_&&(o.flags|=4)}else(a=(9===i.nodeType?i:i.ownerDocument).createTextNode(a))[hn]=o,o.stateNode=a}return S(o),null;case 13:if(E(Zn),a=o.memoizedState,null===s||null!==s.memoizedState&&null!==s.memoizedState.dehydrated){if(Fn&&null!==Ln&&1&o.mode&&!(128&o.flags))Hg(),Ig(),o.flags|=98560,_=!1;else if(_=Gg(o),null!==a&&null!==a.dehydrated){if(null===s){if(!_)throw Error(p(318));if(!(_=null!==(_=o.memoizedState)?_.dehydrated:null))throw Error(p(317));_[hn]=o}else Ig(),!(128&o.flags)&&(o.memoizedState=null),o.flags|=4;S(o),_=!1}else null!==Bn&&(Fj(Bn),Bn=null),_=!0;if(!_)return 65536&o.flags?o:null}return 128&o.flags?(o.lanes=i,o):((a=null!==a)!==(null!==s&&null!==s.memoizedState)&&a&&(o.child.flags|=8192,1&o.mode&&(null===s||1&Zn.current?0===Us&&(Us=3):tj())),null!==o.updateQueue&&(o.flags|=4),S(o),null);case 4:return zh(),Ss(s,o),null===s&&sf(o.stateNode.containerInfo),S(o),null;case 10:return ah(o.type._context),S(o),null;case 19:if(E(Zn),null===(_=o.memoizedState))return S(o),null;if(a=!!(128&o.flags),null===(x=_.rendering))if(a)Dj(_,!1);else{if(0!==Us||null!==s&&128&s.flags)for(s=o.child;null!==s;){if(null!==(x=Ch(s))){for(o.flags|=128,Dj(_,!1),null!==(a=x.updateQueue)&&(o.updateQueue=a,o.flags|=4),o.subtreeFlags=0,a=i,i=o.child;null!==i;)s=a,(_=i).flags&=14680066,null===(x=_.alternate)?(_.childLanes=0,_.lanes=s,_.child=null,_.subtreeFlags=0,_.memoizedProps=null,_.memoizedState=null,_.updateQueue=null,_.dependencies=null,_.stateNode=null):(_.childLanes=x.childLanes,_.lanes=x.lanes,_.child=x.child,_.subtreeFlags=0,_.deletions=null,_.memoizedProps=x.memoizedProps,_.memoizedState=x.memoizedState,_.updateQueue=x.updateQueue,_.type=x.type,s=x.dependencies,_.dependencies=null===s?null:{lanes:s.lanes,firstContext:s.firstContext}),i=i.sibling;return G(Zn,1&Zn.current|2),o.child}s=s.sibling}null!==_.tail&&ht()>Xs&&(o.flags|=128,a=!0,Dj(_,!1),o.lanes=4194304)}else{if(!a)if(null!==(s=Ch(x))){if(o.flags|=128,a=!0,null!==(i=s.updateQueue)&&(o.updateQueue=i,o.flags|=4),Dj(_,!0),null===_.tail&&\"hidden\"===_.tailMode&&!x.alternate&&!Fn)return S(o),null}else 2*ht()-_.renderingStartTime>Xs&&1073741824!==i&&(o.flags|=128,a=!0,Dj(_,!1),o.lanes=4194304);_.isBackwards?(x.sibling=o.child,o.child=x):(null!==(i=_.last)?i.sibling=x:o.child=x,_.last=x)}return null!==_.tail?(o=_.tail,_.rendering=o,_.tail=o.sibling,_.renderingStartTime=ht(),o.sibling=null,i=Zn.current,G(Zn,a?1&i|2:1&i),o):(S(o),null);case 22:case 23:return Hj(),a=null!==o.memoizedState,null!==s&&null!==s.memoizedState!==a&&(o.flags|=8192),a&&1&o.mode?!!(1073741824&qs)&&(S(o),6&o.subtreeFlags&&(o.flags|=8192)):S(o),null;case 24:case 25:return null}throw Error(p(156,o.tag))}function Ij(s,o){switch(wg(o),o.tag){case 1:return Zf(o.type)&&$f(),65536&(s=o.flags)?(o.flags=-65537&s|128,o):null;case 3:return zh(),E(En),E(Sn),Eh(),65536&(s=o.flags)&&!(128&s)?(o.flags=-65537&s|128,o):null;case 5:return Bh(o),null;case 13:if(E(Zn),null!==(s=o.memoizedState)&&null!==s.dehydrated){if(null===o.alternate)throw Error(p(340));Ig()}return 65536&(s=o.flags)?(o.flags=-65537&s|128,o):null;case 19:return E(Zn),null;case 4:return zh(),null;case 10:return ah(o.type._context),null;case 22:case 23:return Hj(),null;default:return null}}_s=function(s,o){for(var i=o.child;null!==i;){if(5===i.tag||6===i.tag)s.appendChild(i.stateNode);else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===o)break;for(;null===i.sibling;){if(null===i.return||i.return===o)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},Ss=function(){},Es=function(s,o,i,a){var u=s.memoizedProps;if(u!==a){s=o.stateNode,xh(Yn.current);var _,x=null;switch(i){case\"input\":u=Ya(s,u),a=Ya(s,a),x=[];break;case\"select\":u=we({},u,{value:void 0}),a=we({},a,{value:void 0}),x=[];break;case\"textarea\":u=gb(s,u),a=gb(s,a),x=[];break;default:\"function\"!=typeof u.onClick&&\"function\"==typeof a.onClick&&(s.onclick=Bf)}for(L in ub(i,a),i=null,u)if(!a.hasOwnProperty(L)&&u.hasOwnProperty(L)&&null!=u[L])if(\"style\"===L){var C=u[L];for(_ in C)C.hasOwnProperty(_)&&(i||(i={}),i[_]=\"\")}else\"dangerouslySetInnerHTML\"!==L&&\"children\"!==L&&\"suppressContentEditableWarning\"!==L&&\"suppressHydrationWarning\"!==L&&\"autoFocus\"!==L&&(w.hasOwnProperty(L)?x||(x=[]):(x=x||[]).push(L,null));for(L in a){var j=a[L];if(C=null!=u?u[L]:void 0,a.hasOwnProperty(L)&&j!==C&&(null!=j||null!=C))if(\"style\"===L)if(C){for(_ in C)!C.hasOwnProperty(_)||j&&j.hasOwnProperty(_)||(i||(i={}),i[_]=\"\");for(_ in j)j.hasOwnProperty(_)&&C[_]!==j[_]&&(i||(i={}),i[_]=j[_])}else i||(x||(x=[]),x.push(L,i)),i=j;else\"dangerouslySetInnerHTML\"===L?(j=j?j.__html:void 0,C=C?C.__html:void 0,null!=j&&C!==j&&(x=x||[]).push(L,j)):\"children\"===L?\"string\"!=typeof j&&\"number\"!=typeof j||(x=x||[]).push(L,\"\"+j):\"suppressContentEditableWarning\"!==L&&\"suppressHydrationWarning\"!==L&&(w.hasOwnProperty(L)?(null!=j&&\"onScroll\"===L&&D(\"scroll\",s),x||C===j||(x=[])):(x=x||[]).push(L,j))}i&&(x=x||[]).push(\"style\",i);var L=x;(o.updateQueue=L)&&(o.flags|=4)}},ws=function(s,o,i,a){i!==a&&(o.flags|=4)};var ks=!1,Os=!1,Cs=\"function\"==typeof WeakSet?WeakSet:Set,As=null;function Lj(s,o){var i=s.ref;if(null!==i)if(\"function\"==typeof i)try{i(null)}catch(i){W(s,o,i)}else i.current=null}function Mj(s,o,i){try{i()}catch(i){W(s,o,i)}}var js=!1;function Pj(s,o,i){var a=o.updateQueue;if(null!==(a=null!==a?a.lastEffect:null)){var u=a=a.next;do{if((u.tag&s)===s){var _=u.destroy;u.destroy=void 0,void 0!==_&&Mj(o,i,_)}u=u.next}while(u!==a)}}function Qj(s,o){if(null!==(o=null!==(o=o.updateQueue)?o.lastEffect:null)){var i=o=o.next;do{if((i.tag&s)===s){var a=i.create;i.destroy=a()}i=i.next}while(i!==o)}}function Rj(s){var o=s.ref;if(null!==o){var i=s.stateNode;s.tag,s=i,\"function\"==typeof o?o(s):o.current=s}}function Sj(s){var o=s.alternate;null!==o&&(s.alternate=null,Sj(o)),s.child=null,s.deletions=null,s.sibling=null,5===s.tag&&(null!==(o=s.stateNode)&&(delete o[hn],delete o[dn],delete o[mn],delete o[gn],delete o[yn])),s.stateNode=null,s.return=null,s.dependencies=null,s.memoizedProps=null,s.memoizedState=null,s.pendingProps=null,s.stateNode=null,s.updateQueue=null}function Tj(s){return 5===s.tag||3===s.tag||4===s.tag}function Uj(s){e:for(;;){for(;null===s.sibling;){if(null===s.return||Tj(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;5!==s.tag&&6!==s.tag&&18!==s.tag;){if(2&s.flags)continue e;if(null===s.child||4===s.tag)continue e;s.child.return=s,s=s.child}if(!(2&s.flags))return s.stateNode}}function Vj(s,o,i){var a=s.tag;if(5===a||6===a)s=s.stateNode,o?8===i.nodeType?i.parentNode.insertBefore(s,o):i.insertBefore(s,o):(8===i.nodeType?(o=i.parentNode).insertBefore(s,i):(o=i).appendChild(s),null!=(i=i._reactRootContainer)||null!==o.onclick||(o.onclick=Bf));else if(4!==a&&null!==(s=s.child))for(Vj(s,o,i),s=s.sibling;null!==s;)Vj(s,o,i),s=s.sibling}function Wj(s,o,i){var a=s.tag;if(5===a||6===a)s=s.stateNode,o?i.insertBefore(s,o):i.appendChild(s);else if(4!==a&&null!==(s=s.child))for(Wj(s,o,i),s=s.sibling;null!==s;)Wj(s,o,i),s=s.sibling}var Is=null,Ps=!1;function Yj(s,o,i){for(i=i.child;null!==i;)Zj(s,o,i),i=i.sibling}function Zj(s,o,i){if(St&&\"function\"==typeof St.onCommitFiberUnmount)try{St.onCommitFiberUnmount(_t,i)}catch(s){}switch(i.tag){case 5:Os||Lj(i,o);case 6:var a=Is,u=Ps;Is=null,Yj(s,o,i),Ps=u,null!==(Is=a)&&(Ps?(s=Is,i=i.stateNode,8===s.nodeType?s.parentNode.removeChild(i):s.removeChild(i)):Is.removeChild(i.stateNode));break;case 18:null!==Is&&(Ps?(s=Is,i=i.stateNode,8===s.nodeType?Kf(s.parentNode,i):1===s.nodeType&&Kf(s,i),bd(s)):Kf(Is,i.stateNode));break;case 4:a=Is,u=Ps,Is=i.stateNode.containerInfo,Ps=!0,Yj(s,o,i),Is=a,Ps=u;break;case 0:case 11:case 14:case 15:if(!Os&&(null!==(a=i.updateQueue)&&null!==(a=a.lastEffect))){u=a=a.next;do{var _=u,w=_.destroy;_=_.tag,void 0!==w&&(2&_||4&_)&&Mj(i,o,w),u=u.next}while(u!==a)}Yj(s,o,i);break;case 1:if(!Os&&(Lj(i,o),\"function\"==typeof(a=i.stateNode).componentWillUnmount))try{a.props=i.memoizedProps,a.state=i.memoizedState,a.componentWillUnmount()}catch(s){W(i,o,s)}Yj(s,o,i);break;case 21:Yj(s,o,i);break;case 22:1&i.mode?(Os=(a=Os)||null!==i.memoizedState,Yj(s,o,i),Os=a):Yj(s,o,i);break;default:Yj(s,o,i)}}function ak(s){var o=s.updateQueue;if(null!==o){s.updateQueue=null;var i=s.stateNode;null===i&&(i=s.stateNode=new Cs),o.forEach((function(o){var a=bk.bind(null,s,o);i.has(o)||(i.add(o),o.then(a,a))}))}}function ck(s,o){var i=o.deletions;if(null!==i)for(var a=0;a<i.length;a++){var u=i[a];try{var _=s,w=o,x=w;e:for(;null!==x;){switch(x.tag){case 5:Is=x.stateNode,Ps=!1;break e;case 3:case 4:Is=x.stateNode.containerInfo,Ps=!0;break e}x=x.return}if(null===Is)throw Error(p(160));Zj(_,w,u),Is=null,Ps=!1;var C=u.alternate;null!==C&&(C.return=null),u.return=null}catch(s){W(u,o,s)}}if(12854&o.subtreeFlags)for(o=o.child;null!==o;)dk(o,s),o=o.sibling}function dk(s,o){var i=s.alternate,a=s.flags;switch(s.tag){case 0:case 11:case 14:case 15:if(ck(o,s),ek(s),4&a){try{Pj(3,s,s.return),Qj(3,s)}catch(o){W(s,s.return,o)}try{Pj(5,s,s.return)}catch(o){W(s,s.return,o)}}break;case 1:ck(o,s),ek(s),512&a&&null!==i&&Lj(i,i.return);break;case 5:if(ck(o,s),ek(s),512&a&&null!==i&&Lj(i,i.return),32&s.flags){var u=s.stateNode;try{ob(u,\"\")}catch(o){W(s,s.return,o)}}if(4&a&&null!=(u=s.stateNode)){var _=s.memoizedProps,w=null!==i?i.memoizedProps:_,x=s.type,C=s.updateQueue;if(s.updateQueue=null,null!==C)try{\"input\"===x&&\"radio\"===_.type&&null!=_.name&&ab(u,_),vb(x,w);var j=vb(x,_);for(w=0;w<C.length;w+=2){var L=C[w],B=C[w+1];\"style\"===L?sb(u,B):\"dangerouslySetInnerHTML\"===L?$e(u,B):\"children\"===L?ob(u,B):ta(u,L,B,j)}switch(x){case\"input\":bb(u,_);break;case\"textarea\":ib(u,_);break;case\"select\":var $=u._wrapperState.wasMultiple;u._wrapperState.wasMultiple=!!_.multiple;var V=_.value;null!=V?fb(u,!!_.multiple,V,!1):$!==!!_.multiple&&(null!=_.defaultValue?fb(u,!!_.multiple,_.defaultValue,!0):fb(u,!!_.multiple,_.multiple?[]:\"\",!1))}u[dn]=_}catch(o){W(s,s.return,o)}}break;case 6:if(ck(o,s),ek(s),4&a){if(null===s.stateNode)throw Error(p(162));u=s.stateNode,_=s.memoizedProps;try{u.nodeValue=_}catch(o){W(s,s.return,o)}}break;case 3:if(ck(o,s),ek(s),4&a&&null!==i&&i.memoizedState.isDehydrated)try{bd(o.containerInfo)}catch(o){W(s,s.return,o)}break;case 4:default:ck(o,s),ek(s);break;case 13:ck(o,s),ek(s),8192&(u=s.child).flags&&(_=null!==u.memoizedState,u.stateNode.isHidden=_,!_||null!==u.alternate&&null!==u.alternate.memoizedState||(Ys=ht())),4&a&&ak(s);break;case 22:if(L=null!==i&&null!==i.memoizedState,1&s.mode?(Os=(j=Os)||L,ck(o,s),Os=j):ck(o,s),ek(s),8192&a){if(j=null!==s.memoizedState,(s.stateNode.isHidden=j)&&!L&&1&s.mode)for(As=s,L=s.child;null!==L;){for(B=As=L;null!==As;){switch(V=($=As).child,$.tag){case 0:case 11:case 14:case 15:Pj(4,$,$.return);break;case 1:Lj($,$.return);var U=$.stateNode;if(\"function\"==typeof U.componentWillUnmount){a=$,i=$.return;try{o=a,U.props=o.memoizedProps,U.state=o.memoizedState,U.componentWillUnmount()}catch(s){W(a,i,s)}}break;case 5:Lj($,$.return);break;case 22:if(null!==$.memoizedState){gk(B);continue}}null!==V?(V.return=$,As=V):gk(B)}L=L.sibling}e:for(L=null,B=s;;){if(5===B.tag){if(null===L){L=B;try{u=B.stateNode,j?\"function\"==typeof(_=u.style).setProperty?_.setProperty(\"display\",\"none\",\"important\"):_.display=\"none\":(x=B.stateNode,w=null!=(C=B.memoizedProps.style)&&C.hasOwnProperty(\"display\")?C.display:null,x.style.display=rb(\"display\",w))}catch(o){W(s,s.return,o)}}}else if(6===B.tag){if(null===L)try{B.stateNode.nodeValue=j?\"\":B.memoizedProps}catch(o){W(s,s.return,o)}}else if((22!==B.tag&&23!==B.tag||null===B.memoizedState||B===s)&&null!==B.child){B.child.return=B,B=B.child;continue}if(B===s)break e;for(;null===B.sibling;){if(null===B.return||B.return===s)break e;L===B&&(L=null),B=B.return}L===B&&(L=null),B.sibling.return=B.return,B=B.sibling}}break;case 19:ck(o,s),ek(s),4&a&&ak(s);case 21:}}function ek(s){var o=s.flags;if(2&o){try{e:{for(var i=s.return;null!==i;){if(Tj(i)){var a=i;break e}i=i.return}throw Error(p(160))}switch(a.tag){case 5:var u=a.stateNode;32&a.flags&&(ob(u,\"\"),a.flags&=-33),Wj(s,Uj(s),u);break;case 3:case 4:var _=a.stateNode.containerInfo;Vj(s,Uj(s),_);break;default:throw Error(p(161))}}catch(o){W(s,s.return,o)}s.flags&=-3}4096&o&&(s.flags&=-4097)}function hk(s,o,i){As=s,ik(s,o,i)}function ik(s,o,i){for(var a=!!(1&s.mode);null!==As;){var u=As,_=u.child;if(22===u.tag&&a){var w=null!==u.memoizedState||ks;if(!w){var x=u.alternate,C=null!==x&&null!==x.memoizedState||Os;x=ks;var j=Os;if(ks=w,(Os=C)&&!j)for(As=u;null!==As;)C=(w=As).child,22===w.tag&&null!==w.memoizedState?jk(u):null!==C?(C.return=w,As=C):jk(u);for(;null!==_;)As=_,ik(_,o,i),_=_.sibling;As=u,ks=x,Os=j}kk(s)}else 8772&u.subtreeFlags&&null!==_?(_.return=u,As=_):kk(s)}}function kk(s){for(;null!==As;){var o=As;if(8772&o.flags){var i=o.alternate;try{if(8772&o.flags)switch(o.tag){case 0:case 11:case 15:Os||Qj(5,o);break;case 1:var a=o.stateNode;if(4&o.flags&&!Os)if(null===i)a.componentDidMount();else{var u=o.elementType===o.type?i.memoizedProps:Ci(o.type,i.memoizedProps);a.componentDidUpdate(u,i.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var _=o.updateQueue;null!==_&&sh(o,_,a);break;case 3:var w=o.updateQueue;if(null!==w){if(i=null,null!==o.child)switch(o.child.tag){case 5:case 1:i=o.child.stateNode}sh(o,w,i)}break;case 5:var x=o.stateNode;if(null===i&&4&o.flags){i=x;var C=o.memoizedProps;switch(o.type){case\"button\":case\"input\":case\"select\":case\"textarea\":C.autoFocus&&i.focus();break;case\"img\":C.src&&(i.src=C.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===o.memoizedState){var j=o.alternate;if(null!==j){var L=j.memoizedState;if(null!==L){var B=L.dehydrated;null!==B&&bd(B)}}}break;default:throw Error(p(163))}Os||512&o.flags&&Rj(o)}catch(s){W(o,o.return,s)}}if(o===s){As=null;break}if(null!==(i=o.sibling)){i.return=o.return,As=i;break}As=o.return}}function gk(s){for(;null!==As;){var o=As;if(o===s){As=null;break}var i=o.sibling;if(null!==i){i.return=o.return,As=i;break}As=o.return}}function jk(s){for(;null!==As;){var o=As;try{switch(o.tag){case 0:case 11:case 15:var i=o.return;try{Qj(4,o)}catch(s){W(o,i,s)}break;case 1:var a=o.stateNode;if(\"function\"==typeof a.componentDidMount){var u=o.return;try{a.componentDidMount()}catch(s){W(o,u,s)}}var _=o.return;try{Rj(o)}catch(s){W(o,_,s)}break;case 5:var w=o.return;try{Rj(o)}catch(s){W(o,w,s)}}}catch(s){W(o,o.return,s)}if(o===s){As=null;break}var x=o.sibling;if(null!==x){x.return=o.return,As=x;break}As=o.return}}var Ts,Ns=Math.ceil,Ms=U.ReactCurrentDispatcher,Rs=U.ReactCurrentOwner,Ds=U.ReactCurrentBatchConfig,Ls=0,Fs=null,Bs=null,$s=0,qs=0,Vs=Uf(0),Us=0,zs=null,Ws=0,Js=0,Hs=0,Ks=null,Gs=null,Ys=0,Xs=1/0,Qs=null,Zs=!1,eo=null,to=null,ro=!1,no=null,so=0,oo=0,io=null,ao=-1,co=0;function R(){return 6&Ls?ht():-1!==ao?ao:ao=ht()}function yi(s){return 1&s.mode?2&Ls&&0!==$s?$s&-$s:null!==$n.transition?(0===co&&(co=yc()),co):0!==(s=Ct)?s:s=void 0===(s=window.event)?16:jd(s.type):1}function gi(s,o,i,a){if(50<oo)throw oo=0,io=null,Error(p(185));Ac(s,i,a),2&Ls&&s===Fs||(s===Fs&&(!(2&Ls)&&(Js|=i),4===Us&&Ck(s,$s)),Dk(s,a),1===i&&0===Ls&&!(1&o.mode)&&(Xs=ht()+500,kn&&jg()))}function Dk(s,o){var i=s.callbackNode;!function wc(s,o){for(var i=s.suspendedLanes,a=s.pingedLanes,u=s.expirationTimes,_=s.pendingLanes;0<_;){var w=31-Et(_),x=1<<w,C=u[w];-1===C?x&i&&!(x&a)||(u[w]=vc(x,o)):C<=o&&(s.expiredLanes|=x),_&=~x}}(s,o);var a=uc(s,s===Fs?$s:0);if(0===a)null!==i&&lt(i),s.callbackNode=null,s.callbackPriority=0;else if(o=a&-a,s.callbackPriority!==o){if(null!=i&&lt(i),1===o)0===s.tag?function ig(s){kn=!0,hg(s)}(Ek.bind(null,s)):hg(Ek.bind(null,s)),un((function(){!(6&Ls)&&jg()})),i=null;else{switch(Dc(a)){case 1:i=mt;break;case 4:i=gt;break;case 16:default:i=yt;break;case 536870912:i=bt}i=Fk(i,Gk.bind(null,s))}s.callbackPriority=o,s.callbackNode=i}}function Gk(s,o){if(ao=-1,co=0,6&Ls)throw Error(p(327));var i=s.callbackNode;if(Hk()&&s.callbackNode!==i)return null;var a=uc(s,s===Fs?$s:0);if(0===a)return null;if(30&a||a&s.expiredLanes||o)o=Ik(s,a);else{o=a;var u=Ls;Ls|=2;var _=Jk();for(Fs===s&&$s===o||(Qs=null,Xs=ht()+500,Kk(s,o));;)try{Lk();break}catch(o){Mk(s,o)}$g(),Ms.current=_,Ls=u,null!==Bs?o=0:(Fs=null,$s=0,o=Us)}if(0!==o){if(2===o&&(0!==(u=xc(s))&&(a=u,o=Nk(s,u))),1===o)throw i=zs,Kk(s,0),Ck(s,a),Dk(s,ht()),i;if(6===o)Ck(s,a);else{if(u=s.current.alternate,!(30&a||function Ok(s){for(var o=s;;){if(16384&o.flags){var i=o.updateQueue;if(null!==i&&null!==(i=i.stores))for(var a=0;a<i.length;a++){var u=i[a],_=u.getSnapshot;u=u.value;try{if(!Dr(_(),u))return!1}catch(s){return!1}}}if(i=o.child,16384&o.subtreeFlags&&null!==i)i.return=o,o=i;else{if(o===s)break;for(;null===o.sibling;){if(null===o.return||o.return===s)return!0;o=o.return}o.sibling.return=o.return,o=o.sibling}}return!0}(u)||(o=Ik(s,a),2===o&&(_=xc(s),0!==_&&(a=_,o=Nk(s,_))),1!==o)))throw i=zs,Kk(s,0),Ck(s,a),Dk(s,ht()),i;switch(s.finishedWork=u,s.finishedLanes=a,o){case 0:case 1:throw Error(p(345));case 2:case 5:Pk(s,Gs,Qs);break;case 3:if(Ck(s,a),(130023424&a)===a&&10<(o=Ys+500-ht())){if(0!==uc(s,0))break;if(((u=s.suspendedLanes)&a)!==a){R(),s.pingedLanes|=s.suspendedLanes&u;break}s.timeoutHandle=an(Pk.bind(null,s,Gs,Qs),o);break}Pk(s,Gs,Qs);break;case 4:if(Ck(s,a),(4194240&a)===a)break;for(o=s.eventTimes,u=-1;0<a;){var w=31-Et(a);_=1<<w,(w=o[w])>u&&(u=w),a&=~_}if(a=u,10<(a=(120>(a=ht()-a)?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*Ns(a/1960))-a)){s.timeoutHandle=an(Pk.bind(null,s,Gs,Qs),a);break}Pk(s,Gs,Qs);break;default:throw Error(p(329))}}}return Dk(s,ht()),s.callbackNode===i?Gk.bind(null,s):null}function Nk(s,o){var i=Ks;return s.current.memoizedState.isDehydrated&&(Kk(s,o).flags|=256),2!==(s=Ik(s,o))&&(o=Gs,Gs=i,null!==o&&Fj(o)),s}function Fj(s){null===Gs?Gs=s:Gs.push.apply(Gs,s)}function Ck(s,o){for(o&=~Hs,o&=~Js,s.suspendedLanes|=o,s.pingedLanes&=~o,s=s.expirationTimes;0<o;){var i=31-Et(o),a=1<<i;s[i]=-1,o&=~a}}function Ek(s){if(6&Ls)throw Error(p(327));Hk();var o=uc(s,0);if(!(1&o))return Dk(s,ht()),null;var i=Ik(s,o);if(0!==s.tag&&2===i){var a=xc(s);0!==a&&(o=a,i=Nk(s,a))}if(1===i)throw i=zs,Kk(s,0),Ck(s,o),Dk(s,ht()),i;if(6===i)throw Error(p(345));return s.finishedWork=s.current.alternate,s.finishedLanes=o,Pk(s,Gs,Qs),Dk(s,ht()),null}function Qk(s,o){var i=Ls;Ls|=1;try{return s(o)}finally{0===(Ls=i)&&(Xs=ht()+500,kn&&jg())}}function Rk(s){null!==no&&0===no.tag&&!(6&Ls)&&Hk();var o=Ls;Ls|=1;var i=Ds.transition,a=Ct;try{if(Ds.transition=null,Ct=1,s)return s()}finally{Ct=a,Ds.transition=i,!(6&(Ls=o))&&jg()}}function Hj(){qs=Vs.current,E(Vs)}function Kk(s,o){s.finishedWork=null,s.finishedLanes=0;var i=s.timeoutHandle;if(-1!==i&&(s.timeoutHandle=-1,cn(i)),null!==Bs)for(i=Bs.return;null!==i;){var a=i;switch(wg(a),a.tag){case 1:null!=(a=a.type.childContextTypes)&&$f();break;case 3:zh(),E(En),E(Sn),Eh();break;case 5:Bh(a);break;case 4:zh();break;case 13:case 19:E(Zn);break;case 10:ah(a.type._context);break;case 22:case 23:Hj()}i=i.return}if(Fs=s,Bs=s=Pg(s.current,null),$s=qs=o,Us=0,zs=null,Hs=Js=Ws=0,Gs=Ks=null,null!==Hn){for(o=0;o<Hn.length;o++)if(null!==(a=(i=Hn[o]).interleaved)){i.interleaved=null;var u=a.next,_=i.pending;if(null!==_){var w=_.next;_.next=u,a.next=w}i.pending=a}Hn=null}return s}function Mk(s,o){for(;;){var i=Bs;try{if($g(),ts.current=hs,cs){for(var a=ss.memoizedState;null!==a;){var u=a.queue;null!==u&&(u.pending=null),a=a.next}cs=!1}if(ns=0,as=os=ss=null,ls=!1,us=0,Rs.current=null,null===i||null===i.return){Us=1,zs=o,Bs=null;break}e:{var _=s,w=i.return,x=i,C=o;if(o=$s,x.flags|=32768,null!==C&&\"object\"==typeof C&&\"function\"==typeof C.then){var j=C,L=x,B=L.tag;if(!(1&L.mode||0!==B&&11!==B&&15!==B)){var $=L.alternate;$?(L.updateQueue=$.updateQueue,L.memoizedState=$.memoizedState,L.lanes=$.lanes):(L.updateQueue=null,L.memoizedState=null)}var V=Ui(w);if(null!==V){V.flags&=-257,Vi(V,w,x,0,o),1&V.mode&&Si(_,j,o),C=j;var U=(o=V).updateQueue;if(null===U){var z=new Set;z.add(C),o.updateQueue=z}else U.add(C);break e}if(!(1&o)){Si(_,j,o),tj();break e}C=Error(p(426))}else if(Fn&&1&x.mode){var Y=Ui(w);if(null!==Y){!(65536&Y.flags)&&(Y.flags|=256),Vi(Y,w,x,0,o),Jg(Ji(C,x));break e}}_=C=Ji(C,x),4!==Us&&(Us=2),null===Ks?Ks=[_]:Ks.push(_),_=w;do{switch(_.tag){case 3:_.flags|=65536,o&=-o,_.lanes|=o,ph(_,Ni(0,C,o));break e;case 1:x=C;var Z=_.type,ee=_.stateNode;if(!(128&_.flags||\"function\"!=typeof Z.getDerivedStateFromError&&(null===ee||\"function\"!=typeof ee.componentDidCatch||null!==to&&to.has(ee)))){_.flags|=65536,o&=-o,_.lanes|=o,ph(_,Qi(_,x,o));break e}}_=_.return}while(null!==_)}Sk(i)}catch(s){o=s,Bs===i&&null!==i&&(Bs=i=i.return);continue}break}}function Jk(){var s=Ms.current;return Ms.current=hs,null===s?hs:s}function tj(){0!==Us&&3!==Us&&2!==Us||(Us=4),null===Fs||!(268435455&Ws)&&!(268435455&Js)||Ck(Fs,$s)}function Ik(s,o){var i=Ls;Ls|=2;var a=Jk();for(Fs===s&&$s===o||(Qs=null,Kk(s,o));;)try{Tk();break}catch(o){Mk(s,o)}if($g(),Ls=i,Ms.current=a,null!==Bs)throw Error(p(261));return Fs=null,$s=0,Us}function Tk(){for(;null!==Bs;)Uk(Bs)}function Lk(){for(;null!==Bs&&!ut();)Uk(Bs)}function Uk(s){var o=Ts(s.alternate,s,qs);s.memoizedProps=s.pendingProps,null===o?Sk(s):Bs=o,Rs.current=null}function Sk(s){var o=s;do{var i=o.alternate;if(s=o.return,32768&o.flags){if(null!==(i=Ij(i,o)))return i.flags&=32767,void(Bs=i);if(null===s)return Us=6,void(Bs=null);s.flags|=32768,s.subtreeFlags=0,s.deletions=null}else if(null!==(i=Ej(i,o,qs)))return void(Bs=i);if(null!==(o=o.sibling))return void(Bs=o);Bs=o=s}while(null!==o);0===Us&&(Us=5)}function Pk(s,o,i){var a=Ct,u=Ds.transition;try{Ds.transition=null,Ct=1,function Wk(s,o,i,a){do{Hk()}while(null!==no);if(6&Ls)throw Error(p(327));i=s.finishedWork;var u=s.finishedLanes;if(null===i)return null;if(s.finishedWork=null,s.finishedLanes=0,i===s.current)throw Error(p(177));s.callbackNode=null,s.callbackPriority=0;var _=i.lanes|i.childLanes;if(function Bc(s,o){var i=s.pendingLanes&~o;s.pendingLanes=o,s.suspendedLanes=0,s.pingedLanes=0,s.expiredLanes&=o,s.mutableReadLanes&=o,s.entangledLanes&=o,o=s.entanglements;var a=s.eventTimes;for(s=s.expirationTimes;0<i;){var u=31-Et(i),_=1<<u;o[u]=0,a[u]=-1,s[u]=-1,i&=~_}}(s,_),s===Fs&&(Bs=Fs=null,$s=0),!(2064&i.subtreeFlags)&&!(2064&i.flags)||ro||(ro=!0,Fk(yt,(function(){return Hk(),null}))),_=!!(15990&i.flags),!!(15990&i.subtreeFlags)||_){_=Ds.transition,Ds.transition=null;var w=Ct;Ct=1;var x=Ls;Ls|=4,Rs.current=null,function Oj(s,o){if(sn=Ut,Ne(s=Me())){if(\"selectionStart\"in s)var i={start:s.selectionStart,end:s.selectionEnd};else e:{var a=(i=(i=s.ownerDocument)&&i.defaultView||window).getSelection&&i.getSelection();if(a&&0!==a.rangeCount){i=a.anchorNode;var u=a.anchorOffset,_=a.focusNode;a=a.focusOffset;try{i.nodeType,_.nodeType}catch(s){i=null;break e}var w=0,x=-1,C=-1,j=0,L=0,B=s,$=null;t:for(;;){for(var V;B!==i||0!==u&&3!==B.nodeType||(x=w+u),B!==_||0!==a&&3!==B.nodeType||(C=w+a),3===B.nodeType&&(w+=B.nodeValue.length),null!==(V=B.firstChild);)$=B,B=V;for(;;){if(B===s)break t;if($===i&&++j===u&&(x=w),$===_&&++L===a&&(C=w),null!==(V=B.nextSibling))break;$=(B=$).parentNode}B=V}i=-1===x||-1===C?null:{start:x,end:C}}else i=null}i=i||{start:0,end:0}}else i=null;for(on={focusedElem:s,selectionRange:i},Ut=!1,As=o;null!==As;)if(s=(o=As).child,1028&o.subtreeFlags&&null!==s)s.return=o,As=s;else for(;null!==As;){o=As;try{var U=o.alternate;if(1024&o.flags)switch(o.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==U){var z=U.memoizedProps,Y=U.memoizedState,Z=o.stateNode,ee=Z.getSnapshotBeforeUpdate(o.elementType===o.type?z:Ci(o.type,z),Y);Z.__reactInternalSnapshotBeforeUpdate=ee}break;case 3:var ie=o.stateNode.containerInfo;1===ie.nodeType?ie.textContent=\"\":9===ie.nodeType&&ie.documentElement&&ie.removeChild(ie.documentElement);break;default:throw Error(p(163))}}catch(s){W(o,o.return,s)}if(null!==(s=o.sibling)){s.return=o.return,As=s;break}As=o.return}return U=js,js=!1,U}(s,i),dk(i,s),Oe(on),Ut=!!sn,on=sn=null,s.current=i,hk(i,s,u),pt(),Ls=x,Ct=w,Ds.transition=_}else s.current=i;if(ro&&(ro=!1,no=s,so=u),_=s.pendingLanes,0===_&&(to=null),function mc(s){if(St&&\"function\"==typeof St.onCommitFiberRoot)try{St.onCommitFiberRoot(_t,s,void 0,!(128&~s.current.flags))}catch(s){}}(i.stateNode),Dk(s,ht()),null!==o)for(a=s.onRecoverableError,i=0;i<o.length;i++)u=o[i],a(u.value,{componentStack:u.stack,digest:u.digest});if(Zs)throw Zs=!1,s=eo,eo=null,s;return!!(1&so)&&0!==s.tag&&Hk(),_=s.pendingLanes,1&_?s===io?oo++:(oo=0,io=s):oo=0,jg(),null}(s,o,i,a)}finally{Ds.transition=u,Ct=a}return null}function Hk(){if(null!==no){var s=Dc(so),o=Ds.transition,i=Ct;try{if(Ds.transition=null,Ct=16>s?16:s,null===no)var a=!1;else{if(s=no,no=null,so=0,6&Ls)throw Error(p(331));var u=Ls;for(Ls|=4,As=s.current;null!==As;){var _=As,w=_.child;if(16&As.flags){var x=_.deletions;if(null!==x){for(var C=0;C<x.length;C++){var j=x[C];for(As=j;null!==As;){var L=As;switch(L.tag){case 0:case 11:case 15:Pj(8,L,_)}var B=L.child;if(null!==B)B.return=L,As=B;else for(;null!==As;){var $=(L=As).sibling,V=L.return;if(Sj(L),L===j){As=null;break}if(null!==$){$.return=V,As=$;break}As=V}}}var U=_.alternate;if(null!==U){var z=U.child;if(null!==z){U.child=null;do{var Y=z.sibling;z.sibling=null,z=Y}while(null!==z)}}As=_}}if(2064&_.subtreeFlags&&null!==w)w.return=_,As=w;else e:for(;null!==As;){if(2048&(_=As).flags)switch(_.tag){case 0:case 11:case 15:Pj(9,_,_.return)}var Z=_.sibling;if(null!==Z){Z.return=_.return,As=Z;break e}As=_.return}}var ee=s.current;for(As=ee;null!==As;){var ie=(w=As).child;if(2064&w.subtreeFlags&&null!==ie)ie.return=w,As=ie;else e:for(w=ee;null!==As;){if(2048&(x=As).flags)try{switch(x.tag){case 0:case 11:case 15:Qj(9,x)}}catch(s){W(x,x.return,s)}if(x===w){As=null;break e}var ae=x.sibling;if(null!==ae){ae.return=x.return,As=ae;break e}As=x.return}}if(Ls=u,jg(),St&&\"function\"==typeof St.onPostCommitFiberRoot)try{St.onPostCommitFiberRoot(_t,s)}catch(s){}a=!0}return a}finally{Ct=i,Ds.transition=o}}return!1}function Xk(s,o,i){s=nh(s,o=Ni(0,o=Ji(i,o),1),1),o=R(),null!==s&&(Ac(s,1,o),Dk(s,o))}function W(s,o,i){if(3===s.tag)Xk(s,s,i);else for(;null!==o;){if(3===o.tag){Xk(o,s,i);break}if(1===o.tag){var a=o.stateNode;if(\"function\"==typeof o.type.getDerivedStateFromError||\"function\"==typeof a.componentDidCatch&&(null===to||!to.has(a))){o=nh(o,s=Qi(o,s=Ji(i,s),1),1),s=R(),null!==o&&(Ac(o,1,s),Dk(o,s));break}}o=o.return}}function Ti(s,o,i){var a=s.pingCache;null!==a&&a.delete(o),o=R(),s.pingedLanes|=s.suspendedLanes&i,Fs===s&&($s&i)===i&&(4===Us||3===Us&&(130023424&$s)===$s&&500>ht()-Ys?Kk(s,0):Hs|=i),Dk(s,o)}function Yk(s,o){0===o&&(1&s.mode?(o=Ot,!(130023424&(Ot<<=1))&&(Ot=4194304)):o=1);var i=R();null!==(s=ih(s,o))&&(Ac(s,o,i),Dk(s,i))}function uj(s){var o=s.memoizedState,i=0;null!==o&&(i=o.retryLane),Yk(s,i)}function bk(s,o){var i=0;switch(s.tag){case 13:var a=s.stateNode,u=s.memoizedState;null!==u&&(i=u.retryLane);break;case 19:a=s.stateNode;break;default:throw Error(p(314))}null!==a&&a.delete(o),Yk(s,i)}function Fk(s,o){return ct(s,o)}function $k(s,o,i,a){this.tag=s,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=o,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Bg(s,o,i,a){return new $k(s,o,i,a)}function aj(s){return!(!(s=s.prototype)||!s.isReactComponent)}function Pg(s,o){var i=s.alternate;return null===i?((i=Bg(s.tag,o,s.key,s.mode)).elementType=s.elementType,i.type=s.type,i.stateNode=s.stateNode,i.alternate=s,s.alternate=i):(i.pendingProps=o,i.type=s.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=14680064&s.flags,i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,o=s.dependencies,i.dependencies=null===o?null:{lanes:o.lanes,firstContext:o.firstContext},i.sibling=s.sibling,i.index=s.index,i.ref=s.ref,i}function Rg(s,o,i,a,u,_){var w=2;if(a=s,\"function\"==typeof s)aj(s)&&(w=1);else if(\"string\"==typeof s)w=5;else e:switch(s){case Z:return Tg(i.children,u,_,o);case ee:w=8,u|=8;break;case ie:return(s=Bg(12,i,o,2|u)).elementType=ie,s.lanes=_,s;case pe:return(s=Bg(13,i,o,u)).elementType=pe,s.lanes=_,s;case de:return(s=Bg(19,i,o,u)).elementType=de,s.lanes=_,s;case be:return pj(i,u,_,o);default:if(\"object\"==typeof s&&null!==s)switch(s.$$typeof){case ae:w=10;break e;case ce:w=9;break e;case le:w=11;break e;case fe:w=14;break e;case ye:w=16,a=null;break e}throw Error(p(130,null==s?s:typeof s,\"\"))}return(o=Bg(w,i,o,u)).elementType=s,o.type=a,o.lanes=_,o}function Tg(s,o,i,a){return(s=Bg(7,s,a,o)).lanes=i,s}function pj(s,o,i,a){return(s=Bg(22,s,a,o)).elementType=be,s.lanes=i,s.stateNode={isHidden:!1},s}function Qg(s,o,i){return(s=Bg(6,s,null,o)).lanes=i,s}function Sg(s,o,i){return(o=Bg(4,null!==s.children?s.children:[],s.key,o)).lanes=i,o.stateNode={containerInfo:s.containerInfo,pendingChildren:null,implementation:s.implementation},o}function al(s,o,i,a,u){this.tag=o,this.containerInfo=s,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zc(0),this.expirationTimes=zc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zc(0),this.identifierPrefix=a,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function bl(s,o,i,a,u,_,w,x,C){return s=new al(s,o,i,x,C),1===o?(o=1,!0===_&&(o|=8)):o=0,_=Bg(3,null,null,o),s.current=_,_.stateNode=s,_.memoizedState={element:a,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},kh(_),s}function dl(s){if(!s)return _n;e:{if(Vb(s=s._reactInternals)!==s||1!==s.tag)throw Error(p(170));var o=s;do{switch(o.tag){case 3:o=o.stateNode.context;break e;case 1:if(Zf(o.type)){o=o.stateNode.__reactInternalMemoizedMergedChildContext;break e}}o=o.return}while(null!==o);throw Error(p(171))}if(1===s.tag){var i=s.type;if(Zf(i))return bg(s,i,o)}return o}function el(s,o,i,a,u,_,w,x,C){return(s=bl(i,a,!0,s,0,_,0,x,C)).context=dl(null),i=s.current,(_=mh(a=R(),u=yi(i))).callback=null!=o?o:null,nh(i,_,u),s.current.lanes=u,Ac(s,u,a),Dk(s,a),s}function fl(s,o,i,a){var u=o.current,_=R(),w=yi(u);return i=dl(i),null===o.context?o.context=i:o.pendingContext=i,(o=mh(_,w)).payload={element:s},null!==(a=void 0===a?null:a)&&(o.callback=a),null!==(s=nh(u,o,w))&&(gi(s,u,w,_),oh(s,u,w)),w}function gl(s){return(s=s.current).child?(s.child.tag,s.child.stateNode):null}function hl(s,o){if(null!==(s=s.memoizedState)&&null!==s.dehydrated){var i=s.retryLane;s.retryLane=0!==i&&i<o?i:o}}function il(s,o){hl(s,o),(s=s.alternate)&&hl(s,o)}Ts=function(s,o,i){if(null!==s)if(s.memoizedProps!==o.pendingProps||En.current)bs=!0;else{if(!(s.lanes&i||128&o.flags))return bs=!1,function yj(s,o,i){switch(o.tag){case 3:kj(o),Ig();break;case 5:Ah(o);break;case 1:Zf(o.type)&&cg(o);break;case 4:yh(o,o.stateNode.containerInfo);break;case 10:var a=o.type._context,u=o.memoizedProps.value;G(Un,a._currentValue),a._currentValue=u;break;case 13:if(null!==(a=o.memoizedState))return null!==a.dehydrated?(G(Zn,1&Zn.current),o.flags|=128,null):i&o.child.childLanes?oj(s,o,i):(G(Zn,1&Zn.current),null!==(s=Zi(s,o,i))?s.sibling:null);G(Zn,1&Zn.current);break;case 19:if(a=!!(i&o.childLanes),128&s.flags){if(a)return xj(s,o,i);o.flags|=128}if(null!==(u=o.memoizedState)&&(u.rendering=null,u.tail=null,u.lastEffect=null),G(Zn,Zn.current),a)break;return null;case 22:case 23:return o.lanes=0,dj(s,o,i)}return Zi(s,o,i)}(s,o,i);bs=!!(131072&s.flags)}else bs=!1,Fn&&1048576&o.flags&&ug(o,In,o.index);switch(o.lanes=0,o.tag){case 2:var a=o.type;ij(s,o),s=o.pendingProps;var u=Yf(o,Sn.current);ch(o,i),u=Nh(null,o,a,s,u,i);var _=Sh();return o.flags|=1,\"object\"==typeof u&&null!==u&&\"function\"==typeof u.render&&void 0===u.$$typeof?(o.tag=1,o.memoizedState=null,o.updateQueue=null,Zf(a)?(_=!0,cg(o)):_=!1,o.memoizedState=null!==u.state&&void 0!==u.state?u.state:null,kh(o),u.updater=gs,o.stateNode=u,u._reactInternals=o,Ii(o,a,s,i),o=jj(null,o,a,!0,_,i)):(o.tag=0,Fn&&_&&vg(o),Xi(null,o,u,i),o=o.child),o;case 16:a=o.elementType;e:{switch(ij(s,o),s=o.pendingProps,a=(u=a._init)(a._payload),o.type=a,u=o.tag=function Zk(s){if(\"function\"==typeof s)return aj(s)?1:0;if(null!=s){if((s=s.$$typeof)===le)return 11;if(s===fe)return 14}return 2}(a),s=Ci(a,s),u){case 0:o=cj(null,o,a,s,i);break e;case 1:o=hj(null,o,a,s,i);break e;case 11:o=Yi(null,o,a,s,i);break e;case 14:o=$i(null,o,a,Ci(a.type,s),i);break e}throw Error(p(306,a,\"\"))}return o;case 0:return a=o.type,u=o.pendingProps,cj(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 1:return a=o.type,u=o.pendingProps,hj(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 3:e:{if(kj(o),null===s)throw Error(p(387));a=o.pendingProps,u=(_=o.memoizedState).element,lh(s,o),qh(o,a,null,i);var w=o.memoizedState;if(a=w.element,_.isDehydrated){if(_={element:a,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},o.updateQueue.baseState=_,o.memoizedState=_,256&o.flags){o=lj(s,o,a,i,u=Ji(Error(p(423)),o));break e}if(a!==u){o=lj(s,o,a,i,u=Ji(Error(p(424)),o));break e}for(Ln=Lf(o.stateNode.containerInfo.firstChild),Dn=o,Fn=!0,Bn=null,i=Vn(o,null,a,i),o.child=i;i;)i.flags=-3&i.flags|4096,i=i.sibling}else{if(Ig(),a===u){o=Zi(s,o,i);break e}Xi(s,o,a,i)}o=o.child}return o;case 5:return Ah(o),null===s&&Eg(o),a=o.type,u=o.pendingProps,_=null!==s?s.memoizedProps:null,w=u.children,Ef(a,u)?w=null:null!==_&&Ef(a,_)&&(o.flags|=32),gj(s,o),Xi(s,o,w,i),o.child;case 6:return null===s&&Eg(o),null;case 13:return oj(s,o,i);case 4:return yh(o,o.stateNode.containerInfo),a=o.pendingProps,null===s?o.child=qn(o,null,a,i):Xi(s,o,a,i),o.child;case 11:return a=o.type,u=o.pendingProps,Yi(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 7:return Xi(s,o,o.pendingProps,i),o.child;case 8:case 12:return Xi(s,o,o.pendingProps.children,i),o.child;case 10:e:{if(a=o.type._context,u=o.pendingProps,_=o.memoizedProps,w=u.value,G(Un,a._currentValue),a._currentValue=w,null!==_)if(Dr(_.value,w)){if(_.children===u.children&&!En.current){o=Zi(s,o,i);break e}}else for(null!==(_=o.child)&&(_.return=o);null!==_;){var x=_.dependencies;if(null!==x){w=_.child;for(var C=x.firstContext;null!==C;){if(C.context===a){if(1===_.tag){(C=mh(-1,i&-i)).tag=2;var j=_.updateQueue;if(null!==j){var L=(j=j.shared).pending;null===L?C.next=C:(C.next=L.next,L.next=C),j.pending=C}}_.lanes|=i,null!==(C=_.alternate)&&(C.lanes|=i),bh(_.return,i,o),x.lanes|=i;break}C=C.next}}else if(10===_.tag)w=_.type===o.type?null:_.child;else if(18===_.tag){if(null===(w=_.return))throw Error(p(341));w.lanes|=i,null!==(x=w.alternate)&&(x.lanes|=i),bh(w,i,o),w=_.sibling}else w=_.child;if(null!==w)w.return=_;else for(w=_;null!==w;){if(w===o){w=null;break}if(null!==(_=w.sibling)){_.return=w.return,w=_;break}w=w.return}_=w}Xi(s,o,u.children,i),o=o.child}return o;case 9:return u=o.type,a=o.pendingProps.children,ch(o,i),a=a(u=eh(u)),o.flags|=1,Xi(s,o,a,i),o.child;case 14:return u=Ci(a=o.type,o.pendingProps),$i(s,o,a,u=Ci(a.type,u),i);case 15:return bj(s,o,o.type,o.pendingProps,i);case 17:return a=o.type,u=o.pendingProps,u=o.elementType===a?u:Ci(a,u),ij(s,o),o.tag=1,Zf(a)?(s=!0,cg(o)):s=!1,ch(o,i),Gi(o,a,u),Ii(o,a,u,i),jj(null,o,a,!0,s,i);case 19:return xj(s,o,i);case 22:return dj(s,o,i)}throw Error(p(156,o.tag))};var lo=\"function\"==typeof reportError?reportError:function(s){console.error(s)};function ll(s){this._internalRoot=s}function ml(s){this._internalRoot=s}function nl(s){return!(!s||1!==s.nodeType&&9!==s.nodeType&&11!==s.nodeType)}function ol(s){return!(!s||1!==s.nodeType&&9!==s.nodeType&&11!==s.nodeType&&(8!==s.nodeType||\" react-mount-point-unstable \"!==s.nodeValue))}function pl(){}function rl(s,o,i,a,u){var _=i._reactRootContainer;if(_){var w=_;if(\"function\"==typeof u){var x=u;u=function(){var s=gl(w);x.call(s)}}fl(o,w,s,u)}else w=function ql(s,o,i,a,u){if(u){if(\"function\"==typeof a){var _=a;a=function(){var s=gl(w);_.call(s)}}var w=el(o,a,s,0,null,!1,0,\"\",pl);return s._reactRootContainer=w,s[fn]=w.current,sf(8===s.nodeType?s.parentNode:s),Rk(),w}for(;u=s.lastChild;)s.removeChild(u);if(\"function\"==typeof a){var x=a;a=function(){var s=gl(C);x.call(s)}}var C=bl(s,0,!1,null,0,!1,0,\"\",pl);return s._reactRootContainer=C,s[fn]=C.current,sf(8===s.nodeType?s.parentNode:s),Rk((function(){fl(o,C,i,a)})),C}(i,o,s,u,a);return gl(w)}ml.prototype.render=ll.prototype.render=function(s){var o=this._internalRoot;if(null===o)throw Error(p(409));fl(s,o,null,null)},ml.prototype.unmount=ll.prototype.unmount=function(){var s=this._internalRoot;if(null!==s){this._internalRoot=null;var o=s.containerInfo;Rk((function(){fl(null,s,null,null)})),o[fn]=null}},ml.prototype.unstable_scheduleHydration=function(s){if(s){var o=Pt();s={blockedOn:null,target:s,priority:o};for(var i=0;i<$t.length&&0!==o&&o<$t[i].priority;i++);$t.splice(i,0,s),0===i&&Vc(s)}},At=function(s){switch(s.tag){case 3:var o=s.stateNode;if(o.current.memoizedState.isDehydrated){var i=tc(o.pendingLanes);0!==i&&(Cc(o,1|i),Dk(o,ht()),!(6&Ls)&&(Xs=ht()+500,jg()))}break;case 13:Rk((function(){var o=ih(s,1);if(null!==o){var i=R();gi(o,s,1,i)}})),il(s,1)}},jt=function(s){if(13===s.tag){var o=ih(s,134217728);if(null!==o)gi(o,s,134217728,R());il(s,134217728)}},It=function(s){if(13===s.tag){var o=yi(s),i=ih(s,o);if(null!==i)gi(i,s,o,R());il(s,o)}},Pt=function(){return Ct},Tt=function(s,o){var i=Ct;try{return Ct=s,o()}finally{Ct=i}},Ye=function(s,o,i){switch(o){case\"input\":if(bb(s,i),o=i.name,\"radio\"===i.type&&null!=o){for(i=s;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+o)+'][type=\"radio\"]'),o=0;o<i.length;o++){var a=i[o];if(a!==s&&a.form===s.form){var u=Db(a);if(!u)throw Error(p(90));Wa(a),bb(a,u)}}}break;case\"textarea\":ib(s,i);break;case\"select\":null!=(o=i.value)&&fb(s,!!i.multiple,o,!1)}},Gb=Qk,Hb=Rk;var uo={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},po={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"},ho={bundleType:po.bundleType,version:po.version,rendererPackageName:po.rendererPackageName,rendererConfig:po.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:U.ReactCurrentDispatcher,findHostInstanceByFiber:function(s){return null===(s=Zb(s))?null:s.stateNode},findFiberByHostInstance:po.findFiberByHostInstance||function jl(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var fo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!fo.isDisabled&&fo.supportsFiber)try{_t=fo.inject(ho),St=fo}catch(Re){}}o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=uo,o.createPortal=function(s,o){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(o))throw Error(p(200));return function cl(s,o,i){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Y,key:null==a?null:\"\"+a,children:s,containerInfo:o,implementation:i}}(s,o,null,i)},o.createRoot=function(s,o){if(!nl(s))throw Error(p(299));var i=!1,a=\"\",u=lo;return null!=o&&(!0===o.unstable_strictMode&&(i=!0),void 0!==o.identifierPrefix&&(a=o.identifierPrefix),void 0!==o.onRecoverableError&&(u=o.onRecoverableError)),o=bl(s,1,!1,null,0,i,0,a,u),s[fn]=o.current,sf(8===s.nodeType?s.parentNode:s),new ll(o)},o.findDOMNode=function(s){if(null==s)return null;if(1===s.nodeType)return s;var o=s._reactInternals;if(void 0===o){if(\"function\"==typeof s.render)throw Error(p(188));throw s=Object.keys(s).join(\",\"),Error(p(268,s))}return s=null===(s=Zb(o))?null:s.stateNode},o.flushSync=function(s){return Rk(s)},o.hydrate=function(s,o,i){if(!ol(o))throw Error(p(200));return rl(null,s,o,!0,i)},o.hydrateRoot=function(s,o,i){if(!nl(s))throw Error(p(405));var a=null!=i&&i.hydratedSources||null,u=!1,_=\"\",w=lo;if(null!=i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(_=i.identifierPrefix),void 0!==i.onRecoverableError&&(w=i.onRecoverableError)),o=el(o,null,s,1,null!=i?i:null,u,0,_,w),s[fn]=o.current,sf(s),a)for(s=0;s<a.length;s++)u=(u=(i=a[s])._getVersion)(i._source),null==o.mutableSourceEagerHydrationData?o.mutableSourceEagerHydrationData=[i,u]:o.mutableSourceEagerHydrationData.push(i,u);return new ml(o)},o.render=function(s,o,i){if(!ol(o))throw Error(p(200));return rl(null,s,o,!1,i)},o.unmountComponentAtNode=function(s){if(!ol(s))throw Error(p(40));return!!s._reactRootContainer&&(Rk((function(){rl(null,null,s,!1,(function(){s._reactRootContainer=null,s[fn]=null}))})),!0)},o.unstable_batchedUpdates=Qk,o.unstable_renderSubtreeIntoContainer=function(s,o,i,a){if(!ol(i))throw Error(p(200));if(null==s||void 0===s._reactInternals)throw Error(p(38));return rl(s,o,i,!1,a)},o.version=\"18.3.1-next-f1338f8080-20240426\"},22574:(s,o)=>{\"use strict\";var i={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,u=a&&!i.call({1:2},1);o.f=u?function propertyIsEnumerable(s){var o=a(this,s);return!!o&&o.enumerable}:i},23007:s=>{s.exports=function copyArray(s,o){var i=-1,a=s.length;for(o||(o=Array(a));++i<a;)o[i]=s[i];return o}},23034:(s,o,i)=>{\"use strict\";var a=i(88280),u=i(32567),_=Function.prototype;s.exports=function(s){var o=s.bind;return s===_||a(_,s)&&o===_.bind?u:o}},23045:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(49724),_=i(4993),w=i(74436).indexOf,x=i(38530),C=a([].push);s.exports=function(s,o){var i,a=_(s),j=0,L=[];for(i in a)!u(x,i)&&u(a,i)&&C(L,i);for(;o.length>j;)u(a,i=o[j++])&&(~w(L,i)||C(L,i));return L}},23546:(s,o,i)=>{var a=i(72552),u=i(40346),_=i(11331);s.exports=function isError(s){if(!u(s))return!1;var o=a(s);return\"[object Error]\"==o||\"[object DOMException]\"==o||\"string\"==typeof s.message&&\"string\"==typeof s.name&&!_(s)}},23805:s=>{s.exports=function isObject(s){var o=typeof s;return null!=s&&(\"object\"==o||\"function\"==o)}},23888:(s,o,i)=>{\"use strict\";var a=i(98828),u=i(75817);s.exports=!a((function(){var s=new Error(\"a\");return!(\"stack\"in s)||(Object.defineProperty(s,\"stack\",u(1,7)),7!==s.stack)}))},24107:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],x=new Array(64);function Sha256(){this.init(),this._w=x,u.call(this,64,56)}function ch(s,o,i){return i^s&(o^i)}function maj(s,o,i){return s&o|i&(s|o)}function sigma0(s){return(s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10)}function sigma1(s){return(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7)}function gamma0(s){return(s>>>7|s<<25)^(s>>>18|s<<14)^s>>>3}a(Sha256,u),Sha256.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Sha256.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0|this._f,L=0|this._g,B=0|this._h,$=0;$<16;++$)i[$]=s.readInt32BE(4*$);for(;$<64;++$)i[$]=0|(((o=i[$-2])>>>17|o<<15)^(o>>>19|o<<13)^o>>>10)+i[$-7]+gamma0(i[$-15])+i[$-16];for(var V=0;V<64;++V){var U=B+sigma1(C)+ch(C,j,L)+w[V]+i[V]|0,z=sigma0(a)+maj(a,u,_)|0;B=L,L=j,j=C,C=x+U|0,x=_,_=u,u=a,a=U+z|0}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0,this._f=j+this._f|0,this._g=L+this._g|0,this._h=B+this._h|0},Sha256.prototype._hash=function(){var s=_.allocUnsafe(32);return s.writeInt32BE(this._a,0),s.writeInt32BE(this._b,4),s.writeInt32BE(this._c,8),s.writeInt32BE(this._d,12),s.writeInt32BE(this._e,16),s.writeInt32BE(this._f,20),s.writeInt32BE(this._g,24),s.writeInt32BE(this._h,28),s},s.exports=Sha256},24168:(s,o,i)=>{var a=i(91033),u=i(82819),_=i(9325);s.exports=function createPartial(s,o,i,w){var x=1&o,C=u(s);return function wrapper(){for(var o=-1,u=arguments.length,j=-1,L=w.length,B=Array(L+u),$=this&&this!==_&&this instanceof wrapper?C:s;++j<L;)B[j]=w[j];for(;u--;)B[j++]=arguments[++o];return a($,x?i:this,B)}}},24443:(s,o,i)=>{\"use strict\";var a=i(23045),u=i(80376).concat(\"length\",\"prototype\");o.f=Object.getOwnPropertyNames||function getOwnPropertyNames(s){return a(s,u)}},24647:(s,o,i)=>{var a=i(54552)({À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",Ç:\"C\",ç:\"c\",Ð:\"D\",ð:\"d\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",Ñ:\"N\",ñ:\"n\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",Ý:\"Y\",ý:\"y\",ÿ:\"y\",Æ:\"Ae\",æ:\"ae\",Þ:\"Th\",þ:\"th\",ß:\"ss\",Ā:\"A\",Ă:\"A\",Ą:\"A\",ā:\"a\",ă:\"a\",ą:\"a\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",Ď:\"D\",Đ:\"D\",ď:\"d\",đ:\"d\",Ē:\"E\",Ĕ:\"E\",Ė:\"E\",Ę:\"E\",Ě:\"E\",ē:\"e\",ĕ:\"e\",ė:\"e\",ę:\"e\",ě:\"e\",Ĝ:\"G\",Ğ:\"G\",Ġ:\"G\",Ģ:\"G\",ĝ:\"g\",ğ:\"g\",ġ:\"g\",ģ:\"g\",Ĥ:\"H\",Ħ:\"H\",ĥ:\"h\",ħ:\"h\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",Į:\"I\",İ:\"I\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",į:\"i\",ı:\"i\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",ĸ:\"k\",Ĺ:\"L\",Ļ:\"L\",Ľ:\"L\",Ŀ:\"L\",Ł:\"L\",ĺ:\"l\",ļ:\"l\",ľ:\"l\",ŀ:\"l\",ł:\"l\",Ń:\"N\",Ņ:\"N\",Ň:\"N\",Ŋ:\"N\",ń:\"n\",ņ:\"n\",ň:\"n\",ŋ:\"n\",Ō:\"O\",Ŏ:\"O\",Ő:\"O\",ō:\"o\",ŏ:\"o\",ő:\"o\",Ŕ:\"R\",Ŗ:\"R\",Ř:\"R\",ŕ:\"r\",ŗ:\"r\",ř:\"r\",Ś:\"S\",Ŝ:\"S\",Ş:\"S\",Š:\"S\",ś:\"s\",ŝ:\"s\",ş:\"s\",š:\"s\",Ţ:\"T\",Ť:\"T\",Ŧ:\"T\",ţ:\"t\",ť:\"t\",ŧ:\"t\",Ũ:\"U\",Ū:\"U\",Ŭ:\"U\",Ů:\"U\",Ű:\"U\",Ų:\"U\",ũ:\"u\",ū:\"u\",ŭ:\"u\",ů:\"u\",ű:\"u\",ų:\"u\",Ŵ:\"W\",ŵ:\"w\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Ź:\"Z\",Ż:\"Z\",Ž:\"Z\",ź:\"z\",ż:\"z\",ž:\"z\",Ĳ:\"IJ\",ĳ:\"ij\",Œ:\"Oe\",œ:\"oe\",ŉ:\"'n\",ſ:\"s\"});s.exports=a},24677:(s,o,i)=>{\"use strict\";var a=i(81214).DebounceInput;a.DebounceInput=a,s.exports=a},24713:(s,o,i)=>{var a=i(2523),u=i(15389),_=i(61489),w=Math.max;s.exports=function findIndex(s,o,i){var x=null==s?0:s.length;if(!x)return-1;var C=null==i?0:_(i);return C<0&&(C=w(x+C,0)),a(s,u(o,3),C)}},24739:(s,o,i)=>{var a=i(26025);s.exports=function listCacheGet(s){var o=this.__data__,i=a(o,s);return i<0?void 0:o[i][1]}},24823:(s,o,i)=>{\"use strict\";var a=i(28311),u=i(13930),_=i(36624),w=i(4640),x=i(37812),C=i(20575),j=i(88280),L=i(10300),B=i(73448),$=i(40154),V=TypeError,Result=function(s,o){this.stopped=s,this.result=o},U=Result.prototype;s.exports=function(s,o,i){var z,Y,Z,ee,ie,ae,ce,le=i&&i.that,pe=!(!i||!i.AS_ENTRIES),de=!(!i||!i.IS_RECORD),fe=!(!i||!i.IS_ITERATOR),ye=!(!i||!i.INTERRUPTED),be=a(o,le),stop=function(s){return z&&$(z,\"normal\",s),new Result(!0,s)},callFn=function(s){return pe?(_(s),ye?be(s[0],s[1],stop):be(s[0],s[1])):ye?be(s,stop):be(s)};if(de)z=s.iterator;else if(fe)z=s;else{if(!(Y=B(s)))throw new V(w(s)+\" is not iterable\");if(x(Y)){for(Z=0,ee=C(s);ee>Z;Z++)if((ie=callFn(s[Z]))&&j(U,ie))return ie;return new Result(!1)}z=L(s,Y)}for(ae=de?s.next:z.next;!(ce=u(ae,z)).done;){try{ie=callFn(ce.value)}catch(s){$(z,\"throw\",s)}if(\"object\"==typeof ie&&ie&&j(U,ie))return ie}return new Result(!1)}},25160:s=>{s.exports=function baseSlice(s,o,i){var a=-1,u=s.length;o<0&&(o=-o>u?0:u+o),(i=i>u?u:i)<0&&(i+=u),u=o>i?0:i-o>>>0,o>>>=0;for(var _=Array(u);++a<u;)_[a]=s[a+o];return _}},25264:(s,o,i)=>{\"use strict\";function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}Object.defineProperty(o,\"__esModule\",{value:!0}),o.CopyToClipboard=void 0;var a=_interopRequireDefault(i(96540)),u=_interopRequireDefault(i(17965)),_=[\"text\",\"onCopy\",\"options\",\"children\"];function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i,a,u={},_=Object.keys(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _createSuper(s){var o=function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(s){return!1}}();return function _createSuperInternal(){var i,a=_getPrototypeOf(s);if(o){var u=_getPrototypeOf(this).constructor;i=Reflect.construct(a,arguments,u)}else i=a.apply(this,arguments);return function _possibleConstructorReturn(s,o){if(o&&(\"object\"===_typeof(o)||\"function\"==typeof o))return o;if(void 0!==o)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(s)}(this,i)}}function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var w=function(s){!function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),Object.defineProperty(s,\"prototype\",{writable:!1}),o&&_setPrototypeOf(s,o)}(CopyToClipboard,s);var o=_createSuper(CopyToClipboard);function CopyToClipboard(){var s;!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,CopyToClipboard);for(var i=arguments.length,_=new Array(i),w=0;w<i;w++)_[w]=arguments[w];return _defineProperty(_assertThisInitialized(s=o.call.apply(o,[this].concat(_))),\"onClick\",(function(o){var i=s.props,_=i.text,w=i.onCopy,x=i.children,C=i.options,j=a.default.Children.only(x),L=(0,u.default)(_,C);w&&w(_,L),j&&j.props&&\"function\"==typeof j.props.onClick&&j.props.onClick(o)})),s}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(CopyToClipboard,[{key:\"render\",value:function render(){var s=this.props,o=(s.text,s.onCopy,s.options,s.children),i=_objectWithoutProperties(s,_),u=a.default.Children.only(o);return a.default.cloneElement(u,_objectSpread(_objectSpread({},i),{},{onClick:this.onClick}))}}]),CopyToClipboard}(a.default.PureComponent);o.CopyToClipboard=w,_defineProperty(w,\"defaultProps\",{onCopy:void 0,options:void 0})},25382:(s,o,i)=>{\"use strict\";var a=i(65606),u=Object.keys||function(s){var o=[];for(var i in s)o.push(i);return o};s.exports=Duplex;var _=i(45412),w=i(16708);i(56698)(Duplex,_);for(var x=u(w.prototype),C=0;C<x.length;C++){var j=x[C];Duplex.prototype[j]||(Duplex.prototype[j]=w.prototype[j])}function Duplex(s){if(!(this instanceof Duplex))return new Duplex(s);_.call(this,s),w.call(this,s),this.allowHalfOpen=!0,s&&(!1===s.readable&&(this.readable=!1),!1===s.writable&&(this.writable=!1),!1===s.allowHalfOpen&&(this.allowHalfOpen=!1,this.once(\"end\",onend)))}function onend(){this._writableState.ended||a.nextTick(onEndNT,this)}function onEndNT(s){s.end()}Object.defineProperty(Duplex.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Object.defineProperty(Duplex.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Duplex.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Duplex.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function set(s){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=s,this._writableState.destroyed=s)}})},25594:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(62250),_=i(88280),w=i(51175),x=Object;s.exports=w?function(s){return\"symbol\"==typeof s}:function(s){var o=a(\"Symbol\");return u(o)&&_(o.prototype,x(s))}},25911:(s,o,i)=>{var a=i(38859),u=i(14248),_=i(19219);s.exports=function equalArrays(s,o,i,w,x,C){var j=1&i,L=s.length,B=o.length;if(L!=B&&!(j&&B>L))return!1;var $=C.get(s),V=C.get(o);if($&&V)return $==o&&V==s;var U=-1,z=!0,Y=2&i?new a:void 0;for(C.set(s,o),C.set(o,s);++U<L;){var Z=s[U],ee=o[U];if(w)var ie=j?w(ee,Z,U,o,s,C):w(Z,ee,U,s,o,C);if(void 0!==ie){if(ie)continue;z=!1;break}if(Y){if(!u(o,(function(s,o){if(!_(Y,o)&&(Z===s||x(Z,s,i,w,C)))return Y.push(o)}))){z=!1;break}}else if(Z!==ee&&!x(Z,ee,i,w,C)){z=!1;break}}return C.delete(s),C.delete(o),z}},26025:(s,o,i)=>{var a=i(75288);s.exports=function assocIndexOf(s,o){for(var i=s.length;i--;)if(a(s[i][0],o))return i;return-1}},26311:s=>{!function(){var o;function format(s){for(var o,i,a,u,_=1,w=[].slice.call(arguments),x=0,C=s.length,j=\"\",L=!1,B=!1,nextArg=function(){return w[_++]},slurpNumber=function(){for(var i=\"\";/\\d/.test(s[x]);)i+=s[x++],o=s[x];return i.length>0?parseInt(i):null};x<C;++x)if(o=s[x],L)switch(L=!1,\".\"==o?(B=!1,o=s[++x]):\"0\"==o&&\".\"==s[x+1]?(B=!0,o=s[x+=2]):B=!0,u=slurpNumber(),o){case\"b\":j+=parseInt(nextArg(),10).toString(2);break;case\"c\":j+=\"string\"==typeof(i=nextArg())||i instanceof String?i:String.fromCharCode(parseInt(i,10));break;case\"d\":j+=parseInt(nextArg(),10);break;case\"f\":a=String(parseFloat(nextArg()).toFixed(u||6)),j+=B?a:a.replace(/^0/,\"\");break;case\"j\":j+=JSON.stringify(nextArg());break;case\"o\":j+=\"0\"+parseInt(nextArg(),10).toString(8);break;case\"s\":j+=nextArg();break;case\"x\":j+=\"0x\"+parseInt(nextArg(),10).toString(16);break;case\"X\":j+=\"0x\"+parseInt(nextArg(),10).toString(16).toUpperCase();break;default:j+=o}else\"%\"===o?L=!0:j+=o;return j}(o=s.exports=format).format=format,o.vsprintf=function vsprintf(s,o){return format.apply(null,[s].concat(o))},\"undefined\"!=typeof console&&\"function\"==typeof console.log&&(o.printf=function printf(){console.log(format.apply(null,arguments))})}()},26571:s=>{s.exports=function powershell(s){const o={$pattern:/-?[A-z\\.\\-]+\\b/,keyword:\"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter\",built_in:\"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write\"},i={begin:\"`[\\\\s\\\\S]\",relevance:0},a={className:\"variable\",variants:[{begin:/\\$\\B/},{className:\"keyword\",begin:/\\$this/},{begin:/\\$[\\w\\d][\\w\\d_:]*/}]},u={className:\"string\",variants:[{begin:/\"/,end:/\"/},{begin:/@\"/,end:/^\"@/}],contains:[i,a,{className:\"variable\",begin:/\\$[A-z]/,end:/[^A-z]/}]},_={className:\"string\",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},w=s.inherit(s.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:\"doctag\",variants:[{begin:/\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/}]}]}),x={className:\"built_in\",variants:[{begin:\"(\".concat(\"Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where\",\")+(-)[\\\\w\\\\d]+\")}]},C={className:\"class\",beginKeywords:\"class enum\",end:/\\s*[{]/,excludeEnd:!0,relevance:0,contains:[s.TITLE_MODE]},j={className:\"function\",begin:/function\\s+/,end:/\\s*\\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:\"function\",relevance:0,className:\"keyword\"},{className:\"title\",begin:/\\w[\\w\\d]*((-)[\\w\\d]+)*/,relevance:0},{begin:/\\(/,end:/\\)/,className:\"params\",relevance:0,contains:[a]}]},L={begin:/using\\s/,end:/$/,returnBegin:!0,contains:[u,_,{className:\"keyword\",begin:/(using|assembly|command|module|namespace|type)/}]},B={variants:[{className:\"operator\",begin:\"(\".concat(\"-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor\",\")\\\\b\")},{className:\"literal\",begin:/(-)[\\w\\d]+/,relevance:0}]},$={className:\"function\",begin:/\\[.*\\]\\s*[\\w]+[ ]??\\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:\"keyword\",begin:\"(\".concat(o.keyword.toString().replace(/\\s/g,\"|\"),\")\\\\b\"),endsParent:!0,relevance:0},s.inherit(s.TITLE_MODE,{endsParent:!0})]},V=[$,w,i,s.NUMBER_MODE,u,_,x,a,{className:\"literal\",begin:/\\$(null|true|false)\\b/},{className:\"selector-tag\",begin:/@\\B/,relevance:0}],U={begin:/\\[/,end:/\\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat(\"self\",V,{begin:\"(\"+[\"string\",\"char\",\"byte\",\"int\",\"long\",\"bool\",\"decimal\",\"single\",\"double\",\"DateTime\",\"xml\",\"array\",\"hashtable\",\"void\"].join(\"|\")+\")\",className:\"built_in\",relevance:0},{className:\"type\",begin:/[\\.\\w\\d]+/,relevance:0})};return $.contains.unshift(U),{name:\"PowerShell\",aliases:[\"ps\",\"ps1\"],case_insensitive:!0,keywords:o,contains:V.concat(C,j,L,B,U)}}},26657:(s,o,i)=>{\"use strict\";var a=i(75208),u=function isClosingTag(s){return/<\\/+[^>]+>/.test(s)},_=function isSelfClosingTag(s){return/<[^>]+\\/>/.test(s)};function getType(s){return u(s)?\"ClosingTag\":function isOpeningTag(s){return function isTag(s){return/<[^>!]+>/.test(s)}(s)&&!u(s)&&!_(s)}(s)?\"OpeningTag\":_(s)?\"SelfClosingTag\":\"Text\"}s.exports=function(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=o.indentor,u=o.textNodesOnSameLine,_=0,w=[];i=i||\"    \";var x=function lexer(s){return function splitOnTags(s){return s.split(/(<\\/?[^>]+>)/g).filter((function(s){return\"\"!==s.trim()}))}(s).map((function(s){return{value:s,type:getType(s)}}))}(s).map((function(s,o,x){var C=s.value,j=s.type;\"ClosingTag\"===j&&_--;var L=a(i,_),B=L+C;if(\"OpeningTag\"===j&&_++,u){var $=x[o-1],V=x[o-2];\"ClosingTag\"===j&&\"Text\"===$.type&&\"OpeningTag\"===V.type&&(B=\"\"+L+V.value+$.value+C,w.push(o-2,o-1))}return B}));return w.forEach((function(s){return x[s]=null})),x.filter((function(s){return!!s})).join(\"\\n\")}},26710:(s,o,i)=>{var a=i(56698),u=i(24107),_=i(90392),w=i(92861).Buffer,x=new Array(64);function Sha224(){this.init(),this._w=x,_.call(this,64,56)}a(Sha224,u),Sha224.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},Sha224.prototype._hash=function(){var s=w.allocUnsafe(28);return s.writeInt32BE(this._a,0),s.writeInt32BE(this._b,4),s.writeInt32BE(this._c,8),s.writeInt32BE(this._d,12),s.writeInt32BE(this._e,16),s.writeInt32BE(this._f,20),s.writeInt32BE(this._g,24),s},s.exports=Sha224},27096:(s,o,i)=>{const a=i(87586),u=i(6205),_=i(10023),w=i(8048);s.exports=s=>{var o,i,x=0,C={type:u.ROOT,stack:[]},j=C,L=C.stack,B=[],repeatErr=o=>{a.error(s,\"Nothing to repeat at column \"+(o-1))},$=a.strToChars(s);for(o=$.length;x<o;)switch(i=$[x++]){case\"\\\\\":switch(i=$[x++]){case\"b\":L.push(w.wordBoundary());break;case\"B\":L.push(w.nonWordBoundary());break;case\"w\":L.push(_.words());break;case\"W\":L.push(_.notWords());break;case\"d\":L.push(_.ints());break;case\"D\":L.push(_.notInts());break;case\"s\":L.push(_.whitespace());break;case\"S\":L.push(_.notWhitespace());break;default:/\\d/.test(i)?L.push({type:u.REFERENCE,value:parseInt(i,10)}):L.push({type:u.CHAR,value:i.charCodeAt(0)})}break;case\"^\":L.push(w.begin());break;case\"$\":L.push(w.end());break;case\"[\":var V;\"^\"===$[x]?(V=!0,x++):V=!1;var U=a.tokenizeClass($.slice(x),s);x+=U[1],L.push({type:u.SET,set:U[0],not:V});break;case\".\":L.push(_.anyChar());break;case\"(\":var z={type:u.GROUP,stack:[],remember:!0};\"?\"===(i=$[x])&&(i=$[x+1],x+=2,\"=\"===i?z.followedBy=!0:\"!\"===i?z.notFollowedBy=!0:\":\"!==i&&a.error(s,`Invalid group, character '${i}' after '?' at column `+(x-1)),z.remember=!1),L.push(z),B.push(j),j=z,L=z.stack;break;case\")\":0===B.length&&a.error(s,\"Unmatched ) at column \"+(x-1)),L=(j=B.pop()).options?j.options[j.options.length-1]:j.stack;break;case\"|\":j.options||(j.options=[j.stack],delete j.stack);var Y=[];j.options.push(Y),L=Y;break;case\"{\":var Z,ee,ie=/^(\\d+)(,(\\d+)?)?\\}/.exec($.slice(x));null!==ie?(0===L.length&&repeatErr(x),Z=parseInt(ie[1],10),ee=ie[2]?ie[3]?parseInt(ie[3],10):1/0:Z,x+=ie[0].length,L.push({type:u.REPETITION,min:Z,max:ee,value:L.pop()})):L.push({type:u.CHAR,value:123});break;case\"?\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:0,max:1,value:L.pop()});break;case\"+\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:1,max:1/0,value:L.pop()});break;case\"*\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:0,max:1/0,value:L.pop()});break;default:L.push({type:u.CHAR,value:i.charCodeAt(0)})}return 0!==B.length&&a.error(s,\"Unterminated group\"),C},s.exports.types=u},27301:s=>{s.exports=function baseUnary(s){return function(o){return s(o)}}},27374:(s,o)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=function(s,o,i){if(void 0===s)throw new Error('Reducer \"'+o+'\" returned undefined when handling \"'+i.type+'\" action. To ignore an action, you must explicitly return the previous state.')},s.exports=o.default},27534:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function baseIsArguments(s){return u(s)&&\"[object Arguments]\"==a(s)}},27816:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1518500249,1859775393,-1894007588,-899497514],x=new Array(80);function Sha(){this.init(),this._w=x,u.call(this,64,56)}function rotl30(s){return s<<30|s>>>2}function ft(s,o,i,a){return 0===s?o&i|~o&a:2===s?o&i|o&a|i&a:o^i^a}a(Sha,u),Sha.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0;j<16;++j)i[j]=s.readInt32BE(4*j);for(;j<80;++j)i[j]=i[j-3]^i[j-8]^i[j-14]^i[j-16];for(var L=0;L<80;++L){var B=~~(L/20),$=0|((o=a)<<5|o>>>27)+ft(B,u,_,x)+C+i[L]+w[B];C=x,x=_,_=rotl30(u),u=a,a=$}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0},Sha.prototype._hash=function(){var s=_.allocUnsafe(20);return s.writeInt32BE(0|this._a,0),s.writeInt32BE(0|this._b,4),s.writeInt32BE(0|this._c,8),s.writeInt32BE(0|this._d,12),s.writeInt32BE(0|this._e,16),s},s.exports=Sha},28077:s=>{s.exports=function baseHasIn(s,o){return null!=s&&o in Object(s)}},28303:(s,o,i)=>{var a=i(56110)(i(9325),\"WeakMap\");s.exports=a},28311:(s,o,i)=>{\"use strict\";var a=i(92361),u=i(82159),_=i(41505),w=a(a.bind);s.exports=function(s,o){return u(s),void 0===o?s:_?w(s,o):function(){return s.apply(o,arguments)}}},28586:(s,o,i)=>{var a=i(56449),u=i(44394),_=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,w=/^\\w*$/;s.exports=function isKey(s,o){if(a(s))return!1;var i=typeof s;return!(\"number\"!=i&&\"symbol\"!=i&&\"boolean\"!=i&&null!=s&&!u(s))||(w.test(s)||!_.test(s)||null!=o&&s in Object(o))}},28754:(s,o,i)=>{var a=i(25160);s.exports=function castSlice(s,o,i){var u=s.length;return i=void 0===i?u:i,!o&&i>=u?s:a(s,o,i)}},28879:(s,o,i)=>{var a=i(74335)(Object.getPrototypeOf,Object);s.exports=a},29172:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsMap(s){return u(s)&&\"[object Map]\"==a(s)}},29367:(s,o,i)=>{\"use strict\";var a=i(82159),u=i(87136);s.exports=function(s,o){var i=s[o];return u(i)?void 0:a(i)}},29538:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(1907),_=i(13930),w=i(98828),x=i(2875),C=i(87170),j=i(22574),L=i(39298),B=i(16946),$=Object.assign,V=Object.defineProperty,U=u([].concat);s.exports=!$||w((function(){if(a&&1!==$({b:1},$(V({},\"a\",{enumerable:!0,get:function(){V(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var s={},o={},i=Symbol(\"assign detection\"),u=\"abcdefghijklmnopqrst\";return s[i]=7,u.split(\"\").forEach((function(s){o[s]=s})),7!==$({},s)[i]||x($({},o)).join(\"\")!==u}))?function assign(s,o){for(var i=L(s),u=arguments.length,w=1,$=C.f,V=j.f;u>w;)for(var z,Y=B(arguments[w++]),Z=$?U(x(Y),$(Y)):x(Y),ee=Z.length,ie=0;ee>ie;)z=Z[ie++],a&&!_(V,Y,z)||(i[z]=Y[z]);return i}:$},29817:s=>{s.exports=function stackHas(s){return this.__data__.has(s)}},29844:(s,o)=>{\"use strict\";function f(s,o){var i=s.length;s.push(o);e:for(;0<i;){var a=i-1>>>1,u=s[a];if(!(0<g(u,o)))break e;s[a]=o,s[i]=u,i=a}}function h(s){return 0===s.length?null:s[0]}function k(s){if(0===s.length)return null;var o=s[0],i=s.pop();if(i!==o){s[0]=i;e:for(var a=0,u=s.length,_=u>>>1;a<_;){var w=2*(a+1)-1,x=s[w],C=w+1,j=s[C];if(0>g(x,i))C<u&&0>g(j,x)?(s[a]=j,s[C]=i,a=C):(s[a]=x,s[w]=i,a=w);else{if(!(C<u&&0>g(j,i)))break e;s[a]=j,s[C]=i,a=C}}}return o}function g(s,o){var i=s.sortIndex-o.sortIndex;return 0!==i?i:s.id-o.id}if(\"object\"==typeof performance&&\"function\"==typeof performance.now){var i=performance;o.unstable_now=function(){return i.now()}}else{var a=Date,u=a.now();o.unstable_now=function(){return a.now()-u}}var _=[],w=[],x=1,C=null,j=3,L=!1,B=!1,$=!1,V=\"function\"==typeof setTimeout?setTimeout:null,U=\"function\"==typeof clearTimeout?clearTimeout:null,z=\"undefined\"!=typeof setImmediate?setImmediate:null;function G(s){for(var o=h(w);null!==o;){if(null===o.callback)k(w);else{if(!(o.startTime<=s))break;k(w),o.sortIndex=o.expirationTime,f(_,o)}o=h(w)}}function H(s){if($=!1,G(s),!B)if(null!==h(_))B=!0,I(J);else{var o=h(w);null!==o&&K(H,o.startTime-s)}}function J(s,i){B=!1,$&&($=!1,U(ie),ie=-1),L=!0;var a=j;try{for(G(i),C=h(_);null!==C&&(!(C.expirationTime>i)||s&&!M());){var u=C.callback;if(\"function\"==typeof u){C.callback=null,j=C.priorityLevel;var x=u(C.expirationTime<=i);i=o.unstable_now(),\"function\"==typeof x?C.callback=x:C===h(_)&&k(_),G(i)}else k(_);C=h(_)}if(null!==C)var V=!0;else{var z=h(w);null!==z&&K(H,z.startTime-i),V=!1}return V}finally{C=null,j=a,L=!1}}\"undefined\"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var Y,Z=!1,ee=null,ie=-1,ae=5,ce=-1;function M(){return!(o.unstable_now()-ce<ae)}function R(){if(null!==ee){var s=o.unstable_now();ce=s;var i=!0;try{i=ee(!0,s)}finally{i?Y():(Z=!1,ee=null)}}else Z=!1}if(\"function\"==typeof z)Y=function(){z(R)};else if(\"undefined\"!=typeof MessageChannel){var le=new MessageChannel,pe=le.port2;le.port1.onmessage=R,Y=function(){pe.postMessage(null)}}else Y=function(){V(R,0)};function I(s){ee=s,Z||(Z=!0,Y())}function K(s,i){ie=V((function(){s(o.unstable_now())}),i)}o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(s){s.callback=null},o.unstable_continueExecution=function(){B||L||(B=!0,I(J))},o.unstable_forceFrameRate=function(s){0>s||125<s?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):ae=0<s?Math.floor(1e3/s):5},o.unstable_getCurrentPriorityLevel=function(){return j},o.unstable_getFirstCallbackNode=function(){return h(_)},o.unstable_next=function(s){switch(j){case 1:case 2:case 3:var o=3;break;default:o=j}var i=j;j=o;try{return s()}finally{j=i}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=function(){},o.unstable_runWithPriority=function(s,o){switch(s){case 1:case 2:case 3:case 4:case 5:break;default:s=3}var i=j;j=s;try{return o()}finally{j=i}},o.unstable_scheduleCallback=function(s,i,a){var u=o.unstable_now();switch(\"object\"==typeof a&&null!==a?a=\"number\"==typeof(a=a.delay)&&0<a?u+a:u:a=u,s){case 1:var C=-1;break;case 2:C=250;break;case 5:C=1073741823;break;case 4:C=1e4;break;default:C=5e3}return s={id:x++,callback:i,priorityLevel:s,startTime:a,expirationTime:C=a+C,sortIndex:-1},a>u?(s.sortIndex=a,f(w,s),null===h(_)&&s===h(w)&&($?(U(ie),ie=-1):$=!0,K(H,a-u))):(s.sortIndex=C,f(_,s),B||L||(B=!0,I(J))),s},o.unstable_shouldYield=M,o.unstable_wrapCallback=function(s){var o=j;return function(){var i=j;j=o;try{return s.apply(this,arguments)}finally{j=i}}}},30294:s=>{s.exports=function isLength(s){return\"number\"==typeof s&&s>-1&&s%1==0&&s<=9007199254740991}},30361:s=>{var o=/^(?:0|[1-9]\\d*)$/;s.exports=function isIndex(s,i){var a=typeof s;return!!(i=null==i?9007199254740991:i)&&(\"number\"==a||\"symbol\"!=a&&o.test(s))&&s>-1&&s%1==0&&s<i}},30641:(s,o,i)=>{var a=i(86649),u=i(95950);s.exports=function baseForOwn(s,o){return s&&a(s,o,u)}},30756:(s,o,i)=>{var a=i(23805);s.exports=function isStrictComparable(s){return s==s&&!a(s)}},30980:(s,o,i)=>{var a=i(39344),u=i(94033);function LazyWrapper(s){this.__wrapped__=s,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}LazyWrapper.prototype=a(u.prototype),LazyWrapper.prototype.constructor=LazyWrapper,s.exports=LazyWrapper},31175:(s,o,i)=>{var a=i(26025);s.exports=function listCacheSet(s,o){var i=this.__data__,u=a(i,s);return u<0?(++this.size,i.push([s,o])):i[u][1]=o,this}},31380:s=>{s.exports=function setCacheAdd(s){return this.__data__.set(s,\"__lodash_hash_undefined__\"),this}},31499:s=>{var o={\"&\":\"&amp;\",'\"':\"&quot;\",\"'\":\"&apos;\",\"<\":\"&lt;\",\">\":\"&gt;\"};s.exports=function escapeForXML(s){return s&&s.replace?s.replace(/([&\"<>'])/g,(function(s,i){return o[i]})):s}},31769:(s,o,i)=>{var a=i(56449),u=i(28586),_=i(61802),w=i(13222);s.exports=function castPath(s,o){return a(s)?s:u(s,o)?[s]:_(w(s))}},31800:s=>{var o=/\\s/;s.exports=function trimmedEndIndex(s){for(var i=s.length;i--&&o.test(s.charAt(i)););return i}},32096:(s,o,i)=>{\"use strict\";var a=i(90160);s.exports=function(s,o){return void 0===s?arguments.length<2?\"\":o:a(s)}},32567:(s,o,i)=>{\"use strict\";i(79307);var a=i(61747);s.exports=a(\"Function\",\"bind\")},32629:(s,o,i)=>{var a=i(9999);s.exports=function clone(s){return a(s,4)}},32804:(s,o,i)=>{var a=i(56110)(i(9325),\"Promise\");s.exports=a},32827:(s,o,i)=>{var a=i(56698),u=i(82890),_=i(90392),w=i(92861).Buffer,x=new Array(160);function Sha384(){this.init(),this._w=x,_.call(this,128,112)}a(Sha384,u),Sha384.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},Sha384.prototype._hash=function(){var s=w.allocUnsafe(48);function writeInt64BE(o,i,a){s.writeInt32BE(o,a),s.writeInt32BE(i,a+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),s},s.exports=Sha384},32865:(s,o,i)=>{var a=i(19570),u=i(51811)(a);s.exports=u},33855:(s,o,i)=>{var a=i(9999),u=i(15389);s.exports=function iteratee(s){return u(\"function\"==typeof s?s:a(s,1))}},34035:(s,o,i)=>{const a=i(3110),u=i(86804);o.g$=a,o.KeyValuePair=i(55973),o.G6=u.ArraySlice,o.ot=u.ObjectSlice,o.Hg=u.Element,o.Om=u.StringElement,o.kT=u.NumberElement,o.bd=u.BooleanElement,o.Os=u.NullElement,o.wE=u.ArrayElement,o.Sh=u.ObjectElement,o.Pr=u.MemberElement,o.sI=u.RefElement,o.Ft=u.LinkElement,o.e=u.refract,i(85105),i(75147)},34084:(s,o,i)=>{\"use strict\";var a=i(62250),u=i(46285),_=i(79192);s.exports=function(s,o,i){var w,x;return _&&a(w=o.constructor)&&w!==i&&u(x=w.prototype)&&x!==i.prototype&&_(s,x),s}},34840:(s,o,i)=>{var a=\"object\"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;s.exports=a},34849:(s,o,i)=>{\"use strict\";var a=i(65482),u=Math.max,_=Math.min;s.exports=function(s,o){var i=a(s);return i<0?u(i+o,0):_(i,o)}},34932:s=>{s.exports=function arrayMap(s,o){for(var i=-1,a=null==s?0:s.length,u=Array(a);++i<a;)u[i]=o(s[i],i,s);return u}},35344:s=>{function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function bash(s){const o={},i={begin:/\\$\\{/,end:/\\}/,contains:[\"self\",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:\"variable\",variants:[{begin:concat(/\\$[\\w\\d#@][\\w\\d_]*/,\"(?![\\\\w\\\\d])(?![$])\")},i]});const a={className:\"subst\",begin:/\\$\\(/,end:/\\)/,contains:[s.BACKSLASH_ESCAPE]},u={begin:/<<-?\\s*(?=\\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\\w+)/,end:/(\\w+)/,className:\"string\"})]}},_={className:\"string\",begin:/\"/,end:/\"/,contains:[s.BACKSLASH_ESCAPE,o,a]};a.contains.push(_);const w={begin:/\\$\\(\\(/,end:/\\)\\)/,contains:[{begin:/\\d+#[0-9a-f]+/,className:\"number\"},s.NUMBER_MODE,o]},x=s.SHEBANG({binary:`(${[\"fish\",\"bash\",\"zsh\",\"sh\",\"csh\",\"ksh\",\"tcsh\",\"dash\",\"scsh\"].join(\"|\")})`,relevance:10}),C={className:\"function\",begin:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,returnBegin:!0,contains:[s.inherit(s.TITLE_MODE,{begin:/\\w[\\w\\d_]*/})],relevance:0};return{name:\"Bash\",aliases:[\"sh\",\"zsh\"],keywords:{$pattern:/\\b[a-z._-]+\\b/,keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\"},contains:[x,s.SHEBANG(),C,w,s.HASH_COMMENT_MODE,u,_,{className:\"\",begin:/\\\\\"/},{className:\"string\",begin:/'/,end:/'/},o]}}},35529:(s,o,i)=>{var a=i(39344),u=i(28879),_=i(55527);s.exports=function initCloneObject(s){return\"function\"!=typeof s.constructor||_(s)?{}:a(u(s))}},35749:(s,o,i)=>{var a=i(81042);s.exports=function hashSet(s,o){var i=this.__data__;return this.size+=this.has(s)?0:1,i[s]=a&&void 0===o?\"__lodash_hash_undefined__\":o,this}},35970:(s,o,i)=>{var a=i(83120);s.exports=function flatten(s){return(null==s?0:s.length)?a(s,1):[]}},36128:(s,o,i)=>{\"use strict\";var a=i(7376),u=i(45951),_=i(2532),w=\"__core-js_shared__\",x=s.exports=u[w]||_(w,{});(x.versions||(x.versions=[])).push({version:\"3.40.0\",mode:a?\"pure\":\"global\",copyright:\"© 2014-2025 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},36306:s=>{var o=\"__lodash_placeholder__\";s.exports=function replaceHolders(s,i){for(var a=-1,u=s.length,_=0,w=[];++a<u;){var x=s[a];x!==i&&x!==o||(s[a]=o,w[_++]=a)}return w}},36371:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(85582),_=i(76024),w=i(98828),x=i(19358),C=\"AggregateError\",j=u(C),L=!w((function(){return 1!==j([1]).errors[0]}))&&w((function(){return 7!==j([1],C,{cause:7}).cause}));a({global:!0,constructor:!0,arity:2,forced:L},{AggregateError:x(C,(function(s){return function AggregateError(o,i){return _(s,this,arguments)}}),L,!0)})},36624:(s,o,i)=>{\"use strict\";var a=i(46285),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(u(s)+\" is not an object\")}},36800:(s,o,i)=>{var a=i(75288),u=i(64894),_=i(30361),w=i(23805);s.exports=function isIterateeCall(s,o,i){if(!w(i))return!1;var x=typeof o;return!!(\"number\"==x?u(i)&&_(o,i.length):\"string\"==x&&o in i)&&a(i[o],s)}},36833:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(49724),_=Function.prototype,w=a&&Object.getOwnPropertyDescriptor,x=u(_,\"name\"),C=x&&\"something\"===function something(){}.name,j=x&&(!a||a&&w(_,\"name\").configurable);s.exports={EXISTS:x,PROPER:C,CONFIGURABLE:j}},37007:s=>{\"use strict\";var o,i=\"object\"==typeof Reflect?Reflect:null,a=i&&\"function\"==typeof i.apply?i.apply:function ReflectApply(s,o,i){return Function.prototype.apply.call(s,o,i)};o=i&&\"function\"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s)};var u=Number.isNaN||function NumberIsNaN(s){return s!=s};function EventEmitter(){EventEmitter.init.call(this)}s.exports=EventEmitter,s.exports.once=function once(s,o){return new Promise((function(i,a){function errorListener(i){s.removeListener(o,resolver),a(i)}function resolver(){\"function\"==typeof s.removeListener&&s.removeListener(\"error\",errorListener),i([].slice.call(arguments))}eventTargetAgnosticAddListener(s,o,resolver,{once:!0}),\"error\"!==o&&function addErrorHandlerIfEventEmitter(s,o,i){\"function\"==typeof s.on&&eventTargetAgnosticAddListener(s,\"error\",o,i)}(s,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(s){if(\"function\"!=typeof s)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof s)}function _getMaxListeners(s){return void 0===s._maxListeners?EventEmitter.defaultMaxListeners:s._maxListeners}function _addListener(s,o,i,a){var u,_,w;if(checkListener(i),void 0===(_=s._events)?(_=s._events=Object.create(null),s._eventsCount=0):(void 0!==_.newListener&&(s.emit(\"newListener\",o,i.listener?i.listener:i),_=s._events),w=_[o]),void 0===w)w=_[o]=i,++s._eventsCount;else if(\"function\"==typeof w?w=_[o]=a?[i,w]:[w,i]:a?w.unshift(i):w.push(i),(u=_getMaxListeners(s))>0&&w.length>u&&!w.warned){w.warned=!0;var x=new Error(\"Possible EventEmitter memory leak detected. \"+w.length+\" \"+String(o)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");x.name=\"MaxListenersExceededWarning\",x.emitter=s,x.type=o,x.count=w.length,function ProcessEmitWarning(s){console&&console.warn&&console.warn(s)}(x)}return s}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(s,o,i){var a={fired:!1,wrapFn:void 0,target:s,type:o,listener:i},u=onceWrapper.bind(a);return u.listener=i,a.wrapFn=u,u}function _listeners(s,o,i){var a=s._events;if(void 0===a)return[];var u=a[o];return void 0===u?[]:\"function\"==typeof u?i?[u.listener||u]:[u]:i?function unwrapListeners(s){for(var o=new Array(s.length),i=0;i<o.length;++i)o[i]=s[i].listener||s[i];return o}(u):arrayClone(u,u.length)}function listenerCount(s){var o=this._events;if(void 0!==o){var i=o[s];if(\"function\"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function arrayClone(s,o){for(var i=new Array(o),a=0;a<o;++a)i[a]=s[a];return i}function eventTargetAgnosticAddListener(s,o,i,a){if(\"function\"==typeof s.on)a.once?s.once(o,i):s.on(o,i);else{if(\"function\"!=typeof s.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof s);s.addEventListener(o,(function wrapListener(u){a.once&&s.removeEventListener(o,wrapListener),i(u)}))}}Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:!0,get:function(){return _},set:function(s){if(\"number\"!=typeof s||s<0||u(s))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+s+\".\");_=s}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function setMaxListeners(s){if(\"number\"!=typeof s||s<0||u(s))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+s+\".\");return this._maxListeners=s,this},EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)},EventEmitter.prototype.emit=function emit(s){for(var o=[],i=1;i<arguments.length;i++)o.push(arguments[i]);var u=\"error\"===s,_=this._events;if(void 0!==_)u=u&&void 0===_.error;else if(!u)return!1;if(u){var w;if(o.length>0&&(w=o[0]),w instanceof Error)throw w;var x=new Error(\"Unhandled error.\"+(w?\" (\"+w.message+\")\":\"\"));throw x.context=w,x}var C=_[s];if(void 0===C)return!1;if(\"function\"==typeof C)a(C,this,o);else{var j=C.length,L=arrayClone(C,j);for(i=0;i<j;++i)a(L[i],this,o)}return!0},EventEmitter.prototype.addListener=function addListener(s,o){return _addListener(this,s,o,!1)},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.prependListener=function prependListener(s,o){return _addListener(this,s,o,!0)},EventEmitter.prototype.once=function once(s,o){return checkListener(o),this.on(s,_onceWrap(this,s,o)),this},EventEmitter.prototype.prependOnceListener=function prependOnceListener(s,o){return checkListener(o),this.prependListener(s,_onceWrap(this,s,o)),this},EventEmitter.prototype.removeListener=function removeListener(s,o){var i,a,u,_,w;if(checkListener(o),void 0===(a=this._events))return this;if(void 0===(i=a[s]))return this;if(i===o||i.listener===o)0==--this._eventsCount?this._events=Object.create(null):(delete a[s],a.removeListener&&this.emit(\"removeListener\",s,i.listener||o));else if(\"function\"!=typeof i){for(u=-1,_=i.length-1;_>=0;_--)if(i[_]===o||i[_].listener===o){w=i[_].listener,u=_;break}if(u<0)return this;0===u?i.shift():function spliceOne(s,o){for(;o+1<s.length;o++)s[o]=s[o+1];s.pop()}(i,u),1===i.length&&(a[s]=i[0]),void 0!==a.removeListener&&this.emit(\"removeListener\",s,w||o)}return this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.removeAllListeners=function removeAllListeners(s){var o,i,a;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[s]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[s]),this;if(0===arguments.length){var u,_=Object.keys(i);for(a=0;a<_.length;++a)\"removeListener\"!==(u=_[a])&&this.removeAllListeners(u);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(o=i[s]))this.removeListener(s,o);else if(void 0!==o)for(a=o.length-1;a>=0;a--)this.removeListener(s,o[a]);return this},EventEmitter.prototype.listeners=function listeners(s){return _listeners(this,s,!0)},EventEmitter.prototype.rawListeners=function rawListeners(s){return _listeners(this,s,!1)},EventEmitter.listenerCount=function(s,o){return\"function\"==typeof s.listenerCount?s.listenerCount(o):listenerCount.call(s,o)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?o(this._events):[]}},37167:(s,o,i)=>{var a=i(4901),u=i(27301),_=i(86009),w=_&&_.isTypedArray,x=w?u(w):a;s.exports=x},37217:(s,o,i)=>{var a=i(80079),u=i(51420),_=i(90938),w=i(63605),x=i(29817),C=i(80945);function Stack(s){var o=this.__data__=new a(s);this.size=o.size}Stack.prototype.clear=u,Stack.prototype.delete=_,Stack.prototype.get=w,Stack.prototype.has=x,Stack.prototype.set=C,s.exports=Stack},37241:(s,o,i)=>{var a=i(70695),u=i(72903),_=i(64894);s.exports=function keysIn(s){return _(s)?a(s,!0):u(s)}},37257:(s,o,i)=>{\"use strict\";i(96605),i(64502),i(36371),i(99363),i(7057);var a=i(92046);s.exports=a.AggregateError},37334:s=>{s.exports=function constant(s){return function(){return s}}},37381:(s,o,i)=>{var a=i(48152),u=i(63950),_=a?function(s){return a.get(s)}:u;s.exports=_},37471:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(58523),w=i(82819),x=i(18073),C=i(11287),j=i(68294),L=i(36306),B=i(9325);s.exports=function createHybrid(s,o,i,$,V,U,z,Y,Z,ee){var ie=128&o,ae=1&o,ce=2&o,le=24&o,pe=512&o,de=ce?void 0:w(s);return function wrapper(){for(var fe=arguments.length,ye=Array(fe),be=fe;be--;)ye[be]=arguments[be];if(le)var _e=C(wrapper),Se=_(ye,_e);if($&&(ye=a(ye,$,V,le)),U&&(ye=u(ye,U,z,le)),fe-=Se,le&&fe<ee){var we=L(ye,_e);return x(s,o,createHybrid,wrapper.placeholder,i,ye,we,Y,Z,ee-fe)}var xe=ae?i:this,Pe=ce?xe[s]:s;return fe=ye.length,Y?ye=j(ye,Y):pe&&fe>1&&ye.reverse(),ie&&Z<fe&&(ye.length=Z),this&&this!==B&&this instanceof wrapper&&(Pe=de||w(Pe)),Pe.apply(xe,ye)}}},37812:(s,o,i)=>{\"use strict\";var a=i(76264),u=i(93742),_=a(\"iterator\"),w=Array.prototype;s.exports=function(s){return void 0!==s&&(u.Array===s||w[_]===s)}},37828:(s,o,i)=>{var a=i(9325).Uint8Array;s.exports=a},38221:(s,o,i)=>{var a=i(23805),u=i(10124),_=i(99374),w=Math.max,x=Math.min;s.exports=function debounce(s,o,i){var C,j,L,B,$,V,U=0,z=!1,Y=!1,Z=!0;if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");function invokeFunc(o){var i=C,a=j;return C=j=void 0,U=o,B=s.apply(a,i)}function shouldInvoke(s){var i=s-V;return void 0===V||i>=o||i<0||Y&&s-U>=L}function timerExpired(){var s=u();if(shouldInvoke(s))return trailingEdge(s);$=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-V);return Y?x(i,L-(s-U)):i}(s))}function trailingEdge(s){return $=void 0,Z&&C?invokeFunc(s):(C=j=void 0,B)}function debounced(){var s=u(),i=shouldInvoke(s);if(C=arguments,j=this,V=s,i){if(void 0===$)return function leadingEdge(s){return U=s,$=setTimeout(timerExpired,o),z?invokeFunc(s):B}(V);if(Y)return clearTimeout($),$=setTimeout(timerExpired,o),invokeFunc(V)}return void 0===$&&($=setTimeout(timerExpired,o)),B}return o=_(o)||0,a(i)&&(z=!!i.leading,L=(Y=\"maxWait\"in i)?w(_(i.maxWait)||0,o):L,Z=\"trailing\"in i?!!i.trailing:Z),debounced.cancel=function cancel(){void 0!==$&&clearTimeout($),U=0,C=V=j=$=void 0},debounced.flush=function flush(){return void 0===$?B:trailingEdge(u())},debounced}},38329:(s,o,i)=>{var a=i(64894);s.exports=function createBaseEach(s,o){return function(i,u){if(null==i)return i;if(!a(i))return s(i,u);for(var _=i.length,w=o?_:-1,x=Object(i);(o?w--:++w<_)&&!1!==u(x[w],w,x););return i}}},38440:(s,o,i)=>{var a=i(16038),u=i(27301),_=i(86009),w=_&&_.isSet,x=w?u(w):a;s.exports=x},38530:s=>{\"use strict\";s.exports={}},38816:(s,o,i)=>{var a=i(35970),u=i(56757),_=i(32865);s.exports=function flatRest(s){return _(u(s,void 0,a),s+\"\")}},38859:(s,o,i)=>{var a=i(53661),u=i(31380),_=i(51459);function SetCache(s){var o=-1,i=null==s?0:s.length;for(this.__data__=new a;++o<i;)this.add(s[o])}SetCache.prototype.add=SetCache.prototype.push=u,SetCache.prototype.has=_,s.exports=SetCache},39259:(s,o,i)=>{\"use strict\";var a=i(46285),u=i(61626);s.exports=function(s,o){a(o)&&\"cause\"in o&&u(s,\"cause\",o.cause)}},39298:(s,o,i)=>{\"use strict\";var a=i(74239),u=Object;s.exports=function(s){return u(a(s))}},39344:(s,o,i)=>{var a=i(23805),u=Object.create,_=function(){function object(){}return function(s){if(!a(s))return{};if(u)return u(s);object.prototype=s;var o=new object;return object.prototype=void 0,o}}();s.exports=_},39447:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},40154:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(36624),_=i(29367);s.exports=function(s,o,i){var w,x;u(s);try{if(!(w=_(s,\"return\"))){if(\"throw\"===o)throw i;return i}w=a(w,s)}catch(s){x=!0,w=s}if(\"throw\"===o)throw i;if(x)throw w;return u(w),i}},40239:(s,o,i)=>{const a=i(10316);s.exports=class NumberElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"number\"}primitive(){return\"number\"}}},40345:(s,o,i)=>{s.exports=i(37007).EventEmitter},40346:s=>{s.exports=function isObjectLike(s){return null!=s&&\"object\"==typeof s}},40551:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(62250),_=a.WeakMap;s.exports=u(_)&&/native code/.test(String(_))},40860:(s,o,i)=>{var a=i(40882),u=i(80909),_=i(15389),w=i(85558),x=i(56449);s.exports=function reduce(s,o,i){var C=x(s)?a:w,j=arguments.length<3;return C(s,_(o,4),i,j,u)}},40882:s=>{s.exports=function arrayReduce(s,o,i,a){var u=-1,_=null==s?0:s.length;for(a&&_&&(i=s[++u]);++u<_;)i=o(i,s[u],u,s);return i}},40961:(s,o,i)=>{\"use strict\";!function checkDCE(){if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(s){console.error(s)}}(),s.exports=i(22551)},40975:(s,o,i)=>{\"use strict\";var a=i(9748);s.exports=a},41067:(s,o,i)=>{const a=i(10316);s.exports=class NullElement extends a{constructor(s,o,i){super(s||null,o,i),this.element=\"null\"}primitive(){return\"null\"}set(){return new Error(\"Cannot set the value of null\")}}},41176:s=>{\"use strict\";var o=Math.ceil,i=Math.floor;s.exports=Math.trunc||function trunc(s){var a=+s;return(a>0?i:o)(a)}},41505:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){var s=function(){}.bind();return\"function\"!=typeof s||s.hasOwnProperty(\"prototype\")}))},41799:(s,o,i)=>{var a=i(37217),u=i(60270);s.exports=function baseIsMatch(s,o,i,_){var w=i.length,x=w,C=!_;if(null==s)return!x;for(s=Object(s);w--;){var j=i[w];if(C&&j[2]?j[1]!==s[j[0]]:!(j[0]in s))return!1}for(;++w<x;){var L=(j=i[w])[0],B=s[L],$=j[1];if(C&&j[2]){if(void 0===B&&!(L in s))return!1}else{var V=new a;if(_)var U=_(B,$,L,s,o,V);if(!(void 0===U?u($,B,3,_,V):U))return!1}}return!0}},41859:(s,o,i)=>{const a=i(27096),u=i(78004),_=a.types;s.exports=class RandExp{constructor(s,o){if(this._setDefaults(s),s instanceof RegExp)this.ignoreCase=s.ignoreCase,this.multiline=s.multiline,s=s.source;else{if(\"string\"!=typeof s)throw new Error(\"Expected a regexp or string\");this.ignoreCase=o&&-1!==o.indexOf(\"i\"),this.multiline=o&&-1!==o.indexOf(\"m\")}this.tokens=a(s)}_setDefaults(s){this.max=null!=s.max?s.max:null!=RandExp.prototype.max?RandExp.prototype.max:100,this.defaultRange=s.defaultRange?s.defaultRange:this.defaultRange.clone(),s.randInt&&(this.randInt=s.randInt)}gen(){return this._gen(this.tokens,[])}_gen(s,o){var i,a,u,w,x;switch(s.type){case _.ROOT:case _.GROUP:if(s.followedBy||s.notFollowedBy)return\"\";for(s.remember&&void 0===s.groupNumber&&(s.groupNumber=o.push(null)-1),a=\"\",w=0,x=(i=s.options?this._randSelect(s.options):s.stack).length;w<x;w++)a+=this._gen(i[w],o);return s.remember&&(o[s.groupNumber]=a),a;case _.POSITION:return\"\";case _.SET:var C=this._expand(s);return C.length?String.fromCharCode(this._randSelect(C)):\"\";case _.REPETITION:for(u=this.randInt(s.min,s.max===1/0?s.min+this.max:s.max),a=\"\",w=0;w<u;w++)a+=this._gen(s.value,o);return a;case _.REFERENCE:return o[s.value-1]||\"\";case _.CHAR:var j=this.ignoreCase&&this._randBool()?this._toOtherCase(s.value):s.value;return String.fromCharCode(j)}}_toOtherCase(s){return s+(97<=s&&s<=122?-32:65<=s&&s<=90?32:0)}_randBool(){return!this.randInt(0,1)}_randSelect(s){return s instanceof u?s.index(this.randInt(0,s.length-1)):s[this.randInt(0,s.length-1)]}_expand(s){if(s.type===a.types.CHAR)return new u(s.value);if(s.type===a.types.RANGE)return new u(s.from,s.to);{let o=new u;for(let i=0;i<s.set.length;i++){let a=this._expand(s.set[i]);if(o.add(a),this.ignoreCase)for(let s=0;s<a.length;s++){let i=a.index(s),u=this._toOtherCase(i);i!==u&&o.add(u)}}return s.not?this.defaultRange.clone().subtract(o):this.defaultRange.clone().intersect(o)}}randInt(s,o){return s+Math.floor(Math.random()*(1+o-s))}get defaultRange(){return this._range=this._range||new u(32,126)}set defaultRange(s){this._range=s}static randexp(s,o){var i;return\"string\"==typeof s&&(s=new RegExp(s,o)),void 0===s._randexp?(i=new RandExp(s,o),s._randexp=i):(i=s._randexp)._setDefaults(s),i.gen()}static sugar(){RegExp.prototype.gen=function(){return RandExp.randexp(this)}}}},42054:s=>{var o=\"\\\\ud800-\\\\udfff\",i=\"[\"+o+\"]\",a=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",u=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",_=\"[^\"+o+\"]\",w=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",x=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",C=\"(?:\"+a+\"|\"+u+\")\"+\"?\",j=\"[\\\\ufe0e\\\\ufe0f]?\",L=j+C+(\"(?:\\\\u200d(?:\"+[_,w,x].join(\"|\")+\")\"+j+C+\")*\"),B=\"(?:\"+[_+a+\"?\",a,w,x,i].join(\"|\")+\")\",$=RegExp(u+\"(?=\"+u+\")|\"+B+L,\"g\");s.exports=function unicodeToArray(s){return s.match($)||[]}},42072:(s,o,i)=>{var a=i(34932),u=i(23007),_=i(56449),w=i(44394),x=i(61802),C=i(77797),j=i(13222);s.exports=function toPath(s){return _(s)?a(s,C):w(s)?[s]:u(x(j(s)))}},42156:s=>{\"use strict\";s.exports=function(){}},42220:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(58661),_=i(74284),w=i(36624),x=i(4993),C=i(2875);o.f=a&&!u?Object.defineProperties:function defineProperties(s,o){w(s);for(var i,a=x(o),u=C(o),j=u.length,L=0;j>L;)_.f(s,i=u[L++],a[i]);return s}},42426:(s,o,i)=>{var a=i(14248),u=i(15389),_=i(90916),w=i(56449),x=i(36800);s.exports=function some(s,o,i){var C=w(s)?a:_;return i&&x(s,o,i)&&(o=void 0),C(s,u(o,3))}},42824:(s,o,i)=>{var a=i(87805),u=i(93290),_=i(71961),w=i(23007),x=i(35529),C=i(72428),j=i(56449),L=i(83693),B=i(3656),$=i(1882),V=i(23805),U=i(11331),z=i(37167),Y=i(14974),Z=i(69884);s.exports=function baseMergeDeep(s,o,i,ee,ie,ae,ce){var le=Y(s,i),pe=Y(o,i),de=ce.get(pe);if(de)a(s,i,de);else{var fe=ae?ae(le,pe,i+\"\",s,o,ce):void 0,ye=void 0===fe;if(ye){var be=j(pe),_e=!be&&B(pe),Se=!be&&!_e&&z(pe);fe=pe,be||_e||Se?j(le)?fe=le:L(le)?fe=w(le):_e?(ye=!1,fe=u(pe,!0)):Se?(ye=!1,fe=_(pe,!0)):fe=[]:U(pe)||C(pe)?(fe=le,C(le)?fe=Z(le):V(le)&&!$(le)||(fe=x(pe))):ye=!1}ye&&(ce.set(pe,fe),ie(fe,pe,ee,ae,ce),ce.delete(pe)),a(s,i,fe)}}},43360:(s,o,i)=>{var a=i(93243);s.exports=function baseAssignValue(s,o,i){\"__proto__\"==o&&a?a(s,o,{configurable:!0,enumerable:!0,value:i,writable:!0}):s[o]=i}},43768:(s,o,i)=>{\"use strict\";var a=i(45981),u=i(85587);o.highlight=highlight,o.highlightAuto=function highlightAuto(s,o){var i,w,x,C,j=o||{},L=j.subset||a.listLanguages(),B=j.prefix,$=L.length,V=-1;null==B&&(B=_);if(\"string\"!=typeof s)throw u(\"Expected `string` for value, got `%s`\",s);w={relevance:0,language:null,value:[]},i={relevance:0,language:null,value:[]};for(;++V<$;)C=L[V],a.getLanguage(C)&&((x=highlight(C,s,o)).language=C,x.relevance>w.relevance&&(w=x),x.relevance>i.relevance&&(w=i,i=x));w.language&&(i.secondBest=w);return i},o.registerLanguage=function registerLanguage(s,o){a.registerLanguage(s,o)},o.listLanguages=function listLanguages(){return a.listLanguages()},o.registerAlias=function registerAlias(s,o){var i,u=s;o&&((u={})[s]=o);for(i in u)a.registerAliases(u[i],{languageName:i})},Emitter.prototype.addText=function text(s){var o,i,a=this.stack;if(\"\"===s)return;o=a[a.length-1],(i=o.children[o.children.length-1])&&\"text\"===i.type?i.value+=s:o.children.push({type:\"text\",value:s})},Emitter.prototype.addKeyword=function addKeyword(s,o){this.openNode(o),this.addText(s),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(s,o){var i=this.stack,a=i[i.length-1],u=s.rootNode.children,_=o?{type:\"element\",tagName:\"span\",properties:{className:[o]},children:u}:u;a.children=a.children.concat(_)},Emitter.prototype.openNode=function open(s){var o=this.stack,i=this.options.classPrefix+s,a=o[o.length-1],u={type:\"element\",tagName:\"span\",properties:{className:[i]},children:[]};a.children.push(u),o.push(u)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return\"\"};var _=\"hljs-\";function highlight(s,o,i){var w,x=a.configure({}),C=(i||{}).prefix;if(\"string\"!=typeof s)throw u(\"Expected `string` for name, got `%s`\",s);if(!a.getLanguage(s))throw u(\"Unknown language: `%s` is not registered\",s);if(\"string\"!=typeof o)throw u(\"Expected `string` for value, got `%s`\",o);if(null==C&&(C=_),a.configure({__emitter:Emitter,classPrefix:C}),w=a.highlight(o,{language:s,ignoreIllegals:!0}),a.configure(x||{}),w.errorRaised)throw w.errorRaised;return{relevance:w.relevance,language:w.language,value:w.emitter.rootNode.children}}function Emitter(s){this.options=s,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},43838:(s,o,i)=>{var a=i(21791),u=i(37241);s.exports=function baseAssignIn(s,o){return s&&a(o,u(o),s)}},44394:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isSymbol(s){return\"symbol\"==typeof s||u(s)&&\"[object Symbol]\"==a(s)}},44673:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(82159),_=i(46285),w=i(49724),x=i(93427),C=i(41505),j=Function,L=a([].concat),B=a([].join),$={};s.exports=C?j.bind:function bind(s){var o=u(this),i=o.prototype,a=x(arguments,1),C=function bound(){var i=L(a,x(arguments));return this instanceof C?function(s,o,i){if(!w($,o)){for(var a=[],u=0;u<o;u++)a[u]=\"a[\"+u+\"]\";$[o]=j(\"C,a\",\"return new C(\"+B(a,\",\")+\")\")}return $[o](s,i)}(o,i.length,i):o.apply(s,i)};return _(i)&&(C.prototype=i),C}},45083:(s,o,i)=>{var a=i(1882),u=i(87296),_=i(23805),w=i(47473),x=/^\\[object .+?Constructor\\]$/,C=Function.prototype,j=Object.prototype,L=C.toString,B=j.hasOwnProperty,$=RegExp(\"^\"+L.call(B).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");s.exports=function baseIsNative(s){return!(!_(s)||u(s))&&(a(s)?$:x).test(w(s))}},45412:(s,o,i)=>{\"use strict\";var a,u=i(65606);s.exports=Readable,Readable.ReadableState=ReadableState;i(37007).EventEmitter;var _=function EElistenerCount(s,o){return s.listeners(o).length},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(79838);j=L&&L.debuglog?L.debuglog(\"stream\"):function debug(){};var B,$,V,U=i(80345),z=i(75896),Y=i(65291).getHighWaterMark,Z=i(86048).F,ee=Z.ERR_INVALID_ARG_TYPE,ie=Z.ERR_STREAM_PUSH_AFTER_EOF,ae=Z.ERR_METHOD_NOT_IMPLEMENTED,ce=Z.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;i(56698)(Readable,w);var le=z.errorOrDestroy,pe=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function ReadableState(s,o,u){a=a||i(25382),s=s||{},\"boolean\"!=typeof u&&(u=o instanceof a),this.objectMode=!!s.objectMode,u&&(this.objectMode=this.objectMode||!!s.readableObjectMode),this.highWaterMark=Y(this,s,\"readableHighWaterMark\",u),this.buffer=new U,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.destroyed=!1,this.defaultEncoding=s.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,s.encoding&&(B||(B=i(83141).I),this.decoder=new B(s.encoding),this.encoding=s.encoding)}function Readable(s){if(a=a||i(25382),!(this instanceof Readable))return new Readable(s);var o=this instanceof a;this._readableState=new ReadableState(s,this,o),this.readable=!0,s&&(\"function\"==typeof s.read&&(this._read=s.read),\"function\"==typeof s.destroy&&(this._destroy=s.destroy)),w.call(this)}function readableAddChunk(s,o,i,a,u){j(\"readableAddChunk\",o);var _,w=s._readableState;if(null===o)w.reading=!1,function onEofChunk(s,o){if(j(\"onEofChunk\"),o.ended)return;if(o.decoder){var i=o.decoder.end();i&&i.length&&(o.buffer.push(i),o.length+=o.objectMode?1:i.length)}o.ended=!0,o.sync?emitReadable(s):(o.needReadable=!1,o.emittedReadable||(o.emittedReadable=!0,emitReadable_(s)))}(s,w);else if(u||(_=function chunkInvalid(s,o){var i;(function _isUint8Array(s){return x.isBuffer(s)||s instanceof C})(o)||\"string\"==typeof o||void 0===o||s.objectMode||(i=new ee(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],o));return i}(w,o)),_)le(s,_);else if(w.objectMode||o&&o.length>0)if(\"string\"==typeof o||w.objectMode||Object.getPrototypeOf(o)===x.prototype||(o=function _uint8ArrayToBuffer(s){return x.from(s)}(o)),a)w.endEmitted?le(s,new ce):addChunk(s,w,o,!0);else if(w.ended)le(s,new ie);else{if(w.destroyed)return!1;w.reading=!1,w.decoder&&!i?(o=w.decoder.write(o),w.objectMode||0!==o.length?addChunk(s,w,o,!1):maybeReadMore(s,w)):addChunk(s,w,o,!1)}else a||(w.reading=!1,maybeReadMore(s,w));return!w.ended&&(w.length<w.highWaterMark||0===w.length)}function addChunk(s,o,i,a){o.flowing&&0===o.length&&!o.sync?(o.awaitDrain=0,s.emit(\"data\",i)):(o.length+=o.objectMode?1:i.length,a?o.buffer.unshift(i):o.buffer.push(i),o.needReadable&&emitReadable(s)),maybeReadMore(s,o)}Object.defineProperty(Readable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&this._readableState.destroyed},set:function set(s){this._readableState&&(this._readableState.destroyed=s)}}),Readable.prototype.destroy=z.destroy,Readable.prototype._undestroy=z.undestroy,Readable.prototype._destroy=function(s,o){o(s)},Readable.prototype.push=function(s,o){var i,a=this._readableState;return a.objectMode?i=!0:\"string\"==typeof s&&((o=o||a.defaultEncoding)!==a.encoding&&(s=x.from(s,o),o=\"\"),i=!0),readableAddChunk(this,s,o,!1,i)},Readable.prototype.unshift=function(s){return readableAddChunk(this,s,null,!0,!1)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(s){B||(B=i(83141).I);var o=new B(s);this._readableState.decoder=o,this._readableState.encoding=this._readableState.decoder.encoding;for(var a=this._readableState.buffer.head,u=\"\";null!==a;)u+=o.write(a.data),a=a.next;return this._readableState.buffer.clear(),\"\"!==u&&this._readableState.buffer.push(u),this._readableState.length=u.length,this};var de=1073741824;function howMuchToRead(s,o){return s<=0||0===o.length&&o.ended?0:o.objectMode?1:s!=s?o.flowing&&o.length?o.buffer.head.data.length:o.length:(s>o.highWaterMark&&(o.highWaterMark=function computeNewHighWaterMark(s){return s>=de?s=de:(s--,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s++),s}(s)),s<=o.length?s:o.ended?o.length:(o.needReadable=!0,0))}function emitReadable(s){var o=s._readableState;j(\"emitReadable\",o.needReadable,o.emittedReadable),o.needReadable=!1,o.emittedReadable||(j(\"emitReadable\",o.flowing),o.emittedReadable=!0,u.nextTick(emitReadable_,s))}function emitReadable_(s){var o=s._readableState;j(\"emitReadable_\",o.destroyed,o.length,o.ended),o.destroyed||!o.length&&!o.ended||(s.emit(\"readable\"),o.emittedReadable=!1),o.needReadable=!o.flowing&&!o.ended&&o.length<=o.highWaterMark,flow(s)}function maybeReadMore(s,o){o.readingMore||(o.readingMore=!0,u.nextTick(maybeReadMore_,s,o))}function maybeReadMore_(s,o){for(;!o.reading&&!o.ended&&(o.length<o.highWaterMark||o.flowing&&0===o.length);){var i=o.length;if(j(\"maybeReadMore read 0\"),s.read(0),i===o.length)break}o.readingMore=!1}function updateReadableListening(s){var o=s._readableState;o.readableListening=s.listenerCount(\"readable\")>0,o.resumeScheduled&&!o.paused?o.flowing=!0:s.listenerCount(\"data\")>0&&s.resume()}function nReadingNextTick(s){j(\"readable nexttick read 0\"),s.read(0)}function resume_(s,o){j(\"resume\",o.reading),o.reading||s.read(0),o.resumeScheduled=!1,s.emit(\"resume\"),flow(s),o.flowing&&!o.reading&&s.read(0)}function flow(s){var o=s._readableState;for(j(\"flow\",o.flowing);o.flowing&&null!==s.read(););}function fromList(s,o){return 0===o.length?null:(o.objectMode?i=o.buffer.shift():!s||s>=o.length?(i=o.decoder?o.buffer.join(\"\"):1===o.buffer.length?o.buffer.first():o.buffer.concat(o.length),o.buffer.clear()):i=o.buffer.consume(s,o.decoder),i);var i}function endReadable(s){var o=s._readableState;j(\"endReadable\",o.endEmitted),o.endEmitted||(o.ended=!0,u.nextTick(endReadableNT,o,s))}function endReadableNT(s,o){if(j(\"endReadableNT\",s.endEmitted,s.length),!s.endEmitted&&0===s.length&&(s.endEmitted=!0,o.readable=!1,o.emit(\"end\"),s.autoDestroy)){var i=o._writableState;(!i||i.autoDestroy&&i.finished)&&o.destroy()}}function indexOf(s,o){for(var i=0,a=s.length;i<a;i++)if(s[i]===o)return i;return-1}Readable.prototype.read=function(s){j(\"read\",s),s=parseInt(s,10);var o=this._readableState,i=s;if(0!==s&&(o.emittedReadable=!1),0===s&&o.needReadable&&((0!==o.highWaterMark?o.length>=o.highWaterMark:o.length>0)||o.ended))return j(\"read: emitReadable\",o.length,o.ended),0===o.length&&o.ended?endReadable(this):emitReadable(this),null;if(0===(s=howMuchToRead(s,o))&&o.ended)return 0===o.length&&endReadable(this),null;var a,u=o.needReadable;return j(\"need readable\",u),(0===o.length||o.length-s<o.highWaterMark)&&j(\"length less than watermark\",u=!0),o.ended||o.reading?j(\"reading or ended\",u=!1):u&&(j(\"do read\"),o.reading=!0,o.sync=!0,0===o.length&&(o.needReadable=!0),this._read(o.highWaterMark),o.sync=!1,o.reading||(s=howMuchToRead(i,o))),null===(a=s>0?fromList(s,o):null)?(o.needReadable=o.length<=o.highWaterMark,s=0):(o.length-=s,o.awaitDrain=0),0===o.length&&(o.ended||(o.needReadable=!0),i!==s&&o.ended&&endReadable(this)),null!==a&&this.emit(\"data\",a),a},Readable.prototype._read=function(s){le(this,new ae(\"_read()\"))},Readable.prototype.pipe=function(s,o){var i=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=s;break;case 1:a.pipes=[a.pipes,s];break;default:a.pipes.push(s)}a.pipesCount+=1,j(\"pipe count=%d opts=%j\",a.pipesCount,o);var w=(!o||!1!==o.end)&&s!==u.stdout&&s!==u.stderr?onend:unpipe;function onunpipe(o,u){j(\"onunpipe\"),o===i&&u&&!1===u.hasUnpiped&&(u.hasUnpiped=!0,function cleanup(){j(\"cleanup\"),s.removeListener(\"close\",onclose),s.removeListener(\"finish\",onfinish),s.removeListener(\"drain\",x),s.removeListener(\"error\",onerror),s.removeListener(\"unpipe\",onunpipe),i.removeListener(\"end\",onend),i.removeListener(\"end\",unpipe),i.removeListener(\"data\",ondata),C=!0,!a.awaitDrain||s._writableState&&!s._writableState.needDrain||x()}())}function onend(){j(\"onend\"),s.end()}a.endEmitted?u.nextTick(w):i.once(\"end\",w),s.on(\"unpipe\",onunpipe);var x=function pipeOnDrain(s){return function pipeOnDrainFunctionResult(){var o=s._readableState;j(\"pipeOnDrain\",o.awaitDrain),o.awaitDrain&&o.awaitDrain--,0===o.awaitDrain&&_(s,\"data\")&&(o.flowing=!0,flow(s))}}(i);s.on(\"drain\",x);var C=!1;function ondata(o){j(\"ondata\");var u=s.write(o);j(\"dest.write\",u),!1===u&&((1===a.pipesCount&&a.pipes===s||a.pipesCount>1&&-1!==indexOf(a.pipes,s))&&!C&&(j(\"false write response, pause\",a.awaitDrain),a.awaitDrain++),i.pause())}function onerror(o){j(\"onerror\",o),unpipe(),s.removeListener(\"error\",onerror),0===_(s,\"error\")&&le(s,o)}function onclose(){s.removeListener(\"finish\",onfinish),unpipe()}function onfinish(){j(\"onfinish\"),s.removeListener(\"close\",onclose),unpipe()}function unpipe(){j(\"unpipe\"),i.unpipe(s)}return i.on(\"data\",ondata),function prependListener(s,o,i){if(\"function\"==typeof s.prependListener)return s.prependListener(o,i);s._events&&s._events[o]?Array.isArray(s._events[o])?s._events[o].unshift(i):s._events[o]=[i,s._events[o]]:s.on(o,i)}(s,\"error\",onerror),s.once(\"close\",onclose),s.once(\"finish\",onfinish),s.emit(\"pipe\",i),a.flowing||(j(\"pipe resume\"),i.resume()),s},Readable.prototype.unpipe=function(s){var o=this._readableState,i={hasUnpiped:!1};if(0===o.pipesCount)return this;if(1===o.pipesCount)return s&&s!==o.pipes||(s||(s=o.pipes),o.pipes=null,o.pipesCount=0,o.flowing=!1,s&&s.emit(\"unpipe\",this,i)),this;if(!s){var a=o.pipes,u=o.pipesCount;o.pipes=null,o.pipesCount=0,o.flowing=!1;for(var _=0;_<u;_++)a[_].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var w=indexOf(o.pipes,s);return-1===w||(o.pipes.splice(w,1),o.pipesCount-=1,1===o.pipesCount&&(o.pipes=o.pipes[0]),s.emit(\"unpipe\",this,i)),this},Readable.prototype.on=function(s,o){var i=w.prototype.on.call(this,s,o),a=this._readableState;return\"data\"===s?(a.readableListening=this.listenerCount(\"readable\")>0,!1!==a.flowing&&this.resume()):\"readable\"===s&&(a.endEmitted||a.readableListening||(a.readableListening=a.needReadable=!0,a.flowing=!1,a.emittedReadable=!1,j(\"on readable\",a.length,a.reading),a.length?emitReadable(this):a.reading||u.nextTick(nReadingNextTick,this))),i},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.removeListener=function(s,o){var i=w.prototype.removeListener.call(this,s,o);return\"readable\"===s&&u.nextTick(updateReadableListening,this),i},Readable.prototype.removeAllListeners=function(s){var o=w.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==s&&void 0!==s||u.nextTick(updateReadableListening,this),o},Readable.prototype.resume=function(){var s=this._readableState;return s.flowing||(j(\"resume\"),s.flowing=!s.readableListening,function resume(s,o){o.resumeScheduled||(o.resumeScheduled=!0,u.nextTick(resume_,s,o))}(this,s)),s.paused=!1,this},Readable.prototype.pause=function(){return j(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(j(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},Readable.prototype.wrap=function(s){var o=this,i=this._readableState,a=!1;for(var u in s.on(\"end\",(function(){if(j(\"wrapped end\"),i.decoder&&!i.ended){var s=i.decoder.end();s&&s.length&&o.push(s)}o.push(null)})),s.on(\"data\",(function(u){(j(\"wrapped data\"),i.decoder&&(u=i.decoder.write(u)),i.objectMode&&null==u)||(i.objectMode||u&&u.length)&&(o.push(u)||(a=!0,s.pause()))})),s)void 0===this[u]&&\"function\"==typeof s[u]&&(this[u]=function methodWrap(o){return function methodWrapReturnFunction(){return s[o].apply(s,arguments)}}(u));for(var _=0;_<pe.length;_++)s.on(pe[_],this.emit.bind(this,pe[_]));return this._read=function(o){j(\"wrapped _read\",o),a&&(a=!1,s.resume())},this},\"function\"==typeof Symbol&&(Readable.prototype[Symbol.asyncIterator]=function(){return void 0===$&&($=i(2955)),$(this)}),Object.defineProperty(Readable.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function get(){return this._readableState.highWaterMark}}),Object.defineProperty(Readable.prototype,\"readableBuffer\",{enumerable:!1,get:function get(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(Readable.prototype,\"readableFlowing\",{enumerable:!1,get:function get(){return this._readableState.flowing},set:function set(s){this._readableState&&(this._readableState.flowing=s)}}),Readable._fromList=fromList,Object.defineProperty(Readable.prototype,\"readableLength\",{enumerable:!1,get:function get(){return this._readableState.length}}),\"function\"==typeof Symbol&&(Readable.from=function(s,o){return void 0===V&&(V=i(55157)),V(Readable,s,o)})},45434:s=>{var o=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;s.exports=function hasUnicodeWord(s){return o.test(s)}},45539:(s,o,i)=>{var a=i(40882),u=i(50828),_=i(66645),w=RegExp(\"['’]\",\"g\");s.exports=function createCompounder(s){return function(o){return a(_(u(o).replace(w,\"\")),s,\"\")}}},45807:(s,o,i)=>{\"use strict\";var a=i(1907),u=a({}.toString),_=a(\"\".slice);s.exports=function(s){return _(u(s),8,-1)}},45891:(s,o,i)=>{var a=i(51873),u=i(72428),_=i(56449),w=a?a.isConcatSpreadable:void 0;s.exports=function isFlattenable(s){return _(s)||u(s)||!!(w&&s&&s[w])}},45951:function(s,o,i){\"use strict\";var check=function(s){return s&&s.Math===Math&&s};s.exports=check(\"object\"==typeof globalThis&&globalThis)||check(\"object\"==typeof window&&window)||check(\"object\"==typeof self&&self)||check(\"object\"==typeof i.g&&i.g)||check(\"object\"==typeof this&&this)||function(){return this}()||Function(\"return this\")()},45981:s=>{function deepFreeze(s){return s instanceof Map?s.clear=s.delete=s.set=function(){throw new Error(\"map is read-only\")}:s instanceof Set&&(s.add=s.clear=s.delete=function(){throw new Error(\"set is read-only\")}),Object.freeze(s),Object.getOwnPropertyNames(s).forEach((function(o){var i=s[o];\"object\"!=typeof i||Object.isFrozen(i)||deepFreeze(i)})),s}var o=deepFreeze,i=deepFreeze;o.default=i;class Response{constructor(s){void 0===s.data&&(s.data={}),this.data=s.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(s){return s.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\")}function inherit(s,...o){const i=Object.create(null);for(const o in s)i[o]=s[o];return o.forEach((function(s){for(const o in s)i[o]=s[o]})),i}const emitsWrappingTags=s=>!!s.kind;class HTMLRenderer{constructor(s,o){this.buffer=\"\",this.classPrefix=o.classPrefix,s.walk(this)}addText(s){this.buffer+=escapeHTML(s)}openNode(s){if(!emitsWrappingTags(s))return;let o=s.kind;s.sublanguage||(o=`${this.classPrefix}${o}`),this.span(o)}closeNode(s){emitsWrappingTags(s)&&(this.buffer+=\"</span>\")}value(){return this.buffer}span(s){this.buffer+=`<span class=\"${s}\">`}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(s){this.top.children.push(s)}openNode(s){const o={kind:s,children:[]};this.add(o),this.stack.push(o)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(s){return this.constructor._walk(s,this.rootNode)}static _walk(s,o){return\"string\"==typeof o?s.addText(o):o.children&&(s.openNode(o),o.children.forEach((o=>this._walk(s,o))),s.closeNode(o)),s}static _collapse(s){\"string\"!=typeof s&&s.children&&(s.children.every((s=>\"string\"==typeof s))?s.children=[s.children.join(\"\")]:s.children.forEach((s=>{TokenTree._collapse(s)})))}}class TokenTreeEmitter extends TokenTree{constructor(s){super(),this.options=s}addKeyword(s,o){\"\"!==s&&(this.openNode(o),this.addText(s),this.closeNode())}addText(s){\"\"!==s&&this.add(s)}addSublanguage(s,o){const i=s.root;i.kind=o,i.sublanguage=!0,this.add(i)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(s){return s?\"string\"==typeof s?s:s.source:null}const a=/\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;const u=\"[a-zA-Z]\\\\w*\",_=\"[a-zA-Z_]\\\\w*\",w=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",x=\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",C=\"\\\\b(0b[01]+)\",j={begin:\"\\\\\\\\[\\\\s\\\\S]\",relevance:0},L={className:\"string\",begin:\"'\",end:\"'\",illegal:\"\\\\n\",contains:[j]},B={className:\"string\",begin:'\"',end:'\"',illegal:\"\\\\n\",contains:[j]},$={begin:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/},COMMENT=function(s,o,i={}){const a=inherit({className:\"comment\",begin:s,end:o,contains:[]},i);return a.contains.push($),a.contains.push({className:\"doctag\",begin:\"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):\",relevance:0}),a},V=COMMENT(\"//\",\"$\"),U=COMMENT(\"/\\\\*\",\"\\\\*/\"),z=COMMENT(\"#\",\"$\"),Y={className:\"number\",begin:w,relevance:0},Z={className:\"number\",begin:x,relevance:0},ee={className:\"number\",begin:C,relevance:0},ie={className:\"number\",begin:w+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",relevance:0},ae={begin:/(?=\\/[^/\\n]*\\/)/,contains:[{className:\"regexp\",begin:/\\//,end:/\\/[gimuy]*/,illegal:/\\n/,contains:[j,{begin:/\\[/,end:/\\]/,relevance:0,contains:[j]}]}]},ce={className:\"title\",begin:u,relevance:0},le={className:\"title\",begin:_,relevance:0},pe={begin:\"\\\\.\\\\s*\"+_,relevance:0};var de=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\\b\\B/,IDENT_RE:u,UNDERSCORE_IDENT_RE:_,NUMBER_RE:w,C_NUMBER_RE:x,BINARY_NUMBER_RE:C,RE_STARTERS_RE:\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",SHEBANG:(s={})=>{const o=/^#![ ]*\\//;return s.binary&&(s.begin=function concat(...s){return s.map((s=>source(s))).join(\"\")}(o,/.*\\b/,s.binary,/\\b.*/)),inherit({className:\"meta\",begin:o,end:/$/,relevance:0,\"on:begin\":(s,o)=>{0!==s.index&&o.ignoreMatch()}},s)},BACKSLASH_ESCAPE:j,APOS_STRING_MODE:L,QUOTE_STRING_MODE:B,PHRASAL_WORDS_MODE:$,COMMENT,C_LINE_COMMENT_MODE:V,C_BLOCK_COMMENT_MODE:U,HASH_COMMENT_MODE:z,NUMBER_MODE:Y,C_NUMBER_MODE:Z,BINARY_NUMBER_MODE:ee,CSS_NUMBER_MODE:ie,REGEXP_MODE:ae,TITLE_MODE:ce,UNDERSCORE_TITLE_MODE:le,METHOD_GUARD:pe,END_SAME_AS_BEGIN:function(s){return Object.assign(s,{\"on:begin\":(s,o)=>{o.data._beginMatch=s[1]},\"on:end\":(s,o)=>{o.data._beginMatch!==s[1]&&o.ignoreMatch()}})}});function skipIfhasPrecedingDot(s,o){\".\"===s.input[s.index-1]&&o.ignoreMatch()}function beginKeywords(s,o){o&&s.beginKeywords&&(s.begin=\"\\\\b(\"+s.beginKeywords.split(\" \").join(\"|\")+\")(?!\\\\.)(?=\\\\b|\\\\s)\",s.__beforeBegin=skipIfhasPrecedingDot,s.keywords=s.keywords||s.beginKeywords,delete s.beginKeywords,void 0===s.relevance&&(s.relevance=0))}function compileIllegal(s,o){Array.isArray(s.illegal)&&(s.illegal=function either(...s){return\"(\"+s.map((s=>source(s))).join(\"|\")+\")\"}(...s.illegal))}function compileMatch(s,o){if(s.match){if(s.begin||s.end)throw new Error(\"begin & end are not supported with match\");s.begin=s.match,delete s.match}}function compileRelevance(s,o){void 0===s.relevance&&(s.relevance=1)}const fe=[\"of\",\"and\",\"for\",\"in\",\"not\",\"or\",\"if\",\"then\",\"parent\",\"list\",\"value\"];function compileKeywords(s,o,i=\"keyword\"){const a={};return\"string\"==typeof s?compileList(i,s.split(\" \")):Array.isArray(s)?compileList(i,s):Object.keys(s).forEach((function(i){Object.assign(a,compileKeywords(s[i],o,i))})),a;function compileList(s,i){o&&(i=i.map((s=>s.toLowerCase()))),i.forEach((function(o){const i=o.split(\"|\");a[i[0]]=[s,scoreForKeyword(i[0],i[1])]}))}}function scoreForKeyword(s,o){return o?Number(o):function commonKeyword(s){return fe.includes(s.toLowerCase())}(s)?0:1}function compileLanguage(s,{plugins:o}){function langRe(o,i){return new RegExp(source(o),\"m\"+(s.case_insensitive?\"i\":\"\")+(i?\"g\":\"\"))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,s]),this.matchAt+=function countMatchGroups(s){return new RegExp(s.toString()+\"|\").exec(\"\").length-1}(s)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const s=this.regexes.map((s=>s[1]));this.matcherRe=langRe(function join(s,o=\"|\"){let i=0;return s.map((s=>{i+=1;const o=i;let u=source(s),_=\"\";for(;u.length>0;){const s=a.exec(u);if(!s){_+=u;break}_+=u.substring(0,s.index),u=u.substring(s.index+s[0].length),\"\\\\\"===s[0][0]&&s[1]?_+=\"\\\\\"+String(Number(s[1])+o):(_+=s[0],\"(\"===s[0]&&i++)}return _})).map((s=>`(${s})`)).join(o)}(s),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(s);if(!o)return null;const i=o.findIndex(((s,o)=>o>0&&void 0!==s)),a=this.matchIndexes[i];return o.splice(0,i),Object.assign(o,a)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const o=new MultiRegex;return this.rules.slice(s).forEach((([s,i])=>o.addRule(s,i))),o.compile(),this.multiRegexes[s]=o,o}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(s,o){this.rules.push([s,o]),\"begin\"===o.type&&this.count++}exec(s){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let i=o.exec(s);if(this.resumingScanAtSamePosition())if(i&&i.index===this.lastIndex);else{const o=this.getMatcher(0);o.lastIndex=this.lastIndex+1,i=o.exec(s)}return i&&(this.regexIndex+=i.position+1,this.regexIndex===this.count&&this.considerAll()),i}}if(s.compilerExtensions||(s.compilerExtensions=[]),s.contains&&s.contains.includes(\"self\"))throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");return s.classNameAliases=inherit(s.classNameAliases||{}),function compileMode(o,i){const a=o;if(o.isCompiled)return a;[compileMatch].forEach((s=>s(o,i))),s.compilerExtensions.forEach((s=>s(o,i))),o.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((s=>s(o,i))),o.isCompiled=!0;let u=null;if(\"object\"==typeof o.keywords&&(u=o.keywords.$pattern,delete o.keywords.$pattern),o.keywords&&(o.keywords=compileKeywords(o.keywords,s.case_insensitive)),o.lexemes&&u)throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");return u=u||o.lexemes||/\\w+/,a.keywordPatternRe=langRe(u,!0),i&&(o.begin||(o.begin=/\\B|\\b/),a.beginRe=langRe(o.begin),o.endSameAsBegin&&(o.end=o.begin),o.end||o.endsWithParent||(o.end=/\\B|\\b/),o.end&&(a.endRe=langRe(o.end)),a.terminatorEnd=source(o.end)||\"\",o.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(o.end?\"|\":\"\")+i.terminatorEnd)),o.illegal&&(a.illegalRe=langRe(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((function(s){return function expandOrCloneMode(s){s.variants&&!s.cachedVariants&&(s.cachedVariants=s.variants.map((function(o){return inherit(s,{variants:null},o)})));if(s.cachedVariants)return s.cachedVariants;if(dependencyOnParent(s))return inherit(s,{starts:s.starts?inherit(s.starts):null});if(Object.isFrozen(s))return inherit(s);return s}(\"self\"===s?o:s)}))),o.contains.forEach((function(s){compileMode(s,a)})),o.starts&&compileMode(o.starts,i),a.matcher=function buildModeRegex(s){const o=new ResumableMultiRegex;return s.contains.forEach((s=>o.addRule(s.begin,{rule:s,type:\"begin\"}))),s.terminatorEnd&&o.addRule(s.terminatorEnd,{type:\"end\"}),s.illegal&&o.addRule(s.illegal,{type:\"illegal\"}),o}(a),a}(s)}function dependencyOnParent(s){return!!s&&(s.endsWithParent||dependencyOnParent(s.starts))}function BuildVuePlugin(s){const o={props:[\"language\",\"code\",\"autodetect\"],data:function(){return{detectedLanguage:\"\",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?\"\":\"hljs \"+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!s.getLanguage(this.language))return console.warn(`The language \"${this.language}\" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let o={};return this.autoDetect?(o=s.highlightAuto(this.code),this.detectedLanguage=o.language):(o=s.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),o.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(s){return Boolean(s||\"\"===s)}(this.autodetect)},ignoreIllegals:()=>!0},render(s){return s(\"pre\",{},[s(\"code\",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:o,VuePlugin:{install(s){s.component(\"highlightjs\",o)}}}}const ye={\"after:highlightElement\":({el:s,result:o,text:i})=>{const a=nodeStream(s);if(!a.length)return;const u=document.createElement(\"div\");u.innerHTML=o.value,o.value=function mergeStreams(s,o,i){let a=0,u=\"\";const _=[];function selectStream(){return s.length&&o.length?s[0].offset!==o[0].offset?s[0].offset<o[0].offset?s:o:\"start\"===o[0].event?s:o:s.length?s:o}function open(s){function attributeString(s){return\" \"+s.nodeName+'=\"'+escapeHTML(s.value)+'\"'}u+=\"<\"+tag(s)+[].map.call(s.attributes,attributeString).join(\"\")+\">\"}function close(s){u+=\"</\"+tag(s)+\">\"}function render(s){(\"start\"===s.event?open:close)(s.node)}for(;s.length||o.length;){let o=selectStream();if(u+=escapeHTML(i.substring(a,o[0].offset)),a=o[0].offset,o===s){_.reverse().forEach(close);do{render(o.splice(0,1)[0]),o=selectStream()}while(o===s&&o.length&&o[0].offset===a);_.reverse().forEach(open)}else\"start\"===o[0].event?_.push(o[0].node):_.pop(),render(o.splice(0,1)[0])}return u+escapeHTML(i.substr(a))}(a,nodeStream(u),i)}};function tag(s){return s.nodeName.toLowerCase()}function nodeStream(s){const o=[];return function _nodeStream(s,i){for(let a=s.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(o.push({event:\"start\",offset:i,node:a}),i=_nodeStream(a,i),tag(a).match(/br|hr|img|input/)||o.push({event:\"stop\",offset:i,node:a}));return i}(s,0),o}const be={},error=s=>{console.error(s)},warn=(s,...o)=>{console.log(`WARN: ${s}`,...o)},deprecated=(s,o)=>{be[`${s}/${o}`]||(console.log(`Deprecated as of ${s}. ${o}`),be[`${s}/${o}`]=!0)},_e=escapeHTML,Se=inherit,we=Symbol(\"nomatch\");var xe=function(s){const i=Object.create(null),a=Object.create(null),u=[];let _=!0;const w=/(^(<[^>]+>|\\t|)+|\\n)/gm,x=\"Could not find the language '{}', did you forget to load/include a language module?\",C={disableAutodetect:!0,name:\"Plain text\",contains:[]};let j={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\\blang(?:uage)?-([\\w-]+)\\b/i,classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(s){return j.noHighlightRe.test(s)}function highlight(s,o,i,a){let u=\"\",_=\"\";\"object\"==typeof o?(u=s,i=o.ignoreIllegals,_=o.language,a=void 0):(deprecated(\"10.7.0\",\"highlight(lang, code, ...args) has been deprecated.\"),deprecated(\"10.7.0\",\"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\"),_=s,u=o);const w={code:u,language:_};fire(\"before:highlight\",w);const x=w.result?w.result:_highlight(w.language,w.code,i,a);return x.code=w.code,fire(\"after:highlight\",x),x}function _highlight(s,o,a,w){function keywordData(s,o){const i=L.case_insensitive?o[0].toLowerCase():o[0];return Object.prototype.hasOwnProperty.call(s.keywords,i)&&s.keywords[i]}function processBuffer(){null!=V.subLanguage?function processSubLanguage(){if(\"\"===Y)return;let s=null;if(\"string\"==typeof V.subLanguage){if(!i[V.subLanguage])return void z.addText(Y);s=_highlight(V.subLanguage,Y,!0,U[V.subLanguage]),U[V.subLanguage]=s.top}else s=highlightAuto(Y,V.subLanguage.length?V.subLanguage:null);V.relevance>0&&(Z+=s.relevance),z.addSublanguage(s.emitter,s.language)}():function processKeywords(){if(!V.keywords)return void z.addText(Y);let s=0;V.keywordPatternRe.lastIndex=0;let o=V.keywordPatternRe.exec(Y),i=\"\";for(;o;){i+=Y.substring(s,o.index);const a=keywordData(V,o);if(a){const[s,u]=a;if(z.addText(i),i=\"\",Z+=u,s.startsWith(\"_\"))i+=o[0];else{const i=L.classNameAliases[s]||s;z.addKeyword(o[0],i)}}else i+=o[0];s=V.keywordPatternRe.lastIndex,o=V.keywordPatternRe.exec(Y)}i+=Y.substr(s),z.addText(i)}(),Y=\"\"}function startNewMode(s){return s.className&&z.openNode(L.classNameAliases[s.className]||s.className),V=Object.create(s,{parent:{value:V}}),V}function endOfMode(s,o,i){let a=function startsWith(s,o){const i=s&&s.exec(o);return i&&0===i.index}(s.endRe,i);if(a){if(s[\"on:end\"]){const i=new Response(s);s[\"on:end\"](o,i),i.isMatchIgnored&&(a=!1)}if(a){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return endOfMode(s.parent,o,i)}function doIgnore(s){return 0===V.matcher.regexIndex?(Y+=s[0],1):(ae=!0,0)}function doBeginMatch(s){const o=s[0],i=s.rule,a=new Response(i),u=[i.__beforeBegin,i[\"on:begin\"]];for(const i of u)if(i&&(i(s,a),a.isMatchIgnored))return doIgnore(o);return i&&i.endSameAsBegin&&(i.endRe=function escape(s){return new RegExp(s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"),\"m\")}(o)),i.skip?Y+=o:(i.excludeBegin&&(Y+=o),processBuffer(),i.returnBegin||i.excludeBegin||(Y=o)),startNewMode(i),i.returnBegin?0:o.length}function doEndMatch(s){const i=s[0],a=o.substr(s.index),u=endOfMode(V,s,a);if(!u)return we;const _=V;_.skip?Y+=i:(_.returnEnd||_.excludeEnd||(Y+=i),processBuffer(),_.excludeEnd&&(Y=i));do{V.className&&z.closeNode(),V.skip||V.subLanguage||(Z+=V.relevance),V=V.parent}while(V!==u.parent);return u.starts&&(u.endSameAsBegin&&(u.starts.endRe=u.endRe),startNewMode(u.starts)),_.returnEnd?0:i.length}let C={};function processLexeme(i,u){const w=u&&u[0];if(Y+=i,null==w)return processBuffer(),0;if(\"begin\"===C.type&&\"end\"===u.type&&C.index===u.index&&\"\"===w){if(Y+=o.slice(u.index,u.index+1),!_){const o=new Error(\"0 width match regex\");throw o.languageName=s,o.badRule=C.rule,o}return 1}if(C=u,\"begin\"===u.type)return doBeginMatch(u);if(\"illegal\"===u.type&&!a){const s=new Error('Illegal lexeme \"'+w+'\" for mode \"'+(V.className||\"<unnamed>\")+'\"');throw s.mode=V,s}if(\"end\"===u.type){const s=doEndMatch(u);if(s!==we)return s}if(\"illegal\"===u.type&&\"\"===w)return 1;if(ie>1e5&&ie>3*u.index){throw new Error(\"potential infinite loop, way more iterations than matches\")}return Y+=w,w.length}const L=getLanguage(s);if(!L)throw error(x.replace(\"{}\",s)),new Error('Unknown language: \"'+s+'\"');const B=compileLanguage(L,{plugins:u});let $=\"\",V=w||B;const U={},z=new j.__emitter(j);!function processContinuations(){const s=[];for(let o=V;o!==L;o=o.parent)o.className&&s.unshift(o.className);s.forEach((s=>z.openNode(s)))}();let Y=\"\",Z=0,ee=0,ie=0,ae=!1;try{for(V.matcher.considerAll();;){ie++,ae?ae=!1:V.matcher.considerAll(),V.matcher.lastIndex=ee;const s=V.matcher.exec(o);if(!s)break;const i=processLexeme(o.substring(ee,s.index),s);ee=s.index+i}return processLexeme(o.substr(ee)),z.closeAllNodes(),z.finalize(),$=z.toHTML(),{relevance:Math.floor(Z),value:$,language:s,illegal:!1,emitter:z,top:V}}catch(i){if(i.message&&i.message.includes(\"Illegal\"))return{illegal:!0,illegalBy:{msg:i.message,context:o.slice(ee-100,ee+100),mode:i.mode},sofar:$,relevance:0,value:_e(o),emitter:z};if(_)return{illegal:!1,relevance:0,value:_e(o),emitter:z,language:s,top:V,errorRaised:i};throw i}}function highlightAuto(s,o){o=o||j.languages||Object.keys(i);const a=function justTextHighlightResult(s){const o={relevance:0,emitter:new j.__emitter(j),value:_e(s),illegal:!1,top:C};return o.emitter.addText(s),o}(s),u=o.filter(getLanguage).filter(autoDetection).map((o=>_highlight(o,s,!1)));u.unshift(a);const _=u.sort(((s,o)=>{if(s.relevance!==o.relevance)return o.relevance-s.relevance;if(s.language&&o.language){if(getLanguage(s.language).supersetOf===o.language)return 1;if(getLanguage(o.language).supersetOf===s.language)return-1}return 0})),[w,x]=_,L=w;return L.second_best=x,L}const L={\"before:highlightElement\":({el:s})=>{j.useBR&&(s.innerHTML=s.innerHTML.replace(/\\n/g,\"\").replace(/<br[ /]*>/g,\"\\n\"))},\"after:highlightElement\":({result:s})=>{j.useBR&&(s.value=s.value.replace(/\\n/g,\"<br>\"))}},B=/^(<[^>]+>|\\t)+/gm,$={\"after:highlightElement\":({result:s})=>{j.tabReplace&&(s.value=s.value.replace(B,(s=>s.replace(/\\t/g,j.tabReplace))))}};function highlightElement(s){let o=null;const i=function blockLanguage(s){let o=s.className+\" \";o+=s.parentNode?s.parentNode.className:\"\";const i=j.languageDetectRe.exec(o);if(i){const o=getLanguage(i[1]);return o||(warn(x.replace(\"{}\",i[1])),warn(\"Falling back to no-highlight mode for this block.\",s)),o?i[1]:\"no-highlight\"}return o.split(/\\s+/).find((s=>shouldNotHighlight(s)||getLanguage(s)))}(s);if(shouldNotHighlight(i))return;fire(\"before:highlightElement\",{el:s,language:i}),o=s;const u=o.textContent,_=i?highlight(u,{language:i,ignoreIllegals:!0}):highlightAuto(u);fire(\"after:highlightElement\",{el:s,result:_,text:u}),s.innerHTML=_.value,function updateClassName(s,o,i){const u=o?a[o]:i;s.classList.add(\"hljs\"),u&&s.classList.add(u)}(s,i,_.language),s.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(s.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated(\"10.6.0\",\"initHighlighting() is deprecated.  Use highlightAll() instead.\");document.querySelectorAll(\"pre code\").forEach(highlightElement)};let V=!1;function highlightAll(){if(\"loading\"===document.readyState)return void(V=!0);document.querySelectorAll(\"pre code\").forEach(highlightElement)}function getLanguage(s){return s=(s||\"\").toLowerCase(),i[s]||i[a[s]]}function registerAliases(s,{languageName:o}){\"string\"==typeof s&&(s=[s]),s.forEach((s=>{a[s.toLowerCase()]=o}))}function autoDetection(s){const o=getLanguage(s);return o&&!o.disableAutodetect}function fire(s,o){const i=s;u.forEach((function(s){s[i]&&s[i](o)}))}\"undefined\"!=typeof window&&window.addEventListener&&window.addEventListener(\"DOMContentLoaded\",(function boot(){V&&highlightAll()}),!1),Object.assign(s,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(s){return deprecated(\"10.2.0\",\"fixMarkup will be removed entirely in v11.0\"),deprecated(\"10.2.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2534\"),function fixMarkup(s){return j.tabReplace||j.useBR?s.replace(w,(s=>\"\\n\"===s?j.useBR?\"<br>\":s:j.tabReplace?s.replace(/\\t/g,j.tabReplace):s)):s}(s)},highlightElement,highlightBlock:function deprecateHighlightBlock(s){return deprecated(\"10.7.0\",\"highlightBlock will be removed entirely in v12.0\"),deprecated(\"10.7.0\",\"Please use highlightElement now.\"),highlightElement(s)},configure:function configure(s){s.useBR&&(deprecated(\"10.3.0\",\"'useBR' will be removed entirely in v11.0\"),deprecated(\"10.3.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2559\")),j=Se(j,s)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated(\"10.6.0\",\"initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.\"),V=!0},registerLanguage:function registerLanguage(o,a){let u=null;try{u=a(s)}catch(s){if(error(\"Language definition for '{}' could not be registered.\".replace(\"{}\",o)),!_)throw s;error(s),u=C}u.name||(u.name=o),i[o]=u,u.rawDefinition=a.bind(null,s),u.aliases&&registerAliases(u.aliases,{languageName:o})},unregisterLanguage:function unregisterLanguage(s){delete i[s];for(const o of Object.keys(a))a[o]===s&&delete a[o]},listLanguages:function listLanguages(){return Object.keys(i)},getLanguage,registerAliases,requireLanguage:function requireLanguage(s){deprecated(\"10.4.0\",\"requireLanguage will be removed entirely in v11.\"),deprecated(\"10.4.0\",\"Please see https://github.com/highlightjs/highlight.js/pull/2844\");const o=getLanguage(s);if(o)return o;throw new Error(\"The '{}' language is required, but not loaded.\".replace(\"{}\",s))},autoDetection,inherit:Se,addPlugin:function addPlugin(s){!function upgradePluginAPI(s){s[\"before:highlightBlock\"]&&!s[\"before:highlightElement\"]&&(s[\"before:highlightElement\"]=o=>{s[\"before:highlightBlock\"](Object.assign({block:o.el},o))}),s[\"after:highlightBlock\"]&&!s[\"after:highlightElement\"]&&(s[\"after:highlightElement\"]=o=>{s[\"after:highlightBlock\"](Object.assign({block:o.el},o))})}(s),u.push(s)},vuePlugin:BuildVuePlugin(s).VuePlugin}),s.debugMode=function(){_=!1},s.safeMode=function(){_=!0},s.versionString=\"10.7.3\";for(const s in de)\"object\"==typeof de[s]&&o(de[s]);return Object.assign(s,de),s.addPlugin(L),s.addPlugin(ye),s.addPlugin($),s}({});s.exports=xe},46028:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(46285),_=i(25594),w=i(29367),x=i(60581),C=i(76264),j=TypeError,L=C(\"toPrimitive\");s.exports=function(s,o){if(!u(s)||_(s))return s;var i,C=w(s,L);if(C){if(void 0===o&&(o=\"default\"),i=a(C,s,o),!u(i)||_(i))return i;throw new j(\"Can't convert object to primitive value\")}return void 0===o&&(o=\"number\"),x(s,o)}},46076:(s,o,i)=>{\"use strict\";i(91599);var a=i(68623);s.exports=a},46285:(s,o,i)=>{\"use strict\";var a=i(62250);s.exports=function(s){return\"object\"==typeof s?null!==s:a(s)}},46942:(s,o)=>{var i;!function(){\"use strict\";var a={}.hasOwnProperty;function classNames(){for(var s=\"\",o=0;o<arguments.length;o++){var i=arguments[o];i&&(s=appendClass(s,parseValue(i)))}return s}function parseValue(s){if(\"string\"==typeof s||\"number\"==typeof s)return s;if(\"object\"!=typeof s)return\"\";if(Array.isArray(s))return classNames.apply(null,s);if(s.toString!==Object.prototype.toString&&!s.toString.toString().includes(\"[native code]\"))return s.toString();var o=\"\";for(var i in s)a.call(s,i)&&s[i]&&(o=appendClass(o,i));return o}function appendClass(s,o){return o?s?s+\" \"+o:s+o:s}s.exports?(classNames.default=classNames,s.exports=classNames):void 0===(i=function(){return classNames}.apply(o,[]))||(s.exports=i)}()},47181:(s,o,i)=>{\"use strict\";var a=i(95116).IteratorPrototype,u=i(58075),_=i(75817),w=i(14840),x=i(93742),returnThis=function(){return this};s.exports=function(s,o,i,C){var j=o+\" Iterator\";return s.prototype=u(a,{next:_(+!C,i)}),w(s,j,!1,!0),x[j]=returnThis,s}},47237:s=>{s.exports=function baseProperty(s){return function(o){return null==o?void 0:o[s]}}},47248:(s,o,i)=>{var a=i(16547),u=i(51234);s.exports=function zipObject(s,o){return u(s||[],o||[],a)}},47422:(s,o,i)=>{var a=i(31769),u=i(77797);s.exports=function baseGet(s,o){for(var i=0,_=(o=a(o,s)).length;null!=s&&i<_;)s=s[u(o[i++])];return i&&i==_?s:void 0}},47473:s=>{var o=Function.prototype.toString;s.exports=function toSource(s){if(null!=s){try{return o.call(s)}catch(s){}try{return s+\"\"}catch(s){}}return\"\"}},47886:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function isWeakMap(s){return u(s)&&\"[object WeakMap]\"==a(s)}},47934:(s,o,i)=>{s.exports={ary:i(64626),assign:i(74733),clone:i(32629),curry:i(49747),forEach:i(83729),isArray:i(56449),isError:i(23546),isFunction:i(1882),isWeakMap:i(47886),iteratee:i(33855),keys:i(88984),rearg:i(84195),toInteger:i(61489),toPath:i(42072)}},48152:(s,o,i)=>{var a=i(28303),u=a&&new a;s.exports=u},48287:(s,o,i)=>{\"use strict\";const a=i(67526),u=i(251),_=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;o.Buffer=Buffer,o.SlowBuffer=function SlowBuffer(s){+s!=s&&(s=0);return Buffer.alloc(+s)},o.INSPECT_MAX_BYTES=50;const w=2147483647;function createBuffer(s){if(s>w)throw new RangeError('The value \"'+s+'\" is invalid for option \"size\"');const o=new Uint8Array(s);return Object.setPrototypeOf(o,Buffer.prototype),o}function Buffer(s,o,i){if(\"number\"==typeof s){if(\"string\"==typeof o)throw new TypeError('The \"string\" argument must be of type string. Received type number');return allocUnsafe(s)}return from(s,o,i)}function from(s,o,i){if(\"string\"==typeof s)return function fromString(s,o){\"string\"==typeof o&&\"\"!==o||(o=\"utf8\");if(!Buffer.isEncoding(o))throw new TypeError(\"Unknown encoding: \"+o);const i=0|byteLength(s,o);let a=createBuffer(i);const u=a.write(s,o);u!==i&&(a=a.slice(0,u));return a}(s,o);if(ArrayBuffer.isView(s))return function fromArrayView(s){if(isInstance(s,Uint8Array)){const o=new Uint8Array(s);return fromArrayBuffer(o.buffer,o.byteOffset,o.byteLength)}return fromArrayLike(s)}(s);if(null==s)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof s);if(isInstance(s,ArrayBuffer)||s&&isInstance(s.buffer,ArrayBuffer))return fromArrayBuffer(s,o,i);if(\"undefined\"!=typeof SharedArrayBuffer&&(isInstance(s,SharedArrayBuffer)||s&&isInstance(s.buffer,SharedArrayBuffer)))return fromArrayBuffer(s,o,i);if(\"number\"==typeof s)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const a=s.valueOf&&s.valueOf();if(null!=a&&a!==s)return Buffer.from(a,o,i);const u=function fromObject(s){if(Buffer.isBuffer(s)){const o=0|checked(s.length),i=createBuffer(o);return 0===i.length||s.copy(i,0,0,o),i}if(void 0!==s.length)return\"number\"!=typeof s.length||numberIsNaN(s.length)?createBuffer(0):fromArrayLike(s);if(\"Buffer\"===s.type&&Array.isArray(s.data))return fromArrayLike(s.data)}(s);if(u)return u;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof s[Symbol.toPrimitive])return Buffer.from(s[Symbol.toPrimitive](\"string\"),o,i);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof s)}function assertSize(s){if(\"number\"!=typeof s)throw new TypeError('\"size\" argument must be of type number');if(s<0)throw new RangeError('The value \"'+s+'\" is invalid for option \"size\"')}function allocUnsafe(s){return assertSize(s),createBuffer(s<0?0:0|checked(s))}function fromArrayLike(s){const o=s.length<0?0:0|checked(s.length),i=createBuffer(o);for(let a=0;a<o;a+=1)i[a]=255&s[a];return i}function fromArrayBuffer(s,o,i){if(o<0||s.byteLength<o)throw new RangeError('\"offset\" is outside of buffer bounds');if(s.byteLength<o+(i||0))throw new RangeError('\"length\" is outside of buffer bounds');let a;return a=void 0===o&&void 0===i?new Uint8Array(s):void 0===i?new Uint8Array(s,o):new Uint8Array(s,o,i),Object.setPrototypeOf(a,Buffer.prototype),a}function checked(s){if(s>=w)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+w.toString(16)+\" bytes\");return 0|s}function byteLength(s,o){if(Buffer.isBuffer(s))return s.length;if(ArrayBuffer.isView(s)||isInstance(s,ArrayBuffer))return s.byteLength;if(\"string\"!=typeof s)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof s);const i=s.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===i)return 0;let u=!1;for(;;)switch(o){case\"ascii\":case\"latin1\":case\"binary\":return i;case\"utf8\":case\"utf-8\":return utf8ToBytes(s).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*i;case\"hex\":return i>>>1;case\"base64\":return base64ToBytes(s).length;default:if(u)return a?-1:utf8ToBytes(s).length;o=(\"\"+o).toLowerCase(),u=!0}}function slowToString(s,o,i){let a=!1;if((void 0===o||o<0)&&(o=0),o>this.length)return\"\";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return\"\";if((i>>>=0)<=(o>>>=0))return\"\";for(s||(s=\"utf8\");;)switch(s){case\"hex\":return hexSlice(this,o,i);case\"utf8\":case\"utf-8\":return utf8Slice(this,o,i);case\"ascii\":return asciiSlice(this,o,i);case\"latin1\":case\"binary\":return latin1Slice(this,o,i);case\"base64\":return base64Slice(this,o,i);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,o,i);default:if(a)throw new TypeError(\"Unknown encoding: \"+s);s=(s+\"\").toLowerCase(),a=!0}}function swap(s,o,i){const a=s[o];s[o]=s[i],s[i]=a}function bidirectionalIndexOf(s,o,i,a,u){if(0===s.length)return-1;if(\"string\"==typeof i?(a=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),numberIsNaN(i=+i)&&(i=u?0:s.length-1),i<0&&(i=s.length+i),i>=s.length){if(u)return-1;i=s.length-1}else if(i<0){if(!u)return-1;i=0}if(\"string\"==typeof o&&(o=Buffer.from(o,a)),Buffer.isBuffer(o))return 0===o.length?-1:arrayIndexOf(s,o,i,a,u);if(\"number\"==typeof o)return o&=255,\"function\"==typeof Uint8Array.prototype.indexOf?u?Uint8Array.prototype.indexOf.call(s,o,i):Uint8Array.prototype.lastIndexOf.call(s,o,i):arrayIndexOf(s,[o],i,a,u);throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(s,o,i,a,u){let _,w=1,x=s.length,C=o.length;if(void 0!==a&&(\"ucs2\"===(a=String(a).toLowerCase())||\"ucs-2\"===a||\"utf16le\"===a||\"utf-16le\"===a)){if(s.length<2||o.length<2)return-1;w=2,x/=2,C/=2,i/=2}function read(s,o){return 1===w?s[o]:s.readUInt16BE(o*w)}if(u){let a=-1;for(_=i;_<x;_++)if(read(s,_)===read(o,-1===a?0:_-a)){if(-1===a&&(a=_),_-a+1===C)return a*w}else-1!==a&&(_-=_-a),a=-1}else for(i+C>x&&(i=x-C),_=i;_>=0;_--){let i=!0;for(let a=0;a<C;a++)if(read(s,_+a)!==read(o,a)){i=!1;break}if(i)return _}return-1}function hexWrite(s,o,i,a){i=Number(i)||0;const u=s.length-i;a?(a=Number(a))>u&&(a=u):a=u;const _=o.length;let w;for(a>_/2&&(a=_/2),w=0;w<a;++w){const a=parseInt(o.substr(2*w,2),16);if(numberIsNaN(a))return w;s[i+w]=a}return w}function utf8Write(s,o,i,a){return blitBuffer(utf8ToBytes(o,s.length-i),s,i,a)}function asciiWrite(s,o,i,a){return blitBuffer(function asciiToBytes(s){const o=[];for(let i=0;i<s.length;++i)o.push(255&s.charCodeAt(i));return o}(o),s,i,a)}function base64Write(s,o,i,a){return blitBuffer(base64ToBytes(o),s,i,a)}function ucs2Write(s,o,i,a){return blitBuffer(function utf16leToBytes(s,o){let i,a,u;const _=[];for(let w=0;w<s.length&&!((o-=2)<0);++w)i=s.charCodeAt(w),a=i>>8,u=i%256,_.push(u),_.push(a);return _}(o,s.length-i),s,i,a)}function base64Slice(s,o,i){return 0===o&&i===s.length?a.fromByteArray(s):a.fromByteArray(s.slice(o,i))}function utf8Slice(s,o,i){i=Math.min(s.length,i);const a=[];let u=o;for(;u<i;){const o=s[u];let _=null,w=o>239?4:o>223?3:o>191?2:1;if(u+w<=i){let i,a,x,C;switch(w){case 1:o<128&&(_=o);break;case 2:i=s[u+1],128==(192&i)&&(C=(31&o)<<6|63&i,C>127&&(_=C));break;case 3:i=s[u+1],a=s[u+2],128==(192&i)&&128==(192&a)&&(C=(15&o)<<12|(63&i)<<6|63&a,C>2047&&(C<55296||C>57343)&&(_=C));break;case 4:i=s[u+1],a=s[u+2],x=s[u+3],128==(192&i)&&128==(192&a)&&128==(192&x)&&(C=(15&o)<<18|(63&i)<<12|(63&a)<<6|63&x,C>65535&&C<1114112&&(_=C))}}null===_?(_=65533,w=1):_>65535&&(_-=65536,a.push(_>>>10&1023|55296),_=56320|1023&_),a.push(_),u+=w}return function decodeCodePointsArray(s){const o=s.length;if(o<=x)return String.fromCharCode.apply(String,s);let i=\"\",a=0;for(;a<o;)i+=String.fromCharCode.apply(String,s.slice(a,a+=x));return i}(a)}o.kMaxLength=w,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{const s=new Uint8Array(1),o={foo:function(){return 42}};return Object.setPrototypeOf(o,Uint8Array.prototype),Object.setPrototypeOf(s,o),42===s.foo()}catch(s){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(s,o,i){return from(s,o,i)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(s,o,i){return function alloc(s,o,i){return assertSize(s),s<=0?createBuffer(s):void 0!==o?\"string\"==typeof i?createBuffer(s).fill(o,i):createBuffer(s).fill(o):createBuffer(s)}(s,o,i)},Buffer.allocUnsafe=function(s){return allocUnsafe(s)},Buffer.allocUnsafeSlow=function(s){return allocUnsafe(s)},Buffer.isBuffer=function isBuffer(s){return null!=s&&!0===s._isBuffer&&s!==Buffer.prototype},Buffer.compare=function compare(s,o){if(isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),isInstance(o,Uint8Array)&&(o=Buffer.from(o,o.offset,o.byteLength)),!Buffer.isBuffer(s)||!Buffer.isBuffer(o))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(s===o)return 0;let i=s.length,a=o.length;for(let u=0,_=Math.min(i,a);u<_;++u)if(s[u]!==o[u]){i=s[u],a=o[u];break}return i<a?-1:a<i?1:0},Buffer.isEncoding=function isEncoding(s){switch(String(s).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},Buffer.concat=function concat(s,o){if(!Array.isArray(s))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===s.length)return Buffer.alloc(0);let i;if(void 0===o)for(o=0,i=0;i<s.length;++i)o+=s[i].length;const a=Buffer.allocUnsafe(o);let u=0;for(i=0;i<s.length;++i){let o=s[i];if(isInstance(o,Uint8Array))u+o.length>a.length?(Buffer.isBuffer(o)||(o=Buffer.from(o)),o.copy(a,u)):Uint8Array.prototype.set.call(a,o,u);else{if(!Buffer.isBuffer(o))throw new TypeError('\"list\" argument must be an Array of Buffers');o.copy(a,u)}u+=o.length}return a},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const s=this.length;if(s%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let o=0;o<s;o+=2)swap(this,o,o+1);return this},Buffer.prototype.swap32=function swap32(){const s=this.length;if(s%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let o=0;o<s;o+=4)swap(this,o,o+3),swap(this,o+1,o+2);return this},Buffer.prototype.swap64=function swap64(){const s=this.length;if(s%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let o=0;o<s;o+=8)swap(this,o,o+7),swap(this,o+1,o+6),swap(this,o+2,o+5),swap(this,o+3,o+4);return this},Buffer.prototype.toString=function toString(){const s=this.length;return 0===s?\"\":0===arguments.length?utf8Slice(this,0,s):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(s){if(!Buffer.isBuffer(s))throw new TypeError(\"Argument must be a Buffer\");return this===s||0===Buffer.compare(this,s)},Buffer.prototype.inspect=function inspect(){let s=\"\";const i=o.INSPECT_MAX_BYTES;return s=this.toString(\"hex\",0,i).replace(/(.{2})/g,\"$1 \").trim(),this.length>i&&(s+=\" ... \"),\"<Buffer \"+s+\">\"},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(s,o,i,a,u){if(isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),!Buffer.isBuffer(s))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(void 0===o&&(o=0),void 0===i&&(i=s?s.length:0),void 0===a&&(a=0),void 0===u&&(u=this.length),o<0||i>s.length||a<0||u>this.length)throw new RangeError(\"out of range index\");if(a>=u&&o>=i)return 0;if(a>=u)return-1;if(o>=i)return 1;if(this===s)return 0;let _=(u>>>=0)-(a>>>=0),w=(i>>>=0)-(o>>>=0);const x=Math.min(_,w),C=this.slice(a,u),j=s.slice(o,i);for(let s=0;s<x;++s)if(C[s]!==j[s]){_=C[s],w=j[s];break}return _<w?-1:w<_?1:0},Buffer.prototype.includes=function includes(s,o,i){return-1!==this.indexOf(s,o,i)},Buffer.prototype.indexOf=function indexOf(s,o,i){return bidirectionalIndexOf(this,s,o,i,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(s,o,i){return bidirectionalIndexOf(this,s,o,i,!1)},Buffer.prototype.write=function write(s,o,i,a){if(void 0===o)a=\"utf8\",i=this.length,o=0;else if(void 0===i&&\"string\"==typeof o)a=o,i=this.length,o=0;else{if(!isFinite(o))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");o>>>=0,isFinite(i)?(i>>>=0,void 0===a&&(a=\"utf8\")):(a=i,i=void 0)}const u=this.length-o;if((void 0===i||i>u)&&(i=u),s.length>0&&(i<0||o<0)||o>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");a||(a=\"utf8\");let _=!1;for(;;)switch(a){case\"hex\":return hexWrite(this,s,o,i);case\"utf8\":case\"utf-8\":return utf8Write(this,s,o,i);case\"ascii\":case\"latin1\":case\"binary\":return asciiWrite(this,s,o,i);case\"base64\":return base64Write(this,s,o,i);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,s,o,i);default:if(_)throw new TypeError(\"Unknown encoding: \"+a);a=(\"\"+a).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function asciiSlice(s,o,i){let a=\"\";i=Math.min(s.length,i);for(let u=o;u<i;++u)a+=String.fromCharCode(127&s[u]);return a}function latin1Slice(s,o,i){let a=\"\";i=Math.min(s.length,i);for(let u=o;u<i;++u)a+=String.fromCharCode(s[u]);return a}function hexSlice(s,o,i){const a=s.length;(!o||o<0)&&(o=0),(!i||i<0||i>a)&&(i=a);let u=\"\";for(let a=o;a<i;++a)u+=L[s[a]];return u}function utf16leSlice(s,o,i){const a=s.slice(o,i);let u=\"\";for(let s=0;s<a.length-1;s+=2)u+=String.fromCharCode(a[s]+256*a[s+1]);return u}function checkOffset(s,o,i){if(s%1!=0||s<0)throw new RangeError(\"offset is not uint\");if(s+o>i)throw new RangeError(\"Trying to access beyond buffer length\")}function checkInt(s,o,i,a,u,_){if(!Buffer.isBuffer(s))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(o>u||o<_)throw new RangeError('\"value\" argument is out of bounds');if(i+a>s.length)throw new RangeError(\"Index out of range\")}function wrtBigUInt64LE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,i}function wrtBigUInt64BE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i+7]=_,_>>=8,s[i+6]=_,_>>=8,s[i+5]=_,_>>=8,s[i+4]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i+3]=w,w>>=8,s[i+2]=w,w>>=8,s[i+1]=w,w>>=8,s[i]=w,i+8}function checkIEEE754(s,o,i,a,u,_){if(i+a>s.length)throw new RangeError(\"Index out of range\");if(i<0)throw new RangeError(\"Index out of range\")}function writeFloat(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,4),u.write(s,o,i,a,23,4),i+4}function writeDouble(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,8),u.write(s,o,i,a,52,8),i+8}Buffer.prototype.slice=function slice(s,o){const i=this.length;(s=~~s)<0?(s+=i)<0&&(s=0):s>i&&(s=i),(o=void 0===o?i:~~o)<0?(o+=i)<0&&(o=0):o>i&&(o=i),o<s&&(o=s);const a=this.subarray(s,o);return Object.setPrototypeOf(a,Buffer.prototype),a},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_<o&&(u*=256);)a+=this[s+_]*u;return a},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s+--o],u=1;for(;o>0&&(u*=256);)a+=this[s+--o]*u;return a},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),this[s]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]|this[s+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]<<8|this[s+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+16777216*this[s+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),16777216*this[s]+(this[s+1]<<16|this[s+2]<<8|this[s+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o+256*this[++s]+65536*this[++s]+this[++s]*2**24,u=this[++s]+256*this[++s]+65536*this[++s]+i*2**24;return BigInt(a)+(BigInt(u)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o*2**24+65536*this[++s]+256*this[++s]+this[++s],u=this[++s]*2**24+65536*this[++s]+256*this[++s]+i;return(BigInt(a)<<BigInt(32))+BigInt(u)})),Buffer.prototype.readIntLE=function readIntLE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_<o&&(u*=256);)a+=this[s+_]*u;return u*=128,a>=u&&(a-=Math.pow(2,8*o)),a},Buffer.prototype.readIntBE=function readIntBE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=o,u=1,_=this[s+--a];for(;a>0&&(u*=256);)_+=this[s+--a]*u;return u*=128,_>=u&&(_-=Math.pow(2,8*o)),_},Buffer.prototype.readInt8=function readInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),128&this[s]?-1*(255-this[s]+1):this[s]},Buffer.prototype.readInt16LE=function readInt16LE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s]|this[s+1]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt16BE=function readInt16BE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s+1]|this[s]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt32LE=function readInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=this[s+4]+256*this[s+5]+65536*this[s+6]+(i<<24);return(BigInt(a)<<BigInt(32))+BigInt(o+256*this[++s]+65536*this[++s]+this[++s]*2**24)})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=(o<<24)+65536*this[++s]+256*this[++s]+this[++s];return(BigInt(a)<<BigInt(32))+BigInt(this[++s]*2**24+65536*this[++s]+256*this[++s]+i)})),Buffer.prototype.readFloatLE=function readFloatLE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(s,o,i,a){if(s=+s,o>>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=1,_=0;for(this[o]=255&s;++_<i&&(u*=256);)this[o+_]=s/u&255;return o+i},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(s,o,i,a){if(s=+s,o>>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=i-1,_=1;for(this[o+u]=255&s;--u>=0&&(_*=256);)this[o+u]=s/_&255;return o+i},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,255,0),this[o]=255&s,o+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o+3]=s>>>24,this[o+2]=s>>>16,this[o+1]=s>>>8,this[o]=255&s,o+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeIntLE=function writeIntLE(s,o,i,a){if(s=+s,o>>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=0,_=1,w=0;for(this[o]=255&s;++u<i&&(_*=256);)s<0&&0===w&&0!==this[o+u-1]&&(w=1),this[o+u]=(s/_|0)-w&255;return o+i},Buffer.prototype.writeIntBE=function writeIntBE(s,o,i,a){if(s=+s,o>>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=i-1,_=1,w=0;for(this[o+u]=255&s;--u>=0&&(_*=256);)s<0&&0===w&&0!==this[o+u+1]&&(w=1),this[o+u]=(s/_|0)-w&255;return o+i},Buffer.prototype.writeInt8=function writeInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,127,-128),s<0&&(s=255+s+1),this[o]=255&s,o+1},Buffer.prototype.writeInt16LE=function writeInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeInt16BE=function writeInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeInt32LE=function writeInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),this[o]=255&s,this[o+1]=s>>>8,this[o+2]=s>>>16,this[o+3]=s>>>24,o+4},Buffer.prototype.writeInt32BE=function writeInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(s,o,i){return writeFloat(this,s,o,!0,i)},Buffer.prototype.writeFloatBE=function writeFloatBE(s,o,i){return writeFloat(this,s,o,!1,i)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(s,o,i){return writeDouble(this,s,o,!0,i)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(s,o,i){return writeDouble(this,s,o,!1,i)},Buffer.prototype.copy=function copy(s,o,i,a){if(!Buffer.isBuffer(s))throw new TypeError(\"argument should be a Buffer\");if(i||(i=0),a||0===a||(a=this.length),o>=s.length&&(o=s.length),o||(o=0),a>0&&a<i&&(a=i),a===i)return 0;if(0===s.length||0===this.length)return 0;if(o<0)throw new RangeError(\"targetStart out of bounds\");if(i<0||i>=this.length)throw new RangeError(\"Index out of range\");if(a<0)throw new RangeError(\"sourceEnd out of bounds\");a>this.length&&(a=this.length),s.length-o<a-i&&(a=s.length-o+i);const u=a-i;return this===s&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(o,i,a):Uint8Array.prototype.set.call(s,this.subarray(i,a),o),u},Buffer.prototype.fill=function fill(s,o,i,a){if(\"string\"==typeof s){if(\"string\"==typeof o?(a=o,o=0,i=this.length):\"string\"==typeof i&&(a=i,i=this.length),void 0!==a&&\"string\"!=typeof a)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof a&&!Buffer.isEncoding(a))throw new TypeError(\"Unknown encoding: \"+a);if(1===s.length){const o=s.charCodeAt(0);(\"utf8\"===a&&o<128||\"latin1\"===a)&&(s=o)}}else\"number\"==typeof s?s&=255:\"boolean\"==typeof s&&(s=Number(s));if(o<0||this.length<o||this.length<i)throw new RangeError(\"Out of range index\");if(i<=o)return this;let u;if(o>>>=0,i=void 0===i?this.length:i>>>0,s||(s=0),\"number\"==typeof s)for(u=o;u<i;++u)this[u]=s;else{const _=Buffer.isBuffer(s)?s:Buffer.from(s,a),w=_.length;if(0===w)throw new TypeError('The value \"'+s+'\" is invalid for argument \"value\"');for(u=0;u<i-o;++u)this[u+o]=_[u%w]}return this};const C={};function E(s,o,i){C[s]=class NodeError extends i{constructor(){super(),Object.defineProperty(this,\"message\",{value:o.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${s}]`,this.stack,delete this.name}get code(){return s}set code(s){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:s,writable:!0})}toString(){return`${this.name} [${s}]: ${this.message}`}}}function addNumericalSeparator(s){let o=\"\",i=s.length;const a=\"-\"===s[0]?1:0;for(;i>=a+4;i-=3)o=`_${s.slice(i-3,i)}${o}`;return`${s.slice(0,i)}${o}`}function checkIntBI(s,o,i,a,u,_){if(s>i||s<o){const a=\"bigint\"==typeof o?\"n\":\"\";let u;throw u=_>3?0===o||o===BigInt(0)?`>= 0${a} and < 2${a} ** ${8*(_+1)}${a}`:`>= -(2${a} ** ${8*(_+1)-1}${a}) and < 2 ** ${8*(_+1)-1}${a}`:`>= ${o}${a} and <= ${i}${a}`,new C.ERR_OUT_OF_RANGE(\"value\",u,s)}!function checkBounds(s,o,i){validateNumber(o,\"offset\"),void 0!==s[o]&&void 0!==s[o+i]||boundsError(o,s.length-(i+1))}(a,u,_)}function validateNumber(s,o){if(\"number\"!=typeof s)throw new C.ERR_INVALID_ARG_TYPE(o,\"number\",s)}function boundsError(s,o,i){if(Math.floor(s)!==s)throw validateNumber(s,i),new C.ERR_OUT_OF_RANGE(i||\"offset\",\"an integer\",s);if(o<0)throw new C.ERR_BUFFER_OUT_OF_BOUNDS;throw new C.ERR_OUT_OF_RANGE(i||\"offset\",`>= ${i?1:0} and <= ${o}`,s)}E(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(s){return s?`${s} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),E(\"ERR_INVALID_ARG_TYPE\",(function(s,o){return`The \"${s}\" argument must be of type number. Received type ${typeof o}`}),TypeError),E(\"ERR_OUT_OF_RANGE\",(function(s,o,i){let a=`The value of \"${s}\" is out of range.`,u=i;return Number.isInteger(i)&&Math.abs(i)>2**32?u=addNumericalSeparator(String(i)):\"bigint\"==typeof i&&(u=String(i),(i>BigInt(2)**BigInt(32)||i<-(BigInt(2)**BigInt(32)))&&(u=addNumericalSeparator(u)),u+=\"n\"),a+=` It must be ${o}. Received ${u}`,a}),RangeError);const j=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(s,o){let i;o=o||1/0;const a=s.length;let u=null;const _=[];for(let w=0;w<a;++w){if(i=s.charCodeAt(w),i>55295&&i<57344){if(!u){if(i>56319){(o-=3)>-1&&_.push(239,191,189);continue}if(w+1===a){(o-=3)>-1&&_.push(239,191,189);continue}u=i;continue}if(i<56320){(o-=3)>-1&&_.push(239,191,189),u=i;continue}i=65536+(u-55296<<10|i-56320)}else u&&(o-=3)>-1&&_.push(239,191,189);if(u=null,i<128){if((o-=1)<0)break;_.push(i)}else if(i<2048){if((o-=2)<0)break;_.push(i>>6|192,63&i|128)}else if(i<65536){if((o-=3)<0)break;_.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error(\"Invalid code point\");if((o-=4)<0)break;_.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return _}function base64ToBytes(s){return a.toByteArray(function base64clean(s){if((s=(s=s.split(\"=\")[0]).trim().replace(j,\"\")).length<2)return\"\";for(;s.length%4!=0;)s+=\"=\";return s}(s))}function blitBuffer(s,o,i,a){let u;for(u=0;u<a&&!(u+i>=o.length||u>=s.length);++u)o[u+i]=s[u];return u}function isInstance(s,o){return s instanceof o||null!=s&&null!=s.constructor&&null!=s.constructor.name&&s.constructor.name===o.name}function numberIsNaN(s){return s!=s}const L=function(){const s=\"0123456789abcdef\",o=new Array(256);for(let i=0;i<16;++i){const a=16*i;for(let u=0;u<16;++u)o[a+u]=s[i]+s[u]}return o}();function defineBigIntMethod(s){return\"undefined\"==typeof BigInt?BufferBigIntNotDefined:s}function BufferBigIntNotDefined(){throw new Error(\"BigInt not supported\")}},48590:(s,o)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=function(s){return s&&\"@@redux/INIT\"===s.type?\"initialState argument passed to createStore\":\"previous state received by the reducer\"},s.exports=o.default},48655:(s,o,i)=>{var a=i(26025);s.exports=function listCacheHas(s){return a(this.__data__,s)>-1}},48675:(s,o,i)=>{s.exports=i(20850)},48948:(s,o,i)=>{var a=i(21791),u=i(86375);s.exports=function copySymbolsIn(s,o){return a(s,u(s),o)}},49326:(s,o,i)=>{var a=i(31769),u=i(72428),_=i(56449),w=i(30361),x=i(30294),C=i(77797);s.exports=function hasPath(s,o,i){for(var j=-1,L=(o=a(o,s)).length,B=!1;++j<L;){var $=C(o[j]);if(!(B=null!=s&&i(s,$)))break;s=s[$]}return B||++j!=L?B:!!(L=null==s?0:s.length)&&x(L)&&w($,L)&&(_(s)||u(s))}},49552:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(46285),_=a.document,w=u(_)&&u(_.createElement);s.exports=function(s){return w?_.createElement(s):{}}},49653:(s,o,i)=>{var a=i(37828);s.exports=function cloneArrayBuffer(s){var o=new s.constructor(s.byteLength);return new a(o).set(new a(s)),o}},49698:s=>{var o=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");s.exports=function hasUnicode(s){return o.test(s)}},49724:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(39298),_=a({}.hasOwnProperty);s.exports=Object.hasOwn||function hasOwn(s,o){return _(u(s),o)}},49747:(s,o,i)=>{var a=i(66977);function curry(s,o,i){var u=a(s,8,void 0,void 0,void 0,void 0,void 0,o=i?void 0:o);return u.placeholder=curry.placeholder,u}curry.placeholder={},s.exports=curry},50002:(s,o,i)=>{var a=i(82199),u=i(4664),_=i(95950);s.exports=function getAllKeys(s){return a(s,_,u)}},50104:(s,o,i)=>{var a=i(53661);function memoize(s,o){if(\"function\"!=typeof s||null!=o&&\"function\"!=typeof o)throw new TypeError(\"Expected a function\");var memoized=function(){var i=arguments,a=o?o.apply(this,i):i[0],u=memoized.cache;if(u.has(a))return u.get(a);var _=s.apply(this,i);return memoized.cache=u.set(a,_)||u,_};return memoized.cache=new(memoize.Cache||a),memoized}memoize.Cache=a,s.exports=memoize},50583:(s,o,i)=>{var a=i(47237),u=i(17255),_=i(28586),w=i(77797);s.exports=function property(s){return _(s)?a(w(s)):u(s)}},50689:(s,o,i)=>{var a=i(50002),u=Object.prototype.hasOwnProperty;s.exports=function equalObjects(s,o,i,_,w,x){var C=1&i,j=a(s),L=j.length;if(L!=a(o).length&&!C)return!1;for(var B=L;B--;){var $=j[B];if(!(C?$ in o:u.call(o,$)))return!1}var V=x.get(s),U=x.get(o);if(V&&U)return V==o&&U==s;var z=!0;x.set(s,o),x.set(o,s);for(var Y=C;++B<L;){var Z=s[$=j[B]],ee=o[$];if(_)var ie=C?_(ee,Z,$,o,s,x):_(Z,ee,$,s,o,x);if(!(void 0===ie?Z===ee||w(Z,ee,i,_,x):ie)){z=!1;break}Y||(Y=\"constructor\"==$)}if(z&&!Y){var ae=s.constructor,ce=o.constructor;ae==ce||!(\"constructor\"in s)||!(\"constructor\"in o)||\"function\"==typeof ae&&ae instanceof ae&&\"function\"==typeof ce&&ce instanceof ce||(z=!1)}return x.delete(s),x.delete(o),z}},50828:(s,o,i)=>{var a=i(24647),u=i(13222),_=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,w=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\");s.exports=function deburr(s){return(s=u(s))&&s.replace(_,a).replace(w,\"\")}},51175:(s,o,i)=>{\"use strict\";var a=i(19846);s.exports=a&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},51234:s=>{s.exports=function baseZipObject(s,o,i){for(var a=-1,u=s.length,_=o.length,w={};++a<u;){var x=a<_?o[a]:void 0;i(w,s[a],x)}return w}},51420:(s,o,i)=>{var a=i(80079);s.exports=function stackClear(){this.__data__=new a,this.size=0}},51459:s=>{s.exports=function setCacheHas(s){return this.__data__.has(s)}},51811:s=>{var o=Date.now;s.exports=function shortOut(s){var i=0,a=0;return function(){var u=o(),_=16-(u-a);if(a=u,_>0){if(++i>=800)return arguments[0]}else i=0;return s.apply(void 0,arguments)}}},51871:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(82159);s.exports=function(s,o,i){try{return a(u(Object.getOwnPropertyDescriptor(s,o)[i]))}catch(s){}}},51873:(s,o,i)=>{var a=i(9325).Symbol;s.exports=a},52623:(s,o,i)=>{\"use strict\";var a={};a[i(76264)(\"toStringTag\")]=\"z\",s.exports=\"[object z]\"===String(a)},53138:(s,o,i)=>{var a=i(11331);s.exports=function customOmitClone(s){return a(s)?void 0:s}},53209:(s,o,i)=>{\"use strict\";var a=i(65606),u=65536,_=4294967295;var w=i(92861).Buffer,x=i.g.crypto||i.g.msCrypto;x&&x.getRandomValues?s.exports=function randomBytes(s,o){if(s>_)throw new RangeError(\"requested too many random bytes\");var i=w.allocUnsafe(s);if(s>0)if(s>u)for(var C=0;C<s;C+=u)x.getRandomValues(i.slice(C,C+u));else x.getRandomValues(i);if(\"function\"==typeof o)return a.nextTick((function(){o(null,i)}));return i}:s.exports=function oldBrowser(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}},53320:s=>{var o=Math.max;s.exports=function composeArgsRight(s,i,a,u){for(var _=-1,w=s.length,x=-1,C=a.length,j=-1,L=i.length,B=o(w-C,0),$=Array(B+L),V=!u;++_<B;)$[_]=s[_];for(var U=_;++j<L;)$[U+j]=i[j];for(;++x<C;)(V||_<w)&&($[U+a[x]]=s[_++]);return $}},53375:(s,o,i)=>{\"use strict\";var a=i(93700);s.exports=a},53661:(s,o,i)=>{var a=i(63040),u=i(17670),_=i(90289),w=i(4509),x=i(72949);function MapCache(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}MapCache.prototype.clear=a,MapCache.prototype.delete=u,MapCache.prototype.get=_,MapCache.prototype.has=w,MapCache.prototype.set=x,s.exports=MapCache},53758:(s,o,i)=>{var a=i(30980),u=i(56017),_=i(94033),w=i(56449),x=i(40346),C=i(80257),j=Object.prototype.hasOwnProperty;function lodash(s){if(x(s)&&!w(s)&&!(s instanceof a)){if(s instanceof u)return s;if(j.call(s,\"__wrapped__\"))return C(s)}return new u(s)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,s.exports=lodash},53812:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isBoolean(s){return!0===s||!1===s||u(s)&&\"[object Boolean]\"==a(s)}},54018:(s,o,i)=>{\"use strict\";var a=i(46285);s.exports=function(s){return a(s)||null===s}},54128:(s,o,i)=>{var a=i(31800),u=/^\\s+/;s.exports=function baseTrim(s){return s?s.slice(0,a(s)+1).replace(u,\"\"):s}},54552:s=>{s.exports=function basePropertyOf(s){return function(o){return null==s?void 0:s[o]}}},54641:(s,o,i)=>{var a=i(68882),u=i(51811)(a);s.exports=u},54829:(s,o,i)=>{\"use strict\";var a=i(74284).f;s.exports=function(s,o,i){i in s||a(s,i,{configurable:!0,get:function(){return o[i]},set:function(s){o[i]=s}})}},54878:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(73948);s.exports=a?{}.toString:function toString(){return\"[object \"+u(this)+\"]\"}},55157:s=>{s.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},55364:(s,o,i)=>{var a=i(85250),u=i(20999)((function(s,o,i){a(s,o,i)}));s.exports=u},55481:(s,o,i)=>{var a=i(9325)[\"__core-js_shared__\"];s.exports=a},55527:s=>{var o=Object.prototype;s.exports=function isPrototype(s){var i=s&&s.constructor;return s===(\"function\"==typeof i&&i.prototype||o)}},55580:(s,o,i)=>{var a=i(56110)(i(9325),\"DataView\");s.exports=a},55674:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.validateNextState=o.getUnexpectedInvocationParameterMessage=o.getStateName=void 0;var a=_interopRequireDefault(i(48590)),u=_interopRequireDefault(i(82261)),_=_interopRequireDefault(i(27374));function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}o.getStateName=a.default,o.getUnexpectedInvocationParameterMessage=u.default,o.validateNextState=_.default},55808:(s,o,i)=>{var a=i(12507)(\"toUpperCase\");s.exports=a},55973:s=>{class KeyValuePair{constructor(s,o){this.key=s,this.value=o}clone(){const s=new KeyValuePair;return this.key&&(s.key=this.key.clone()),this.value&&(s.value=this.value.clone()),s}}s.exports=KeyValuePair},56017:(s,o,i)=>{var a=i(39344),u=i(94033);function LodashWrapper(s,o){this.__wrapped__=s,this.__actions__=[],this.__chain__=!!o,this.__index__=0,this.__values__=void 0}LodashWrapper.prototype=a(u.prototype),LodashWrapper.prototype.constructor=LodashWrapper,s.exports=LodashWrapper},56110:(s,o,i)=>{var a=i(45083),u=i(10392);s.exports=function getNative(s,o){var i=u(s,o);return a(i)?i:void 0}},56367:(s,o,i)=>{s.exports=i(77731)},56449:s=>{var o=Array.isArray;s.exports=o},56698:s=>{\"function\"==typeof Object.create?s.exports=function inherits(s,o){o&&(s.super_=o,s.prototype=Object.create(o.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:s.exports=function inherits(s,o){if(o){s.super_=o;var TempCtor=function(){};TempCtor.prototype=o.prototype,s.prototype=new TempCtor,s.prototype.constructor=s}}},56757:(s,o,i)=>{var a=i(91033),u=Math.max;s.exports=function overRest(s,o,i){return o=u(void 0===o?s.length-1:o,0),function(){for(var _=arguments,w=-1,x=u(_.length-o,0),C=Array(x);++w<x;)C[w]=_[o+w];w=-1;for(var j=Array(o+1);++w<o;)j[w]=_[w];return j[o]=i(C),a(s,this,j)}}},57382:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},57758:(s,o,i)=>{\"use strict\";var a;var u=i(86048).F,_=u.ERR_MISSING_ARGS,w=u.ERR_STREAM_DESTROYED;function noop(s){if(s)throw s}function call(s){s()}function pipe(s,o){return s.pipe(o)}s.exports=function pipeline(){for(var s=arguments.length,o=new Array(s),u=0;u<s;u++)o[u]=arguments[u];var x,C=function popCallback(s){return s.length?\"function\"!=typeof s[s.length-1]?noop:s.pop():noop}(o);if(Array.isArray(o[0])&&(o=o[0]),o.length<2)throw new _(\"streams\");var j=o.map((function(s,u){var _=u<o.length-1;return function destroyer(s,o,u,_){_=function once(s){var o=!1;return function(){o||(o=!0,s.apply(void 0,arguments))}}(_);var x=!1;s.on(\"close\",(function(){x=!0})),void 0===a&&(a=i(86238)),a(s,{readable:o,writable:u},(function(s){if(s)return _(s);x=!0,_()}));var C=!1;return function(o){if(!x&&!C)return C=!0,function isRequest(s){return s.setHeader&&\"function\"==typeof s.abort}(s)?s.abort():\"function\"==typeof s.destroy?s.destroy():void _(o||new w(\"pipe\"))}}(s,_,u>0,(function(s){x||(x=s),s&&j.forEach(call),_||(j.forEach(call),C(x))}))}));return o.reduce(pipe)}},58075:(s,o,i)=>{\"use strict\";var a,u=i(36624),_=i(42220),w=i(80376),x=i(38530),C=i(62416),j=i(49552),L=i(92522),B=\"prototype\",$=\"script\",V=L(\"IE_PROTO\"),EmptyConstructor=function(){},scriptTag=function(s){return\"<\"+$+\">\"+s+\"</\"+$+\">\"},NullProtoObjectViaActiveX=function(s){s.write(scriptTag(\"\")),s.close();var o=s.parentWindow.Object;return s=null,o},NullProtoObject=function(){try{a=new ActiveXObject(\"htmlfile\")}catch(s){}var s,o,i;NullProtoObject=\"undefined\"!=typeof document?document.domain&&a?NullProtoObjectViaActiveX(a):(o=j(\"iframe\"),i=\"java\"+$+\":\",o.style.display=\"none\",C.appendChild(o),o.src=String(i),(s=o.contentWindow.document).open(),s.write(scriptTag(\"document.F=Object\")),s.close(),s.F):NullProtoObjectViaActiveX(a);for(var u=w.length;u--;)delete NullProtoObject[B][w[u]];return NullProtoObject()};x[V]=!0,s.exports=Object.create||function create(s,o){var i;return null!==s?(EmptyConstructor[B]=u(s),i=new EmptyConstructor,EmptyConstructor[B]=null,i[V]=s):i=NullProtoObject(),void 0===o?i:_.f(i,o)}},58156:(s,o,i)=>{var a=i(47422);s.exports=function get(s,o,i){var u=null==s?void 0:a(s,o);return void 0===u?i:u}},58523:s=>{s.exports=function countHolders(s,o){for(var i=s.length,a=0;i--;)s[i]===o&&++a;return a}},58661:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(98828);s.exports=a&&u((function(){return 42!==Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},59350:s=>{var o=Object.prototype.toString;s.exports=function objectToString(s){return o.call(s)}},59399:(s,o,i)=>{\"use strict\";var a=i(25264).CopyToClipboard;a.CopyToClipboard=a,s.exports=a},59550:s=>{\"use strict\";s.exports=function(s,o){return{value:s,done:o}}},60183:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(13930),_=i(7376),w=i(36833),x=i(62250),C=i(47181),j=i(15972),L=i(79192),B=i(14840),$=i(61626),V=i(68055),U=i(76264),z=i(93742),Y=i(95116),Z=w.PROPER,ee=w.CONFIGURABLE,ie=Y.IteratorPrototype,ae=Y.BUGGY_SAFARI_ITERATORS,ce=U(\"iterator\"),le=\"keys\",pe=\"values\",de=\"entries\",returnThis=function(){return this};s.exports=function(s,o,i,w,U,Y,fe){C(i,o,w);var ye,be,_e,getIterationMethod=function(s){if(s===U&&Te)return Te;if(!ae&&s&&s in xe)return xe[s];switch(s){case le:return function keys(){return new i(this,s)};case pe:return function values(){return new i(this,s)};case de:return function entries(){return new i(this,s)}}return function(){return new i(this)}},Se=o+\" Iterator\",we=!1,xe=s.prototype,Pe=xe[ce]||xe[\"@@iterator\"]||U&&xe[U],Te=!ae&&Pe||getIterationMethod(U),Re=\"Array\"===o&&xe.entries||Pe;if(Re&&(ye=j(Re.call(new s)))!==Object.prototype&&ye.next&&(_||j(ye)===ie||(L?L(ye,ie):x(ye[ce])||V(ye,ce,returnThis)),B(ye,Se,!0,!0),_&&(z[Se]=returnThis)),Z&&U===pe&&Pe&&Pe.name!==pe&&(!_&&ee?$(xe,\"name\",pe):(we=!0,Te=function values(){return u(Pe,this)})),U)if(be={values:getIterationMethod(pe),keys:Y?Te:getIterationMethod(le),entries:getIterationMethod(de)},fe)for(_e in be)(ae||we||!(_e in xe))&&V(xe,_e,be[_e]);else a({target:o,proto:!0,forced:ae||we},be);return _&&!fe||xe[ce]===Te||V(xe,ce,Te,{name:U}),z[o]=Te,be}},60270:(s,o,i)=>{var a=i(87068),u=i(40346);s.exports=function baseIsEqual(s,o,i,_,w){return s===o||(null==s||null==o||!u(s)&&!u(o)?s!=s&&o!=o:a(s,o,i,_,baseIsEqual,w))}},60581:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(62250),_=i(46285),w=TypeError;s.exports=function(s,o){var i,x;if(\"string\"===o&&u(i=s.toString)&&!_(x=a(i,s)))return x;if(u(i=s.valueOf)&&!_(x=a(i,s)))return x;if(\"string\"!==o&&u(i=s.toString)&&!_(x=a(i,s)))return x;throw new w(\"Can't convert object to primitive value\")}},60680:(s,o,i)=>{var a=i(13222),u=/[\\\\^$.*+?()[\\]{}|]/g,_=RegExp(u.source);s.exports=function escapeRegExp(s){return(s=a(s))&&_.test(s)?s.replace(u,\"\\\\$&\"):s}},61045:(s,o,i)=>{const a=i(6048),u=i(23805),_=i(6233),w=i(87726),x=i(10866);s.exports=class ObjectElement extends _{constructor(s,o,i){super(s||[],o,i),this.element=\"object\"}primitive(){return\"object\"}toValue(){return this.content.reduce(((s,o)=>(s[o.key.toValue()]=o.value?o.value.toValue():void 0,s)),{})}get(s){const o=this.getMember(s);if(o)return o.value}getMember(s){if(void 0!==s)return this.content.find((o=>o.key.toValue()===s))}remove(s){let o=null;return this.content=this.content.filter((i=>i.key.toValue()!==s||(o=i,!1))),o}getKey(s){const o=this.getMember(s);if(o)return o.key}set(s,o){if(u(s))return Object.keys(s).forEach((o=>{this.set(o,s[o])})),this;const i=s,a=this.getMember(i);return a?a.value=o:this.content.push(new w(i,o)),this}keys(){return this.content.map((s=>s.key.toValue()))}values(){return this.content.map((s=>s.value.toValue()))}hasKey(s){return this.content.some((o=>o.key.equals(s)))}items(){return this.content.map((s=>[s.key.toValue(),s.value.toValue()]))}map(s,o){return this.content.map((i=>s.bind(o)(i.value,i.key,i)))}compactMap(s,o){const i=[];return this.forEach(((a,u,_)=>{const w=s.bind(o)(a,u,_);w&&i.push(w)})),i}filter(s,o){return new x(this.content).filter(s,o)}reject(s,o){return this.filter(a(s),o)}forEach(s,o){return this.content.forEach((i=>s.bind(o)(i.value,i.key,i)))}}},61074:s=>{s.exports=function asciiToArray(s){return s.split(\"\")}},61160:(s,o,i)=>{\"use strict\";var a=i(92063),u=i(73992),_=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,w=/[\\n\\r\\t]/g,x=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,C=/:\\d+$/,j=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,L=/^[a-zA-Z]:/;function trimLeft(s){return(s||\"\").toString().replace(_,\"\")}var B=[[\"#\",\"hash\"],[\"?\",\"query\"],function sanitize(s,o){return isSpecial(o.protocol)?s.replace(/\\\\/g,\"/\"):s},[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],$={hash:1,query:1};function lolcation(s){var o,a=(\"undefined\"!=typeof window?window:void 0!==i.g?i.g:\"undefined\"!=typeof self?self:{}).location||{},u={},_=typeof(s=s||a);if(\"blob:\"===s.protocol)u=new Url(unescape(s.pathname),{});else if(\"string\"===_)for(o in u=new Url(s,{}),$)delete u[o];else if(\"object\"===_){for(o in s)o in $||(u[o]=s[o]);void 0===u.slashes&&(u.slashes=x.test(s.href))}return u}function isSpecial(s){return\"file:\"===s||\"ftp:\"===s||\"http:\"===s||\"https:\"===s||\"ws:\"===s||\"wss:\"===s}function extractProtocol(s,o){s=(s=trimLeft(s)).replace(w,\"\"),o=o||{};var i,a=j.exec(s),u=a[1]?a[1].toLowerCase():\"\",_=!!a[2],x=!!a[3],C=0;return _?x?(i=a[2]+a[3]+a[4],C=a[2].length+a[3].length):(i=a[2]+a[4],C=a[2].length):x?(i=a[3]+a[4],C=a[3].length):i=a[4],\"file:\"===u?C>=2&&(i=i.slice(2)):isSpecial(u)?i=a[4]:u?_&&(i=i.slice(2)):C>=2&&isSpecial(o.protocol)&&(i=a[4]),{protocol:u,slashes:_||isSpecial(u),slashesCount:C,rest:i}}function Url(s,o,i){if(s=(s=trimLeft(s)).replace(w,\"\"),!(this instanceof Url))return new Url(s,o,i);var _,x,C,j,$,V,U=B.slice(),z=typeof o,Y=this,Z=0;for(\"object\"!==z&&\"string\"!==z&&(i=o,o=null),i&&\"function\"!=typeof i&&(i=u.parse),_=!(x=extractProtocol(s||\"\",o=lolcation(o))).protocol&&!x.slashes,Y.slashes=x.slashes||_&&o.slashes,Y.protocol=x.protocol||o.protocol||\"\",s=x.rest,(\"file:\"===x.protocol&&(2!==x.slashesCount||L.test(s))||!x.slashes&&(x.protocol||x.slashesCount<2||!isSpecial(Y.protocol)))&&(U[3]=[/(.*)/,\"pathname\"]);Z<U.length;Z++)\"function\"!=typeof(j=U[Z])?(C=j[0],V=j[1],C!=C?Y[V]=s:\"string\"==typeof C?~($=\"@\"===C?s.lastIndexOf(C):s.indexOf(C))&&(\"number\"==typeof j[2]?(Y[V]=s.slice(0,$),s=s.slice($+j[2])):(Y[V]=s.slice($),s=s.slice(0,$))):($=C.exec(s))&&(Y[V]=$[1],s=s.slice(0,$.index)),Y[V]=Y[V]||_&&j[3]&&o[V]||\"\",j[4]&&(Y[V]=Y[V].toLowerCase())):s=j(s,Y);i&&(Y.query=i(Y.query)),_&&o.slashes&&\"/\"!==Y.pathname.charAt(0)&&(\"\"!==Y.pathname||\"\"!==o.pathname)&&(Y.pathname=function resolve(s,o){if(\"\"===s)return o;for(var i=(o||\"/\").split(\"/\").slice(0,-1).concat(s.split(\"/\")),a=i.length,u=i[a-1],_=!1,w=0;a--;)\".\"===i[a]?i.splice(a,1):\"..\"===i[a]?(i.splice(a,1),w++):w&&(0===a&&(_=!0),i.splice(a,1),w--);return _&&i.unshift(\"\"),\".\"!==u&&\"..\"!==u||i.push(\"\"),i.join(\"/\")}(Y.pathname,o.pathname)),\"/\"!==Y.pathname.charAt(0)&&isSpecial(Y.protocol)&&(Y.pathname=\"/\"+Y.pathname),a(Y.port,Y.protocol)||(Y.host=Y.hostname,Y.port=\"\"),Y.username=Y.password=\"\",Y.auth&&(~($=Y.auth.indexOf(\":\"))?(Y.username=Y.auth.slice(0,$),Y.username=encodeURIComponent(decodeURIComponent(Y.username)),Y.password=Y.auth.slice($+1),Y.password=encodeURIComponent(decodeURIComponent(Y.password))):Y.username=encodeURIComponent(decodeURIComponent(Y.auth)),Y.auth=Y.password?Y.username+\":\"+Y.password:Y.username),Y.origin=\"file:\"!==Y.protocol&&isSpecial(Y.protocol)&&Y.host?Y.protocol+\"//\"+Y.host:\"null\",Y.href=Y.toString()}Url.prototype={set:function set(s,o,i){var _=this;switch(s){case\"query\":\"string\"==typeof o&&o.length&&(o=(i||u.parse)(o)),_[s]=o;break;case\"port\":_[s]=o,a(o,_.protocol)?o&&(_.host=_.hostname+\":\"+o):(_.host=_.hostname,_[s]=\"\");break;case\"hostname\":_[s]=o,_.port&&(o+=\":\"+_.port),_.host=o;break;case\"host\":_[s]=o,C.test(o)?(o=o.split(\":\"),_.port=o.pop(),_.hostname=o.join(\":\")):(_.hostname=o,_.port=\"\");break;case\"protocol\":_.protocol=o.toLowerCase(),_.slashes=!i;break;case\"pathname\":case\"hash\":if(o){var w=\"pathname\"===s?\"/\":\"#\";_[s]=o.charAt(0)!==w?w+o:o}else _[s]=o;break;case\"username\":case\"password\":_[s]=encodeURIComponent(o);break;case\"auth\":var x=o.indexOf(\":\");~x?(_.username=o.slice(0,x),_.username=encodeURIComponent(decodeURIComponent(_.username)),_.password=o.slice(x+1),_.password=encodeURIComponent(decodeURIComponent(_.password))):_.username=encodeURIComponent(decodeURIComponent(o))}for(var j=0;j<B.length;j++){var L=B[j];L[4]&&(_[L[1]]=_[L[1]].toLowerCase())}return _.auth=_.password?_.username+\":\"+_.password:_.username,_.origin=\"file:\"!==_.protocol&&isSpecial(_.protocol)&&_.host?_.protocol+\"//\"+_.host:\"null\",_.href=_.toString(),_},toString:function toString(s){s&&\"function\"==typeof s||(s=u.stringify);var o,i=this,a=i.host,_=i.protocol;_&&\":\"!==_.charAt(_.length-1)&&(_+=\":\");var w=_+(i.protocol&&i.slashes||isSpecial(i.protocol)?\"//\":\"\");return i.username?(w+=i.username,i.password&&(w+=\":\"+i.password),w+=\"@\"):i.password?(w+=\":\"+i.password,w+=\"@\"):\"file:\"!==i.protocol&&isSpecial(i.protocol)&&!a&&\"/\"!==i.pathname&&(w+=\"@\"),(\":\"===a[a.length-1]||C.test(i.hostname)&&!i.port)&&(a+=\":\"),w+=a+i.pathname,(o=\"object\"==typeof i.query?s(i.query):i.query)&&(w+=\"?\"!==o.charAt(0)?\"?\"+o:o),i.hash&&(w+=i.hash),w}},Url.extractProtocol=extractProtocol,Url.location=lolcation,Url.trimLeft=trimLeft,Url.qs=u,s.exports=Url},61448:(s,o,i)=>{var a=i(20426),u=i(49326);s.exports=function has(s,o){return null!=s&&u(s,o,a)}},61489:(s,o,i)=>{var a=i(17400);s.exports=function toInteger(s){var o=a(s),i=o%1;return o==o?i?o-i:o:0}},61626:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(74284),_=i(75817);s.exports=a?function(s,o,i){return u.f(s,o,_(1,i))}:function(s,o,i){return s[o]=i,s}},61747:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(92046);s.exports=function(s,o){var i=u[s+\"Prototype\"],_=i&&i[o];if(_)return _;var w=a[s],x=w&&w.prototype;return x&&x[o]}},61802:(s,o,i)=>{var a=i(62224),u=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,_=/\\\\(\\\\)?/g,w=a((function(s){var o=[];return 46===s.charCodeAt(0)&&o.push(\"\"),s.replace(u,(function(s,i,a,u){o.push(a?u.replace(_,\"$1\"):i||s)})),o}));s.exports=w},62006:(s,o,i)=>{var a=i(15389),u=i(64894),_=i(95950);s.exports=function createFind(s){return function(o,i,w){var x=Object(o);if(!u(o)){var C=a(i,3);o=_(o),i=function(s){return C(x[s],s,x)}}var j=s(o,i,w);return j>-1?x[C?o[j]:j]:void 0}}},62060:s=>{var o=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;s.exports=function insertWrapDetails(s,i){var a=i.length;if(!a)return s;var u=a-1;return i[u]=(a>1?\"& \":\"\")+i[u],i=i.join(a>2?\", \":\" \"),s.replace(o,\"{\\n/* [wrapped with \"+i+\"] */\\n\")}},62193:(s,o,i)=>{var a=i(88984),u=i(5861),_=i(72428),w=i(56449),x=i(64894),C=i(3656),j=i(55527),L=i(37167),B=Object.prototype.hasOwnProperty;s.exports=function isEmpty(s){if(null==s)return!0;if(x(s)&&(w(s)||\"string\"==typeof s||\"function\"==typeof s.splice||C(s)||L(s)||_(s)))return!s.length;var o=u(s);if(\"[object Map]\"==o||\"[object Set]\"==o)return!s.size;if(j(s))return!a(s).length;for(var i in s)if(B.call(s,i))return!1;return!0}},62224:(s,o,i)=>{var a=i(50104);s.exports=function memoizeCapped(s){var o=a(s,(function(s){return 500===i.size&&i.clear(),s})),i=o.cache;return o}},62250:s=>{\"use strict\";var o=\"object\"==typeof document&&document.all;s.exports=void 0===o&&void 0!==o?function(s){return\"function\"==typeof s||s===o}:function(s){return\"function\"==typeof s}},62284:(s,o,i)=>{var a=i(84629),u=Object.prototype.hasOwnProperty;s.exports=function getFuncName(s){for(var o=s.name+\"\",i=a[o],_=u.call(a,o)?i.length:0;_--;){var w=i[_],x=w.func;if(null==x||x==s)return w.name}return o}},62416:(s,o,i)=>{\"use strict\";var a=i(85582);s.exports=a(\"document\",\"documentElement\")},62802:(s,o,i)=>{var a=s.exports=function SHA(s){s=s.toLowerCase();var o=a[s];if(!o)throw new Error(s+\" is not supported (we accept pull requests)\");return new o};a.sha=i(27816),a.sha1=i(63737),a.sha224=i(26710),a.sha256=i(24107),a.sha384=i(32827),a.sha512=i(82890)},63040:(s,o,i)=>{var a=i(21549),u=i(80079),_=i(68223);s.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new a,map:new(_||u),string:new a}}},63345:s=>{s.exports=function stubArray(){return[]}},63560:(s,o,i)=>{var a=i(73170);s.exports=function set(s,o,i){return null==s?s:a(s,o,i)}},63600:(s,o,i)=>{\"use strict\";s.exports=PassThrough;var a=i(74610);function PassThrough(s){if(!(this instanceof PassThrough))return new PassThrough(s);a.call(this,s)}i(56698)(PassThrough,a),PassThrough.prototype._transform=function(s,o,i){i(null,s)}},63605:s=>{s.exports=function stackGet(s){return this.__data__.get(s)}},63702:s=>{s.exports=function listCacheClear(){this.__data__=[],this.size=0}},63737:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1518500249,1859775393,-1894007588,-899497514],x=new Array(80);function Sha1(){this.init(),this._w=x,u.call(this,64,56)}function rotl5(s){return s<<5|s>>>27}function rotl30(s){return s<<30|s>>>2}function ft(s,o,i,a){return 0===s?o&i|~o&a:2===s?o&i|o&a|i&a:o^i^a}a(Sha1,u),Sha1.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha1.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0;j<16;++j)i[j]=s.readInt32BE(4*j);for(;j<80;++j)i[j]=(o=i[j-3]^i[j-8]^i[j-14]^i[j-16])<<1|o>>>31;for(var L=0;L<80;++L){var B=~~(L/20),$=rotl5(a)+ft(B,u,_,x)+C+i[L]+w[B]|0;C=x,x=_,_=rotl30(u),u=a,a=$}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0},Sha1.prototype._hash=function(){var s=_.allocUnsafe(20);return s.writeInt32BE(0|this._a,0),s.writeInt32BE(0|this._b,4),s.writeInt32BE(0|this._c,8),s.writeInt32BE(0|this._d,12),s.writeInt32BE(0|this._e,16),s},s.exports=Sha1},63862:s=>{s.exports=function hashDelete(s){var o=this.has(s)&&delete this.__data__[s];return this.size-=o?1:0,o}},63912:(s,o,i)=>{var a=i(61074),u=i(49698),_=i(42054);s.exports=function stringToArray(s){return u(s)?_(s):a(s)}},63950:s=>{s.exports=function noop(){}},64502:(s,o,i)=>{\"use strict\";i(82048)},64626:(s,o,i)=>{var a=i(66977);s.exports=function ary(s,o,i){return o=i?void 0:o,o=s&&null==o?s.length:o,a(s,128,void 0,void 0,void 0,void 0,o)}},64894:(s,o,i)=>{var a=i(1882),u=i(30294);s.exports=function isArrayLike(s){return null!=s&&u(s.length)&&!a(s)}},64932:(s,o,i)=>{\"use strict\";var a,u,_,w=i(40551),x=i(45951),C=i(46285),j=i(61626),L=i(49724),B=i(36128),$=i(92522),V=i(38530),U=\"Object already initialized\",z=x.TypeError,Y=x.WeakMap;if(w||B.state){var Z=B.state||(B.state=new Y);Z.get=Z.get,Z.has=Z.has,Z.set=Z.set,a=function(s,o){if(Z.has(s))throw new z(U);return o.facade=s,Z.set(s,o),o},u=function(s){return Z.get(s)||{}},_=function(s){return Z.has(s)}}else{var ee=$(\"state\");V[ee]=!0,a=function(s,o){if(L(s,ee))throw new z(U);return o.facade=s,j(s,ee,o),o},u=function(s){return L(s,ee)?s[ee]:{}},_=function(s){return L(s,ee)}}s.exports={set:a,get:u,has:_,enforce:function(s){return _(s)?u(s):a(s,{})},getterFor:function(s){return function(o){var i;if(!C(o)||(i=u(o)).type!==s)throw new z(\"Incompatible receiver, \"+s+\" required\");return i}}}},65291:(s,o,i)=>{\"use strict\";var a=i(86048).F.ERR_INVALID_OPT_VALUE;s.exports={getHighWaterMark:function getHighWaterMark(s,o,i,u){var _=function highWaterMarkFrom(s,o,i){return null!=s.highWaterMark?s.highWaterMark:o?s[i]:null}(o,u,i);if(null!=_){if(!isFinite(_)||Math.floor(_)!==_||_<0)throw new a(u?i:\"highWaterMark\",_);return Math.floor(_)}return s.objectMode?16:16384}}},65482:(s,o,i)=>{\"use strict\";var a=i(41176);s.exports=function(s){var o=+s;return o!=o||0===o?0:a(o)}},65606:s=>{var o,i,a=s.exports={};function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(s){if(o===setTimeout)return setTimeout(s,0);if((o===defaultSetTimout||!o)&&setTimeout)return o=setTimeout,setTimeout(s,0);try{return o(s,0)}catch(i){try{return o.call(null,s,0)}catch(i){return o.call(this,s,0)}}}!function(){try{o=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(s){o=defaultSetTimout}try{i=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(s){i=defaultClearTimeout}}();var u,_=[],w=!1,x=-1;function cleanUpNextTick(){w&&u&&(w=!1,u.length?_=u.concat(_):x=-1,_.length&&drainQueue())}function drainQueue(){if(!w){var s=runTimeout(cleanUpNextTick);w=!0;for(var o=_.length;o;){for(u=_,_=[];++x<o;)u&&u[x].run();x=-1,o=_.length}u=null,w=!1,function runClearTimeout(s){if(i===clearTimeout)return clearTimeout(s);if((i===defaultClearTimeout||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(s);try{return i(s)}catch(o){try{return i.call(null,s)}catch(o){return i.call(this,s)}}}(s)}}function Item(s,o){this.fun=s,this.array=o}function noop(){}a.nextTick=function(s){var o=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)o[i-1]=arguments[i];_.push(new Item(s,o)),1!==_.length||w||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},a.title=\"browser\",a.browser=!0,a.env={},a.argv=[],a.version=\"\",a.versions={},a.on=noop,a.addListener=noop,a.once=noop,a.off=noop,a.removeListener=noop,a.removeAllListeners=noop,a.emit=noop,a.prependListener=noop,a.prependOnceListener=noop,a.listeners=function(s){return[]},a.binding=function(s){throw new Error(\"process.binding is not supported\")},a.cwd=function(){return\"/\"},a.chdir=function(s){throw new Error(\"process.chdir is not supported\")},a.umask=function(){return 0}},65772:s=>{s.exports=function json(s){const o={literal:\"true false null\"},i=[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE],a=[s.QUOTE_STRING_MODE,s.C_NUMBER_MODE],u={end:\",\",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:o},_={begin:/\\{/,end:/\\}/,contains:[{className:\"attr\",begin:/\"/,end:/\"/,contains:[s.BACKSLASH_ESCAPE],illegal:\"\\\\n\"},s.inherit(u,{begin:/:/})].concat(i),illegal:\"\\\\S\"},w={begin:\"\\\\[\",end:\"\\\\]\",contains:[s.inherit(u)],illegal:\"\\\\S\"};return a.push(_,w),i.forEach((function(s){a.push(s)})),{name:\"JSON\",contains:a,keywords:o,illegal:\"\\\\S\"}}},66645:(s,o,i)=>{var a=i(1733),u=i(45434),_=i(13222),w=i(22225);s.exports=function words(s,o,i){return s=_(s),void 0===(o=i?void 0:o)?u(s)?w(s):a(s):s.match(o)||[]}},66721:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashGet(s){var o=this.__data__;if(a){var i=o[s];return\"__lodash_hash_undefined__\"===i?void 0:i}return u.call(o,s)?o[s]:void 0}},66977:(s,o,i)=>{var a=i(68882),u=i(11842),_=i(77078),w=i(37471),x=i(24168),C=i(37381),j=i(3209),L=i(54641),B=i(70981),$=i(61489),V=Math.max;s.exports=function createWrap(s,o,i,U,z,Y,Z,ee){var ie=2&o;if(!ie&&\"function\"!=typeof s)throw new TypeError(\"Expected a function\");var ae=U?U.length:0;if(ae||(o&=-97,U=z=void 0),Z=void 0===Z?Z:V($(Z),0),ee=void 0===ee?ee:$(ee),ae-=z?z.length:0,64&o){var ce=U,le=z;U=z=void 0}var pe=ie?void 0:C(s),de=[s,o,i,U,z,ce,le,Y,Z,ee];if(pe&&j(de,pe),s=de[0],o=de[1],i=de[2],U=de[3],z=de[4],!(ee=de[9]=void 0===de[9]?ie?0:s.length:V(de[9]-ae,0))&&24&o&&(o&=-25),o&&1!=o)fe=8==o||16==o?_(s,o,ee):32!=o&&33!=o||z.length?w.apply(void 0,de):x(s,o,i,U);else var fe=u(s,o,i);return B((pe?a:L)(fe,de),s,o)}},67197:s=>{s.exports=function matchesStrictComparable(s,o){return function(i){return null!=i&&(i[s]===o&&(void 0!==o||s in Object(i)))}}},67526:(s,o)=>{\"use strict\";o.byteLength=function byteLength(s){var o=getLens(s),i=o[0],a=o[1];return 3*(i+a)/4-a},o.toByteArray=function toByteArray(s){var o,i,_=getLens(s),w=_[0],x=_[1],C=new u(function _byteLength(s,o,i){return 3*(o+i)/4-i}(0,w,x)),j=0,L=x>0?w-4:w;for(i=0;i<L;i+=4)o=a[s.charCodeAt(i)]<<18|a[s.charCodeAt(i+1)]<<12|a[s.charCodeAt(i+2)]<<6|a[s.charCodeAt(i+3)],C[j++]=o>>16&255,C[j++]=o>>8&255,C[j++]=255&o;2===x&&(o=a[s.charCodeAt(i)]<<2|a[s.charCodeAt(i+1)]>>4,C[j++]=255&o);1===x&&(o=a[s.charCodeAt(i)]<<10|a[s.charCodeAt(i+1)]<<4|a[s.charCodeAt(i+2)]>>2,C[j++]=o>>8&255,C[j++]=255&o);return C},o.fromByteArray=function fromByteArray(s){for(var o,a=s.length,u=a%3,_=[],w=16383,x=0,C=a-u;x<C;x+=w)_.push(encodeChunk(s,x,x+w>C?C:x+w));1===u?(o=s[a-1],_.push(i[o>>2]+i[o<<4&63]+\"==\")):2===u&&(o=(s[a-2]<<8)+s[a-1],_.push(i[o>>10]+i[o>>4&63]+i[o<<2&63]+\"=\"));return _.join(\"\")};for(var i=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",w=0;w<64;++w)i[w]=_[w],a[_.charCodeAt(w)]=w;function getLens(s){var o=s.length;if(o%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var i=s.indexOf(\"=\");return-1===i&&(i=o),[i,i===o?0:4-i%4]}function encodeChunk(s,o,a){for(var u,_,w=[],x=o;x<a;x+=3)u=(s[x]<<16&16711680)+(s[x+1]<<8&65280)+(255&s[x+2]),w.push(i[(_=u)>>18&63]+i[_>>12&63]+i[_>>6&63]+i[63&_]);return w.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},68055:(s,o,i)=>{\"use strict\";var a=i(61626);s.exports=function(s,o,i,u){return u&&u.enumerable?s[o]=i:a(s,o,i),s}},68090:s=>{s.exports=function last(s){var o=null==s?0:s.length;return o?s[o-1]:void 0}},68223:(s,o,i)=>{var a=i(56110)(i(9325),\"Map\");s.exports=a},68294:(s,o,i)=>{var a=i(23007),u=i(30361),_=Math.min;s.exports=function reorder(s,o){for(var i=s.length,w=_(o.length,i),x=a(s);w--;){var C=o[w];s[w]=u(C,i)?x[C]:void 0}return s}},68623:(s,o,i)=>{\"use strict\";var a=i(694);s.exports=a},68882:(s,o,i)=>{var a=i(83488),u=i(48152),_=u?function(s,o){return u.set(s,o),s}:a;s.exports=_},68969:(s,o,i)=>{var a=i(47422),u=i(25160);s.exports=function parent(s,o){return o.length<2?s:a(s,u(o,0,-1))}},69302:(s,o,i)=>{var a=i(83488),u=i(56757),_=i(32865);s.exports=function baseRest(s,o){return _(u(s,o,a),s+\"\")}},69884:(s,o,i)=>{var a=i(21791),u=i(37241);s.exports=function toPlainObject(s){return a(s,u(s))}},69982:(s,o,i)=>{\"use strict\";s.exports=i(29844)},70080:(s,o,i)=>{var a=i(26025),u=Array.prototype.splice;s.exports=function listCacheDelete(s){var o=this.__data__,i=a(o,s);return!(i<0)&&(i==o.length-1?o.pop():u.call(o,i,1),--this.size,!0)}},70470:(s,o,i)=>{\"use strict\";var a=i(46028),u=i(25594);s.exports=function(s){var o=a(s,\"string\");return u(o)?o:o+\"\"}},70695:(s,o,i)=>{var a=i(78096),u=i(72428),_=i(56449),w=i(3656),x=i(30361),C=i(37167),j=Object.prototype.hasOwnProperty;s.exports=function arrayLikeKeys(s,o){var i=_(s),L=!i&&u(s),B=!i&&!L&&w(s),$=!i&&!L&&!B&&C(s),V=i||L||B||$,U=V?a(s.length,String):[],z=U.length;for(var Y in s)!o&&!j.call(s,Y)||V&&(\"length\"==Y||B&&(\"offset\"==Y||\"parent\"==Y)||$&&(\"buffer\"==Y||\"byteLength\"==Y||\"byteOffset\"==Y)||x(Y,z))||U.push(Y);return U}},70981:(s,o,i)=>{var a=i(75251),u=i(62060),_=i(32865),w=i(75948);s.exports=function setWrapToString(s,o,i){var x=o+\"\";return _(s,u(x,w(a(x),i)))}},71167:(s,o,i)=>{const a=i(10316);s.exports=class StringElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"string\"}primitive(){return\"string\"}get length(){return this.content.length}}},71340:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(29538);a({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==u},{assign:u})},71961:(s,o,i)=>{var a=i(49653);s.exports=function cloneTypedArray(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.length)}},72428:(s,o,i)=>{var a=i(27534),u=i(40346),_=Object.prototype,w=_.hasOwnProperty,x=_.propertyIsEnumerable,C=a(function(){return arguments}())?a:function(s){return u(s)&&w.call(s,\"callee\")&&!x.call(s,\"callee\")};s.exports=C},72552:(s,o,i)=>{var a=i(51873),u=i(659),_=i(59350),w=a?a.toStringTag:void 0;s.exports=function baseGetTag(s){return null==s?void 0===s?\"[object Undefined]\":\"[object Null]\":w&&w in Object(s)?u(s):_(s)}},72903:(s,o,i)=>{var a=i(23805),u=i(55527),_=i(90181),w=Object.prototype.hasOwnProperty;s.exports=function baseKeysIn(s){if(!a(s))return _(s);var o=u(s),i=[];for(var x in s)(\"constructor\"!=x||!o&&w.call(s,x))&&i.push(x);return i}},72949:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheSet(s,o){var i=a(this,s),u=i.size;return i.set(s,o),this.size+=i.size==u?0:1,this}},73170:(s,o,i)=>{var a=i(16547),u=i(31769),_=i(30361),w=i(23805),x=i(77797);s.exports=function baseSet(s,o,i,C){if(!w(s))return s;for(var j=-1,L=(o=u(o,s)).length,B=L-1,$=s;null!=$&&++j<L;){var V=x(o[j]),U=i;if(\"__proto__\"===V||\"constructor\"===V||\"prototype\"===V)return s;if(j!=B){var z=$[V];void 0===(U=C?C(z,V,$):void 0)&&(U=w(z)?z:_(o[j+1])?[]:{})}a($,V,U),$=$[V]}return s}},73201:s=>{var o=/\\w*$/;s.exports=function cloneRegExp(s){var i=new s.constructor(s.source,o.exec(s));return i.lastIndex=s.lastIndex,i}},73402:s=>{function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function http(s){const o=\"HTTP/(2|1\\\\.[01])\",i={className:\"attribute\",begin:concat(\"^\",/[A-Za-z][A-Za-z0-9-]*/,\"(?=\\\\:\\\\s)\"),starts:{contains:[{className:\"punctuation\",begin:/: /,relevance:0,starts:{end:\"$\",relevance:0}}]}},a=[i,{begin:\"\\\\n\\\\n\",starts:{subLanguage:[],endsWithParent:!0}}];return{name:\"HTTP\",aliases:[\"https\"],illegal:/\\S/,contains:[{begin:\"^(?=\"+o+\" \\\\d{3})\",end:/$/,contains:[{className:\"meta\",begin:o},{className:\"number\",begin:\"\\\\b\\\\d{3}\\\\b\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:a}},{begin:\"(?=^[A-Z]+ (.*?) \"+o+\"$)\",end:/$/,contains:[{className:\"string\",begin:\" \",end:\" \",excludeBegin:!0,excludeEnd:!0},{className:\"meta\",begin:o},{className:\"keyword\",begin:\"[A-Z]+\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:a}},s.inherit(i,{relevance:0})]}}},73424:(s,o,i)=>{var a=i(16962),u=i(2874),_=Array.prototype.push;function baseAry(s,o){return 2==o?function(o,i){return s(o,i)}:function(o){return s(o)}}function cloneArray(s){for(var o=s?s.length:0,i=Array(o);o--;)i[o]=s[o];return i}function wrapImmutable(s,o){return function(){var i=arguments.length;if(i){for(var a=Array(i);i--;)a[i]=arguments[i];var u=a[0]=o.apply(void 0,a);return s.apply(void 0,a),u}}}s.exports=function baseConvert(s,o,i,w){var x=\"function\"==typeof o,C=o===Object(o);if(C&&(w=i,i=o,o=void 0),null==i)throw new TypeError;w||(w={});var j=!(\"cap\"in w)||w.cap,L=!(\"curry\"in w)||w.curry,B=!(\"fixed\"in w)||w.fixed,$=!(\"immutable\"in w)||w.immutable,V=!(\"rearg\"in w)||w.rearg,U=x?i:u,z=\"curry\"in w&&w.curry,Y=\"fixed\"in w&&w.fixed,Z=\"rearg\"in w&&w.rearg,ee=x?i.runInContext():void 0,ie=x?i:{ary:s.ary,assign:s.assign,clone:s.clone,curry:s.curry,forEach:s.forEach,isArray:s.isArray,isError:s.isError,isFunction:s.isFunction,isWeakMap:s.isWeakMap,iteratee:s.iteratee,keys:s.keys,rearg:s.rearg,toInteger:s.toInteger,toPath:s.toPath},ae=ie.ary,ce=ie.assign,le=ie.clone,pe=ie.curry,de=ie.forEach,fe=ie.isArray,ye=ie.isError,be=ie.isFunction,_e=ie.isWeakMap,Se=ie.keys,we=ie.rearg,xe=ie.toInteger,Pe=ie.toPath,Te=Se(a.aryMethod),Re={castArray:function(s){return function(){var o=arguments[0];return fe(o)?s(cloneArray(o)):s.apply(void 0,arguments)}},iteratee:function(s){return function(){var o=arguments[1],i=s(arguments[0],o),a=i.length;return j&&\"number\"==typeof o?(o=o>2?o-2:1,a&&a<=o?i:baseAry(i,o)):i}},mixin:function(s){return function(o){var i=this;if(!be(i))return s(i,Object(o));var a=[];return de(Se(o),(function(s){be(o[s])&&a.push([s,i.prototype[s]])})),s(i,Object(o)),de(a,(function(s){var o=s[1];be(o)?i.prototype[s[0]]=o:delete i.prototype[s[0]]})),i}},nthArg:function(s){return function(o){var i=o<0?1:xe(o)+1;return pe(s(o),i)}},rearg:function(s){return function(o,i){var a=i?i.length:0;return pe(s(o,i),a)}},runInContext:function(o){return function(i){return baseConvert(s,o(i),w)}}};function castCap(s,o){if(j){var i=a.iterateeRearg[s];if(i)return function iterateeRearg(s,o){return overArg(s,(function(s){var i=o.length;return function baseArity(s,o){return 2==o?function(o,i){return s.apply(void 0,arguments)}:function(o){return s.apply(void 0,arguments)}}(we(baseAry(s,i),o),i)}))}(o,i);var u=!x&&a.iterateeAry[s];if(u)return function iterateeAry(s,o){return overArg(s,(function(s){return\"function\"==typeof s?baseAry(s,o):s}))}(o,u)}return o}function castFixed(s,o,i){if(B&&(Y||!a.skipFixed[s])){var u=a.methodSpread[s],w=u&&u.start;return void 0===w?ae(o,i):function flatSpread(s,o){return function(){for(var i=arguments.length,a=i-1,u=Array(i);i--;)u[i]=arguments[i];var w=u[o],x=u.slice(0,o);return w&&_.apply(x,w),o!=a&&_.apply(x,u.slice(o+1)),s.apply(this,x)}}(o,w)}return o}function castRearg(s,o,i){return V&&i>1&&(Z||!a.skipRearg[s])?we(o,a.methodRearg[s]||a.aryRearg[i]):o}function cloneByPath(s,o){for(var i=-1,a=(o=Pe(o)).length,u=a-1,_=le(Object(s)),w=_;null!=w&&++i<a;){var x=o[i],C=w[x];null==C||be(C)||ye(C)||_e(C)||(w[x]=le(i==u?C:Object(C))),w=w[x]}return _}function createConverter(s,o){var i=a.aliasToReal[s]||s,u=a.remap[i]||i,_=w;return function(s){var a=x?ee:ie,w=x?ee[u]:o,C=ce(ce({},_),s);return baseConvert(a,i,w,C)}}function overArg(s,o){return function(){var i=arguments.length;if(!i)return s();for(var a=Array(i);i--;)a[i]=arguments[i];var u=V?0:i-1;return a[u]=o(a[u]),s.apply(void 0,a)}}function wrap(s,o,i){var u,_=a.aliasToReal[s]||s,w=o,x=Re[_];return x?w=x(o):$&&(a.mutate.array[_]?w=wrapImmutable(o,cloneArray):a.mutate.object[_]?w=wrapImmutable(o,function createCloner(s){return function(o){return s({},o)}}(o)):a.mutate.set[_]&&(w=wrapImmutable(o,cloneByPath))),de(Te,(function(s){return de(a.aryMethod[s],(function(o){if(_==o){var i=a.methodSpread[_],x=i&&i.afterRearg;return u=x?castFixed(_,castRearg(_,w,s),s):castRearg(_,castFixed(_,w,s),s),u=function castCurry(s,o,i){return z||L&&i>1?pe(o,i):o}(0,u=castCap(_,u),s),!1}})),!u})),u||(u=w),u==o&&(u=z?pe(u,1):function(){return o.apply(this,arguments)}),u.convert=createConverter(_,o),u.placeholder=o.placeholder=i,u}if(!C)return wrap(o,i,U);var $e=i,qe=[];return de(Te,(function(s){de(a.aryMethod[s],(function(s){var o=$e[a.remap[s]||s];o&&qe.push([s,wrap(s,o,$e)])}))})),de(Se($e),(function(s){var o=$e[s];if(\"function\"==typeof o){for(var i=qe.length;i--;)if(qe[i][0]==s)return;o.convert=createConverter(s,o),qe.push([s,o])}})),de(qe,(function(s){$e[s[0]]=s[1]})),$e.convert=function convertLib(s){return $e.runInContext.convert(s)(void 0)},$e.placeholder=$e,de(Se($e),(function(s){de(a.realToAlias[s]||[],(function(o){$e[o]=$e[s]}))})),$e}},73448:(s,o,i)=>{\"use strict\";var a=i(73948),u=i(29367),_=i(87136),w=i(93742),x=i(76264)(\"iterator\");s.exports=function(s){if(!_(s))return u(s,x)||u(s,\"@@iterator\")||w[a(s)]}},73648:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(98828),_=i(49552);s.exports=!a&&!u((function(){return 7!==Object.defineProperty(_(\"div\"),\"a\",{get:function(){return 7}}).a}))},73948:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(62250),_=i(45807),w=i(76264)(\"toStringTag\"),x=Object,C=\"Arguments\"===_(function(){return arguments}());s.exports=a?_:function(s){var o,i,a;return void 0===s?\"Undefined\":null===s?\"Null\":\"string\"==typeof(i=function(s,o){try{return s[o]}catch(s){}}(o=x(s),w))?i:C?_(o):\"Object\"===(a=_(o))&&u(o.callee)?\"Arguments\":a}},73992:(s,o)=>{\"use strict\";var i=Object.prototype.hasOwnProperty;function decode(s){try{return decodeURIComponent(s.replace(/\\+/g,\" \"))}catch(s){return null}}function encode(s){try{return encodeURIComponent(s)}catch(s){return null}}o.stringify=function querystringify(s,o){o=o||\"\";var a,u,_=[];for(u in\"string\"!=typeof o&&(o=\"?\"),s)if(i.call(s,u)){if((a=s[u])||null!=a&&!isNaN(a)||(a=\"\"),u=encode(u),a=encode(a),null===u||null===a)continue;_.push(u+\"=\"+a)}return _.length?o+_.join(\"&\"):\"\"},o.parse=function querystring(s){for(var o,i=/([^=?#&]+)=?([^&]*)/g,a={};o=i.exec(s);){var u=decode(o[1]),_=decode(o[2]);null===u||null===_||u in a||(a[u]=_)}return a}},74218:s=>{s.exports=function isKeyable(s){var o=typeof s;return\"string\"==o||\"number\"==o||\"symbol\"==o||\"boolean\"==o?\"__proto__\"!==s:null===s}},74239:(s,o,i)=>{\"use strict\";var a=i(87136),u=TypeError;s.exports=function(s){if(a(s))throw new u(\"Can't call method on \"+s);return s}},74284:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(73648),_=i(58661),w=i(36624),x=i(70470),C=TypeError,j=Object.defineProperty,L=Object.getOwnPropertyDescriptor,B=\"enumerable\",$=\"configurable\",V=\"writable\";o.f=a?_?function defineProperty(s,o,i){if(w(s),o=x(o),w(i),\"function\"==typeof s&&\"prototype\"===o&&\"value\"in i&&V in i&&!i[V]){var a=L(s,o);a&&a[V]&&(s[o]=i.value,i={configurable:$ in i?i[$]:a[$],enumerable:B in i?i[B]:a[B],writable:!1})}return j(s,o,i)}:j:function defineProperty(s,o,i){if(w(s),o=x(o),w(i),u)try{return j(s,o,i)}catch(s){}if(\"get\"in i||\"set\"in i)throw new C(\"Accessors not supported\");return\"value\"in i&&(s[o]=i.value),s}},74335:s=>{s.exports=function overArg(s,o){return function(i){return s(o(i))}}},74436:(s,o,i)=>{\"use strict\";var a=i(4993),u=i(34849),_=i(20575),createMethod=function(s){return function(o,i,w){var x=a(o),C=_(x);if(0===C)return!s&&-1;var j,L=u(w,C);if(s&&i!=i){for(;C>L;)if((j=x[L++])!=j)return!0}else for(;C>L;L++)if((s||L in x)&&x[L]===i)return s||L||0;return!s&&-1}};s.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},74610:(s,o,i)=>{\"use strict\";s.exports=Transform;var a=i(86048).F,u=a.ERR_METHOD_NOT_IMPLEMENTED,_=a.ERR_MULTIPLE_CALLBACK,w=a.ERR_TRANSFORM_ALREADY_TRANSFORMING,x=a.ERR_TRANSFORM_WITH_LENGTH_0,C=i(25382);function afterTransform(s,o){var i=this._transformState;i.transforming=!1;var a=i.writecb;if(null===a)return this.emit(\"error\",new _);i.writechunk=null,i.writecb=null,null!=o&&this.push(o),a(s);var u=this._readableState;u.reading=!1,(u.needReadable||u.length<u.highWaterMark)&&this._read(u.highWaterMark)}function Transform(s){if(!(this instanceof Transform))return new Transform(s);C.call(this,s),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,s&&(\"function\"==typeof s.transform&&(this._transform=s.transform),\"function\"==typeof s.flush&&(this._flush=s.flush)),this.on(\"prefinish\",prefinish)}function prefinish(){var s=this;\"function\"!=typeof this._flush||this._readableState.destroyed?done(this,null,null):this._flush((function(o,i){done(s,o,i)}))}function done(s,o,i){if(o)return s.emit(\"error\",o);if(null!=i&&s.push(i),s._writableState.length)throw new x;if(s._transformState.transforming)throw new w;return s.push(null)}i(56698)(Transform,C),Transform.prototype.push=function(s,o){return this._transformState.needTransform=!1,C.prototype.push.call(this,s,o)},Transform.prototype._transform=function(s,o,i){i(new u(\"_transform()\"))},Transform.prototype._write=function(s,o,i){var a=this._transformState;if(a.writecb=i,a.writechunk=s,a.writeencoding=o,!a.transforming){var u=this._readableState;(a.needTransform||u.needReadable||u.length<u.highWaterMark)&&this._read(u.highWaterMark)}},Transform.prototype._read=function(s){var o=this._transformState;null===o.writechunk||o.transforming?o.needTransform=!0:(o.transforming=!0,this._transform(o.writechunk,o.writeencoding,o.afterTransform))},Transform.prototype._destroy=function(s,o){C.prototype._destroy.call(this,s,(function(s){o(s)}))}},74733:(s,o,i)=>{var a=i(21791),u=i(95950);s.exports=function baseAssign(s,o){return s&&a(o,u(o),s)}},75147:(s,o,i)=>{const a=i(85105);s.exports=class JSON06Serialiser extends a{serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \\`${s}\\` is not an Element instance`);let o;s._attributes&&s.attributes.get(\"variable\")&&(o=s.attributes.get(\"variable\"));const i={element:s.element};s._meta&&s._meta.length>0&&(i.meta=this.serialiseObject(s.meta));const a=\"enum\"===s.element||-1!==s.attributes.keys().indexOf(\"enumerations\");if(a){const o=this.enumSerialiseAttributes(s);o&&(i.attributes=o)}else if(s._attributes&&s._attributes.length>0){let{attributes:a}=s;a.get(\"metadata\")&&(a=a.clone(),a.set(\"meta\",a.get(\"metadata\")),a.remove(\"metadata\")),\"member\"===s.element&&o&&(a=a.clone(),a.remove(\"variable\")),a.length>0&&(i.attributes=this.serialiseObject(a))}if(a)i.content=this.enumSerialiseContent(s,i);else if(this[`${s.element}SerialiseContent`])i.content=this[`${s.element}SerialiseContent`](s,i);else if(void 0!==s.content){let a;o&&s.content.key?(a=s.content.clone(),a.key.attributes.set(\"variable\",o),a=this.serialiseContent(a)):a=this.serialiseContent(s.content),this.shouldSerialiseContent(s,a)&&(i.content=a)}else this.shouldSerialiseContent(s,s.content)&&s instanceof this.namespace.elements.Array&&(i.content=[]);return i}shouldSerialiseContent(s,o){return\"parseResult\"===s.element||\"httpRequest\"===s.element||\"httpResponse\"===s.element||\"category\"===s.element||\"link\"===s.element||void 0!==o&&(!Array.isArray(o)||0!==o.length)}refSerialiseContent(s,o){return delete o.attributes,{href:s.toValue(),path:s.path.toValue()}}sourceMapSerialiseContent(s){return s.toValue()}dataStructureSerialiseContent(s){return[this.serialiseContent(s.content)]}enumSerialiseAttributes(s){const o=s.attributes.clone(),i=o.remove(\"enumerations\")||new this.namespace.elements.Array([]),a=o.get(\"default\");let u=o.get(\"samples\")||new this.namespace.elements.Array([]);if(a&&a.content&&(a.content.attributes&&a.content.attributes.remove(\"typeAttributes\"),o.set(\"default\",new this.namespace.elements.Array([a.content]))),u.forEach((s=>{s.content&&s.content.element&&s.content.attributes.remove(\"typeAttributes\")})),s.content&&0!==i.length&&u.unshift(s.content),u=u.map((s=>s instanceof this.namespace.elements.Array?[s]:new this.namespace.elements.Array([s.content]))),u.length&&o.set(\"samples\",u),o.length>0)return this.serialiseObject(o)}enumSerialiseContent(s){if(s._attributes){const o=s.attributes.get(\"enumerations\");if(o&&o.length>0)return o.content.map((s=>{const o=s.clone();return o.attributes.remove(\"typeAttributes\"),this.serialise(o)}))}if(s.content){const o=s.content.clone();return o.attributes.remove(\"typeAttributes\"),[this.serialise(o)]}return[]}deserialise(s){if(\"string\"==typeof s)return new this.namespace.elements.String(s);if(\"number\"==typeof s)return new this.namespace.elements.Number(s);if(\"boolean\"==typeof s)return new this.namespace.elements.Boolean(s);if(null===s)return new this.namespace.elements.Null;if(Array.isArray(s))return new this.namespace.elements.Array(s.map(this.deserialise,this));const o=this.namespace.getElementClass(s.element),i=new o;i.element!==s.element&&(i.element=s.element),s.meta&&this.deserialiseObject(s.meta,i.meta),s.attributes&&this.deserialiseObject(s.attributes,i.attributes);const a=this.deserialiseContent(s.content);if(void 0===a&&null!==i.content||(i.content=a),\"enum\"===i.element){i.content&&i.attributes.set(\"enumerations\",i.content);let s=i.attributes.get(\"samples\");if(i.attributes.remove(\"samples\"),s){const a=s;s=new this.namespace.elements.Array,a.forEach((a=>{a.forEach((a=>{const u=new o(a);u.element=i.element,s.push(u)}))}));const u=s.shift();i.content=u?u.content:void 0,i.attributes.set(\"samples\",s)}else i.content=void 0;let a=i.attributes.get(\"default\");if(a&&a.length>0){a=a.get(0);const s=new o(a);s.element=i.element,i.attributes.set(\"default\",s)}}else if(\"dataStructure\"===i.element&&Array.isArray(i.content))[i.content]=i.content;else if(\"category\"===i.element){const s=i.attributes.get(\"meta\");s&&(i.attributes.set(\"metadata\",s),i.attributes.remove(\"meta\"))}else\"member\"===i.element&&i.key&&i.key._attributes&&i.key._attributes.getValue(\"variable\")&&(i.attributes.set(\"variable\",i.key.attributes.get(\"variable\")),i.key.attributes.remove(\"variable\"));return i}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}return s&&s.map?s.map(this.serialise,this):s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}shouldRefract(s){return!!(s._attributes&&s.attributes.keys().length||s._meta&&s.meta.keys().length)||\"enum\"!==s.element&&(s.element!==s.primitive()||\"member\"===s.element)}convertKeyToRefract(s,o){return this.shouldRefract(o)?this.serialise(o):\"enum\"===o.element?this.serialiseEnum(o):\"array\"===o.element?o.map((o=>this.shouldRefract(o)||\"default\"===s?this.serialise(o):\"array\"===o.element||\"object\"===o.element||\"enum\"===o.element?o.children.map((s=>this.serialise(s))):o.toValue())):\"object\"===o.element?(o.content||[]).map(this.serialise,this):o.toValue()}serialiseEnum(s){return s.children.map((s=>this.serialise(s)))}serialiseObject(s){const o={};return s.forEach(((s,i)=>{if(s){const a=i.toValue();o[a]=this.convertKeyToRefract(a,s)}})),o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},75208:s=>{\"use strict\";var o,i=\"\";s.exports=function repeat(s,a){if(\"string\"!=typeof s)throw new TypeError(\"expected a string\");if(1===a)return s;if(2===a)return s+s;var u=s.length*a;if(o!==s||void 0===o)o=s,i=\"\";else if(i.length>=u)return i.substr(0,u);for(;u>i.length&&a>1;)1&a&&(i+=s),a>>=1,s+=s;return i=(i+=s).substr(0,u)}},75251:s=>{var o=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,i=/,? & /;s.exports=function getWrapDetails(s){var a=s.match(o);return a?a[1].split(i):[]}},75288:s=>{s.exports=function eq(s,o){return s===o||s!=s&&o!=o}},75817:s=>{\"use strict\";s.exports=function(s,o){return{enumerable:!(1&s),configurable:!(2&s),writable:!(4&s),value:o}}},75896:(s,o,i)=>{\"use strict\";var a=i(65606);function emitErrorAndCloseNT(s,o){emitErrorNT(s,o),emitCloseNT(s)}function emitCloseNT(s){s._writableState&&!s._writableState.emitClose||s._readableState&&!s._readableState.emitClose||s.emit(\"close\")}function emitErrorNT(s,o){s.emit(\"error\",o)}s.exports={destroy:function destroy(s,o){var i=this,u=this._readableState&&this._readableState.destroyed,_=this._writableState&&this._writableState.destroyed;return u||_?(o?o(s):s&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,a.nextTick(emitErrorNT,this,s)):a.nextTick(emitErrorNT,this,s)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(s||null,(function(s){!o&&s?i._writableState?i._writableState.errorEmitted?a.nextTick(emitCloseNT,i):(i._writableState.errorEmitted=!0,a.nextTick(emitErrorAndCloseNT,i,s)):a.nextTick(emitErrorAndCloseNT,i,s):o?(a.nextTick(emitCloseNT,i),o(s)):a.nextTick(emitCloseNT,i)})),this)},undestroy:function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function errorOrDestroy(s,o){var i=s._readableState,a=s._writableState;i&&i.autoDestroy||a&&a.autoDestroy?s.destroy(o):s.emit(\"error\",o)}}},75948:(s,o,i)=>{var a=i(83729),u=i(15325),_=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]];s.exports=function updateWrapDetails(s,o){return a(_,(function(i){var a=\"_.\"+i[0];o&i[1]&&!u(s,a)&&s.push(a)})),s.sort()}},76024:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype,_=u.apply,w=u.call;s.exports=\"object\"==typeof Reflect&&Reflect.apply||(a?w.bind(_):function(){return w.apply(_,arguments)})},76169:(s,o,i)=>{var a=i(49653);s.exports=function cloneDataView(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.byteLength)}},76189:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function initCloneArray(s){var i=s.length,a=new s.constructor(i);return i&&\"string\"==typeof s[0]&&o.call(s,\"index\")&&(a.index=s.index,a.input=s.input),a}},76264:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(85816),_=i(49724),w=i(6499),x=i(19846),C=i(51175),j=a.Symbol,L=u(\"wks\"),B=C?j.for||j:j&&j.withoutSetter||w;s.exports=function(s){return _(L,s)||(L[s]=x&&_(j,s)?j[s]:B(\"Symbol.\"+s)),L[s]}},76545:(s,o,i)=>{var a=i(56110)(i(9325),\"Set\");s.exports=a},76959:s=>{s.exports=function strictIndexOf(s,o,i){for(var a=i-1,u=s.length;++a<u;)if(s[a]===o)return a;return-1}},77078:(s,o,i)=>{var a=i(91033),u=i(82819),_=i(37471),w=i(18073),x=i(11287),C=i(36306),j=i(9325);s.exports=function createCurry(s,o,i){var L=u(s);return function wrapper(){for(var u=arguments.length,B=Array(u),$=u,V=x(wrapper);$--;)B[$]=arguments[$];var U=u<3&&B[0]!==V&&B[u-1]!==V?[]:C(B,V);return(u-=U.length)<i?w(s,o,_,wrapper.placeholder,void 0,B,U,void 0,void 0,i-u):a(this&&this!==j&&this instanceof wrapper?L:s,this,B)}}},77199:(s,o,i)=>{var a=i(49653),u=i(76169),_=i(73201),w=i(93736),x=i(71961);s.exports=function initCloneByTag(s,o,i){var C=s.constructor;switch(o){case\"[object ArrayBuffer]\":return a(s);case\"[object Boolean]\":case\"[object Date]\":return new C(+s);case\"[object DataView]\":return u(s,i);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return x(s,i);case\"[object Map]\":case\"[object Set]\":return new C;case\"[object Number]\":case\"[object String]\":return new C(s);case\"[object RegExp]\":return _(s);case\"[object Symbol]\":return w(s)}}},77556:(s,o,i)=>{var a=i(51873),u=i(34932),_=i(56449),w=i(44394),x=a?a.prototype:void 0,C=x?x.toString:void 0;s.exports=function baseToString(s){if(\"string\"==typeof s)return s;if(_(s))return u(s,baseToString)+\"\";if(w(s))return C?C.call(s):\"\";var o=s+\"\";return\"0\"==o&&1/s==-1/0?\"-0\":o}},77731:(s,o,i)=>{var a=i(79920)(\"set\",i(63560));a.placeholder=i(2874),s.exports=a},77797:(s,o,i)=>{var a=i(44394);s.exports=function toKey(s){if(\"string\"==typeof s||a(s))return s;var o=s+\"\";return\"0\"==o&&1/s==-1/0?\"-0\":o}},78004:s=>{\"use strict\";class SubRange{constructor(s,o){this.low=s,this.high=o,this.length=1+o-s}overlaps(s){return!(this.high<s.low||this.low>s.high)}touches(s){return!(this.high+1<s.low||this.low-1>s.high)}add(s){return new SubRange(Math.min(this.low,s.low),Math.max(this.high,s.high))}subtract(s){return s.low<=this.low&&s.high>=this.high?[]:s.low>this.low&&s.high<this.high?[new SubRange(this.low,s.low-1),new SubRange(s.high+1,this.high)]:s.low<=this.low?[new SubRange(s.high+1,this.high)]:[new SubRange(this.low,s.low-1)]}toString(){return this.low==this.high?this.low.toString():this.low+\"-\"+this.high}}class DRange{constructor(s,o){this.ranges=[],this.length=0,null!=s&&this.add(s,o)}_update_length(){this.length=this.ranges.reduce(((s,o)=>s+o.length),0)}add(s,o){var _add=s=>{for(var o=0;o<this.ranges.length&&!s.touches(this.ranges[o]);)o++;for(var i=this.ranges.slice(0,o);o<this.ranges.length&&s.touches(this.ranges[o]);)s=s.add(this.ranges[o]),o++;i.push(s),this.ranges=i.concat(this.ranges.slice(o)),this._update_length()};return s instanceof DRange?s.ranges.forEach(_add):(null==o&&(o=s),_add(new SubRange(s,o))),this}subtract(s,o){var _subtract=s=>{for(var o=0;o<this.ranges.length&&!s.overlaps(this.ranges[o]);)o++;for(var i=this.ranges.slice(0,o);o<this.ranges.length&&s.overlaps(this.ranges[o]);)i=i.concat(this.ranges[o].subtract(s)),o++;this.ranges=i.concat(this.ranges.slice(o)),this._update_length()};return s instanceof DRange?s.ranges.forEach(_subtract):(null==o&&(o=s),_subtract(new SubRange(s,o))),this}intersect(s,o){var i=[],_intersect=s=>{for(var o=0;o<this.ranges.length&&!s.overlaps(this.ranges[o]);)o++;for(;o<this.ranges.length&&s.overlaps(this.ranges[o]);){var a=Math.max(this.ranges[o].low,s.low),u=Math.min(this.ranges[o].high,s.high);i.push(new SubRange(a,u)),o++}};return s instanceof DRange?s.ranges.forEach(_intersect):(null==o&&(o=s),_intersect(new SubRange(s,o))),this.ranges=i,this._update_length(),this}index(s){for(var o=0;o<this.ranges.length&&this.ranges[o].length<=s;)s-=this.ranges[o].length,o++;return this.ranges[o].low+s}toString(){return\"[ \"+this.ranges.join(\", \")+\" ]\"}clone(){return new DRange(this)}numbers(){return this.ranges.reduce(((s,o)=>{for(var i=o.low;i<=o.high;)s.push(i),i++;return s}),[])}subranges(){return this.ranges.map((s=>({low:s.low,high:s.high,length:1+s.high-s.low})))}}s.exports=DRange},78096:s=>{s.exports=function baseTimes(s,o){for(var i=-1,a=Array(s);++i<s;)a[i]=o(i);return a}},78418:(s,o,i)=>{\"use strict\";i(85160)},79192:(s,o,i)=>{\"use strict\";var a=i(51871),u=i(46285),_=i(74239),w=i(10043);s.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var s,o=!1,i={};try{(s=a(Object.prototype,\"__proto__\",\"set\"))(i,[]),o=i instanceof Array}catch(s){}return function setPrototypeOf(i,a){return _(i),w(a),u(i)?(o?s(i,a):i.__proto__=a,i):i}}():void 0)},79307:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(44673);a({target:\"Function\",proto:!0,forced:Function.bind!==u},{bind:u})},79770:s=>{s.exports=function arrayFilter(s,o){for(var i=-1,a=null==s?0:s.length,u=0,_=[];++i<a;){var w=s[i];o(w,i,s)&&(_[u++]=w)}return _}},79838:()=>{},79920:(s,o,i)=>{var a=i(73424),u=i(47934);s.exports=function convert(s,o,i){return a(u,s,o,i)}},80079:(s,o,i)=>{var a=i(63702),u=i(70080),_=i(24739),w=i(48655),x=i(31175);function ListCache(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}ListCache.prototype.clear=a,ListCache.prototype.delete=u,ListCache.prototype.get=_,ListCache.prototype.has=w,ListCache.prototype.set=x,s.exports=ListCache},80218:(s,o,i)=>{var a=i(13222);s.exports=function toLower(s){return a(s).toLowerCase()}},80257:(s,o,i)=>{var a=i(30980),u=i(56017),_=i(23007);s.exports=function wrapperClone(s){if(s instanceof a)return s.clone();var o=new u(s.__wrapped__,s.__chain__);return o.__actions__=_(s.__actions__),o.__index__=s.__index__,o.__values__=s.__values__,o}},80345:(s,o,i)=>{\"use strict\";function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _defineProperty(s,o,i){return(o=_toPropertyKey(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,_toPropertyKey(a.key),a)}}function _toPropertyKey(s){var o=function _toPrimitive(s,o){if(\"object\"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof o?o:String(o)}var a=i(48287).Buffer,u=i(15340).inspect,_=u&&u.custom||\"inspect\";s.exports=function(){function BufferList(){!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,BufferList),this.head=null,this.tail=null,this.length=0}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(BufferList,[{key:\"push\",value:function push(s){var o={data:s,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function unshift(s){var o={data:s,next:this.head};0===this.length&&(this.tail=o),this.head=o,++this.length}},{key:\"shift\",value:function shift(){if(0!==this.length){var s=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,s}}},{key:\"clear\",value:function clear(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function join(s){if(0===this.length)return\"\";for(var o=this.head,i=\"\"+o.data;o=o.next;)i+=s+o.data;return i}},{key:\"concat\",value:function concat(s){if(0===this.length)return a.alloc(0);for(var o,i,u,_=a.allocUnsafe(s>>>0),w=this.head,x=0;w;)o=w.data,i=_,u=x,a.prototype.copy.call(o,i,u),x+=w.data.length,w=w.next;return _}},{key:\"consume\",value:function consume(s,o){var i;return s<this.head.data.length?(i=this.head.data.slice(0,s),this.head.data=this.head.data.slice(s)):i=s===this.head.data.length?this.shift():o?this._getString(s):this._getBuffer(s),i}},{key:\"first\",value:function first(){return this.head.data}},{key:\"_getString\",value:function _getString(s){var o=this.head,i=1,a=o.data;for(s-=a.length;o=o.next;){var u=o.data,_=s>u.length?u.length:s;if(_===u.length?a+=u:a+=u.slice(0,s),0===(s-=_)){_===u.length?(++i,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(_));break}++i}return this.length-=i,a}},{key:\"_getBuffer\",value:function _getBuffer(s){var o=a.allocUnsafe(s),i=this.head,u=1;for(i.data.copy(o),s-=i.data.length;i=i.next;){var _=i.data,w=s>_.length?_.length:s;if(_.copy(o,o.length-s,0,w),0===(s-=w)){w===_.length?(++u,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=_.slice(w));break}++u}return this.length-=u,o}},{key:_,value:function value(s,o){return u(this,_objectSpread(_objectSpread({},o),{},{depth:0,customInspect:!1}))}}]),BufferList}()},80376:s=>{\"use strict\";s.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},80631:(s,o,i)=>{var a=i(28077),u=i(49326);s.exports=function hasIn(s,o){return null!=s&&u(s,o,a)}},80909:(s,o,i)=>{var a=i(30641),u=i(38329)(a);s.exports=u},80945:(s,o,i)=>{var a=i(80079),u=i(68223),_=i(53661);s.exports=function stackSet(s,o){var i=this.__data__;if(i instanceof a){var w=i.__data__;if(!u||w.length<199)return w.push([s,o]),this.size=++i.size,this;i=this.__data__=new _(w)}return i.set(s,o),this.size=i.size,this}},81042:(s,o,i)=>{var a=i(56110)(Object,\"create\");s.exports=a},81214:(s,o,i)=>{\"use strict\";function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}Object.defineProperty(o,\"__esModule\",{value:!0}),o.DebounceInput=void 0;var a=_interopRequireDefault(i(96540)),u=_interopRequireDefault(i(20181)),_=[\"element\",\"onChange\",\"value\",\"minLength\",\"debounceTimeout\",\"forceNotifyByEnter\",\"forceNotifyOnBlur\",\"onKeyDown\",\"onBlur\",\"inputRef\"];function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i,a,u={},_=Object.keys(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _createSuper(s){var o=function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(s){return!1}}();return function _createSuperInternal(){var i,a=_getPrototypeOf(s);if(o){var u=_getPrototypeOf(this).constructor;i=Reflect.construct(a,arguments,u)}else i=a.apply(this,arguments);return function _possibleConstructorReturn(s,o){if(o&&(\"object\"===_typeof(o)||\"function\"==typeof o))return o;if(void 0!==o)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(s)}(this,i)}}function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var w=function(s){!function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),Object.defineProperty(s,\"prototype\",{writable:!1}),o&&_setPrototypeOf(s,o)}(DebounceInput,s);var o=_createSuper(DebounceInput);function DebounceInput(s){var i;!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,DebounceInput),_defineProperty(_assertThisInitialized(i=o.call(this,s)),\"onChange\",(function(s){s.persist();var o=i.state.value,a=i.props.minLength;i.setState({value:s.target.value},(function(){var u=i.state.value;u.length>=a?i.notify(s):o.length>u.length&&i.notify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:\"\"})}))}))})),_defineProperty(_assertThisInitialized(i),\"onKeyDown\",(function(s){\"Enter\"===s.key&&i.forceNotify(s);var o=i.props.onKeyDown;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),\"onBlur\",(function(s){i.forceNotify(s);var o=i.props.onBlur;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),\"createNotifier\",(function(s){if(s<0)i.notify=function(){return null};else if(0===s)i.notify=i.doNotify;else{var o=(0,u.default)((function(s){i.isDebouncing=!1,i.doNotify(s)}),s);i.notify=function(s){i.isDebouncing=!0,o(s)},i.flush=function(){return o.flush()},i.cancel=function(){i.isDebouncing=!1,o.cancel()}}})),_defineProperty(_assertThisInitialized(i),\"doNotify\",(function(){i.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(i),\"forceNotify\",(function(s){var o=i.props.debounceTimeout;if(i.isDebouncing||!(o>0)){i.cancel&&i.cancel();var a=i.state.value,u=i.props.minLength;a.length>=u?i.doNotify(s):i.doNotify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:a})}))}})),i.isDebouncing=!1,i.state={value:void 0===s.value||null===s.value?\"\":s.value};var a=i.props.debounceTimeout;return i.createNotifier(a),i}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(DebounceInput,[{key:\"componentDidUpdate\",value:function componentDidUpdate(s){if(!this.isDebouncing){var o=this.props,i=o.value,a=o.debounceTimeout,u=s.debounceTimeout,_=s.value,w=this.state.value;void 0!==i&&_!==i&&w!==i&&this.setState({value:i}),a!==u&&this.createNotifier(a)}}},{key:\"componentWillUnmount\",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:\"render\",value:function render(){var s,o,i=this.props,u=i.element,w=(i.onChange,i.value,i.minLength,i.debounceTimeout,i.forceNotifyByEnter),x=i.forceNotifyOnBlur,C=i.onKeyDown,j=i.onBlur,L=i.inputRef,B=_objectWithoutProperties(i,_),$=this.state.value;s=w?{onKeyDown:this.onKeyDown}:C?{onKeyDown:C}:{},o=x?{onBlur:this.onBlur}:j?{onBlur:j}:{};var V=L?{ref:L}:{};return a.default.createElement(u,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},B),{},{onChange:this.onChange,value:$},s),o),V))}}]),DebounceInput}(a.default.PureComponent);o.DebounceInput=w,_defineProperty(w,\"defaultProps\",{element:\"input\",type:\"text\",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},81919:(s,o,i)=>{\"use strict\";var a=i(48287).Buffer;function isSpecificValue(s){return s instanceof a||s instanceof Date||s instanceof RegExp}function cloneSpecificValue(s){if(s instanceof a){var o=a.alloc?a.alloc(s.length):new a(s.length);return s.copy(o),o}if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s);throw new Error(\"Unexpected situation\")}function deepCloneArray(s){var o=[];return s.forEach((function(s,i){\"object\"==typeof s&&null!==s?Array.isArray(s)?o[i]=deepCloneArray(s):isSpecificValue(s)?o[i]=cloneSpecificValue(s):o[i]=u({},s):o[i]=s})),o}function safeGetProperty(s,o){return\"__proto__\"===o?void 0:s[o]}var u=s.exports=function(){if(arguments.length<1||\"object\"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var s,o,i=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(a){\"object\"!=typeof a||null===a||Array.isArray(a)||Object.keys(a).forEach((function(_){return o=safeGetProperty(i,_),(s=safeGetProperty(a,_))===i?void 0:\"object\"!=typeof s||null===s?void(i[_]=s):Array.isArray(s)?void(i[_]=deepCloneArray(s)):isSpecificValue(s)?void(i[_]=cloneSpecificValue(s)):\"object\"!=typeof o||null===o||Array.isArray(o)?void(i[_]=u({},s)):void(i[_]=u(o,s))}))})),i}},82048:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(88280),_=i(15972),w=i(79192),x=i(19595),C=i(58075),j=i(61626),L=i(75817),B=i(39259),$=i(85884),V=i(24823),U=i(32096),z=i(76264)(\"toStringTag\"),Y=Error,Z=[].push,ee=function AggregateError(s,o){var i,a=u(ie,this);w?i=w(new Y,a?_(this):ie):(i=a?this:C(ie),j(i,z,\"Error\")),void 0!==o&&j(i,\"message\",U(o)),$(i,ee,i.stack,1),arguments.length>2&&B(i,arguments[2]);var x=[];return V(s,Z,{that:x}),j(i,\"errors\",x),i};w?w(ee,Y):x(ee,Y,{name:!0});var ie=ee.prototype=C(Y.prototype,{constructor:L(1,ee),message:L(1,\"\"),name:L(1,\"AggregateError\")});a({global:!0,constructor:!0,arity:2},{AggregateError:ee})},82159:(s,o,i)=>{\"use strict\";var a=i(62250),u=i(4640),_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(u(s)+\" is not a function\")}},82199:(s,o,i)=>{var a=i(14528),u=i(56449);s.exports=function baseGetAllKeys(s,o,i){var _=o(s);return u(s)?_:a(_,i(s))}},82261:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var a=_interopRequireDefault(i(9404)),u=_interopRequireDefault(i(48590));function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}o.default=function(s,o,i){var _=Object.keys(o);if(!_.length)return\"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";var w=(0,u.default)(i);if(a.default.isImmutable?!a.default.isImmutable(s):!a.default.Iterable.isIterable(s))return\"The \"+w+' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: \"'+_.join('\", \"')+'\".';var x=s.toSeq().keySeq().toArray().filter((function(s){return!o.hasOwnProperty(s)}));return x.length>0?\"Unexpected \"+(1===x.length?\"property\":\"properties\")+' \"'+x.join('\", \"')+'\" found in '+w+'. Expected to find one of the known reducer property names instead: \"'+_.join('\", \"')+'\". Unexpected properties will be ignored.':null},s.exports=o.default},82819:(s,o,i)=>{var a=i(39344),u=i(23805);s.exports=function createCtor(s){return function(){var o=arguments;switch(o.length){case 0:return new s;case 1:return new s(o[0]);case 2:return new s(o[0],o[1]);case 3:return new s(o[0],o[1],o[2]);case 4:return new s(o[0],o[1],o[2],o[3]);case 5:return new s(o[0],o[1],o[2],o[3],o[4]);case 6:return new s(o[0],o[1],o[2],o[3],o[4],o[5]);case 7:return new s(o[0],o[1],o[2],o[3],o[4],o[5],o[6])}var i=a(s.prototype),_=s.apply(i,o);return u(_)?_:i}}},82890:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],x=new Array(160);function Sha512(){this.init(),this._w=x,u.call(this,128,112)}function Ch(s,o,i){return i^s&(o^i)}function maj(s,o,i){return s&o|i&(s|o)}function sigma0(s,o){return(s>>>28|o<<4)^(o>>>2|s<<30)^(o>>>7|s<<25)}function sigma1(s,o){return(s>>>14|o<<18)^(s>>>18|o<<14)^(o>>>9|s<<23)}function Gamma0(s,o){return(s>>>1|o<<31)^(s>>>8|o<<24)^s>>>7}function Gamma0l(s,o){return(s>>>1|o<<31)^(s>>>8|o<<24)^(s>>>7|o<<25)}function Gamma1(s,o){return(s>>>19|o<<13)^(o>>>29|s<<3)^s>>>6}function Gamma1l(s,o){return(s>>>19|o<<13)^(o>>>29|s<<3)^(s>>>6|o<<26)}function getCarry(s,o){return s>>>0<o>>>0?1:0}a(Sha512,u),Sha512.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},Sha512.prototype._update=function(s){for(var o=this._w,i=0|this._ah,a=0|this._bh,u=0|this._ch,_=0|this._dh,x=0|this._eh,C=0|this._fh,j=0|this._gh,L=0|this._hh,B=0|this._al,$=0|this._bl,V=0|this._cl,U=0|this._dl,z=0|this._el,Y=0|this._fl,Z=0|this._gl,ee=0|this._hl,ie=0;ie<32;ie+=2)o[ie]=s.readInt32BE(4*ie),o[ie+1]=s.readInt32BE(4*ie+4);for(;ie<160;ie+=2){var ae=o[ie-30],ce=o[ie-30+1],le=Gamma0(ae,ce),pe=Gamma0l(ce,ae),de=Gamma1(ae=o[ie-4],ce=o[ie-4+1]),fe=Gamma1l(ce,ae),ye=o[ie-14],be=o[ie-14+1],_e=o[ie-32],Se=o[ie-32+1],we=pe+be|0,xe=le+ye+getCarry(we,pe)|0;xe=(xe=xe+de+getCarry(we=we+fe|0,fe)|0)+_e+getCarry(we=we+Se|0,Se)|0,o[ie]=xe,o[ie+1]=we}for(var Pe=0;Pe<160;Pe+=2){xe=o[Pe],we=o[Pe+1];var Te=maj(i,a,u),Re=maj(B,$,V),$e=sigma0(i,B),qe=sigma0(B,i),ze=sigma1(x,z),We=sigma1(z,x),He=w[Pe],Ye=w[Pe+1],Xe=Ch(x,C,j),Qe=Ch(z,Y,Z),et=ee+We|0,tt=L+ze+getCarry(et,ee)|0;tt=(tt=(tt=tt+Xe+getCarry(et=et+Qe|0,Qe)|0)+He+getCarry(et=et+Ye|0,Ye)|0)+xe+getCarry(et=et+we|0,we)|0;var rt=qe+Re|0,nt=$e+Te+getCarry(rt,qe)|0;L=j,ee=Z,j=C,Z=Y,C=x,Y=z,x=_+tt+getCarry(z=U+et|0,U)|0,_=u,U=V,u=a,V=$,a=i,$=B,i=tt+nt+getCarry(B=et+rt|0,et)|0}this._al=this._al+B|0,this._bl=this._bl+$|0,this._cl=this._cl+V|0,this._dl=this._dl+U|0,this._el=this._el+z|0,this._fl=this._fl+Y|0,this._gl=this._gl+Z|0,this._hl=this._hl+ee|0,this._ah=this._ah+i+getCarry(this._al,B)|0,this._bh=this._bh+a+getCarry(this._bl,$)|0,this._ch=this._ch+u+getCarry(this._cl,V)|0,this._dh=this._dh+_+getCarry(this._dl,U)|0,this._eh=this._eh+x+getCarry(this._el,z)|0,this._fh=this._fh+C+getCarry(this._fl,Y)|0,this._gh=this._gh+j+getCarry(this._gl,Z)|0,this._hh=this._hh+L+getCarry(this._hl,ee)|0},Sha512.prototype._hash=function(){var s=_.allocUnsafe(64);function writeInt64BE(o,i,a){s.writeInt32BE(o,a),s.writeInt32BE(i,a+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),writeInt64BE(this._gh,this._gl,48),writeInt64BE(this._hh,this._hl,56),s},s.exports=Sha512},83120:(s,o,i)=>{var a=i(14528),u=i(45891);s.exports=function baseFlatten(s,o,i,_,w){var x=-1,C=s.length;for(i||(i=u),w||(w=[]);++x<C;){var j=s[x];o>0&&i(j)?o>1?baseFlatten(j,o-1,i,_,w):a(w,j):_||(w[w.length]=j)}return w}},83141:(s,o,i)=>{\"use strict\";var a=i(92861).Buffer,u=a.isEncoding||function(s){switch((s=\"\"+s)&&s.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function StringDecoder(s){var o;switch(this.encoding=function normalizeEncoding(s){var o=function _normalizeEncoding(s){if(!s)return\"utf8\";for(var o;;)switch(s){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return s;default:if(o)return;s=(\"\"+s).toLowerCase(),o=!0}}(s);if(\"string\"!=typeof o&&(a.isEncoding===u||!u(s)))throw new Error(\"Unknown encoding: \"+s);return o||s}(s),this.encoding){case\"utf16le\":this.text=utf16Text,this.end=utf16End,o=4;break;case\"utf8\":this.fillLast=utf8FillLast,o=4;break;case\"base64\":this.text=base64Text,this.end=base64End,o=3;break;default:return this.write=simpleWrite,void(this.end=simpleEnd)}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(o)}function utf8CheckByte(s){return s<=127?0:s>>5==6?2:s>>4==14?3:s>>3==30?4:s>>6==2?-1:-2}function utf8FillLast(s){var o=this.lastTotal-this.lastNeed,i=function utf8CheckExtraBytes(s,o,i){if(128!=(192&o[0]))return s.lastNeed=0,\"�\";if(s.lastNeed>1&&o.length>1){if(128!=(192&o[1]))return s.lastNeed=1,\"�\";if(s.lastNeed>2&&o.length>2&&128!=(192&o[2]))return s.lastNeed=2,\"�\"}}(this,s);return void 0!==i?i:this.lastNeed<=s.length?(s.copy(this.lastChar,o,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(s.copy(this.lastChar,o,0,s.length),void(this.lastNeed-=s.length))}function utf16Text(s,o){if((s.length-o)%2==0){var i=s.toString(\"utf16le\",o);if(i){var a=i.charCodeAt(i.length-1);if(a>=55296&&a<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=s[s.length-2],this.lastChar[1]=s[s.length-1],i.slice(0,-1)}return i}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=s[s.length-1],s.toString(\"utf16le\",o,s.length-1)}function utf16End(s){var o=s&&s.length?this.write(s):\"\";if(this.lastNeed){var i=this.lastTotal-this.lastNeed;return o+this.lastChar.toString(\"utf16le\",0,i)}return o}function base64Text(s,o){var i=(s.length-o)%3;return 0===i?s.toString(\"base64\",o):(this.lastNeed=3-i,this.lastTotal=3,1===i?this.lastChar[0]=s[s.length-1]:(this.lastChar[0]=s[s.length-2],this.lastChar[1]=s[s.length-1]),s.toString(\"base64\",o,s.length-i))}function base64End(s){var o=s&&s.length?this.write(s):\"\";return this.lastNeed?o+this.lastChar.toString(\"base64\",0,3-this.lastNeed):o}function simpleWrite(s){return s.toString(this.encoding)}function simpleEnd(s){return s&&s.length?this.write(s):\"\"}o.I=StringDecoder,StringDecoder.prototype.write=function(s){if(0===s.length)return\"\";var o,i;if(this.lastNeed){if(void 0===(o=this.fillLast(s)))return\"\";i=this.lastNeed,this.lastNeed=0}else i=0;return i<s.length?o?o+this.text(s,i):this.text(s,i):o||\"\"},StringDecoder.prototype.end=function utf8End(s){var o=s&&s.length?this.write(s):\"\";return this.lastNeed?o+\"�\":o},StringDecoder.prototype.text=function utf8Text(s,o){var i=function utf8CheckIncomplete(s,o,i){var a=o.length-1;if(a<i)return 0;var u=utf8CheckByte(o[a]);if(u>=0)return u>0&&(s.lastNeed=u-1),u;if(--a<i||-2===u)return 0;if(u=utf8CheckByte(o[a]),u>=0)return u>0&&(s.lastNeed=u-2),u;if(--a<i||-2===u)return 0;if(u=utf8CheckByte(o[a]),u>=0)return u>0&&(2===u?u=0:s.lastNeed=u-3),u;return 0}(this,s,o);if(!this.lastNeed)return s.toString(\"utf8\",o);this.lastTotal=i;var a=s.length-(i-this.lastNeed);return s.copy(this.lastChar,0,a),s.toString(\"utf8\",o,a)},StringDecoder.prototype.fillLast=function(s){if(this.lastNeed<=s.length)return s.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);s.copy(this.lastChar,this.lastTotal-this.lastNeed,0,s.length),this.lastNeed-=s.length}},83221:s=>{s.exports=function createBaseFor(s){return function(o,i,a){for(var u=-1,_=Object(o),w=a(o),x=w.length;x--;){var C=w[s?x:++u];if(!1===i(_[C],C,_))break}return o}}},83349:(s,o,i)=>{var a=i(82199),u=i(86375),_=i(37241);s.exports=function getAllKeysIn(s){return a(s,_,u)}},83488:s=>{s.exports=function identity(s){return s}},83693:(s,o,i)=>{var a=i(64894),u=i(40346);s.exports=function isArrayLikeObject(s){return u(s)&&a(s)}},83729:s=>{s.exports=function arrayEach(s,o){for(var i=-1,a=null==s?0:s.length;++i<a&&!1!==o(s[i],i,s););return s}},84058:(s,o,i)=>{var a=i(14792),u=i(45539)((function(s,o,i){return o=o.toLowerCase(),s+(i?a(o):o)}));s.exports=u},84195:(s,o,i)=>{var a=i(66977),u=i(38816),_=u((function(s,o){return a(s,256,void 0,void 0,void 0,o)}));s.exports=_},84247:s=>{s.exports=function setToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s){i[++o]=s})),i}},84629:s=>{s.exports={}},84851:(s,o,i)=>{\"use strict\";s.exports=i(85401)},84977:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var a=function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}(i(9404)),u=i(55674);o.default=function(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.default.Map,i=Object.keys(s);return function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o(),_=arguments[1];return a.withMutations((function(o){i.forEach((function(i){var a=(0,s[i])(o.get(i),_);(0,u.validateNextState)(a,i,_),o.set(i,a)}))}))}},s.exports=o.default},85015:(s,o,i)=>{var a=i(72552),u=i(56449),_=i(40346);s.exports=function isString(s){return\"string\"==typeof s||!u(s)&&_(s)&&\"[object String]\"==a(s)}},85087:(s,o,i)=>{var a=i(30980),u=i(37381),_=i(62284),w=i(53758);s.exports=function isLaziable(s){var o=_(s),i=w[o];if(\"function\"!=typeof i||!(o in a.prototype))return!1;if(s===i)return!0;var x=u(i);return!!x&&s===x[0]}},85105:s=>{s.exports=class JSONSerialiser{constructor(s){this.namespace=s||new this.Namespace}serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \\`${s}\\` is not an Element instance`);const o={element:s.element};s._meta&&s._meta.length>0&&(o.meta=this.serialiseObject(s.meta)),s._attributes&&s._attributes.length>0&&(o.attributes=this.serialiseObject(s.attributes));const i=this.serialiseContent(s.content);return void 0!==i&&(o.content=i),o}deserialise(s){if(!s.element)throw new Error(\"Given value is not an object containing an element name\");const o=new(this.namespace.getElementClass(s.element));o.element!==s.element&&(o.element=s.element),s.meta&&this.deserialiseObject(s.meta,o.meta),s.attributes&&this.deserialiseObject(s.attributes,o.attributes);const i=this.deserialiseContent(s.content);return void 0===i&&null!==o.content||(o.content=i),o}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}if(s&&s.map){if(0===s.length)return;return s.map(this.serialise,this)}return s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}serialiseObject(s){const o={};if(s.forEach(((s,i)=>{s&&(o[i.toValue()]=this.serialise(s))})),0!==Object.keys(o).length)return o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},85160:(s,o,i)=>{\"use strict\";var a=i(96540);var u=\"function\"==typeof Object.is?Object.is:function is(s,o){return s===o&&(0!==s||1/s==1/o)||s!=s&&o!=o},_=a.useSyncExternalStore,w=a.useRef,x=a.useEffect,C=a.useMemo,j=a.useDebugValue},85250:(s,o,i)=>{var a=i(37217),u=i(87805),_=i(86649),w=i(42824),x=i(23805),C=i(37241),j=i(14974);s.exports=function baseMerge(s,o,i,L,B){s!==o&&_(o,(function(_,C){if(B||(B=new a),x(_))w(s,o,C,i,baseMerge,L,B);else{var $=L?L(j(s,C),_,C+\"\",s,o,B):void 0;void 0===$&&($=_),u(s,C,$)}}),C)}},85401:(s,o,i)=>{\"use strict\";var a=i(462);s.exports=a},85463:s=>{s.exports=function baseIsNaN(s){return s!=s}},85558:s=>{s.exports=function baseReduce(s,o,i,a,u){return u(s,(function(s,u,_){i=a?(a=!1,s):o(i,s,u,_)})),i}},85582:(s,o,i)=>{\"use strict\";var a=i(92046),u=i(45951),_=i(62250),aFunction=function(s){return _(s)?s:void 0};s.exports=function(s,o){return arguments.length<2?aFunction(a[s])||aFunction(u[s]):a[s]&&a[s][o]||u[s]&&u[s][o]}},85587:(s,o,i)=>{\"use strict\";var a=i(26311),u=create(Error);function create(s){return FormattedError.displayName=s.displayName||s.name,FormattedError;function FormattedError(o){return o&&(o=a.apply(null,arguments)),new s(o)}}s.exports=u,u.eval=create(EvalError),u.range=create(RangeError),u.reference=create(ReferenceError),u.syntax=create(SyntaxError),u.type=create(TypeError),u.uri=create(URIError),u.create=create},85762:(s,o,i)=>{\"use strict\";var a=i(1907),u=Error,_=a(\"\".replace),w=String(new u(\"zxcasd\").stack),x=/\\n\\s*at [^:]*:[^\\n]*/,C=x.test(w);s.exports=function(s,o){if(C&&\"string\"==typeof s&&!u.prepareStackTrace)for(;o--;)s=_(s,x,\"\");return s}},85816:(s,o,i)=>{\"use strict\";var a=i(36128);s.exports=function(s,o){return a[s]||(a[s]=o||{})}},85884:(s,o,i)=>{\"use strict\";var a=i(61626),u=i(85762),_=i(23888),w=Error.captureStackTrace;s.exports=function(s,o,i,x){_&&(w?w(s,o):a(s,\"stack\",u(i,x)))}},86009:(s,o,i)=>{s=i.nmd(s);var a=i(34840),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u&&a.process,x=function(){try{var s=_&&_.require&&_.require(\"util\").types;return s||w&&w.binding&&w.binding(\"util\")}catch(s){}}();s.exports=x},86048:s=>{\"use strict\";var o={};function createErrorType(s,i,a){a||(a=Error);var u=function(s){function NodeError(o,a,u){return s.call(this,function getMessage(s,o,a){return\"string\"==typeof i?i:i(s,o,a)}(o,a,u))||this}return function _inheritsLoose(s,o){s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.__proto__=o}(NodeError,s),NodeError}(a);u.prototype.name=a.name,u.prototype.code=s,o[s]=u}function oneOf(s,o){if(Array.isArray(s)){var i=s.length;return s=s.map((function(s){return String(s)})),i>2?\"one of \".concat(o,\" \").concat(s.slice(0,i-1).join(\", \"),\", or \")+s[i-1]:2===i?\"one of \".concat(o,\" \").concat(s[0],\" or \").concat(s[1]):\"of \".concat(o,\" \").concat(s[0])}return\"of \".concat(o,\" \").concat(String(s))}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(s,o){return'The value \"'+o+'\" is invalid for option \"'+s+'\"'}),TypeError),createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(s,o,i){var a,u;if(\"string\"==typeof o&&function startsWith(s,o,i){return s.substr(!i||i<0?0:+i,o.length)===o}(o,\"not \")?(a=\"must not be\",o=o.replace(/^not /,\"\")):a=\"must be\",function endsWith(s,o,i){return(void 0===i||i>s.length)&&(i=s.length),s.substring(i-o.length,i)===o}(s,\" argument\"))u=\"The \".concat(s,\" \").concat(a,\" \").concat(oneOf(o,\"type\"));else{var _=function includes(s,o,i){return\"number\"!=typeof i&&(i=0),!(i+o.length>s.length)&&-1!==s.indexOf(o,i)}(s,\".\")?\"property\":\"argument\";u='The \"'.concat(s,'\" ').concat(_,\" \").concat(a,\" \").concat(oneOf(o,\"type\"))}return u+=\". Received type \".concat(typeof i)}),TypeError),createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(s){return\"The \"+s+\" method is not implemented\"})),createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),createErrorType(\"ERR_STREAM_DESTROYED\",(function(s){return\"Cannot call \"+s+\" after a stream was destroyed\"})),createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(s){return\"Unknown encoding: \"+s}),TypeError),createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),s.exports.F=o},86215:function(s,o){var i,a,u;a=[],i=function(){\"use strict\";var isNativeSmoothScrollEnabledOn=function(s){return s&&\"getComputedStyle\"in window&&\"smooth\"===window.getComputedStyle(s)[\"scroll-behavior\"]};if(\"undefined\"==typeof window||!(\"document\"in window))return{};var makeScroller=function(s,o,i){var a;o=o||999,i||0===i||(i=9);var setScrollTimeoutId=function(s){a=s},stopScroll=function(){clearTimeout(a),setScrollTimeoutId(0)},getTopWithEdgeOffset=function(o){return Math.max(0,s.getTopOf(o)-i)},scrollToY=function(i,a,u){if(stopScroll(),0===a||a&&a<0||isNativeSmoothScrollEnabledOn(s.body))s.toY(i),u&&u();else{var _=s.getY(),w=Math.max(0,i)-_,x=(new Date).getTime();a=a||Math.min(Math.abs(w),o),function loopScroll(){setScrollTimeoutId(setTimeout((function(){var o=Math.min(1,((new Date).getTime()-x)/a),i=Math.max(0,Math.floor(_+w*(o<.5?2*o*o:o*(4-2*o)-1)));s.toY(i),o<1&&s.getHeight()+i<s.body.scrollHeight?loopScroll():(setTimeout(stopScroll,99),u&&u())}),9))}()}},scrollToElem=function(s,o,i){scrollToY(getTopWithEdgeOffset(s),o,i)},scrollIntoView=function(o,a,u){var _=o.getBoundingClientRect().height,w=s.getTopOf(o)+_,x=s.getHeight(),C=s.getY(),j=C+x;getTopWithEdgeOffset(o)<C||_+i>x?scrollToElem(o,a,u):w+i>j?scrollToY(w-x+i,a,u):u&&u()},scrollToCenterOf=function(o,i,a,u){scrollToY(Math.max(0,s.getTopOf(o)-s.getHeight()/2+(a||o.getBoundingClientRect().height/2)),i,u)};return{setup:function(s,a){return(0===s||s)&&(o=s),(0===a||a)&&(i=a),{defaultDuration:o,edgeOffset:i}},to:scrollToElem,toY:scrollToY,intoView:scrollIntoView,center:scrollToCenterOf,stop:stopScroll,moving:function(){return!!a},getY:s.getY,getTopOf:s.getTopOf}},s=document.documentElement,getDocY=function(){return window.scrollY||s.scrollTop},o=makeScroller({body:document.scrollingElement||document.body,toY:function(s){window.scrollTo(0,s)},getY:getDocY,getHeight:function(){return window.innerHeight||s.clientHeight},getTopOf:function(o){return o.getBoundingClientRect().top+getDocY()-s.offsetTop}});if(o.createScroller=function(o,i,a){return makeScroller({body:o,toY:function(s){o.scrollTop=s},getY:function(){return o.scrollTop},getHeight:function(){return Math.min(o.clientHeight,window.innerHeight||s.clientHeight)},getTopOf:function(s){return s.offsetTop}},i,a)},\"addEventListener\"in window&&!window.noZensmooth&&!isNativeSmoothScrollEnabledOn(document.body)){var i=\"history\"in window&&\"pushState\"in history,a=i&&\"scrollRestoration\"in history;a&&(history.scrollRestoration=\"auto\"),window.addEventListener(\"load\",(function(){a&&(setTimeout((function(){history.scrollRestoration=\"manual\"}),9),window.addEventListener(\"popstate\",(function(s){s.state&&\"zenscrollY\"in s.state&&o.toY(s.state.zenscrollY)}),!1)),window.location.hash&&setTimeout((function(){var s=o.setup().edgeOffset;if(s){var i=document.getElementById(window.location.href.split(\"#\")[1]);if(i){var a=Math.max(0,o.getTopOf(i)-s),u=o.getY()-a;0<=u&&u<9&&window.scrollTo(0,a)}}}),9)}),!1);var u=new RegExp(\"(^|\\\\s)noZensmooth(\\\\s|$)\");window.addEventListener(\"click\",(function(s){for(var _=s.target;_&&\"A\"!==_.tagName;)_=_.parentNode;if(!(!_||1!==s.which||s.shiftKey||s.metaKey||s.ctrlKey||s.altKey)){if(a){var w=history.state&&\"object\"==typeof history.state?history.state:{};w.zenscrollY=o.getY();try{history.replaceState(w,\"\")}catch(s){}}var x=_.getAttribute(\"href\")||\"\";if(0===x.indexOf(\"#\")&&!u.test(_.className)){var C=0,j=document.getElementById(x.substring(1));if(\"#\"!==x){if(!j)return;C=o.getTopOf(j)}s.preventDefault();var onDone=function(){window.location=x},L=o.setup().edgeOffset;L&&(C=Math.max(0,C-L),i&&(onDone=function(){history.pushState({},\"\",x)})),o.toY(C,null,onDone)}}}),!1)}return o}(),void 0===(u=\"function\"==typeof i?i.apply(o,a):i)||(s.exports=u)},86238:(s,o,i)=>{\"use strict\";var a=i(86048).F.ERR_STREAM_PREMATURE_CLOSE;function noop(){}s.exports=function eos(s,o,i){if(\"function\"==typeof o)return eos(s,null,o);o||(o={}),i=function once(s){var o=!1;return function(){if(!o){o=!0;for(var i=arguments.length,a=new Array(i),u=0;u<i;u++)a[u]=arguments[u];s.apply(this,a)}}}(i||noop);var u=o.readable||!1!==o.readable&&s.readable,_=o.writable||!1!==o.writable&&s.writable,w=function onlegacyfinish(){s.writable||C()},x=s._writableState&&s._writableState.finished,C=function onfinish(){_=!1,x=!0,u||i.call(s)},j=s._readableState&&s._readableState.endEmitted,L=function onend(){u=!1,j=!0,_||i.call(s)},B=function onerror(o){i.call(s,o)},$=function onclose(){var o;return u&&!j?(s._readableState&&s._readableState.ended||(o=new a),i.call(s,o)):_&&!x?(s._writableState&&s._writableState.ended||(o=new a),i.call(s,o)):void 0},V=function onrequest(){s.req.on(\"finish\",C)};return!function isRequest(s){return s.setHeader&&\"function\"==typeof s.abort}(s)?_&&!s._writableState&&(s.on(\"end\",w),s.on(\"close\",w)):(s.on(\"complete\",C),s.on(\"abort\",$),s.req?V():s.on(\"request\",V)),s.on(\"end\",L),s.on(\"finish\",C),!1!==o.error&&s.on(\"error\",B),s.on(\"close\",$),function(){s.removeListener(\"complete\",C),s.removeListener(\"abort\",$),s.removeListener(\"request\",V),s.req&&s.req.removeListener(\"finish\",C),s.removeListener(\"end\",w),s.removeListener(\"close\",w),s.removeListener(\"finish\",C),s.removeListener(\"end\",L),s.removeListener(\"error\",B),s.removeListener(\"close\",$)}}},86303:(s,o,i)=>{const a=i(10316);s.exports=class LinkElement extends a{constructor(s,o,i){super(s||[],o,i),this.element=\"link\"}get relation(){return this.attributes.get(\"relation\")}set relation(s){this.attributes.set(\"relation\",s)}get href(){return this.attributes.get(\"href\")}set href(s){this.attributes.set(\"href\",s)}}},86375:(s,o,i)=>{var a=i(14528),u=i(28879),_=i(4664),w=i(63345),x=Object.getOwnPropertySymbols?function(s){for(var o=[];s;)a(o,_(s)),s=u(s);return o}:w;s.exports=x},86649:(s,o,i)=>{var a=i(83221)();s.exports=a},86804:(s,o,i)=>{const a=i(10316),u=i(41067),_=i(71167),w=i(40239),x=i(12242),C=i(6233),j=i(87726),L=i(61045),B=i(86303),$=i(14540),V=i(92340),U=i(10866),z=i(55973);function refract(s){if(s instanceof a)return s;if(\"string\"==typeof s)return new _(s);if(\"number\"==typeof s)return new w(s);if(\"boolean\"==typeof s)return new x(s);if(null===s)return new u;if(Array.isArray(s))return new C(s.map(refract));if(\"object\"==typeof s){return new L(s)}return s}a.prototype.ObjectElement=L,a.prototype.RefElement=$,a.prototype.MemberElement=j,a.prototype.refract=refract,V.prototype.refract=refract,s.exports={Element:a,NullElement:u,StringElement:_,NumberElement:w,BooleanElement:x,ArrayElement:C,MemberElement:j,ObjectElement:L,LinkElement:B,RefElement:$,refract,ArraySlice:V,ObjectSlice:U,KeyValuePair:z}},87068:(s,o,i)=>{var a=i(37217),u=i(25911),_=i(21986),w=i(50689),x=i(5861),C=i(56449),j=i(3656),L=i(37167),B=\"[object Arguments]\",$=\"[object Array]\",V=\"[object Object]\",U=Object.prototype.hasOwnProperty;s.exports=function baseIsEqualDeep(s,o,i,z,Y,Z){var ee=C(s),ie=C(o),ae=ee?$:x(s),ce=ie?$:x(o),le=(ae=ae==B?V:ae)==V,pe=(ce=ce==B?V:ce)==V,de=ae==ce;if(de&&j(s)){if(!j(o))return!1;ee=!0,le=!1}if(de&&!le)return Z||(Z=new a),ee||L(s)?u(s,o,i,z,Y,Z):_(s,o,ae,i,z,Y,Z);if(!(1&i)){var fe=le&&U.call(s,\"__wrapped__\"),ye=pe&&U.call(o,\"__wrapped__\");if(fe||ye){var be=fe?s.value():s,_e=ye?o.value():o;return Z||(Z=new a),Y(be,_e,i,z,Z)}}return!!de&&(Z||(Z=new a),w(s,o,i,z,Y,Z))}},87136:s=>{\"use strict\";s.exports=function(s){return null==s}},87170:(s,o)=>{\"use strict\";o.f=Object.getOwnPropertySymbols},87296:(s,o,i)=>{var a,u=i(55481),_=(a=/[^.]+$/.exec(u&&u.keys&&u.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+a:\"\";s.exports=function isMasked(s){return!!_&&_ in s}},87586:(s,o,i)=>{const a=i(6205),u=i(10023),_={0:0,t:9,n:10,v:11,f:12,r:13};o.strToChars=function(s){return s=s.replace(/(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z[\\\\\\]^?])|([0tnvfr]))/g,(function(s,o,i,a,u,w,x,C){if(i)return s;var j=o?8:a?parseInt(a,16):u?parseInt(u,16):w?parseInt(w,8):x?\"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?\".indexOf(x):_[C],L=String.fromCharCode(j);return/[[\\]{}^$.|?*+()]/.test(L)&&(L=\"\\\\\"+L),L}))},o.tokenizeClass=(s,i)=>{for(var _,w,x=[],C=/\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?([^])/g;null!=(_=C.exec(s));)if(_[1])x.push(u.words());else if(_[2])x.push(u.ints());else if(_[3])x.push(u.whitespace());else if(_[4])x.push(u.notWords());else if(_[5])x.push(u.notInts());else if(_[6])x.push(u.notWhitespace());else if(_[7])x.push({type:a.RANGE,from:(_[8]||_[9]).charCodeAt(0),to:_[10].charCodeAt(0)});else{if(!(w=_[12]))return[x,C.lastIndex];x.push({type:a.CHAR,value:w.charCodeAt(0)})}o.error(i,\"Unterminated character class\")},o.error=(s,o)=>{throw new SyntaxError(\"Invalid regular expression: /\"+s+\"/: \"+o)}},87726:(s,o,i)=>{const a=i(55973),u=i(10316);s.exports=class MemberElement extends u{constructor(s,o,i,u){super(new a,i,u),this.element=\"member\",this.key=s,this.value=o}get key(){return this.content.key}set key(s){this.content.key=this.refract(s)}get value(){return this.content.value}set value(s){this.content.value=this.refract(s)}}},87730:(s,o,i)=>{var a=i(29172),u=i(27301),_=i(86009),w=_&&_.isMap,x=w?u(w):a;s.exports=x},87805:(s,o,i)=>{var a=i(43360),u=i(75288);s.exports=function assignMergeValue(s,o,i){(void 0!==i&&!u(s[o],i)||void 0===i&&!(o in s))&&a(s,o,i)}},87978:(s,o,i)=>{var a=i(60270),u=i(58156),_=i(80631),w=i(28586),x=i(30756),C=i(67197),j=i(77797);s.exports=function baseMatchesProperty(s,o){return w(s)&&x(o)?C(j(s),o):function(i){var w=u(i,s);return void 0===w&&w===o?_(i,s):a(o,w,3)}}},88280:(s,o,i)=>{\"use strict\";var a=i(1907);s.exports=a({}.isPrototypeOf)},88310:(s,o,i)=>{s.exports=Stream;var a=i(37007).EventEmitter;function Stream(){a.call(this)}i(56698)(Stream,a),Stream.Readable=i(45412),Stream.Writable=i(16708),Stream.Duplex=i(25382),Stream.Transform=i(74610),Stream.PassThrough=i(63600),Stream.finished=i(86238),Stream.pipeline=i(57758),Stream.Stream=Stream,Stream.prototype.pipe=function(s,o){var i=this;function ondata(o){s.writable&&!1===s.write(o)&&i.pause&&i.pause()}function ondrain(){i.readable&&i.resume&&i.resume()}i.on(\"data\",ondata),s.on(\"drain\",ondrain),s._isStdio||o&&!1===o.end||(i.on(\"end\",onend),i.on(\"close\",onclose));var u=!1;function onend(){u||(u=!0,s.end())}function onclose(){u||(u=!0,\"function\"==typeof s.destroy&&s.destroy())}function onerror(s){if(cleanup(),0===a.listenerCount(this,\"error\"))throw s}function cleanup(){i.removeListener(\"data\",ondata),s.removeListener(\"drain\",ondrain),i.removeListener(\"end\",onend),i.removeListener(\"close\",onclose),i.removeListener(\"error\",onerror),s.removeListener(\"error\",onerror),i.removeListener(\"end\",cleanup),i.removeListener(\"close\",cleanup),s.removeListener(\"close\",cleanup)}return i.on(\"error\",onerror),s.on(\"error\",onerror),i.on(\"end\",cleanup),i.on(\"close\",cleanup),s.on(\"close\",cleanup),s.emit(\"pipe\",i),s}},88984:(s,o,i)=>{var a=i(55527),u=i(3650),_=Object.prototype.hasOwnProperty;s.exports=function baseKeys(s){if(!a(s))return u(s);var o=[];for(var i in Object(s))_.call(s,i)&&\"constructor\"!=i&&o.push(i);return o}},89593:(s,o,i)=>{\"use strict\";o.H=void 0;var a=function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}(i(84977));o.H=a.default},89935:s=>{s.exports=function stubFalse(){return!1}},90160:(s,o,i)=>{\"use strict\";var a=i(73948),u=String;s.exports=function(s){if(\"Symbol\"===a(s))throw new TypeError(\"Cannot convert a Symbol value to a string\");return u(s)}},90179:(s,o,i)=>{var a=i(34932),u=i(9999),_=i(19931),w=i(31769),x=i(21791),C=i(53138),j=i(38816),L=i(83349),B=j((function(s,o){var i={};if(null==s)return i;var j=!1;o=a(o,(function(o){return o=w(o,s),j||(j=o.length>1),o})),x(s,L(s),i),j&&(i=u(i,7,C));for(var B=o.length;B--;)_(i,o[B]);return i}));s.exports=B},90181:s=>{s.exports=function nativeKeysIn(s){var o=[];if(null!=s)for(var i in Object(s))o.push(i);return o}},90289:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheGet(s){return a(this,s).get(s)}},90392:(s,o,i)=>{var a=i(92861).Buffer;function Hash(s,o){this._block=a.alloc(s),this._finalSize=o,this._blockSize=s,this._len=0}Hash.prototype.update=function(s,o){\"string\"==typeof s&&(o=o||\"utf8\",s=a.from(s,o));for(var i=this._block,u=this._blockSize,_=s.length,w=this._len,x=0;x<_;){for(var C=w%u,j=Math.min(_-x,u-C),L=0;L<j;L++)i[C+L]=s[x+L];x+=j,(w+=j)%u==0&&this._update(i)}return this._len+=_,this},Hash.prototype.digest=function(s){var o=this._len%this._blockSize;this._block[o]=128,this._block.fill(0,o+1),o>=this._finalSize&&(this._update(this._block),this._block.fill(0));var i=8*this._len;if(i<=4294967295)this._block.writeUInt32BE(i,this._blockSize-4);else{var a=(4294967295&i)>>>0,u=(i-a)/4294967296;this._block.writeUInt32BE(u,this._blockSize-8),this._block.writeUInt32BE(a,this._blockSize-4)}this._update(this._block);var _=this._hash();return s?_.toString(s):_},Hash.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},s.exports=Hash},90916:(s,o,i)=>{var a=i(80909);s.exports=function baseSome(s,o){var i;return a(s,(function(s,a,u){return!(i=o(s,a,u))})),!!i}},90938:s=>{s.exports=function stackDelete(s){var o=this.__data__,i=o.delete(s);return this.size=o.size,i}},91033:s=>{s.exports=function apply(s,o,i){switch(i.length){case 0:return s.call(o);case 1:return s.call(o,i[0]);case 2:return s.call(o,i[0],i[1]);case 3:return s.call(o,i[0],i[1],i[2])}return s.apply(o,i)}},91596:s=>{var o=Math.max;s.exports=function composeArgs(s,i,a,u){for(var _=-1,w=s.length,x=a.length,C=-1,j=i.length,L=o(w-x,0),B=Array(j+L),$=!u;++C<j;)B[C]=i[C];for(;++_<x;)($||_<w)&&(B[a[_]]=s[_]);for(;L--;)B[C++]=s[_++];return B}},91599:(s,o,i)=>{\"use strict\";i(64502)},92046:s=>{\"use strict\";s.exports={}},92063:s=>{\"use strict\";s.exports=function required(s,o){if(o=o.split(\":\")[0],!(s=+s))return!1;switch(o){case\"http\":case\"ws\":return 80!==s;case\"https\":case\"wss\":return 443!==s;case\"ftp\":return 21!==s;case\"gopher\":return 70!==s;case\"file\":return!1}return 0!==s}},92271:(s,o,i)=>{var a=i(21791),u=i(4664);s.exports=function copySymbols(s,o){return a(s,u(s),o)}},92340:(s,o,i)=>{const a=i(6048);function coerceElementMatchingCallback(s){return\"string\"==typeof s?o=>o.element===s:s.constructor&&s.extend?o=>o instanceof s:s}class ArraySlice{constructor(s){this.elements=s||[]}toValue(){return this.elements.map((s=>s.toValue()))}map(s,o){return this.elements.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(s,o))}reject(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(a(s),o))}find(s,o){return s=coerceElementMatchingCallback(s),this.elements.find(s,o)}forEach(s,o){this.elements.forEach(s,o)}reduce(s,o){return this.elements.reduce(s,o)}includes(s){return this.elements.some((o=>o.equals(s)))}shift(){return this.elements.shift()}unshift(s){this.elements.unshift(this.refract(s))}push(s){return this.elements.push(this.refract(s)),this}add(s){this.push(s)}get(s){return this.elements[s]}getValue(s){const o=this.elements[s];if(o)return o.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}\"undefined\"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),s.exports=ArraySlice},92361:(s,o,i)=>{\"use strict\";var a=i(45807),u=i(1907);s.exports=function(s){if(\"Function\"===a(s))return u(s)}},92522:(s,o,i)=>{\"use strict\";var a=i(85816),u=i(6499),_=a(\"keys\");s.exports=function(s){return _[s]||(_[s]=u(s))}},92861:(s,o,i)=>{var a=i(48287),u=a.Buffer;function copyProps(s,o){for(var i in s)o[i]=s[i]}function SafeBuffer(s,o,i){return u(s,o,i)}u.from&&u.alloc&&u.allocUnsafe&&u.allocUnsafeSlow?s.exports=a:(copyProps(a,o),o.Buffer=SafeBuffer),SafeBuffer.prototype=Object.create(u.prototype),copyProps(u,SafeBuffer),SafeBuffer.from=function(s,o,i){if(\"number\"==typeof s)throw new TypeError(\"Argument must not be a number\");return u(s,o,i)},SafeBuffer.alloc=function(s,o,i){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");var a=u(s);return void 0!==o?\"string\"==typeof i?a.fill(o,i):a.fill(o):a.fill(0),a},SafeBuffer.allocUnsafe=function(s){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");return u(s)},SafeBuffer.allocUnsafeSlow=function(s){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");return a.SlowBuffer(s)}},93243:(s,o,i)=>{var a=i(56110),u=function(){try{var s=a(Object,\"defineProperty\");return s({},\"\",{}),s}catch(s){}}();s.exports=u},93290:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u?a.Buffer:void 0,x=w?w.allocUnsafe:void 0;s.exports=function cloneBuffer(s,o){if(o)return s.slice();var i=s.length,a=x?x(i):new s.constructor(i);return s.copy(a),a}},93427:(s,o,i)=>{\"use strict\";var a=i(1907);s.exports=a([].slice)},93663:(s,o,i)=>{var a=i(41799),u=i(10776),_=i(67197);s.exports=function baseMatches(s){var o=u(s);return 1==o.length&&o[0][2]?_(o[0][0],o[0][1]):function(i){return i===s||a(i,s,o)}}},93700:(s,o,i)=>{\"use strict\";var a=i(19709);s.exports=a},93736:(s,o,i)=>{var a=i(51873),u=a?a.prototype:void 0,_=u?u.valueOf:void 0;s.exports=function cloneSymbol(s){return _?Object(_.call(s)):{}}},93742:s=>{\"use strict\";s.exports={}},94033:s=>{s.exports=function baseLodash(){}},94643:(s,o,i)=>{function config(s){try{if(!i.g.localStorage)return!1}catch(s){return!1}var o=i.g.localStorage[s];return null!=o&&\"true\"===String(o).toLowerCase()}s.exports=function deprecate(s,o){if(config(\"noDeprecation\"))return s;var i=!1;return function deprecated(){if(!i){if(config(\"throwDeprecation\"))throw new Error(o);config(\"traceDeprecation\")?console.trace(o):console.warn(o),i=!0}return s.apply(this,arguments)}}},95089:s=>{const o=\"[A-Za-z$_][0-9A-Za-z$_]*\",i=[\"as\",\"in\",\"of\",\"if\",\"for\",\"while\",\"finally\",\"var\",\"new\",\"function\",\"do\",\"return\",\"void\",\"else\",\"break\",\"catch\",\"instanceof\",\"with\",\"throw\",\"case\",\"default\",\"try\",\"switch\",\"continue\",\"typeof\",\"delete\",\"let\",\"yield\",\"const\",\"class\",\"debugger\",\"async\",\"await\",\"static\",\"import\",\"from\",\"export\",\"extends\"],a=[\"true\",\"false\",\"null\",\"undefined\",\"NaN\",\"Infinity\"],u=[].concat([\"setInterval\",\"setTimeout\",\"clearInterval\",\"clearTimeout\",\"require\",\"exports\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"unescape\"],[\"arguments\",\"this\",\"super\",\"console\",\"window\",\"document\",\"localStorage\",\"module\",\"global\"],[\"Intl\",\"DataView\",\"Number\",\"Math\",\"Date\",\"String\",\"RegExp\",\"Object\",\"Function\",\"Boolean\",\"Error\",\"Symbol\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\",\"Proxy\",\"Reflect\",\"JSON\",\"Promise\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Float32Array\",\"Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"ArrayBuffer\",\"BigInt64Array\",\"BigUint64Array\",\"BigInt\"],[\"EvalError\",\"InternalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\"]);function lookahead(s){return concat(\"(?=\",s,\")\")}function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function javascript(s){const _=o,w=\"<>\",x=\"</>\",C={begin:/<[A-Za-z0-9\\\\._:-]+/,end:/\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,isTrulyOpeningTag:(s,o)=>{const i=s[0].length+s.index,a=s.input[i];\"<\"!==a?\">\"===a&&(((s,{after:o})=>{const i=\"</\"+s[0].slice(1);return-1!==s.input.indexOf(i,o)})(s,{after:i})||o.ignoreMatch()):o.ignoreMatch()}},j={$pattern:o,keyword:i,literal:a,built_in:u},L=\"[0-9](_?[0-9])*\",B=`\\\\.(${L})`,$=\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\",V={className:\"number\",variants:[{begin:`(\\\\b(${$})((${B})|\\\\.)?|(${B}))[eE][+-]?(${L})\\\\b`},{begin:`\\\\b(${$})\\\\b((${B})\\\\b|\\\\.)?|(${B})\\\\b`},{begin:\"\\\\b(0|[1-9](_?[0-9])*)n\\\\b\"},{begin:\"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"},{begin:\"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"},{begin:\"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"},{begin:\"\\\\b0[0-7]+n?\\\\b\"}],relevance:0},U={className:\"subst\",begin:\"\\\\$\\\\{\",end:\"\\\\}\",keywords:j,contains:[]},z={begin:\"html`\",end:\"\",starts:{end:\"`\",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,U],subLanguage:\"xml\"}},Y={begin:\"css`\",end:\"\",starts:{end:\"`\",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,U],subLanguage:\"css\"}},Z={className:\"string\",begin:\"`\",end:\"`\",contains:[s.BACKSLASH_ESCAPE,U]},ee={className:\"comment\",variants:[s.COMMENT(/\\/\\*\\*(?!\\/)/,\"\\\\*/\",{relevance:0,contains:[{className:\"doctag\",begin:\"@[A-Za-z]+\",contains:[{className:\"type\",begin:\"\\\\{\",end:\"\\\\}\",relevance:0},{className:\"variable\",begin:_+\"(?=\\\\s*(-)|$)\",endsParent:!0,relevance:0},{begin:/(?=[^\\n])\\s/,relevance:0}]}]}),s.C_BLOCK_COMMENT_MODE,s.C_LINE_COMMENT_MODE]},ie=[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,z,Y,Z,V,s.REGEXP_MODE];U.contains=ie.concat({begin:/\\{/,end:/\\}/,keywords:j,contains:[\"self\"].concat(ie)});const ae=[].concat(ee,U.contains),ce=ae.concat([{begin:/\\(/,end:/\\)/,keywords:j,contains:[\"self\"].concat(ae)}]),le={className:\"params\",begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce};return{name:\"Javascript\",aliases:[\"js\",\"jsx\",\"mjs\",\"cjs\"],keywords:j,exports:{PARAMS_CONTAINS:ce},illegal:/#(?![$_A-z])/,contains:[s.SHEBANG({label:\"shebang\",binary:\"node\",relevance:5}),{label:\"use_strict\",className:\"meta\",relevance:10,begin:/^\\s*['\"]use (strict|asm)['\"]/},s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,z,Y,Z,ee,V,{begin:concat(/[{,\\n]\\s*/,lookahead(concat(/(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,_+\"\\\\s*:\"))),relevance:0,contains:[{className:\"attr\",begin:_+lookahead(\"\\\\s*:\"),relevance:0}]},{begin:\"(\"+s.RE_STARTERS_RE+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",keywords:\"return throw case\",contains:[ee,s.REGEXP_MODE,{className:\"function\",begin:\"(\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)|\"+s.UNDERSCORE_IDENT_RE+\")\\\\s*=>\",returnBegin:!0,end:\"\\\\s*=>\",contains:[{className:\"params\",variants:[{begin:s.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\(\\s*\\)/,skip:!0},{begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce}]}]},{begin:/,/,relevance:0},{className:\"\",begin:/\\s/,end:/\\s*/,skip:!0},{variants:[{begin:w,end:x},{begin:C.begin,\"on:begin\":C.isTrulyOpeningTag,end:C.end}],subLanguage:\"xml\",contains:[{begin:C.begin,end:C.end,skip:!0,contains:[\"self\"]}]}],relevance:0},{className:\"function\",beginKeywords:\"function\",end:/[{;]/,excludeEnd:!0,keywords:j,contains:[\"self\",s.inherit(s.TITLE_MODE,{begin:_}),le],illegal:/%/},{beginKeywords:\"while if switch catch for\"},{className:\"function\",begin:s.UNDERSCORE_IDENT_RE+\"\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)\\\\s*\\\\{\",returnBegin:!0,contains:[le,s.inherit(s.TITLE_MODE,{begin:_})]},{variants:[{begin:\"\\\\.\"+_},{begin:\"\\\\$\"+_}],relevance:0},{className:\"class\",beginKeywords:\"class\",end:/[{;=]/,excludeEnd:!0,illegal:/[:\"[\\]]/,contains:[{beginKeywords:\"extends\"},s.UNDERSCORE_TITLE_MODE]},{begin:/\\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[s.inherit(s.TITLE_MODE,{begin:_}),\"self\",le]},{begin:\"(get|set)\\\\s+(?=\"+_+\"\\\\()\",end:/\\{/,keywords:\"get set\",contains:[s.inherit(s.TITLE_MODE,{begin:_}),{begin:/\\(\\)/},le]},{begin:/\\$[(.]/}]}}},95116:(s,o,i)=>{\"use strict\";var a,u,_,w=i(98828),x=i(62250),C=i(46285),j=i(58075),L=i(15972),B=i(68055),$=i(76264),V=i(7376),U=$(\"iterator\"),z=!1;[].keys&&(\"next\"in(_=[].keys())?(u=L(L(_)))!==Object.prototype&&(a=u):z=!0),!C(a)||w((function(){var s={};return a[U].call(s)!==s}))?a={}:V&&(a=j(a)),x(a[U])||B(a,U,(function(){return this})),s.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:z}},95950:(s,o,i)=>{var a=i(70695),u=i(88984),_=i(64894);s.exports=function keys(s){return _(s)?a(s):u(s)}},96131:(s,o,i)=>{var a=i(2523),u=i(85463),_=i(76959);s.exports=function baseIndexOf(s,o,i){return o==o?_(s,o,i):a(s,u,i)}},96540:(s,o,i)=>{\"use strict\";s.exports=i(15287)},96605:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(45951),_=i(76024),w=i(19358),x=\"WebAssembly\",C=u[x],j=7!==new Error(\"e\",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(s,o){var i={};i[s]=w(s,o,j),a({global:!0,constructor:!0,arity:1,forced:j},i)},exportWebAssemblyErrorCauseWrapper=function(s,o){if(C&&C[s]){var i={};i[s]=w(x+\".\"+s,o,j),a({target:x,stat:!0,constructor:!0,arity:1,forced:j},i)}};exportGlobalErrorCauseWrapper(\"Error\",(function(s){return function Error(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"EvalError\",(function(s){return function EvalError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"RangeError\",(function(s){return function RangeError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"ReferenceError\",(function(s){return function ReferenceError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"SyntaxError\",(function(s){return function SyntaxError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"TypeError\",(function(s){return function TypeError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"URIError\",(function(s){return function URIError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"CompileError\",(function(s){return function CompileError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"LinkError\",(function(s){return function LinkError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"RuntimeError\",(function(s){return function RuntimeError(o){return _(s,this,arguments)}}))},96794:(s,o,i)=>{\"use strict\";var a=i(45951).navigator,u=a&&a.userAgent;s.exports=u?String(u):\"\"},98023:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isNumber(s){return\"number\"==typeof s||u(s)&&\"[object Number]\"==a(s)}},98828:s=>{\"use strict\";s.exports=function(s){try{return!!s()}catch(s){return!0}}},99363:(s,o,i)=>{\"use strict\";var a=i(4993),u=i(42156),_=i(93742),w=i(64932),x=i(74284).f,C=i(60183),j=i(59550),L=i(7376),B=i(39447),$=\"Array Iterator\",V=w.set,U=w.getterFor($);s.exports=C(Array,\"Array\",(function(s,o){V(this,{type:$,target:a(s),index:0,kind:o})}),(function(){var s=U(this),o=s.target,i=s.index++;if(!o||i>=o.length)return s.target=null,j(void 0,!0);switch(s.kind){case\"keys\":return j(i,!1);case\"values\":return j(o[i],!1)}return j([i,o[i]],!1)}),\"values\");var z=_.Arguments=_.Array;if(u(\"keys\"),u(\"values\"),u(\"entries\"),!L&&B&&\"values\"!==z.name)try{x(z,\"name\",{value:\"values\"})}catch(s){}},99374:(s,o,i)=>{var a=i(54128),u=i(23805),_=i(44394),w=/^[-+]0x[0-9a-f]+$/i,x=/^0b[01]+$/i,C=/^0o[0-7]+$/i,j=parseInt;s.exports=function toNumber(s){if(\"number\"==typeof s)return s;if(_(s))return NaN;if(u(s)){var o=\"function\"==typeof s.valueOf?s.valueOf():s;s=u(o)?o+\"\":o}if(\"string\"!=typeof s)return 0===s?s:+s;s=a(s);var i=x.test(s);return i||C.test(s)?j(s.slice(2),i?2:8):w.test(s)?NaN:+s}}},o={};function __webpack_require__(i){var a=o[i];if(void 0!==a)return a.exports;var u=o[i]={id:i,loaded:!1,exports:{}};return s[i].call(u.exports,u,u.exports,__webpack_require__),u.loaded=!0,u.exports}__webpack_require__.n=s=>{var o=s&&s.__esModule?()=>s.default:()=>s;return __webpack_require__.d(o,{a:o}),o},__webpack_require__.d=(s,o)=>{for(var i in o)__webpack_require__.o(o,i)&&!__webpack_require__.o(s,i)&&Object.defineProperty(s,i,{enumerable:!0,get:o[i]})},__webpack_require__.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(s){if(\"object\"==typeof window)return window}}(),__webpack_require__.o=(s,o)=>Object.prototype.hasOwnProperty.call(s,o),__webpack_require__.r=s=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(s,\"__esModule\",{value:!0})},__webpack_require__.nmd=s=>(s.paths=[],s.children||(s.children=[]),s);var i={};return(()=>{\"use strict\";__webpack_require__.d(i,{default:()=>JT});var s={};__webpack_require__.r(s),__webpack_require__.d(s,{CLEAR:()=>at,CLEAR_BY:()=>ct,NEW_AUTH_ERR:()=>it,NEW_SPEC_ERR:()=>st,NEW_SPEC_ERR_BATCH:()=>ot,NEW_THROWN_ERR:()=>rt,NEW_THROWN_ERR_BATCH:()=>nt,clear:()=>clear,clearBy:()=>clearBy,newAuthErr:()=>newAuthErr,newSpecErr:()=>newSpecErr,newSpecErrBatch:()=>newSpecErrBatch,newThrownErr:()=>newThrownErr,newThrownErrBatch:()=>newThrownErrBatch});var o={};__webpack_require__.r(o),__webpack_require__.d(o,{AUTHORIZE:()=>Rt,AUTHORIZE_OAUTH2:()=>Lt,CONFIGURE_AUTH:()=>Ft,LOGOUT:()=>Dt,RESTORE_AUTHORIZATION:()=>Bt,SHOW_AUTH_POPUP:()=>Mt,authPopup:()=>authPopup,authorize:()=>authorize,authorizeAccessCodeWithBasicAuthentication:()=>authorizeAccessCodeWithBasicAuthentication,authorizeAccessCodeWithFormParams:()=>authorizeAccessCodeWithFormParams,authorizeApplication:()=>authorizeApplication,authorizeOauth2:()=>authorizeOauth2,authorizeOauth2WithPersistOption:()=>authorizeOauth2WithPersistOption,authorizePassword:()=>authorizePassword,authorizeRequest:()=>authorizeRequest,authorizeWithPersistOption:()=>authorizeWithPersistOption,configureAuth:()=>configureAuth,logout:()=>logout,logoutWithPersistOption:()=>logoutWithPersistOption,persistAuthorizationIfNeeded:()=>persistAuthorizationIfNeeded,preAuthorizeImplicit:()=>preAuthorizeImplicit,restoreAuthorization:()=>restoreAuthorization,showDefinitions:()=>showDefinitions});var a={};__webpack_require__.r(a),__webpack_require__.d(a,{authorized:()=>Jt,definitionsForRequirements:()=>definitionsForRequirements,definitionsToAuthorize:()=>Wt,getConfigs:()=>Ht,getDefinitionsByNames:()=>getDefinitionsByNames,isAuthorized:()=>isAuthorized,selectAuthPath:()=>selectAuthPath,shownDefinitions:()=>zt});var u={};__webpack_require__.r(u),__webpack_require__.d(u,{TOGGLE_CONFIGS:()=>gn,UPDATE_CONFIGS:()=>mn,downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl,loaded:()=>actions_loaded,toggle:()=>toggle,update:()=>update});var _={};__webpack_require__.r(_),__webpack_require__.d(_,{get:()=>get});var w={};__webpack_require__.r(w),__webpack_require__.d(w,{transform:()=>transform});var x={};__webpack_require__.r(x),__webpack_require__.d(x,{transform:()=>parameter_oneof_transform});var C={};__webpack_require__.r(C),__webpack_require__.d(C,{allErrors:()=>Pn,lastError:()=>Tn});var j={};__webpack_require__.r(j),__webpack_require__.d(j,{SHOW:()=>Fn,UPDATE_FILTER:()=>Dn,UPDATE_LAYOUT:()=>Rn,UPDATE_MODE:()=>Ln,changeMode:()=>changeMode,show:()=>actions_show,updateFilter:()=>updateFilter,updateLayout:()=>updateLayout});var L={};__webpack_require__.r(L),__webpack_require__.d(L,{current:()=>current,currentFilter:()=>currentFilter,isShown:()=>isShown,showSummary:()=>$n,whatMode:()=>whatMode});var B={};__webpack_require__.r(B),__webpack_require__.d(B,{taggedOperations:()=>taggedOperations});var $={};__webpack_require__.r($),__webpack_require__.d($,{getActiveLanguage:()=>Un,getDefaultExpanded:()=>zn,getGenerators:()=>Vn,getSnippetGenerators:()=>getSnippetGenerators});var V={};__webpack_require__.r(V),__webpack_require__.d(V,{JsonSchemaArrayItemFile:()=>JsonSchemaArrayItemFile,JsonSchemaArrayItemText:()=>JsonSchemaArrayItemText,JsonSchemaForm:()=>JsonSchemaForm,JsonSchema_array:()=>JsonSchema_array,JsonSchema_boolean:()=>JsonSchema_boolean,JsonSchema_object:()=>JsonSchema_object,JsonSchema_string:()=>JsonSchema_string});var U={};__webpack_require__.r(U),__webpack_require__.d(U,{allowTryItOutFor:()=>allowTryItOutFor,basePath:()=>Hs,canExecuteScheme:()=>canExecuteScheme,consumes:()=>Vs,consumesOptionsFor:()=>consumesOptionsFor,contentTypeValues:()=>contentTypeValues,currentProducesFor:()=>currentProducesFor,definitions:()=>Js,externalDocs:()=>Ds,findDefinition:()=>findDefinition,getOAS3RequiredRequestBodyContentType:()=>getOAS3RequiredRequestBodyContentType,getParameter:()=>getParameter,hasHost:()=>ro,host:()=>Ks,info:()=>Rs,isMediaTypeSchemaPropertiesEqual:()=>isMediaTypeSchemaPropertiesEqual,isOAS3:()=>Ms,lastError:()=>Os,mutatedRequestFor:()=>mutatedRequestFor,mutatedRequests:()=>to,operationScheme:()=>operationScheme,operationWithMeta:()=>operationWithMeta,operations:()=>qs,operationsWithRootInherited:()=>Ys,operationsWithTags:()=>Qs,parameterInclusionSettingFor:()=>parameterInclusionSettingFor,parameterValues:()=>parameterValues,parameterWithMeta:()=>parameterWithMeta,parameterWithMetaByIdentity:()=>parameterWithMetaByIdentity,parametersIncludeIn:()=>parametersIncludeIn,parametersIncludeType:()=>parametersIncludeType,paths:()=>Bs,produces:()=>Us,producesOptionsFor:()=>producesOptionsFor,requestFor:()=>requestFor,requests:()=>eo,responseFor:()=>responseFor,responses:()=>Zs,schemes:()=>Gs,security:()=>zs,securityDefinitions:()=>Ws,semver:()=>Fs,spec:()=>spec,specJS:()=>Ps,specJson:()=>Is,specJsonWithResolvedSubtrees:()=>Ns,specResolved:()=>Ts,specResolvedSubtree:()=>specResolvedSubtree,specSource:()=>js,specStr:()=>As,tagDetails:()=>tagDetails,taggedOperations:()=>selectors_taggedOperations,tags:()=>Xs,url:()=>Cs,validOperationMethods:()=>$s,validateBeforeExecute:()=>validateBeforeExecute,validationErrors:()=>validationErrors,version:()=>Ls});var z={};__webpack_require__.r(z),__webpack_require__.d(z,{CLEAR_REQUEST:()=>wo,CLEAR_RESPONSE:()=>Eo,CLEAR_VALIDATE_PARAMS:()=>xo,LOG_REQUEST:()=>So,SET_MUTATED_REQUEST:()=>_o,SET_REQUEST:()=>bo,SET_RESPONSE:()=>vo,SET_SCHEME:()=>Ao,UPDATE_EMPTY_PARAM_INCLUSION:()=>go,UPDATE_JSON:()=>fo,UPDATE_OPERATION_META_VALUE:()=>ko,UPDATE_PARAM:()=>mo,UPDATE_RESOLVED:()=>Oo,UPDATE_RESOLVED_SUBTREE:()=>Co,UPDATE_SPEC:()=>po,UPDATE_URL:()=>ho,VALIDATE_PARAMS:()=>yo,changeConsumesValue:()=>changeConsumesValue,changeParam:()=>changeParam,changeParamByIdentity:()=>changeParamByIdentity,changeProducesValue:()=>changeProducesValue,clearRequest:()=>clearRequest,clearResponse:()=>clearResponse,clearValidateParams:()=>clearValidateParams,execute:()=>actions_execute,executeRequest:()=>executeRequest,invalidateResolvedSubtreeCache:()=>invalidateResolvedSubtreeCache,logRequest:()=>logRequest,parseToJson:()=>parseToJson,requestResolvedSubtree:()=>requestResolvedSubtree,resolveSpec:()=>resolveSpec,setMutatedRequest:()=>setMutatedRequest,setRequest:()=>setRequest,setResponse:()=>setResponse,setScheme:()=>setScheme,updateEmptyParamInclusion:()=>updateEmptyParamInclusion,updateJsonSpec:()=>updateJsonSpec,updateResolved:()=>updateResolved,updateResolvedSubtree:()=>updateResolvedSubtree,updateSpec:()=>updateSpec,updateUrl:()=>updateUrl,validateParams:()=>validateParams});var Y={};__webpack_require__.r(Y),__webpack_require__.d(Y,{executeRequest:()=>wrap_actions_executeRequest,updateJsonSpec:()=>wrap_actions_updateJsonSpec,updateSpec:()=>wrap_actions_updateSpec,validateParams:()=>wrap_actions_validateParams});var Z={};__webpack_require__.r(Z),__webpack_require__.d(Z,{JsonPatchError:()=>Do,_areEquals:()=>_areEquals,applyOperation:()=>applyOperation,applyPatch:()=>applyPatch,applyReducer:()=>applyReducer,deepClone:()=>Lo,getValueByPointer:()=>getValueByPointer,validate:()=>validate,validator:()=>validator});var ee={};__webpack_require__.r(ee),__webpack_require__.d(ee,{compare:()=>compare,generate:()=>generate,observe:()=>observe,unobserve:()=>unobserve});var ie={};__webpack_require__.r(ie),__webpack_require__.d(ie,{hasElementSourceMap:()=>hasElementSourceMap,includesClasses:()=>includesClasses,includesSymbols:()=>includesSymbols,isAnnotationElement:()=>Bu,isArrayElement:()=>Ru,isBooleanElement:()=>Nu,isCommentElement:()=>$u,isElement:()=>ju,isLinkElement:()=>Lu,isMemberElement:()=>Du,isNullElement:()=>Tu,isNumberElement:()=>Pu,isObjectElement:()=>Mu,isParseResultElement:()=>qu,isPrimitiveElement:()=>isPrimitiveElement,isRefElement:()=>Fu,isSourceMapElement:()=>Vu,isStringElement:()=>Iu});var ae={};__webpack_require__.r(ae),__webpack_require__.d(ae,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>Fd,isLinkDescriptionElement:()=>Vd,isMediaElement:()=>$d});var ce={};__webpack_require__.r(ce),__webpack_require__.d(ce,{isBooleanJsonSchemaElement:()=>isBooleanJsonSchemaElement,isCallbackElement:()=>Mm,isComponentsElement:()=>Rm,isContactElement:()=>Dm,isExampleElement:()=>Lm,isExternalDocumentationElement:()=>Fm,isHeaderElement:()=>Bm,isInfoElement:()=>$m,isLicenseElement:()=>qm,isLinkElement:()=>Vm,isMediaTypeElement:()=>og,isOpenApi3_0Element:()=>zm,isOpenapiElement:()=>Um,isOperationElement:()=>Wm,isParameterElement:()=>Jm,isPathItemElement:()=>Hm,isPathsElement:()=>Km,isReferenceElement:()=>Gm,isRequestBodyElement:()=>Ym,isResponseElement:()=>Xm,isResponsesElement:()=>Qm,isSchemaElement:()=>Zm,isSecurityRequirementElement:()=>eg,isSecuritySchemeElement:()=>rg,isServerElement:()=>ng,isServerVariableElement:()=>sg,isServersElement:()=>lg});var le={};__webpack_require__.r(le),__webpack_require__.d(le,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>y_,isLinkDescriptionElement:()=>v_,isMediaElement:()=>$d});var pe={};__webpack_require__.r(pe),__webpack_require__.d(pe,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>A_,isLinkDescriptionElement:()=>j_});var de={};__webpack_require__.r(de),__webpack_require__.d(de,{isJSONSchemaElement:()=>G_,isLinkDescriptionElement:()=>Y_});var fe={};__webpack_require__.r(fe),__webpack_require__.d(fe,{isJSONSchemaElement:()=>iS,isLinkDescriptionElement:()=>aS});var ye={};__webpack_require__.r(ye),__webpack_require__.d(ye,{isBooleanJsonSchemaElement:()=>predicates_isBooleanJsonSchemaElement,isCallbackElement:()=>WS,isComponentsElement:()=>JS,isContactElement:()=>HS,isExampleElement:()=>KS,isExternalDocumentationElement:()=>GS,isHeaderElement:()=>YS,isInfoElement:()=>XS,isJsonSchemaDialectElement:()=>QS,isLicenseElement:()=>ZS,isLinkElement:()=>eE,isMediaTypeElement:()=>gE,isOpenApi3_1Element:()=>rE,isOpenapiElement:()=>tE,isOperationElement:()=>nE,isParameterElement:()=>sE,isPathItemElement:()=>oE,isPathItemElementExternal:()=>isPathItemElementExternal,isPathsElement:()=>iE,isReferenceElement:()=>aE,isReferenceElementExternal:()=>isReferenceElementExternal,isRequestBodyElement:()=>cE,isResponseElement:()=>lE,isResponsesElement:()=>uE,isSchemaElement:()=>pE,isSecurityRequirementElement:()=>hE,isSecuritySchemeElement:()=>dE,isServerElement:()=>fE,isServerVariableElement:()=>mE});var be={};__webpack_require__.r(be),__webpack_require__.d(be,{cookie:()=>cookie,header:()=>parameter_builders_header,path:()=>parameter_builders_path,query:()=>query});var _e={};__webpack_require__.r(_e),__webpack_require__.d(_e,{Button:()=>Button,Col:()=>Col,Collapse:()=>Collapse,Container:()=>Container,Input:()=>Input,Link:()=>layout_utils_Link,Row:()=>Row,Select:()=>Select,TextArea:()=>TextArea});var Se={};__webpack_require__.r(Se),__webpack_require__.d(Se,{basePath:()=>MI,consumes:()=>RI,definitions:()=>II,findDefinition:()=>jI,hasHost:()=>PI,host:()=>NI,produces:()=>DI,schemes:()=>LI,securityDefinitions:()=>TI,validOperationMethods:()=>wrap_selectors_validOperationMethods});var we={};__webpack_require__.r(we),__webpack_require__.d(we,{definitionsToAuthorize:()=>FI});var xe={};__webpack_require__.r(xe),__webpack_require__.d(xe,{callbacksOperations:()=>qI,findSchema:()=>findSchema,isOAS3:()=>selectors_isOAS3,isOAS30:()=>selectors_isOAS30,isSwagger2:()=>selectors_isSwagger2,servers:()=>$I});var Pe={};__webpack_require__.r(Pe),__webpack_require__.d(Pe,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>aP,CLEAR_REQUEST_BODY_VALUE:()=>cP,SET_REQUEST_BODY_VALIDATE_ERROR:()=>iP,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>rP,UPDATE_REQUEST_BODY_INCLUSION:()=>tP,UPDATE_REQUEST_BODY_VALUE:()=>ZI,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>eP,UPDATE_REQUEST_CONTENT_TYPE:()=>nP,UPDATE_RESPONSE_CONTENT_TYPE:()=>sP,UPDATE_SELECTED_SERVER:()=>QI,UPDATE_SERVER_VARIABLE_VALUE:()=>oP,clearRequestBodyValidateError:()=>clearRequestBodyValidateError,clearRequestBodyValue:()=>clearRequestBodyValue,initRequestBodyValidateError:()=>initRequestBodyValidateError,setActiveExamplesMember:()=>setActiveExamplesMember,setRequestBodyInclusion:()=>setRequestBodyInclusion,setRequestBodyValidateError:()=>setRequestBodyValidateError,setRequestBodyValue:()=>setRequestBodyValue,setRequestContentType:()=>setRequestContentType,setResponseContentType:()=>setResponseContentType,setRetainRequestBodyValueFlag:()=>setRetainRequestBodyValueFlag,setSelectedServer:()=>setSelectedServer,setServerVariableValue:()=>setServerVariableValue});var Te={};__webpack_require__.r(Te),__webpack_require__.d(Te,{activeExamplesMember:()=>yP,hasUserEditedBody:()=>fP,requestBodyErrors:()=>gP,requestBodyInclusionSetting:()=>mP,requestBodyValue:()=>hP,requestContentType:()=>vP,responseContentType:()=>bP,selectDefaultRequestBodyValue:()=>selectDefaultRequestBodyValue,selectedServer:()=>pP,serverEffectiveValue:()=>EP,serverVariableValue:()=>_P,serverVariables:()=>SP,shouldRetainRequestBodyValue:()=>dP,validOperationMethods:()=>xP,validateBeforeExecute:()=>wP,validateShallowRequired:()=>validateShallowRequired});var Re=__webpack_require__(96540);function formatProdErrorMessage(s){return`Minified Redux error #${s}; visit https://redux.js.org/Errors?code=${s} for the full message or use the non-minified dev environment for full errors. `}var $e=(()=>\"function\"==typeof Symbol&&Symbol.observable||\"@@observable\")(),randomString=()=>Math.random().toString(36).substring(7).split(\"\").join(\".\"),qe={INIT:`@@redux/INIT${randomString()}`,REPLACE:`@@redux/REPLACE${randomString()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${randomString()}`};function isPlainObject(s){if(\"object\"!=typeof s||null===s)return!1;let o=s;for(;null!==Object.getPrototypeOf(o);)o=Object.getPrototypeOf(o);return Object.getPrototypeOf(s)===o||null===Object.getPrototypeOf(s)}function createStore(s,o,i){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(2));if(\"function\"==typeof o&&\"function\"==typeof i||\"function\"==typeof i&&\"function\"==typeof arguments[3])throw new Error(formatProdErrorMessage(0));if(\"function\"==typeof o&&void 0===i&&(i=o,o=void 0),void 0!==i){if(\"function\"!=typeof i)throw new Error(formatProdErrorMessage(1));return i(createStore)(s,o)}let a=s,u=o,_=new Map,w=_,x=0,C=!1;function ensureCanMutateNextListeners(){w===_&&(w=new Map,_.forEach(((s,o)=>{w.set(o,s)})))}function getState(){if(C)throw new Error(formatProdErrorMessage(3));return u}function subscribe(s){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(4));if(C)throw new Error(formatProdErrorMessage(5));let o=!0;ensureCanMutateNextListeners();const i=x++;return w.set(i,s),function unsubscribe(){if(o){if(C)throw new Error(formatProdErrorMessage(6));o=!1,ensureCanMutateNextListeners(),w.delete(i),_=null}}}function dispatch(s){if(!isPlainObject(s))throw new Error(formatProdErrorMessage(7));if(void 0===s.type)throw new Error(formatProdErrorMessage(8));if(\"string\"!=typeof s.type)throw new Error(formatProdErrorMessage(17));if(C)throw new Error(formatProdErrorMessage(9));try{C=!0,u=a(u,s)}finally{C=!1}return(_=w).forEach((s=>{s()})),s}dispatch({type:qe.INIT});return{dispatch,subscribe,getState,replaceReducer:function replaceReducer(s){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(10));a=s,dispatch({type:qe.REPLACE})},[$e]:function observable(){const s=subscribe;return{subscribe(o){if(\"object\"!=typeof o||null===o)throw new Error(formatProdErrorMessage(11));function observeState(){const s=o;s.next&&s.next(getState())}observeState();return{unsubscribe:s(observeState)}},[$e](){return this}}}}}function bindActionCreator(s,o){return function(...i){return o(s.apply(this,i))}}function compose(...s){return 0===s.length?s=>s:1===s.length?s[0]:s.reduce(((s,o)=>(...i)=>s(o(...i))))}var ze=__webpack_require__(9404),We=__webpack_require__.n(ze),He=__webpack_require__(81919),Ye=__webpack_require__.n(He),Xe=__webpack_require__(89593),Qe=__webpack_require__(20334),et=__webpack_require__(55364),tt=__webpack_require__.n(et);const rt=\"err_new_thrown_err\",nt=\"err_new_thrown_err_batch\",st=\"err_new_spec_err\",ot=\"err_new_spec_err_batch\",it=\"err_new_auth_err\",at=\"err_clear\",ct=\"err_clear_by\";function newThrownErr(s){return{type:rt,payload:(0,Qe.serializeError)(s)}}function newThrownErrBatch(s){return{type:nt,payload:s}}function newSpecErr(s){return{type:st,payload:s}}function newSpecErrBatch(s){return{type:ot,payload:s}}function newAuthErr(s){return{type:it,payload:s}}function clear(s={}){return{type:at,payload:s}}function clearBy(s=()=>!0){return{type:ct,payload:s}}const lt=function makeWindow(){var s={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if(\"undefined\"==typeof window)return s;try{s=window;for(var o of[\"File\",\"Blob\",\"FormData\"])o in window&&(s[o]=window[o])}catch(s){console.error(s)}return s}();__webpack_require__(84058),__webpack_require__(55808);var ut=__webpack_require__(50104),pt=__webpack_require__.n(ut),ht=__webpack_require__(7309),dt=__webpack_require__.n(ht),mt=__webpack_require__(42426),gt=__webpack_require__.n(mt),yt=__webpack_require__(75288),vt=__webpack_require__.n(yt),bt=__webpack_require__(1882),_t=__webpack_require__.n(bt),St=__webpack_require__(2205),Et=__webpack_require__.n(St),wt=__webpack_require__(53209),xt=__webpack_require__.n(wt),kt=__webpack_require__(62802),Ot=__webpack_require__.n(kt);const Ct=We().Set.of(\"type\",\"format\",\"items\",\"default\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"enum\",\"multipleOf\");function getParameterSchema(s,{isOAS3:o}={}){if(!We().Map.isMap(s))return{schema:We().Map(),parameterContentMediaType:null};if(!o)return\"body\"===s.get(\"in\")?{schema:s.get(\"schema\",We().Map()),parameterContentMediaType:null}:{schema:s.filter(((s,o)=>Ct.includes(o))),parameterContentMediaType:null};if(s.get(\"content\")){const o=s.get(\"content\",We().Map({})).keySeq().first();return{schema:s.getIn([\"content\",o,\"schema\"],We().Map()),parameterContentMediaType:o}}return{schema:s.get(\"schema\")?s.get(\"schema\",We().Map()):We().Map(),parameterContentMediaType:null}}var At=__webpack_require__(48287).Buffer;const jt=\"default\",isImmutable=s=>We().Iterable.isIterable(s),immutableToJS=s=>isImmutable(s)?s.toJS():s;function objectify(s){return isObject(s)?immutableToJS(s):{}}function fromJSOrdered(s){if(isImmutable(s))return s;if(s instanceof lt.File)return s;if(!isObject(s))return s;if(Array.isArray(s))return We().Seq(s).map(fromJSOrdered).toList();if(_t()(s.entries)){const o=function createObjWithHashedKeys(s){if(!_t()(s.entries))return s;const o={},i=\"_**[]\",a={};for(let u of s.entries())if(o[u[0]]||a[u[0]]&&a[u[0]].containsMultiple){if(!a[u[0]]){a[u[0]]={containsMultiple:!0,length:1},o[`${u[0]}${i}${a[u[0]].length}`]=o[u[0]],delete o[u[0]]}a[u[0]].length+=1,o[`${u[0]}${i}${a[u[0]].length}`]=u[1]}else o[u[0]]=u[1];return o}(s);return We().OrderedMap(o).map(fromJSOrdered)}return We().OrderedMap(s).map(fromJSOrdered)}function normalizeArray(s){return Array.isArray(s)?s:[s]}function isFn(s){return\"function\"==typeof s}function isObject(s){return!!s&&\"object\"==typeof s}function isFunc(s){return\"function\"==typeof s}function isArray(s){return Array.isArray(s)}const It=pt();function objMap(s,o){return Object.keys(s).reduce(((i,a)=>(i[a]=o(s[a],a),i)),{})}function objReduce(s,o){return Object.keys(s).reduce(((i,a)=>{let u=o(s[a],a);return u&&\"object\"==typeof u&&Object.assign(i,u),i}),{})}function systemThunkMiddleware(s){return({dispatch:o,getState:i})=>o=>i=>\"function\"==typeof i?i(s()):o(i)}function validateValueBySchema(s,o,i,a,u){if(!o)return[];let _=[],w=o.get(\"nullable\"),x=o.get(\"required\"),C=o.get(\"maximum\"),j=o.get(\"minimum\"),L=o.get(\"type\"),B=o.get(\"format\"),$=o.get(\"maxLength\"),V=o.get(\"minLength\"),U=o.get(\"uniqueItems\"),z=o.get(\"maxItems\"),Y=o.get(\"minItems\"),Z=o.get(\"pattern\");const ee=i||!0===x,ie=null!=s,ae=ee||ie&&\"array\"===L||!(!ee&&!ie),ce=w&&null===s;if(ee&&!ie&&!ce&&!a&&!L)return _.push(\"Required field is not provided\"),_;if(ce||!L||!ae)return[];let le=\"string\"===L&&s,pe=\"array\"===L&&Array.isArray(s)&&s.length,de=\"array\"===L&&We().List.isList(s)&&s.count();const fe=[le,pe,de,\"array\"===L&&\"string\"==typeof s&&s,\"file\"===L&&s instanceof lt.File,\"boolean\"===L&&(s||!1===s),\"number\"===L&&(s||0===s),\"integer\"===L&&(s||0===s),\"object\"===L&&\"object\"==typeof s&&null!==s,\"object\"===L&&\"string\"==typeof s&&s].some((s=>!!s));if(ee&&!fe&&!a)return _.push(\"Required field is not provided\"),_;if(\"object\"===L&&(null===u||\"application/json\"===u)){let i=s;if(\"string\"==typeof s)try{i=JSON.parse(s)}catch(s){return _.push(\"Parameter string value must be valid JSON\"),_}o&&o.has(\"required\")&&isFunc(x.isList)&&x.isList()&&x.forEach((s=>{void 0===i[s]&&_.push({propKey:s,error:\"Required property not found\"})})),o&&o.has(\"properties\")&&o.get(\"properties\").forEach(((s,o)=>{const w=validateValueBySchema(i[o],s,!1,a,u);_.push(...w.map((s=>({propKey:o,error:s}))))}))}if(Z){let o=((s,o)=>{if(!new RegExp(o).test(s))return\"Value must follow pattern \"+o})(s,Z);o&&_.push(o)}if(Y&&\"array\"===L){let o=((s,o)=>{if(!s&&o>=1||s&&s.length<o)return`Array must contain at least ${o} item${1===o?\"\":\"s\"}`})(s,Y);o&&_.push(o)}if(z&&\"array\"===L){let o=((s,o)=>{if(s&&s.length>o)return`Array must not contain more then ${o} item${1===o?\"\":\"s\"}`})(s,z);o&&_.push({needRemove:!0,error:o})}if(U&&\"array\"===L){let o=((s,o)=>{if(s&&(\"true\"===o||!0===o)){const o=(0,ze.fromJS)(s),i=o.toSet();if(s.length>i.size){let s=(0,ze.Set)();if(o.forEach(((i,a)=>{o.filter((s=>isFunc(s.equals)?s.equals(i):s===i)).size>1&&(s=s.add(a))})),0!==s.size)return s.map((s=>({index:s,error:\"No duplicates allowed.\"}))).toArray()}}})(s,U);o&&_.push(...o)}if($||0===$){let o=((s,o)=>{if(s.length>o)return`Value must be no longer than ${o} character${1!==o?\"s\":\"\"}`})(s,$);o&&_.push(o)}if(V){let o=((s,o)=>{if(s.length<o)return`Value must be at least ${o} character${1!==o?\"s\":\"\"}`})(s,V);o&&_.push(o)}if(C||0===C){let o=((s,o)=>{if(s>o)return`Value must be less than or equal to ${o}`})(s,C);o&&_.push(o)}if(j||0===j){let o=((s,o)=>{if(s<o)return`Value must be greater than or equal to ${o}`})(s,j);o&&_.push(o)}if(\"string\"===L){let o;if(o=\"date-time\"===B?(s=>{if(isNaN(Date.parse(s)))return\"Value must be a DateTime\"})(s):\"uuid\"===B?(s=>{if(s=s.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(s))return\"Value must be a Guid\"})(s):(s=>{if(s&&\"string\"!=typeof s)return\"Value must be a string\"})(s),!o)return _;_.push(o)}else if(\"boolean\"===L){let o=(s=>{if(\"true\"!==s&&\"false\"!==s&&!0!==s&&!1!==s)return\"Value must be a boolean\"})(s);if(!o)return _;_.push(o)}else if(\"number\"===L){let o=(s=>{if(!/^-?\\d+(\\.?\\d+)?$/.test(s))return\"Value must be a number\"})(s);if(!o)return _;_.push(o)}else if(\"integer\"===L){let o=(s=>{if(!/^-?\\d+$/.test(s))return\"Value must be an integer\"})(s);if(!o)return _;_.push(o)}else if(\"array\"===L){if(!pe&&!de)return _;s&&s.forEach(((s,i)=>{const w=validateValueBySchema(s,o.get(\"items\"),!1,a,u);_.push(...w.map((s=>({index:i,error:s}))))}))}else if(\"file\"===L){let o=(s=>{if(s&&!(s instanceof lt.File))return\"Value must be a file\"})(s);if(!o)return _;_.push(o)}return _}const utils_btoa=s=>{let o;return o=s instanceof At?s:At.from(s.toString(),\"utf-8\"),o.toString(\"base64\")},Pt={operationsSorter:{alpha:(s,o)=>s.get(\"path\").localeCompare(o.get(\"path\")),method:(s,o)=>s.get(\"method\").localeCompare(o.get(\"method\"))},tagsSorter:{alpha:(s,o)=>s.localeCompare(o)}},buildFormData=s=>{let o=[];for(let i in s){let a=s[i];void 0!==a&&\"\"!==a&&o.push([i,\"=\",encodeURIComponent(a).replace(/%20/g,\"+\")].join(\"\"))}return o.join(\"&\")},shallowEqualKeys=(s,o,i)=>!!dt()(i,(i=>vt()(s[i],o[i])));function requiresValidationURL(s){return!(!s||s.indexOf(\"localhost\")>=0||s.indexOf(\"127.0.0.1\")>=0||\"none\"===s)}const createDeepLinkPath=s=>\"string\"==typeof s||s instanceof String?s.trim().replace(/\\s/g,\"%20\"):\"\",escapeDeepLinkPath=s=>Et()(createDeepLinkPath(s).replace(/%20/g,\"_\")),getExtensions=s=>{const o=/^x-/;return ze.Map.isMap(s)?s.filter(((s,i)=>o.test(i))):Object.keys(s).filter((s=>o.test(s)))},getCommonExtensions=s=>s.filter(((s,o)=>/^pattern|maxLength|minLength|maximum|minimum/.test(o)));function deeplyStripKey(s,o,i=()=>!0){if(\"object\"!=typeof s||Array.isArray(s)||null===s||!o)return s;const a=Object.assign({},s);return Object.keys(a).forEach((s=>{s===o&&i(a[s],s)?delete a[s]:a[s]=deeplyStripKey(a[s],o,i)})),a}function stringify(s){if(\"string\"==typeof s)return s;if(s&&s.toJS&&(s=s.toJS()),\"object\"==typeof s&&null!==s)try{return JSON.stringify(s,null,2)}catch(o){return String(s)}return null==s?\"\":s.toString()}function paramToIdentifier(s,{returnAll:o=!1,allowHashes:i=!0}={}){if(!We().Map.isMap(s))throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\");const a=s.get(\"name\"),u=s.get(\"in\");let _=[];return s&&s.hashCode&&u&&a&&i&&_.push(`${u}.${a}.hash-${s.hashCode()}`),u&&a&&_.push(`${u}.${a}`),_.push(a),o?_:_[0]||\"\"}function paramToValue(s,o){return paramToIdentifier(s,{returnAll:!0}).map((s=>o[s])).filter((s=>void 0!==s))[0]}function b64toB64UrlEncoded(s){return s.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=/g,\"\")}const isEmptyValue=s=>!s||!(!isImmutable(s)||!s.isEmpty()),idFn=s=>s;function createStoreWithMiddleware(s,o,i){let a=[systemThunkMiddleware(i)];return createStore(s,o,(lt.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||compose)(function applyMiddleware(...s){return o=>(i,a)=>{const u=o(i,a);let dispatch=()=>{throw new Error(formatProdErrorMessage(15))};const _={getState:u.getState,dispatch:(s,...o)=>dispatch(s,...o)},w=s.map((s=>s(_)));return dispatch=compose(...w)(u.dispatch),{...u,dispatch}}}(...a)))}class Store{constructor(s={}){Ye()(this,{state:{},plugins:[],system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},s),this.getSystem=this._getSystem.bind(this),this.store=function configureStore(s,o,i){return createStoreWithMiddleware(s,o,i)}(idFn,(0,ze.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}getStore(){return this.store}register(s,o=!0){var i=combinePlugins(s,this.getSystem());systemExtend(this.system,i),o&&this.buildSystem();callAfterLoad.call(this.system,s,this.getSystem())&&this.buildSystem()}buildSystem(s=!0){let o=this.getStore().dispatch,i=this.getStore().getState;this.boundSystem=Object.assign({},this.getRootInjects(),this.getWrappedAndBoundActions(o),this.getWrappedAndBoundSelectors(i,this.getSystem),this.getStateThunks(i),this.getFn(),this.getConfigs()),s&&this.rebuildReducer()}_getSystem(){return this.boundSystem}getRootInjects(){return Object.assign({getSystem:this.getSystem,getStore:this.getStore.bind(this),getComponents:this.getComponents.bind(this),getState:this.getStore().getState,getConfigs:this._getConfigs.bind(this),Im:We(),React:Re},this.system.rootInjects||{})}_getConfigs(){return this.system.configs}getConfigs(){return{configs:this.system.configs}}setConfigs(s){this.system.configs=s}rebuildReducer(){this.store.replaceReducer(function buildReducer(s,o){return function allReducers(s,o){let i=Object.keys(s).reduce(((i,a)=>(i[a]=function makeReducer(s,o){return(i=new ze.Map,a)=>{if(!s)return i;let u=s[a.type];if(u){const s=wrapWithTryCatch(u,o)(i,a);return null===s?i:s}return i}}(s[a],o),i)),{});if(!Object.keys(i).length)return idFn;return(0,Xe.H)(i)}(objMap(s,(s=>s.reducers)),o)}(this.system.statePlugins,this.getSystem))}getType(s){let o=s[0].toUpperCase()+s.slice(1);return objReduce(this.system.statePlugins,((i,a)=>{let u=i[s];if(u)return{[a+o]:u}}))}getSelectors(){return this.getType(\"selectors\")}getActions(){return objMap(this.getType(\"actions\"),(s=>objReduce(s,((s,o)=>{if(isFn(s))return{[o]:s}}))))}getWrappedAndBoundActions(s){return objMap(this.getBoundActions(s),((s,o)=>{let i=this.system.statePlugins[o.slice(0,-7)].wrapActions;return i?objMap(s,((s,o)=>{let a=i[o];return a?(Array.isArray(a)||(a=[a]),a.reduce(((s,o)=>{let newAction=(...i)=>o(s,this.getSystem())(...i);if(!isFn(newAction))throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\");return wrapWithTryCatch(newAction,this.getSystem)}),s||Function.prototype)):s})):s}))}getWrappedAndBoundSelectors(s,o){return objMap(this.getBoundSelectors(s,o),((o,i)=>{let a=[i.slice(0,-9)],u=this.system.statePlugins[a].wrapSelectors;return u?objMap(o,((o,i)=>{let _=u[i];return _?(Array.isArray(_)||(_=[_]),_.reduce(((o,i)=>{let wrappedSelector=(...u)=>i(o,this.getSystem())(s().getIn(a),...u);if(!isFn(wrappedSelector))throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\");return wrappedSelector}),o||Function.prototype)):o})):o}))}getStates(s){return Object.keys(this.system.statePlugins).reduce(((o,i)=>(o[i]=s.get(i),o)),{})}getStateThunks(s){return Object.keys(this.system.statePlugins).reduce(((o,i)=>(o[i]=()=>s().get(i),o)),{})}getFn(){return{fn:this.system.fn}}getComponents(s){const o=this.system.components[s];return Array.isArray(o)?o.reduce(((s,o)=>o(s,this.getSystem()))):void 0!==s?this.system.components[s]:this.system.components}getBoundSelectors(s,o){return objMap(this.getSelectors(),((i,a)=>{let u=[a.slice(0,-9)];return objMap(i,(i=>(...a)=>{let _=wrapWithTryCatch(i,this.getSystem).apply(null,[s().getIn(u),...a]);return\"function\"==typeof _&&(_=wrapWithTryCatch(_,this.getSystem)(o())),_}))}))}getBoundActions(s){s=s||this.getStore().dispatch;const o=this.getActions(),process=s=>\"function\"!=typeof s?objMap(s,(s=>process(s))):(...o)=>{var i=null;try{i=s(...o)}catch(s){i={type:rt,error:!0,payload:(0,Qe.serializeError)(s)}}finally{return i}};return objMap(o,(o=>function bindActionCreators(s,o){if(\"function\"==typeof s)return bindActionCreator(s,o);if(\"object\"!=typeof s||null===s)throw new Error(formatProdErrorMessage(16));const i={};for(const a in s){const u=s[a];\"function\"==typeof u&&(i[a]=bindActionCreator(u,o))}return i}(process(o),s)))}getMapStateToProps(){return()=>Object.assign({},this.getSystem())}getMapDispatchToProps(s){return o=>Ye()({},this.getWrappedAndBoundActions(o),this.getFn(),s)}}function combinePlugins(s,o){return isObject(s)&&!isArray(s)?tt()({},s):isFunc(s)?combinePlugins(s(o),o):isArray(s)?s.map((s=>combinePlugins(s,o))).reduce(systemExtend,{components:o.getComponents()}):{}}function callAfterLoad(s,o,{hasLoaded:i}={}){let a=i;return isObject(s)&&!isArray(s)&&\"function\"==typeof s.afterLoad&&(a=!0,wrapWithTryCatch(s.afterLoad,o.getSystem).call(this,o)),isFunc(s)?callAfterLoad.call(this,s(o),o,{hasLoaded:a}):isArray(s)?s.map((s=>callAfterLoad.call(this,s,o,{hasLoaded:a}))):a}function systemExtend(s={},o={}){if(!isObject(s))return{};if(!isObject(o))return s;o.wrapComponents&&(objMap(o.wrapComponents,((i,a)=>{const u=s.components&&s.components[a];u&&Array.isArray(u)?(s.components[a]=u.concat([i]),delete o.wrapComponents[a]):u&&(s.components[a]=[u,i],delete o.wrapComponents[a])})),Object.keys(o.wrapComponents).length||delete o.wrapComponents);const{statePlugins:i}=s;if(isObject(i))for(let s in i){const a=i[s];if(!isObject(a))continue;const{wrapActions:u,wrapSelectors:_}=a;if(isObject(u))for(let i in u){let a=u[i];Array.isArray(a)||(a=[a],u[i]=a),o&&o.statePlugins&&o.statePlugins[s]&&o.statePlugins[s].wrapActions&&o.statePlugins[s].wrapActions[i]&&(o.statePlugins[s].wrapActions[i]=u[i].concat(o.statePlugins[s].wrapActions[i]))}if(isObject(_))for(let i in _){let a=_[i];Array.isArray(a)||(a=[a],_[i]=a),o&&o.statePlugins&&o.statePlugins[s]&&o.statePlugins[s].wrapSelectors&&o.statePlugins[s].wrapSelectors[i]&&(o.statePlugins[s].wrapSelectors[i]=_[i].concat(o.statePlugins[s].wrapSelectors[i]))}}return Ye()(s,o)}function wrapWithTryCatch(s,o,{logErrors:i=!0}={}){return\"function\"!=typeof s?s:function(...a){try{return s.call(this,...a)}catch(s){if(i){const{uncaughtExceptionHandler:i}=o().getConfigs();\"function\"==typeof i?i(s):console.error(s)}return null}}}var Tt=__webpack_require__(61160),Nt=__webpack_require__.n(Tt);const Mt=\"show_popup\",Rt=\"authorize\",Dt=\"logout\",Lt=\"authorize_oauth2\",Ft=\"configure_auth\",Bt=\"restore_authorization\";function showDefinitions(s){return{type:Mt,payload:s}}function authorize(s){return{type:Rt,payload:s}}const authorizeWithPersistOption=s=>({authActions:o})=>{o.authorize(s),o.persistAuthorizationIfNeeded()};function logout(s){return{type:Dt,payload:s}}const logoutWithPersistOption=s=>({authActions:o})=>{o.logout(s),o.persistAuthorizationIfNeeded()},preAuthorizeImplicit=s=>({authActions:o,errActions:i})=>{let{auth:a,token:u,isValid:_}=s,{schema:w,name:x}=a,C=w.get(\"flow\");delete lt.swaggerUIRedirectOauth2,\"accessCode\"===C||_||i.newAuthErr({authId:x,source:\"auth\",level:\"warning\",message:\"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"}),u.error?i.newAuthErr({authId:x,source:\"auth\",level:\"error\",message:JSON.stringify(u)}):o.authorizeOauth2WithPersistOption({auth:a,token:u})};function authorizeOauth2(s){return{type:Lt,payload:s}}const authorizeOauth2WithPersistOption=s=>({authActions:o})=>{o.authorizeOauth2(s),o.persistAuthorizationIfNeeded()},authorizePassword=s=>({authActions:o})=>{let{schema:i,name:a,username:u,password:_,passwordType:w,clientId:x,clientSecret:C}=s,j={grant_type:\"password\",scope:s.scopes.join(\" \"),username:u,password:_},L={};switch(w){case\"request-body\":!function setClientIdAndSecret(s,o,i){o&&Object.assign(s,{client_id:o});i&&Object.assign(s,{client_secret:i})}(j,x,C);break;case\"basic\":L.Authorization=\"Basic \"+utils_btoa(x+\":\"+C);break;default:console.warn(`Warning: invalid passwordType ${w} was passed, not including client id and secret`)}return o.authorizeRequest({body:buildFormData(j),url:i.get(\"tokenUrl\"),name:a,headers:L,query:{},auth:s})};const authorizeApplication=s=>({authActions:o})=>{let{schema:i,scopes:a,name:u,clientId:_,clientSecret:w}=s,x={Authorization:\"Basic \"+utils_btoa(_+\":\"+w)},C={grant_type:\"client_credentials\",scope:a.join(\" \")};return o.authorizeRequest({body:buildFormData(C),name:u,url:i.get(\"tokenUrl\"),auth:s,headers:x})},authorizeAccessCodeWithFormParams=({auth:s,redirectUrl:o})=>({authActions:i})=>{let{schema:a,name:u,clientId:_,clientSecret:w,codeVerifier:x}=s,C={grant_type:\"authorization_code\",code:s.code,client_id:_,client_secret:w,redirect_uri:o,code_verifier:x};return i.authorizeRequest({body:buildFormData(C),name:u,url:a.get(\"tokenUrl\"),auth:s})},authorizeAccessCodeWithBasicAuthentication=({auth:s,redirectUrl:o})=>({authActions:i})=>{let{schema:a,name:u,clientId:_,clientSecret:w,codeVerifier:x}=s,C={Authorization:\"Basic \"+utils_btoa(_+\":\"+w)},j={grant_type:\"authorization_code\",code:s.code,client_id:_,redirect_uri:o,code_verifier:x};return i.authorizeRequest({body:buildFormData(j),name:u,url:a.get(\"tokenUrl\"),auth:s,headers:C})},authorizeRequest=s=>({fn:o,getConfigs:i,authActions:a,errActions:u,oas3Selectors:_,specSelectors:w,authSelectors:x})=>{let C,{body:j,query:L={},headers:B={},name:$,url:V,auth:U}=s,{additionalQueryStringParams:z}=x.getConfigs()||{};if(w.isOAS3()){let s=_.serverEffectiveValue(_.selectedServer());C=Nt()(V,s,!0)}else C=Nt()(V,w.url(),!0);\"object\"==typeof z&&(C.query=Object.assign({},C.query,z));const Y=C.toString();let Z=Object.assign({Accept:\"application/json, text/plain, */*\",\"Content-Type\":\"application/x-www-form-urlencoded\",\"X-Requested-With\":\"XMLHttpRequest\"},B);o.fetch({url:Y,method:\"post\",headers:Z,query:L,body:j,requestInterceptor:i().requestInterceptor,responseInterceptor:i().responseInterceptor}).then((function(s){let o=JSON.parse(s.data),i=o&&(o.error||\"\"),_=o&&(o.parseError||\"\");s.ok?i||_?u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:JSON.stringify(o)}):a.authorizeOauth2WithPersistOption({auth:U,token:o}):u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:s.statusText})})).catch((s=>{let o=new Error(s).message;if(s.response&&s.response.data){const i=s.response.data;try{const s=\"string\"==typeof i?JSON.parse(i):i;s.error&&(o+=`, error: ${s.error}`),s.error_description&&(o+=`, description: ${s.error_description}`)}catch(s){}}u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:o})}))};function configureAuth(s){return{type:Ft,payload:s}}function restoreAuthorization(s){return{type:Bt,payload:s}}const persistAuthorizationIfNeeded=()=>({authSelectors:s,getConfigs:o})=>{if(!o().persistAuthorization)return;const i=s.authorized().toJS();localStorage.setItem(\"authorized\",JSON.stringify(i))},authPopup=(s,o)=>()=>{lt.swaggerUIRedirectOauth2=o,lt.open(s)},$t={[Mt]:(s,{payload:o})=>s.set(\"showDefinitions\",o),[Rt]:(s,{payload:o})=>{let i=(0,ze.fromJS)(o),a=s.get(\"authorized\")||(0,ze.Map)();return i.entrySeq().forEach((([o,i])=>{if(!isFunc(i.getIn))return s.set(\"authorized\",a);let u=i.getIn([\"schema\",\"type\"]);if(\"apiKey\"===u||\"http\"===u)a=a.set(o,i);else if(\"basic\"===u){let s=i.getIn([\"value\",\"username\"]),u=i.getIn([\"value\",\"password\"]);a=a.setIn([o,\"value\"],{username:s,header:\"Basic \"+utils_btoa(s+\":\"+u)}),a=a.setIn([o,\"schema\"],i.get(\"schema\"))}})),s.set(\"authorized\",a)},[Lt]:(s,{payload:o})=>{let i,{auth:a,token:u}=o;a.token=Object.assign({},u),i=(0,ze.fromJS)(a);let _=s.get(\"authorized\")||(0,ze.Map)();return _=_.set(i.get(\"name\"),i),s.set(\"authorized\",_)},[Dt]:(s,{payload:o})=>{let i=s.get(\"authorized\").withMutations((s=>{o.forEach((o=>{s.delete(o)}))}));return s.set(\"authorized\",i)},[Ft]:(s,{payload:o})=>s.set(\"configs\",o),[Bt]:(s,{payload:o})=>s.set(\"authorized\",(0,ze.fromJS)(o.authorized))};function assertIsFunction(s,o=\"expected a function, instead received \"+typeof s){if(\"function\"!=typeof s)throw new TypeError(o)}var ensureIsArray=s=>Array.isArray(s)?s:[s];function getDependencies(s){const o=Array.isArray(s[0])?s[0]:s;return function assertIsArrayOfFunctions(s,o=\"expected all items to be functions, instead received the following types: \"){if(!s.every((s=>\"function\"==typeof s))){const i=s.map((s=>\"function\"==typeof s?`function ${s.name||\"unnamed\"}()`:typeof s)).join(\", \");throw new TypeError(`${o}[${i}]`)}}(o,\"createSelector expects all input-selectors to be functions, but received the following types: \"),o}Symbol(),Object.getPrototypeOf({});var qt=\"undefined\"!=typeof WeakRef?WeakRef:class{constructor(s){this.value=s}deref(){return this.value}};function weakMapMemoize(s,o={}){let i={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:a}=o;let u,_=0;function memoized(){let o=i;const{length:w}=arguments;for(let s=0,i=w;s<i;s++){const i=arguments[s];if(\"function\"==typeof i||\"object\"==typeof i&&null!==i){let s=o.o;null===s&&(o.o=s=new WeakMap);const a=s.get(i);void 0===a?(o={s:0,v:void 0,o:null,p:null},s.set(i,o)):o=a}else{let s=o.p;null===s&&(o.p=s=new Map);const a=s.get(i);void 0===a?(o={s:0,v:void 0,o:null,p:null},s.set(i,o)):o=a}}const x=o;let C;if(1===o.s)C=o.v;else if(C=s.apply(null,arguments),_++,a){const s=u?.deref?.()??u;null!=s&&a(s,C)&&(C=s,0!==_&&_--);u=\"object\"==typeof C&&null!==C||\"function\"==typeof C?new qt(C):C}return x.s=1,x.v=C,C}return memoized.clearCache=()=>{i={s:0,v:void 0,o:null,p:null},memoized.resetResultsCount()},memoized.resultsCount=()=>_,memoized.resetResultsCount=()=>{_=0},memoized}function createSelectorCreator(s,...o){const i=\"function\"==typeof s?{memoize:s,memoizeOptions:o}:s,createSelector2=(...s)=>{let o,a=0,u=0,_={},w=s.pop();\"object\"==typeof w&&(_=w,w=s.pop()),assertIsFunction(w,`createSelector expects an output function after the inputs, but received: [${typeof w}]`);const x={...i,..._},{memoize:C,memoizeOptions:j=[],argsMemoize:L=weakMapMemoize,argsMemoizeOptions:B=[],devModeChecks:$={}}=x,V=ensureIsArray(j),U=ensureIsArray(B),z=getDependencies(s),Y=C((function recomputationWrapper(){return a++,w.apply(null,arguments)}),...V);const Z=L((function dependenciesChecker(){u++;const s=function collectInputSelectorResults(s,o){const i=[],{length:a}=s;for(let u=0;u<a;u++)i.push(s[u].apply(null,o));return i}(z,arguments);return o=Y.apply(null,s),o}),...U);return Object.assign(Z,{resultFunc:w,memoizedResultFunc:Y,dependencies:z,dependencyRecomputations:()=>u,resetDependencyRecomputations:()=>{u=0},lastResult:()=>o,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:C,argsMemoize:L})};return Object.assign(createSelector2,{withTypes:()=>createSelector2}),createSelector2}var Vt=createSelectorCreator(weakMapMemoize),Ut=Object.assign(((s,o=Vt)=>{!function assertIsObject(s,o=\"expected an object, instead received \"+typeof s){if(\"object\"!=typeof s)throw new TypeError(o)}(s,\"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a \"+typeof s);const i=Object.keys(s);return o(i.map((o=>s[o])),((...s)=>s.reduce(((s,o,a)=>(s[i[a]]=o,s)),{})))}),{withTypes:()=>Ut});const state=s=>s,zt=Vt(state,(s=>s.get(\"showDefinitions\"))),Wt=Vt(state,(()=>({specSelectors:s})=>{let o=s.securityDefinitions()||(0,ze.Map)({}),i=(0,ze.List)();return o.entrySeq().forEach((([s,o])=>{let a=(0,ze.Map)();a=a.set(s,o),i=i.push(a)})),i})),selectAuthPath=(s,o)=>({specSelectors:s})=>(0,ze.List)(s.isOAS3()?[\"components\",\"securitySchemes\",o]:[\"securityDefinitions\",o]),getDefinitionsByNames=(s,o)=>({specSelectors:s})=>{console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\");let i=s.securityDefinitions(),a=(0,ze.List)();return o.valueSeq().forEach((s=>{let o=(0,ze.Map)();s.entrySeq().forEach((([s,a])=>{let u,_=i.get(s);\"oauth2\"===_.get(\"type\")&&a.size&&(u=_.get(\"scopes\"),u.keySeq().forEach((s=>{a.contains(s)||(u=u.delete(s))})),_=_.set(\"allowedScopes\",u)),o=o.set(s,_)})),a=a.push(o)})),a},definitionsForRequirements=(s,o=(0,ze.List)())=>({authSelectors:s})=>{const i=s.definitionsToAuthorize()||(0,ze.List)();let a=(0,ze.List)();return i.forEach((s=>{let i=o.find((o=>o.get(s.keySeq().first())));i&&(s.forEach(((o,a)=>{if(\"oauth2\"===o.get(\"type\")){const u=i.get(a);let _=o.get(\"scopes\");ze.List.isList(u)&&ze.Map.isMap(_)&&(_.keySeq().forEach((s=>{u.contains(s)||(_=_.delete(s))})),s=s.set(a,o.set(\"scopes\",_)))}})),a=a.push(s))})),a},Jt=Vt(state,(s=>s.get(\"authorized\")||(0,ze.Map)())),isAuthorized=(s,o)=>({authSelectors:s})=>{let i=s.authorized();return ze.List.isList(o)?!!o.toJS().filter((s=>-1===Object.keys(s).map((s=>!!i.get(s))).indexOf(!1))).length:null},Ht=Vt(state,(s=>s.get(\"configs\"))),execute=(s,{authSelectors:o,specSelectors:i})=>({path:a,method:u,operation:_,extras:w})=>{let x={authorized:o.authorized()&&o.authorized().toJS(),definitions:i.securityDefinitions()&&i.securityDefinitions().toJS(),specSecurity:i.security()&&i.security().toJS()};return s({path:a,method:u,operation:_,securities:x,...w})},loaded=(s,o)=>i=>{const{getConfigs:a,authActions:u}=o,_=a();if(s(i),_.persistAuthorization){const s=localStorage.getItem(\"authorized\");s&&u.restoreAuthorization({authorized:JSON.parse(s)})}},wrap_actions_authorize=(s,o)=>i=>{s(i);if(o.getConfigs().persistAuthorization)try{const[{schema:s,value:o}]=Object.values(i),a=\"apiKey\"===s.get(\"type\"),u=\"cookie\"===s.get(\"in\");a&&u&&(document.cookie=`${s.get(\"name\")}=${o}; SameSite=None; Secure`)}catch(s){console.error(\"Error persisting cookie based apiKey in document.cookie.\",s)}},wrap_actions_logout=(s,o)=>i=>{const a=o.getConfigs(),u=o.authSelectors.authorized();try{a.persistAuthorization&&Array.isArray(i)&&i.forEach((s=>{const o=u.get(s,{}),i=\"apiKey\"===o.getIn([\"schema\",\"type\"]),a=\"cookie\"===o.getIn([\"schema\",\"in\"]);if(i&&a){const s=o.getIn([\"schema\",\"name\"]);document.cookie=`${s}=; Max-Age=-99999999`}}))}catch(s){console.error(\"Error deleting cookie based apiKey from document.cookie.\",s)}s(i)};var Kt=__webpack_require__(90179),Gt=__webpack_require__.n(Kt);class LockAuthIcon extends Re.Component{mapStateToProps(s,o){return{state:s,ownProps:Gt()(o,Object.keys(o.getSystem()))}}render(){const{getComponent:s,ownProps:o}=this.props,i=s(\"LockIcon\");return Re.createElement(i,o)}}const Yt=LockAuthIcon;class UnlockAuthIcon extends Re.Component{mapStateToProps(s,o){return{state:s,ownProps:Gt()(o,Object.keys(o.getSystem()))}}render(){const{getComponent:s,ownProps:o}=this.props,i=s(\"UnlockIcon\");return Re.createElement(i,o)}}const Xt=UnlockAuthIcon;function auth(){return{afterLoad(s){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=s.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=preauthorizeApiKey.bind(null,s),this.rootInjects.preauthorizeBasic=preauthorizeBasic.bind(null,s)},components:{LockAuthIcon:Yt,UnlockAuthIcon:Xt,LockAuthOperationIcon:Yt,UnlockAuthOperationIcon:Xt},statePlugins:{auth:{reducers:$t,actions:o,selectors:a,wrapActions:{authorize:wrap_actions_authorize,logout:wrap_actions_logout}},configs:{wrapActions:{loaded}},spec:{wrapActions:{execute}}}}}function preauthorizeBasic(s,o,i,a){const{authActions:{authorize:u},specSelectors:{specJson:_,isOAS3:w}}=s,x=w()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],C=_().getIn([...x,o]);return C?u({[o]:{value:{username:i,password:a},schema:C.toJS()}}):null}function preauthorizeApiKey(s,o,i){const{authActions:{authorize:a},specSelectors:{specJson:u,isOAS3:_}}=s,w=_()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],x=u().getIn([...w,o]);return x?a({[o]:{value:i,schema:x.toJS()}}):null}function isNothing(s){return null==s}var Qt=function repeat(s,o){var i,a=\"\";for(i=0;i<o;i+=1)a+=s;return a},Zt=function isNegativeZero(s){return 0===s&&Number.NEGATIVE_INFINITY===1/s},er={isNothing,isObject:function js_yaml_isObject(s){return\"object\"==typeof s&&null!==s},toArray:function toArray(s){return Array.isArray(s)?s:isNothing(s)?[]:[s]},repeat:Qt,isNegativeZero:Zt,extend:function extend(s,o){var i,a,u,_;if(o)for(i=0,a=(_=Object.keys(o)).length;i<a;i+=1)s[u=_[i]]=o[u];return s}};function formatError(s,o){var i=\"\",a=s.reason||\"(unknown reason)\";return s.mark?(s.mark.name&&(i+='in \"'+s.mark.name+'\" '),i+=\"(\"+(s.mark.line+1)+\":\"+(s.mark.column+1)+\")\",!o&&s.mark.snippet&&(i+=\"\\n\\n\"+s.mark.snippet),a+\" \"+i):a}function YAMLException$1(s,o){Error.call(this),this.name=\"YAMLException\",this.reason=s,this.mark=o,this.message=formatError(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||\"\"}YAMLException$1.prototype=Object.create(Error.prototype),YAMLException$1.prototype.constructor=YAMLException$1,YAMLException$1.prototype.toString=function toString(s){return this.name+\": \"+formatError(this,s)};var tr=YAMLException$1;function getLine(s,o,i,a,u){var _=\"\",w=\"\",x=Math.floor(u/2)-1;return a-o>x&&(o=a-x+(_=\" ... \").length),i-a>x&&(i=a+x-(w=\" ...\").length),{str:_+s.slice(o,i).replace(/\\t/g,\"→\")+w,pos:a-o+_.length}}function padStart(s,o){return er.repeat(\" \",o-s.length)+s}var rr=function makeSnippet(s,o){if(o=Object.create(o||null),!s.buffer)return null;o.maxLength||(o.maxLength=79),\"number\"!=typeof o.indent&&(o.indent=1),\"number\"!=typeof o.linesBefore&&(o.linesBefore=3),\"number\"!=typeof o.linesAfter&&(o.linesAfter=2);for(var i,a=/\\r?\\n|\\r|\\0/g,u=[0],_=[],w=-1;i=a.exec(s.buffer);)_.push(i.index),u.push(i.index+i[0].length),s.position<=i.index&&w<0&&(w=u.length-2);w<0&&(w=u.length-1);var x,C,j=\"\",L=Math.min(s.line+o.linesAfter,_.length).toString().length,B=o.maxLength-(o.indent+L+3);for(x=1;x<=o.linesBefore&&!(w-x<0);x++)C=getLine(s.buffer,u[w-x],_[w-x],s.position-(u[w]-u[w-x]),B),j=er.repeat(\" \",o.indent)+padStart((s.line-x+1).toString(),L)+\" | \"+C.str+\"\\n\"+j;for(C=getLine(s.buffer,u[w],_[w],s.position,B),j+=er.repeat(\" \",o.indent)+padStart((s.line+1).toString(),L)+\" | \"+C.str+\"\\n\",j+=er.repeat(\"-\",o.indent+L+3+C.pos)+\"^\\n\",x=1;x<=o.linesAfter&&!(w+x>=_.length);x++)C=getLine(s.buffer,u[w+x],_[w+x],s.position-(u[w]-u[w+x]),B),j+=er.repeat(\" \",o.indent)+padStart((s.line+x+1).toString(),L)+\" | \"+C.str+\"\\n\";return j.replace(/\\n$/,\"\")},nr=[\"kind\",\"multi\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"representName\",\"defaultStyle\",\"styleAliases\"],sr=[\"scalar\",\"sequence\",\"mapping\"];var ir=function Type$1(s,o){if(o=o||{},Object.keys(o).forEach((function(o){if(-1===nr.indexOf(o))throw new tr('Unknown option \"'+o+'\" is met in definition of \"'+s+'\" YAML type.')})),this.options=o,this.tag=s,this.kind=o.kind||null,this.resolve=o.resolve||function(){return!0},this.construct=o.construct||function(s){return s},this.instanceOf=o.instanceOf||null,this.predicate=o.predicate||null,this.represent=o.represent||null,this.representName=o.representName||null,this.defaultStyle=o.defaultStyle||null,this.multi=o.multi||!1,this.styleAliases=function compileStyleAliases(s){var o={};return null!==s&&Object.keys(s).forEach((function(i){s[i].forEach((function(s){o[String(s)]=i}))})),o}(o.styleAliases||null),-1===sr.indexOf(this.kind))throw new tr('Unknown kind \"'+this.kind+'\" is specified for \"'+s+'\" YAML type.')};function compileList(s,o){var i=[];return s[o].forEach((function(s){var o=i.length;i.forEach((function(i,a){i.tag===s.tag&&i.kind===s.kind&&i.multi===s.multi&&(o=a)})),i[o]=s})),i}function Schema$1(s){return this.extend(s)}Schema$1.prototype.extend=function extend(s){var o=[],i=[];if(s instanceof ir)i.push(s);else if(Array.isArray(s))i=i.concat(s);else{if(!s||!Array.isArray(s.implicit)&&!Array.isArray(s.explicit))throw new tr(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");s.implicit&&(o=o.concat(s.implicit)),s.explicit&&(i=i.concat(s.explicit))}o.forEach((function(s){if(!(s instanceof ir))throw new tr(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");if(s.loadKind&&\"scalar\"!==s.loadKind)throw new tr(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");if(s.multi)throw new tr(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\")})),i.forEach((function(s){if(!(s instanceof ir))throw new tr(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\")}));var a=Object.create(Schema$1.prototype);return a.implicit=(this.implicit||[]).concat(o),a.explicit=(this.explicit||[]).concat(i),a.compiledImplicit=compileList(a,\"implicit\"),a.compiledExplicit=compileList(a,\"explicit\"),a.compiledTypeMap=function compileMap(){var s,o,i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function collectType(s){s.multi?(i.multi[s.kind].push(s),i.multi.fallback.push(s)):i[s.kind][s.tag]=i.fallback[s.tag]=s}for(s=0,o=arguments.length;s<o;s+=1)arguments[s].forEach(collectType);return i}(a.compiledImplicit,a.compiledExplicit),a};var ar=Schema$1,cr=new ir(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(s){return null!==s?s:\"\"}}),lr=new ir(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(s){return null!==s?s:[]}}),ur=new ir(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(s){return null!==s?s:{}}}),pr=new ar({explicit:[cr,lr,ur]});var dr=new ir(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:function resolveYamlNull(s){if(null===s)return!0;var o=s.length;return 1===o&&\"~\"===s||4===o&&(\"null\"===s||\"Null\"===s||\"NULL\"===s)},construct:function constructYamlNull(){return null},predicate:function isNull(s){return null===s},represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"},empty:function(){return\"\"}},defaultStyle:\"lowercase\"});var fr=new ir(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:function resolveYamlBoolean(s){if(null===s)return!1;var o=s.length;return 4===o&&(\"true\"===s||\"True\"===s||\"TRUE\"===s)||5===o&&(\"false\"===s||\"False\"===s||\"FALSE\"===s)},construct:function constructYamlBoolean(s){return\"true\"===s||\"True\"===s||\"TRUE\"===s},predicate:function isBoolean(s){return\"[object Boolean]\"===Object.prototype.toString.call(s)},represent:{lowercase:function(s){return s?\"true\":\"false\"},uppercase:function(s){return s?\"TRUE\":\"FALSE\"},camelcase:function(s){return s?\"True\":\"False\"}},defaultStyle:\"lowercase\"});function isOctCode(s){return 48<=s&&s<=55}function isDecCode(s){return 48<=s&&s<=57}var mr=new ir(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:function resolveYamlInteger(s){if(null===s)return!1;var o,i,a=s.length,u=0,_=!1;if(!a)return!1;if(\"-\"!==(o=s[u])&&\"+\"!==o||(o=s[++u]),\"0\"===o){if(u+1===a)return!0;if(\"b\"===(o=s[++u])){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(\"0\"!==o&&\"1\"!==o)return!1;_=!0}return _&&\"_\"!==o}if(\"x\"===o){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(!(48<=(i=s.charCodeAt(u))&&i<=57||65<=i&&i<=70||97<=i&&i<=102))return!1;_=!0}return _&&\"_\"!==o}if(\"o\"===o){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(!isOctCode(s.charCodeAt(u)))return!1;_=!0}return _&&\"_\"!==o}}if(\"_\"===o)return!1;for(;u<a;u++)if(\"_\"!==(o=s[u])){if(!isDecCode(s.charCodeAt(u)))return!1;_=!0}return!(!_||\"_\"===o)},construct:function constructYamlInteger(s){var o,i=s,a=1;if(-1!==i.indexOf(\"_\")&&(i=i.replace(/_/g,\"\")),\"-\"!==(o=i[0])&&\"+\"!==o||(\"-\"===o&&(a=-1),o=(i=i.slice(1))[0]),\"0\"===i)return 0;if(\"0\"===o){if(\"b\"===i[1])return a*parseInt(i.slice(2),2);if(\"x\"===i[1])return a*parseInt(i.slice(2),16);if(\"o\"===i[1])return a*parseInt(i.slice(2),8)}return a*parseInt(i,10)},predicate:function isInteger(s){return\"[object Number]\"===Object.prototype.toString.call(s)&&s%1==0&&!er.isNegativeZero(s)},represent:{binary:function(s){return s>=0?\"0b\"+s.toString(2):\"-0b\"+s.toString(2).slice(1)},octal:function(s){return s>=0?\"0o\"+s.toString(8):\"-0o\"+s.toString(8).slice(1)},decimal:function(s){return s.toString(10)},hexadecimal:function(s){return s>=0?\"0x\"+s.toString(16).toUpperCase():\"-0x\"+s.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}}),gr=new RegExp(\"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");var yr=/^[-+]?[0-9]+e/;var vr=new ir(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:function resolveYamlFloat(s){return null!==s&&!(!gr.test(s)||\"_\"===s[s.length-1])},construct:function constructYamlFloat(s){var o,i;return i=\"-\"===(o=s.replace(/_/g,\"\").toLowerCase())[0]?-1:1,\"+-\".indexOf(o[0])>=0&&(o=o.slice(1)),\".inf\"===o?1===i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:\".nan\"===o?NaN:i*parseFloat(o,10)},predicate:function isFloat(s){return\"[object Number]\"===Object.prototype.toString.call(s)&&(s%1!=0||er.isNegativeZero(s))},represent:function representYamlFloat(s,o){var i;if(isNaN(s))switch(o){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===s)switch(o){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===s)switch(o){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(er.isNegativeZero(s))return\"-0.0\";return i=s.toString(10),yr.test(i)?i.replace(\"e\",\".e\"):i},defaultStyle:\"lowercase\"}),br=pr.extend({implicit:[dr,fr,mr,vr]}),_r=br,Sr=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),Er=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");var wr=new ir(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:function resolveYamlTimestamp(s){return null!==s&&(null!==Sr.exec(s)||null!==Er.exec(s))},construct:function constructYamlTimestamp(s){var o,i,a,u,_,w,x,C,j=0,L=null;if(null===(o=Sr.exec(s))&&(o=Er.exec(s)),null===o)throw new Error(\"Date resolve error\");if(i=+o[1],a=+o[2]-1,u=+o[3],!o[4])return new Date(Date.UTC(i,a,u));if(_=+o[4],w=+o[5],x=+o[6],o[7]){for(j=o[7].slice(0,3);j.length<3;)j+=\"0\";j=+j}return o[9]&&(L=6e4*(60*+o[10]+ +(o[11]||0)),\"-\"===o[9]&&(L=-L)),C=new Date(Date.UTC(i,a,u,_,w,x,j)),L&&C.setTime(C.getTime()-L),C},instanceOf:Date,represent:function representYamlTimestamp(s){return s.toISOString()}});var xr=new ir(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:function resolveYamlMerge(s){return\"<<\"===s||null===s}}),kr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";var Or=new ir(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:function resolveYamlBinary(s){if(null===s)return!1;var o,i,a=0,u=s.length,_=kr;for(i=0;i<u;i++)if(!((o=_.indexOf(s.charAt(i)))>64)){if(o<0)return!1;a+=6}return a%8==0},construct:function constructYamlBinary(s){var o,i,a=s.replace(/[\\r\\n=]/g,\"\"),u=a.length,_=kr,w=0,x=[];for(o=0;o<u;o++)o%4==0&&o&&(x.push(w>>16&255),x.push(w>>8&255),x.push(255&w)),w=w<<6|_.indexOf(a.charAt(o));return 0===(i=u%4*6)?(x.push(w>>16&255),x.push(w>>8&255),x.push(255&w)):18===i?(x.push(w>>10&255),x.push(w>>2&255)):12===i&&x.push(w>>4&255),new Uint8Array(x)},predicate:function isBinary(s){return\"[object Uint8Array]\"===Object.prototype.toString.call(s)},represent:function representYamlBinary(s){var o,i,a=\"\",u=0,_=s.length,w=kr;for(o=0;o<_;o++)o%3==0&&o&&(a+=w[u>>18&63],a+=w[u>>12&63],a+=w[u>>6&63],a+=w[63&u]),u=(u<<8)+s[o];return 0===(i=_%3)?(a+=w[u>>18&63],a+=w[u>>12&63],a+=w[u>>6&63],a+=w[63&u]):2===i?(a+=w[u>>10&63],a+=w[u>>4&63],a+=w[u<<2&63],a+=w[64]):1===i&&(a+=w[u>>2&63],a+=w[u<<4&63],a+=w[64],a+=w[64]),a}}),Cr=Object.prototype.hasOwnProperty,Ar=Object.prototype.toString;var jr=new ir(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:function resolveYamlOmap(s){if(null===s)return!0;var o,i,a,u,_,w=[],x=s;for(o=0,i=x.length;o<i;o+=1){if(a=x[o],_=!1,\"[object Object]\"!==Ar.call(a))return!1;for(u in a)if(Cr.call(a,u)){if(_)return!1;_=!0}if(!_)return!1;if(-1!==w.indexOf(u))return!1;w.push(u)}return!0},construct:function constructYamlOmap(s){return null!==s?s:[]}}),Ir=Object.prototype.toString;var Pr=new ir(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:function resolveYamlPairs(s){if(null===s)return!0;var o,i,a,u,_,w=s;for(_=new Array(w.length),o=0,i=w.length;o<i;o+=1){if(a=w[o],\"[object Object]\"!==Ir.call(a))return!1;if(1!==(u=Object.keys(a)).length)return!1;_[o]=[u[0],a[u[0]]]}return!0},construct:function constructYamlPairs(s){if(null===s)return[];var o,i,a,u,_,w=s;for(_=new Array(w.length),o=0,i=w.length;o<i;o+=1)a=w[o],u=Object.keys(a),_[o]=[u[0],a[u[0]]];return _}}),Tr=Object.prototype.hasOwnProperty;var Nr=new ir(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:function resolveYamlSet(s){if(null===s)return!0;var o,i=s;for(o in i)if(Tr.call(i,o)&&null!==i[o])return!1;return!0},construct:function constructYamlSet(s){return null!==s?s:{}}}),Mr=_r.extend({implicit:[wr,xr],explicit:[Or,jr,Pr,Nr]}),Rr=Object.prototype.hasOwnProperty,Dr=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,Lr=/[\\x85\\u2028\\u2029]/,Fr=/[,\\[\\]\\{\\}]/,Br=/^(?:!|!!|![a-z\\-]+!)$/i,$r=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function _class(s){return Object.prototype.toString.call(s)}function is_EOL(s){return 10===s||13===s}function is_WHITE_SPACE(s){return 9===s||32===s}function is_WS_OR_EOL(s){return 9===s||32===s||10===s||13===s}function is_FLOW_INDICATOR(s){return 44===s||91===s||93===s||123===s||125===s}function fromHexCode(s){var o;return 48<=s&&s<=57?s-48:97<=(o=32|s)&&o<=102?o-97+10:-1}function simpleEscapeSequence(s){return 48===s?\"\\0\":97===s?\"\u0007\":98===s?\"\\b\":116===s||9===s?\"\\t\":110===s?\"\\n\":118===s?\"\\v\":102===s?\"\\f\":114===s?\"\\r\":101===s?\"\u001b\":32===s?\" \":34===s?'\"':47===s?\"/\":92===s?\"\\\\\":78===s?\"\":95===s?\" \":76===s?\"\\u2028\":80===s?\"\\u2029\":\"\"}function charFromCodepoint(s){return s<=65535?String.fromCharCode(s):String.fromCharCode(55296+(s-65536>>10),56320+(s-65536&1023))}for(var qr=new Array(256),Vr=new Array(256),Ur=0;Ur<256;Ur++)qr[Ur]=simpleEscapeSequence(Ur)?1:0,Vr[Ur]=simpleEscapeSequence(Ur);function State$1(s,o){this.input=s,this.filename=o.filename||null,this.schema=o.schema||Mr,this.onWarning=o.onWarning||null,this.legacy=o.legacy||!1,this.json=o.json||!1,this.listener=o.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=s.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function generateError(s,o){var i={name:s.filename,buffer:s.input.slice(0,-1),position:s.position,line:s.line,column:s.position-s.lineStart};return i.snippet=rr(i),new tr(o,i)}function throwError(s,o){throw generateError(s,o)}function throwWarning(s,o){s.onWarning&&s.onWarning.call(null,generateError(s,o))}var zr={YAML:function handleYamlDirective(s,o,i){var a,u,_;null!==s.version&&throwError(s,\"duplication of %YAML directive\"),1!==i.length&&throwError(s,\"YAML directive accepts exactly one argument\"),null===(a=/^([0-9]+)\\.([0-9]+)$/.exec(i[0]))&&throwError(s,\"ill-formed argument of the YAML directive\"),u=parseInt(a[1],10),_=parseInt(a[2],10),1!==u&&throwError(s,\"unacceptable YAML version of the document\"),s.version=i[0],s.checkLineBreaks=_<2,1!==_&&2!==_&&throwWarning(s,\"unsupported YAML version of the document\")},TAG:function handleTagDirective(s,o,i){var a,u;2!==i.length&&throwError(s,\"TAG directive accepts exactly two arguments\"),a=i[0],u=i[1],Br.test(a)||throwError(s,\"ill-formed tag handle (first argument) of the TAG directive\"),Rr.call(s.tagMap,a)&&throwError(s,'there is a previously declared suffix for \"'+a+'\" tag handle'),$r.test(u)||throwError(s,\"ill-formed tag prefix (second argument) of the TAG directive\");try{u=decodeURIComponent(u)}catch(o){throwError(s,\"tag prefix is malformed: \"+u)}s.tagMap[a]=u}};function captureSegment(s,o,i,a){var u,_,w,x;if(o<i){if(x=s.input.slice(o,i),a)for(u=0,_=x.length;u<_;u+=1)9===(w=x.charCodeAt(u))||32<=w&&w<=1114111||throwError(s,\"expected valid JSON character\");else Dr.test(x)&&throwError(s,\"the stream contains non-printable characters\");s.result+=x}}function mergeMappings(s,o,i,a){var u,_,w,x;for(er.isObject(i)||throwError(s,\"cannot merge mappings; the provided source object is unacceptable\"),w=0,x=(u=Object.keys(i)).length;w<x;w+=1)_=u[w],Rr.call(o,_)||(o[_]=i[_],a[_]=!0)}function storeMappingPair(s,o,i,a,u,_,w,x,C){var j,L;if(Array.isArray(u))for(j=0,L=(u=Array.prototype.slice.call(u)).length;j<L;j+=1)Array.isArray(u[j])&&throwError(s,\"nested arrays are not supported inside keys\"),\"object\"==typeof u&&\"[object Object]\"===_class(u[j])&&(u[j]=\"[object Object]\");if(\"object\"==typeof u&&\"[object Object]\"===_class(u)&&(u=\"[object Object]\"),u=String(u),null===o&&(o={}),\"tag:yaml.org,2002:merge\"===a)if(Array.isArray(_))for(j=0,L=_.length;j<L;j+=1)mergeMappings(s,o,_[j],i);else mergeMappings(s,o,_,i);else s.json||Rr.call(i,u)||!Rr.call(o,u)||(s.line=w||s.line,s.lineStart=x||s.lineStart,s.position=C||s.position,throwError(s,\"duplicated mapping key\")),\"__proto__\"===u?Object.defineProperty(o,u,{configurable:!0,enumerable:!0,writable:!0,value:_}):o[u]=_,delete i[u];return o}function readLineBreak(s){var o;10===(o=s.input.charCodeAt(s.position))?s.position++:13===o?(s.position++,10===s.input.charCodeAt(s.position)&&s.position++):throwError(s,\"a line break is expected\"),s.line+=1,s.lineStart=s.position,s.firstTabInLine=-1}function skipSeparationSpace(s,o,i){for(var a=0,u=s.input.charCodeAt(s.position);0!==u;){for(;is_WHITE_SPACE(u);)9===u&&-1===s.firstTabInLine&&(s.firstTabInLine=s.position),u=s.input.charCodeAt(++s.position);if(o&&35===u)do{u=s.input.charCodeAt(++s.position)}while(10!==u&&13!==u&&0!==u);if(!is_EOL(u))break;for(readLineBreak(s),u=s.input.charCodeAt(s.position),a++,s.lineIndent=0;32===u;)s.lineIndent++,u=s.input.charCodeAt(++s.position)}return-1!==i&&0!==a&&s.lineIndent<i&&throwWarning(s,\"deficient indentation\"),a}function testDocumentSeparator(s){var o,i=s.position;return!(45!==(o=s.input.charCodeAt(i))&&46!==o||o!==s.input.charCodeAt(i+1)||o!==s.input.charCodeAt(i+2)||(i+=3,0!==(o=s.input.charCodeAt(i))&&!is_WS_OR_EOL(o)))}function writeFoldedLines(s,o){1===o?s.result+=\" \":o>1&&(s.result+=er.repeat(\"\\n\",o-1))}function readBlockSequence(s,o){var i,a,u=s.tag,_=s.anchor,w=[],x=!1;if(-1!==s.firstTabInLine)return!1;for(null!==s.anchor&&(s.anchorMap[s.anchor]=w),a=s.input.charCodeAt(s.position);0!==a&&(-1!==s.firstTabInLine&&(s.position=s.firstTabInLine,throwError(s,\"tab characters must not be used in indentation\")),45===a)&&is_WS_OR_EOL(s.input.charCodeAt(s.position+1));)if(x=!0,s.position++,skipSeparationSpace(s,!0,-1)&&s.lineIndent<=o)w.push(null),a=s.input.charCodeAt(s.position);else if(i=s.line,composeNode(s,o,3,!1,!0),w.push(s.result),skipSeparationSpace(s,!0,-1),a=s.input.charCodeAt(s.position),(s.line===i||s.lineIndent>o)&&0!==a)throwError(s,\"bad indentation of a sequence entry\");else if(s.lineIndent<o)break;return!!x&&(s.tag=u,s.anchor=_,s.kind=\"sequence\",s.result=w,!0)}function readTagProperty(s){var o,i,a,u,_=!1,w=!1;if(33!==(u=s.input.charCodeAt(s.position)))return!1;if(null!==s.tag&&throwError(s,\"duplication of a tag property\"),60===(u=s.input.charCodeAt(++s.position))?(_=!0,u=s.input.charCodeAt(++s.position)):33===u?(w=!0,i=\"!!\",u=s.input.charCodeAt(++s.position)):i=\"!\",o=s.position,_){do{u=s.input.charCodeAt(++s.position)}while(0!==u&&62!==u);s.position<s.length?(a=s.input.slice(o,s.position),u=s.input.charCodeAt(++s.position)):throwError(s,\"unexpected end of the stream within a verbatim tag\")}else{for(;0!==u&&!is_WS_OR_EOL(u);)33===u&&(w?throwError(s,\"tag suffix cannot contain exclamation marks\"):(i=s.input.slice(o-1,s.position+1),Br.test(i)||throwError(s,\"named tag handle cannot contain such characters\"),w=!0,o=s.position+1)),u=s.input.charCodeAt(++s.position);a=s.input.slice(o,s.position),Fr.test(a)&&throwError(s,\"tag suffix cannot contain flow indicator characters\")}a&&!$r.test(a)&&throwError(s,\"tag name cannot contain such characters: \"+a);try{a=decodeURIComponent(a)}catch(o){throwError(s,\"tag name is malformed: \"+a)}return _?s.tag=a:Rr.call(s.tagMap,i)?s.tag=s.tagMap[i]+a:\"!\"===i?s.tag=\"!\"+a:\"!!\"===i?s.tag=\"tag:yaml.org,2002:\"+a:throwError(s,'undeclared tag handle \"'+i+'\"'),!0}function readAnchorProperty(s){var o,i;if(38!==(i=s.input.charCodeAt(s.position)))return!1;for(null!==s.anchor&&throwError(s,\"duplication of an anchor property\"),i=s.input.charCodeAt(++s.position),o=s.position;0!==i&&!is_WS_OR_EOL(i)&&!is_FLOW_INDICATOR(i);)i=s.input.charCodeAt(++s.position);return s.position===o&&throwError(s,\"name of an anchor node must contain at least one character\"),s.anchor=s.input.slice(o,s.position),!0}function composeNode(s,o,i,a,u){var _,w,x,C,j,L,B,$,V,U=1,z=!1,Y=!1;if(null!==s.listener&&s.listener(\"open\",s),s.tag=null,s.anchor=null,s.kind=null,s.result=null,_=w=x=4===i||3===i,a&&skipSeparationSpace(s,!0,-1)&&(z=!0,s.lineIndent>o?U=1:s.lineIndent===o?U=0:s.lineIndent<o&&(U=-1)),1===U)for(;readTagProperty(s)||readAnchorProperty(s);)skipSeparationSpace(s,!0,-1)?(z=!0,x=_,s.lineIndent>o?U=1:s.lineIndent===o?U=0:s.lineIndent<o&&(U=-1)):x=!1;if(x&&(x=z||u),1!==U&&4!==i||($=1===i||2===i?o:o+1,V=s.position-s.lineStart,1===U?x&&(readBlockSequence(s,V)||function readBlockMapping(s,o,i){var a,u,_,w,x,C,j,L=s.tag,B=s.anchor,$={},V=Object.create(null),U=null,z=null,Y=null,Z=!1,ee=!1;if(-1!==s.firstTabInLine)return!1;for(null!==s.anchor&&(s.anchorMap[s.anchor]=$),j=s.input.charCodeAt(s.position);0!==j;){if(Z||-1===s.firstTabInLine||(s.position=s.firstTabInLine,throwError(s,\"tab characters must not be used in indentation\")),a=s.input.charCodeAt(s.position+1),_=s.line,63!==j&&58!==j||!is_WS_OR_EOL(a)){if(w=s.line,x=s.lineStart,C=s.position,!composeNode(s,i,2,!1,!0))break;if(s.line===_){for(j=s.input.charCodeAt(s.position);is_WHITE_SPACE(j);)j=s.input.charCodeAt(++s.position);if(58===j)is_WS_OR_EOL(j=s.input.charCodeAt(++s.position))||throwError(s,\"a whitespace character is expected after the key-value separator within a block mapping\"),Z&&(storeMappingPair(s,$,V,U,z,null,w,x,C),U=z=Y=null),ee=!0,Z=!1,u=!1,U=s.tag,z=s.result;else{if(!ee)return s.tag=L,s.anchor=B,!0;throwError(s,\"can not read an implicit mapping pair; a colon is missed\")}}else{if(!ee)return s.tag=L,s.anchor=B,!0;throwError(s,\"can not read a block mapping entry; a multiline key may not be an implicit key\")}}else 63===j?(Z&&(storeMappingPair(s,$,V,U,z,null,w,x,C),U=z=Y=null),ee=!0,Z=!0,u=!0):Z?(Z=!1,u=!0):throwError(s,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),s.position+=1,j=a;if((s.line===_||s.lineIndent>o)&&(Z&&(w=s.line,x=s.lineStart,C=s.position),composeNode(s,o,4,!0,u)&&(Z?z=s.result:Y=s.result),Z||(storeMappingPair(s,$,V,U,z,Y,w,x,C),U=z=Y=null),skipSeparationSpace(s,!0,-1),j=s.input.charCodeAt(s.position)),(s.line===_||s.lineIndent>o)&&0!==j)throwError(s,\"bad indentation of a mapping entry\");else if(s.lineIndent<o)break}return Z&&storeMappingPair(s,$,V,U,z,null,w,x,C),ee&&(s.tag=L,s.anchor=B,s.kind=\"mapping\",s.result=$),ee}(s,V,$))||function readFlowCollection(s,o){var i,a,u,_,w,x,C,j,L,B,$,V,U=!0,z=s.tag,Y=s.anchor,Z=Object.create(null);if(91===(V=s.input.charCodeAt(s.position)))w=93,j=!1,_=[];else{if(123!==V)return!1;w=125,j=!0,_={}}for(null!==s.anchor&&(s.anchorMap[s.anchor]=_),V=s.input.charCodeAt(++s.position);0!==V;){if(skipSeparationSpace(s,!0,o),(V=s.input.charCodeAt(s.position))===w)return s.position++,s.tag=z,s.anchor=Y,s.kind=j?\"mapping\":\"sequence\",s.result=_,!0;U?44===V&&throwError(s,\"expected the node content, but found ','\"):throwError(s,\"missed comma between flow collection entries\"),$=null,x=C=!1,63===V&&is_WS_OR_EOL(s.input.charCodeAt(s.position+1))&&(x=C=!0,s.position++,skipSeparationSpace(s,!0,o)),i=s.line,a=s.lineStart,u=s.position,composeNode(s,o,1,!1,!0),B=s.tag,L=s.result,skipSeparationSpace(s,!0,o),V=s.input.charCodeAt(s.position),!C&&s.line!==i||58!==V||(x=!0,V=s.input.charCodeAt(++s.position),skipSeparationSpace(s,!0,o),composeNode(s,o,1,!1,!0),$=s.result),j?storeMappingPair(s,_,Z,B,L,$,i,a,u):x?_.push(storeMappingPair(s,null,Z,B,L,$,i,a,u)):_.push(L),skipSeparationSpace(s,!0,o),44===(V=s.input.charCodeAt(s.position))?(U=!0,V=s.input.charCodeAt(++s.position)):U=!1}throwError(s,\"unexpected end of the stream within a flow collection\")}(s,$)?Y=!0:(w&&function readBlockScalar(s,o){var i,a,u,_,w,x=1,C=!1,j=!1,L=o,B=0,$=!1;if(124===(_=s.input.charCodeAt(s.position)))a=!1;else{if(62!==_)return!1;a=!0}for(s.kind=\"scalar\",s.result=\"\";0!==_;)if(43===(_=s.input.charCodeAt(++s.position))||45===_)1===x?x=43===_?3:2:throwError(s,\"repeat of a chomping mode identifier\");else{if(!((u=48<=(w=_)&&w<=57?w-48:-1)>=0))break;0===u?throwError(s,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):j?throwError(s,\"repeat of an indentation width identifier\"):(L=o+u-1,j=!0)}if(is_WHITE_SPACE(_)){do{_=s.input.charCodeAt(++s.position)}while(is_WHITE_SPACE(_));if(35===_)do{_=s.input.charCodeAt(++s.position)}while(!is_EOL(_)&&0!==_)}for(;0!==_;){for(readLineBreak(s),s.lineIndent=0,_=s.input.charCodeAt(s.position);(!j||s.lineIndent<L)&&32===_;)s.lineIndent++,_=s.input.charCodeAt(++s.position);if(!j&&s.lineIndent>L&&(L=s.lineIndent),is_EOL(_))B++;else{if(s.lineIndent<L){3===x?s.result+=er.repeat(\"\\n\",C?1+B:B):1===x&&C&&(s.result+=\"\\n\");break}for(a?is_WHITE_SPACE(_)?($=!0,s.result+=er.repeat(\"\\n\",C?1+B:B)):$?($=!1,s.result+=er.repeat(\"\\n\",B+1)):0===B?C&&(s.result+=\" \"):s.result+=er.repeat(\"\\n\",B):s.result+=er.repeat(\"\\n\",C?1+B:B),C=!0,j=!0,B=0,i=s.position;!is_EOL(_)&&0!==_;)_=s.input.charCodeAt(++s.position);captureSegment(s,i,s.position,!1)}}return!0}(s,$)||function readSingleQuotedScalar(s,o){var i,a,u;if(39!==(i=s.input.charCodeAt(s.position)))return!1;for(s.kind=\"scalar\",s.result=\"\",s.position++,a=u=s.position;0!==(i=s.input.charCodeAt(s.position));)if(39===i){if(captureSegment(s,a,s.position,!0),39!==(i=s.input.charCodeAt(++s.position)))return!0;a=s.position,s.position++,u=s.position}else is_EOL(i)?(captureSegment(s,a,u,!0),writeFoldedLines(s,skipSeparationSpace(s,!1,o)),a=u=s.position):s.position===s.lineStart&&testDocumentSeparator(s)?throwError(s,\"unexpected end of the document within a single quoted scalar\"):(s.position++,u=s.position);throwError(s,\"unexpected end of the stream within a single quoted scalar\")}(s,$)||function readDoubleQuotedScalar(s,o){var i,a,u,_,w,x,C;if(34!==(x=s.input.charCodeAt(s.position)))return!1;for(s.kind=\"scalar\",s.result=\"\",s.position++,i=a=s.position;0!==(x=s.input.charCodeAt(s.position));){if(34===x)return captureSegment(s,i,s.position,!0),s.position++,!0;if(92===x){if(captureSegment(s,i,s.position,!0),is_EOL(x=s.input.charCodeAt(++s.position)))skipSeparationSpace(s,!1,o);else if(x<256&&qr[x])s.result+=Vr[x],s.position++;else if((w=120===(C=x)?2:117===C?4:85===C?8:0)>0){for(u=w,_=0;u>0;u--)(w=fromHexCode(x=s.input.charCodeAt(++s.position)))>=0?_=(_<<4)+w:throwError(s,\"expected hexadecimal character\");s.result+=charFromCodepoint(_),s.position++}else throwError(s,\"unknown escape sequence\");i=a=s.position}else is_EOL(x)?(captureSegment(s,i,a,!0),writeFoldedLines(s,skipSeparationSpace(s,!1,o)),i=a=s.position):s.position===s.lineStart&&testDocumentSeparator(s)?throwError(s,\"unexpected end of the document within a double quoted scalar\"):(s.position++,a=s.position)}throwError(s,\"unexpected end of the stream within a double quoted scalar\")}(s,$)?Y=!0:!function readAlias(s){var o,i,a;if(42!==(a=s.input.charCodeAt(s.position)))return!1;for(a=s.input.charCodeAt(++s.position),o=s.position;0!==a&&!is_WS_OR_EOL(a)&&!is_FLOW_INDICATOR(a);)a=s.input.charCodeAt(++s.position);return s.position===o&&throwError(s,\"name of an alias node must contain at least one character\"),i=s.input.slice(o,s.position),Rr.call(s.anchorMap,i)||throwError(s,'unidentified alias \"'+i+'\"'),s.result=s.anchorMap[i],skipSeparationSpace(s,!0,-1),!0}(s)?function readPlainScalar(s,o,i){var a,u,_,w,x,C,j,L,B=s.kind,$=s.result;if(is_WS_OR_EOL(L=s.input.charCodeAt(s.position))||is_FLOW_INDICATOR(L)||35===L||38===L||42===L||33===L||124===L||62===L||39===L||34===L||37===L||64===L||96===L)return!1;if((63===L||45===L)&&(is_WS_OR_EOL(a=s.input.charCodeAt(s.position+1))||i&&is_FLOW_INDICATOR(a)))return!1;for(s.kind=\"scalar\",s.result=\"\",u=_=s.position,w=!1;0!==L;){if(58===L){if(is_WS_OR_EOL(a=s.input.charCodeAt(s.position+1))||i&&is_FLOW_INDICATOR(a))break}else if(35===L){if(is_WS_OR_EOL(s.input.charCodeAt(s.position-1)))break}else{if(s.position===s.lineStart&&testDocumentSeparator(s)||i&&is_FLOW_INDICATOR(L))break;if(is_EOL(L)){if(x=s.line,C=s.lineStart,j=s.lineIndent,skipSeparationSpace(s,!1,-1),s.lineIndent>=o){w=!0,L=s.input.charCodeAt(s.position);continue}s.position=_,s.line=x,s.lineStart=C,s.lineIndent=j;break}}w&&(captureSegment(s,u,_,!1),writeFoldedLines(s,s.line-x),u=_=s.position,w=!1),is_WHITE_SPACE(L)||(_=s.position+1),L=s.input.charCodeAt(++s.position)}return captureSegment(s,u,_,!1),!!s.result||(s.kind=B,s.result=$,!1)}(s,$,1===i)&&(Y=!0,null===s.tag&&(s.tag=\"?\")):(Y=!0,null===s.tag&&null===s.anchor||throwError(s,\"alias node should not have any properties\")),null!==s.anchor&&(s.anchorMap[s.anchor]=s.result)):0===U&&(Y=x&&readBlockSequence(s,V))),null===s.tag)null!==s.anchor&&(s.anchorMap[s.anchor]=s.result);else if(\"?\"===s.tag){for(null!==s.result&&\"scalar\"!==s.kind&&throwError(s,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+s.kind+'\"'),C=0,j=s.implicitTypes.length;C<j;C+=1)if((B=s.implicitTypes[C]).resolve(s.result)){s.result=B.construct(s.result),s.tag=B.tag,null!==s.anchor&&(s.anchorMap[s.anchor]=s.result);break}}else if(\"!\"!==s.tag){if(Rr.call(s.typeMap[s.kind||\"fallback\"],s.tag))B=s.typeMap[s.kind||\"fallback\"][s.tag];else for(B=null,C=0,j=(L=s.typeMap.multi[s.kind||\"fallback\"]).length;C<j;C+=1)if(s.tag.slice(0,L[C].tag.length)===L[C].tag){B=L[C];break}B||throwError(s,\"unknown tag !<\"+s.tag+\">\"),null!==s.result&&B.kind!==s.kind&&throwError(s,\"unacceptable node kind for !<\"+s.tag+'> tag; it should be \"'+B.kind+'\", not \"'+s.kind+'\"'),B.resolve(s.result,s.tag)?(s.result=B.construct(s.result,s.tag),null!==s.anchor&&(s.anchorMap[s.anchor]=s.result)):throwError(s,\"cannot resolve a node with !<\"+s.tag+\"> explicit tag\")}return null!==s.listener&&s.listener(\"close\",s),null!==s.tag||null!==s.anchor||Y}function readDocument(s){var o,i,a,u,_=s.position,w=!1;for(s.version=null,s.checkLineBreaks=s.legacy,s.tagMap=Object.create(null),s.anchorMap=Object.create(null);0!==(u=s.input.charCodeAt(s.position))&&(skipSeparationSpace(s,!0,-1),u=s.input.charCodeAt(s.position),!(s.lineIndent>0||37!==u));){for(w=!0,u=s.input.charCodeAt(++s.position),o=s.position;0!==u&&!is_WS_OR_EOL(u);)u=s.input.charCodeAt(++s.position);for(a=[],(i=s.input.slice(o,s.position)).length<1&&throwError(s,\"directive name must not be less than one character in length\");0!==u;){for(;is_WHITE_SPACE(u);)u=s.input.charCodeAt(++s.position);if(35===u){do{u=s.input.charCodeAt(++s.position)}while(0!==u&&!is_EOL(u));break}if(is_EOL(u))break;for(o=s.position;0!==u&&!is_WS_OR_EOL(u);)u=s.input.charCodeAt(++s.position);a.push(s.input.slice(o,s.position))}0!==u&&readLineBreak(s),Rr.call(zr,i)?zr[i](s,i,a):throwWarning(s,'unknown document directive \"'+i+'\"')}skipSeparationSpace(s,!0,-1),0===s.lineIndent&&45===s.input.charCodeAt(s.position)&&45===s.input.charCodeAt(s.position+1)&&45===s.input.charCodeAt(s.position+2)?(s.position+=3,skipSeparationSpace(s,!0,-1)):w&&throwError(s,\"directives end mark is expected\"),composeNode(s,s.lineIndent-1,4,!1,!0),skipSeparationSpace(s,!0,-1),s.checkLineBreaks&&Lr.test(s.input.slice(_,s.position))&&throwWarning(s,\"non-ASCII line breaks are interpreted as content\"),s.documents.push(s.result),s.position===s.lineStart&&testDocumentSeparator(s)?46===s.input.charCodeAt(s.position)&&(s.position+=3,skipSeparationSpace(s,!0,-1)):s.position<s.length-1&&throwError(s,\"end of the stream or a document separator is expected\")}function loadDocuments(s,o){o=o||{},0!==(s=String(s)).length&&(10!==s.charCodeAt(s.length-1)&&13!==s.charCodeAt(s.length-1)&&(s+=\"\\n\"),65279===s.charCodeAt(0)&&(s=s.slice(1)));var i=new State$1(s,o),a=s.indexOf(\"\\0\");for(-1!==a&&(i.position=a,throwError(i,\"null byte is not allowed in input\")),i.input+=\"\\0\";32===i.input.charCodeAt(i.position);)i.lineIndent+=1,i.position+=1;for(;i.position<i.length-1;)readDocument(i);return i.documents}var Wr={loadAll:function loadAll$1(s,o,i){null!==o&&\"object\"==typeof o&&void 0===i&&(i=o,o=null);var a=loadDocuments(s,i);if(\"function\"!=typeof o)return a;for(var u=0,_=a.length;u<_;u+=1)o(a[u])},load:function load$1(s,o){var i=loadDocuments(s,o);if(0!==i.length){if(1===i.length)return i[0];throw new tr(\"expected a single document in the stream, but found more\")}}},Jr=Object.prototype.toString,Hr=Object.prototype.hasOwnProperty,Kr=65279,Gr={0:\"\\\\0\",7:\"\\\\a\",8:\"\\\\b\",9:\"\\\\t\",10:\"\\\\n\",11:\"\\\\v\",12:\"\\\\f\",13:\"\\\\r\",27:\"\\\\e\",34:'\\\\\"',92:\"\\\\\\\\\",133:\"\\\\N\",160:\"\\\\_\",8232:\"\\\\L\",8233:\"\\\\P\"},Yr=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"],Xr=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;function encodeHex(s){var o,i,a;if(o=s.toString(16).toUpperCase(),s<=255)i=\"x\",a=2;else if(s<=65535)i=\"u\",a=4;else{if(!(s<=4294967295))throw new tr(\"code point within a string may not be greater than 0xFFFFFFFF\");i=\"U\",a=8}return\"\\\\\"+i+er.repeat(\"0\",a-o.length)+o}function State(s){this.schema=s.schema||Mr,this.indent=Math.max(1,s.indent||2),this.noArrayIndent=s.noArrayIndent||!1,this.skipInvalid=s.skipInvalid||!1,this.flowLevel=er.isNothing(s.flowLevel)?-1:s.flowLevel,this.styleMap=function compileStyleMap(s,o){var i,a,u,_,w,x,C;if(null===o)return{};for(i={},u=0,_=(a=Object.keys(o)).length;u<_;u+=1)w=a[u],x=String(o[w]),\"!!\"===w.slice(0,2)&&(w=\"tag:yaml.org,2002:\"+w.slice(2)),(C=s.compiledTypeMap.fallback[w])&&Hr.call(C.styleAliases,x)&&(x=C.styleAliases[x]),i[w]=x;return i}(this.schema,s.styles||null),this.sortKeys=s.sortKeys||!1,this.lineWidth=s.lineWidth||80,this.noRefs=s.noRefs||!1,this.noCompatMode=s.noCompatMode||!1,this.condenseFlow=s.condenseFlow||!1,this.quotingType='\"'===s.quotingType?2:1,this.forceQuotes=s.forceQuotes||!1,this.replacer=\"function\"==typeof s.replacer?s.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function indentString(s,o){for(var i,a=er.repeat(\" \",o),u=0,_=-1,w=\"\",x=s.length;u<x;)-1===(_=s.indexOf(\"\\n\",u))?(i=s.slice(u),u=x):(i=s.slice(u,_+1),u=_+1),i.length&&\"\\n\"!==i&&(w+=a),w+=i;return w}function generateNextLine(s,o){return\"\\n\"+er.repeat(\" \",s.indent*o)}function isWhitespace(s){return 32===s||9===s}function isPrintable(s){return 32<=s&&s<=126||161<=s&&s<=55295&&8232!==s&&8233!==s||57344<=s&&s<=65533&&s!==Kr||65536<=s&&s<=1114111}function isNsCharOrWhitespace(s){return isPrintable(s)&&s!==Kr&&13!==s&&10!==s}function isPlainSafe(s,o,i){var a=isNsCharOrWhitespace(s),u=a&&!isWhitespace(s);return(i?a:a&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s)&&35!==s&&!(58===o&&!u)||isNsCharOrWhitespace(o)&&!isWhitespace(o)&&35===s||58===o&&u}function codePointAt(s,o){var i,a=s.charCodeAt(o);return a>=55296&&a<=56319&&o+1<s.length&&(i=s.charCodeAt(o+1))>=56320&&i<=57343?1024*(a-55296)+i-56320+65536:a}function needIndentIndicator(s){return/^\\n* /.test(s)}function chooseScalarStyle(s,o,i,a,u,_,w,x){var C,j=0,L=null,B=!1,$=!1,V=-1!==a,U=-1,z=function isPlainSafeFirst(s){return isPrintable(s)&&s!==Kr&&!isWhitespace(s)&&45!==s&&63!==s&&58!==s&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s&&35!==s&&38!==s&&42!==s&&33!==s&&124!==s&&61!==s&&62!==s&&39!==s&&34!==s&&37!==s&&64!==s&&96!==s}(codePointAt(s,0))&&function isPlainSafeLast(s){return!isWhitespace(s)&&58!==s}(codePointAt(s,s.length-1));if(o||w)for(C=0;C<s.length;j>=65536?C+=2:C++){if(!isPrintable(j=codePointAt(s,C)))return 5;z=z&&isPlainSafe(j,L,x),L=j}else{for(C=0;C<s.length;j>=65536?C+=2:C++){if(10===(j=codePointAt(s,C)))B=!0,V&&($=$||C-U-1>a&&\" \"!==s[U+1],U=C);else if(!isPrintable(j))return 5;z=z&&isPlainSafe(j,L,x),L=j}$=$||V&&C-U-1>a&&\" \"!==s[U+1]}return B||$?i>9&&needIndentIndicator(s)?5:w?2===_?5:2:$?4:3:!z||w||u(s)?2===_?5:2:1}function writeScalar(s,o,i,a,u){s.dump=function(){if(0===o.length)return 2===s.quotingType?'\"\"':\"''\";if(!s.noCompatMode&&(-1!==Yr.indexOf(o)||Xr.test(o)))return 2===s.quotingType?'\"'+o+'\"':\"'\"+o+\"'\";var _=s.indent*Math.max(1,i),w=-1===s.lineWidth?-1:Math.max(Math.min(s.lineWidth,40),s.lineWidth-_),x=a||s.flowLevel>-1&&i>=s.flowLevel;switch(chooseScalarStyle(o,x,s.indent,w,(function testAmbiguity(o){return function testImplicitResolving(s,o){var i,a;for(i=0,a=s.implicitTypes.length;i<a;i+=1)if(s.implicitTypes[i].resolve(o))return!0;return!1}(s,o)}),s.quotingType,s.forceQuotes&&!a,u)){case 1:return o;case 2:return\"'\"+o.replace(/'/g,\"''\")+\"'\";case 3:return\"|\"+blockHeader(o,s.indent)+dropEndingNewline(indentString(o,_));case 4:return\">\"+blockHeader(o,s.indent)+dropEndingNewline(indentString(function foldString(s,o){var i,a,u=/(\\n+)([^\\n]*)/g,_=(x=s.indexOf(\"\\n\"),x=-1!==x?x:s.length,u.lastIndex=x,foldLine(s.slice(0,x),o)),w=\"\\n\"===s[0]||\" \"===s[0];var x;for(;a=u.exec(s);){var C=a[1],j=a[2];i=\" \"===j[0],_+=C+(w||i||\"\"===j?\"\":\"\\n\")+foldLine(j,o),w=i}return _}(o,w),_));case 5:return'\"'+function escapeString(s){for(var o,i=\"\",a=0,u=0;u<s.length;a>=65536?u+=2:u++)a=codePointAt(s,u),!(o=Gr[a])&&isPrintable(a)?(i+=s[u],a>=65536&&(i+=s[u+1])):i+=o||encodeHex(a);return i}(o)+'\"';default:throw new tr(\"impossible error: invalid scalar style\")}}()}function blockHeader(s,o){var i=needIndentIndicator(s)?String(o):\"\",a=\"\\n\"===s[s.length-1];return i+(a&&(\"\\n\"===s[s.length-2]||\"\\n\"===s)?\"+\":a?\"\":\"-\")+\"\\n\"}function dropEndingNewline(s){return\"\\n\"===s[s.length-1]?s.slice(0,-1):s}function foldLine(s,o){if(\"\"===s||\" \"===s[0])return s;for(var i,a,u=/ [^ ]/g,_=0,w=0,x=0,C=\"\";i=u.exec(s);)(x=i.index)-_>o&&(a=w>_?w:x,C+=\"\\n\"+s.slice(_,a),_=a+1),w=x;return C+=\"\\n\",s.length-_>o&&w>_?C+=s.slice(_,w)+\"\\n\"+s.slice(w+1):C+=s.slice(_),C.slice(1)}function writeBlockSequence(s,o,i,a){var u,_,w,x=\"\",C=s.tag;for(u=0,_=i.length;u<_;u+=1)w=i[u],s.replacer&&(w=s.replacer.call(i,String(u),w)),(writeNode(s,o+1,w,!0,!0,!1,!0)||void 0===w&&writeNode(s,o+1,null,!0,!0,!1,!0))&&(a&&\"\"===x||(x+=generateNextLine(s,o)),s.dump&&10===s.dump.charCodeAt(0)?x+=\"-\":x+=\"- \",x+=s.dump);s.tag=C,s.dump=x||\"[]\"}function detectType(s,o,i){var a,u,_,w,x,C;for(_=0,w=(u=i?s.explicitTypes:s.implicitTypes).length;_<w;_+=1)if(((x=u[_]).instanceOf||x.predicate)&&(!x.instanceOf||\"object\"==typeof o&&o instanceof x.instanceOf)&&(!x.predicate||x.predicate(o))){if(i?x.multi&&x.representName?s.tag=x.representName(o):s.tag=x.tag:s.tag=\"?\",x.represent){if(C=s.styleMap[x.tag]||x.defaultStyle,\"[object Function]\"===Jr.call(x.represent))a=x.represent(o,C);else{if(!Hr.call(x.represent,C))throw new tr(\"!<\"+x.tag+'> tag resolver accepts not \"'+C+'\" style');a=x.represent[C](o,C)}s.dump=a}return!0}return!1}function writeNode(s,o,i,a,u,_,w){s.tag=null,s.dump=i,detectType(s,i,!1)||detectType(s,i,!0);var x,C=Jr.call(s.dump),j=a;a&&(a=s.flowLevel<0||s.flowLevel>o);var L,B,$=\"[object Object]\"===C||\"[object Array]\"===C;if($&&(B=-1!==(L=s.duplicates.indexOf(i))),(null!==s.tag&&\"?\"!==s.tag||B||2!==s.indent&&o>0)&&(u=!1),B&&s.usedDuplicates[L])s.dump=\"*ref_\"+L;else{if($&&B&&!s.usedDuplicates[L]&&(s.usedDuplicates[L]=!0),\"[object Object]\"===C)a&&0!==Object.keys(s.dump).length?(!function writeBlockMapping(s,o,i,a){var u,_,w,x,C,j,L=\"\",B=s.tag,$=Object.keys(i);if(!0===s.sortKeys)$.sort();else if(\"function\"==typeof s.sortKeys)$.sort(s.sortKeys);else if(s.sortKeys)throw new tr(\"sortKeys must be a boolean or a function\");for(u=0,_=$.length;u<_;u+=1)j=\"\",a&&\"\"===L||(j+=generateNextLine(s,o)),x=i[w=$[u]],s.replacer&&(x=s.replacer.call(i,w,x)),writeNode(s,o+1,w,!0,!0,!0)&&((C=null!==s.tag&&\"?\"!==s.tag||s.dump&&s.dump.length>1024)&&(s.dump&&10===s.dump.charCodeAt(0)?j+=\"?\":j+=\"? \"),j+=s.dump,C&&(j+=generateNextLine(s,o)),writeNode(s,o+1,x,!0,C)&&(s.dump&&10===s.dump.charCodeAt(0)?j+=\":\":j+=\": \",L+=j+=s.dump));s.tag=B,s.dump=L||\"{}\"}(s,o,s.dump,u),B&&(s.dump=\"&ref_\"+L+s.dump)):(!function writeFlowMapping(s,o,i){var a,u,_,w,x,C=\"\",j=s.tag,L=Object.keys(i);for(a=0,u=L.length;a<u;a+=1)x=\"\",\"\"!==C&&(x+=\", \"),s.condenseFlow&&(x+='\"'),w=i[_=L[a]],s.replacer&&(w=s.replacer.call(i,_,w)),writeNode(s,o,_,!1,!1)&&(s.dump.length>1024&&(x+=\"? \"),x+=s.dump+(s.condenseFlow?'\"':\"\")+\":\"+(s.condenseFlow?\"\":\" \"),writeNode(s,o,w,!1,!1)&&(C+=x+=s.dump));s.tag=j,s.dump=\"{\"+C+\"}\"}(s,o,s.dump),B&&(s.dump=\"&ref_\"+L+\" \"+s.dump));else if(\"[object Array]\"===C)a&&0!==s.dump.length?(s.noArrayIndent&&!w&&o>0?writeBlockSequence(s,o-1,s.dump,u):writeBlockSequence(s,o,s.dump,u),B&&(s.dump=\"&ref_\"+L+s.dump)):(!function writeFlowSequence(s,o,i){var a,u,_,w=\"\",x=s.tag;for(a=0,u=i.length;a<u;a+=1)_=i[a],s.replacer&&(_=s.replacer.call(i,String(a),_)),(writeNode(s,o,_,!1,!1)||void 0===_&&writeNode(s,o,null,!1,!1))&&(\"\"!==w&&(w+=\",\"+(s.condenseFlow?\"\":\" \")),w+=s.dump);s.tag=x,s.dump=\"[\"+w+\"]\"}(s,o,s.dump),B&&(s.dump=\"&ref_\"+L+\" \"+s.dump));else{if(\"[object String]\"!==C){if(\"[object Undefined]\"===C)return!1;if(s.skipInvalid)return!1;throw new tr(\"unacceptable kind of an object to dump \"+C)}\"?\"!==s.tag&&writeScalar(s,s.dump,o,_,j)}null!==s.tag&&\"?\"!==s.tag&&(x=encodeURI(\"!\"===s.tag[0]?s.tag.slice(1):s.tag).replace(/!/g,\"%21\"),x=\"!\"===s.tag[0]?\"!\"+x:\"tag:yaml.org,2002:\"===x.slice(0,18)?\"!!\"+x.slice(18):\"!<\"+x+\">\",s.dump=x+\" \"+s.dump)}return!0}function getDuplicateReferences(s,o){var i,a,u=[],_=[];for(inspectNode(s,u,_),i=0,a=_.length;i<a;i+=1)o.duplicates.push(u[_[i]]);o.usedDuplicates=new Array(a)}function inspectNode(s,o,i){var a,u,_;if(null!==s&&\"object\"==typeof s)if(-1!==(u=o.indexOf(s)))-1===i.indexOf(u)&&i.push(u);else if(o.push(s),Array.isArray(s))for(u=0,_=s.length;u<_;u+=1)inspectNode(s[u],o,i);else for(u=0,_=(a=Object.keys(s)).length;u<_;u+=1)inspectNode(s[a[u]],o,i)}var Qr=function dump$1(s,o){var i=new State(o=o||{});i.noRefs||getDuplicateReferences(s,i);var a=s;return i.replacer&&(a=i.replacer.call({\"\":a},\"\",a)),writeNode(i,0,a,!0,!0)?i.dump+\"\\n\":\"\"};function renamed(s,o){return function(){throw new Error(\"Function yaml.\"+s+\" is removed in js-yaml 4. Use yaml.\"+o+\" instead, which is now safe by default.\")}}var Zr=ir,en=ar,tn=pr,rn=br,nn=_r,sn=Mr,on=Wr.load,an=Wr.loadAll,cn={dump:Qr}.dump,ln=tr,un={binary:Or,float:vr,map:ur,null:dr,pairs:Pr,set:Nr,timestamp:wr,bool:fr,int:mr,merge:xr,omap:jr,seq:lr,str:cr},pn=renamed(\"safeLoad\",\"load\"),hn=renamed(\"safeLoadAll\",\"loadAll\"),dn=renamed(\"safeDump\",\"dump\");const fn={Type:Zr,Schema:en,FAILSAFE_SCHEMA:tn,JSON_SCHEMA:rn,CORE_SCHEMA:nn,DEFAULT_SCHEMA:sn,load:on,loadAll:an,dump:cn,YAMLException:ln,types:un,safeLoad:pn,safeLoadAll:hn,safeDump:dn},mn=\"configs_update\",gn=\"configs_toggle\";function update(s,o){return{type:mn,payload:{[s]:o}}}function toggle(s){return{type:gn,payload:s}}const actions_loaded=()=>()=>{},downloadConfig=s=>o=>{const{fn:{fetch:i}}=o;return i(s)},getConfigByUrl=(s,o)=>i=>{const{specActions:a,configsActions:u}=i;if(s)return u.downloadConfig(s).then(next,next);function next(u){u instanceof Error||u.status>=400?(a.updateLoadingStatus(\"failedConfig\"),a.updateLoadingStatus(\"failedConfig\"),a.updateUrl(\"\"),console.error(u.statusText+\" \"+s.url),o(null)):o(((s,o)=>{try{return fn.load(s)}catch(s){return o&&o.errActions.newThrownErr(new Error(s)),{}}})(u.text,i))}},get=(s,o)=>s.getIn(Array.isArray(o)?o:[o]),yn={[mn]:(s,o)=>s.merge((0,ze.fromJS)(o.payload)),[gn]:(s,o)=>{const i=o.payload,a=s.get(i);return s.set(i,!a)}};function configsPlugin(){return{statePlugins:{configs:{reducers:yn,actions:u,selectors:_}}}}const setHash=s=>s?history.pushState(null,null,`#${s}`):window.location.hash=\"\";var vn=__webpack_require__(86215),bn=__webpack_require__.n(vn);const _n=\"layout_scroll_to\",Sn=\"layout_clear_scroll\";const En={fn:{getScrollParent:function getScrollParent(s,o){const i=document.documentElement;let a=getComputedStyle(s);const u=\"absolute\"===a.position,_=o?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===a.position)return i;for(let o=s;o=o.parentElement;)if(a=getComputedStyle(o),(!u||\"static\"!==a.position)&&_.test(a.overflow+a.overflowY+a.overflowX))return o;return i}},statePlugins:{layout:{actions:{scrollToElement:(s,o)=>i=>{try{o=o||i.fn.getScrollParent(s),bn().createScroller(o).to(s)}catch(s){console.error(s)}},scrollTo:s=>({type:_n,payload:Array.isArray(s)?s:[s]}),clearScrollTo:()=>({type:Sn}),readyToScroll:(s,o)=>i=>{const a=i.layoutSelectors.getScrollToKey();We().is(a,(0,ze.fromJS)(s))&&(i.layoutActions.scrollToElement(o),i.layoutActions.clearScrollTo())},parseDeepLinkHash:s=>({layoutActions:o,layoutSelectors:i,getConfigs:a})=>{if(a().deepLinking&&s){let a=s.slice(1);\"!\"===a[0]&&(a=a.slice(1)),\"/\"===a[0]&&(a=a.slice(1));const u=a.split(\"/\").map((s=>s||\"\")),_=i.isShownKeyFromUrlHashArray(u),[w,x=\"\",C=\"\"]=_;if(\"operations\"===w){const s=i.isShownKeyFromUrlHashArray([x]);x.indexOf(\"_\")>-1&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),o.show(s.map((s=>s.replace(/_/g,\" \"))),!0)),o.show(s,!0)}(x.indexOf(\"_\")>-1||C.indexOf(\"_\")>-1)&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),o.show(_.map((s=>s.replace(/_/g,\" \"))),!0)),o.show(_,!0),o.scrollTo(_)}}},selectors:{getScrollToKey:s=>s.get(\"scrollToKey\"),isShownKeyFromUrlHashArray(s,o){const[i,a]=o;return a?[\"operations\",i,a]:i?[\"operations-tag\",i]:[]},urlHashArrayFromIsShownKey(s,o){let[i,a,u]=o;return\"operations\"==i?[a,u]:\"operations-tag\"==i?[a]:[]}},reducers:{[_n]:(s,o)=>s.set(\"scrollToKey\",We().fromJS(o.payload)),[Sn]:s=>s.delete(\"scrollToKey\")},wrapActions:{show:(s,{getConfigs:o,layoutSelectors:i})=>(...a)=>{if(s(...a),o().deepLinking)try{let[s,o]=a;s=Array.isArray(s)?s:[s];const u=i.urlHashArrayFromIsShownKey(s);if(!u.length)return;const[_,w]=u;if(!o)return setHash(\"/\");2===u.length?setHash(createDeepLinkPath(`/${encodeURIComponent(_)}/${encodeURIComponent(w)}`)):1===u.length&&setHash(createDeepLinkPath(`/${encodeURIComponent(_)}`))}catch(s){console.error(s)}}}}}};var wn=__webpack_require__(2209),xn=__webpack_require__.n(wn);const operation_wrapper=(s,o)=>class OperationWrapper extends Re.Component{onLoad=s=>{const{operation:i}=this.props,{tag:a,operationId:u}=i.toObject();let{isShownKey:_}=i.toObject();_=_||[\"operations\",a,u],o.layoutActions.readyToScroll(_,s)};render(){return Re.createElement(\"span\",{ref:this.onLoad},Re.createElement(s,this.props))}},operation_tag_wrapper=(s,o)=>class OperationTagWrapper extends Re.Component{onLoad=s=>{const{tag:i}=this.props,a=[\"operations-tag\",i];o.layoutActions.readyToScroll(a,s)};render(){return Re.createElement(\"span\",{ref:this.onLoad},Re.createElement(s,this.props))}};function deep_linking(){return[En,{statePlugins:{configs:{wrapActions:{loaded:(s,o)=>(...i)=>{s(...i);const a=decodeURIComponent(window.location.hash);o.layoutActions.parseDeepLinkHash(a)}}}},wrapComponents:{operation:operation_wrapper,OperationTag:operation_tag_wrapper}}]}var kn=__webpack_require__(40860),On=__webpack_require__.n(kn);function transform(s){return s.map((s=>{let o=\"is not of a type(s)\",i=s.get(\"message\").indexOf(o);if(i>-1){let o=s.get(\"message\").slice(i+19).split(\",\");return s.set(\"message\",s.get(\"message\").slice(0,i)+function makeNewMessage(s){return s.reduce(((s,o,i,a)=>i===a.length-1&&a.length>1?s+\"or \"+o:a[i+1]&&a.length>2?s+o+\", \":a[i+1]?s+o+\" \":s+o),\"should be a\")}(o))}return s}))}var Cn=__webpack_require__(58156),An=__webpack_require__.n(Cn);function parameter_oneof_transform(s,{jsSpec:o}){return s}const jn=[w,x];function transformErrors(s){let o={jsSpec:{}},i=On()(jn,((s,i)=>{try{return i.transform(s,o).filter((s=>!!s))}catch(o){return console.error(\"Transformer error:\",o),s}}),s);return i.filter((s=>!!s)).map((s=>(!s.get(\"line\")&&s.get(\"path\"),s)))}let In={line:0,level:\"error\",message:\"Unknown error\"};const Pn=Vt((s=>s),(s=>s.get(\"errors\",(0,ze.List)()))),Tn=Vt(Pn,(s=>s.last()));function err(o){return{statePlugins:{err:{reducers:{[rt]:(s,{payload:o})=>{let i=Object.assign(In,o,{type:\"thrown\"});return s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)))).update(\"errors\",(s=>transformErrors(s)))},[nt]:(s,{payload:o})=>(o=o.map((s=>(0,ze.fromJS)(Object.assign(In,s,{type:\"thrown\"})))),s.update(\"errors\",(s=>(s||(0,ze.List)()).concat((0,ze.fromJS)(o)))).update(\"errors\",(s=>transformErrors(s)))),[st]:(s,{payload:o})=>{let i=(0,ze.fromJS)(o);return i=i.set(\"type\",\"spec\"),s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)).sortBy((s=>s.get(\"line\"))))).update(\"errors\",(s=>transformErrors(s)))},[ot]:(s,{payload:o})=>(o=o.map((s=>(0,ze.fromJS)(Object.assign(In,s,{type:\"spec\"})))),s.update(\"errors\",(s=>(s||(0,ze.List)()).concat((0,ze.fromJS)(o)))).update(\"errors\",(s=>transformErrors(s)))),[it]:(s,{payload:o})=>{let i=(0,ze.fromJS)(Object.assign({},o));return i=i.set(\"type\",\"auth\"),s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)))).update(\"errors\",(s=>transformErrors(s)))},[at]:(s,{payload:o})=>{if(!o||!s.get(\"errors\"))return s;let i=s.get(\"errors\").filter((s=>s.keySeq().every((i=>{const a=s.get(i),u=o[i];return!u||a!==u}))));return s.merge({errors:i})},[ct]:(s,{payload:o})=>{if(!o||\"function\"!=typeof o)return s;let i=s.get(\"errors\").filter((s=>o(s)));return s.merge({errors:i})}},actions:s,selectors:C}}}}function opsFilter(s,o){return s.filter(((s,i)=>-1!==i.indexOf(o)))}function filter(){return{fn:{opsFilter}}}var Nn=__webpack_require__(7666),Mn=__webpack_require__.n(Nn);const arrow_up=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),arrow_down=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),arrow=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),components_close=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),copy=({className:s=null,width:o=15,height:i=16,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 15 16\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"g\",{transform:\"translate(2, -1)\"},Re.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"}))),lock=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),unlock=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),icons=()=>({components:{ArrowUpIcon:arrow_up,ArrowDownIcon:arrow_down,ArrowIcon:arrow,CloseIcon:components_close,CopyIcon:copy,LockIcon:lock,UnlockIcon:unlock}}),Rn=\"layout_update_layout\",Dn=\"layout_update_filter\",Ln=\"layout_update_mode\",Fn=\"layout_show\";function updateLayout(s){return{type:Rn,payload:s}}function updateFilter(s){return{type:Dn,payload:s}}function actions_show(s,o=!0){return s=normalizeArray(s),{type:Fn,payload:{thing:s,shown:o}}}function changeMode(s,o=\"\"){return s=normalizeArray(s),{type:Ln,payload:{thing:s,mode:o}}}const Bn={[Rn]:(s,o)=>s.set(\"layout\",o.payload),[Dn]:(s,o)=>s.set(\"filter\",o.payload),[Fn]:(s,o)=>{const i=o.payload.shown,a=(0,ze.fromJS)(o.payload.thing);return s.update(\"shown\",(0,ze.fromJS)({}),(s=>s.set(a,i)))},[Ln]:(s,o)=>{let i=o.payload.thing,a=o.payload.mode;return s.setIn([\"modes\"].concat(i),(a||\"\")+\"\")}},current=s=>s.get(\"layout\"),currentFilter=s=>s.get(\"filter\"),isShown=(s,o,i)=>(o=normalizeArray(o),s.get(\"shown\",(0,ze.fromJS)({})).get((0,ze.fromJS)(o),i)),whatMode=(s,o,i=\"\")=>(o=normalizeArray(o),s.getIn([\"modes\",...o],i)),$n=Vt((s=>s),(s=>!isShown(s,\"editor\"))),taggedOperations=(s,o)=>(i,...a)=>{let u=s(i,...a);const{fn:_,layoutSelectors:w,getConfigs:x}=o.getSystem(),C=x(),{maxDisplayedTags:j}=C;let L=w.currentFilter();return L&&!0!==L&&(u=_.opsFilter(u,L)),j>=0&&(u=u.slice(0,j)),u};function plugins_layout(){return{statePlugins:{layout:{reducers:Bn,actions:j,selectors:L},spec:{wrapSelectors:B}}}}function logs({configs:s}){const o={debug:0,info:1,log:2,warn:3,error:4},getLevel=s=>o[s]||-1;let{logLevel:i}=s,a=getLevel(i);function log(s,...o){getLevel(s)>=a&&console[s](...o)}return log.warn=log.bind(null,\"warn\"),log.error=log.bind(null,\"error\"),log.info=log.bind(null,\"info\"),log.debug=log.bind(null,\"debug\"),{rootInjects:{log}}}let qn=!1;function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpec:s=>(...o)=>(qn=!0,s(...o)),updateJsonSpec:(s,o)=>(...i)=>{const a=o.getConfigs().onComplete;return qn&&\"function\"==typeof a&&(setTimeout(a,0),qn=!1),s(...i)}}}}}}const extractKey=s=>{const o=\"_**[]\";return s.indexOf(o)<0?s:s.split(o)[0].trim()},escapeShell=s=>\"-d \"===s||/^[_\\/-]/g.test(s)?s:\"'\"+s.replace(/'/g,\"'\\\\''\")+\"'\",escapeCMD=s=>\"-d \"===(s=s.replace(/\\^/g,\"^^\").replace(/\\\\\"/g,'\\\\\\\\\"').replace(/\"/g,'\"\"').replace(/\\n/g,\"^\\n\"))?s.replace(/-d /g,\"-d ^\\n\"):/^[_\\/-]/g.test(s)?s:'\"'+s+'\"',escapePowershell=s=>{if(\"-d \"===s)return s;if(/\\n/.test(s)){return`@\"\\n${s.replace(/`/g,\"``\").replace(/\\$/g,\"`$\")}\\n\"@`}if(!/^[_\\/-]/.test(s)){return`'${s.replace(/'/g,\"''\")}'`}return s};const curlify=(s,o,i,a=\"\")=>{let u=!1,_=\"\";const addWords=(...s)=>_+=\" \"+s.map(o).join(\" \"),addWordsWithoutLeadingSpace=(...s)=>_+=s.map(o).join(\" \"),addNewLine=()=>_+=` ${i}`,addIndent=(s=1)=>_+=\"  \".repeat(s);let w=s.get(\"headers\");_+=\"curl\"+a;const x=s.get(\"curlOptions\");if(ze.List.isList(x)&&!x.isEmpty()&&addWords(...s.get(\"curlOptions\")),addWords(\"-X\",s.get(\"method\")),addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`${s.get(\"url\")}`),w&&w.size)for(let o of s.get(\"headers\").entries()){addNewLine(),addIndent();let[s,i]=o;addWordsWithoutLeadingSpace(\"-H\",`${s}: ${i}`),u=u||/^content-type$/i.test(s)&&/^multipart\\/form-data$/i.test(i)}const C=s.get(\"body\");if(C)if(u&&[\"POST\",\"PUT\",\"PATCH\"].includes(s.get(\"method\")))for(let[s,o]of C.entrySeq()){let i=extractKey(s);addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-F\"),o instanceof lt.File&&\"string\"==typeof o.valueOf()?addWords(`${i}=${o.data}${o.type?`;type=${o.type}`:\"\"}`):o instanceof lt.File?addWords(`${i}=@${o.name}${o.type?`;type=${o.type}`:\"\"}`):addWords(`${i}=${o}`)}else if(C instanceof lt.File)addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`--data-binary '@${C.name}'`);else{addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d \");let o=C;ze.Map.isMap(o)?addWordsWithoutLeadingSpace(function getStringBodyOfMap(s){let o=[];for(let[i,a]of s.get(\"body\").entrySeq()){let s=extractKey(i);a instanceof lt.File?o.push(`  \"${s}\": {\\n    \"name\": \"${a.name}\"${a.type?`,\\n    \"type\": \"${a.type}\"`:\"\"}\\n  }`):o.push(`  \"${s}\": ${JSON.stringify(a,null,2).replace(/(\\r\\n|\\r|\\n)/g,\"\\n  \")}`)}return`{\\n${o.join(\",\\n\")}\\n}`}(s)):(\"string\"!=typeof o&&(o=JSON.stringify(o)),addWordsWithoutLeadingSpace(o))}else C||\"POST\"!==s.get(\"method\")||(addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d ''\"));return _},requestSnippetGenerator_curl_powershell=s=>curlify(s,escapePowershell,\"`\\n\",\".exe\"),requestSnippetGenerator_curl_bash=s=>curlify(s,escapeShell,\"\\\\\\n\"),requestSnippetGenerator_curl_cmd=s=>curlify(s,escapeCMD,\"^\\n\"),request_snippets_selectors_state=s=>s||(0,ze.Map)(),Vn=Vt(request_snippets_selectors_state,(s=>{const o=s.get(\"languages\"),i=s.get(\"generators\",(0,ze.Map)());return!o||o.isEmpty()?i:i.filter(((s,i)=>o.includes(i)))})),getSnippetGenerators=s=>({fn:o})=>Vn(s).map(((s,i)=>{const a=(s=>o[`requestSnippetGenerator_${s}`])(i);return\"function\"!=typeof a?null:s.set(\"fn\",a)})).filter((s=>s)),Un=Vt(request_snippets_selectors_state,(s=>s.get(\"activeLanguage\"))),zn=Vt(request_snippets_selectors_state,(s=>s.get(\"defaultExpanded\")));var Wn=__webpack_require__(46942),Jn=__webpack_require__.n(Wn),Hn=__webpack_require__(59399);const Kn={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(250, 250, 250)\",paddingBottom:\"0\",paddingTop:\"0\",border:\"1px solid rgb(51, 51, 51)\",borderRadius:\"4px 4px 0 0\",boxShadow:\"none\",borderBottom:\"none\"},Gn={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(51, 51, 51)\",boxShadow:\"none\",border:\"1px solid rgb(51, 51, 51)\",paddingBottom:\"0\",paddingTop:\"0\",borderRadius:\"4px 4px 0 0\",marginTop:\"-5px\",marginRight:\"-5px\",marginLeft:\"-5px\",zIndex:\"9999\",borderBottom:\"none\"},request_snippets=({request:s,requestSnippetsSelectors:o,getComponent:i})=>{const a=(0,Re.useRef)(null),u=i(\"ArrowUpIcon\"),_=i(\"ArrowDownIcon\"),w=i(\"SyntaxHighlighter\",!0),[x,C]=(0,Re.useState)(o.getSnippetGenerators()?.keySeq().first()),[j,L]=(0,Re.useState)(o?.getDefaultExpanded()),B=o.getSnippetGenerators(),$=B.get(x),V=$.get(\"fn\")(s),handleSetIsExpanded=()=>{L(!j)},handleGetBtnStyle=s=>s===x?Gn:Kn,handlePreventYScrollingBeyondElement=s=>{const{target:o,deltaY:i}=s,{scrollHeight:a,offsetHeight:u,scrollTop:_}=o;a>u&&(0===_&&i<0||u+_>=a&&i>0)&&s.preventDefault()};return(0,Re.useEffect)((()=>{}),[]),(0,Re.useEffect)((()=>{const s=Array.from(a.current.childNodes).filter((s=>!!s.nodeType&&s.classList?.contains(\"curl-command\")));return s.forEach((s=>s.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{s.forEach((s=>s.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[s]),Re.createElement(\"div\",{className:\"request-snippets\",ref:a},Re.createElement(\"div\",{style:{width:\"100%\",display:\"flex\",justifyContent:\"flex-start\",alignItems:\"center\",marginBottom:\"15px\"}},Re.createElement(\"h4\",{onClick:()=>handleSetIsExpanded(),style:{cursor:\"pointer\"}},\"Snippets\"),Re.createElement(\"button\",{onClick:()=>handleSetIsExpanded(),style:{border:\"none\",background:\"none\"},title:j?\"Collapse operation\":\"Expand operation\"},j?Re.createElement(_,{className:\"arrow\",width:\"10\",height:\"10\"}):Re.createElement(u,{className:\"arrow\",width:\"10\",height:\"10\"}))),j&&Re.createElement(\"div\",{className:\"curl-command\"},Re.createElement(\"div\",{style:{paddingLeft:\"15px\",paddingRight:\"10px\",width:\"100%\",display:\"flex\"}},B.entrySeq().map((([s,o])=>Re.createElement(\"div\",{className:Jn()(\"btn\",{active:s===x}),style:handleGetBtnStyle(s),key:s,onClick:()=>(s=>{x!==s&&C(s)})(s)},Re.createElement(\"h4\",{style:s===x?{color:\"white\"}:{}},o.get(\"title\")))))),Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:V},Re.createElement(\"button\",null))),Re.createElement(\"div\",null,Re.createElement(w,{language:$.get(\"syntax\"),className:\"curl microlight\",renderPlainText:({children:s,PlainTextViewer:o})=>Re.createElement(o,{className:\"curl\"},s)},V))))},plugins_request_snippets=()=>({components:{RequestSnippets:request_snippets},fn:{requestSnippetGenerator_curl_bash,requestSnippetGenerator_curl_cmd,requestSnippetGenerator_curl_powershell},statePlugins:{requestSnippets:{selectors:$}}});class ModelCollapse extends Re.Component{static defaultProps={collapsedContent:\"{...}\",expanded:!1,title:null,onToggle:()=>{},hideSelfOnExpand:!1,specPath:We().List([])};constructor(s,o){super(s,o);let{expanded:i,collapsedContent:a}=this.props;this.state={expanded:i,collapsedContent:a||ModelCollapse.defaultProps.collapsedContent}}componentDidMount(){const{hideSelfOnExpand:s,expanded:o,modelName:i}=this.props;s&&o&&this.props.onToggle(i,o)}UNSAFE_componentWillReceiveProps(s){this.props.expanded!==s.expanded&&this.setState({expanded:s.expanded})}toggleCollapsed=()=>{this.props.onToggle&&this.props.onToggle(this.props.modelName,!this.state.expanded),this.setState({expanded:!this.state.expanded})};onLoad=s=>{if(s&&this.props.layoutSelectors){const o=this.props.layoutSelectors.getScrollToKey();We().is(o,this.props.specPath)&&this.toggleCollapsed(),this.props.layoutActions.readyToScroll(this.props.specPath,s.parentElement)}};render(){const{title:s,classes:o}=this.props;return this.state.expanded&&this.props.hideSelfOnExpand?Re.createElement(\"span\",{className:o||\"\"},this.props.children):Re.createElement(\"span\",{className:o||\"\",ref:this.onLoad},Re.createElement(\"button\",{\"aria-expanded\":this.state.expanded,className:\"model-box-control\",onClick:this.toggleCollapsed},s&&Re.createElement(\"span\",{className:\"pointer\"},s),Re.createElement(\"span\",{className:\"model-toggle\"+(this.state.expanded?\"\":\" collapsed\")}),!this.state.expanded&&Re.createElement(\"span\",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}const useTabs=({initialTab:s,isExecute:o,schema:i,example:a})=>{const u=(0,Re.useMemo)((()=>({example:\"example\",model:\"model\"})),[]),_=(0,Re.useMemo)((()=>Object.keys(u)),[u]).includes(s)&&i&&!o?s:u.example,w=(s=>{const o=(0,Re.useRef)();return(0,Re.useEffect)((()=>{o.current=s})),o.current})(o),[x,C]=(0,Re.useState)(_),j=(0,Re.useCallback)((s=>{C(s.target.dataset.name)}),[]);return(0,Re.useEffect)((()=>{w&&!o&&a&&C(u.example)}),[w,o,a]),{activeTab:x,onTabChange:j,tabs:u}},model_example=({schema:s,example:o,isExecute:i=!1,specPath:a,includeWriteOnly:u=!1,includeReadOnly:_=!1,getComponent:w,getConfigs:x,specSelectors:C})=>{const{defaultModelRendering:j,defaultModelExpandDepth:L}=x(),B=w(\"ModelWrapper\"),$=w(\"HighlightCode\",!0),V=xt()(5).toString(\"base64\"),U=xt()(5).toString(\"base64\"),z=xt()(5).toString(\"base64\"),Y=xt()(5).toString(\"base64\"),Z=C.isOAS3(),{activeTab:ee,tabs:ie,onTabChange:ae}=useTabs({initialTab:j,isExecute:i,schema:s,example:o});return Re.createElement(\"div\",{className:\"model-example\"},Re.createElement(\"ul\",{className:\"tab\",role:\"tablist\"},Re.createElement(\"li\",{className:Jn()(\"tabitem\",{active:ee===ie.example}),role:\"presentation\"},Re.createElement(\"button\",{\"aria-controls\":U,\"aria-selected\":ee===ie.example,className:\"tablinks\",\"data-name\":\"example\",id:V,onClick:ae,role:\"tab\"},i?\"Edit Value\":\"Example Value\")),s&&Re.createElement(\"li\",{className:Jn()(\"tabitem\",{active:ee===ie.model}),role:\"presentation\"},Re.createElement(\"button\",{\"aria-controls\":Y,\"aria-selected\":ee===ie.model,className:Jn()(\"tablinks\",{inactive:i}),\"data-name\":\"model\",id:z,onClick:ae,role:\"tab\"},Z?\"Schema\":\"Model\"))),ee===ie.example&&Re.createElement(\"div\",{\"aria-hidden\":ee!==ie.example,\"aria-labelledby\":V,\"data-name\":\"examplePanel\",id:U,role:\"tabpanel\",tabIndex:\"0\"},o||Re.createElement($,null,\"(no example available\")),ee===ie.model&&Re.createElement(\"div\",{className:\"model-container\",\"aria-hidden\":ee===ie.example,\"aria-labelledby\":z,\"data-name\":\"modelPanel\",id:Y,role:\"tabpanel\",tabIndex:\"0\"},Re.createElement(B,{schema:s,getComponent:w,getConfigs:x,specSelectors:C,expandDepth:L,specPath:a,includeReadOnly:_,includeWriteOnly:u})))};class ModelWrapper extends Re.Component{onToggle=(s,o)=>{this.props.layoutActions&&this.props.layoutActions.show(this.props.fullPath,o)};render(){let{getComponent:s,getConfigs:o}=this.props;const i=s(\"Model\");let a;return this.props.layoutSelectors&&(a=this.props.layoutSelectors.isShown(this.props.fullPath)),Re.createElement(\"div\",{className:\"model-box\"},Re.createElement(i,Mn()({},this.props,{getConfigs:o,expanded:a,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _possibleConstructorReturn(s,o){return!o||\"object\"!=typeof o&&\"function\"!=typeof o?function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}(s):o}var Yn={};function react_immutable_pure_component_es_get(s,o,i){return function isInvalid(s){return null==s}(s)?i:function isMapLike(s){return null!==s&&\"object\"===_typeof(s)&&\"function\"==typeof s.get&&\"function\"==typeof s.has}(s)?s.has(o)?s.get(o):i:hasOwnProperty.call(s,o)?s[o]:i}function getIn(s,o,i){for(var a=0;a!==o.length;)if((s=react_immutable_pure_component_es_get(s,o[a++],Yn))===Yn)return i;return s}function check(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=function createChecker(s,o){return function(i){if(\"string\"==typeof i)return(0,ze.is)(o[i],s[i]);if(Array.isArray(i))return(0,ze.is)(getIn(o,i),getIn(s,i));throw new TypeError(\"Invalid key: expected Array or string: \"+i)}}(o,i),u=s||Object.keys(function _objectSpread2(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(i,!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(i).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}({},i,{},o));return u.every(a)}const Xn=function(s){function ImmutablePureComponent(){return function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,ImmutablePureComponent),_possibleConstructorReturn(this,_getPrototypeOf(ImmutablePureComponent).apply(this,arguments))}return function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),o&&_setPrototypeOf(s,o)}(ImmutablePureComponent,s),function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),s}(ImmutablePureComponent,[{key:\"shouldComponentUpdate\",value:function shouldComponentUpdate(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!check(this.updateOnProps,this.props,s,\"updateOnProps\")||!check(this.updateOnStates,this.state,o,\"updateOnStates\")}}]),ImmutablePureComponent}(Re.Component);var Qn,Zn=__webpack_require__(5556),es=__webpack_require__.n(Zn);function _extends(){return _extends=Object.assign?Object.assign.bind():function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},_extends.apply(null,arguments)}const rolling_load=s=>Re.createElement(\"svg\",_extends({xmlns:\"http://www.w3.org/2000/svg\",width:200,height:200,className:\"rolling-load_svg__lds-rolling\",preserveAspectRatio:\"xMidYMid\",style:{backgroundImage:\"none\",backgroundPosition:\"initial initial\",backgroundRepeat:\"initial initial\"},viewBox:\"0 0 100 100\"},s),Qn||(Qn=Re.createElement(\"circle\",{cx:50,cy:50,r:35,fill:\"none\",stroke:\"#555\",strokeDasharray:\"164.93361431346415 56.97787143782138\",strokeWidth:10},Re.createElement(\"animateTransform\",{attributeName:\"transform\",begin:\"0s\",calcMode:\"linear\",dur:\"1s\",keyTimes:\"0;1\",repeatCount:\"indefinite\",type:\"rotate\",values:\"0 50 50;360 50 50\"})))),decodeRefName=s=>{const o=s.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(o)}catch{return o}};class Model extends Xn{static propTypes={schema:xn().map.isRequired,getComponent:es().func.isRequired,getConfigs:es().func.isRequired,specSelectors:es().object.isRequired,name:es().string,displayName:es().string,isRef:es().bool,required:es().bool,expandDepth:es().number,depth:es().number,specPath:xn().list.isRequired,includeReadOnly:es().bool,includeWriteOnly:es().bool};getModelName=s=>-1!==s.indexOf(\"#/definitions/\")?decodeRefName(s.replace(/^.*#\\/definitions\\//,\"\")):-1!==s.indexOf(\"#/components/schemas/\")?decodeRefName(s.replace(/^.*#\\/components\\/schemas\\//,\"\")):void 0;getRefSchema=s=>{let{specSelectors:o}=this.props;return o.findDefinition(s)};render(){let{getComponent:s,getConfigs:o,specSelectors:i,schema:a,required:u,name:_,isRef:w,specPath:x,displayName:C,includeReadOnly:j,includeWriteOnly:L}=this.props;const B=s(\"ObjectModel\"),$=s(\"ArrayModel\"),V=s(\"PrimitiveModel\");let U=\"object\",z=a&&a.get(\"$$ref\"),Y=a&&a.get(\"$ref\");if(!_&&z&&(_=this.getModelName(z)),Y){const s=this.getModelName(Y),o=this.getRefSchema(s);ze.Map.isMap(o)?(a=o.mergeDeep(a),z||(a=a.set(\"$$ref\",Y),z=Y)):ze.Map.isMap(a)&&1===a.size&&(a=null,_=Y)}if(!a)return Re.createElement(\"span\",{className:\"model model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},C||_),!Y&&Re.createElement(rolling_load,{height:\"20px\",width:\"20px\"}));const Z=i.isOAS3()&&a.get(\"deprecated\");switch(w=void 0!==w?w:!!z,U=a&&a.get(\"type\")||U,U){case\"object\":return Re.createElement(B,Mn()({className:\"object\"},this.props,{specPath:x,getConfigs:o,schema:a,name:_,deprecated:Z,isRef:w,includeReadOnly:j,includeWriteOnly:L}));case\"array\":return Re.createElement($,Mn()({className:\"array\"},this.props,{getConfigs:o,schema:a,name:_,deprecated:Z,required:u,includeReadOnly:j,includeWriteOnly:L}));default:return Re.createElement(V,Mn()({},this.props,{getComponent:s,getConfigs:o,schema:a,name:_,deprecated:Z,required:u}))}}}class Models extends Re.Component{getSchemaBasePath=()=>this.props.specSelectors.isOAS3()?[\"components\",\"schemas\"]:[\"definitions\"];getCollapsedContent=()=>\" \";handleToggle=(s,o)=>{const{layoutActions:i}=this.props;i.show([...this.getSchemaBasePath(),s],o),o&&this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(),s])};onLoadModels=s=>{s&&this.props.layoutActions.readyToScroll(this.getSchemaBasePath(),s)};onLoadModel=s=>{if(s){const o=s.getAttribute(\"data-name\");this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(),o],s)}};render(){let{specSelectors:s,getComponent:o,layoutSelectors:i,layoutActions:a,getConfigs:u}=this.props,_=s.definitions(),{docExpansion:w,defaultModelsExpandDepth:x}=u();if(!_.size||x<0)return null;const C=this.getSchemaBasePath();let j=i.isShown(C,x>0&&\"none\"!==w);const L=s.isOAS3(),B=o(\"ModelWrapper\"),$=o(\"Collapse\"),V=o(\"ModelCollapse\"),U=o(\"JumpToPath\",!0),z=o(\"ArrowUpIcon\"),Y=o(\"ArrowDownIcon\");return Re.createElement(\"section\",{className:j?\"models is-open\":\"models\",ref:this.onLoadModels},Re.createElement(\"h4\",null,Re.createElement(\"button\",{\"aria-expanded\":j,className:\"models-control\",onClick:()=>a.show(C,!j)},Re.createElement(\"span\",null,L?\"Schemas\":\"Models\"),j?Re.createElement(z,null):Re.createElement(Y,null))),Re.createElement($,{isOpened:j},_.entrySeq().map((([_])=>{const w=[...C,_],j=We().List(w),L=s.specResolvedSubtree(w),$=s.specJson().getIn(w),z=ze.Map.isMap(L)?L:We().Map(),Y=ze.Map.isMap($)?$:We().Map(),Z=z.get(\"title\")||Y.get(\"title\")||_,ee=i.isShown(w,!1);ee&&0===z.size&&Y.size>0&&this.props.specActions.requestResolvedSubtree(w);const ie=Re.createElement(B,{name:_,expandDepth:x,schema:z||We().Map(),displayName:Z,fullPath:w,specPath:j,getComponent:o,specSelectors:s,getConfigs:u,layoutSelectors:i,layoutActions:a,includeReadOnly:!0,includeWriteOnly:!0}),ae=Re.createElement(\"span\",{className:\"model-box\"},Re.createElement(\"span\",{className:\"model model-title\"},Z));return Re.createElement(\"div\",{id:`model-${_}`,className:\"model-container\",key:`models-section-${_}`,\"data-name\":_,ref:this.onLoadModel},Re.createElement(\"span\",{className:\"models-jump-to-path\"},Re.createElement(U,{path:j})),Re.createElement(V,{classes:\"model-box\",collapsedContent:this.getCollapsedContent(_),onToggle:this.handleToggle,title:ae,displayName:Z,modelName:_,specPath:j,layoutSelectors:i,layoutActions:a,hideSelfOnExpand:!0,expanded:x>0&&ee},ie))})).toArray()))}}const enum_model=({value:s,getComponent:o})=>{let i=o(\"ModelCollapse\"),a=Re.createElement(\"span\",null,\"Array [ \",s.count(),\" ]\");return Re.createElement(\"span\",{className:\"prop-enum\"},\"Enum:\",Re.createElement(\"br\",null),Re.createElement(i,{collapsedContent:a},\"[ \",s.map(String).join(\", \"),\" ]\"))};function isAbsoluteUrl(s){return s.match(/^(?:[a-z]+:)?\\/\\//i)}function buildBaseUrl(s,o){return s?isAbsoluteUrl(s)?function addProtocol(s){return s.match(/^\\/\\//i)?`${window.location.protocol}${s}`:s}(s):new URL(s,o).href:o}function safeBuildUrl(s,o,{selectedServer:i=\"\"}={}){try{return function buildUrl(s,o,{selectedServer:i=\"\"}={}){if(!s)return;if(isAbsoluteUrl(s))return s;const a=buildBaseUrl(i,o);return isAbsoluteUrl(a)?new URL(s,a).href:new URL(s,window.location.href).href}(s,o,{selectedServer:i})}catch{return}}function sanitizeUrl(s){if(\"string\"!=typeof s||\"\"===s.trim())return\"\";const o=s.trim(),i=\"about:blank\";try{const s=`https://base${String(Math.random()).slice(2)}`,a=new URL(o,s),u=a.protocol.slice(0,-1);return[\"javascript\",\"data\",\"vbscript\"].includes(u.toLowerCase())?i:a.origin===s?o.startsWith(\"/\")?`${a.pathname}${a.search}${a.hash}`:o.startsWith(\".\")?`.${a.pathname}${a.search}${a.hash}`:`${a.pathname.substring(1)}${a.search}${a.hash}`:String(a)}catch{return i}}class ObjectModel extends Re.Component{render(){let{schema:s,name:o,displayName:i,isRef:a,getComponent:u,getConfigs:_,depth:w,onToggle:x,expanded:C,specPath:j,...L}=this.props,{specSelectors:B,expandDepth:$,includeReadOnly:V,includeWriteOnly:U}=L;const{isOAS3:z}=B,Y=w>2||2===w&&\"items\"!==j.last();if(!s)return null;const{showExtensions:Z}=_(),ee=Z?getExtensions(s):(0,ze.List)();let ie=s.get(\"description\"),ae=s.get(\"properties\"),ce=s.get(\"additionalProperties\"),le=s.get(\"title\")||i||o,pe=s.get(\"required\"),de=s.filter(((s,o)=>-1!==[\"maxProperties\",\"minProperties\",\"nullable\",\"example\"].indexOf(o))),fe=s.get(\"deprecated\"),ye=s.getIn([\"externalDocs\",\"url\"]),be=s.getIn([\"externalDocs\",\"description\"]);const _e=u(\"JumpToPath\",!0),Se=u(\"Markdown\",!0),we=u(\"Model\"),xe=u(\"ModelCollapse\"),Pe=u(\"Property\"),Te=u(\"Link\"),$e=u(\"ModelExtensions\"),JumpToPathSection=()=>Re.createElement(\"span\",{className:\"model-jump-to-path\"},Re.createElement(_e,{path:j})),qe=Re.createElement(\"span\",null,Re.createElement(\"span\",null,\"{\"),\"...\",Re.createElement(\"span\",null,\"}\"),a?Re.createElement(JumpToPathSection,null):\"\"),We=B.isOAS3()?s.get(\"allOf\"):null,He=B.isOAS3()?s.get(\"anyOf\"):null,Ye=B.isOAS3()?s.get(\"oneOf\"):null,Xe=B.isOAS3()?s.get(\"not\"):null,Qe=le&&Re.createElement(\"span\",{className:\"model-title\"},a&&s.get(\"$$ref\")&&Re.createElement(\"span\",{className:Jn()(\"model-hint\",{\"model-hint--embedded\":Y})},s.get(\"$$ref\")),Re.createElement(\"span\",{className:\"model-title__text\"},le));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(xe,{modelName:o,title:Qe,onToggle:x,expanded:!!C||w<=$,collapsedContent:qe},Re.createElement(\"span\",{className:\"brace-open object\"},\"{\"),a?Re.createElement(JumpToPathSection,null):null,Re.createElement(\"span\",{className:\"inner-object\"},Re.createElement(\"table\",{className:\"model\"},Re.createElement(\"tbody\",null,ie?Re.createElement(\"tr\",{className:\"description\"},Re.createElement(\"td\",null,\"description:\"),Re.createElement(\"td\",null,Re.createElement(Se,{source:ie}))):null,ye&&Re.createElement(\"tr\",{className:\"external-docs\"},Re.createElement(\"td\",null,\"externalDocs:\"),Re.createElement(\"td\",null,Re.createElement(Te,{target:\"_blank\",href:sanitizeUrl(ye)},be||ye))),fe?Re.createElement(\"tr\",{className:\"property\"},Re.createElement(\"td\",null,\"deprecated:\"),Re.createElement(\"td\",null,\"true\")):null,ae&&ae.size?ae.entrySeq().filter((([,s])=>(!s.get(\"readOnly\")||V)&&(!s.get(\"writeOnly\")||U))).map((([s,i])=>{let a=z()&&i.get(\"deprecated\"),x=ze.List.isList(pe)&&pe.contains(s),C=[\"property-row\"];return a&&C.push(\"deprecated\"),x&&C.push(\"required\"),Re.createElement(\"tr\",{key:s,className:C.join(\" \")},Re.createElement(\"td\",null,s,x&&Re.createElement(\"span\",{className:\"star\"},\"*\")),Re.createElement(\"td\",null,Re.createElement(we,Mn()({key:`object-${o}-${s}_${i}`},L,{required:x,getComponent:u,specPath:j.push(\"properties\",s),getConfigs:_,schema:i,depth:w+1}))))})).toArray():null,0===ee.size?null:Re.createElement(Re.Fragment,null,Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\" \")),Re.createElement($e,{extensions:ee,propClass:\"extension\"})),ce&&ce.size?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"< * >:\"),Re.createElement(\"td\",null,Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"additionalProperties\"),getConfigs:_,schema:ce,depth:w+1})))):null,We?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"allOf ->\"),Re.createElement(\"td\",null,We.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"allOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,He?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"anyOf ->\"),Re.createElement(\"td\",null,He.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"anyOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,Ye?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"oneOf ->\"),Re.createElement(\"td\",null,Ye.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"oneOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,Xe?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"not ->\"),Re.createElement(\"td\",null,Re.createElement(\"div\",null,Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"not\"),getConfigs:_,schema:Xe,depth:w+1}))))):null))),Re.createElement(\"span\",{className:\"brace-close\"},\"}\")),de.size?de.entrySeq().map((([s,o])=>Re.createElement(Pe,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:\"property\"}))):null)}}class ArrayModel extends Re.Component{render(){let{getComponent:s,getConfigs:o,schema:i,depth:a,expandDepth:u,name:_,displayName:w,specPath:x}=this.props,C=i.get(\"description\"),j=i.get(\"items\"),L=i.get(\"title\")||w||_,B=i.filter(((s,o)=>-1===[\"type\",\"items\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(o))),$=i.getIn([\"externalDocs\",\"url\"]),V=i.getIn([\"externalDocs\",\"description\"]);const U=s(\"Markdown\",!0),z=s(\"ModelCollapse\"),Y=s(\"Model\"),Z=s(\"Property\"),ee=s(\"Link\"),ie=L&&Re.createElement(\"span\",{className:\"model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},L));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(z,{title:ie,expanded:a<=u,collapsedContent:\"[...]\"},\"[\",B.size?B.entrySeq().map((([s,o])=>Re.createElement(Z,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:\"property\"}))):null,C?Re.createElement(U,{source:C}):B.size?Re.createElement(\"div\",{className:\"markdown\"}):null,$&&Re.createElement(\"div\",{className:\"external-docs\"},Re.createElement(ee,{target:\"_blank\",href:sanitizeUrl($)},V||$)),Re.createElement(\"span\",null,Re.createElement(Y,Mn()({},this.props,{getConfigs:o,specPath:x.push(\"items\"),name:null,schema:j,required:!1,depth:a+1}))),\"]\"))}}const ts=\"property primitive\";class Primitive extends Re.Component{render(){let{schema:s,getComponent:o,getConfigs:i,name:a,displayName:u,depth:_,expandDepth:w}=this.props;const{showExtensions:x}=i();if(!s||!s.get)return Re.createElement(\"div\",null);let C=s.get(\"type\"),j=s.get(\"format\"),L=s.get(\"xml\"),B=s.get(\"enum\"),$=s.get(\"title\")||u||a,V=s.get(\"description\");const U=getExtensions(s);let z=s.filter(((s,o)=>-1===[\"enum\",\"type\",\"format\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(o))).filterNot(((s,o)=>U.has(o))),Y=s.getIn([\"externalDocs\",\"url\"]),Z=s.getIn([\"externalDocs\",\"description\"]);const ee=o(\"Markdown\",!0),ie=o(\"EnumModel\"),ae=o(\"Property\"),ce=o(\"ModelCollapse\"),le=o(\"Link\"),pe=o(\"ModelExtensions\"),de=$&&Re.createElement(\"span\",{className:\"model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},$));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(ce,{title:de,expanded:_<=w,collapsedContent:\"[...]\"},Re.createElement(\"span\",{className:\"prop\"},a&&_>1&&Re.createElement(\"span\",{className:\"prop-name\"},$),Re.createElement(\"span\",{className:\"prop-type\"},C),j&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",j,\")\"),z.size?z.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:ts}))):null,x&&U.size>0?Re.createElement(pe,{extensions:U,propClass:`${ts} extension`}):null,V?Re.createElement(ee,{source:V}):null,Y&&Re.createElement(\"div\",{className:\"external-docs\"},Re.createElement(le,{target:\"_blank\",href:sanitizeUrl(Y)},Z||Y)),L&&L.size?Re.createElement(\"span\",null,Re.createElement(\"br\",null),Re.createElement(\"span\",{className:ts},\"xml:\"),L.entrySeq().map((([s,o])=>Re.createElement(\"span\",{key:`${s}-${o}`,className:ts},Re.createElement(\"br\",null),\"   \",s,\": \",String(o)))).toArray()):null,B&&Re.createElement(ie,{value:B,getComponent:o}))))}}class Schemes extends Re.Component{UNSAFE_componentWillMount(){let{schemes:s}=this.props;this.setScheme(s.first())}UNSAFE_componentWillReceiveProps(s){this.props.currentScheme&&s.schemes.includes(this.props.currentScheme)||this.setScheme(s.schemes.first())}onChange=s=>{this.setScheme(s.target.value)};setScheme=s=>{let{path:o,method:i,specActions:a}=this.props;a.setScheme(s,o,i)};render(){let{schemes:s,currentScheme:o}=this.props;return Re.createElement(\"label\",{htmlFor:\"schemes\"},Re.createElement(\"span\",{className:\"schemes-title\"},\"Schemes\"),Re.createElement(\"select\",{onChange:this.onChange,value:o,id:\"schemes\"},s.valueSeq().map((s=>Re.createElement(\"option\",{value:s,key:s},s))).toArray()))}}class SchemesContainer extends Re.Component{render(){const{specActions:s,specSelectors:o,getComponent:i}=this.props,a=o.operationScheme(),u=o.schemes(),_=i(\"schemes\");return u&&u.size?Re.createElement(_,{currentScheme:a,schemes:u,specActions:s}):null}}var rs=__webpack_require__(24677),ns=__webpack_require__.n(rs);const ss={value:\"\",onChange:()=>{},schema:{},keyName:\"\",required:!1,errors:(0,ze.List)()};class JsonSchemaForm extends Re.Component{static defaultProps=ss;componentDidMount(){const{dispatchInitialValue:s,value:o,onChange:i}=this.props;s?i(o):!1===s&&i(\"\")}render(){let{schema:s,errors:o,value:i,onChange:a,getComponent:u,fn:_,disabled:w}=this.props;const x=s&&s.get?s.get(\"format\"):null,C=s&&s.get?s.get(\"type\"):null,j=_.jsonSchema202012.foldType(immutableToJS(C)),L=_.isFileUploadIntended(s);let getComponentSilently=s=>u(s,!1,{failSilently:!0}),B=C?getComponentSilently(x?`JsonSchema_${C}_${x}`:`JsonSchema_${C}`):u(\"JsonSchema_string\");return L||!ze.List.isList(C)||\"array\"!==j&&\"object\"!==j||(B=u(\"JsonSchema_object\")),B||(B=u(\"JsonSchema_string\")),Re.createElement(B,Mn()({},this.props,{errors:o,fn:_,getComponent:u,value:i,onChange:a,schema:s,disabled:w}))}}class JsonSchema_string extends Re.Component{static defaultProps=ss;onChange=s=>{const o=this.props.schema&&\"file\"===this.props.schema.get(\"type\")?s.target.files[0]:s.target.value;this.props.onChange(o,this.props.keyName)};onEnumChange=s=>this.props.onChange(s);render(){let{getComponent:s,value:o,schema:i,errors:a,required:u,description:_,disabled:w}=this.props;const x=i&&i.get?i.get(\"enum\"):null,C=i&&i.get?i.get(\"format\"):null,j=i&&i.get?i.get(\"type\"):null,L=i&&i.get?i.get(\"in\"):null;if(o?(isImmutable(o)||\"object\"==typeof o)&&(o=stringify(o)):o=\"\",a=a.toJS?a.toJS():[],x){const i=s(\"Select\");return Re.createElement(i,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",allowedValues:[...x],value:o,allowEmptyValue:!u,disabled:w,onChange:this.onEnumChange})}const B=w||L&&\"formData\"===L&&!(\"FormData\"in window),$=s(\"Input\");return j&&\"file\"===j?Re.createElement($,{type:\"file\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",onChange:this.onChange,disabled:B}):Re.createElement(ns(),{type:C&&\"password\"===C?\"password\":\"text\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",value:o,minLength:0,debounceTimeout:350,placeholder:_,onChange:this.onChange,disabled:B})}}class JsonSchema_array extends Re.PureComponent{static defaultProps=ss;constructor(s,o){super(s,o),this.state={value:valueOrEmptyList(s.value),schema:s.schema}}UNSAFE_componentWillReceiveProps(s){const o=valueOrEmptyList(s.value);o!==this.state.value&&this.setState({value:o}),s.schema!==this.state.schema&&this.setState({schema:s.schema})}onChange=()=>{this.props.onChange(this.state.value)};onItemChange=(s,o)=>{this.setState((({value:i})=>({value:i.set(o,s)})),this.onChange)};removeItem=s=>{this.setState((({value:o})=>({value:o.delete(s)})),this.onChange)};addItem=()=>{const{fn:s}=this.props;let o=valueOrEmptyList(this.state.value);this.setState((()=>({value:o.push(s.getSampleSchema(this.state.schema.get(\"items\"),!1,{includeWriteOnly:!0}))})),this.onChange)};onEnumChange=s=>{this.setState((()=>({value:s})),this.onChange)};render(){let{getComponent:s,required:o,schema:i,errors:a,fn:u,disabled:_}=this.props;a=a.toJS?a.toJS():Array.isArray(a)?a:[];const w=a.filter((s=>\"string\"==typeof s)),x=a.filter((s=>void 0!==s.needRemove)).map((s=>s.error)),C=this.state.value,j=!!(C&&C.count&&C.count()>0),L=i.getIn([\"items\",\"enum\"]),B=i.getIn([\"items\",\"type\"]),$=u.jsonSchema202012.foldType(immutableToJS(B)),V=u.jsonSchema202012.getType(immutableToJS(i.get(\"items\"))),U=i.getIn([\"items\",\"format\"]),z=i.get(\"items\");let Y,Z=!1,ee=\"file\"===B||\"string\"===B&&\"binary\"===U;if(B&&U?Y=s(`JsonSchema_${B}_${U}`):\"boolean\"!==B&&\"array\"!==B&&\"object\"!==B||(Y=s(`JsonSchema_${B}`)),!ze.List.isList(B)||\"array\"!==$&&\"object\"!==$||(Y=s(\"JsonSchema_object\")),Y||ee||(Z=!0),L){const i=s(\"Select\");return Re.createElement(i,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",multiple:!0,value:C,disabled:_,allowedValues:L,allowEmptyValue:!o,onChange:this.onEnumChange})}const ie=s(\"Button\");return Re.createElement(\"div\",{className:\"json-schema-array\"},j?C.map(((o,i)=>{const w=(0,ze.fromJS)([...a.filter((s=>s.index===i)).map((s=>s.error))]);return Re.createElement(\"div\",{key:i,className:\"json-schema-form-item\"},ee?Re.createElement(JsonSchemaArrayItemFile,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w,getComponent:s}):Z?Re.createElement(JsonSchemaArrayItemText,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w}):Re.createElement(Y,Mn()({},this.props,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w,schema:z,getComponent:s,fn:u})),_?null:Re.createElement(ie,{className:`btn btn-sm json-schema-form-item-remove ${x.length?\"invalid\":null}`,title:x.length?x:\"\",onClick:()=>this.removeItem(i)},\" - \"))})):null,_?null:Re.createElement(ie,{className:`btn btn-sm json-schema-form-item-add ${w.length?\"invalid\":null}`,title:w.length?w:\"\",onClick:this.addItem},\"Add \",V,\" item\"))}}class JsonSchemaArrayItemText extends Re.Component{static defaultProps=ss;onChange=s=>{const o=s.target.value;this.props.onChange(o,this.props.keyName)};render(){let{value:s,errors:o,description:i,disabled:a}=this.props;return s?(isImmutable(s)||\"object\"==typeof s)&&(s=stringify(s)):s=\"\",o=o.toJS?o.toJS():[],Re.createElement(ns(),{type:\"text\",className:o.length?\"invalid\":\"\",title:o.length?o:\"\",value:s,minLength:0,debounceTimeout:350,placeholder:i,onChange:this.onChange,disabled:a})}}class JsonSchemaArrayItemFile extends Re.Component{static defaultProps=ss;onFileChange=s=>{const o=s.target.files[0];this.props.onChange(o,this.props.keyName)};render(){let{getComponent:s,errors:o,disabled:i}=this.props;const a=s(\"Input\"),u=i||!(\"FormData\"in window);return Re.createElement(a,{type:\"file\",className:o.length?\"invalid\":\"\",title:o.length?o:\"\",onChange:this.onFileChange,disabled:u})}}class JsonSchema_boolean extends Re.Component{static defaultProps=ss;onEnumChange=s=>this.props.onChange(s);render(){let{getComponent:s,value:o,errors:i,schema:a,required:u,disabled:_}=this.props;i=i.toJS?i.toJS():[];let w=a&&a.get?a.get(\"enum\"):null,x=!w||!u,C=!w&&[\"true\",\"false\"];const j=s(\"Select\");return Re.createElement(j,{className:i.length?\"invalid\":\"\",title:i.length?i:\"\",value:String(o),disabled:_,allowedValues:w?[...w]:C,allowEmptyValue:x,onChange:this.onEnumChange})}}const stringifyObjectErrors=s=>s.map((s=>{const o=void 0!==s.propKey?s.propKey:s.index;let i=\"string\"==typeof s?s:\"string\"==typeof s.error?s.error:null;if(!o&&i)return i;let a=s.error,u=`/${s.propKey}`;for(;\"object\"==typeof a;){const s=void 0!==a.propKey?a.propKey:a.index;if(void 0===s)break;if(u+=`/${s}`,!a.error)break;a=a.error}return`${u}: ${a}`}));class JsonSchema_object extends Re.PureComponent{constructor(){super()}static defaultProps=ss;onChange=s=>{this.props.onChange(s)};handleOnChange=s=>{const o=s.target.value;this.onChange(o)};render(){let{getComponent:s,value:o,errors:i,disabled:a}=this.props;const u=s(\"TextArea\");return i=i.toJS?i.toJS():Array.isArray(i)?i:[],Re.createElement(\"div\",null,Re.createElement(u,{className:Jn()({invalid:i.length}),title:i.length?stringifyObjectErrors(i).join(\", \"):\"\",value:stringify(o),disabled:a,onChange:this.handleOnChange}))}}function valueOrEmptyList(s){return ze.List.isList(s)?s:Array.isArray(s)?(0,ze.fromJS)(s):(0,ze.List)()}const ModelExtensions=({extensions:s,propClass:o=\"\"})=>s.entrySeq().map((([s,i])=>{const a=immutableToJS(i)??null;return Re.createElement(\"tr\",{key:s,className:o},Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,JSON.stringify(a)))})).toArray();var os=__webpack_require__(11331),as=__webpack_require__.n(os);const hasSchemaType=(s,o)=>{const i=ze.Map.isMap(s);if(!i&&!as()(s))return!1;const a=i?s.get(\"type\"):s.type;return o===a||Array.isArray(o)&&o.includes(a)},json_schema_5=()=>({components:{modelExample:model_example,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,ModelExtensions,schemes:Schemes,SchemesContainer,...V},fn:{hasSchemaType}});var cs=__webpack_require__(19123),ls=__webpack_require__.n(cs),us=__webpack_require__(41859),ps=__webpack_require__.n(us),hs=__webpack_require__(62193),ds=__webpack_require__.n(hs);const shallowArrayEquals=s=>o=>Array.isArray(s)&&Array.isArray(o)&&s.length===o.length&&s.every(((s,i)=>s===o[i])),list=(...s)=>s;class Cache extends Map{delete(s){const o=Array.from(this.keys()).find(shallowArrayEquals(s));return super.delete(o)}get(s){const o=Array.from(this.keys()).find(shallowArrayEquals(s));return super.get(o)}has(s){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals(s))}}const utils_memoizeN=(s,o=list)=>{const{Cache:i}=pt();pt().Cache=Cache;const a=pt()(s,o);return pt().Cache=i,a},fs={string:s=>s.pattern?(s=>{try{return new(ps())(s).gen()}catch(s){return\"string\"}})(s.pattern):\"string\",string_email:()=>\"user@example.com\",\"string_date-time\":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",string_hostname:()=>\"example.com\",string_ipv4:()=>\"198.51.100.42\",string_ipv6:()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",number:()=>0,number_float:()=>0,integer:()=>0,boolean:s=>\"boolean\"!=typeof s.default||s.default},primitive=s=>{s=objectify(s);let{type:o,format:i}=s,a=fs[`${o}_${i}`]||fs[o];return isFunc(a)?a(s):\"Unknown Type: \"+s.type},sanitizeRef=s=>deeplyStripKey(s,\"$$ref\",(s=>\"string\"==typeof s&&s.indexOf(\"#\")>-1)),ms=[\"maxProperties\",\"minProperties\"],gs=[\"minItems\",\"maxItems\"],ys=[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\"],vs=[\"minLength\",\"maxLength\"],mergeJsonSchema=(s,o,i={})=>{const a={...s};if([\"example\",\"default\",\"enum\",\"xml\",\"type\",...ms,...gs,...ys,...vs].forEach((s=>(s=>{void 0===a[s]&&void 0!==o[s]&&(a[s]=o[s])})(s))),void 0!==o.required&&Array.isArray(o.required)&&(void 0!==a.required&&a.required.length||(a.required=[]),o.required.forEach((s=>{a.required.includes(s)||a.required.push(s)}))),o.properties){a.properties||(a.properties={});let s=objectify(o.properties);for(let u in s)Object.prototype.hasOwnProperty.call(s,u)&&(s[u]&&s[u].deprecated||s[u]&&s[u].readOnly&&!i.includeReadOnly||s[u]&&s[u].writeOnly&&!i.includeWriteOnly||a.properties[u]||(a.properties[u]=s[u],!o.required&&Array.isArray(o.required)&&-1!==o.required.indexOf(u)&&(a.required?a.required.push(u):a.required=[u])))}return o.items&&(a.items||(a.items={}),a.items=mergeJsonSchema(a.items,o.items,i)),a},sampleFromSchemaGeneric=(s,o={},i=void 0,a=!1)=>{s&&isFunc(s.toJS)&&(s=s.toJS());let u=void 0!==i||s&&void 0!==s.example||s&&void 0!==s.default;const _=!u&&s&&s.oneOf&&s.oneOf.length>0,w=!u&&s&&s.anyOf&&s.anyOf.length>0;if(!u&&(_||w)){const i=objectify(_?s.oneOf[0]:s.anyOf[0]);if(!(s=mergeJsonSchema(s,i,o)).xml&&i.xml&&(s.xml=i.xml),void 0!==s.example&&void 0!==i.example)u=!0;else if(i.properties){s.properties||(s.properties={});let a=objectify(i.properties);for(let u in a)Object.prototype.hasOwnProperty.call(a,u)&&(a[u]&&a[u].deprecated||a[u]&&a[u].readOnly&&!o.includeReadOnly||a[u]&&a[u].writeOnly&&!o.includeWriteOnly||s.properties[u]||(s.properties[u]=a[u],!i.required&&Array.isArray(i.required)&&-1!==i.required.indexOf(u)&&(s.required?s.required.push(u):s.required=[u])))}}const x={};let{xml:C,type:j,example:L,properties:B,additionalProperties:$,items:V}=s||{},{includeReadOnly:U,includeWriteOnly:z}=o;C=C||{};let Y,{name:Z,prefix:ee,namespace:ie}=C,ae={};if(a&&(Z=Z||\"notagname\",Y=(ee?ee+\":\":\"\")+Z,ie)){x[ee?\"xmlns:\"+ee:\"xmlns\"]=ie}a&&(ae[Y]=[]);const schemaHasAny=o=>o.some((o=>Object.prototype.hasOwnProperty.call(s,o)));s&&!j&&(B||$||schemaHasAny(ms)?j=\"object\":V||schemaHasAny(gs)?j=\"array\":schemaHasAny(ys)?(j=\"number\",s.type=\"number\"):u||s.enum||(j=\"string\",s.type=\"string\"));const handleMinMaxItems=o=>{if(null!=s?.maxItems&&(o=o.slice(0,s?.maxItems)),null!=s?.minItems){let i=0;for(;o.length<s?.minItems;)o.push(o[i++%o.length])}return o},ce=objectify(B);let le,pe=0;const hasExceededMaxProperties=()=>s&&null!==s.maxProperties&&void 0!==s.maxProperties&&pe>=s.maxProperties,canAddProperty=o=>!s||null===s.maxProperties||void 0===s.maxProperties||!hasExceededMaxProperties()&&(!(o=>!(s&&s.required&&s.required.length&&s.required.includes(o)))(o)||s.maxProperties-pe-(()=>{if(!s||!s.required)return 0;let o=0;return a?s.required.forEach((s=>o+=void 0===ae[s]?0:1)):s.required.forEach((s=>o+=void 0===ae[Y]?.find((o=>void 0!==o[s]))?0:1)),s.required.length-o})()>0);if(le=a?(i,u=void 0)=>{if(s&&ce[i]){if(ce[i].xml=ce[i].xml||{},ce[i].xml.attribute){const s=Array.isArray(ce[i].enum)?ce[i].enum[0]:void 0,o=ce[i].example,a=ce[i].default;return void(x[ce[i].xml.name||i]=void 0!==o?o:void 0!==a?a:void 0!==s?s:primitive(ce[i]))}ce[i].xml.name=ce[i].xml.name||i}else ce[i]||!1===$||(ce[i]={xml:{name:i}});let _=sampleFromSchemaGeneric(s&&ce[i]||void 0,o,u,a);canAddProperty(i)&&(pe++,Array.isArray(_)?ae[Y]=ae[Y].concat(_):ae[Y].push(_))}:(i,u)=>{if(canAddProperty(i)){if(Object.prototype.hasOwnProperty.call(s,\"discriminator\")&&s.discriminator&&Object.prototype.hasOwnProperty.call(s.discriminator,\"mapping\")&&s.discriminator.mapping&&Object.prototype.hasOwnProperty.call(s,\"$$ref\")&&s.$$ref&&s.discriminator.propertyName===i){for(let o in s.discriminator.mapping)if(-1!==s.$$ref.search(s.discriminator.mapping[o])){ae[i]=o;break}}else ae[i]=sampleFromSchemaGeneric(ce[i],o,u,a);pe++}},u){let u;if(u=sanitizeRef(void 0!==i?i:void 0!==L?L:s.default),!a){if(\"number\"==typeof u&&\"string\"===j)return`${u}`;if(\"string\"!=typeof u||\"string\"===j)return u;try{return JSON.parse(u)}catch(s){return u}}if(s||(j=Array.isArray(u)?\"array\":typeof u),\"array\"===j){if(!Array.isArray(u)){if(\"string\"==typeof u)return u;u=[u]}const i=s?s.items:void 0;i&&(i.xml=i.xml||C||{},i.xml.name=i.xml.name||C.name);let _=u.map((s=>sampleFromSchemaGeneric(i,o,s,a)));return _=handleMinMaxItems(_),C.wrapped?(ae[Y]=_,ds()(x)||ae[Y].push({_attr:x})):ae=_,ae}if(\"object\"===j){if(\"string\"==typeof u)return u;for(let o in u)Object.prototype.hasOwnProperty.call(u,o)&&(s&&ce[o]&&ce[o].readOnly&&!U||s&&ce[o]&&ce[o].writeOnly&&!z||(s&&ce[o]&&ce[o].xml&&ce[o].xml.attribute?x[ce[o].xml.name||o]=u[o]:le(o,u[o])));return ds()(x)||ae[Y].push({_attr:x}),ae}return ae[Y]=ds()(x)?u:[{_attr:x},u],ae}if(\"object\"===j){for(let s in ce)Object.prototype.hasOwnProperty.call(ce,s)&&(ce[s]&&ce[s].deprecated||ce[s]&&ce[s].readOnly&&!U||ce[s]&&ce[s].writeOnly&&!z||le(s));if(a&&x&&ae[Y].push({_attr:x}),hasExceededMaxProperties())return ae;if(!0===$)a?ae[Y].push({additionalProp:\"Anything can be here\"}):ae.additionalProp1={},pe++;else if($){const i=objectify($),u=sampleFromSchemaGeneric(i,o,void 0,a);if(a&&i.xml&&i.xml.name&&\"notagname\"!==i.xml.name)ae[Y].push(u);else{const o=null!==s.minProperties&&void 0!==s.minProperties&&pe<s.minProperties?s.minProperties-pe:3;for(let s=1;s<=o;s++){if(hasExceededMaxProperties())return ae;if(a){const o={};o[\"additionalProp\"+s]=u.notagname,ae[Y].push(o)}else ae[\"additionalProp\"+s]=u;pe++}}}return ae}if(\"array\"===j){if(!V)return;let i;if(a&&(V.xml=V.xml||s?.xml||{},V.xml.name=V.xml.name||C.name),Array.isArray(V.anyOf))i=V.anyOf.map((s=>sampleFromSchemaGeneric(mergeJsonSchema(s,V,o),o,void 0,a)));else if(Array.isArray(V.oneOf))i=V.oneOf.map((s=>sampleFromSchemaGeneric(mergeJsonSchema(s,V,o),o,void 0,a)));else{if(!(!a||a&&C.wrapped))return sampleFromSchemaGeneric(V,o,void 0,a);i=[sampleFromSchemaGeneric(V,o,void 0,a)]}return i=handleMinMaxItems(i),a&&C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x}),ae):i}let de;if(s&&Array.isArray(s.enum))de=normalizeArray(s.enum)[0];else{if(!s)return;if(de=primitive(s),\"number\"==typeof de){let o=s.minimum;null!=o&&(s.exclusiveMinimum&&o++,de=o);let i=s.maximum;null!=i&&(s.exclusiveMaximum&&i--,de=i)}if(\"string\"==typeof de&&(null!==s.maxLength&&void 0!==s.maxLength&&(de=de.slice(0,s.maxLength)),null!==s.minLength&&void 0!==s.minLength)){let o=0;for(;de.length<s.minLength;)de+=de[o++%de.length]}}if(\"file\"!==j)return a?(ae[Y]=ds()(x)?de:[{_attr:x},de],ae):de},inferSchema=s=>(s.schema&&(s=s.schema),s.properties&&(s.type=\"object\"),s),createXMLExample=(s,o,i)=>{const a=sampleFromSchemaGeneric(s,o,i,!0);if(a)return\"string\"==typeof a?a:ls()(a,{declaration:!0,indent:\"\\t\"})},sampleFromSchema=(s,o,i)=>sampleFromSchemaGeneric(s,o,i,!1),resolver=(s,o,i)=>[s,JSON.stringify(o),JSON.stringify(i)],bs=utils_memoizeN(createXMLExample,resolver),_s=utils_memoizeN(sampleFromSchema,resolver),Ss=[{when:/json/,shouldStringifyTypes:[\"string\"]}],Es=[\"object\"],get_json_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.memoizedSampleFromSchema(o,i,u),x=typeof w,C=Ss.reduce(((s,o)=>o.when.test(a)?[...s,...o.shouldStringifyTypes]:s),Es);return gt()(C,(s=>s===x))?JSON.stringify(w,null,2):w},get_yaml_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.getJsonSampleSchema(o,i,a,u);let x;try{x=fn.dump(fn.load(w),{lineWidth:-1},{schema:rn}),\"\\n\"===x[x.length-1]&&(x=x.slice(0,x.length-1))}catch(s){return console.error(s),\"error: could not generate yaml example\"}return x.replace(/\\t/g,\"  \")},get_xml_sample_schema=s=>(o,i,a)=>{const{fn:u}=s();if(o&&!o.xml&&(o.xml={}),o&&!o.xml.name){if(!o.$$ref&&(o.type||o.items||o.properties||o.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(o.$$ref){let s=o.$$ref.match(/\\S*\\/(\\S+)$/);o.xml.name=s[1]}}return u.memoizedCreateXMLExample(o,i,a)},get_sample_schema=s=>(o,i=\"\",a={},u=void 0)=>{const{fn:_}=s();return\"function\"==typeof o?.toJS&&(o=o.toJS()),\"function\"==typeof u?.toJS&&(u=u.toJS()),/xml/.test(i)?_.getXmlSampleSchema(o,a,u):/(yaml|yml)/.test(i)?_.getYamlSampleSchema(o,a,i,u):_.getJsonSampleSchema(o,a,i,u)},json_schema_5_samples=({getSystem:s})=>{const o=get_json_sample_schema(s),i=get_yaml_sample_schema(s),a=get_xml_sample_schema(s),u=get_sample_schema(s);return{fn:{jsonSchema5:{inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:_s,memoizedCreateXMLExample:bs,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema},inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:_s,memoizedCreateXMLExample:bs,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema}}};var ws=__webpack_require__(37334),xs=__webpack_require__.n(ws);const ks=[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],spec_selectors_state=s=>s||(0,ze.Map)(),Os=Vt(spec_selectors_state,(s=>s.get(\"lastError\"))),Cs=Vt(spec_selectors_state,(s=>s.get(\"url\"))),As=Vt(spec_selectors_state,(s=>s.get(\"spec\")||\"\")),js=Vt(spec_selectors_state,(s=>s.get(\"specSource\")||\"not-editor\")),Is=Vt(spec_selectors_state,(s=>s.get(\"json\",(0,ze.Map)()))),Ps=Vt(Is,(s=>s.toJS())),Ts=Vt(spec_selectors_state,(s=>s.get(\"resolved\",(0,ze.Map)()))),specResolvedSubtree=(s,o)=>s.getIn([\"resolvedSubtrees\",...o],void 0),mergerFn=(s,o)=>ze.Map.isMap(s)&&ze.Map.isMap(o)?o.get(\"$$ref\")?o:(0,ze.OrderedMap)().mergeWith(mergerFn,s,o):o,Ns=Vt(spec_selectors_state,(s=>(0,ze.OrderedMap)().mergeWith(mergerFn,s.get(\"json\"),s.get(\"resolvedSubtrees\")))),spec=s=>Is(s),Ms=Vt(spec,(()=>!1)),Rs=Vt(spec,(s=>returnSelfOrNewMap(s&&s.get(\"info\")))),Ds=Vt(spec,(s=>returnSelfOrNewMap(s&&s.get(\"externalDocs\")))),Ls=Vt(Rs,(s=>s&&s.get(\"version\"))),Fs=Vt(Ls,(s=>/v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(s).slice(1))),Bs=Vt(Ns,(s=>s.get(\"paths\"))),$s=xs()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\"]),qs=Vt(Bs,(s=>{let o=(0,ze.List)();return!ze.Map.isMap(s)||s.isEmpty()||s.forEach(((s,i)=>{if(!s||!s.forEach)return{};s.forEach(((s,a)=>{ks.indexOf(a)<0||(o=o.push((0,ze.fromJS)({path:i,method:a,operation:s,id:`${a}-${i}`})))}))})),o})),Vs=Vt(spec,(s=>(0,ze.Set)(s.get(\"consumes\")))),Us=Vt(spec,(s=>(0,ze.Set)(s.get(\"produces\")))),zs=Vt(spec,(s=>s.get(\"security\",(0,ze.List)()))),Ws=Vt(spec,(s=>s.get(\"securityDefinitions\"))),findDefinition=(s,o)=>{const i=s.getIn([\"resolvedSubtrees\",\"definitions\",o],null),a=s.getIn([\"json\",\"definitions\",o],null);return i||a||null},Js=Vt(spec,(s=>{const o=s.get(\"definitions\");return ze.Map.isMap(o)?o:(0,ze.Map)()})),Hs=Vt(spec,(s=>s.get(\"basePath\"))),Ks=Vt(spec,(s=>s.get(\"host\"))),Gs=Vt(spec,(s=>s.get(\"schemes\",(0,ze.Map)()))),Ys=Vt([qs,Vs,Us],((s,o,i)=>s.map((s=>s.update(\"operation\",(s=>ze.Map.isMap(s)?s.withMutations((s=>(s.get(\"consumes\")||s.update(\"consumes\",(s=>(0,ze.Set)(s).merge(o))),s.get(\"produces\")||s.update(\"produces\",(s=>(0,ze.Set)(s).merge(i))),s))):(0,ze.Map)())))))),Xs=Vt(spec,(s=>{const o=s.get(\"tags\",(0,ze.List)());return ze.List.isList(o)?o.filter((s=>ze.Map.isMap(s))):(0,ze.List)()})),tagDetails=(s,o)=>(Xs(s)||(0,ze.List)()).filter(ze.Map.isMap).find((s=>s.get(\"name\")===o),(0,ze.Map)()),Qs=Vt(Ys,Xs,((s,o)=>s.reduce(((s,o)=>{let i=(0,ze.Set)(o.getIn([\"operation\",\"tags\"]));return i.count()<1?s.update(\"default\",(0,ze.List)(),(s=>s.push(o))):i.reduce(((s,i)=>s.update(i,(0,ze.List)(),(s=>s.push(o)))),s)}),o.reduce(((s,o)=>s.set(o.get(\"name\"),(0,ze.List)())),(0,ze.OrderedMap)())))),selectors_taggedOperations=s=>({getConfigs:o})=>{let{tagsSorter:i,operationsSorter:a}=o();return Qs(s).sortBy(((s,o)=>o),((s,o)=>{let a=\"function\"==typeof i?i:Pt.tagsSorter[i];return a?a(s,o):null})).map(((o,i)=>{let u=\"function\"==typeof a?a:Pt.operationsSorter[a],_=u?o.sort(u):o;return(0,ze.Map)({tagDetails:tagDetails(s,i),operations:_})}))},Zs=Vt(spec_selectors_state,(s=>s.get(\"responses\",(0,ze.Map)()))),eo=Vt(spec_selectors_state,(s=>s.get(\"requests\",(0,ze.Map)()))),to=Vt(spec_selectors_state,(s=>s.get(\"mutatedRequests\",(0,ze.Map)()))),responseFor=(s,o,i)=>Zs(s).getIn([o,i],null),requestFor=(s,o,i)=>eo(s).getIn([o,i],null),mutatedRequestFor=(s,o,i)=>to(s).getIn([o,i],null),allowTryItOutFor=()=>!0,parameterWithMetaByIdentity=(s,o,i)=>{const a=Ns(s).getIn([\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)()),u=s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)());return a.map((s=>{const o=u.get(`${i.get(\"in\")}.${i.get(\"name\")}`),a=u.get(`${i.get(\"in\")}.${i.get(\"name\")}.hash-${i.hashCode()}`);return(0,ze.OrderedMap)().merge(s,o,a)})).find((s=>s.get(\"in\")===i.get(\"in\")&&s.get(\"name\")===i.get(\"name\")),(0,ze.OrderedMap)())},parameterInclusionSettingFor=(s,o,i,a)=>{const u=`${a}.${i}`;return s.getIn([\"meta\",\"paths\",...o,\"parameter_inclusions\",u],!1)},parameterWithMeta=(s,o,i,a)=>{const u=Ns(s).getIn([\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)()).find((s=>s.get(\"in\")===a&&s.get(\"name\")===i),(0,ze.OrderedMap)());return parameterWithMetaByIdentity(s,o,u)},operationWithMeta=(s,o,i)=>{const a=Ns(s).getIn([\"paths\",o,i],(0,ze.OrderedMap)()),u=s.getIn([\"meta\",\"paths\",o,i],(0,ze.OrderedMap)()),_=a.get(\"parameters\",(0,ze.List)()).map((a=>parameterWithMetaByIdentity(s,[o,i],a)));return(0,ze.OrderedMap)().merge(a,u).set(\"parameters\",_)};function getParameter(s,o,i,a){return o=o||[],s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([])).find((s=>ze.Map.isMap(s)&&s.get(\"name\")===i&&s.get(\"in\")===a))||(0,ze.Map)()}const ro=Vt(spec,(s=>{const o=s.get(\"host\");return\"string\"==typeof o&&o.length>0&&\"/\"!==o[0]}));function parameterValues(s,o,i){return o=o||[],operationWithMeta(s,...o).get(\"parameters\",(0,ze.List)()).reduce(((s,o)=>{let a=i&&\"body\"===o.get(\"in\")?o.get(\"value_xml\"):o.get(\"value\");return ze.List.isList(a)&&(a=a.filter((s=>\"\"!==s))),s.set(paramToIdentifier(o,{allowHashes:!1}),a)}),(0,ze.fromJS)({}))}function parametersIncludeIn(s,o=\"\"){if(ze.List.isList(s))return s.some((s=>ze.Map.isMap(s)&&s.get(\"in\")===o))}function parametersIncludeType(s,o=\"\"){if(ze.List.isList(s))return s.some((s=>ze.Map.isMap(s)&&s.get(\"type\")===o))}function contentTypeValues(s,o){o=o||[];let i=Ns(s).getIn([\"paths\",...o],(0,ze.fromJS)({})),a=s.getIn([\"meta\",\"paths\",...o],(0,ze.fromJS)({})),u=currentProducesFor(s,o);const _=i.get(\"parameters\")||new ze.List,w=a.get(\"consumes_value\")?a.get(\"consumes_value\"):parametersIncludeType(_,\"file\")?\"multipart/form-data\":parametersIncludeType(_,\"formData\")?\"application/x-www-form-urlencoded\":void 0;return(0,ze.fromJS)({requestContentType:w,responseContentType:u})}function currentProducesFor(s,o){o=o||[];const i=Ns(s).getIn([\"paths\",...o],null);if(null===i)return;const a=s.getIn([\"meta\",\"paths\",...o,\"produces_value\"],null),u=i.getIn([\"produces\",0],null);return a||u||\"application/json\"}function producesOptionsFor(s,o){o=o||[];const i=Ns(s),a=i.getIn([\"paths\",...o],null);if(null===a)return;const[u]=o,_=a.get(\"produces\",null),w=i.getIn([\"paths\",u,\"produces\"],null),x=i.getIn([\"produces\"],null);return _||w||x}function consumesOptionsFor(s,o){o=o||[];const i=Ns(s),a=i.getIn([\"paths\",...o],null);if(null===a)return;const[u]=o,_=a.get(\"consumes\",null),w=i.getIn([\"paths\",u,\"consumes\"],null),x=i.getIn([\"consumes\"],null);return _||w||x}const operationScheme=(s,o,i)=>{let a=s.get(\"url\").match(/^([a-z][a-z0-9+\\-.]*):/),u=Array.isArray(a)?a[1]:null;return s.getIn([\"scheme\",o,i])||s.getIn([\"scheme\",\"_defaultScheme\"])||u||\"\"},canExecuteScheme=(s,o,i)=>[\"http\",\"https\"].indexOf(operationScheme(s,o,i))>-1,validationErrors=(s,o)=>{o=o||[];const i=s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([])),a=[];if(0===i.length)return a;const getErrorsWithPaths=(s,o=[])=>{const getNestedErrorsWithPaths=(s,o)=>{const i=[...o,s.get(\"propKey\")||s.get(\"index\")];return ze.Map.isMap(s.get(\"error\"))?getErrorsWithPaths(s.get(\"error\"),i):{error:s.get(\"error\"),path:i}};return ze.List.isList(s)?s.map((s=>ze.Map.isMap(s)?getNestedErrorsWithPaths(s,o):{error:s,path:o})):getNestedErrorsWithPaths(s,o)};return i.forEach(((s,o)=>{const i=o.split(\".\").slice(1,-1).join(\".\"),u=s.get(\"errors\");if(u&&u.count()){getErrorsWithPaths(u).forEach((({error:s,path:o})=>{a.push(((s,o,i)=>`For '${i}'${(o=o.reduce(((s,o)=>\"number\"==typeof o?`${s}[${o}]`:s?`${s}.${o}`:o),\"\"))?` at path '${o}'`:\"\"}: ${s}.`)(s,o,i))}))}})),a},validateBeforeExecute=(s,o)=>0===validationErrors(s,o).length,getOAS3RequiredRequestBodyContentType=(s,o)=>{let i={requestBody:!1,requestContentType:{}},a=s.getIn([\"resolvedSubtrees\",\"paths\",...o,\"requestBody\"],(0,ze.fromJS)([]));return a.size<1||(a.getIn([\"required\"])&&(i.requestBody=a.getIn([\"required\"])),a.getIn([\"content\"]).entrySeq().forEach((s=>{const o=s[0];if(s[1].getIn([\"schema\",\"required\"])){const a=s[1].getIn([\"schema\",\"required\"]).toJS();i.requestContentType[o]=a}}))),i},isMediaTypeSchemaPropertiesEqual=(s,o,i,a)=>{if((i||a)&&i===a)return!0;let u=s.getIn([\"resolvedSubtrees\",\"paths\",...o,\"requestBody\",\"content\"],(0,ze.fromJS)([]));if(u.size<2||!i||!a)return!1;let _=u.getIn([i,\"schema\",\"properties\"],(0,ze.fromJS)([])),w=u.getIn([a,\"schema\",\"properties\"],(0,ze.fromJS)([]));return!!_.equals(w)};function returnSelfOrNewMap(s){return ze.Map.isMap(s)?s:new ze.Map}var no=__webpack_require__(85015),so=__webpack_require__.n(no),oo=__webpack_require__(38221),io=__webpack_require__.n(oo),ao=__webpack_require__(63560),co=__webpack_require__.n(ao),lo=__webpack_require__(56367),uo=__webpack_require__.n(lo);const po=\"spec_update_spec\",ho=\"spec_update_url\",fo=\"spec_update_json\",mo=\"spec_update_param\",go=\"spec_update_empty_param_inclusion\",yo=\"spec_validate_param\",vo=\"spec_set_response\",bo=\"spec_set_request\",_o=\"spec_set_mutated_request\",So=\"spec_log_request\",Eo=\"spec_clear_response\",wo=\"spec_clear_request\",xo=\"spec_clear_validate_param\",ko=\"spec_update_operation_meta_value\",Oo=\"spec_update_resolved\",Co=\"spec_update_resolved_subtree\",Ao=\"set_scheme\",toStr=s=>so()(s)?s:\"\";function updateSpec(s){const o=toStr(s).replace(/\\t/g,\"  \");if(\"string\"==typeof s)return{type:po,payload:o}}function updateResolved(s){return{type:Oo,payload:s}}function updateUrl(s){return{type:ho,payload:s}}function updateJsonSpec(s){return{type:fo,payload:s}}const parseToJson=s=>({specActions:o,specSelectors:i,errActions:a})=>{let{specStr:u}=i,_=null;try{s=s||u(),a.clear({source:\"parser\"}),_=fn.load(s,{schema:rn})}catch(s){return console.error(s),a.newSpecErr({source:\"parser\",level:\"error\",message:s.reason,line:s.mark&&s.mark.line?s.mark.line+1:void 0})}return _&&\"object\"==typeof _?o.updateJsonSpec(_):o.updateJsonSpec({})};let jo=!1;const resolveSpec=(s,o)=>({specActions:i,specSelectors:a,errActions:u,fn:{fetch:_,resolve:w,AST:x={}},getConfigs:C})=>{jo||(console.warn(\"specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!\"),jo=!0);const{modelPropertyMacro:j,parameterMacro:L,requestInterceptor:B,responseInterceptor:$}=C();void 0===s&&(s=a.specJson()),void 0===o&&(o=a.url());let V=x.getLineNumberForPath?x.getLineNumberForPath:()=>{},U=a.specStr();return w({fetch:_,spec:s,baseDoc:String(new URL(o,document.baseURI)),modelPropertyMacro:j,parameterMacro:L,requestInterceptor:B,responseInterceptor:$}).then((({spec:s,errors:o})=>{if(u.clear({type:\"thrown\"}),Array.isArray(o)&&o.length>0){let s=o.map((s=>(console.error(s),s.line=s.fullPath?V(U,s.fullPath):null,s.path=s.fullPath?s.fullPath.join(\".\"):null,s.level=\"error\",s.type=\"thrown\",s.source=\"resolver\",Object.defineProperty(s,\"message\",{enumerable:!0,value:s.message}),s)));u.newThrownErrBatch(s)}return i.updateResolved(s)}))};let Io=[];const Po=io()((()=>{const s=Io.reduce(((s,{path:o,system:i})=>(s.has(i)||s.set(i,[]),s.get(i).push(o),s)),new Map);Io=[],s.forEach((async(s,o)=>{if(!o)return void console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\");if(!o.fn.resolveSubtree)return void console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\");const{errActions:i,errSelectors:a,fn:{resolveSubtree:u,fetch:_,AST:w={}},specSelectors:x,specActions:C}=o,j=w.getLineNumberForPath??xs()(void 0),L=x.specStr(),{modelPropertyMacro:B,parameterMacro:$,requestInterceptor:V,responseInterceptor:U}=o.getConfigs();try{const o=await s.reduce((async(s,o)=>{let{resultMap:w,specWithCurrentSubtrees:C}=await s;const{errors:z,spec:Y}=await u(C,o,{baseDoc:String(new URL(x.url(),document.baseURI)),modelPropertyMacro:B,parameterMacro:$,requestInterceptor:V,responseInterceptor:U});if(a.allErrors().size&&i.clearBy((s=>\"thrown\"!==s.get(\"type\")||\"resolver\"!==s.get(\"source\")||!s.get(\"fullPath\")?.every(((s,i)=>s===o[i]||void 0===o[i])))),Array.isArray(z)&&z.length>0){let s=z.map((s=>(s.line=s.fullPath?j(L,s.fullPath):null,s.path=s.fullPath?s.fullPath.join(\".\"):null,s.level=\"error\",s.type=\"thrown\",s.source=\"resolver\",Object.defineProperty(s,\"message\",{enumerable:!0,value:s.message}),s)));i.newThrownErrBatch(s)}return Y&&x.isOAS3()&&\"components\"===o[0]&&\"securitySchemes\"===o[1]&&await Promise.all(Object.values(Y).filter((s=>\"openIdConnect\"===s?.type)).map((async s=>{const o={url:s.openIdConnectUrl,requestInterceptor:V,responseInterceptor:U};try{const i=await _(o);i instanceof Error||i.status>=400?console.error(i.statusText+\" \"+o.url):s.openIdConnectData=JSON.parse(i.text)}catch(s){console.error(s)}}))),co()(w,o,Y),C=uo()(o,Y,C),{resultMap:w,specWithCurrentSubtrees:C}}),Promise.resolve({resultMap:(x.specResolvedSubtree([])||(0,ze.Map)()).toJS(),specWithCurrentSubtrees:x.specJS()}));C.updateResolvedSubtree([],o.resultMap)}catch(s){console.error(s)}}))}),35),requestResolvedSubtree=s=>o=>{Io.find((({path:i,system:a})=>a===o&&i.toString()===s.toString()))||(Io.push({path:s,system:o}),Po())};function changeParam(s,o,i,a,u){return{type:mo,payload:{path:s,value:a,paramName:o,paramIn:i,isXml:u}}}function changeParamByIdentity(s,o,i,a){return{type:mo,payload:{path:s,param:o,value:i,isXml:a}}}const updateResolvedSubtree=(s,o)=>({type:Co,payload:{path:s,value:o}}),invalidateResolvedSubtreeCache=()=>({type:Co,payload:{path:[],value:(0,ze.Map)()}}),validateParams=(s,o)=>({type:yo,payload:{pathMethod:s,isOAS3:o}}),updateEmptyParamInclusion=(s,o,i,a)=>({type:go,payload:{pathMethod:s,paramName:o,paramIn:i,includeEmptyValue:a}});function clearValidateParams(s){return{type:xo,payload:{pathMethod:s}}}function changeConsumesValue(s,o){return{type:ko,payload:{path:s,value:o,key:\"consumes_value\"}}}function changeProducesValue(s,o){return{type:ko,payload:{path:s,value:o,key:\"produces_value\"}}}const setResponse=(s,o,i)=>({payload:{path:s,method:o,res:i},type:vo}),setRequest=(s,o,i)=>({payload:{path:s,method:o,req:i},type:bo}),setMutatedRequest=(s,o,i)=>({payload:{path:s,method:o,req:i},type:_o}),logRequest=s=>({payload:s,type:So}),executeRequest=s=>({fn:o,specActions:i,specSelectors:a,getConfigs:u,oas3Selectors:_})=>{let{pathName:w,method:x,operation:C}=s,{requestInterceptor:j,responseInterceptor:L}=u(),B=C.toJS();if(C&&C.get(\"parameters\")&&C.get(\"parameters\").filter((s=>s&&!0===s.get(\"allowEmptyValue\"))).forEach((o=>{if(a.parameterInclusionSettingFor([w,x],o.get(\"name\"),o.get(\"in\"))){s.parameters=s.parameters||{};const i=paramToValue(o,s.parameters);(!i||i&&0===i.size)&&(s.parameters[o.get(\"name\")]=\"\")}})),s.contextUrl=Nt()(a.url()).toString(),B&&B.operationId?s.operationId=B.operationId:B&&w&&x&&(s.operationId=o.opId(B,w,x)),a.isOAS3()){const o=`${w}:${x}`;s.server=_.selectedServer(o)||_.selectedServer();const i=_.serverVariables({server:s.server,namespace:o}).toJS(),a=_.serverVariables({server:s.server}).toJS();s.serverVariables=Object.keys(i).length?i:a,s.requestContentType=_.requestContentType(w,x),s.responseContentType=_.responseContentType(w,x)||\"*/*\";const u=_.requestBodyValue(w,x),C=_.requestBodyInclusionSetting(w,x);u&&u.toJS?s.requestBody=u.map((s=>ze.Map.isMap(s)?s.get(\"value\"):s)).filter(((s,o)=>(Array.isArray(s)?0!==s.length:!isEmptyValue(s))||C.get(o))).toJS():s.requestBody=u}let $=Object.assign({},s);$=o.buildRequest($),i.setRequest(s.pathName,s.method,$);s.requestInterceptor=async o=>{let a=await j.apply(void 0,[o]),u=Object.assign({},a);return i.setMutatedRequest(s.pathName,s.method,u),a},s.responseInterceptor=L;const V=Date.now();return o.execute(s).then((o=>{o.duration=Date.now()-V,i.setResponse(s.pathName,s.method,o)})).catch((o=>{\"Failed to fetch\"===o.message&&(o.name=\"\",o.message='**Failed to fetch.**  \\n**Possible Reasons:** \\n  - CORS \\n  - Network Failure \\n  - URL scheme must be \"http\" or \"https\" for CORS request.'),i.setResponse(s.pathName,s.method,{error:!0,err:o})}))},actions_execute=({path:s,method:o,...i}={})=>a=>{let{fn:{fetch:u},specSelectors:_,specActions:w}=a,x=_.specJsonWithResolvedSubtrees().toJS(),C=_.operationScheme(s,o),{requestContentType:j,responseContentType:L}=_.contentTypeValues([s,o]).toJS(),B=/xml/i.test(j),$=_.parameterValues([s,o],B).toJS();return w.executeRequest({...i,fetch:u,spec:x,pathName:s,method:o,parameters:$,requestContentType:j,scheme:C,responseContentType:L})};function clearResponse(s,o){return{type:Eo,payload:{path:s,method:o}}}function clearRequest(s,o){return{type:wo,payload:{path:s,method:o}}}function setScheme(s,o,i){return{type:Ao,payload:{scheme:s,path:o,method:i}}}const To={[po]:(s,o)=>\"string\"==typeof o.payload?s.set(\"spec\",o.payload):s,[ho]:(s,o)=>s.set(\"url\",o.payload+\"\"),[fo]:(s,o)=>s.set(\"json\",fromJSOrdered(o.payload)),[Oo]:(s,o)=>s.setIn([\"resolved\"],fromJSOrdered(o.payload)),[Co]:(s,o)=>{const{value:i,path:a}=o.payload;return s.setIn([\"resolvedSubtrees\",...a],fromJSOrdered(i))},[mo]:(s,{payload:o})=>{let{path:i,paramName:a,paramIn:u,param:_,value:w,isXml:x}=o,C=_?paramToIdentifier(_):`${u}.${a}`;const j=x?\"value_xml\":\"value\";return s.setIn([\"meta\",\"paths\",...i,\"parameters\",C,j],(0,ze.fromJS)(w))},[go]:(s,{payload:o})=>{let{pathMethod:i,paramName:a,paramIn:u,includeEmptyValue:_}=o;if(!a||!u)return console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\"),s;const w=`${u}.${a}`;return s.setIn([\"meta\",\"paths\",...i,\"parameter_inclusions\",w],_)},[yo]:(s,{payload:{pathMethod:o,isOAS3:i}})=>{const a=Ns(s).getIn([\"paths\",...o]),u=parameterValues(s,o).toJS();return s.updateIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)({}),(_=>a.get(\"parameters\",(0,ze.List)()).reduce(((a,_)=>{const w=paramToValue(_,u),x=parameterInclusionSettingFor(s,o,_.get(\"name\"),_.get(\"in\")),C=((s,o,{isOAS3:i=!1,bypassRequiredCheck:a=!1}={})=>{let u=s.get(\"required\"),{schema:_,parameterContentMediaType:w}=getParameterSchema(s,{isOAS3:i});return validateValueBySchema(o,_,u,a,w)})(_,w,{bypassRequiredCheck:x,isOAS3:i});return a.setIn([paramToIdentifier(_),\"errors\"],(0,ze.fromJS)(C))}),_)))},[xo]:(s,{payload:{pathMethod:o}})=>s.updateIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([]),(s=>s.map((s=>s.set(\"errors\",(0,ze.fromJS)([])))))),[vo]:(s,{payload:{res:o,path:i,method:a}})=>{let u;u=o.error?Object.assign({error:!0,name:o.err.name,message:o.err.message,statusCode:o.err.statusCode},o.err.response):o,u.headers=u.headers||{};let _=s.setIn([\"responses\",i,a],fromJSOrdered(u));return lt.Blob&&u.data instanceof lt.Blob&&(_=_.setIn([\"responses\",i,a,\"text\"],u.data)),_},[bo]:(s,{payload:{req:o,path:i,method:a}})=>s.setIn([\"requests\",i,a],fromJSOrdered(o)),[_o]:(s,{payload:{req:o,path:i,method:a}})=>s.setIn([\"mutatedRequests\",i,a],fromJSOrdered(o)),[ko]:(s,{payload:{path:o,value:i,key:a}})=>{let u=[\"paths\",...o],_=[\"meta\",\"paths\",...o];return s.getIn([\"json\",...u])||s.getIn([\"resolved\",...u])||s.getIn([\"resolvedSubtrees\",...u])?s.setIn([..._,a],(0,ze.fromJS)(i)):s},[Eo]:(s,{payload:{path:o,method:i}})=>s.deleteIn([\"responses\",o,i]),[wo]:(s,{payload:{path:o,method:i}})=>s.deleteIn([\"requests\",o,i]),[Ao]:(s,{payload:{scheme:o,path:i,method:a}})=>i&&a?s.setIn([\"scheme\",i,a],o):i||a?void 0:s.setIn([\"scheme\",\"_defaultScheme\"],o)},wrap_actions_updateSpec=(s,{specActions:o})=>(...i)=>{s(...i),o.parseToJson(...i)},wrap_actions_updateJsonSpec=(s,{specActions:o})=>(...i)=>{s(...i),o.invalidateResolvedSubtreeCache();const[a]=i,u=An()(a,[\"paths\"])||{};Object.keys(u).forEach((s=>{const i=An()(u,[s]);as()(i)&&i.$ref&&o.requestResolvedSubtree([\"paths\",s])})),o.requestResolvedSubtree([\"components\",\"securitySchemes\"])},wrap_actions_executeRequest=(s,{specActions:o})=>i=>(o.logRequest(i),s(i)),wrap_actions_validateParams=(s,{specSelectors:o})=>i=>s(i,o.isOAS3()),plugins_spec=()=>({statePlugins:{spec:{wrapActions:{...Y},reducers:{...To},actions:{...z},selectors:{...U}}}});var No=function(){var extendStatics=function(s,o){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var i in o)o.hasOwnProperty(i)&&(s[i]=o[i])},extendStatics(s,o)};return function(s,o){function __(){this.constructor=s}extendStatics(s,o),s.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}}(),Mo=Object.prototype.hasOwnProperty;function module_helpers_hasOwnProperty(s,o){return Mo.call(s,o)}function _objectKeys(s){if(Array.isArray(s)){for(var o=new Array(s.length),i=0;i<o.length;i++)o[i]=\"\"+i;return o}if(Object.keys)return Object.keys(s);var a=[];for(var u in s)module_helpers_hasOwnProperty(s,u)&&a.push(u);return a}function _deepClone(s){switch(typeof s){case\"object\":return JSON.parse(JSON.stringify(s));case\"undefined\":return null;default:return s}}function helpers_isInteger(s){for(var o,i=0,a=s.length;i<a;){if(!((o=s.charCodeAt(i))>=48&&o<=57))return!1;i++}return!0}function escapePathComponent(s){return-1===s.indexOf(\"/\")&&-1===s.indexOf(\"~\")?s:s.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}function unescapePathComponent(s){return s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}function hasUndefined(s){if(void 0===s)return!0;if(s)if(Array.isArray(s)){for(var o=0,i=s.length;o<i;o++)if(hasUndefined(s[o]))return!0}else if(\"object\"==typeof s)for(var a=_objectKeys(s),u=a.length,_=0;_<u;_++)if(hasUndefined(s[a[_]]))return!0;return!1}function patchErrorMessageFormatter(s,o){var i=[s];for(var a in o){var u=\"object\"==typeof o[a]?JSON.stringify(o[a],null,2):o[a];void 0!==u&&i.push(a+\": \"+u)}return i.join(\"\\n\")}var Ro=function(s){function PatchError(o,i,a,u,_){var w=this.constructor,x=s.call(this,patchErrorMessageFormatter(o,{name:i,index:a,operation:u,tree:_}))||this;return x.name=i,x.index=a,x.operation=u,x.tree=_,Object.setPrototypeOf(x,w.prototype),x.message=patchErrorMessageFormatter(o,{name:i,index:a,operation:u,tree:_}),x}return No(PatchError,s),PatchError}(Error),Do=Ro,Lo=_deepClone,Fo={add:function(s,o,i){return s[o]=this.value,{newDocument:i}},remove:function(s,o,i){var a=s[o];return delete s[o],{newDocument:i,removed:a}},replace:function(s,o,i){var a=s[o];return s[o]=this.value,{newDocument:i,removed:a}},move:function(s,o,i){var a=getValueByPointer(i,this.path);a&&(a=_deepClone(a));var u=applyOperation(i,{op:\"remove\",path:this.from}).removed;return applyOperation(i,{op:\"add\",path:this.path,value:u}),{newDocument:i,removed:a}},copy:function(s,o,i){var a=getValueByPointer(i,this.from);return applyOperation(i,{op:\"add\",path:this.path,value:_deepClone(a)}),{newDocument:i}},test:function(s,o,i){return{newDocument:i,test:_areEquals(s[o],this.value)}},_get:function(s,o,i){return this.value=s[o],{newDocument:i}}},Bo={add:function(s,o,i){return helpers_isInteger(o)?s.splice(o,0,this.value):s[o]=this.value,{newDocument:i,index:o}},remove:function(s,o,i){return{newDocument:i,removed:s.splice(o,1)[0]}},replace:function(s,o,i){var a=s[o];return s[o]=this.value,{newDocument:i,removed:a}},move:Fo.move,copy:Fo.copy,test:Fo.test,_get:Fo._get};function getValueByPointer(s,o){if(\"\"==o)return s;var i={op:\"_get\",path:o};return applyOperation(s,i),i.value}function applyOperation(s,o,i,a,u,_){if(void 0===i&&(i=!1),void 0===a&&(a=!0),void 0===u&&(u=!0),void 0===_&&(_=0),i&&(\"function\"==typeof i?i(o,0,s,o.path):validator(o,0)),\"\"===o.path){var w={newDocument:s};if(\"add\"===o.op)return w.newDocument=o.value,w;if(\"replace\"===o.op)return w.newDocument=o.value,w.removed=s,w;if(\"move\"===o.op||\"copy\"===o.op)return w.newDocument=getValueByPointer(s,o.from),\"move\"===o.op&&(w.removed=s),w;if(\"test\"===o.op){if(w.test=_areEquals(s,o.value),!1===w.test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w.newDocument=s,w}if(\"remove\"===o.op)return w.removed=s,w.newDocument=null,w;if(\"_get\"===o.op)return o.value=s,w;if(i)throw new Do(\"Operation `op` property is not one of operations defined in RFC-6902\",\"OPERATION_OP_INVALID\",_,o,s);return w}a||(s=_deepClone(s));var x=(o.path||\"\").split(\"/\"),C=s,j=1,L=x.length,B=void 0,$=void 0,V=void 0;for(V=\"function\"==typeof i?i:validator;;){if(($=x[j])&&-1!=$.indexOf(\"~\")&&($=unescapePathComponent($)),u&&(\"__proto__\"==$||\"prototype\"==$&&j>0&&\"constructor\"==x[j-1]))throw new TypeError(\"JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README\");if(i&&void 0===B&&(void 0===C[$]?B=x.slice(0,j).join(\"/\"):j==L-1&&(B=o.path),void 0!==B&&V(o,0,s,B)),j++,Array.isArray(C)){if(\"-\"===$)$=C.length;else{if(i&&!helpers_isInteger($))throw new Do(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\",\"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\",_,o,s);helpers_isInteger($)&&($=~~$)}if(j>=L){if(i&&\"add\"===o.op&&$>C.length)throw new Do(\"The specified index MUST NOT be greater than the number of elements in the array\",\"OPERATION_VALUE_OUT_OF_BOUNDS\",_,o,s);if(!1===(w=Bo[o.op].call(o,C,$,s)).test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w}}else if(j>=L){if(!1===(w=Fo[o.op].call(o,C,$,s)).test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w}if(C=C[$],i&&j<L&&(!C||\"object\"!=typeof C))throw new Do(\"Cannot perform operation at the desired path\",\"OPERATION_PATH_UNRESOLVABLE\",_,o,s)}}function applyPatch(s,o,i,a,u){if(void 0===a&&(a=!0),void 0===u&&(u=!0),i&&!Array.isArray(o))throw new Do(\"Patch sequence must be an array\",\"SEQUENCE_NOT_AN_ARRAY\");a||(s=_deepClone(s));for(var _=new Array(o.length),w=0,x=o.length;w<x;w++)_[w]=applyOperation(s,o[w],i,!0,u,w),s=_[w].newDocument;return _.newDocument=s,_}function applyReducer(s,o,i){var a=applyOperation(s,o);if(!1===a.test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",i,o,s);return a.newDocument}function validator(s,o,i,a){if(\"object\"!=typeof s||null===s||Array.isArray(s))throw new Do(\"Operation is not an object\",\"OPERATION_NOT_AN_OBJECT\",o,s,i);if(!Fo[s.op])throw new Do(\"Operation `op` property is not one of operations defined in RFC-6902\",\"OPERATION_OP_INVALID\",o,s,i);if(\"string\"!=typeof s.path)throw new Do(\"Operation `path` property is not a string\",\"OPERATION_PATH_INVALID\",o,s,i);if(0!==s.path.indexOf(\"/\")&&s.path.length>0)throw new Do('Operation `path` property must start with \"/\"',\"OPERATION_PATH_INVALID\",o,s,i);if((\"move\"===s.op||\"copy\"===s.op)&&\"string\"!=typeof s.from)throw new Do(\"Operation `from` property is not present (applicable in `move` and `copy` operations)\",\"OPERATION_FROM_REQUIRED\",o,s,i);if((\"add\"===s.op||\"replace\"===s.op||\"test\"===s.op)&&void 0===s.value)throw new Do(\"Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)\",\"OPERATION_VALUE_REQUIRED\",o,s,i);if((\"add\"===s.op||\"replace\"===s.op||\"test\"===s.op)&&hasUndefined(s.value))throw new Do(\"Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)\",\"OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED\",o,s,i);if(i)if(\"add\"==s.op){var u=s.path.split(\"/\").length,_=a.split(\"/\").length;if(u!==_+1&&u!==_)throw new Do(\"Cannot perform an `add` operation at the desired path\",\"OPERATION_PATH_CANNOT_ADD\",o,s,i)}else if(\"replace\"===s.op||\"remove\"===s.op||\"_get\"===s.op){if(s.path!==a)throw new Do(\"Cannot perform the operation at a path that does not exist\",\"OPERATION_PATH_UNRESOLVABLE\",o,s,i)}else if(\"move\"===s.op||\"copy\"===s.op){var w=validate([{op:\"_get\",path:s.from,value:void 0}],i);if(w&&\"OPERATION_PATH_UNRESOLVABLE\"===w.name)throw new Do(\"Cannot perform the operation from a path that does not exist\",\"OPERATION_FROM_UNRESOLVABLE\",o,s,i)}}function validate(s,o,i){try{if(!Array.isArray(s))throw new Do(\"Patch sequence must be an array\",\"SEQUENCE_NOT_AN_ARRAY\");if(o)applyPatch(_deepClone(o),_deepClone(s),i||!0);else{i=i||validator;for(var a=0;a<s.length;a++)i(s[a],a,o,void 0)}}catch(s){if(s instanceof Do)return s;throw s}}function _areEquals(s,o){if(s===o)return!0;if(s&&o&&\"object\"==typeof s&&\"object\"==typeof o){var i,a,u,_=Array.isArray(s),w=Array.isArray(o);if(_&&w){if((a=s.length)!=o.length)return!1;for(i=a;0!=i--;)if(!_areEquals(s[i],o[i]))return!1;return!0}if(_!=w)return!1;var x=Object.keys(s);if((a=x.length)!==Object.keys(o).length)return!1;for(i=a;0!=i--;)if(!o.hasOwnProperty(x[i]))return!1;for(i=a;0!=i--;)if(!_areEquals(s[u=x[i]],o[u]))return!1;return!0}return s!=s&&o!=o}var $o=new WeakMap,qo=function qo(s){this.observers=new Map,this.obj=s},Vo=function Vo(s,o){this.callback=s,this.observer=o};function unobserve(s,o){o.unobserve()}function observe(s,o){var i,a=function getMirror(s){return $o.get(s)}(s);if(a){var u=function getObserverFromMirror(s,o){return s.observers.get(o)}(a,o);i=u&&u.observer}else a=new qo(s),$o.set(s,a);if(i)return i;if(i={},a.value=_deepClone(s),o){i.callback=o,i.next=null;var dirtyCheck=function(){generate(i)},fastCheck=function(){clearTimeout(i.next),i.next=setTimeout(dirtyCheck)};\"undefined\"!=typeof window&&(window.addEventListener(\"mouseup\",fastCheck),window.addEventListener(\"keyup\",fastCheck),window.addEventListener(\"mousedown\",fastCheck),window.addEventListener(\"keydown\",fastCheck),window.addEventListener(\"change\",fastCheck))}return i.patches=[],i.object=s,i.unobserve=function(){generate(i),clearTimeout(i.next),function removeObserverFromMirror(s,o){s.observers.delete(o.callback)}(a,i),\"undefined\"!=typeof window&&(window.removeEventListener(\"mouseup\",fastCheck),window.removeEventListener(\"keyup\",fastCheck),window.removeEventListener(\"mousedown\",fastCheck),window.removeEventListener(\"keydown\",fastCheck),window.removeEventListener(\"change\",fastCheck))},a.observers.set(o,new Vo(o,i)),i}function generate(s,o){void 0===o&&(o=!1);var i=$o.get(s.object);_generate(i.value,s.object,s.patches,\"\",o),s.patches.length&&applyPatch(i.value,s.patches);var a=s.patches;return a.length>0&&(s.patches=[],s.callback&&s.callback(a)),a}function _generate(s,o,i,a,u){if(o!==s){\"function\"==typeof o.toJSON&&(o=o.toJSON());for(var _=_objectKeys(o),w=_objectKeys(s),x=!1,C=w.length-1;C>=0;C--){var j=s[B=w[C]];if(!module_helpers_hasOwnProperty(o,B)||void 0===o[B]&&void 0!==j&&!1===Array.isArray(o))Array.isArray(s)===Array.isArray(o)?(u&&i.push({op:\"test\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(j)}),i.push({op:\"remove\",path:a+\"/\"+escapePathComponent(B)}),x=!0):(u&&i.push({op:\"test\",path:a,value:s}),i.push({op:\"replace\",path:a,value:o}),!0);else{var L=o[B];\"object\"==typeof j&&null!=j&&\"object\"==typeof L&&null!=L&&Array.isArray(j)===Array.isArray(L)?_generate(j,L,i,a+\"/\"+escapePathComponent(B),u):j!==L&&(u&&i.push({op:\"test\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(j)}),i.push({op:\"replace\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(L)}))}}if(x||_.length!=w.length)for(C=0;C<_.length;C++){var B;module_helpers_hasOwnProperty(s,B=_[C])||void 0===o[B]||i.push({op:\"add\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(o[B])})}}}function compare(s,o,i){void 0===i&&(i=!1);var a=[];return _generate(s,o,a,\"\",i),a}Object.assign({},Z,ee,{JsonPatchError:Ro,deepClone:_deepClone,escapePathComponent,unescapePathComponent});var Uo=__webpack_require__(14744),zo=__webpack_require__.n(Uo);const Wo={add:function add(s,o){return{op:\"add\",path:s,value:o}},replace,remove:function remove(s){return{op:\"remove\",path:s}},merge:function lib_merge(s,o){return{type:\"mutation\",op:\"merge\",path:s,value:o}},mergeDeep:function mergeDeep(s,o){return{type:\"mutation\",op:\"mergeDeep\",path:s,value:o}},context:function context(s,o){return{type:\"context\",path:s,value:o}},getIn:function lib_getIn(s,o){return o.reduce(((s,o)=>void 0!==o&&s?s[o]:s),s)},applyPatch:function lib_applyPatch(s,o,i){if(i=i||{},\"merge\"===(o={...o,path:o.path&&normalizeJSONPath(o.path)}).op){const i=getInByJsonPath(s,o.path);Object.assign(i,o.value),applyPatch(s,[replace(o.path,i)])}else if(\"mergeDeep\"===o.op){const i=getInByJsonPath(s,o.path),a=zo()(i,o.value);s=applyPatch(s,[replace(o.path,a)]).newDocument}else if(\"add\"===o.op&&\"\"===o.path&&lib_isObject(o.value)){applyPatch(s,Object.keys(o.value).reduce(((s,i)=>(s.push({op:\"add\",path:`/${normalizeJSONPath(i)}`,value:o.value[i]}),s)),[]))}else if(\"replace\"===o.op&&\"\"===o.path){let{value:a}=o;i.allowMetaPatches&&o.meta&&isAdditiveMutation(o)&&(Array.isArray(o.value)||lib_isObject(o.value))&&(a={...a,...o.meta}),s=a}else if(applyPatch(s,[o]),i.allowMetaPatches&&o.meta&&isAdditiveMutation(o)&&(Array.isArray(o.value)||lib_isObject(o.value))){const i={...getInByJsonPath(s,o.path),...o.meta};applyPatch(s,[replace(o.path,i)])}return s},parentPathMatch:function parentPathMatch(s,o){if(!Array.isArray(o))return!1;for(let i=0,a=o.length;i<a;i+=1)if(o[i]!==s[i])return!1;return!0},flatten,fullyNormalizeArray:function fullyNormalizeArray(s){return cleanArray(flatten(lib_normalizeArray(s)))},normalizeArray:lib_normalizeArray,isPromise:function isPromise(s){return lib_isObject(s)&&lib_isFunction(s.then)},forEachNew:function forEachNew(s,o){try{return forEachNewPatch(s,forEach,o)}catch(s){return s}},forEachNewPrimitive:function forEachNewPrimitive(s,o){try{return forEachNewPatch(s,forEachPrimitive,o)}catch(s){return s}},isJsonPatch,isContextPatch:function isContextPatch(s){return isPatch(s)&&\"context\"===s.type},isPatch,isMutation,isAdditiveMutation,isGenerator:function isGenerator(s){return\"[object GeneratorFunction]\"===Object.prototype.toString.call(s)},isFunction:lib_isFunction,isObject:lib_isObject,isError:function lib_isError(s){return s instanceof Error}};function normalizeJSONPath(s){return Array.isArray(s)?s.length<1?\"\":`/${s.map((s=>(s+\"\").replace(/~/g,\"~0\").replace(/\\//g,\"~1\"))).join(\"/\")}`:s}function replace(s,o,i){return{op:\"replace\",path:s,value:o,meta:i}}function forEachNewPatch(s,o,i){return cleanArray(flatten(s.filter(isAdditiveMutation).map((s=>o(s.value,i,s.path)))||[]))}function forEachPrimitive(s,o,i){return i=i||[],Array.isArray(s)?s.map(((s,a)=>forEachPrimitive(s,o,i.concat(a)))):lib_isObject(s)?Object.keys(s).map((a=>forEachPrimitive(s[a],o,i.concat(a)))):o(s,i[i.length-1],i)}function forEach(s,o,i){let a=[];if((i=i||[]).length>0){const u=o(s,i[i.length-1],i);u&&(a=a.concat(u))}if(Array.isArray(s)){const u=s.map(((s,a)=>forEach(s,o,i.concat(a))));u&&(a=a.concat(u))}else if(lib_isObject(s)){const u=Object.keys(s).map((a=>forEach(s[a],o,i.concat(a))));u&&(a=a.concat(u))}return a=flatten(a),a}function lib_normalizeArray(s){return Array.isArray(s)?s:[s]}function flatten(s){return[].concat(...s.map((s=>Array.isArray(s)?flatten(s):s)))}function cleanArray(s){return s.filter((s=>void 0!==s))}function lib_isObject(s){return s&&\"object\"==typeof s}function lib_isFunction(s){return s&&\"function\"==typeof s}function isJsonPatch(s){if(isPatch(s)){const{op:o}=s;return\"add\"===o||\"remove\"===o||\"replace\"===o}return!1}function isMutation(s){return isJsonPatch(s)||isPatch(s)&&\"mutation\"===s.type}function isAdditiveMutation(s){return isMutation(s)&&(\"add\"===s.op||\"replace\"===s.op||\"merge\"===s.op||\"mergeDeep\"===s.op)}function isPatch(s){return s&&\"object\"==typeof s}function getInByJsonPath(s,o){try{return getValueByPointer(s,o)}catch(s){return console.error(s),{}}}var Jo=__webpack_require__(48675);const Ho=class ApiDOMAggregateError extends Jo{constructor(s,o,i){if(super(s,o,i),this.name=this.constructor.name,\"string\"==typeof o&&(this.message=o),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(o).stack,null!=i&&\"object\"==typeof i&&Object.hasOwn(i,\"cause\")&&!(\"cause\"in this)){const{cause:s}=i;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}}};class ApiDOMError extends Error{static[Symbol.hasInstance](s){return super[Symbol.hasInstance](s)||Function.prototype[Symbol.hasInstance].call(Ho,s)}constructor(s,o){if(super(s,o),this.name=this.constructor.name,\"string\"==typeof s&&(this.message=s),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(s).stack,null!=o&&\"object\"==typeof o&&Object.hasOwn(o,\"cause\")&&!(\"cause\"in this)){const{cause:s}=o;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}}}const Ko=ApiDOMError;const Go=class ApiDOMStructuredError extends Ko{constructor(s,o){if(super(s,o),null!=o&&\"object\"==typeof o){const{cause:s,...i}=o;Object.assign(this,i)}}};var Yo=__webpack_require__(65606);function _isPlaceholder(s){return null!=s&&\"object\"==typeof s&&!0===s[\"@@functional/placeholder\"]}function _curry1(s){return function f1(o){return 0===arguments.length||_isPlaceholder(o)?f1:s.apply(this,arguments)}}function _curry2(s){return function f2(o,i){switch(arguments.length){case 0:return f2;case 1:return _isPlaceholder(o)?f2:_curry1((function(i){return s(o,i)}));default:return _isPlaceholder(o)&&_isPlaceholder(i)?f2:_isPlaceholder(o)?_curry1((function(o){return s(o,i)})):_isPlaceholder(i)?_curry1((function(i){return s(o,i)})):s(o,i)}}}function _curry3(s){return function f3(o,i,a){switch(arguments.length){case 0:return f3;case 1:return _isPlaceholder(o)?f3:_curry2((function(i,a){return s(o,i,a)}));case 2:return _isPlaceholder(o)&&_isPlaceholder(i)?f3:_isPlaceholder(o)?_curry2((function(o,a){return s(o,i,a)})):_isPlaceholder(i)?_curry2((function(i,a){return s(o,i,a)})):_curry1((function(a){return s(o,i,a)}));default:return _isPlaceholder(o)&&_isPlaceholder(i)&&_isPlaceholder(a)?f3:_isPlaceholder(o)&&_isPlaceholder(i)?_curry2((function(o,i){return s(o,i,a)})):_isPlaceholder(o)&&_isPlaceholder(a)?_curry2((function(o,a){return s(o,i,a)})):_isPlaceholder(i)&&_isPlaceholder(a)?_curry2((function(i,a){return s(o,i,a)})):_isPlaceholder(o)?_curry1((function(o){return s(o,i,a)})):_isPlaceholder(i)?_curry1((function(i){return s(o,i,a)})):_isPlaceholder(a)?_curry1((function(a){return s(o,i,a)})):s(o,i,a)}}}const Xo=Number.isInteger||function _isInteger(s){return(s|0)===s};function _isString(s){return\"[object String]\"===Object.prototype.toString.call(s)}function _nth(s,o){var i=s<0?o.length+s:s;return _isString(o)?o.charAt(i):o[i]}function _path(s,o){for(var i=o,a=0;a<s.length;a+=1){if(null==i)return;var u=s[a];i=Xo(u)?_nth(u,i):i[u]}return i}const Qo=_curry3((function pathSatisfies(s,o,i){return s(_path(o,i))}));function _cloneRegExp(s){return new RegExp(s.source,s.flags?s.flags:(s.global?\"g\":\"\")+(s.ignoreCase?\"i\":\"\")+(s.multiline?\"m\":\"\")+(s.sticky?\"y\":\"\")+(s.unicode?\"u\":\"\")+(s.dotAll?\"s\":\"\"))}function _arrayFromIterator(s){for(var o,i=[];!(o=s.next()).done;)i.push(o.value);return i}function _includesWith(s,o,i){for(var a=0,u=i.length;a<u;){if(s(o,i[a]))return!0;a+=1}return!1}function _has(s,o){return Object.prototype.hasOwnProperty.call(o,s)}const Zo=\"function\"==typeof Object.is?Object.is:function _objectIs(s,o){return s===o?0!==s||1/s==1/o:s!=s&&o!=o};var _i=Object.prototype.toString;const Ei=function(){return\"[object Arguments]\"===_i.call(arguments)?function _isArguments(s){return\"[object Arguments]\"===_i.call(s)}:function _isArguments(s){return _has(\"callee\",s)}}();var Oi=!{toString:null}.propertyIsEnumerable(\"toString\"),Pi=[\"constructor\",\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"],Mi=function(){return arguments.propertyIsEnumerable(\"length\")}(),Ri=function contains(s,o){for(var i=0;i<s.length;){if(s[i]===o)return!0;i+=1}return!1},Wi=\"function\"!=typeof Object.keys||Mi?_curry1((function keys(s){if(Object(s)!==s)return[];var o,i,a=[],u=Mi&&Ei(s);for(o in s)!_has(o,s)||u&&\"length\"===o||(a[a.length]=o);if(Oi)for(i=Pi.length-1;i>=0;)_has(o=Pi[i],s)&&!Ri(a,o)&&(a[a.length]=o),i-=1;return a})):_curry1((function keys(s){return Object(s)!==s?[]:Object.keys(s)}));const ea=Wi;const ra=_curry1((function type(s){return null===s?\"Null\":void 0===s?\"Undefined\":Object.prototype.toString.call(s).slice(8,-1)}));function _uniqContentEquals(s,o,i,a){var u=_arrayFromIterator(s);function eq(s,o){return _equals(s,o,i.slice(),a.slice())}return!_includesWith((function(s,o){return!_includesWith(eq,o,s)}),_arrayFromIterator(o),u)}function _equals(s,o,i,a){if(Zo(s,o))return!0;var u=ra(s);if(u!==ra(o))return!1;if(\"function\"==typeof s[\"fantasy-land/equals\"]||\"function\"==typeof o[\"fantasy-land/equals\"])return\"function\"==typeof s[\"fantasy-land/equals\"]&&s[\"fantasy-land/equals\"](o)&&\"function\"==typeof o[\"fantasy-land/equals\"]&&o[\"fantasy-land/equals\"](s);if(\"function\"==typeof s.equals||\"function\"==typeof o.equals)return\"function\"==typeof s.equals&&s.equals(o)&&\"function\"==typeof o.equals&&o.equals(s);switch(u){case\"Arguments\":case\"Array\":case\"Object\":if(\"function\"==typeof s.constructor&&\"Promise\"===function _functionName(s){var o=String(s).match(/^function (\\w*)/);return null==o?\"\":o[1]}(s.constructor))return s===o;break;case\"Boolean\":case\"Number\":case\"String\":if(typeof s!=typeof o||!Zo(s.valueOf(),o.valueOf()))return!1;break;case\"Date\":if(!Zo(s.valueOf(),o.valueOf()))return!1;break;case\"Error\":return s.name===o.name&&s.message===o.message;case\"RegExp\":if(s.source!==o.source||s.global!==o.global||s.ignoreCase!==o.ignoreCase||s.multiline!==o.multiline||s.sticky!==o.sticky||s.unicode!==o.unicode)return!1}for(var _=i.length-1;_>=0;){if(i[_]===s)return a[_]===o;_-=1}switch(u){case\"Map\":return s.size===o.size&&_uniqContentEquals(s.entries(),o.entries(),i.concat([s]),a.concat([o]));case\"Set\":return s.size===o.size&&_uniqContentEquals(s.values(),o.values(),i.concat([s]),a.concat([o]));case\"Arguments\":case\"Array\":case\"Object\":case\"Boolean\":case\"Number\":case\"String\":case\"Date\":case\"Error\":case\"RegExp\":case\"Int8Array\":case\"Uint8Array\":case\"Uint8ClampedArray\":case\"Int16Array\":case\"Uint16Array\":case\"Int32Array\":case\"Uint32Array\":case\"Float32Array\":case\"Float64Array\":case\"ArrayBuffer\":break;default:return!1}var w=ea(s);if(w.length!==ea(o).length)return!1;var x=i.concat([s]),C=a.concat([o]);for(_=w.length-1;_>=0;){var j=w[_];if(!_has(j,o)||!_equals(o[j],s[j],x,C))return!1;_-=1}return!0}const na=_curry2((function equals(s,o){return _equals(s,o,[],[])}));function _includes(s,o){return function _indexOf(s,o,i){var a,u;if(\"function\"==typeof s.indexOf)switch(typeof o){case\"number\":if(0===o){for(a=1/o;i<s.length;){if(0===(u=s[i])&&1/u===a)return i;i+=1}return-1}if(o!=o){for(;i<s.length;){if(\"number\"==typeof(u=s[i])&&u!=u)return i;i+=1}return-1}return s.indexOf(o,i);case\"string\":case\"boolean\":case\"function\":case\"undefined\":return s.indexOf(o,i);case\"object\":if(null===o)return s.indexOf(o,i)}for(;i<s.length;){if(na(s[i],o))return i;i+=1}return-1}(o,s,0)>=0}function _map(s,o){for(var i=0,a=o.length,u=Array(a);i<a;)u[i]=s(o[i]),i+=1;return u}function _quote(s){return'\"'+s.replace(/\\\\/g,\"\\\\\\\\\").replace(/[\\b]/g,\"\\\\b\").replace(/\\f/g,\"\\\\f\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/\\t/g,\"\\\\t\").replace(/\\v/g,\"\\\\v\").replace(/\\0/g,\"\\\\0\").replace(/\"/g,'\\\\\"')+'\"'}var ia=function pad(s){return(s<10?\"0\":\"\")+s};const aa=\"function\"==typeof Date.prototype.toISOString?function _toISOString(s){return s.toISOString()}:function _toISOString(s){return s.getUTCFullYear()+\"-\"+ia(s.getUTCMonth()+1)+\"-\"+ia(s.getUTCDate())+\"T\"+ia(s.getUTCHours())+\":\"+ia(s.getUTCMinutes())+\":\"+ia(s.getUTCSeconds())+\".\"+(s.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+\"Z\"};function _complement(s){return function(){return!s.apply(this,arguments)}}function _arrayReduce(s,o,i){for(var a=0,u=i.length;a<u;)o=s(o,i[a]),a+=1;return o}const ca=Array.isArray||function _isArray(s){return null!=s&&s.length>=0&&\"[object Array]\"===Object.prototype.toString.call(s)};function _dispatchable(s,o,i){return function(){if(0===arguments.length)return i();var a=arguments[arguments.length-1];if(!ca(a)){for(var u=0;u<s.length;){if(\"function\"==typeof a[s[u]])return a[s[u]].apply(a,Array.prototype.slice.call(arguments,0,-1));u+=1}if(function _isTransformer(s){return null!=s&&\"function\"==typeof s[\"@@transducer/step\"]}(a))return o.apply(null,Array.prototype.slice.call(arguments,0,-1))(a)}return i.apply(this,arguments)}}function _isObject(s){return\"[object Object]\"===Object.prototype.toString.call(s)}const _xfBase_init=function(){return this.xf[\"@@transducer/init\"]()},_xfBase_result=function(s){return this.xf[\"@@transducer/result\"](s)};var la=function(){function XFilter(s,o){this.xf=o,this.f=s}return XFilter.prototype[\"@@transducer/init\"]=_xfBase_init,XFilter.prototype[\"@@transducer/result\"]=_xfBase_result,XFilter.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)?this.xf[\"@@transducer/step\"](s,o):s},XFilter}();function _xfilter(s){return function(o){return new la(s,o)}}var ua=_curry2(_dispatchable([\"fantasy-land/filter\",\"filter\"],_xfilter,(function(s,o){return _isObject(o)?_arrayReduce((function(i,a){return s(o[a])&&(i[a]=o[a]),i}),{},ea(o)):function _filter(s,o){for(var i=0,a=o.length,u=[];i<a;)s(o[i])&&(u[u.length]=o[i]),i+=1;return u}(s,o)})));const da=ua;const ma=_curry2((function reject(s,o){return da(_complement(s),o)}));function _toString_toString(s,o){var i=function recur(i){var a=o.concat([s]);return _includes(i,a)?\"<Circular>\":_toString_toString(i,a)},mapPairs=function(s,o){return _map((function(o){return _quote(o)+\": \"+i(s[o])}),o.slice().sort())};switch(Object.prototype.toString.call(s)){case\"[object Arguments]\":return\"(function() { return arguments; }(\"+_map(i,s).join(\", \")+\"))\";case\"[object Array]\":return\"[\"+_map(i,s).concat(mapPairs(s,ma((function(s){return/^\\d+$/.test(s)}),ea(s)))).join(\", \")+\"]\";case\"[object Boolean]\":return\"object\"==typeof s?\"new Boolean(\"+i(s.valueOf())+\")\":s.toString();case\"[object Date]\":return\"new Date(\"+(isNaN(s.valueOf())?i(NaN):_quote(aa(s)))+\")\";case\"[object Map]\":return\"new Map(\"+i(Array.from(s))+\")\";case\"[object Null]\":return\"null\";case\"[object Number]\":return\"object\"==typeof s?\"new Number(\"+i(s.valueOf())+\")\":1/s==-1/0?\"-0\":s.toString(10);case\"[object Set]\":return\"new Set(\"+i(Array.from(s).sort())+\")\";case\"[object String]\":return\"object\"==typeof s?\"new String(\"+i(s.valueOf())+\")\":_quote(s);case\"[object Undefined]\":return\"undefined\";default:if(\"function\"==typeof s.toString){var a=s.toString();if(\"[object Object]\"!==a)return a}return\"{\"+mapPairs(s,ea(s)).join(\", \")+\"}\"}}const ga=_curry1((function toString(s){return _toString_toString(s,[])}));var ya=_curry2((function test(s,o){if(!function _isRegExp(s){return\"[object RegExp]\"===Object.prototype.toString.call(s)}(s))throw new TypeError(\"‘test’ requires a value of type RegExp as its first argument; received \"+ga(s));return _cloneRegExp(s).test(o)}));const va=ya;function _arity(s,o){switch(s){case 0:return function(){return o.apply(this,arguments)};case 1:return function(s){return o.apply(this,arguments)};case 2:return function(s,i){return o.apply(this,arguments)};case 3:return function(s,i,a){return o.apply(this,arguments)};case 4:return function(s,i,a,u){return o.apply(this,arguments)};case 5:return function(s,i,a,u,_){return o.apply(this,arguments)};case 6:return function(s,i,a,u,_,w){return o.apply(this,arguments)};case 7:return function(s,i,a,u,_,w,x){return o.apply(this,arguments)};case 8:return function(s,i,a,u,_,w,x,C){return o.apply(this,arguments)};case 9:return function(s,i,a,u,_,w,x,C,j){return o.apply(this,arguments)};case 10:return function(s,i,a,u,_,w,x,C,j,L){return o.apply(this,arguments)};default:throw new Error(\"First argument to _arity must be a non-negative integer no greater than ten\")}}function _pipe(s,o){return function(){return o.call(this,s.apply(this,arguments))}}const ba=_curry1((function isArrayLike(s){return!!ca(s)||!!s&&(\"object\"==typeof s&&(!_isString(s)&&(0===s.length||s.length>0&&(s.hasOwnProperty(0)&&s.hasOwnProperty(s.length-1)))))}));var _a=\"undefined\"!=typeof Symbol?Symbol.iterator:\"@@iterator\";function _createReduce(s,o,i){return function _reduce(a,u,_){if(ba(_))return s(a,u,_);if(null==_)return u;if(\"function\"==typeof _[\"fantasy-land/reduce\"])return o(a,u,_,\"fantasy-land/reduce\");if(null!=_[_a])return i(a,u,_[_a]());if(\"function\"==typeof _.next)return i(a,u,_);if(\"function\"==typeof _.reduce)return o(a,u,_,\"reduce\");throw new TypeError(\"reduce: list must be array or iterable\")}}function _xArrayReduce(s,o,i){for(var a=0,u=i.length;a<u;){if((o=s[\"@@transducer/step\"](o,i[a]))&&o[\"@@transducer/reduced\"]){o=o[\"@@transducer/value\"];break}a+=1}return s[\"@@transducer/result\"](o)}const Ea=_curry2((function bind(s,o){return _arity(s.length,(function(){return s.apply(o,arguments)}))}));function _xIterableReduce(s,o,i){for(var a=i.next();!a.done;){if((o=s[\"@@transducer/step\"](o,a.value))&&o[\"@@transducer/reduced\"]){o=o[\"@@transducer/value\"];break}a=i.next()}return s[\"@@transducer/result\"](o)}function _xMethodReduce(s,o,i,a){return s[\"@@transducer/result\"](i[a](Ea(s[\"@@transducer/step\"],s),o))}const wa=_createReduce(_xArrayReduce,_xMethodReduce,_xIterableReduce);var xa=function(){function XWrap(s){this.f=s}return XWrap.prototype[\"@@transducer/init\"]=function(){throw new Error(\"init not implemented on XWrap\")},XWrap.prototype[\"@@transducer/result\"]=function(s){return s},XWrap.prototype[\"@@transducer/step\"]=function(s,o){return this.f(s,o)},XWrap}();function _xwrap(s){return new xa(s)}var ka=_curry3((function(s,o,i){return wa(\"function\"==typeof s?_xwrap(s):s,o,i)}));const Ca=ka;function _checkForMethod(s,o){return function(){var i=arguments.length;if(0===i)return o();var a=arguments[i-1];return ca(a)||\"function\"!=typeof a[s]?o.apply(this,arguments):a[s].apply(a,Array.prototype.slice.call(arguments,0,i-1))}}var Aa=_curry3(_checkForMethod(\"slice\",(function slice(s,o,i){return Array.prototype.slice.call(i,s,o)})));const ja=Aa;const Ia=_curry1(_checkForMethod(\"tail\",ja(1,1/0)));function pipe(){if(0===arguments.length)throw new Error(\"pipe requires at least one argument\");return _arity(arguments[0].length,Ca(_pipe,arguments[0],Ia(arguments)))}const Na=_curry2((function defaultTo(s,o){return null==o||o!=o?s:o}));const Da=_curry2((function prop(s,o){if(null!=o)return Xo(s)?_nth(s,o):o[s]}));const La=_curry3((function propOr(s,o,i){return Na(s,Da(o,i))}));var Fa=_curry1((function(s){return _nth(-1,s)}));const Ba=Fa;function _curryN(s,o,i){return function(){for(var a=[],u=0,_=s,w=0,x=!1;w<o.length||u<arguments.length;){var C;w<o.length&&(!_isPlaceholder(o[w])||u>=arguments.length)?C=o[w]:(C=arguments[u],u+=1),a[w]=C,_isPlaceholder(C)?x=!0:_-=1,w+=1}return!x&&_<=0?i.apply(this,a):_arity(Math.max(0,_),_curryN(s,a,i))}}const $a=_curry2((function curryN(s,o){return 1===s?_curry1(o):_arity(s,_curryN(s,[],o))}));const za=_curry1((function curry(s){return $a(s.length,s)}));function _isFunction(s){var o=Object.prototype.toString.call(s);return\"[object Function]\"===o||\"[object AsyncFunction]\"===o||\"[object GeneratorFunction]\"===o||\"[object AsyncGeneratorFunction]\"===o}const Ja=_curry2((function invoker(s,o){return $a(s+1,(function(){var i=arguments[s];if(null!=i&&_isFunction(i[o]))return i[o].apply(i,Array.prototype.slice.call(arguments,0,s));throw new TypeError(ga(i)+' does not have a method named \"'+o+'\"')}))}));const Ha=Ja(1,\"split\");function dropLastWhile(s,o){for(var i=o.length-1;i>=0&&s(o[i]);)i-=1;return ja(0,i+1,o)}var Ga=function(){function XDropLastWhile(s,o){this.f=s,this.retained=[],this.xf=o}return XDropLastWhile.prototype[\"@@transducer/init\"]=_xfBase_init,XDropLastWhile.prototype[\"@@transducer/result\"]=function(s){return this.retained=null,this.xf[\"@@transducer/result\"](s)},XDropLastWhile.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)?this.retain(s,o):this.flush(s,o)},XDropLastWhile.prototype.flush=function(s,o){return s=wa(this.xf,s,this.retained),this.retained=[],this.xf[\"@@transducer/step\"](s,o)},XDropLastWhile.prototype.retain=function(s,o){return this.retained.push(o),s},XDropLastWhile}();function _xdropLastWhile(s){return function(o){return new Ga(s,o)}}const ec=_curry2(_dispatchable([],_xdropLastWhile,dropLastWhile));const rc=Ja(1,\"join\");const sc=_curry1((function flip(s){return $a(s.length,(function(o,i){var a=Array.prototype.slice.call(arguments,0);return a[0]=i,a[1]=o,s.apply(this,a)}))}))(_curry2(_includes));const oc=za((function(s,o){return pipe(Ha(\"\"),ec(sc(s)),rc(\"\"))(o)}));function _iterableReduce(s,o,i){for(var a=i.next();!a.done;)o=s(o,a.value),a=i.next();return o}function _methodReduce(s,o,i,a){return i[a](s,o)}const ic=_createReduce(_arrayReduce,_methodReduce,_iterableReduce);var ac=function(){function XMap(s,o){this.xf=o,this.f=s}return XMap.prototype[\"@@transducer/init\"]=_xfBase_init,XMap.prototype[\"@@transducer/result\"]=_xfBase_result,XMap.prototype[\"@@transducer/step\"]=function(s,o){return this.xf[\"@@transducer/step\"](s,this.f(o))},XMap}();const cc=_curry2(_dispatchable([\"fantasy-land/map\",\"map\"],(function _xmap(s){return function(o){return new ac(s,o)}}),(function map(s,o){switch(Object.prototype.toString.call(o)){case\"[object Function]\":return $a(o.length,(function(){return s.call(this,o.apply(this,arguments))}));case\"[object Object]\":return _arrayReduce((function(i,a){return i[a]=s(o[a]),i}),{},ea(o));default:return _map(s,o)}})));const lc=_curry2((function ap(s,o){return\"function\"==typeof o[\"fantasy-land/ap\"]?o[\"fantasy-land/ap\"](s):\"function\"==typeof s.ap?s.ap(o):\"function\"==typeof s?function(i){return s(i)(o(i))}:ic((function(s,i){return function _concat(s,o){var i;o=o||[];var a=(s=s||[]).length,u=o.length,_=[];for(i=0;i<a;)_[_.length]=s[i],i+=1;for(i=0;i<u;)_[_.length]=o[i],i+=1;return _}(s,cc(i,o))}),[],s)}));const pc=_curry2((function liftN(s,o){var i=$a(s,o);return $a(s,(function(){return _arrayReduce(lc,cc(i,arguments[0]),Array.prototype.slice.call(arguments,1))}))}));const hc=_curry1((function lift(s){return pc(s.length,s)}));const dc=hc(_curry1((function not(s){return!s})));const fc=_curry1((function always(s){return function(){return s}}));const gc=fc(void 0);const bc=na(gc());const _c=dc(bc);const Ec=_curry2((function max(s,o){if(s===o)return o;function safeMax(s,o){if(s>o!=o>s)return o>s?o:s}var i=safeMax(s,o);if(void 0!==i)return i;var a=safeMax(typeof s,typeof o);if(void 0!==a)return a===typeof s?s:o;var u=ga(s),_=safeMax(u,ga(o));return void 0!==_&&_===u?s:o}));var kc=_curry2((function pluck(s,o){return cc(Da(s),o)}));const Oc=kc;const jc=_curry1((function anyPass(s){return $a(Ca(Ec,0,Oc(\"length\",s)),(function(){for(var o=0,i=s.length;o<i;){if(s[o].apply(this,arguments))return!0;o+=1}return!1}))}));var identical=function(s,o){switch(arguments.length){case 0:return identical;case 1:return function unaryIdentical(o){return 0===arguments.length?unaryIdentical:Zo(s,o)};default:return Zo(s,o)}};const Ic=identical;const Pc=$a(1,pipe(ra,Ic(\"GeneratorFunction\")));const Nc=$a(1,pipe(ra,Ic(\"AsyncFunction\")));const Mc=jc([pipe(ra,Ic(\"Function\")),Pc,Nc]);var Rc=_curry3((function replace(s,o,i){return i.replace(s,o)}));const Lc=Rc;const Fc=$a(1,pipe(ra,Ic(\"RegExp\")));const qc=_curry3((function when(s,o,i){return s(i)?o(i):i}));const Jc=$a(1,pipe(ra,Ic(\"String\")));const Hc=qc(Jc,Lc(/[.*+?^${}()|[\\]\\\\-]/g,\"\\\\$&\"));var Kc=function checkValue(s,o){if(\"string\"!=typeof s&&!(s instanceof String))throw TypeError(\"`\".concat(o,\"` must be a string\"))};const Gc=function replaceAll(s,o,i){!function checkArguments(s,o,i){if(null==i||null==s||null==o)throw TypeError(\"Input values must not be `null` or `undefined`\")}(s,o,i),Kc(i,\"str\"),Kc(o,\"replaceValue\"),function checkSearchValue(s){if(!(\"string\"==typeof s||s instanceof String||s instanceof RegExp))throw TypeError(\"`searchValue` must be a string or an regexp\")}(s);var a=new RegExp(Fc(s)?s:Hc(s),\"g\");return Lc(a,o,i)};var Qc=$a(3,Gc),tl=Ja(2,\"replaceAll\");const sl=Mc(String.prototype.replaceAll)?tl:Qc,isWindows=()=>Qo(va(/^win/),[\"platform\"],Yo),getProtocol=s=>{try{const o=new URL(s);return oc(\":\",o.protocol)}catch{return}},ul=(pipe(getProtocol,_c),s=>{if(Yo.browser)return!1;const o=getProtocol(s);return bc(o)||\"file\"===o||/^[a-zA-Z]$/.test(o)}),isHttpUrl=s=>{const o=getProtocol(s);return\"http\"===o||\"https\"===o},toFileSystemPath=(s,o)=>{const i=[/%23/g,\"#\",/%24/g,\"$\",/%26/g,\"&\",/%2C/g,\",\",/%40/g,\"@\"],a=La(!1,\"keepFileProtocol\",o),u=La(isWindows,\"isWindows\",o);let _=decodeURI(s);for(let s=0;s<i.length;s+=2)_=_.replace(i[s],i[s+1]);let w=\"file://\"===_.substring(0,7).toLowerCase();return w&&(_=\"/\"===_[7]?_.substring(8):_.substring(7),u()&&\"/\"===_[1]&&(_=`${_[0]}:${_.substring(1)}`),a?_=`file:///${_}`:(w=!1,_=u()?_:`/${_}`)),u()&&!w&&(_=sl(\"/\",\"\\\\\",_),\":\\\\\"===_.substring(1,3)&&(_=_[0].toUpperCase()+_.substring(1))),_},getHash=s=>{const o=s.indexOf(\"#\");return-1!==o?s.substring(o):\"#\"},stripHash=s=>{const o=s.indexOf(\"#\");let i=s;return o>=0&&(i=s.substring(0,o)),i},url_cwd=()=>{if(Yo.browser)return stripHash(globalThis.location.href);const s=Yo.cwd(),o=Ba(s);return[\"/\",\"\\\\\"].includes(o)?s:s+(isWindows()?\"\\\\\":\"/\")},resolve=(s,o)=>{const i=new URL(o,new URL(s,\"resolve://\"));if(\"resolve:\"===i.protocol){const{pathname:s,search:o,hash:a}=i;return s+o+a}return i.toString()},sanitize=s=>{if(ul(s))return(s=>{const o=[/\\?/g,\"%3F\",/#/g,\"%23\"];let i=s;isWindows()&&(i=i.replace(/\\\\/g,\"/\")),i=encodeURI(i);for(let s=0;s<o.length;s+=2)i=i.replace(o[s],o[s+1]);return i})(toFileSystemPath(s));try{return new URL(s).toString()}catch{return encodeURI(decodeURI(s)).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\")}},unsanitize=s=>ul(s)?toFileSystemPath(s):decodeURI(s),{fetch:yl,Response:vl,Headers:_l,Request:Sl,FormData:El,File:wl,Blob:xl}=globalThis;function _array_like_to_array(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=new Array(o);i<o;i++)a[i]=s[i];return a}function legacy_defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _instanceof(s,o){return null!=o&&\"undefined\"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](s):s instanceof o}function _sliced_to_array(s,o){return function _array_with_holes(s){if(Array.isArray(s))return s}(s)||function _iterable_to_array_limit(s,o){var i=null==s?null:\"undefined\"!=typeof Symbol&&s[Symbol.iterator]||s[\"@@iterator\"];if(null!=i){var a,u,_=[],w=!0,x=!1;try{for(i=i.call(s);!(w=(a=i.next()).done)&&(_.push(a.value),!o||_.length!==o);w=!0);}catch(s){x=!0,u=s}finally{try{w||null==i.return||i.return()}finally{if(x)throw u}}return _}}(s,o)||function _unsupported_iterable_to_array(s,o){if(!s)return;if(\"string\"==typeof s)return _array_like_to_array(s,o);var i=Object.prototype.toString.call(s).slice(8,-1);\"Object\"===i&&s.constructor&&(i=s.constructor.name);if(\"Map\"===i||\"Set\"===i)return Array.from(i);if(\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return _array_like_to_array(s,o)}(s,o)||function _non_iterable_rest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _type_of(s){return s&&\"undefined\"!=typeof Symbol&&s.constructor===Symbol?\"symbol\":typeof s}void 0===globalThis.fetch&&(globalThis.fetch=yl),void 0===globalThis.Headers&&(globalThis.Headers=_l),void 0===globalThis.Request&&(globalThis.Request=Sl),void 0===globalThis.Response&&(globalThis.Response=vl),void 0===globalThis.FormData&&(globalThis.FormData=El),void 0===globalThis.File&&(globalThis.File=wl),void 0===globalThis.Blob&&(globalThis.Blob=xl);var __typeError=function(s){throw TypeError(s)},__accessCheck=function(s,o,i){return o.has(s)||__typeError(\"Cannot \"+i)},__privateGet=function(s,o,i){return __accessCheck(s,o,\"read from private field\"),i?i.call(s):o.get(s)},__privateAdd=function(s,o,i){return o.has(s)?__typeError(\"Cannot add the same private member more than once\"):_instanceof(o,WeakSet)?o.add(s):o.set(s,i)},__privateSet=function(s,o,i,a){return __accessCheck(s,o,\"write to private field\"),a?a.call(s,i):o.set(s,i),i},to_string=function(s){return Object.prototype.toString.call(s)},is_typed_array=function(s){return ArrayBuffer.isView(s)&&!_instanceof(s,DataView)},kl=Array.isArray,Ol=Object.getOwnPropertyDescriptor,Cl=Object.prototype.propertyIsEnumerable,Al=Object.getOwnPropertySymbols,Il=Object.prototype.hasOwnProperty;function own_enumerable_keys(s){for(var o=Object.keys(s),i=Al(s),a=0;a<i.length;a++)Cl.call(s,i[a])&&o.push(i[a]);return o}function is_writable(s,o){var i;return!(null===(i=Ol(s,o))||void 0===i?void 0:i.writable)}function legacy_copy(s,o){if(\"object\"===(void 0===s?\"undefined\":_type_of(s))&&null!==s){var i;if(kl(s))i=[];else if(\"[object Date]\"===to_string(s))i=new Date(s.getTime?s.getTime():s);else if(function(s){return\"[object RegExp]\"===to_string(s)}(s))i=new RegExp(s);else if(function(s){return\"[object Error]\"===to_string(s)}(s))i={message:s.message};else if(function(s){return\"[object Boolean]\"===to_string(s)}(s)||function(s){return\"[object Number]\"===to_string(s)}(s)||function(s){return\"[object String]\"===to_string(s)}(s))i=Object(s);else{if(is_typed_array(s))return s.slice();i=Object.create(Object.getPrototypeOf(s))}var a=o.includeSymbols?own_enumerable_keys:Object.keys,u=!0,_=!1,w=void 0;try{for(var x,C=a(s)[Symbol.iterator]();!(u=(x=C.next()).done);u=!0){var j=x.value;i[j]=s[j]}}catch(s){_=!0,w=s}finally{try{u||null==C.return||C.return()}finally{if(_)throw w}}return i}return s}var Pl,Tl,Nl={includeSymbols:!1,immutable:!1};function walk(s,o){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Nl,a=[],u=[],_=!0,w=i.includeSymbols?own_enumerable_keys:Object.keys,x=!!i.immutable;return function walker(s){var C=x?legacy_copy(s,i):s,j={},L=!0,B={node:C,node_:s,path:[].concat(a),parent:u[u.length-1],parents:u,key:a[a.length-1],isRoot:0===a.length,level:a.length,circular:void 0,isLeaf:!1,notLeaf:!0,notRoot:!0,isFirst:!1,isLast:!1,update:function update(s){var o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];B.isRoot||(B.parent.node[B.key]=s),B.node=s,o&&(L=!1)},delete:function _delete(s){delete B.parent.node[B.key],s&&(L=!1)},remove:function remove(s){kl(B.parent.node)?B.parent.node.splice(B.key,1):delete B.parent.node[B.key],s&&(L=!1)},keys:null,before:function before(s){j.before=s},after:function after(s){j.after=s},pre:function pre(s){j.pre=s},post:function post(s){j.post=s},stop:function stop(){_=!1},block:function block(){L=!1}};if(!_)return B;function update_state(){if(\"object\"===_type_of(B.node)&&null!==B.node){B.keys&&B.node_===B.node||(B.keys=w(B.node)),B.isLeaf=0===B.keys.length;for(var o=0;o<u.length;o++)if(u[o].node_===s){B.circular=u[o];break}}else B.isLeaf=!0,B.keys=null;B.notLeaf=!B.isLeaf,B.notRoot=!B.isRoot}update_state();var $=o.call(B,B.node);if(void 0!==$&&B.update&&B.update($),j.before&&j.before.call(B,B.node),!L)return B;if(\"object\"===_type_of(B.node)&&null!==B.node&&!B.circular){var V;u.push(B),update_state();var U=!0,z=!1,Y=void 0;try{for(var Z,ee=Object.entries(null!==(V=B.keys)&&void 0!==V?V:[])[Symbol.iterator]();!(U=(Z=ee.next()).done);U=!0){var ie,ae=_sliced_to_array(Z.value,2),ce=ae[0],le=ae[1];a.push(le),j.pre&&j.pre.call(B,B.node[le],le);var pe=walker(B.node[le]);x&&Il.call(B.node,le)&&!is_writable(B.node,le)&&(B.node[le]=pe.node),pe.isLast=!!(null===(ie=B.keys)||void 0===ie?void 0:ie.length)&&+ce==B.keys.length-1,pe.isFirst=0==+ce,j.post&&j.post.call(B,pe),a.pop()}}catch(s){z=!0,Y=s}finally{try{U||null==ee.return||ee.return()}finally{if(z)throw Y}}u.pop()}return j.after&&j.after.call(B,B.node),B}(s).node}var Ml=function(){function Traverse(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Nl;!function _class_call_check(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,Traverse),__privateAdd(this,Pl),__privateAdd(this,Tl),__privateSet(this,Pl,s),__privateSet(this,Tl,o)}return function _create_class(s,o,i){return o&&legacy_defineProperties(s.prototype,o),i&&legacy_defineProperties(s,i),s}(Traverse,[{key:\"get\",value:function get(s){for(var o=__privateGet(this,Pl),i=0;o&&i<s.length;i++){var a=s[i];if(!Il.call(o,a)||!__privateGet(this,Tl).includeSymbols&&\"symbol\"===(void 0===a?\"undefined\":_type_of(a)))return;o=o[a]}return o}},{key:\"has\",value:function has(s){for(var o=__privateGet(this,Pl),i=0;o&&i<s.length;i++){var a=s[i];if(!Il.call(o,a)||!__privateGet(this,Tl).includeSymbols&&\"symbol\"===(void 0===a?\"undefined\":_type_of(a)))return!1;o=o[a]}return!0}},{key:\"set\",value:function set(s,o){var i=__privateGet(this,Pl),a=0;for(a=0;a<s.length-1;a++){var u=s[a];Il.call(i,u)||(i[u]={}),i=i[u]}return i[s[a]]=o,o}},{key:\"map\",value:function map(s){return walk(__privateGet(this,Pl),s,{immutable:!0,includeSymbols:!!__privateGet(this,Tl).includeSymbols})}},{key:\"forEach\",value:function forEach(s){return __privateSet(this,Pl,walk(__privateGet(this,Pl),s,__privateGet(this,Tl))),__privateGet(this,Pl)}},{key:\"reduce\",value:function reduce(s,o){var i=1===arguments.length,a=i?__privateGet(this,Pl):o;return this.forEach((function(o){this.isRoot&&i||(a=s.call(this,a,o))})),a}},{key:\"paths\",value:function paths(){var s=[];return this.forEach((function(){s.push(this.path)})),s}},{key:\"nodes\",value:function nodes(){var s=[];return this.forEach((function(){s.push(this.node)})),s}},{key:\"clone\",value:function clone(){var s=[],o=[],i=__privateGet(this,Tl);return is_typed_array(__privateGet(this,Pl))?__privateGet(this,Pl).slice():function clone(a){for(var u=0;u<s.length;u++)if(s[u]===a)return o[u];if(\"object\"===(void 0===a?\"undefined\":_type_of(a))&&null!==a){var _=legacy_copy(a,i);s.push(a),o.push(_);var w=i.includeSymbols?own_enumerable_keys:Object.keys,x=!0,C=!1,j=void 0;try{for(var L,B=w(a)[Symbol.iterator]();!(x=(L=B.next()).done);x=!0){var $=L.value;_[$]=clone(a[$])}}catch(s){C=!0,j=s}finally{try{x||null==B.return||B.return()}finally{if(C)throw j}}return s.pop(),o.pop(),_}return a}(__privateGet(this,Pl))}}]),Traverse}();Pl=new WeakMap,Tl=new WeakMap;var traverse=function(s,o){return new Ml(s,o)};traverse.get=function(s,o,i){return new Ml(s,i).get(o)},traverse.set=function(s,o,i,a){return new Ml(s,a).set(o,i)},traverse.has=function(s,o,i){return new Ml(s,i).has(o)},traverse.map=function(s,o,i){return new Ml(s,i).map(o)},traverse.forEach=function(s,o,i){return new Ml(s,i).forEach(o)},traverse.reduce=function(s,o,i,a){return new Ml(s,a).reduce(o,i)},traverse.paths=function(s,o){return new Ml(s,o).paths()},traverse.nodes=function(s,o){return new Ml(s,o).nodes()},traverse.clone=function(s,o){return new Ml(s,o).clone()};var Rl=traverse;const Dl=\"application/json, application/yaml\",Ll=\"https://swagger.io\",Fl=Object.freeze({url:\"/\"}),Bl=3e3,$l=[\"properties\"],Vl=[\"properties\"],Ul=[\"definitions\",\"parameters\",\"responses\",\"securityDefinitions\",\"components/schemas\",\"components/responses\",\"components/parameters\",\"components/securitySchemes\"],zl=[\"schema/example\",\"items/example\"];function isFreelyNamed(s){const o=s[s.length-1],i=s[s.length-2],a=s.join(\"/\");return $l.indexOf(o)>-1&&-1===Vl.indexOf(i)||Ul.indexOf(a)>-1||zl.some((s=>a.indexOf(s)>-1))}function absolutifyPointer(s,o){const[i,a]=s.split(\"#\"),u=null!=o?o:\"\",_=null!=i?i:\"\";let w;if(isHttpUrl(u))w=resolve(u,_);else{const s=resolve(Ll,u),o=resolve(s,_).replace(Ll,\"\");w=_.startsWith(\"/\")?o:o.substring(1)}return a?`${w}#${a}`:w}const Wl=/^([a-z]+:\\/\\/|\\/\\/)/i;class JSONRefError extends Go{}const Jl={},Hl=new WeakMap,Kl=[s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"examples\"===s[5],s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"content\"===s[5]&&\"example\"===s[7],s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"content\"===s[5]&&\"examples\"===s[7]&&\"value\"===s[9],s=>\"paths\"===s[0]&&\"requestBody\"===s[3]&&\"content\"===s[4]&&\"example\"===s[6],s=>\"paths\"===s[0]&&\"requestBody\"===s[3]&&\"content\"===s[4]&&\"examples\"===s[6]&&\"value\"===s[8],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"example\"===s[4],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"example\"===s[5],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"examples\"===s[4]&&\"value\"===s[6],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"examples\"===s[5]&&\"value\"===s[7],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"content\"===s[4]&&\"example\"===s[6],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"content\"===s[4]&&\"examples\"===s[6]&&\"value\"===s[8],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"content\"===s[4]&&\"example\"===s[7],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"content\"===s[5]&&\"examples\"===s[7]&&\"value\"===s[9]],Gl={key:\"$ref\",plugin:(s,o,i,a)=>{const u=a.getInstance(),_=i.slice(0,-1);if(isFreelyNamed(_)||(s=>Kl.some((o=>o(s))))(_))return;const{baseDoc:w}=a.getContext(i);if(\"string\"!=typeof s)return new JSONRefError(\"$ref: must be a string (JSON-Ref)\",{$ref:s,baseDoc:w,fullPath:i});const x=refs_split(s),C=x[0],j=x[1]||\"\";let L,B,$;try{L=w||C?absoluteify(C,w):null}catch(o){return wrapError(o,{pointer:j,$ref:s,basePath:L,fullPath:i})}if(function pointerAlreadyInPath(s,o,i,a){let u=Hl.get(a);u||(u={},Hl.set(a,u));const _=function arrayToJsonPointer(s){if(0===s.length)return\"\";return`/${s.map(escapeJsonPointerToken).join(\"/\")}`}(i),w=`${o||\"<specmap-base>\"}#${s}`,x=_.replace(/allOf\\/\\d+\\/?/g,\"\"),C=a.contextTree.get([]).baseDoc;if(o===C&&pointerIsAParent(x,s))return!0;let j=\"\";const L=i.some((s=>(j=`${j}/${escapeJsonPointerToken(s)}`,u[j]&&u[j].some((s=>pointerIsAParent(s,w)||pointerIsAParent(w,s))))));if(L)return!0;return void(u[x]=(u[x]||[]).concat(w))}(j,L,_,a)&&!u.useCircularStructures){const o=absolutifyPointer(s,L);return s===o?null:Wo.replace(i,o)}if(null==L?($=jsonPointerToArray(j),B=a.get($),void 0===B&&(B=new JSONRefError(`Could not resolve reference: ${s}`,{pointer:j,$ref:s,baseDoc:w,fullPath:i}))):(B=extractFromDoc(L,j),B=null!=B.__value?B.__value:B.catch((o=>{throw wrapError(o,{pointer:j,$ref:s,baseDoc:w,fullPath:i})}))),B instanceof Error)return[Wo.remove(i),B];const V=absolutifyPointer(s,L),U=Wo.replace(_,B,{$$ref:V});if(L&&L!==w)return[U,Wo.context(_,{baseDoc:L})];try{if(!function patchValueAlreadyInPath(s,o){const i=[s];return o.path.reduce(((s,o)=>(i.push(s[o]),s[o])),s),pointToAncestor(o.value);function pointToAncestor(s){return Wo.isObject(s)&&(i.indexOf(s)>=0||Object.keys(s).some((o=>pointToAncestor(s[o]))))}}(a.state,U)||u.useCircularStructures)return U}catch(s){return null}}},Yl=Object.assign(Gl,{docCache:Jl,absoluteify,clearCache:function clearCache(s){void 0!==s?delete Jl[s]:Object.keys(Jl).forEach((s=>{delete Jl[s]}))},JSONRefError,wrapError,getDoc,split:refs_split,extractFromDoc,fetchJSON:function fetchJSON(s){return fetch(s,{headers:{Accept:Dl},loadSpec:!0}).then((s=>s.text())).then((s=>fn.load(s)))},extract,jsonPointerToArray,unescapeJsonPointerToken}),Xl=Yl;function absoluteify(s,o){if(!Wl.test(s)){if(!o)throw new JSONRefError(`Tried to resolve a relative URL, without having a basePath. path: '${s}' basePath: '${o}'`);return resolve(o,s)}return s}function wrapError(s,o){let i;return i=s&&s.response&&s.response.body?`${s.response.body.code} ${s.response.body.message}`:s.message,new JSONRefError(`Could not resolve reference: ${i}`,{...o,cause:s})}function refs_split(s){return(s+\"\").split(\"#\")}function extractFromDoc(s,o){const i=Jl[s];if(i&&!Wo.isPromise(i))try{const s=extract(o,i);return Object.assign(Promise.resolve(s),{__value:s})}catch(s){return Promise.reject(s)}return getDoc(s).then((s=>extract(o,s)))}function getDoc(s){const o=Jl[s];return o?Wo.isPromise(o)?o:Promise.resolve(o):(Jl[s]=Yl.fetchJSON(s).then((o=>(Jl[s]=o,o))),Jl[s])}function extract(s,o){const i=jsonPointerToArray(s);if(i.length<1)return o;const a=Wo.getIn(o,i);if(void 0===a)throw new JSONRefError(`Could not resolve pointer: ${s} does not exist in document`,{pointer:s});return a}function jsonPointerToArray(s){if(\"string\"!=typeof s)throw new TypeError(\"Expected a string, got a \"+typeof s);return\"/\"===s[0]&&(s=s.substr(1)),\"\"===s?[]:s.split(\"/\").map(unescapeJsonPointerToken)}function unescapeJsonPointerToken(s){if(\"string\"!=typeof s)return s;return new URLSearchParams(`=${s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}`).get(\"\")}function escapeJsonPointerToken(s){return new URLSearchParams([[\"\",s.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")]]).toString().slice(1)}const pointerBoundaryChar=s=>!s||\"/\"===s||\"#\"===s;function pointerIsAParent(s,o){if(pointerBoundaryChar(o))return!0;const i=s.charAt(o.length),a=o.slice(-1);return 0===s.indexOf(o)&&(!i||\"/\"===i||\"#\"===i)&&\"#\"!==a}const Ql={key:\"allOf\",plugin:(s,o,i,a,u)=>{if(u.meta&&u.meta.$$ref)return;const _=i.slice(0,-1);if(isFreelyNamed(_))return;if(!Array.isArray(s)){const s=new TypeError(\"allOf must be an array\");return s.fullPath=i,s}let w=!1,x=u.value;if(_.forEach((s=>{x&&(x=x[s])})),x={...x},0===Object.keys(x).length)return;delete x.allOf;const C=[];return C.push(a.replace(_,{})),s.forEach(((s,o)=>{if(!a.isObject(s)){if(w)return null;w=!0;const s=new TypeError(\"Elements in allOf must be objects\");return s.fullPath=i,C.push(s)}C.push(a.mergeDeep(_,s));const u=function generateAbsoluteRefPatches(s,o,{specmap:i,getBaseUrlForNodePath:a=s=>i.getContext([...o,...s]).baseDoc,targetKeys:u=[\"$ref\",\"$$ref\"]}={}){const _=[];return Rl(s).forEach((function callback(){if(u.includes(this.key)&&\"string\"==typeof this.node){const s=this.path,u=o.concat(this.path),w=absolutifyPointer(this.node,a(s));_.push(i.replace(u,w))}})),_}(s,i.slice(0,-1),{getBaseUrlForNodePath:s=>a.getContext([...i,o,...s]).baseDoc,specmap:a});C.push(...u)})),x.example&&C.push(a.remove([].concat(_,\"example\"))),C.push(a.mergeDeep(_,x)),x.$$ref||C.push(a.remove([].concat(_,\"$$ref\"))),C}},Zl={key:\"parameters\",plugin:(s,o,i,a)=>{if(Array.isArray(s)&&s.length){const o=Object.assign([],s),u=i.slice(0,-1),_={...Wo.getIn(a.spec,u)};for(let u=0;u<s.length;u+=1){const w=s[u];try{o[u].default=a.parameterMacro(_,w)}catch(s){const o=new Error(s);return o.fullPath=i,o}}return Wo.replace(i,o)}return Wo.replace(i,s)}},eu={key:\"properties\",plugin:(s,o,i,a)=>{const u={...s};for(const o in s)try{u[o].default=a.modelPropertyMacro(u[o])}catch(s){const o=new Error(s);return o.fullPath=i,o}return Wo.replace(i,u)}};class ContextTree{constructor(s){this.root=context_tree_createNode(s||{})}set(s,o){const i=this.getParent(s,!0);if(!i)return void context_tree_updateNode(this.root,o,null);const a=s[s.length-1],{children:u}=i;u[a]?context_tree_updateNode(u[a],o,i):u[a]=context_tree_createNode(o,i)}get(s){if((s=s||[]).length<1)return this.root.value;let o,i,a=this.root;for(let u=0;u<s.length&&(i=s[u],o=a.children,o[i]);u+=1)a=o[i];return a&&a.protoValue}getParent(s,o){return!s||s.length<1?null:s.length<2?this.root:s.slice(0,-1).reduce(((s,i)=>{if(!s)return s;const{children:a}=s;return!a[i]&&o&&(a[i]=context_tree_createNode(null,s)),a[i]}),this.root)}}function context_tree_createNode(s,o){return context_tree_updateNode({children:{}},s,o)}function context_tree_updateNode(s,o,i){return s.value=o||{},s.protoValue=i?{...i.protoValue,...s.value}:s.value,Object.keys(s.children).forEach((o=>{const i=s.children[o];s.children[o]=context_tree_updateNode(i,i.value,s)})),s}const specmap_noop=()=>{};class SpecMap{static getPluginName(s){return s.pluginName}static getPatchesOfType(s,o){return s.filter(o)}constructor(s){Object.assign(this,{spec:\"\",debugLevel:\"info\",plugins:[],pluginHistory:{},errors:[],mutations:[],promisedPatches:[],state:{},patches:[],context:{},contextTree:new ContextTree,showDebug:!1,allPatches:[],pluginProp:\"specMap\",libMethods:Object.assign(Object.create(this),Wo,{getInstance:()=>this}),allowMetaPatches:!1},s),this.get=this._get.bind(this),this.getContext=this._getContext.bind(this),this.hasRun=this._hasRun.bind(this),this.wrappedPlugins=this.plugins.map(this.wrapPlugin.bind(this)).filter(Wo.isFunction),this.patches.push(Wo.add([],this.spec)),this.patches.push(Wo.context([],this.context)),this.updatePatches(this.patches)}debug(s,...o){this.debugLevel===s&&console.log(...o)}verbose(s,...o){\"verbose\"===this.debugLevel&&console.log(`[${s}]   `,...o)}wrapPlugin(s,o){const{pathDiscriminator:i}=this;let a,u=null;return s[this.pluginProp]?(u=s,a=s[this.pluginProp]):Wo.isFunction(s)?a=s:Wo.isObject(s)&&(a=function createKeyBasedPlugin(s){const isSubPath=(s,o)=>!Array.isArray(s)||s.every(((s,i)=>s===o[i]));return function*generator(o,a){const u={};for(const[s,i]of o.filter(Wo.isAdditiveMutation).entries()){if(!(s<Bl))return;yield*traverse(i.value,i.path,i)}function*traverse(o,_,w){if(Wo.isObject(o)){const x=_.length-1,C=_[x],j=_.indexOf(\"properties\"),L=\"properties\"===C&&x===j,B=a.allowMetaPatches&&u[o.$$ref];for(const x of Object.keys(o)){const C=o[x],j=_.concat(x),$=Wo.isObject(C),V=o.$$ref;if(B||$&&(a.allowMetaPatches&&V&&isSubPath(i,j)&&(u[V]=!0),yield*traverse(C,j,w)),!L&&x===s.key){const o=isSubPath(i,_);i&&!o||(yield s.plugin(C,x,j,a,w))}}}else s.key===_[_.length-1]&&(yield s.plugin(o,s.key,_,a))}}}(s)),Object.assign(a.bind(u),{pluginName:s.name||o,isGenerator:Wo.isGenerator(a)})}nextPlugin(){return this.wrappedPlugins.find((s=>this.getMutationsForPlugin(s).length>0))}nextPromisedPatch(){if(this.promisedPatches.length>0)return Promise.race(this.promisedPatches.map((s=>s.value)))}getPluginHistory(s){const o=this.constructor.getPluginName(s);return this.pluginHistory[o]||[]}getPluginRunCount(s){return this.getPluginHistory(s).length}getPluginHistoryTip(s){const o=this.getPluginHistory(s);return o&&o[o.length-1]||{}}getPluginMutationIndex(s){const o=this.getPluginHistoryTip(s).mutationIndex;return\"number\"!=typeof o?-1:o}updatePluginHistory(s,o){const i=this.constructor.getPluginName(s);this.pluginHistory[i]=this.pluginHistory[i]||[],this.pluginHistory[i].push(o)}updatePatches(s){Wo.normalizeArray(s).forEach((s=>{if(s instanceof Error)this.errors.push(s);else try{if(!Wo.isObject(s))return void this.debug(\"updatePatches\",\"Got a non-object patch\",s);if(this.showDebug&&this.allPatches.push(s),Wo.isPromise(s.value))return this.promisedPatches.push(s),void this.promisedPatchThen(s);if(Wo.isContextPatch(s))return void this.setContext(s.path,s.value);Wo.isMutation(s)&&this.updateMutations(s)}catch(s){console.error(s),this.errors.push(s)}}))}updateMutations(s){\"object\"==typeof s.value&&!Array.isArray(s.value)&&this.allowMetaPatches&&(s.value={...s.value});const o=Wo.applyPatch(this.state,s,{allowMetaPatches:this.allowMetaPatches});o&&(this.mutations.push(s),this.state=o)}removePromisedPatch(s){const o=this.promisedPatches.indexOf(s);o<0?this.debug(\"Tried to remove a promisedPatch that isn't there!\"):this.promisedPatches.splice(o,1)}promisedPatchThen(s){return s.value=s.value.then((o=>{const i={...s,value:o};this.removePromisedPatch(s),this.updatePatches(i)})).catch((o=>{this.removePromisedPatch(s),this.updatePatches(o)})),s.value}getMutations(s,o){return s=s||0,\"number\"!=typeof o&&(o=this.mutations.length),this.mutations.slice(s,o)}getCurrentMutations(){return this.getMutationsForPlugin(this.getCurrentPlugin())}getMutationsForPlugin(s){const o=this.getPluginMutationIndex(s);return this.getMutations(o+1)}getCurrentPlugin(){return this.currentPlugin}getLib(){return this.libMethods}_get(s){return Wo.getIn(this.state,s)}_getContext(s){return this.contextTree.get(s)}setContext(s,o){return this.contextTree.set(s,o)}_hasRun(s){return this.getPluginRunCount(this.getCurrentPlugin())>(s||0)}dispatch(){const s=this,o=this.nextPlugin();if(!o){const s=this.nextPromisedPatch();if(s)return s.then((()=>this.dispatch())).catch((()=>this.dispatch()));const o={spec:this.state,errors:this.errors};return this.showDebug&&(o.patches=this.allPatches),Promise.resolve(o)}if(s.pluginCount=s.pluginCount||new WeakMap,s.pluginCount.set(o,(s.pluginCount.get(o)||0)+1),s.pluginCount[o]>100)return Promise.resolve({spec:s.state,errors:s.errors.concat(new Error(\"We've reached a hard limit of 100 plugin runs\"))});if(o!==this.currentPlugin&&this.promisedPatches.length){const s=this.promisedPatches.map((s=>s.value));return Promise.all(s.map((s=>s.then(specmap_noop,specmap_noop)))).then((()=>this.dispatch()))}return function executePlugin(){s.currentPlugin=o;const i=s.getCurrentMutations(),a=s.mutations.length-1;try{if(o.isGenerator)for(const a of o(i,s.getLib()))updatePatches(a);else{updatePatches(o(i,s.getLib()))}}catch(s){console.error(s),updatePatches([Object.assign(Object.create(s),{plugin:o})])}finally{s.updatePluginHistory(o,{mutationIndex:a})}return s.dispatch()}();function updatePatches(i){i&&(i=Wo.fullyNormalizeArray(i),s.updatePatches(i,o))}}}const tu={refs:Xl,allOf:Ql,parameters:Zl,properties:eu};function makeFetchJSON(s,o={}){const{requestInterceptor:i,responseInterceptor:a}=o,u=s.withCredentials?\"include\":\"same-origin\";return o=>s({url:o,loadSpec:!0,requestInterceptor:i,responseInterceptor:a,headers:{Accept:Dl},credentials:u}).then((s=>s.body))}function isFile(s,o){return o||\"undefined\"==typeof navigator||(o=navigator),o&&\"ReactNative\"===o.product?!(!s||\"object\"!=typeof s||\"string\"!=typeof s.uri):\"undefined\"!=typeof File&&s instanceof File||(\"undefined\"!=typeof Blob&&s instanceof Blob||(!!ArrayBuffer.isView(s)||null!==s&&\"object\"==typeof s&&\"function\"==typeof s.pipe))}function isArrayOfFile(s,o){return Array.isArray(s)&&s.some((s=>isFile(s,o)))}class FileWithData extends File{constructor(s,o=\"\",i={}){super([s],o,i),this.data=s}valueOf(){return this.data}toString(){return this.valueOf()}}const isRfc3986Reserved=s=>\":/?#[]@!$&'()*+,;=\".indexOf(s)>-1,isRfc3986Unreserved=s=>/^[a-z0-9\\-._~]+$/i.test(s);function encodeCharacters(s,o=\"reserved\"){return[...s].map((s=>{if(isRfc3986Unreserved(s))return s;if(isRfc3986Reserved(s)&&\"unsafe\"===o)return s;const i=new TextEncoder;return Array.from(i.encode(s)).map((s=>`0${s.toString(16).toUpperCase()}`.slice(-2))).map((s=>`%${s}`)).join(\"\")})).join(\"\")}function stylize(s){const{value:o}=s;return Array.isArray(o)?function encodeArray({key:s,value:o,style:i,explode:a,escape:u}){if(\"simple\"===i)return o.map((s=>valueEncoder(s,u))).join(\",\");if(\"label\"===i)return`.${o.map((s=>valueEncoder(s,u))).join(\".\")}`;if(\"matrix\"===i)return o.map((s=>valueEncoder(s,u))).reduce(((o,i)=>!o||a?`${o||\"\"};${s}=${i}`:`${o},${i}`),\"\");if(\"form\"===i){const i=a?`&${s}=`:\",\";return o.map((s=>valueEncoder(s,u))).join(i)}if(\"spaceDelimited\"===i){const i=a?`${s}=`:\"\";return o.map((s=>valueEncoder(s,u))).join(` ${i}`)}if(\"pipeDelimited\"===i){const i=a?`${s}=`:\"\";return o.map((s=>valueEncoder(s,u))).join(`|${i}`)}return}(s):\"object\"==typeof o?function encodeObject({key:s,value:o,style:i,explode:a,escape:u}){const _=Object.keys(o);if(\"simple\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s},`:\"\"}${i}${a?\"=\":\",\"}${_}`}),\"\");if(\"label\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s}.`:\".\"}${i}${a?\"=\":\".\"}${_}`}),\"\");if(\"matrix\"===i&&a)return _.reduce(((s,i)=>`${s?`${s};`:\";\"}${i}=${valueEncoder(o[i],u)}`),\"\");if(\"matrix\"===i)return _.reduce(((i,a)=>{const _=valueEncoder(o[a],u);return`${i?`${i},`:`;${s}=`}${a},${_}`}),\"\");if(\"form\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s}${a?\"&\":\",\"}`:\"\"}${i}${a?\"=\":\",\"}${_}`}),\"\");return}(s):function encodePrimitive({key:s,value:o,style:i,escape:a}){if(\"simple\"===i)return valueEncoder(o,a);if(\"label\"===i)return`.${valueEncoder(o,a)}`;if(\"matrix\"===i)return`;${s}=${valueEncoder(o,a)}`;if(\"form\"===i)return valueEncoder(o,a);if(\"deepObject\"===i)return valueEncoder(o,a);return}(s)}function valueEncoder(s,o=!1){return Array.isArray(s)||null!==s&&\"object\"==typeof s?s=JSON.stringify(s):\"number\"!=typeof s&&\"boolean\"!=typeof s||(s=String(s)),o&&\"string\"==typeof s&&s.length>0?encodeCharacters(s,o):null!=s?s:\"\"}const ru={form:\",\",spaceDelimited:\"%20\",pipeDelimited:\"|\"},nu={csv:\",\",ssv:\"%20\",tsv:\"%09\",pipes:\"|\"};function formatKeyValue(s,o,i=!1){const{collectionFormat:a,allowEmptyValue:u,serializationOption:_,encoding:w}=o,x=\"object\"!=typeof o||Array.isArray(o)?o:o.value,C=i?s=>s.toString():s=>encodeURIComponent(s),j=C(s);if(void 0===x&&u)return[[j,\"\"]];if(isFile(x)||isArrayOfFile(x))return[[j,x]];if(_)return formatKeyValueBySerializationOption(s,x,i,_);if(w){if([typeof w.style,typeof w.explode,typeof w.allowReserved].some((s=>\"undefined\"!==s))){const{style:o,explode:a,allowReserved:u}=w;return formatKeyValueBySerializationOption(s,x,i,{style:o,explode:a,allowReserved:u})}if(\"string\"==typeof w.contentType){if(w.contentType.startsWith(\"application/json\")){const s=C(\"string\"==typeof x?x:JSON.stringify(x));return[[j,new FileWithData(s,\"blob\",{type:w.contentType})]]}const s=C(String(x));return[[j,new FileWithData(s,\"blob\",{type:w.contentType})]]}return\"object\"!=typeof x?[[j,C(x)]]:Array.isArray(x)&&x.every((s=>\"object\"!=typeof s))?[[j,x.map(C).join(\",\")]]:[[j,C(JSON.stringify(x))]]}return\"object\"!=typeof x?[[j,C(x)]]:Array.isArray(x)?\"multi\"===a?[[j,x.map(C)]]:[[j,x.map(C).join(nu[a||\"csv\"])]]:[[j,\"\"]]}function formatKeyValueBySerializationOption(s,o,i,a){const u=a.style||\"form\",_=void 0===a.explode?\"form\"===u:a.explode,w=!i&&(a&&a.allowReserved?\"unsafe\":\"reserved\"),encodeFn=s=>valueEncoder(s,w),x=i?s=>s:s=>encodeFn(s);return\"object\"!=typeof o?[[x(s),encodeFn(o)]]:Array.isArray(o)?_?[[x(s),o.map(encodeFn)]]:[[x(s),o.map(encodeFn).join(ru[u])]]:\"deepObject\"===u?Object.keys(o).map((i=>[x(`${s}[${i}]`),encodeFn(o[i])])):_?Object.keys(o).map((s=>[x(s),encodeFn(o[s])])):[[x(s),Object.keys(o).map((s=>[`${x(s)},${encodeFn(o[s])}`])).join(\",\")]]}function encodeFormOrQuery(s){return((s,{encode:o=!0}={})=>{const buildNestedParams=(s,o,i)=>(Array.isArray(i)?i.reduce(((i,a)=>buildNestedParams(s,o,a)),s):i instanceof Date?s.append(o,i.toISOString()):\"object\"==typeof i?Object.entries(i).reduce(((i,[a,u])=>buildNestedParams(s,`${o}[${a}]`,u)),s):s.append(o,i),s),i=Object.entries(s).reduce(((s,[o,i])=>buildNestedParams(s,o,i)),new URLSearchParams),a=String(i);return o?a:decodeURIComponent(a)})(Object.keys(s).reduce(((o,i)=>{for(const[a,u]of formatKeyValue(i,s[i]))o[a]=u instanceof FileWithData?u.valueOf():u;return o}),{}),{encode:!1})}function serializeRequest(s={}){const{url:o=\"\",query:i,form:a}=s;if(a){const o=Object.keys(a).some((s=>{const{value:o}=a[s];return isFile(o)||isArrayOfFile(o)})),i=s.headers[\"content-type\"]||s.headers[\"Content-Type\"];if(o||/multipart\\/form-data/i.test(i)){const o=function request_buildFormData(s){return Object.entries(s).reduce(((s,[o,i])=>{for(const[a,u]of formatKeyValue(o,i,!0))if(Array.isArray(u))for(const o of u)if(ArrayBuffer.isView(o)){const i=new Blob([o]);s.append(a,i)}else s.append(a,o);else if(ArrayBuffer.isView(u)){const o=new Blob([u]);s.append(a,o)}else s.append(a,u);return s}),new FormData)}(s.form);s.formdata=o,s.body=o}else s.body=encodeFormOrQuery(a);delete s.form}if(i){const[a,u]=o.split(\"?\");let _=\"\";if(u){const s=new URLSearchParams(u);Object.keys(i).forEach((o=>s.delete(o))),_=String(s)}const w=((...s)=>{const o=s.filter((s=>s)).join(\"&\");return o?`?${o}`:\"\"})(_,encodeFormOrQuery(i));s.url=a+w,delete s.query}return s}function serializeHeaders(s={}){return\"function\"!=typeof s.entries?{}:Array.from(s.entries()).reduce(((s,[o,i])=>(s[o]=function serializeHeaderValue(s){return s.includes(\", \")?s.split(\", \"):s}(i),s)),{})}function serializeResponse(s,o,{loadSpec:i=!1}={}){const a={ok:s.ok,url:s.url||o,status:s.status,statusText:s.statusText,headers:serializeHeaders(s.headers)},u=a.headers[\"content-type\"],_=i||((s=\"\")=>/(json|xml|yaml|text)\\b/.test(s))(u);return(_?s.text:s.blob||s.buffer).call(s).then((s=>{if(a.text=s,a.data=s,_)try{const o=function parseBody(s,o){return o&&(0===o.indexOf(\"application/json\")||o.indexOf(\"+json\")>0)?JSON.parse(s):fn.load(s)}(s,u);a.body=o,a.obj=o}catch(s){a.parseError=s}return a}))}async function http_http(s,o={}){\"object\"==typeof s&&(s=(o=s).url),o.headers=o.headers||{},(o=serializeRequest(o)).headers&&Object.keys(o.headers).forEach((s=>{const i=o.headers[s];\"string\"==typeof i&&(o.headers[s]=i.replace(/\\n+/g,\" \"))})),o.requestInterceptor&&(o=await o.requestInterceptor(o)||o);const i=o.headers[\"content-type\"]||o.headers[\"Content-Type\"];let a;/multipart\\/form-data/i.test(i)&&(delete o.headers[\"content-type\"],delete o.headers[\"Content-Type\"]);try{a=await(o.userFetch||fetch)(o.url,o),a=await serializeResponse(a,s,o),o.responseInterceptor&&(a=await o.responseInterceptor(a)||a)}catch(s){if(!a)throw s;const o=new Error(a.statusText||`response status is ${a.status}`);throw o.status=a.status,o.statusCode=a.status,o.responseError=s,o}if(!a.ok){const s=new Error(a.statusText||`response status is ${a.status}`);throw s.status=a.status,s.statusCode=a.status,s.response=a,s}return a}const options_retrievalURI=s=>{var o,i;const{baseDoc:a,url:u}=s,_=null!==(o=null!=a?a:u)&&void 0!==o?o:\"\";return\"string\"==typeof(null===(i=globalThis.document)||void 0===i?void 0:i.baseURI)?String(new URL(_,globalThis.document.baseURI)):_},options_httpClient=s=>{const{fetch:o,http:i}=s;return o||i||http_http};async function resolveGenericStrategy(s){const{spec:o,mode:i,allowMetaPatches:a=!0,pathDiscriminator:u,modelPropertyMacro:_,parameterMacro:w,requestInterceptor:x,responseInterceptor:C,skipNormalization:j=!1,useCircularStructures:L,strategies:B}=s,$=options_retrievalURI(s),V=options_httpClient(s),U=B.find((s=>s.match(o)));return async function doResolve(s){$&&(tu.refs.docCache[$]=s);tu.refs.fetchJSON=makeFetchJSON(V,{requestInterceptor:x,responseInterceptor:C});const o=[tu.refs];\"function\"==typeof w&&o.push(tu.parameters);\"function\"==typeof _&&o.push(tu.properties);\"strict\"!==i&&o.push(tu.allOf);const B=await function mapSpec(s){return new SpecMap(s).dispatch()}({spec:s,context:{baseDoc:$},plugins:o,allowMetaPatches:a,pathDiscriminator:u,parameterMacro:w,modelPropertyMacro:_,useCircularStructures:L});j||(B.spec=U.normalize(B.spec));return B}(o)}const su=_curry2((function and(s,o){return s&&o}));const ou=_curry2((function both(s,o){return _isFunction(s)?function _both(){return s.apply(this,arguments)&&o.apply(this,arguments)}:hc(su)(s,o)}));const iu=na(null);const au=dc(iu);function isOfTypeObject_typeof(s){return isOfTypeObject_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},isOfTypeObject_typeof(s)}const cu=function isOfTypeObject(s){return\"object\"===isOfTypeObject_typeof(s)};const lu=$a(1,ou(au,cu));var uu=pipe(ra,Ic(\"Object\")),pu=pipe(ga,na(ga(Object))),hu=Qo(ou(Mc,pu),[\"constructor\"]),du=$a(1,(function(s){if(!lu(s)||!uu(s))return!1;var o=Object.getPrototypeOf(s);return!!iu(o)||hu(o)}));const fu=du,replace_special_chars_with_underscore=s=>s.replace(/\\W/gi,\"_\");function opId(s,o,i=\"\",{v2OperationIdCompatibilityMode:a}={}){if(!s||\"object\"!=typeof s)return null;return(s.operationId||\"\").replace(/\\s/g,\"\").length?replace_special_chars_with_underscore(s.operationId):function idFromPathMethod(s,o,{v2OperationIdCompatibilityMode:i}={}){if(i){let i=`${o.toLowerCase()}_${s}`.replace(/[\\s!@#$%^&*()_+=[{\\]};:<>|./?,\\\\'\"\"-]/g,\"_\");return i=i||`${s.substring(1)}_${o}`,i.replace(/((_){2,})/g,\"_\").replace(/^(_)*/g,\"\").replace(/([_])*$/g,\"\")}return`${o.toLowerCase()}${replace_special_chars_with_underscore(s)}`}(o,i,{v2OperationIdCompatibilityMode:a})}function normalize_normalize(s){const{spec:o}=s,{paths:i}=o,a={};if(!i||o.$$normalized)return s;for(const s in i){const u=i[s];if(null==u||![\"object\",\"function\"].includes(typeof u))continue;const _=u.parameters;for(const i in u){const w=u[i];if(null==w||![\"object\",\"function\"].includes(typeof w))continue;const x=opId(w,s,i);if(x){a[x]?a[x].push(w):a[x]=[w];const s=a[x];if(s.length>1)s.forEach(((s,o)=>{s.__originalOperationId=s.__originalOperationId||s.operationId,s.operationId=`${x}${o+1}`}));else if(void 0!==w.operationId){const o=s[0];o.__originalOperationId=o.__originalOperationId||w.operationId,o.operationId=x}}if(\"parameters\"!==i){const s=[],i={};for(const a in o)\"produces\"!==a&&\"consumes\"!==a&&\"security\"!==a||(i[a]=o[a],s.push(i));if(_&&(i.parameters=_,s.push(i)),s.length)for(const o of s)for(const s in o)if(Array.isArray(w[s])){if(\"parameters\"===s)for(const i of o[s]){w[s].some((s=>!(!fu(s)&&!fu(i))&&(s===i||[\"name\",\"$ref\",\"$$ref\"].some((o=>\"string\"==typeof s[o]&&\"string\"==typeof i[o]&&s[o]===i[o])))))||w[s].push(i)}}else w[s]=o[s]}}}return o.$$normalized=!0,s}const mu={name:\"generic\",match:()=>!0,normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>resolveGenericStrategy(s)},gu=mu;const isOpenAPI30=s=>{try{const{openapi:o}=s;return\"string\"==typeof o&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(o)}catch{return!1}},isOpenAPI31=s=>{try{const{openapi:o}=s;return\"string\"==typeof o&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(o)}catch{return!1}},isOpenAPI3=s=>isOpenAPI30(s)||isOpenAPI31(s),yu={name:\"openapi-2\",match:s=>(s=>{try{const{swagger:o}=s;return\"2.0\"===o}catch{return!1}})(s),normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>async function resolveOpenAPI2Strategy(s){return resolveGenericStrategy(s)}(s)},vu=yu;const bu={name:\"openapi-3-0\",match:s=>isOpenAPI30(s),normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>async function resolveOpenAPI30Strategy(s){return resolveGenericStrategy(s)}(s)},_u=bu;var Su=__webpack_require__(34035);function _reduced(s){return s&&s[\"@@transducer/reduced\"]?s:{\"@@transducer/value\":s,\"@@transducer/reduced\":!0}}var Eu=function(){function XAll(s,o){this.xf=o,this.f=s,this.all=!0}return XAll.prototype[\"@@transducer/init\"]=_xfBase_init,XAll.prototype[\"@@transducer/result\"]=function(s){return this.all&&(s=this.xf[\"@@transducer/step\"](s,!0)),this.xf[\"@@transducer/result\"](s)},XAll.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)||(this.all=!1,s=_reduced(this.xf[\"@@transducer/step\"](s,!1))),s},XAll}();function _xall(s){return function(o){return new Eu(s,o)}}var wu=_curry2(_dispatchable([\"all\"],_xall,(function all(s,o){for(var i=0;i<o.length;){if(!s(o[i]))return!1;i+=1}return!0})));const xu=wu;class Annotation extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"annotation\"}get code(){return this.attributes.get(\"code\")}set code(s){this.attributes.set(\"code\",s)}}const ku=Annotation;class Comment extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"comment\"}}const Ou=Comment;class ParseResult extends Su.wE{constructor(s,o,i){super(s,o,i),this.element=\"parseResult\"}get api(){return this.children.filter((s=>s.classes.contains(\"api\"))).first}get results(){return this.children.filter((s=>s.classes.contains(\"result\")))}get result(){return this.results.first}get annotations(){return this.children.filter((s=>\"annotation\"===s.element))}get warnings(){return this.children.filter((s=>\"annotation\"===s.element&&s.classes.contains(\"warning\")))}get errors(){return this.children.filter((s=>\"annotation\"===s.element&&s.classes.contains(\"error\")))}get isEmpty(){return this.children.reject((s=>\"annotation\"===s.element)).isEmpty}replaceResult(s){const{result:o}=this;if(bc(o))return!1;const i=this.content.findIndex((s=>s===o));return-1!==i&&(this.content[i]=s,!0)}}const Cu=ParseResult;class SourceMap extends Su.wE{constructor(s,o,i){super(s,o,i),this.element=\"sourceMap\"}get positionStart(){return this.children.filter((s=>s.classes.contains(\"position\"))).get(0)}get positionEnd(){return this.children.filter((s=>s.classes.contains(\"position\"))).get(1)}set position(s){if(void 0===s)return;const o=new Su.wE([s.start.row,s.start.column,s.start.char]),i=new Su.wE([s.end.row,s.end.column,s.end.char]);o.classes.push(\"position\"),i.classes.push(\"position\"),this.push(o).push(i)}}const Au=SourceMap,hasMethod=(s,o)=>\"object\"==typeof o&&null!==o&&s in o&&\"function\"==typeof o[s],hasBasicElementProps=s=>\"object\"==typeof s&&null!=s&&\"_storedElement\"in s&&\"string\"==typeof s._storedElement&&\"_content\"in s,primitiveEq=(s,o)=>\"object\"==typeof o&&null!==o&&\"primitive\"in o&&(\"function\"==typeof o.primitive&&o.primitive()===s),hasClass=(s,o)=>\"object\"==typeof o&&null!==o&&\"classes\"in o&&(Array.isArray(o.classes)||o.classes instanceof Su.wE)&&o.classes.includes(s),isElementType=(s,o)=>\"object\"==typeof o&&null!==o&&\"element\"in o&&o.element===s,helpers=s=>s({hasMethod,hasBasicElementProps,primitiveEq,isElementType,hasClass}),ju=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Hg||s(i)&&o(void 0,i))),Iu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Om||s(i)&&o(\"string\",i))),Pu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.kT||s(i)&&o(\"number\",i))),Tu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Os||s(i)&&o(\"null\",i))),Nu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.bd||s(i)&&o(\"boolean\",i))),Mu=helpers((({hasBasicElementProps:s,primitiveEq:o,hasMethod:i})=>a=>a instanceof Su.Sh||s(a)&&o(\"object\",a)&&i(\"keys\",a)&&i(\"values\",a)&&i(\"items\",a))),Ru=helpers((({hasBasicElementProps:s,primitiveEq:o,hasMethod:i})=>a=>a instanceof Su.wE&&!(a instanceof Su.Sh)||s(a)&&o(\"array\",a)&&i(\"push\",a)&&i(\"unshift\",a)&&i(\"map\",a)&&i(\"reduce\",a))),Du=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.Pr||s(a)&&o(\"member\",a)&&i(void 0,a))),Lu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.Ft||s(a)&&o(\"link\",a)&&i(void 0,a))),Fu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.sI||s(a)&&o(\"ref\",a)&&i(void 0,a))),Bu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof ku||s(a)&&o(\"annotation\",a)&&i(\"array\",a))),$u=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ou||s(a)&&o(\"comment\",a)&&i(\"string\",a))),qu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Cu||s(a)&&o(\"parseResult\",a)&&i(\"array\",a))),Vu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Au||s(a)&&o(\"sourceMap\",a)&&i(\"array\",a))),isPrimitiveElement=s=>isElementType(\"object\",s)||isElementType(\"array\",s)||isElementType(\"boolean\",s)||isElementType(\"number\",s)||isElementType(\"string\",s)||isElementType(\"null\",s)||isElementType(\"member\",s),hasElementSourceMap=s=>Vu(s.meta.get(\"sourceMap\")),includesSymbols=(s,o)=>{if(0===s.length)return!0;const i=o.attributes.get(\"symbols\");return!!Ru(i)&&xu(sc(i.toValue()),s)},includesClasses=(s,o)=>0===s.length||xu(sc(o.classes.toValue()),s);const es_T=function(){return!0};const es_F=function(){return!1},getVisitFn=(s,o,i)=>{const a=s[o];if(null!=a){if(!i&&\"function\"==typeof a)return a;const s=i?a.leave:a.enter;if(\"function\"==typeof s)return s}else{const a=i?s.leave:s.enter;if(null!=a){if(\"function\"==typeof a)return a;const s=a[o];if(\"function\"==typeof s)return s}}return null},Uu={},getNodeType=s=>null==s?void 0:s.type,isNode=s=>\"string\"==typeof getNodeType(s),cloneNode=s=>Object.create(Object.getPrototypeOf(s),Object.getOwnPropertyDescriptors(s)),mergeAll=(s,{visitFnGetter:o=getVisitFn,nodeTypeGetter:i=getNodeType,breakSymbol:a=Uu,deleteNodeSymbol:u=null,skipVisitingNodeSymbol:_=!1,exposeEdits:w=!1}={})=>{const x=Symbol(\"skip\"),C=new Array(s.length).fill(x);return{enter(j,L,B,$,V,U){let z=j,Y=!1;const Z={...U,replaceWith(s,o){U.replaceWith(s,o),z=s}};for(let j=0;j<s.length;j+=1)if(C[j]===x){const x=o(s[j],i(z),!1);if(\"function\"==typeof x){const o=x.call(s[j],z,L,B,$,V,Z);if(\"function\"==typeof(null==o?void 0:o.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:s[j],visitFn:x});if(o===_)C[j]=z;else if(o===a)C[j]=a;else{if(o===u)return o;if(void 0!==o){if(!w)return o;z=o,Y=!0}}}}return Y?z:void 0},leave(u,w,j,L,B,$){let V=u;const U={...$,replaceWith(s,o){$.replaceWith(s,o),V=s}};for(let u=0;u<s.length;u+=1)if(C[u]===x){const x=o(s[u],i(V),!0);if(\"function\"==typeof x){const o=x.call(s[u],V,w,j,L,B,U);if(\"function\"==typeof(null==o?void 0:o.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:s[u],visitFn:x});if(o===a)C[u]=a;else if(void 0!==o&&o!==_)return o}}else C[u]===V&&(C[u]=x)}}};mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")]=(s,{visitFnGetter:o=getVisitFn,nodeTypeGetter:i=getNodeType,breakSymbol:a=Uu,deleteNodeSymbol:u=null,skipVisitingNodeSymbol:_=!1,exposeEdits:w=!1}={})=>{const x=Symbol(\"skip\"),C=new Array(s.length).fill(x);return{async enter(j,L,B,$,V,U){let z=j,Y=!1;const Z={...U,replaceWith(s,o){U.replaceWith(s,o),z=s}};for(let j=0;j<s.length;j+=1)if(C[j]===x){const x=o(s[j],i(z),!1);if(\"function\"==typeof x){const o=await x.call(s[j],z,L,B,$,V,Z);if(o===_)C[j]=z;else if(o===a)C[j]=a;else{if(o===u)return o;if(void 0!==o){if(!w)return o;z=o,Y=!0}}}}return Y?z:void 0},async leave(u,w,j,L,B,$){let V=u;const U={...$,replaceWith(s,o){$.replaceWith(s,o),V=s}};for(let u=0;u<s.length;u+=1)if(C[u]===x){const x=o(s[u],i(V),!0);if(\"function\"==typeof x){const o=await x.call(s[u],V,w,j,L,B,U);if(o===a)C[u]=a;else if(void 0!==o&&o!==_)return o}}else C[u]===V&&(C[u]=x)}}};const visit=(s,o,{keyMap:i=null,state:a={},breakSymbol:u=Uu,deleteNodeSymbol:_=null,skipVisitingNodeSymbol:w=!1,visitFnGetter:x=getVisitFn,nodeTypeGetter:C=getNodeType,nodePredicate:j=isNode,nodeCloneFn:L=cloneNode,detectCycles:B=!0}={})=>{const $=i||{};let V,U,z=Array.isArray(s),Y=[s],Z=-1,ee=[],ie=s;const ae=[],ce=[];do{Z+=1;const s=Z===Y.length;let i;const de=s&&0!==ee.length;if(s){if(i=0===ce.length?void 0:ae.pop(),ie=U,U=ce.pop(),de)if(z){ie=ie.slice();let s=0;for(const[o,i]of ee){const a=o-s;i===_?(ie.splice(a,1),s+=1):ie[a]=i}}else{ie=L(ie);for(const[s,o]of ee)ie[s]=o}Z=V.index,Y=V.keys,ee=V.edits,z=V.inArray,V=V.prev}else if(U!==_&&void 0!==U){if(i=z?Z:Y[Z],ie=U[i],ie===_||void 0===ie)continue;ae.push(i)}let fe;if(!Array.isArray(ie)){var le;if(!j(ie))throw new Go(`Invalid AST Node:  ${String(ie)}`,{node:ie});if(B&&ce.includes(ie)){ae.pop();continue}const _=x(o,C(ie),s);if(_){for(const[s,i]of Object.entries(a))o[s]=i;const u={replaceWith(o,a){\"function\"==typeof a?a(o,ie,i,U,ae,ce):U&&(U[i]=o),s||(ie=o)}};fe=_.call(o,ie,i,U,ae,ce,u)}if(\"function\"==typeof(null===(le=fe)||void 0===le?void 0:le.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:o,visitFn:_});if(fe===u)break;if(fe===w){if(!s){ae.pop();continue}}else if(void 0!==fe&&(ee.push([i,fe]),!s)){if(!j(fe)){ae.pop();continue}ie=fe}}var pe;if(void 0===fe&&de&&ee.push([i,ie]),!s)V={inArray:z,index:Z,keys:Y,edits:ee,prev:V},z=Array.isArray(ie),Y=z?ie:null!==(pe=$[C(ie)])&&void 0!==pe?pe:[],Z=-1,ee=[],U!==_&&void 0!==U&&ce.push(U),U=ie}while(void 0!==V);return 0!==ee.length?ee[ee.length-1][1]:s};visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,{keyMap:i=null,state:a={},breakSymbol:u=Uu,deleteNodeSymbol:_=null,skipVisitingNodeSymbol:w=!1,visitFnGetter:x=getVisitFn,nodeTypeGetter:C=getNodeType,nodePredicate:j=isNode,nodeCloneFn:L=cloneNode,detectCycles:B=!0}={})=>{const $=i||{};let V,U,z=Array.isArray(s),Y=[s],Z=-1,ee=[],ie=s;const ae=[],ce=[];do{Z+=1;const s=Z===Y.length;let i;const pe=s&&0!==ee.length;if(s){if(i=0===ce.length?void 0:ae.pop(),ie=U,U=ce.pop(),pe)if(z){ie=ie.slice();let s=0;for(const[o,i]of ee){const a=o-s;i===_?(ie.splice(a,1),s+=1):ie[a]=i}}else{ie=L(ie);for(const[s,o]of ee)ie[s]=o}Z=V.index,Y=V.keys,ee=V.edits,z=V.inArray,V=V.prev}else if(U!==_&&void 0!==U){if(i=z?Z:Y[Z],ie=U[i],ie===_||void 0===ie)continue;ae.push(i)}let de;if(!Array.isArray(ie)){if(!j(ie))throw new Go(`Invalid AST Node: ${String(ie)}`,{node:ie});if(B&&ce.includes(ie)){ae.pop();continue}const _=x(o,C(ie),s);if(_){for(const[s,i]of Object.entries(a))o[s]=i;const u={replaceWith(o,a){\"function\"==typeof a?a(o,ie,i,U,ae,ce):U&&(U[i]=o),s||(ie=o)}};de=await _.call(o,ie,i,U,ae,ce,u)}if(de===u)break;if(de===w){if(!s){ae.pop();continue}}else if(void 0!==de&&(ee.push([i,de]),!s)){if(!j(de)){ae.pop();continue}ie=de}}var le;if(void 0===de&&pe&&ee.push([i,ie]),!s)V={inArray:z,index:Z,keys:Y,edits:ee,prev:V},z=Array.isArray(ie),Y=z?ie:null!==(le=$[C(ie)])&&void 0!==le?le:[],Z=-1,ee=[],U!==_&&void 0!==U&&ce.push(U),U=ie}while(void 0!==V);return 0!==ee.length?ee[ee.length-1][1]:s};const zu=class CloneError extends Go{value;constructor(s,o){super(s,o),void 0!==o&&(this.value=o.value)}};const Wu=class DeepCloneError extends zu{};const Ju=class ShallowCloneError extends zu{},cloneDeep=(s,o={})=>{const{visited:i=new WeakMap}=o,a={...o,visited:i};if(i.has(s))return i.get(s);if(s instanceof Su.KeyValuePair){const{key:o,value:u}=s,_=ju(o)?cloneDeep(o,a):o,w=ju(u)?cloneDeep(u,a):u,x=new Su.KeyValuePair(_,w);return i.set(s,x),x}if(s instanceof Su.ot){const mapper=s=>cloneDeep(s,a),o=[...s].map(mapper),u=new Su.ot(o);return i.set(s,u),u}if(s instanceof Su.G6){const mapper=s=>cloneDeep(s,a),o=[...s].map(mapper),u=new Su.G6(o);return i.set(s,u),u}if(ju(s)){const o=cloneShallow(s);if(i.set(s,o),s.content)if(ju(s.content))o.content=cloneDeep(s.content,a);else if(s.content instanceof Su.KeyValuePair)o.content=cloneDeep(s.content,a);else if(Array.isArray(s.content)){const mapper=s=>cloneDeep(s,a);o.content=s.content.map(mapper)}else o.content=s.content;else o.content=s.content;return o}throw new Wu(\"Value provided to cloneDeep function couldn't be cloned\",{value:s})};cloneDeep.safe=s=>{try{return cloneDeep(s)}catch{return s}};const cloneShallowKeyValuePair=s=>{const{key:o,value:i}=s;return new Su.KeyValuePair(o,i)},cloneShallowElement=s=>{const o=new s.constructor;if(o.element=s.element,s.meta.length>0&&(o._meta=cloneDeep(s.meta)),s.attributes.length>0&&(o._attributes=cloneDeep(s.attributes)),ju(s.content)){const i=s.content;o.content=cloneShallowElement(i)}else Array.isArray(s.content)?o.content=[...s.content]:s.content instanceof Su.KeyValuePair?o.content=cloneShallowKeyValuePair(s.content):o.content=s.content;return o},cloneShallow=s=>{if(s instanceof Su.KeyValuePair)return cloneShallowKeyValuePair(s);if(s instanceof Su.ot)return(s=>{const o=[...s];return new Su.ot(o)})(s);if(s instanceof Su.G6)return(s=>{const o=[...s];return new Su.G6(o)})(s);if(ju(s))return cloneShallowElement(s);throw new Ju(\"Value provided to cloneShallow function couldn't be cloned\",{value:s})};cloneShallow.safe=s=>{try{return cloneShallow(s)}catch{return s}};const visitor_getNodeType=s=>Mu(s)?\"ObjectElement\":Ru(s)?\"ArrayElement\":Du(s)?\"MemberElement\":Iu(s)?\"StringElement\":Nu(s)?\"BooleanElement\":Pu(s)?\"NumberElement\":Tu(s)?\"NullElement\":Lu(s)?\"LinkElement\":Fu(s)?\"RefElement\":void 0,visitor_cloneNode=s=>ju(s)?cloneShallow(s):cloneNode(s),Hu=pipe(visitor_getNodeType,Jc),Ku={ObjectElement:[\"content\"],ArrayElement:[\"content\"],MemberElement:[\"key\",\"value\"],StringElement:[],BooleanElement:[],NumberElement:[],NullElement:[],RefElement:[],LinkElement:[],Annotation:[],Comment:[],ParseResultElement:[\"content\"],SourceMap:[\"content\"]};class PredicateVisitor{result;predicate;returnOnTrue;returnOnFalse;constructor({predicate:s=es_F,returnOnTrue:o,returnOnFalse:i}={}){this.result=[],this.predicate=s,this.returnOnTrue=o,this.returnOnFalse=i}enter(s){return this.predicate(s)?(this.result.push(s),this.returnOnTrue):this.returnOnFalse}}const visitor_visit=(s,o,{keyMap:i=Ku,...a}={})=>visit(s,o,{keyMap:i,nodeTypeGetter:visitor_getNodeType,nodePredicate:Hu,nodeCloneFn:visitor_cloneNode,...a});visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,{keyMap:i=Ku,...a}={})=>visit[Symbol.for(\"nodejs.util.promisify.custom\")](s,o,{keyMap:i,nodeTypeGetter:visitor_getNodeType,nodePredicate:Hu,nodeCloneFn:visitor_cloneNode,...a});const nodeTypeGetter=s=>\"string\"==typeof(null==s?void 0:s.type)?s.type:visitor_getNodeType(s),Gu={EphemeralObject:[\"content\"],EphemeralArray:[\"content\"],...Ku},value_visitor_visit=(s,o,{keyMap:i=Gu,...a}={})=>visitor_visit(s,o,{keyMap:i,nodeTypeGetter,nodePredicate:es_T,detectCycles:!1,deleteNodeSymbol:Symbol.for(\"delete-node\"),skipVisitingNodeSymbol:Symbol.for(\"skip-visiting-node\"),...a});value_visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,{keyMap:o=Gu,...i}={})=>visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")](s,visitor,{keyMap:o,nodeTypeGetter,nodePredicate:es_T,detectCycles:!1,deleteNodeSymbol:Symbol.for(\"delete-node\"),skipVisitingNodeSymbol:Symbol.for(\"skip-visiting-node\"),...i});const Yu=class EphemeralArray{type=\"EphemeralArray\";content=[];reference=void 0;constructor(s){this.content=s,this.reference=[]}toReference(){return this.reference}toArray(){return this.reference.push(...this.content),this.reference}};const Xu=class EphemeralObject{type=\"EphemeralObject\";content=[];reference=void 0;constructor(s){this.content=s,this.reference={}}toReference(){return this.reference}toObject(){return Object.assign(this.reference,Object.fromEntries(this.content))}};class Visitor{ObjectElement={enter:s=>{if(this.references.has(s))return this.references.get(s).toReference();const o=new Xu(s.content);return this.references.set(s,o),o}};EphemeralObject={leave:s=>s.toObject()};MemberElement={enter:s=>[s.key,s.value]};ArrayElement={enter:s=>{if(this.references.has(s))return this.references.get(s).toReference();const o=new Yu(s.content);return this.references.set(s,o),o}};EphemeralArray={leave:s=>s.toArray()};references=new WeakMap;BooleanElement(s){return s.toValue()}NumberElement(s){return s.toValue()}StringElement(s){return s.toValue()}NullElement(){return null}RefElement(s,...o){var i;const a=o[3];return\"EphemeralObject\"===(null===(i=a[a.length-1])||void 0===i?void 0:i.type)?Symbol.for(\"delete-node\"):String(s.toValue())}LinkElement(s){return Iu(s.href)?s.href.toValue():\"\"}}const serializers_value=s=>ju(s)?Iu(s)||Pu(s)||Nu(s)||Tu(s)?s.toValue():value_visitor_visit(s,new Visitor):s;const Qu=_curry3((function mergeWithKey(s,o,i){var a,u={};for(a in i=i||{},o=o||{})_has(a,o)&&(u[a]=_has(a,i)?s(a,o[a],i[a]):o[a]);for(a in i)_has(a,i)&&!_has(a,u)&&(u[a]=i[a]);return u}));const Zu=_curry3((function mergeDeepWithKey(s,o,i){return Qu((function(o,i,a){return _isObject(i)&&_isObject(a)?mergeDeepWithKey(s,i,a):s(o,i,a)}),o,i)}));const ep=_curry2((function mergeDeepRight(s,o){return Zu((function(s,o,i){return i}),s,o)}));const tp=_curry2(_path);const rp=ja(0,-1);const np=_curry2((function apply(s,o){return s.apply(this,o)}));const sp=dc(Mc);var op=_curry1((function empty(s){return null!=s&&\"function\"==typeof s[\"fantasy-land/empty\"]?s[\"fantasy-land/empty\"]():null!=s&&null!=s.constructor&&\"function\"==typeof s.constructor[\"fantasy-land/empty\"]?s.constructor[\"fantasy-land/empty\"]():null!=s&&\"function\"==typeof s.empty?s.empty():null!=s&&null!=s.constructor&&\"function\"==typeof s.constructor.empty?s.constructor.empty():ca(s)?[]:_isString(s)?\"\":_isObject(s)?{}:Ei(s)?function(){return arguments}():function _isTypedArray(s){var o=Object.prototype.toString.call(s);return\"[object Uint8ClampedArray]\"===o||\"[object Int8Array]\"===o||\"[object Uint8Array]\"===o||\"[object Int16Array]\"===o||\"[object Uint16Array]\"===o||\"[object Int32Array]\"===o||\"[object Uint32Array]\"===o||\"[object Float32Array]\"===o||\"[object Float64Array]\"===o||\"[object BigInt64Array]\"===o||\"[object BigUint64Array]\"===o}(s)?s.constructor.from(\"\"):void 0}));const ip=op;const cp=_curry1((function isEmpty(s){return null!=s&&na(s,ip(s))}));const lp=$a(1,Mc(Array.isArray)?Array.isArray:pipe(ra,Ic(\"Array\")));const up=ou(lp,cp);var pp=$a(3,(function(s,o,i){var a=tp(s,i),u=tp(rp(s),i);if(!sp(a)&&!up(s)){var _=Ea(a,u);return np(_,o)}}));const hp=pp;class Namespace extends Su.g${constructor(){super(),this.register(\"annotation\",ku),this.register(\"comment\",Ou),this.register(\"parseResult\",Cu),this.register(\"sourceMap\",Au)}}const dp=new Namespace,createNamespace=s=>{const o=new Namespace;return fu(s)&&o.use(s),o},fp=dp,toolbox=()=>({predicates:{...ie},namespace:fp}),mp={toolboxCreator:toolbox,visitorOptions:{nodeTypeGetter:visitor_getNodeType,exposeEdits:!0}},dispatchPluginsSync=(s,o,i={})=>{if(0===o.length)return s;const a=ep(mp,i),{toolboxCreator:u,visitorOptions:_}=a,w=u(),x=o.map((s=>s(w))),C=mergeAll(x.map(La({},\"visitor\")),{..._});x.forEach(hp([\"pre\"],[]));const j=visitor_visit(s,C,_);return x.forEach(hp([\"post\"],[])),j};dispatchPluginsSync[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,i={})=>{if(0===o.length)return s;const a=ep(mp,i),{toolboxCreator:u,visitorOptions:_}=a,w=u(),x=o.map((s=>s(w))),C=mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")],j=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],L=C(x.map(La({},\"visitor\")),{..._});await Promise.allSettled(x.map(hp([\"pre\"],[])));const B=await j(s,L,_);return await Promise.allSettled(x.map(hp([\"post\"],[]))),B};const refract=(s,{Type:o,plugins:i=[]})=>{const a=new o(s);return ju(s)&&(s.meta.length>0&&(a.meta=cloneDeep(s.meta)),s.attributes.length>0&&(a.attributes=cloneDeep(s.attributes))),dispatchPluginsSync(a,i,{toolboxCreator:toolbox,visitorOptions:{nodeTypeGetter:visitor_getNodeType}})},createRefractor=s=>(o,i={})=>refract(o,{...i,Type:s});Su.Sh.refract=createRefractor(Su.Sh),Su.wE.refract=createRefractor(Su.wE),Su.Om.refract=createRefractor(Su.Om),Su.bd.refract=createRefractor(Su.bd),Su.Os.refract=createRefractor(Su.Os),Su.kT.refract=createRefractor(Su.kT),Su.Ft.refract=createRefractor(Su.Ft),Su.sI.refract=createRefractor(Su.sI),ku.refract=createRefractor(ku),Ou.refract=createRefractor(Ou),Cu.refract=createRefractor(Cu),Au.refract=createRefractor(Au);const computeEdges=(s,o=new WeakMap)=>(Du(s)?(o.set(s.key,s),computeEdges(s.key,o),o.set(s.value,s),computeEdges(s.value,o)):s.children.forEach((i=>{o.set(i,s),computeEdges(i,o)})),o);const gp=class Transcluder_Transcluder{element;edges;constructor({element:s}){this.element=s}transclude(s,o){var i;if(s===this.element)return o;if(s===o)return this.element;this.edges=null!==(i=this.edges)&&void 0!==i?i:computeEdges(this.element);const a=this.edges.get(s);return bc(a)?void 0:(Mu(a)?((s,o,i)=>{const a=i.get(s);Mu(a)&&(a.content=a.map(((u,_,w)=>w===s?(i.delete(s),i.set(o,a),o):w)))})(s,o,this.edges):Ru(a)?((s,o,i)=>{const a=i.get(s);Ru(a)&&(a.content=a.map((u=>u===s?(i.delete(s),i.set(o,a),o):u)))})(s,o,this.edges):Du(a)&&((s,o,i)=>{const a=i.get(s);Du(a)&&(a.key===s&&(a.key=o,i.delete(s),i.set(o,a)),a.value===s&&(a.value=o,i.delete(s),i.set(o,a)))})(s,o,this.edges),this.element)}},fromURIReference=s=>{const o=s.indexOf(\"#\");return(s=>{try{const o=s.startsWith(\"#\")?s.slice(1):s;return decodeURIComponent(o)}catch{return s}})(-1===o?\"#\":s.substring(o))},yp=function fnparser(){const s=Ep,o=Sp,i=this,a=\"parser.js: Parser(): \";i.ast=void 0,i.stats=void 0,i.trace=void 0,i.callbacks=[];let u,_,w,x,C,j,L,B=0,$=0,V=0,U=0,z=0,Y=new function systemData(){this.state=s.ACTIVE,this.phraseLength=0,this.refresh=()=>{this.state=s.ACTIVE,this.phraseLength=0}};i.parse=(Z,ee,ie,ae)=>{const ce=`${a}parse(): `;B=0,$=0,V=0,U=0,z=0,u=void 0,_=void 0,w=void 0,x=void 0,Y.refresh(),C=void 0,j=void 0,L=void 0,x=o.stringToChars(ie),u=Z.rules,_=Z.udts;const le=ee.toLowerCase();let pe;for(const s in u)if(u.hasOwnProperty(s)&&le===u[s].lower){pe=u[s].index;break}if(void 0===pe)throw new Error(`${ce}start rule name '${startRule}' not recognized`);(()=>{const s=`${a}initializeCallbacks(): `;let o,w;for(C=[],j=[],o=0;o<u.length;o+=1)C[o]=void 0;for(o=0;o<_.length;o+=1)j[o]=void 0;const x=[];for(o=0;o<u.length;o+=1)x.push(u[o].lower);for(o=0;o<_.length;o+=1)x.push(_[o].lower);for(const a in i.callbacks)if(i.callbacks.hasOwnProperty(a)){if(o=x.indexOf(a.toLowerCase()),o<0)throw new Error(`${s}syntax callback '${a}' not a rule or udt name`);if(w=i.callbacks[a]?i.callbacks[a]:void 0,\"function\"!=typeof w&&void 0!==w)throw new Error(`${s}syntax callback[${a}] must be function reference or falsy)`);o<u.length?C[o]=w:j[o-u.length]=w}})(),i.trace&&i.trace.init(u,_,x),i.stats&&i.stats.init(u,_),i.ast&&i.ast.init(u,_,x),L=ae,w=[{type:s.RNM,index:pe}],opExecute(0,0),w=void 0;let de=!1;switch(Y.state){case s.ACTIVE:throw new Error(`${ce}final state should never be 'ACTIVE'`);case s.NOMATCH:de=!1;break;case s.EMPTY:case s.MATCH:de=Y.phraseLength===x.length;break;default:throw new Error(\"unrecognized state\")}return{success:de,state:Y.state,stateName:s.idName(Y.state),length:x.length,matched:Y.phraseLength,maxMatched:z,maxTreeDepth:V,nodeHits:U}};const validateRnmCallbackResult=(o,i,u,_)=>{if(i.phraseLength>u){let s=`${a}opRNM(${o.name}): callback function error: `;throw s+=`sysData.phraseLength: ${i.phraseLength}`,s+=` must be <= remaining chars: ${u}`,new Error(s)}switch(i.state){case s.ACTIVE:if(!_)throw new Error(`${a}opRNM(${o.name}): callback function return error. ACTIVE state not allowed.`);break;case s.EMPTY:i.phraseLength=0;break;case s.MATCH:0===i.phraseLength&&(i.state=s.EMPTY);break;case s.NOMATCH:i.phraseLength=0;break;default:throw new Error(`${a}opRNM(${o.name}): callback function return error. Unrecognized return state: ${i.state}`)}},opUDT=(o,C)=>{let $,V,U;const z=w[o],Z=_[z.index];Y.UdtIndex=Z.index,B||(U=i.ast&&i.ast.udtDefined(z.index),U&&(V=u.length+z.index,$=i.ast.getLength(),i.ast.down(V,Z.name)));const ee=x.length-C;j[z.index](Y,x,C,L),((o,i,u)=>{if(i.phraseLength>u){let s=`${a}opUDT(${o.name}): callback function error: `;throw s+=`sysData.phraseLength: ${i.phraseLength}`,s+=` must be <= remaining chars: ${u}`,new Error(s)}switch(i.state){case s.ACTIVE:throw new Error(`${a}opUDT(${o.name}) ACTIVE state return not allowed.`);case s.EMPTY:if(!o.empty)throw new Error(`${a}opUDT(${o.name}) may not return EMPTY.`);i.phraseLength=0;break;case s.MATCH:if(0===i.phraseLength){if(!o.empty)throw new Error(`${a}opUDT(${o.name}) may not return EMPTY.`);i.state=s.EMPTY}break;case s.NOMATCH:i.phraseLength=0;break;default:throw new Error(`${a}opUDT(${o.name}): callback function return error. Unrecognized return state: ${i.state}`)}})(Z,Y,ee),B||U&&(Y.state===s.NOMATCH?i.ast.setLength($):i.ast.up(V,Z.name,C,Y.phraseLength))},opExecute=(o,_)=>{const j=`${a}opExecute(): `,Z=w[o];switch(U+=1,$>V&&(V=$),$+=1,Y.refresh(),i.trace&&i.trace.down(Z,_),Z.type){case s.ALT:((o,i)=>{const a=w[o];for(let o=0;o<a.children.length&&(opExecute(a.children[o],i),Y.state===s.NOMATCH);o+=1);})(o,_);break;case s.CAT:((o,a)=>{let u,_,x,C;const j=w[o];i.ast&&(_=i.ast.getLength()),u=!0,x=a,C=0;for(let o=0;o<j.children.length;o+=1){if(opExecute(j.children[o],x),Y.state===s.NOMATCH){u=!1;break}x+=Y.phraseLength,C+=Y.phraseLength}u?(Y.state=0===C?s.EMPTY:s.MATCH,Y.phraseLength=C):(Y.state=s.NOMATCH,Y.phraseLength=0,i.ast&&i.ast.setLength(_))})(o,_);break;case s.REP:((o,a)=>{let u,_,C,j;const L=w[o];if(0===L.max)return Y.state=s.EMPTY,void(Y.phraseLength=0);for(_=a,C=0,j=0,i.ast&&(u=i.ast.getLength());!(_>=x.length)&&(opExecute(o+1,_),Y.state!==s.NOMATCH)&&Y.state!==s.EMPTY&&(j+=1,C+=Y.phraseLength,_+=Y.phraseLength,j!==L.max););Y.state===s.EMPTY||j>=L.min?(Y.state=0===C?s.EMPTY:s.MATCH,Y.phraseLength=C):(Y.state=s.NOMATCH,Y.phraseLength=0,i.ast&&i.ast.setLength(u))})(o,_);break;case s.RNM:((o,a)=>{let _,j,$;const V=w[o],U=u[V.index],z=C[U.index];if(B||(j=i.ast&&i.ast.ruleDefined(V.index),j&&(_=i.ast.getLength(),i.ast.down(V.index,u[V.index].name))),z){const o=x.length-a;z(Y,x,a,L),validateRnmCallbackResult(U,Y,o,!0),Y.state===s.ACTIVE&&($=w,w=U.opcodes,opExecute(0,a),w=$,z(Y,x,a,L),validateRnmCallbackResult(U,Y,o,!1))}else $=w,w=U.opcodes,opExecute(0,a,Y),w=$;B||j&&(Y.state===s.NOMATCH?i.ast.setLength(_):i.ast.up(V.index,U.name,a,Y.phraseLength))})(o,_);break;case s.TRG:((o,i)=>{const a=w[o];Y.state=s.NOMATCH,i<x.length&&a.min<=x[i]&&x[i]<=a.max&&(Y.state=s.MATCH,Y.phraseLength=1)})(o,_);break;case s.TBS:((o,i)=>{const a=w[o],u=a.string.length;if(Y.state=s.NOMATCH,i+u<=x.length){for(let s=0;s<u;s+=1)if(x[i+s]!==a.string[s])return;Y.state=s.MATCH,Y.phraseLength=u}})(o,_);break;case s.TLS:((o,i)=>{let a;const u=w[o];Y.state=s.NOMATCH;const _=u.string.length;if(0!==_){if(i+_<=x.length){for(let s=0;s<_;s+=1)if(a=x[i+s],a>=65&&a<=90&&(a+=32),a!==u.string[s])return;Y.state=s.MATCH,Y.phraseLength=_}}else Y.state=s.EMPTY})(o,_);break;case s.UDT:opUDT(o,_);break;case s.AND:((o,i)=>{switch(B+=1,opExecute(o+1,i),B-=1,Y.phraseLength=0,Y.state){case s.EMPTY:case s.MATCH:Y.state=s.EMPTY;break;case s.NOMATCH:Y.state=s.NOMATCH;break;default:throw new Error(`opAND: invalid state ${Y.state}`)}})(o,_);break;case s.NOT:((o,i)=>{switch(B+=1,opExecute(o+1,i),B-=1,Y.phraseLength=0,Y.state){case s.EMPTY:case s.MATCH:Y.state=s.NOMATCH;break;case s.NOMATCH:Y.state=s.EMPTY;break;default:throw new Error(`opNOT: invalid state ${Y.state}`)}})(o,_);break;default:throw new Error(`${j}unrecognized operator`)}B||_+Y.phraseLength>z&&(z=_+Y.phraseLength),i.stats&&i.stats.collect(Z,Y),i.trace&&i.trace.up(Z,Y.state,_,Y.phraseLength),$-=1}},vp=function fnast(){const s=Ep,o=Sp,i=this;let a,u,_,w=0;const x=[],C=[],j=[];function indent(s){let o=\"\";for(;s-- >0;)o+=\" \";return o}i.callbacks=[],i.init=(s,o,L)=>{let B;C.length=0,j.length=0,w=0,a=s,u=o,_=L;const $=[];for(B=0;B<a.length;B+=1)$.push(a[B].lower);for(B=0;B<u.length;B+=1)$.push(u[B].lower);for(w=a.length+u.length,B=0;B<w;B+=1)x[B]=void 0;for(const s in i.callbacks)if(i.callbacks.hasOwnProperty(s)){const o=s.toLowerCase();if(B=$.indexOf(o),B<0)throw new Error(`parser.js: Ast()): init: node '${s}' not a rule or udt name`);x[B]=i.callbacks[s]}},i.ruleDefined=s=>!!x[s],i.udtDefined=s=>!!x[a.length+s],i.down=(o,i)=>{const a=j.length;return C.push(a),j.push({name:i,thisIndex:a,thatIndex:void 0,state:s.SEM_PRE,callbackIndex:o,phraseIndex:void 0,phraseLength:void 0,stack:C.length}),a},i.up=(o,i,a,u)=>{const _=j.length,w=C.pop();return j.push({name:i,thisIndex:_,thatIndex:w,state:s.SEM_POST,callbackIndex:o,phraseIndex:a,phraseLength:u,stack:C.length}),j[w].thatIndex=_,j[w].phraseIndex=a,j[w].phraseLength=u,_},i.translate=o=>{let i,a;for(let u=0;u<j.length;u+=1)a=j[u],i=x[a.callbackIndex],i&&(a.state===s.SEM_PRE?i(s.SEM_PRE,_,a.phraseIndex,a.phraseLength,o):i&&i(s.SEM_POST,_,a.phraseIndex,a.phraseLength,o))},i.setLength=s=>{j.length=s,C.length=s>0?j[s-1].stack:0},i.getLength=()=>j.length,i.toXml=()=>{let i=\"\",a=0;return i+='<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n',i+=`<root nodes=\"${j.length/2}\" characters=\"${_.length}\">\\n`,i+=\"\\x3c!-- input string --\\x3e\\n\",i+=indent(a+2),i+=o.charsToString(_),i+=\"\\n\",j.forEach((u=>{u.state===s.SEM_PRE?(a+=1,i+=indent(a),i+=`<node name=\"${u.name}\" index=\"${u.phraseIndex}\" length=\"${u.phraseLength}\">\\n`,i+=indent(a+2),i+=o.charsToString(_,u.phraseIndex,u.phraseLength),i+=\"\\n\"):(i+=indent(a),i+=`</node>\\x3c!-- name=\"${u.name}\" --\\x3e\\n`,a-=1)})),i+=\"</root>\\n\",i}},bp=function fntrace(){const s=Ep,o=Sp,i=\"parser.js: Trace(): \";let a,u,_,w=\"\",x=0;const C=this,indent=s=>{let o=\"\",i=0;if(s>=0)for(;s--;)i+=1,5===i?(o+=\"|\",i=0):o+=\".\";return o};C.init=(s,o,i)=>{u=s,_=o,a=i};const opName=a=>{let w;switch(a.type){case s.ALT:w=\"ALT\";break;case s.CAT:w=\"CAT\";break;case s.REP:w=a.max===1/0?`REP(${a.min},inf)`:`REP(${a.min},${a.max})`;break;case s.RNM:w=`RNM(${u[a.index].name})`;break;case s.TRG:w=`TRG(${a.min},${a.max})`;break;case s.TBS:w=a.string.length>6?`TBS(${o.charsToString(a.string,0,3)}...)`:`TBS(${o.charsToString(a.string,0,6)})`;break;case s.TLS:w=a.string.length>6?`TLS(${o.charsToString(a.string,0,3)}...)`:`TLS(${o.charsToString(a.string,0,6)})`;break;case s.UDT:w=`UDT(${_[a.index].name})`;break;case s.AND:w=\"AND\";break;case s.NOT:w=\"NOT\";break;default:throw new Error(`${i}Trace: opName: unrecognized opcode`)}return w};C.down=(s,i)=>{const u=indent(x),_=Math.min(100,a.length-i);let C=o.charsToString(a,i,_);_<a.length-i&&(C+=\"...\"),C=`${u}|-|[${opName(s)}]${C}\\n`,w+=C,x+=1},C.up=(u,_,C,j)=>{const L=`${i}trace.up: `;x-=1;const B=indent(x);let $,V,U;switch(_){case s.EMPTY:U=\"|E|\",V=\"''\";break;case s.MATCH:U=\"|M|\",$=Math.min(100,j),V=$<j?`'${o.charsToString(a,C,$)}...'`:`'${o.charsToString(a,C,$)}'`;break;case s.NOMATCH:U=\"|N|\",V=\"\";break;default:throw new Error(`${L} unrecognized state`)}V=`${B}${U}[${opName(u)}]${V}\\n`,w+=V},C.displayTrace=()=>w},_p=function fnstats(){const s=Ep;let o,i,a;const u=[],_=[],w=[];this.init=(s,a)=>{o=s,i=a,clear()},this.collect=(o,i)=>{incStat(a,i.state,i.phraseLength),incStat(u[o.type],i.state,i.phraseLength),o.type===s.RNM&&incStat(_[o.index],i.state,i.phraseLength),o.type===s.UDT&&incStat(w[o.index],i.state,i.phraseLength)},this.displayStats=()=>{let o=\"\";const i={match:0,empty:0,nomatch:0,total:0},displayRow=(s,o,a,u,_)=>{i.match+=o,i.empty+=a,i.nomatch+=u,i.total+=_;return`${s} | ${normalize(o)} | ${normalize(a)} | ${normalize(u)} | ${normalize(_)} |\\n`};return o+=\"          OPERATOR STATS\\n\",o+=\"      |   MATCH |   EMPTY | NOMATCH |   TOTAL |\\n\",o+=displayRow(\"  ALT\",u[s.ALT].match,u[s.ALT].empty,u[s.ALT].nomatch,u[s.ALT].total),o+=displayRow(\"  CAT\",u[s.CAT].match,u[s.CAT].empty,u[s.CAT].nomatch,u[s.CAT].total),o+=displayRow(\"  REP\",u[s.REP].match,u[s.REP].empty,u[s.REP].nomatch,u[s.REP].total),o+=displayRow(\"  RNM\",u[s.RNM].match,u[s.RNM].empty,u[s.RNM].nomatch,u[s.RNM].total),o+=displayRow(\"  TRG\",u[s.TRG].match,u[s.TRG].empty,u[s.TRG].nomatch,u[s.TRG].total),o+=displayRow(\"  TBS\",u[s.TBS].match,u[s.TBS].empty,u[s.TBS].nomatch,u[s.TBS].total),o+=displayRow(\"  TLS\",u[s.TLS].match,u[s.TLS].empty,u[s.TLS].nomatch,u[s.TLS].total),o+=displayRow(\"  UDT\",u[s.UDT].match,u[s.UDT].empty,u[s.UDT].nomatch,u[s.UDT].total),o+=displayRow(\"  AND\",u[s.AND].match,u[s.AND].empty,u[s.AND].nomatch,u[s.AND].total),o+=displayRow(\"  NOT\",u[s.NOT].match,u[s.NOT].empty,u[s.NOT].nomatch,u[s.NOT].total),o+=displayRow(\"TOTAL\",i.match,i.empty,i.nomatch,i.total),o},this.displayHits=s=>{let o=\"\";const displayRow=(s,o,i,u,_)=>{a.match+=s,a.empty+=o,a.nomatch+=i,a.total+=u;return`| ${normalize(s)} | ${normalize(o)} | ${normalize(i)} | ${normalize(u)} | ${_}\\n`};\"string\"==typeof s&&\"a\"===s.toLowerCase()[0]?(_.sort(sortAlpha),w.sort(sortAlpha),o+=\"    RULES/UDTS ALPHABETICALLY\\n\"):\"string\"==typeof s&&\"i\"===s.toLowerCase()[0]?(_.sort(sortIndex),w.sort(sortIndex),o+=\"    RULES/UDTS BY INDEX\\n\"):(_.sort(sortHits),w.sort(sortHits),o+=\"    RULES/UDTS BY HIT COUNT\\n\"),o+=\"|   MATCH |   EMPTY | NOMATCH |   TOTAL | NAME\\n\";for(let s=0;s<_.length;s+=1){let i=_[s];i.total&&(o+=displayRow(i.match,i.empty,i.nomatch,i.total,i.name))}for(let s=0;s<w.length;s+=1){let i=w[s];i.total&&(o+=displayRow(i.match,i.empty,i.nomatch,i.total,i.name))}return o};const normalize=s=>s<10?`      ${s}`:s<100?`     ${s}`:s<1e3?`    ${s}`:s<1e4?`   ${s}`:s<1e5?`  ${s}`:s<1e6?` ${s}`:`${s}`,sortAlpha=(s,o)=>s.lower<o.lower?-1:s.lower>o.lower?1:0,sortHits=(s,o)=>s.total<o.total?1:s.total>o.total?-1:sortAlpha(s,o),sortIndex=(s,o)=>s.index<o.index?-1:s.index>o.index?1:0,x=function fnempty(){this.empty=0,this.match=0,this.nomatch=0,this.total=0},clear=()=>{u.length=0,a=new x,u[s.ALT]=new x,u[s.CAT]=new x,u[s.REP]=new x,u[s.RNM]=new x,u[s.TRG]=new x,u[s.TBS]=new x,u[s.TLS]=new x,u[s.UDT]=new x,u[s.AND]=new x,u[s.NOT]=new x,_.length=0;for(let s=0;s<o.length;s+=1)_.push({empty:0,match:0,nomatch:0,total:0,name:o[s].name,lower:o[s].lower,index:o[s].index});if(i.length>0){w.length=0;for(let s=0;s<i.length;s+=1)w.push({empty:0,match:0,nomatch:0,total:0,name:i[s].name,lower:i[s].lower,index:i[s].index})}},incStat=(o,i)=>{switch(o.total+=1,i){case s.EMPTY:o.empty+=1;break;case s.MATCH:o.match+=1;break;case s.NOMATCH:o.nomatch+=1;break;default:throw new Error(`parser.js: Stats(): collect(): incStat(): unrecognized state: ${i}`)}}},Sp={stringToChars:s=>[...s].map((s=>s.codePointAt(0))),charsToString:(s,o,i)=>{let a=s;for(;!(void 0===o||o<0);){if(void 0===i){a=s.slice(o);break}if(i<=0)return\"\";a=s.slice(o,o+i);break}return String.fromCodePoint(...a)}},Ep={ALT:1,CAT:2,REP:3,RNM:4,TRG:5,TBS:6,TLS:7,UDT:11,AND:12,NOT:13,ACTIVE:100,MATCH:101,EMPTY:102,NOMATCH:103,SEM_PRE:200,SEM_POST:201,SEM_OK:300,idName:s=>{switch(s){case Ep.ALT:return\"ALT\";case Ep.CAT:return\"CAT\";case Ep.REP:return\"REP\";case Ep.RNM:return\"RNM\";case Ep.TRG:return\"TRG\";case Ep.TBS:return\"TBS\";case Ep.TLS:return\"TLS\";case Ep.UDT:return\"UDT\";case Ep.AND:return\"AND\";case Ep.NOT:return\"NOT\";case Ep.ACTIVE:return\"ACTIVE\";case Ep.EMPTY:return\"EMPTY\";case Ep.MATCH:return\"MATCH\";case Ep.NOMATCH:return\"NOMATCH\";case Ep.SEM_PRE:return\"SEM_PRE\";case Ep.SEM_POST:return\"SEM_POST\";case Ep.SEM_OK:return\"SEM_OK\";default:return\"UNRECOGNIZED STATE\"}}};function grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"json-pointer\",lower:\"json-pointer\",index:0,isBkr:!1},this.rules[1]={name:\"reference-token\",lower:\"reference-token\",index:1,isBkr:!1},this.rules[2]={name:\"unescaped\",lower:\"unescaped\",index:2,isBkr:!1},this.rules[3]={name:\"escaped\",lower:\"escaped\",index:3,isBkr:!1},this.rules[4]={name:\"array-location\",lower:\"array-location\",index:4,isBkr:!1},this.rules[5]={name:\"array-index\",lower:\"array-index\",index:5,isBkr:!1},this.rules[6]={name:\"array-dash\",lower:\"array-dash\",index:6,isBkr:!1},this.rules[7]={name:\"slash\",lower:\"slash\",index:7,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:3,min:0,max:1/0},this.rules[0].opcodes[1]={type:2,children:[2,3]},this.rules[0].opcodes[2]={type:4,index:7},this.rules[0].opcodes[3]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:3,min:0,max:1/0},this.rules[1].opcodes[1]={type:1,children:[2,3]},this.rules[1].opcodes[2]={type:4,index:2},this.rules[1].opcodes[3]={type:4,index:3},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:1,children:[1,2,3]},this.rules[2].opcodes[1]={type:5,min:0,max:46},this.rules[2].opcodes[2]={type:5,min:48,max:125},this.rules[2].opcodes[3]={type:5,min:127,max:1114111},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:2,children:[1,2]},this.rules[3].opcodes[1]={type:7,string:[126]},this.rules[3].opcodes[2]={type:1,children:[3,4]},this.rules[3].opcodes[3]={type:7,string:[48]},this.rules[3].opcodes[4]={type:7,string:[49]},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:1,children:[1,2]},this.rules[4].opcodes[1]={type:4,index:5},this.rules[4].opcodes[2]={type:4,index:6},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,2]},this.rules[5].opcodes[1]={type:6,string:[48]},this.rules[5].opcodes[2]={type:2,children:[3,4]},this.rules[5].opcodes[3]={type:5,min:49,max:57},this.rules[5].opcodes[4]={type:3,min:0,max:1/0},this.rules[5].opcodes[5]={type:5,min:48,max:57},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:7,string:[45]},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:7,string:[47]},this.toString=function toString(){let s=\"\";return s+=\"; JavaScript Object Notation (JSON) Pointer ABNF syntax\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6901\\n\",s+=\"json-pointer    = *( slash reference-token ) ; MODIFICATION: surrogate text rule used\\n\",s+=\"reference-token = *( unescaped / escaped )\\n\",s+=\"unescaped       = %x00-2E / %x30-7D / %x7F-10FFFF\\n\",s+=\"                ; %x2F ('/') and %x7E ('~') are excluded from 'unescaped'\\n\",s+='escaped         = \"~\" ( \"0\" / \"1\" )\\n',s+=\"                ; representing '~' and '/', respectively\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6901#section-4\\n\",s+=\"array-location  = array-index / array-dash\\n\",s+=\"array-index     = %x30 / ( %x31-39 *(%x30-39) )\\n\",s+='                ; \"0\", or digits without a leading \"0\"\\n',s+='array-dash      = \"-\"\\n',s+=\"\\n\",s+=\"; Surrogate named rules\\n\",s+='slash           = \"/\"\\n','; JavaScript Object Notation (JSON) Pointer ABNF syntax\\n; https://datatracker.ietf.org/doc/html/rfc6901\\njson-pointer    = *( slash reference-token ) ; MODIFICATION: surrogate text rule used\\nreference-token = *( unescaped / escaped )\\nunescaped       = %x00-2E / %x30-7D / %x7F-10FFFF\\n                ; %x2F (\\'/\\') and %x7E (\\'~\\') are excluded from \\'unescaped\\'\\nescaped         = \"~\" ( \"0\" / \"1\" )\\n                ; representing \\'~\\' and \\'/\\', respectively\\n\\n; https://datatracker.ietf.org/doc/html/rfc6901#section-4\\narray-location  = array-index / array-dash\\narray-index     = %x30 / ( %x31-39 *(%x30-39) )\\n                ; \"0\", or digits without a leading \"0\"\\narray-dash      = \"-\"\\n\\n; Surrogate named rules\\nslash           = \"/\"\\n'}}class JSONPointerError extends Error{constructor(s,o=void 0){if(super(s,o),this.name=this.constructor.name,\"string\"==typeof s&&(this.message=s),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(s).stack,null!=o&&\"object\"==typeof o&&Object.prototype.hasOwnProperty.call(o,\"cause\")&&!(\"cause\"in this)){const{cause:s}=o;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}if(null!=o&&\"object\"==typeof o){const{cause:s,...i}=o;Object.assign(this,i)}}}const wp=JSONPointerError;const xp=class JSONPointerParseError extends wp{},callbacks_cst=s=>(o,i,a,u,_)=>{if(\"object\"!=typeof _||null===_||Array.isArray(_))throw new xp(\"parser's user data must be an object\");if(o===Ep.SEM_PRE){const o={type:s,text:Sp.charsToString(i,a,u),start:a,length:u,children:[]};if(_.stack.length>0){_.stack[_.stack.length-1].children.push(o)}else _.root=o;_.stack.push(o)}o===Ep.SEM_POST&&_.stack.pop()};const kp=class CSTTranslator_CSTTranslator extends vp{constructor(){super(),this.callbacks[\"json-pointer\"]=callbacks_cst(\"json-pointer\"),this.callbacks[\"reference-token\"]=callbacks_cst(\"reference-token\"),this.callbacks.slash=callbacks_cst(\"text\")}getTree(){const s={stack:[],root:null};return this.translate(s),delete s.stack,s}},es_unescape=s=>{if(\"string\"!=typeof s)throw new TypeError(\"Reference token must be a string\");return s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")};const Op=class ASTTranslator extends kp{getTree(){const{root:s}=super.getTree();return s.children.filter((({type:s})=>\"reference-token\"===s)).map((({text:s})=>es_unescape(s)))}};const Cp=class Expectations extends Array{toString(){return this.map((s=>`\"${String(s)}\"`)).join(\", \")}};const Ap=class Trace extends bp{inferExpectations(){const s=this.displayTrace().split(\"\\n\"),o=new Set;let i=-1;for(let a=0;a<s.length;a++){const u=s[a];if(u.includes(\"M|\")){const s=u.match(/]'(.*)'$/);s&&s[1]&&(i=a)}if(a>i){const s=u.match(/N\\|\\[TLS\\(([^)]+)\\)]/);s&&o.add(s[1])}}return new Cp(...o)}},jp=new grammar,es_parse=(s,{translator:o=new Op,stats:i=!1,trace:a=!1}={})=>{if(\"string\"!=typeof s)throw new TypeError(\"JSON Pointer must be a string\");try{const u=new yp;o&&(u.ast=o),i&&(u.stats=new _p),a&&(u.trace=new Ap);const _=u.parse(jp,\"json-pointer\",s);return{result:_,tree:_.success&&o?u.ast.getTree():void 0,stats:u.stats,trace:u.trace}}catch(o){throw new xp(\"Unexpected error during JSON Pointer parsing\",{cause:o,jsonPointer:s})}};new grammar,new yp,new grammar,new yp;const Ip=new grammar,Pp=new yp,array_index=s=>{if(\"string\"!=typeof s)return!1;try{return Pp.parse(Ip,\"array-index\",s).success}catch{return!1}},Tp=new grammar,Np=new yp,array_dash=s=>{if(\"string\"!=typeof s)return!1;try{return Np.parse(Tp,\"array-dash\",s).success}catch{return!1}},es_escape=s=>{if(\"string\"!=typeof s&&\"number\"!=typeof s)throw new TypeError(\"Reference token must be a string or number\");return String(s).replace(/~/g,\"~0\").replace(/\\//g,\"~1\")};const Mp=class JSONPointerCompileError extends wp{},es_compile=s=>{if(!Array.isArray(s))throw new TypeError(\"Reference tokens must be a list of strings or numbers\");try{return 0===s.length?\"\":`/${s.map((s=>{if(\"string\"!=typeof s&&\"number\"!=typeof s)throw new TypeError(\"Reference token must be a string or number\");return es_escape(String(s))})).join(\"/\")}`}catch(o){throw new Mp(\"Unexpected error during JSON Pointer compilation\",{cause:o,referenceTokens:s})}};const Rp=class TraceBuilder{#e;#t;#r;constructor(s,o={}){this.#e=s,this.#e.steps=[],this.#e.failed=!1,this.#e.failedAt=-1,this.#e.message=`JSON Pointer \"${o.jsonPointer}\" was successfully evaluated against the provided value`,this.#e.context={...o,realm:o.realm.name},this.#t=[],this.#r=o.realm}step({referenceToken:s,input:o,output:i,success:a=!0,reason:u}){const _=this.#t.length;this.#t.push(s);const w={referenceToken:s,referenceTokenPosition:_,input:o,inputType:this.#r.isObject(o)?\"object\":this.#r.isArray(o)?\"array\":\"unrecognized\",output:i,success:a};u&&(w.reason=u),this.#e.steps.push(w),a||(this.#e.failed=!0,this.#e.failedAt=_,this.#e.message=u)}};const Dp=class EvaluationRealm{name=\"\";isArray(s){throw new wp(\"Realm.isArray(node) must be implemented in a subclass\")}isObject(s){throw new wp(\"Realm.isObject(node) must be implemented in a subclass\")}sizeOf(s){throw new wp(\"Realm.sizeOf(node) must be implemented in a subclass\")}has(s,o){throw new wp(\"Realm.has(node) must be implemented in a subclass\")}evaluate(s,o){throw new wp(\"Realm.evaluate(node) must be implemented in a subclass\")}};const Lp=class JSONPointerEvaluateError extends wp{};const Fp=class JSONPointerIndexError extends Lp{};const Bp=class JSONEvaluationRealm extends Dp{name=\"json\";isArray(s){return Array.isArray(s)}isObject(s){return\"object\"==typeof s&&null!==s&&!this.isArray(s)}sizeOf(s){return this.isArray(s)?s.length:this.isObject(s)?Object.keys(s).length:0}has(s,o){if(this.isArray(s)){const i=Number(o),a=i>>>0;if(i!==a)throw new Fp(`Invalid array index \"${o}\": index must be an unsinged 32-bit integer`,{referenceToken:o,currentValue:s,realm:this.name});return a<this.sizeOf(s)&&Object.prototype.hasOwnProperty.call(s,i)}return!!this.isObject(s)&&Object.prototype.hasOwnProperty.call(s,o)}evaluate(s,o){return this.isArray(s)?s[Number(o)]:s[o]}};const $p=class JSONPointerTypeError extends Lp{};const qp=class JSONPointerKeyError extends Lp{},es_evaluate=(s,o,{strictArrays:i=!0,strictObjects:a=!0,realm:u=new Bp,trace:_=!0}={})=>{const{result:w,tree:x,trace:C}=es_parse(o,{trace:!!_}),j=\"object\"==typeof _&&null!==_?new Rp(_,{jsonPointer:o,referenceTokens:x,strictArrays:i,strictObjects:a,realm:u,value:s}):null;try{let _;if(!w.success){let i=`Invalid JSON Pointer: \"${o}\". Syntax error at position ${w.maxMatched}`;throw i+=C?`, expected ${C.inferExpectations()}`:\"\",new Lp(i,{jsonPointer:o,currentValue:s,realm:u.name})}return x.reduce(((s,w,C)=>{if(u.isArray(s)){if(array_dash(w)){if(i)throw new Fp(`Invalid array index \"-\" at position ${C} in \"${o}\". The \"-\" token always refers to a nonexistent element during evaluation`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,String(u.sizeOf(s))),null==j||j.step({referenceToken:w,input:s,output:_}),_}if(!array_index(w))throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index MUST be \"0\", or digits without a leading \"0\"`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});const a=Number(w);if(!Number.isSafeInteger(a))throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index must be a safe integer`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});if(!u.has(s,w)&&i)throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index not found in array`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,w),null==j||j.step({referenceToken:w,input:s,output:_}),_}if(u.isObject(s)){if(!u.has(s,w)&&a)throw new qp(`Invalid object key \"${w}\" at position ${C} in \"${o}\": key not found in object`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,w),null==j||j.step({referenceToken:w,input:s,output:_}),_}throw new $p(`Invalid reference token \"${w}\" at position ${C} in \"${o}\": cannot be applied to a non-object/non-array value`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name})}),s)}catch(s){if(null==j||j.step({referenceToken:s.referenceToken,input:s.currentValue,success:!1,reason:s.message}),s instanceof Lp)throw s;throw new Lp(\"Unexpected error during JSON Pointer evaluation\",{cause:s,jsonPointer:o,referenceTokens:x})}};const Vp=class ApiDOMEvaluationRealm extends Dp{name=\"apidom\";isArray(s){return Ru(s)}isObject(s){return Mu(s)}sizeOf(s){return this.isArray(s)||this.isObject(s)?s.length:0}has(s,o){if(this.isArray(s)){const i=Number(o),a=i>>>0;if(i!==a)throw new Fp(`Invalid array index \"${o}\": index must be an unsinged 32-bit integer`,{referenceToken:o,currentValue:s,realm:this.name});return a<this.sizeOf(s)}if(this.isObject(s)){const i=s.keys(),a=new Set(i);if(i.length!==a.size)throw new qp(`Object key \"${o}\" is not unique — JSON Pointer requires unique member names`,{referenceToken:o,currentValue:s,realm:this.name});return s.hasKey(o)}return!1}evaluate(s,o){return this.isArray(s)?s.get(Number(o)):s.get(o)}},apidom_evaluate=(s,o,i={})=>es_evaluate(s,o,{...i,realm:new Vp});class Callback extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"callback\"}}const Up=Callback;class Components extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"components\"}get schemas(){return this.get(\"schemas\")}set schemas(s){this.set(\"schemas\",s)}get responses(){return this.get(\"responses\")}set responses(s){this.set(\"responses\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get requestBodies(){return this.get(\"requestBodies\")}set requestBodies(s){this.set(\"requestBodies\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get securitySchemes(){return this.get(\"securitySchemes\")}set securitySchemes(s){this.set(\"securitySchemes\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}get callbacks(){return this.get(\"callbacks\")}set callbacks(s){this.set(\"callbacks\",s)}}const zp=Components;class Contact extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"contact\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}get email(){return this.get(\"email\")}set email(s){this.set(\"email\",s)}}const Wp=Contact;class Discriminator extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"discriminator\"}get propertyName(){return this.get(\"propertyName\")}set propertyName(s){this.set(\"propertyName\",s)}get mapping(){return this.get(\"mapping\")}set mapping(s){this.set(\"mapping\",s)}}const Jp=Discriminator;class Encoding extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"encoding\"}get contentType(){return this.get(\"contentType\")}set contentType(s){this.set(\"contentType\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowedReserved(){return this.get(\"allowedReserved\")}set allowedReserved(s){this.set(\"allowedReserved\",s)}}const Hp=Encoding;class Example extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"example\"}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get value(){return this.get(\"value\")}set value(s){this.set(\"value\",s)}get externalValue(){return this.get(\"externalValue\")}set externalValue(s){this.set(\"externalValue\",s)}}const Kp=Example;class ExternalDocumentation extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"externalDocumentation\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}}const Gp=ExternalDocumentation;class Header extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"header\"}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get allowEmptyValue(){return this.get(\"allowEmptyValue\")}set allowEmptyValue(s){this.set(\"allowEmptyValue\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowReserved(){return this.get(\"allowReserved\")}set allowReserved(s){this.set(\"allowReserved\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}}Object.defineProperty(Header.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0});const Yp=Header;class Info extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"info\",this.classes.push(\"info\")}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get termsOfService(){return this.get(\"termsOfService\")}set termsOfService(s){this.set(\"termsOfService\",s)}get contact(){return this.get(\"contact\")}set contact(s){this.set(\"contact\",s)}get license(){return this.get(\"license\")}set license(s){this.set(\"license\",s)}get version(){return this.get(\"version\")}set version(s){this.set(\"version\",s)}}const Xp=Info;class License extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"license\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}}const Qp=License;class Link extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"link\"}get operationRef(){return this.get(\"operationRef\")}set operationRef(s){this.set(\"operationRef\",s)}get operationId(){return this.get(\"operationId\")}set operationId(s){this.set(\"operationId\",s)}get operation(){var s,o;return Iu(this.operationRef)?null===(s=this.operationRef)||void 0===s?void 0:s.meta.get(\"operation\"):Iu(this.operationId)?null===(o=this.operationId)||void 0===o?void 0:o.meta.get(\"operation\"):void 0}set operation(s){this.set(\"operation\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get server(){return this.get(\"server\")}set server(s){this.set(\"server\",s)}}const Zp=Link;class MediaType extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"mediaType\"}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get encoding(){return this.get(\"encoding\")}set encoding(s){this.set(\"encoding\",s)}}const th=MediaType;class OAuthFlow extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"oAuthFlow\"}get authorizationUrl(){return this.get(\"authorizationUrl\")}set authorizationUrl(s){this.set(\"authorizationUrl\",s)}get tokenUrl(){return this.get(\"tokenUrl\")}set tokenUrl(s){this.set(\"tokenUrl\",s)}get refreshUrl(){return this.get(\"refreshUrl\")}set refreshUrl(s){this.set(\"refreshUrl\",s)}get scopes(){return this.get(\"scopes\")}set scopes(s){this.set(\"scopes\",s)}}const rh=OAuthFlow;class OAuthFlows extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"oAuthFlows\"}get implicit(){return this.get(\"implicit\")}set implicit(s){this.set(\"implicit\",s)}get password(){return this.get(\"password\")}set password(s){this.set(\"password\",s)}get clientCredentials(){return this.get(\"clientCredentials\")}set clientCredentials(s){this.set(\"clientCredentials\",s)}get authorizationCode(){return this.get(\"authorizationCode\")}set authorizationCode(s){this.set(\"authorizationCode\",s)}}const uh=OAuthFlows;class Openapi extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"openapi\",this.classes.push(\"spec-version\"),this.classes.push(\"version\")}}const dh=Openapi;class OpenApi3_0 extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"openApi3_0\",this.classes.push(\"api\")}get openapi(){return this.get(\"openapi\")}set openapi(s){this.set(\"openapi\",s)}get info(){return this.get(\"info\")}set info(s){this.set(\"info\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get paths(){return this.get(\"paths\")}set paths(s){this.set(\"paths\",s)}get components(){return this.get(\"components\")}set components(s){this.set(\"components\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}}const fh=OpenApi3_0;class Operation extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"operation\"}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}set externalDocs(s){this.set(\"externalDocs\",s)}get externalDocs(){return this.get(\"externalDocs\")}get operationId(){return this.get(\"operationId\")}set operationId(s){this.set(\"operationId\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}get responses(){return this.get(\"responses\")}set responses(s){this.set(\"responses\",s)}get callbacks(){return this.get(\"callbacks\")}set callbacks(s){this.set(\"callbacks\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get servers(){return this.get(\"severs\")}set servers(s){this.set(\"servers\",s)}}const vh=Operation;class Parameter extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"parameter\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get in(){return this.get(\"in\")}set in(s){this.set(\"in\",s)}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get allowEmptyValue(){return this.get(\"allowEmptyValue\")}set allowEmptyValue(s){this.set(\"allowEmptyValue\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowReserved(){return this.get(\"allowReserved\")}set allowReserved(s){this.set(\"allowReserved\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}}Object.defineProperty(Parameter.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0});const _h=Parameter;class PathItem extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"pathItem\"}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get GET(){return this.get(\"get\")}set GET(s){this.set(\"GET\",s)}get PUT(){return this.get(\"put\")}set PUT(s){this.set(\"PUT\",s)}get POST(){return this.get(\"post\")}set POST(s){this.set(\"POST\",s)}get DELETE(){return this.get(\"delete\")}set DELETE(s){this.set(\"DELETE\",s)}get OPTIONS(){return this.get(\"options\")}set OPTIONS(s){this.set(\"OPTIONS\",s)}get HEAD(){return this.get(\"head\")}set HEAD(s){this.set(\"HEAD\",s)}get PATCH(){return this.get(\"patch\")}set PATCH(s){this.set(\"PATCH\",s)}get TRACE(){return this.get(\"trace\")}set TRACE(s){this.set(\"TRACE\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}}const wh=PathItem;class Paths extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"paths\"}}const Oh=Paths;class Reference extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"reference\",this.classes.push(\"openapi-reference\")}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}}const jh=Reference;class RequestBody extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"requestBody\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}}const Ih=RequestBody;class Response_Response extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"response\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}}const Ph=Response_Response;class Responses extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"responses\"}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}}const Rh=Responses;const Dh=class UnsupportedOperationError extends Ko{};class JSONSchema extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft4\"}get idProp(){return this.get(\"id\")}set idProp(s){this.set(\"id\",s)}get $schema(){return this.get(\"$schema\")}set $schema(s){this.set(\"$schema\",s)}get multipleOf(){return this.get(\"multipleOf\")}set multipleOf(s){this.set(\"multipleOf\",s)}get maximum(){return this.get(\"maximum\")}set maximum(s){this.set(\"maximum\",s)}get exclusiveMaximum(){return this.get(\"exclusiveMaximum\")}set exclusiveMaximum(s){this.set(\"exclusiveMaximum\",s)}get minimum(){return this.get(\"minimum\")}set minimum(s){this.set(\"minimum\",s)}get exclusiveMinimum(){return this.get(\"exclusiveMinimum\")}set exclusiveMinimum(s){this.set(\"exclusiveMinimum\",s)}get maxLength(){return this.get(\"maxLength\")}set maxLength(s){this.set(\"maxLength\",s)}get minLength(){return this.get(\"minLength\")}set minLength(s){this.set(\"minLength\",s)}get pattern(){return this.get(\"pattern\")}set pattern(s){this.set(\"pattern\",s)}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get maxItems(){return this.get(\"maxItems\")}set maxItems(s){this.set(\"maxItems\",s)}get minItems(){return this.get(\"minItems\")}set minItems(s){this.set(\"minItems\",s)}get uniqueItems(){return this.get(\"uniqueItems\")}set uniqueItems(s){this.set(\"uniqueItems\",s)}get maxProperties(){return this.get(\"maxProperties\")}set maxProperties(s){this.set(\"maxProperties\",s)}get minProperties(){return this.get(\"minProperties\")}set minProperties(s){this.set(\"minProperties\",s)}get required(){return this.get(\"required\")}set required(s){this.set(\"required\",s)}get properties(){return this.get(\"properties\")}set properties(s){this.set(\"properties\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get patternProperties(){return this.get(\"patternProperties\")}set patternProperties(s){this.set(\"patternProperties\",s)}get dependencies(){return this.get(\"dependencies\")}set dependencies(s){this.set(\"dependencies\",s)}get enum(){return this.get(\"enum\")}set enum(s){this.set(\"enum\",s)}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get allOf(){return this.get(\"allOf\")}set allOf(s){this.set(\"allOf\",s)}get anyOf(){return this.get(\"anyOf\")}set anyOf(s){this.set(\"anyOf\",s)}get oneOf(){return this.get(\"oneOf\")}set oneOf(s){this.set(\"oneOf\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get definitions(){return this.get(\"definitions\")}set definitions(s){this.set(\"definitions\",s)}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}get format(){return this.get(\"format\")}set format(s){this.set(\"format\",s)}get base(){return this.get(\"base\")}set base(s){this.set(\"base\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}get media(){return this.get(\"media\")}set media(s){this.set(\"media\",s)}get readOnly(){return this.get(\"readOnly\")}set readOnly(s){this.set(\"readOnly\",s)}}const Lh=JSONSchema;class JSONReference extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"JSONReference\",this.classes.push(\"json-reference\")}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}}const Fh=JSONReference;class Media extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"media\"}get binaryEncoding(){return this.get(\"binaryEncoding\")}set binaryEncoding(s){this.set(\"binaryEncoding\",s)}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}}const Jh=Media;class LinkDescription extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"linkDescription\"}get href(){return this.get(\"href\")}set href(s){this.set(\"href\",s)}get rel(){return this.get(\"rel\")}set rel(s){this.set(\"rel\",s)}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get mediaType(){return this.get(\"mediaType\")}set mediaType(s){this.set(\"mediaType\",s)}get method(){return this.get(\"method\")}set method(s){this.set(\"method\",s)}get encType(){return this.get(\"encType\")}set encType(s){this.set(\"encType\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}}const Hh=LinkDescription;const Kh=_curry2((function mapObjIndexed(s,o){return _arrayReduce((function(i,a){return i[a]=s(o[a],a,o),i}),{},ea(o))}));const Gh=_curry1((function isNil(s){return null==s}));var Qh=_curry2((function hasPath(s,o){if(0===s.length||Gh(o))return!1;for(var i=o,a=0;a<s.length;){if(Gh(i)||!_has(s[a],i))return!1;i=i[s[a]],a+=1}return!0}));const td=Qh;var sd=_curry2((function has(s,o){return td([s],o)}));const id=sd;const cd=_curry3((function propSatisfies(s,o,i){return s(Da(o,i))}));var ld=function(){function XDropWhile(s,o){this.xf=o,this.f=s}return XDropWhile.prototype[\"@@transducer/init\"]=_xfBase_init,XDropWhile.prototype[\"@@transducer/result\"]=_xfBase_result,XDropWhile.prototype[\"@@transducer/step\"]=function(s,o){if(this.f){if(this.f(o))return s;this.f=null}return this.xf[\"@@transducer/step\"](s,o)},XDropWhile}();function _xdropWhile(s){return function(o){return new ld(s,o)}}const ud=_curry2(_dispatchable([\"dropWhile\"],_xdropWhile,(function dropWhile(s,o){for(var i=0,a=o.length;i<a&&s(o[i]);)i+=1;return ja(i,1/0,o)})));const dd=za((function(s,o){return pipe(Ha(\"\"),ud(sc(s)),rc(\"\"))(o)})),dereference=(s,o)=>{const i=Na(s,o);return Kh((s=>{if(fu(s)&&id(\"$ref\",s)&&cd(Jc,\"$ref\",s)){const o=tp([\"$ref\"],s),a=dd(\"#/\",o);return tp(a.split(\"/\"),i)}return fu(s)?dereference(s,i):s}),s)},emptyElement=s=>{const o=s.meta.length>0?cloneDeep(s.meta):void 0,i=s.attributes.length>0?cloneDeep(s.attributes):void 0;return new s.constructor(void 0,o,i)},cloneUnlessOtherwiseSpecified=(s,o)=>o.clone&&o.isMergeableElement(s)?deepmerge(emptyElement(s),s,o):s,md={clone:!0,isMergeableElement:s=>Mu(s)||Ru(s),arrayElementMerge:(s,o,i)=>s.concat(o)[\"fantasy-land/map\"]((s=>cloneUnlessOtherwiseSpecified(s,i))),objectElementMerge:(s,o,i)=>{const a=Mu(s)?emptyElement(s):emptyElement(o);return Mu(s)&&s.forEach(((s,o,u)=>{const _=cloneShallow(u);_.value=cloneUnlessOtherwiseSpecified(s,i),a.content.push(_)})),o.forEach(((o,u,_)=>{const w=serializers_value(u);let x;if(Mu(s)&&s.hasKey(w)&&i.isMergeableElement(o)){const a=s.get(w);x=cloneShallow(_),x.value=((s,o)=>{if(\"function\"!=typeof o.customMerge)return deepmerge;const i=o.customMerge(s,o);return\"function\"==typeof i?i:deepmerge})(u,i)(a,o)}else x=cloneShallow(_),x.value=cloneUnlessOtherwiseSpecified(o,i);a.remove(w),a.content.push(x)})),a},customMerge:void 0,customMetaMerge:void 0,customAttributesMerge:void 0},deepmerge=(s,o,i)=>{var a,u,_;const w={...md,...i};w.isMergeableElement=null!==(a=w.isMergeableElement)&&void 0!==a?a:md.isMergeableElement,w.arrayElementMerge=null!==(u=w.arrayElementMerge)&&void 0!==u?u:md.arrayElementMerge,w.objectElementMerge=null!==(_=w.objectElementMerge)&&void 0!==_?_:md.objectElementMerge;const x=Ru(o);if(!(x===Ru(s)))return cloneUnlessOtherwiseSpecified(o,w);const C=x&&\"function\"==typeof w.arrayElementMerge?w.arrayElementMerge(s,o,w):w.objectElementMerge(s,o,w);return C.meta=(s=>\"function\"!=typeof s.customMetaMerge?s=>cloneDeep(s):s.customMetaMerge)(w)(s.meta,o.meta),C.attributes=(s=>\"function\"!=typeof s.customAttributesMerge?s=>cloneDeep(s):s.customAttributesMerge)(w)(s.attributes,o.attributes),C};deepmerge.all=(s,o)=>{if(!Array.isArray(s))throw new TypeError(\"First argument of deepmerge should be an array.\");return 0===s.length?new Su.Sh:s.reduce(((s,i)=>deepmerge(s,i,o)),emptyElement(s[0]))};const yd=deepmerge;const vd=class Visitor_Visitor{element;constructor(s){Object.assign(this,s)}copyMetaAndAttributes(s,o){(s.meta.length>0||o.meta.length>0)&&(o.meta=yd(o.meta,s.meta),hasElementSourceMap(s)&&o.meta.set(\"sourceMap\",s.meta.get(\"sourceMap\"))),(s.attributes.length>0||s.meta.length>0)&&(o.attributes=yd(o.attributes,s.attributes))}};const _d=class FallbackVisitor extends vd{enter(s){return this.element=cloneDeep(s),Uu}},copyProps=(s,o,i=[])=>{const a=Object.getOwnPropertyDescriptors(o);for(let s of i)delete a[s];Object.defineProperties(s,a)},protoChain=(s,o=[s])=>{const i=Object.getPrototypeOf(s);return null===i?o:protoChain(i,[...o,i])},hardMixProtos=(s,o,i=[])=>{var a;const u=null!==(a=((...s)=>{if(0===s.length)return;let o;const i=s.map((s=>protoChain(s)));for(;i.every((s=>s.length>0));){const s=i.map((s=>s.pop())),a=s[0];if(!s.every((s=>s===a)))break;o=a}return o})(...s))&&void 0!==a?a:Object.prototype,_=Object.create(u),w=protoChain(u);for(let o of s){let s=protoChain(o);for(let o=s.length-1;o>=0;o--){let a=s[o];-1===w.indexOf(a)&&(copyProps(_,a,[\"constructor\",...i]),w.push(a))}}return _.constructor=o,_},unique=s=>s.filter(((o,i)=>s.indexOf(o)==i)),getIngredientWithProp=(s,o)=>{const i=o.map((s=>protoChain(s)));let a=0,u=!0;for(;u;){u=!1;for(let _=o.length-1;_>=0;_--){const o=i[_][a];if(null!=o&&(u=!0,null!=Object.getOwnPropertyDescriptor(o,s)))return i[_][0]}a++}},proxyMix=(s,o=Object.prototype)=>new Proxy({},{getPrototypeOf:()=>o,setPrototypeOf(){throw Error(\"Cannot set prototype of Proxies created by ts-mixer\")},getOwnPropertyDescriptor:(o,i)=>Object.getOwnPropertyDescriptor(getIngredientWithProp(i,s)||{},i),defineProperty(){throw new Error(\"Cannot define new properties on Proxies created by ts-mixer\")},has:(i,a)=>void 0!==getIngredientWithProp(a,s)||void 0!==o[a],get:(i,a)=>(getIngredientWithProp(a,s)||o)[a],set(o,i,a){const u=getIngredientWithProp(i,s);if(void 0===u)throw new Error(\"Cannot set new properties on Proxies created by ts-mixer\");return u[i]=a,!0},deleteProperty(){throw new Error(\"Cannot delete properties on Proxies created by ts-mixer\")},ownKeys:()=>s.map(Object.getOwnPropertyNames).reduce(((s,o)=>o.concat(s.filter((s=>o.indexOf(s)<0)))))}),Sd=null,Ed=\"copy\",wd=\"copy\",xd=\"deep\",kd=new WeakMap,getMixinsForClass=s=>kd.get(s),mergeObjectsOfDecorators=(s,o)=>{var i,a;const u=unique([...Object.getOwnPropertyNames(s),...Object.getOwnPropertyNames(o)]),_={};for(let w of u)_[w]=unique([...null!==(i=null==s?void 0:s[w])&&void 0!==i?i:[],...null!==(a=null==o?void 0:o[w])&&void 0!==a?a:[]]);return _},mergePropertyAndMethodDecorators=(s,o)=>{var i,a,u,_;return{property:mergeObjectsOfDecorators(null!==(i=null==s?void 0:s.property)&&void 0!==i?i:{},null!==(a=null==o?void 0:o.property)&&void 0!==a?a:{}),method:mergeObjectsOfDecorators(null!==(u=null==s?void 0:s.method)&&void 0!==u?u:{},null!==(_=null==o?void 0:o.method)&&void 0!==_?_:{})}},mergeDecorators=(s,o)=>{var i,a,u,_,w,x;return{class:unique([...null!==(i=null==s?void 0:s.class)&&void 0!==i?i:[],...null!==(a=null==o?void 0:o.class)&&void 0!==a?a:[]]),static:mergePropertyAndMethodDecorators(null!==(u=null==s?void 0:s.static)&&void 0!==u?u:{},null!==(_=null==o?void 0:o.static)&&void 0!==_?_:{}),instance:mergePropertyAndMethodDecorators(null!==(w=null==s?void 0:s.instance)&&void 0!==w?w:{},null!==(x=null==o?void 0:o.instance)&&void 0!==x?x:{})}},Od=new Map,deepDecoratorSearch=(...s)=>{const o=((...s)=>{var o;const i=new Set,a=new Set([...s]);for(;a.size>0;)for(let s of a){const u=protoChain(s.prototype).map((s=>s.constructor)),_=[...u,...null!==(o=getMixinsForClass(s))&&void 0!==o?o:[]].filter((s=>!i.has(s)));for(let s of _)a.add(s);i.add(s),a.delete(s)}return[...i]})(...s).map((s=>Od.get(s))).filter((s=>!!s));return 0==o.length?{}:1==o.length?o[0]:o.reduce(((s,o)=>mergeDecorators(s,o)))},getDecoratorsForClass=s=>{let o=Od.get(s);return o||(o={},Od.set(s,o)),o};function Mixin(...s){var o,i,a;const u=s.map((s=>s.prototype)),_=Sd;if(null!==_){const s=u.map((s=>s[_])).filter((s=>\"function\"==typeof s)),combinedInitFunction=function(...o){for(let i of s)i.apply(this,o)},o={[_]:combinedInitFunction};u.push(o)}function MixedClass(...o){for(const i of s)copyProps(this,new i(...o));null!==_&&\"function\"==typeof this[_]&&this[_].apply(this,o)}var w,x;MixedClass.prototype=\"copy\"===wd?hardMixProtos(u,MixedClass):(w=u,x=MixedClass,proxyMix([...w,{constructor:x}])),Object.setPrototypeOf(MixedClass,\"copy\"===Ed?hardMixProtos(s,null,[\"prototype\"]):proxyMix(s,Function.prototype));let C=MixedClass;if(\"none\"!==xd){const u=\"deep\"===xd?deepDecoratorSearch(...s):((...s)=>{const o=s.map((s=>getDecoratorsForClass(s)));return 0===o.length?{}:1===o.length?o[0]:o.reduce(((s,o)=>mergeDecorators(s,o)))})(...s);for(let s of null!==(o=null==u?void 0:u.class)&&void 0!==o?o:[]){const o=s(C);o&&(C=o)}applyPropAndMethodDecorators(null!==(i=null==u?void 0:u.static)&&void 0!==i?i:{},C),applyPropAndMethodDecorators(null!==(a=null==u?void 0:u.instance)&&void 0!==a?a:{},C.prototype)}var j,L;return j=C,L=s,kd.set(j,L),C}const applyPropAndMethodDecorators=(s,o)=>{const i=s.property,a=s.method;if(i)for(let s in i)for(let a of i[s])a(o,s);if(a)for(let s in a)for(let i of a[s])i(o,s,Object.getOwnPropertyDescriptor(o,s))};const Cd=_curry1((function allPass(s){return $a(Ca(Ec,0,Oc(\"length\",s)),(function(){for(var o=0,i=s.length;o<i;){if(!s[o].apply(this,arguments))return!1;o+=1}return!0}))}));const Ad=_curry1((function isNotEmpty(s){return!cp(s)}));const Id=_curry2((function or(s,o){return s||o}));var Td=dc($a(1,ou(au,_curry2((function either(s,o){return _isFunction(s)?function _either(){return s.apply(this,arguments)||o.apply(this,arguments)}:hc(Id)(s,o)}))(cu,Mc))));const Nd=Cd([Jc,Td,Ad]);const Md=_curry2((function pick(s,o){for(var i={},a=0;a<s.length;)s[a]in o&&(i[s[a]]=o[s[a]]),a+=1;return i}));const Rd=class SpecificationVisitor extends vd{specObj;passingOptionsNames=[\"specObj\",\"parent\"];constructor({specObj:s,...o}){super({...o}),this.specObj=s}retrievePassingOptions(){return Md(this.passingOptionsNames,this)}retrieveFixedFields(s){const o=tp([\"visitors\",...s,\"fixedFields\"],this.specObj);return\"object\"==typeof o&&null!==o?Object.keys(o):[]}retrieveVisitor(s){return Qo(Mc,[\"visitors\",...s],this.specObj)?tp([\"visitors\",...s],this.specObj):tp([\"visitors\",...s,\"$visitor\"],this.specObj)}retrieveVisitorInstance(s,o={}){const i=this.retrievePassingOptions();return new(this.retrieveVisitor(s))({...i,...o})}toRefractedElement(s,o,i={}){const a=this.retrieveVisitorInstance(s,i);return a instanceof _d&&(null==a?void 0:a.constructor)===_d?cloneDeep(o):(visitor_visit(o,a,i),a.element)}};const Dd=class FixedFieldsVisitor extends Rd{specPath;ignoredFields;constructor({specPath:s,ignoredFields:o,...i}){super({...i}),this.specPath=s,this.ignoredFields=o||[]}ObjectElement(s){const o=this.specPath(s),i=this.retrieveFixedFields(o);return s.forEach(((s,a,u)=>{if(Iu(a)&&i.includes(serializers_value(a))&&!this.ignoredFields.includes(serializers_value(a))){const i=this.toRefractedElement([...o,\"fixedFields\",serializers_value(a)],s),_=new Su.Pr(cloneDeep(a),i);this.copyMetaAndAttributes(u,_),_.classes.push(\"fixed-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(a))||this.element.content.push(cloneDeep(u))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Ld=class ParentSchemaAwareVisitor{parent;constructor({parent:s}){this.parent=s}},Fd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Lh||s(a)&&o(\"JSONSchemaDraft4\",a)&&i(\"object\",a))),Bd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Fh||s(a)&&o(\"JSONReference\",a)&&i(\"object\",a))),$d=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Jh||s(a)&&o(\"media\",a)&&i(\"object\",a))),Vd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Hh||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a)));class JSONSchemaVisitor extends(Mixin(Dd,Ld,_d)){constructor(s){super(s),this.element=new Lh,this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-04/schema#\"}ObjectElement(s){return this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element,Dd.prototype.ObjectElement.call(this,s)}handleDialectIdentifier(s){if(bc(this.parent)&&!Iu(s.get(\"$schema\")))this.element.setMetaProperty(\"inheritedDialectIdentifier\",this.defaultDialectIdentifier);else if(Fd(this.parent)&&!Iu(s.get(\"$schema\"))){const s=Na(serializers_value(this.parent.meta.get(\"inheritedDialectIdentifier\")),serializers_value(this.parent.$schema));this.element.setMetaProperty(\"inheritedDialectIdentifier\",s)}}handleSchemaIdentifier(s,o=\"id\"){const i=void 0!==this.parent?cloneDeep(this.parent.getMetaProperty(\"ancestorsSchemaIdentifiers\",[])):new Su.wE,a=serializers_value(s.get(o));Nd(a)&&i.push(a),this.element.setMetaProperty(\"ancestorsSchemaIdentifiers\",i)}}const Ud=JSONSchemaVisitor,isJSONReferenceLikeElement=s=>Mu(s)&&s.hasKey(\"$ref\");class ItemsVisitor extends(Mixin(Rd,Ld,_d)){ObjectElement(s){const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"];return this.element=this.toRefractedElement(o,s),Uu}ArrayElement(s){return this.element=new Su.wE,this.element.classes.push(\"json-schema-items\"),s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Wd=ItemsVisitor;const Jd=class RequiredVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-required\"),o}};const Hd=class PatternedFieldsVisitor extends Rd{specPath;ignoredFields;fieldPatternPredicate=es_F;constructor({specPath:s,ignoredFields:o,fieldPatternPredicate:i,...a}){super({...a}),this.specPath=s,this.ignoredFields=o||[],\"function\"==typeof i&&(this.fieldPatternPredicate=i)}ObjectElement(s){return s.forEach(((s,o,i)=>{if(!this.ignoredFields.includes(serializers_value(o))&&this.fieldPatternPredicate(serializers_value(o))){const a=this.specPath(s),u=this.toRefractedElement(a,s),_=new Su.Pr(cloneDeep(o),u);this.copyMetaAndAttributes(i,_),_.classes.push(\"patterned-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(o))||this.element.content.push(cloneDeep(i))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Kd=class MapVisitor extends Hd{constructor(s){super(s),this.fieldPatternPredicate=Nd}};class PropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-properties\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Gd=PropertiesVisitor;class PatternPropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-patternProperties\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Yd=PatternPropertiesVisitor;class DependenciesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-dependencies\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Xd=DependenciesVisitor;const Qd=class EnumVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-enum\"),o}};const Zd=class TypeVisitor extends _d{StringElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-type\"),o}ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-type\"),o}};class AllOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-allOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const ef=AllOfVisitor;class AnyOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-anyOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const rf=AnyOfVisitor;class OneOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-oneOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const of=OneOfVisitor;class DefinitionsVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-definitions\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const af=DefinitionsVisitor;class LinksVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-links\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"LinkDescription\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const cf=LinksVisitor;class JSONReferenceVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Fh,this.specPath=fc([\"document\",\"objects\",\"JSONReference\"])}ObjectElement(s){const o=Dd.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const lf=JSONReferenceVisitor;const uf=class $RefVisitor extends _d{StringElement(s){const o=this.enter(s);return this.element.classes.push(\"reference-value\"),o}};const hf=_curry3((function ifElse(s,o,i){return $a(Math.max(s.length,o.length,i.length),(function _ifElse(){return s.apply(this,arguments)?o.apply(this,arguments):i.apply(this,arguments)}))}));const df=_curry1((function comparator(s){return function(o,i){return s(o,i)?-1:s(i,o)?1:0}}));var mf=_curry2((function sort(s,o){return Array.prototype.slice.call(o,0).sort(s)}));const gf=mf;var yf=_curry1((function(s){return _nth(0,s)}));const bf=yf;const _f=_curry1(_reduced);const Sf=dc(Gh);const xf=ou(lp,Ad);function _toConsumableArray(s){return function _arrayWithoutHoles(s){if(Array.isArray(s))return _arrayLikeToArray(s)}(s)||function _iterableToArray(s){if(\"undefined\"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s[\"@@iterator\"])return Array.from(s)}(s)||function _unsupportedIterableToArray(s,o){if(s){if(\"string\"==typeof s)return _arrayLikeToArray(s,o);var i={}.toString.call(s).slice(8,-1);return\"Object\"===i&&s.constructor&&(i=s.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(s):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray(s,o):void 0}}(s)||function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _arrayLikeToArray(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=Array(o);i<o;i++)a[i]=s[i];return a}var kf=pipe(gf(df((function(s,o){return s.length>o.length}))),bf,Da(\"length\")),Of=za((function(s,o,i){var a=i.apply(void 0,_toConsumableArray(s));return Sf(a)?_f(a):o}));const Cf=hf(xf,(function dispatchImpl(s){var o=kf(s);return $a(o,(function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return Ca(Of(i),void 0,s)}))}),gc);const jf=class AlternatingVisitor extends Rd{alternator;constructor({alternator:s,...o}){super({...o}),this.alternator=s}enter(s){const o=this.alternator.map((({predicate:s,specPath:o})=>hf(s,fc(o),gc))),i=Cf(o)(s);return this.element=this.toRefractedElement(i,s),Uu}};const Pf=class SchemaOrReferenceVisitor extends jf{constructor(s){super(s),this.alternator=[{predicate:isJSONReferenceLikeElement,specPath:[\"document\",\"objects\",\"JSONReference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"JSONSchema\"]}]}};class MediaVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Jh,this.specPath=fc([\"document\",\"objects\",\"Media\"])}}const Tf=MediaVisitor;class LinkDescriptionVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Hh,this.specPath=fc([\"document\",\"objects\",\"LinkDescription\"])}}const Nf=LinkDescriptionVisitor,Rf={visitors:{value:_d,JSONSchemaOrJSONReferenceVisitor:Pf,document:{objects:{JSONSchema:{$visitor:Ud,fixedFields:{id:{$ref:\"#/visitors/value\"},$schema:{$ref:\"#/visitors/value\"},multipleOf:{$ref:\"#/visitors/value\"},maximum:{$ref:\"#/visitors/value\"},exclusiveMaximum:{$ref:\"#/visitors/value\"},minimum:{$ref:\"#/visitors/value\"},exclusiveMinimum:{$ref:\"#/visitors/value\"},maxLength:{$ref:\"#/visitors/value\"},minLength:{$ref:\"#/visitors/value\"},pattern:{$ref:\"#/visitors/value\"},additionalItems:Pf,items:Wd,maxItems:{$ref:\"#/visitors/value\"},minItems:{$ref:\"#/visitors/value\"},uniqueItems:{$ref:\"#/visitors/value\"},maxProperties:{$ref:\"#/visitors/value\"},minProperties:{$ref:\"#/visitors/value\"},required:Jd,properties:Gd,additionalProperties:Pf,patternProperties:Yd,dependencies:Xd,enum:Qd,type:Zd,allOf:ef,anyOf:rf,oneOf:of,not:Pf,definitions:af,title:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},default:{$ref:\"#/visitors/value\"},format:{$ref:\"#/visitors/value\"},base:{$ref:\"#/visitors/value\"},links:cf,media:{$ref:\"#/visitors/document/objects/Media\"},readOnly:{$ref:\"#/visitors/value\"}}},JSONReference:{$visitor:lf,fixedFields:{$ref:uf}},Media:{$visitor:Tf,fixedFields:{binaryEncoding:{$ref:\"#/visitors/value\"},type:{$ref:\"#/visitors/value\"}}},LinkDescription:{$visitor:Nf,fixedFields:{href:{$ref:\"#/visitors/value\"},rel:{$ref:\"#/visitors/value\"},title:{$ref:\"#/visitors/value\"},targetSchema:Pf,mediaType:{$ref:\"#/visitors/value\"},method:{$ref:\"#/visitors/value\"},encType:{$ref:\"#/visitors/value\"},schema:Pf}}}}}},traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},Df={JSONSchemaDraft4Element:[\"content\"],JSONReferenceElement:[\"content\"],MediaElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},Ff={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft4\",Lh),o.register(\"jSONReference\",Fh),o.register(\"media\",Jh),o.register(\"linkDescription\",Hh),o}},Vf=Ff,refractor_toolbox=()=>{const s=createNamespace(Vf);return{predicates:{...ae,isStringElement:Iu},namespace:s}},refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=Rf}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:refractor_toolbox,visitorOptions:{keyMap:Df,nodeTypeGetter:traversal_visitor_getNodeType}})},refractor_createRefractor=s=>(o,i={})=>refractor_refract(o,{specPath:s,...i});Lh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),Fh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONReference\",\"$visitor\"]),Jh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Media\",\"$visitor\"]),Hh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const Wf=class Schema_Schema extends Lh{constructor(s,o,i){super(s,o,i),this.element=\"schema\",this.classes.push(\"json-schema-draft-4\")}get idProp(){throw new Dh(\"idProp getter in Schema class is not not supported.\")}set idProp(s){throw new Dh(\"idProp setter in Schema class is not not supported.\")}get $schema(){throw new Dh(\"$schema getter in Schema class is not not supported.\")}set $schema(s){throw new Dh(\"$schema setter in Schema class is not not supported.\")}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get patternProperties(){throw new Dh(\"patternProperties getter in Schema class is not not supported.\")}set patternProperties(s){throw new Dh(\"patternProperties setter in Schema class is not not supported.\")}get dependencies(){throw new Dh(\"dependencies getter in Schema class is not not supported.\")}set dependencies(s){throw new Dh(\"dependencies setter in Schema class is not not supported.\")}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get definitions(){throw new Dh(\"definitions getter in Schema class is not not supported.\")}set definitions(s){throw new Dh(\"definitions setter in Schema class is not not supported.\")}get base(){throw new Dh(\"base getter in Schema class is not not supported.\")}set base(s){throw new Dh(\"base setter in Schema class is not not supported.\")}get links(){throw new Dh(\"links getter in Schema class is not not supported.\")}set links(s){throw new Dh(\"links setter in Schema class is not not supported.\")}get media(){throw new Dh(\"media getter in Schema class is not not supported.\")}set media(s){throw new Dh(\"media setter in Schema class is not not supported.\")}get nullable(){return this.get(\"nullable\")}set nullable(s){this.set(\"nullable\",s)}get discriminator(){return this.get(\"discriminator\")}set discriminator(s){this.set(\"discriminator\",s)}get writeOnly(){return this.get(\"writeOnly\")}set writeOnly(s){this.set(\"writeOnly\",s)}get xml(){return this.get(\"xml\")}set xml(s){this.set(\"xml\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get deprecated(){return this.get(\"deprecated\")}set deprecated(s){this.set(\"deprecated\",s)}};class SecurityRequirement extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"securityRequirement\"}}const Jf=SecurityRequirement;class SecurityScheme extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"securityScheme\"}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get in(){return this.get(\"in\")}set in(s){this.set(\"in\",s)}get scheme(){return this.get(\"scheme\")}set scheme(s){this.set(\"scheme\",s)}get bearerFormat(){return this.get(\"bearerFormat\")}set bearerFormat(s){this.set(\"bearerFormat\",s)}get flows(){return this.get(\"flows\")}set flows(s){this.set(\"flows\",s)}get openIdConnectUrl(){return this.get(\"openIdConnectUrl\")}set openIdConnectUrl(s){this.set(\"openIdConnectUrl\",s)}}const Hf=SecurityScheme;class Server extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"server\"}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get variables(){return this.get(\"variables\")}set variables(s){this.set(\"variables\",s)}}const Gf=Server;class ServerVariable extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"serverVariable\"}get enum(){return this.get(\"enum\")}set enum(s){this.set(\"enum\",s)}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}}const Xf=ServerVariable;class Tag extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"tag\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}}const Qf=Tag;class Xml extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"xml\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get namespace(){return this.get(\"namespace\")}set namespace(s){this.set(\"namespace\",s)}get prefix(){return this.get(\"prefix\")}set prefix(s){this.set(\"prefix\",s)}get attribute(){return this.get(\"attribute\")}set attribute(s){this.set(\"attribute\",s)}get wrapped(){return this.get(\"wrapped\")}set wrapped(s){this.set(\"wrapped\",s)}}const em=Xml;const tm=class visitors_Visitor_Visitor{element;constructor(s={}){Object.assign(this,s)}copyMetaAndAttributes(s,o){(s.meta.length>0||o.meta.length>0)&&(o.meta=yd(o.meta,s.meta),hasElementSourceMap(s)&&o.meta.set(\"sourceMap\",s.meta.get(\"sourceMap\"))),(s.attributes.length>0||s.meta.length>0)&&(o.attributes=yd(o.attributes,s.attributes))}};const rm=class FallbackVisitor_FallbackVisitor extends tm{enter(s){return this.element=cloneDeep(s),Uu}};const nm=class SpecificationVisitor_SpecificationVisitor extends tm{specObj;passingOptionsNames=[\"specObj\",\"openApiGenericElement\",\"openApiSemanticElement\"];openApiGenericElement;openApiSemanticElement;constructor({specObj:s,passingOptionsNames:o,openApiGenericElement:i,openApiSemanticElement:a,...u}){super({...u}),this.specObj=s,this.openApiGenericElement=i,this.openApiSemanticElement=a,Array.isArray(o)&&(this.passingOptionsNames=o)}retrievePassingOptions(){return Md(this.passingOptionsNames,this)}retrieveFixedFields(s){const o=tp([\"visitors\",...s,\"fixedFields\"],this.specObj);return\"object\"==typeof o&&null!==o?Object.keys(o):[]}retrieveVisitor(s){return Qo(Mc,[\"visitors\",...s],this.specObj)?tp([\"visitors\",...s],this.specObj):tp([\"visitors\",...s,\"$visitor\"],this.specObj)}retrieveVisitorInstance(s,o={}){const i=this.retrievePassingOptions();return new(this.retrieveVisitor(s))({...i,...o})}toRefractedElement(s,o,i={}){const a=this.retrieveVisitorInstance(s,i);return a instanceof rm&&(null==a?void 0:a.constructor)===rm?cloneDeep(o):(visitor_visit(o,a,i),a.element)}};var sm=function(){function XTake(s,o){this.xf=o,this.n=s,this.i=0}return XTake.prototype[\"@@transducer/init\"]=_xfBase_init,XTake.prototype[\"@@transducer/result\"]=_xfBase_result,XTake.prototype[\"@@transducer/step\"]=function(s,o){this.i+=1;var i=0===this.n?s:this.xf[\"@@transducer/step\"](s,o);return this.n>=0&&this.i>=this.n?_reduced(i):i},XTake}();function _xtake(s){return function(o){return new sm(s,o)}}const om=_curry2(_dispatchable([\"take\"],_xtake,(function take(s,o){return ja(0,s<0?1/0:s,o)})));var im=_curry2((function(s,o){return na(om(s.length,o),s)}));const am=im,isReferenceLikeElement=s=>Mu(s)&&s.hasKey(\"$ref\"),cm=Mu,lm=Mu,isOpenApiExtension=s=>Iu(s.key)&&am(\"x-\",serializers_value(s.key));const um=class FixedFieldsVisitor_FixedFieldsVisitor extends nm{specPath;ignoredFields;canSupportSpecificationExtensions=!0;specificationExtensionPredicate=isOpenApiExtension;constructor({specPath:s,ignoredFields:o,canSupportSpecificationExtensions:i,specificationExtensionPredicate:a,...u}){super({...u}),this.specPath=s,this.ignoredFields=o||[],\"boolean\"==typeof i&&(this.canSupportSpecificationExtensions=i),\"function\"==typeof a&&(this.specificationExtensionPredicate=a)}ObjectElement(s){const o=this.specPath(s),i=this.retrieveFixedFields(o);return s.forEach(((s,a,u)=>{if(Iu(a)&&i.includes(serializers_value(a))&&!this.ignoredFields.includes(serializers_value(a))){const i=this.toRefractedElement([...o,\"fixedFields\",serializers_value(a)],s),_=new Su.Pr(cloneDeep(a),i);this.copyMetaAndAttributes(u,_),_.classes.push(\"fixed-field\"),this.element.content.push(_)}else if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(u)){const s=this.toRefractedElement([\"document\",\"extension\"],u);this.element.content.push(s)}else this.ignoredFields.includes(serializers_value(a))||this.element.content.push(cloneDeep(u))})),this.copyMetaAndAttributes(s,this.element),Uu}};class OpenApi3_0Visitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new fh,this.specPath=fc([\"document\",\"objects\",\"OpenApi\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){return um.prototype.ObjectElement.call(this,s)}}const pm=OpenApi3_0Visitor;class OpenapiVisitor extends(Mixin(nm,rm)){StringElement(s){const o=new dh(serializers_value(s));return this.copyMetaAndAttributes(s,o),this.element=o,Uu}}const hm=OpenapiVisitor;const dm=class SpecificationExtensionVisitor extends nm{MemberElement(s){return this.element=cloneDeep(s),this.element.classes.push(\"specification-extension\"),Uu}};class InfoVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Xp,this.specPath=fc([\"document\",\"objects\",\"Info\"]),this.canSupportSpecificationExtensions=!0}}const fm=InfoVisitor;const mm=class VersionVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"api-version\"),this.element.classes.push(\"version\"),o}};class ContactVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Wp,this.specPath=fc([\"document\",\"objects\",\"Contact\"]),this.canSupportSpecificationExtensions=!0}}const gm=ContactVisitor;class LicenseVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Qp,this.specPath=fc([\"document\",\"objects\",\"License\"]),this.canSupportSpecificationExtensions=!0}}const ym=LicenseVisitor;class LinkVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Zp,this.specPath=fc([\"document\",\"objects\",\"Link\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return(Iu(this.element.operationId)||Iu(this.element.operationRef))&&this.element.classes.push(\"reference-element\"),o}}const vm=LinkVisitor;const bm=class OperationRefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};const _m=class OperationIdVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};const Sm=class PatternedFieldsVisitor_PatternedFieldsVisitor extends nm{specPath;ignoredFields;fieldPatternPredicate=es_F;canSupportSpecificationExtensions=!1;specificationExtensionPredicate=isOpenApiExtension;constructor({specPath:s,ignoredFields:o,fieldPatternPredicate:i,canSupportSpecificationExtensions:a,specificationExtensionPredicate:u,..._}){super({..._}),this.specPath=s,this.ignoredFields=o||[],\"function\"==typeof i&&(this.fieldPatternPredicate=i),\"boolean\"==typeof a&&(this.canSupportSpecificationExtensions=a),\"function\"==typeof u&&(this.specificationExtensionPredicate=u)}ObjectElement(s){return s.forEach(((s,o,i)=>{if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(i)){const s=this.toRefractedElement([\"document\",\"extension\"],i);this.element.content.push(s)}else if(!this.ignoredFields.includes(serializers_value(o))&&this.fieldPatternPredicate(serializers_value(o))){const a=this.specPath(s),u=this.toRefractedElement(a,s),_=new Su.Pr(cloneDeep(o),u);this.copyMetaAndAttributes(i,_),_.classes.push(\"patterned-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(o))||this.element.content.push(cloneDeep(i))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Em=class MapVisitor_MapVisitor extends Sm{constructor(s){super(s),this.fieldPatternPredicate=Nd}};class LinkParameters extends Su.Sh{static primaryClass=\"link-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(LinkParameters.primaryClass)}}const wm=LinkParameters;class ParametersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new wm,this.specPath=fc([\"value\"])}}const xm=ParametersVisitor;class ServerVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Gf,this.specPath=fc([\"document\",\"objects\",\"Server\"]),this.canSupportSpecificationExtensions=!0}}const km=ServerVisitor;const Om=class UrlVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"server-url\"),o}};class Servers extends Su.wE{static primaryClass=\"servers\";constructor(s,o,i){super(s,o,i),this.classes.push(Servers.primaryClass)}}const Cm=Servers;class ServersVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Cm}ArrayElement(s){return s.forEach((s=>{const o=cm(s)?[\"document\",\"objects\",\"Server\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Am=ServersVisitor;class ServerVariableVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Xf,this.specPath=fc([\"document\",\"objects\",\"ServerVariable\"]),this.canSupportSpecificationExtensions=!0}}const jm=ServerVariableVisitor;class ServerVariables extends Su.Sh{static primaryClass=\"server-variables\";constructor(s,o,i){super(s,o,i),this.classes.push(ServerVariables.primaryClass)}}const Im=ServerVariables;class VariablesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Im,this.specPath=fc([\"document\",\"objects\",\"ServerVariable\"])}}const Pm=VariablesVisitor;class MediaTypeVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new th,this.specPath=fc([\"document\",\"objects\",\"MediaType\"]),this.canSupportSpecificationExtensions=!0}}const Tm=MediaTypeVisitor;const Nm=class AlternatingVisitor_AlternatingVisitor extends nm{alternator;constructor({alternator:s,...o}){super({...o}),this.alternator=s||[]}enter(s){const o=this.alternator.map((({predicate:s,specPath:o})=>hf(s,fc(o),gc))),i=Cf(o)(s);return this.element=this.toRefractedElement(i,s),Uu}},Mm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Up||s(a)&&o(\"callback\",a)&&i(\"object\",a))),Rm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof zp||s(a)&&o(\"components\",a)&&i(\"object\",a))),Dm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Wp||s(a)&&o(\"contact\",a)&&i(\"object\",a))),Lm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Kp||s(a)&&o(\"example\",a)&&i(\"object\",a))),Fm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gp||s(a)&&o(\"externalDocumentation\",a)&&i(\"object\",a))),Bm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Yp||s(a)&&o(\"header\",a)&&i(\"object\",a))),$m=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xp||s(a)&&o(\"info\",a)&&i(\"object\",a))),qm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Qp||s(a)&&o(\"license\",a)&&i(\"object\",a))),Vm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Zp||s(a)&&o(\"link\",a)&&i(\"object\",a))),Um=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof dh||s(a)&&o(\"openapi\",a)&&i(\"string\",a))),zm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof fh||s(u)&&o(\"openApi3_0\",u)&&i(\"object\",u)&&a(\"api\",u))),Wm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof vh||s(a)&&o(\"operation\",a)&&i(\"object\",a))),Jm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof _h||s(a)&&o(\"parameter\",a)&&i(\"object\",a))),Hm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof wh||s(a)&&o(\"pathItem\",a)&&i(\"object\",a))),Km=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Oh||s(a)&&o(\"paths\",a)&&i(\"object\",a))),Gm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof jh||s(a)&&o(\"reference\",a)&&i(\"object\",a))),Ym=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ih||s(a)&&o(\"requestBody\",a)&&i(\"object\",a))),Xm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ph||s(a)&&o(\"response\",a)&&i(\"object\",a))),Qm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Rh||s(a)&&o(\"responses\",a)&&i(\"object\",a))),Zm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Wf||s(a)&&o(\"schema\",a)&&i(\"object\",a))),isBooleanJsonSchemaElement=s=>Nu(s)&&s.classes.includes(\"boolean-json-schema\"),eg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Jf||s(a)&&o(\"securityRequirement\",a)&&i(\"object\",a))),rg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Hf||s(a)&&o(\"securityScheme\",a)&&i(\"object\",a))),ng=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gf||s(a)&&o(\"server\",a)&&i(\"object\",a))),sg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xf||s(a)&&o(\"serverVariable\",a)&&i(\"object\",a))),og=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof th||s(a)&&o(\"mediaType\",a)&&i(\"object\",a))),lg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof Cm||s(u)&&o(\"array\",u)&&i(\"array\",u)&&a(\"servers\",u)));class SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const pg=SchemaVisitor;class ExamplesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"examples\"),this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Example\"],this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"example\")})),o}}const fg=ExamplesVisitor;class MediaTypeExamples extends Su.Sh{static primaryClass=\"media-type-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(MediaTypeExamples.primaryClass),this.classes.push(\"examples\")}}const mg=MediaTypeExamples;const gg=class ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new mg}};class MediaTypeEncoding extends Su.Sh{static primaryClass=\"media-type-encoding\";constructor(s,o,i){super(s,o,i),this.classes.push(MediaTypeEncoding.primaryClass)}}const yg=MediaTypeEncoding;class EncodingVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new yg,this.specPath=fc([\"document\",\"objects\",\"Encoding\"])}}const _g=EncodingVisitor;class SecurityRequirementVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Jf,this.specPath=fc([\"value\"])}}const xg=SecurityRequirementVisitor;class Security extends Su.wE{static primaryClass=\"security\";constructor(s,o,i){super(s,o,i),this.classes.push(Security.primaryClass)}}const kg=Security;class SecurityVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new kg}ArrayElement(s){return s.forEach((s=>{if(Mu(s)){const o=this.toRefractedElement([\"document\",\"objects\",\"SecurityRequirement\"],s);this.element.push(o)}else this.element.push(cloneDeep(s))})),this.copyMetaAndAttributes(s,this.element),Uu}}const qg=SecurityVisitor;class ComponentsVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new zp,this.specPath=fc([\"document\",\"objects\",\"Components\"]),this.canSupportSpecificationExtensions=!0}}const Vg=ComponentsVisitor;class TagVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Qf,this.specPath=fc([\"document\",\"objects\",\"Tag\"]),this.canSupportSpecificationExtensions=!0}}const Ug=TagVisitor;class ReferenceVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new jh,this.specPath=fc([\"document\",\"objects\",\"Reference\"]),this.canSupportSpecificationExtensions=!1}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const zg=ReferenceVisitor;const Wg=class $RefVisitor_$RefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class ParameterVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new _h,this.specPath=fc([\"document\",\"objects\",\"Parameter\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),o}}const Kg=ParameterVisitor;class SchemaVisitor_SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const Yg=SchemaVisitor_SchemaVisitor;class HeaderVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Yp,this.specPath=fc([\"document\",\"objects\",\"Header\"]),this.canSupportSpecificationExtensions=!0}}const Xg=HeaderVisitor;class header_SchemaVisitor_SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const Zg=header_SchemaVisitor_SchemaVisitor;class HeaderExamples extends Su.Sh{static primaryClass=\"header-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(HeaderExamples.primaryClass),this.classes.push(\"examples\")}}const ey=HeaderExamples;const ty=class header_ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new ey}};class ContentVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"content\"),this.specPath=fc([\"document\",\"objects\",\"MediaType\"])}}const ry=ContentVisitor;class HeaderContent extends Su.Sh{static primaryClass=\"header-content\";constructor(s,o,i){super(s,o,i),this.classes.push(HeaderContent.primaryClass),this.classes.push(\"content\")}}const ny=HeaderContent;const sy=class ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new ny}};class schema_SchemaVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Wf,this.specPath=fc([\"document\",\"objects\",\"Schema\"]),this.canSupportSpecificationExtensions=!0}}const oy=schema_SchemaVisitor,iy=Rf.visitors.document.objects.JSONSchema.fixedFields.allOf;const ay=class AllOfVisitor_AllOfVisitor extends iy{ArrayElement(s){const o=iy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},cy=Rf.visitors.document.objects.JSONSchema.fixedFields.anyOf;const ly=class AnyOfVisitor_AnyOfVisitor extends cy{ArrayElement(s){const o=cy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},uy=Rf.visitors.document.objects.JSONSchema.fixedFields.oneOf;const py=class OneOfVisitor_OneOfVisitor extends uy{ArrayElement(s){const o=uy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},hy=Rf.visitors.document.objects.JSONSchema.fixedFields.items;const dy=class ItemsVisitor_ItemsVisitor extends hy{ObjectElement(s){const o=hy.prototype.ObjectElement.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}ArrayElement(s){return this.enter(s)}},fy=Rf.visitors.document.objects.JSONSchema.fixedFields.properties;const my=class PropertiesVisitor_PropertiesVisitor extends fy{ObjectElement(s){const o=fy.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},gy=Rf.visitors.document.objects.JSONSchema.fixedFields.type;const yy=class TypeVisitor_TypeVisitor extends gy{ArrayElement(s){return this.enter(s)}},vy=Rf.visitors.JSONSchemaOrJSONReferenceVisitor;const by=class SchemaOrReferenceVisitor_SchemaOrReferenceVisitor extends vy{ObjectElement(s){const o=vy.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}};class DiscriminatorVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Jp,this.specPath=fc([\"document\",\"objects\",\"Discriminator\"]),this.canSupportSpecificationExtensions=!1}}const _y=DiscriminatorVisitor;class DiscriminatorMapping extends Su.Sh{static primaryClass=\"discriminator-mapping\";constructor(s,o,i){super(s,o,i),this.classes.push(DiscriminatorMapping.primaryClass)}}const Sy=DiscriminatorMapping;class MappingVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Sy,this.specPath=fc([\"value\"])}}const Ey=MappingVisitor;class XmlVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new em,this.specPath=fc([\"document\",\"objects\",\"XML\"]),this.canSupportSpecificationExtensions=!0}}const wy=XmlVisitor;class ParameterExamples extends Su.Sh{static primaryClass=\"parameter-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(ParameterExamples.primaryClass),this.classes.push(\"examples\")}}const xy=ParameterExamples;const ky=class parameter_ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new xy}};class ParameterContent extends Su.Sh{static primaryClass=\"parameter-content\";constructor(s,o,i){super(s,o,i),this.classes.push(ParameterContent.primaryClass),this.classes.push(\"content\")}}const Oy=ParameterContent;const Cy=class parameter_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new Oy}};class ComponentsSchemas extends Su.Sh{static primaryClass=\"components-schemas\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsSchemas.primaryClass)}}const Ay=ComponentsSchemas;class SchemasVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ay,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Schema\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}}const jy=SchemasVisitor;class ComponentsResponses extends Su.Sh{static primaryClass=\"components-responses\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsResponses.primaryClass)}}const Iy=ComponentsResponses;class ResponsesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Iy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Response\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"response\")})),this.element.filter(Xm).forEach(((s,o)=>{s.setMetaProperty(\"http-status-code\",serializers_value(o))})),o}}const Py=ResponsesVisitor;class ComponentsParameters extends Su.Sh{static primaryClass=\"components-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsParameters.primaryClass),this.classes.push(\"parameters\")}}const Ty=ComponentsParameters;class ParametersVisitor_ParametersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ty,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Parameter\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"parameter\")})),o}}const Ny=ParametersVisitor_ParametersVisitor;class ComponentsExamples extends Su.Sh{static primaryClass=\"components-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsExamples.primaryClass),this.classes.push(\"examples\")}}const My=ComponentsExamples;class components_ExamplesVisitor_ExamplesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new My,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Example\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"example\")})),o}}const Ry=components_ExamplesVisitor_ExamplesVisitor;class ComponentsRequestBodies extends Su.Sh{static primaryClass=\"components-request-bodies\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsRequestBodies.primaryClass)}}const Dy=ComponentsRequestBodies;class RequestBodiesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Dy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"RequestBody\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"requestBody\")})),o}}const Ly=RequestBodiesVisitor;class ComponentsHeaders extends Su.Sh{static primaryClass=\"components-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsHeaders.primaryClass)}}const Fy=ComponentsHeaders;class HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Fy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const By=HeadersVisitor;class ComponentsSecuritySchemes extends Su.Sh{static primaryClass=\"components-security-schemes\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsSecuritySchemes.primaryClass)}}const $y=ComponentsSecuritySchemes;class SecuritySchemesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new $y,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"SecurityScheme\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"securityScheme\")})),o}}const qy=SecuritySchemesVisitor;class ComponentsLinks extends Su.Sh{static primaryClass=\"components-links\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsLinks.primaryClass)}}const Vy=ComponentsLinks;class LinksVisitor_LinksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Vy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Link\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"link\")})),o}}const Uy=LinksVisitor_LinksVisitor;class ComponentsCallbacks extends Su.Sh{static primaryClass=\"components-callbacks\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsCallbacks.primaryClass)}}const zy=ComponentsCallbacks;class CallbacksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new zy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Callback\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"callback\")})),o}}const Wy=CallbacksVisitor;class ExampleVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Kp,this.specPath=fc([\"document\",\"objects\",\"Example\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.externalValue)&&this.element.classes.push(\"reference-element\"),o}}const Jy=ExampleVisitor;const Hy=class ExternalValueVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class ExternalDocumentationVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Gp,this.specPath=fc([\"document\",\"objects\",\"ExternalDocumentation\"]),this.canSupportSpecificationExtensions=!0}}const Ky=ExternalDocumentationVisitor;class encoding_EncodingVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Hp,this.specPath=fc([\"document\",\"objects\",\"Encoding\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.headers)&&this.element.headers.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const Gy=encoding_EncodingVisitor;class EncodingHeaders extends Su.Sh{static primaryClass=\"encoding-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(EncodingHeaders.primaryClass)}}const Yy=EncodingHeaders;class HeadersVisitor_HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Yy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.forEach(((s,o)=>{if(!Bm(s))return;const i=serializers_value(o);s.setMetaProperty(\"headerName\",i)})),o}}const Xy=HeadersVisitor_HeadersVisitor;class PathsVisitor extends(Mixin(Sm,rm)){constructor(s){super(s),this.element=new Oh,this.specPath=fc([\"document\",\"objects\",\"PathItem\"]),this.canSupportSpecificationExtensions=!0,this.fieldPatternPredicate=es_T}ObjectElement(s){const o=Sm.prototype.ObjectElement.call(this,s);return this.element.filter(Hm).forEach(((s,o)=>{o.classes.push(\"openapi-path-template\"),o.classes.push(\"path-template\"),s.setMetaProperty(\"path\",cloneDeep(o))})),o}}const Qy=PathsVisitor;class RequestBodyVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ih,this.specPath=fc([\"document\",\"objects\",\"RequestBody\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),o}}const Zy=RequestBodyVisitor;class RequestBodyContent extends Su.Sh{static primaryClass=\"request-body-content\";constructor(s,o,i){super(s,o,i),this.classes.push(RequestBodyContent.primaryClass),this.classes.push(\"content\")}}const ev=RequestBodyContent;const tv=class request_body_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new ev}};class CallbackVisitor extends(Mixin(Sm,rm)){constructor(s){super(s),this.element=new Up,this.specPath=fc([\"document\",\"objects\",\"PathItem\"]),this.canSupportSpecificationExtensions=!0,this.fieldPatternPredicate=s=>/{(?<expression>[^}]{1,2083})}/.test(String(s))}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Hm).forEach(((s,o)=>{s.setMetaProperty(\"runtime-expression\",serializers_value(o))})),o}}const rv=CallbackVisitor;class ResponseVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ph,this.specPath=fc([\"document\",\"objects\",\"Response\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),Mu(this.element.headers)&&this.element.headers.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const nv=ResponseVisitor;class ResponseHeaders extends Su.Sh{static primaryClass=\"response-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseHeaders.primaryClass)}}const sv=ResponseHeaders;class response_HeadersVisitor_HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new sv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.forEach(((s,o)=>{if(!Bm(s))return;const i=serializers_value(o);s.setMetaProperty(\"header-name\",i)})),o}}const ov=response_HeadersVisitor_HeadersVisitor;class ResponseContent extends Su.Sh{static primaryClass=\"response-content\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseContent.primaryClass),this.classes.push(\"content\")}}const iv=ResponseContent;const av=class response_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new iv}};class ResponseLinks extends Su.Sh{static primaryClass=\"response-links\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseLinks.primaryClass)}}const cv=ResponseLinks;class response_LinksVisitor_LinksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new cv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Link\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"link\")})),o}}const lv=response_LinksVisitor_LinksVisitor;function _isNumber(s){return\"[object Number]\"===Object.prototype.toString.call(s)}var uv=_curry2((function range(s,o){if(!_isNumber(s)||!_isNumber(o))throw new TypeError(\"Both arguments to range must be numbers\");for(var i=Array(s<o?o-s:0),a=s<0?o+Math.abs(s):o-s,u=0;u<a;)i[u]=u+s,u+=1;return i}));const pv=uv;function hasOrAdd(s,o,i){var a,u=typeof s;switch(u){case\"string\":case\"number\":return 0===s&&1/s==-1/0?!!i._items[\"-0\"]||(o&&(i._items[\"-0\"]=!0),!1):null!==i._nativeSet?o?(a=i._nativeSet.size,i._nativeSet.add(s),i._nativeSet.size===a):i._nativeSet.has(s):u in i._items?s in i._items[u]||(o&&(i._items[u][s]=!0),!1):(o&&(i._items[u]={},i._items[u][s]=!0),!1);case\"boolean\":if(u in i._items){var _=s?1:0;return!!i._items[u][_]||(o&&(i._items[u][_]=!0),!1)}return o&&(i._items[u]=s?[!1,!0]:[!0,!1]),!1;case\"function\":return null!==i._nativeSet?o?(a=i._nativeSet.size,i._nativeSet.add(s),i._nativeSet.size===a):i._nativeSet.has(s):u in i._items?!!_includes(s,i._items[u])||(o&&i._items[u].push(s),!1):(o&&(i._items[u]=[s]),!1);case\"undefined\":return!!i._items[u]||(o&&(i._items[u]=!0),!1);case\"object\":if(null===s)return!!i._items.null||(o&&(i._items.null=!0),!1);default:return(u=Object.prototype.toString.call(s))in i._items?!!_includes(s,i._items[u])||(o&&i._items[u].push(s),!1):(o&&(i._items[u]=[s]),!1)}}const hv=function(){function _Set(){this._nativeSet=\"function\"==typeof Set?new Set:null,this._items={}}return _Set.prototype.add=function(s){return!hasOrAdd(s,!0,this)},_Set.prototype.has=function(s){return hasOrAdd(s,!1,this)},_Set}();var dv=_curry2((function difference(s,o){for(var i=[],a=0,u=s.length,_=o.length,w=new hv,x=0;x<_;x+=1)w.add(o[x]);for(;a<u;)w.add(s[a])&&(i[i.length]=s[a]),a+=1;return i}));const fv=dv;class MixedFieldsVisitor extends(Mixin(um,Sm)){specPathFixedFields;specPathPatternedFields;constructor({specPathFixedFields:s,specPathPatternedFields:o,...i}){super({...i}),this.specPathFixedFields=s,this.specPathPatternedFields=o}ObjectElement(s){const{specPath:o,ignoredFields:i}=this;try{this.specPath=this.specPathFixedFields;const o=this.retrieveFixedFields(this.specPath(s));this.ignoredFields=[...i,...fv(s.keys(),o)],um.prototype.ObjectElement.call(this,s),this.specPath=this.specPathPatternedFields,this.ignoredFields=o,Sm.prototype.ObjectElement.call(this,s)}catch(s){throw this.specPath=o,s}return Uu}}const mv=MixedFieldsVisitor;class responses_ResponsesVisitor extends(Mixin(mv,rm)){constructor(s){super(s),this.element=new Rh,this.specPathFixedFields=fc([\"document\",\"objects\",\"Responses\"]),this.canSupportSpecificationExtensions=!0,this.specPathPatternedFields=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Response\"],this.fieldPatternPredicate=s=>new RegExp(`^(1XX|2XX|3XX|4XX|5XX|${pv(100,600).join(\"|\")})$`).test(String(s))}ObjectElement(s){const o=mv.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"response\")})),this.element.filter(Xm).forEach(((s,o)=>{const i=cloneDeep(o);this.fieldPatternPredicate(serializers_value(i))&&s.setMetaProperty(\"http-status-code\",i)})),o}}const gv=responses_ResponsesVisitor;class DefaultVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Response\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)?this.element.setMetaProperty(\"referenced-element\",\"response\"):Xm(this.element)&&this.element.setMetaProperty(\"http-status-code\",\"default\"),o}}const yv=DefaultVisitor;class OperationVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new vh,this.specPath=fc([\"document\",\"objects\",\"Operation\"])}}const vv=OperationVisitor;class OperationTags extends Su.wE{static primaryClass=\"operation-tags\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationTags.primaryClass)}}const bv=OperationTags;const _v=class TagsVisitor extends rm{constructor(s){super(s),this.element=new bv}ArrayElement(s){return this.element=this.element.concat(cloneDeep(s)),Uu}};class OperationParameters extends Su.wE{static primaryClass=\"operation-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationParameters.primaryClass),this.classes.push(\"parameters\")}}const Sv=OperationParameters;class open_api_3_0_ParametersVisitor_ParametersVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"parameters\")}ArrayElement(s){return s.forEach((s=>{const o=isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Parameter\"],i=this.toRefractedElement(o,s);Gm(i)&&i.setMetaProperty(\"referenced-element\",\"parameter\"),this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Ev=open_api_3_0_ParametersVisitor_ParametersVisitor;const wv=class operation_ParametersVisitor_ParametersVisitor extends Ev{constructor(s){super(s),this.element=new Sv}};const xv=class RequestBodyVisitor_RequestBodyVisitor extends Nm{constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"RequestBody\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"requestBody\"),o}};class OperationCallbacks extends Su.Sh{static primaryClass=\"operation-callbacks\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationCallbacks.primaryClass)}}const kv=OperationCallbacks;class CallbacksVisitor_CallbacksVisitor extends(Mixin(Em,rm)){specPath;constructor(s){super(s),this.element=new kv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Callback\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"callback\")})),o}}const Ov=CallbacksVisitor_CallbacksVisitor;class OperationSecurity extends Su.wE{static primaryClass=\"operation-security\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationSecurity.primaryClass),this.classes.push(\"security\")}}const Cv=OperationSecurity;class SecurityVisitor_SecurityVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Cv}ArrayElement(s){return s.forEach((s=>{const o=Mu(s)?[\"document\",\"objects\",\"SecurityRequirement\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Av=SecurityVisitor_SecurityVisitor;class OperationServers extends Su.wE{static primaryClass=\"operation-servers\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationServers.primaryClass),this.classes.push(\"servers\")}}const jv=OperationServers;const Iv=class ServersVisitor_ServersVisitor extends Am{constructor(s){super(s),this.element=new jv}};class PathItemVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new wh,this.specPath=fc([\"document\",\"objects\",\"PathItem\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return this.element.filter(Wm).forEach(((s,o)=>{const i=cloneDeep(o);i.content=serializers_value(i).toUpperCase(),s.setMetaProperty(\"http-method\",i)})),Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const Pv=PathItemVisitor;const Tv=class path_item_$RefVisitor_$RefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class PathItemServers extends Su.wE{static primaryClass=\"path-item-servers\";constructor(s,o,i){super(s,o,i),this.classes.push(PathItemServers.primaryClass),this.classes.push(\"servers\")}}const Nv=PathItemServers;const Mv=class path_item_ServersVisitor_ServersVisitor extends Am{constructor(s){super(s),this.element=new Nv}};class PathItemParameters extends Su.wE{static primaryClass=\"path-item-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(PathItemParameters.primaryClass),this.classes.push(\"parameters\")}}const Rv=PathItemParameters;const Dv=class path_item_ParametersVisitor_ParametersVisitor extends Ev{constructor(s){super(s),this.element=new Rv}};class SecuritySchemeVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Hf,this.specPath=fc([\"document\",\"objects\",\"SecurityScheme\"]),this.canSupportSpecificationExtensions=!0}}const Lv=SecuritySchemeVisitor;class OAuthFlowsVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new uh,this.specPath=fc([\"document\",\"objects\",\"OAuthFlows\"]),this.canSupportSpecificationExtensions=!0}}const Fv=OAuthFlowsVisitor;class OAuthFlowVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new rh,this.specPath=fc([\"document\",\"objects\",\"OAuthFlow\"]),this.canSupportSpecificationExtensions=!0}}const Bv=OAuthFlowVisitor;class OAuthFlowScopes extends Su.Sh{static primaryClass=\"oauth-flow-scopes\";constructor(s,o,i){super(s,o,i),this.classes.push(OAuthFlowScopes.primaryClass)}}const $v=OAuthFlowScopes;class ScopesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new $v,this.specPath=fc([\"value\"])}}const qv=ScopesVisitor;class Tags extends Su.wE{static primaryClass=\"tags\";constructor(s,o,i){super(s,o,i),this.classes.push(Tags.primaryClass)}}const Vv=Tags;class TagsVisitor_TagsVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Vv}ArrayElement(s){return s.forEach((s=>{const o=lm(s)?[\"document\",\"objects\",\"Tag\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Uv=TagsVisitor_TagsVisitor,{fixedFields:zv}=Rf.visitors.document.objects.JSONSchema,Wv={visitors:{value:rm,document:{objects:{OpenApi:{$visitor:pm,fixedFields:{openapi:hm,info:{$ref:\"#/visitors/document/objects/Info\"},servers:Am,paths:{$ref:\"#/visitors/document/objects/Paths\"},components:{$ref:\"#/visitors/document/objects/Components\"},security:qg,tags:Uv,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Info:{$visitor:fm,fixedFields:{title:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},termsOfService:{$ref:\"#/visitors/value\"},contact:{$ref:\"#/visitors/document/objects/Contact\"},license:{$ref:\"#/visitors/document/objects/License\"},version:mm}},Contact:{$visitor:gm,fixedFields:{name:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"},email:{$ref:\"#/visitors/value\"}}},License:{$visitor:ym,fixedFields:{name:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"}}},Server:{$visitor:km,fixedFields:{url:Om,description:{$ref:\"#/visitors/value\"},variables:Pm}},ServerVariable:{$visitor:jm,fixedFields:{enum:{$ref:\"#/visitors/value\"},default:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"}}},Components:{$visitor:Vg,fixedFields:{schemas:jy,responses:Py,parameters:Ny,examples:Ry,requestBodies:Ly,headers:By,securitySchemes:qy,links:Uy,callbacks:Wy}},Paths:{$visitor:Qy},PathItem:{$visitor:Pv,fixedFields:{$ref:Tv,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},get:{$ref:\"#/visitors/document/objects/Operation\"},put:{$ref:\"#/visitors/document/objects/Operation\"},post:{$ref:\"#/visitors/document/objects/Operation\"},delete:{$ref:\"#/visitors/document/objects/Operation\"},options:{$ref:\"#/visitors/document/objects/Operation\"},head:{$ref:\"#/visitors/document/objects/Operation\"},patch:{$ref:\"#/visitors/document/objects/Operation\"},trace:{$ref:\"#/visitors/document/objects/Operation\"},servers:Mv,parameters:Dv}},Operation:{$visitor:vv,fixedFields:{tags:_v,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},operationId:{$ref:\"#/visitors/value\"},parameters:wv,requestBody:xv,responses:{$ref:\"#/visitors/document/objects/Responses\"},callbacks:Ov,deprecated:{$ref:\"#/visitors/value\"},security:Av,servers:Iv}},ExternalDocumentation:{$visitor:Ky,fixedFields:{description:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"}}},Parameter:{$visitor:Kg,fixedFields:{name:{$ref:\"#/visitors/value\"},in:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},required:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"},allowEmptyValue:{$ref:\"#/visitors/value\"},style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"},schema:Yg,example:{$ref:\"#/visitors/value\"},examples:ky,content:Cy}},RequestBody:{$visitor:Zy,fixedFields:{description:{$ref:\"#/visitors/value\"},content:tv,required:{$ref:\"#/visitors/value\"}}},MediaType:{$visitor:Tm,fixedFields:{schema:pg,example:{$ref:\"#/visitors/value\"},examples:gg,encoding:_g}},Encoding:{$visitor:Gy,fixedFields:{contentType:{$ref:\"#/visitors/value\"},headers:Xy,style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"}}},Responses:{$visitor:gv,fixedFields:{default:yv}},Response:{$visitor:nv,fixedFields:{description:{$ref:\"#/visitors/value\"},headers:ov,content:av,links:lv}},Callback:{$visitor:rv},Example:{$visitor:Jy,fixedFields:{summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},value:{$ref:\"#/visitors/value\"},externalValue:Hy}},Link:{$visitor:vm,fixedFields:{operationRef:bm,operationId:_m,parameters:xm,requestBody:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},server:{$ref:\"#/visitors/document/objects/Server\"}}},Header:{$visitor:Xg,fixedFields:{description:{$ref:\"#/visitors/value\"},required:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"},allowEmptyValue:{$ref:\"#/visitors/value\"},style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"},schema:Zg,example:{$ref:\"#/visitors/value\"},examples:ty,content:sy}},Tag:{$visitor:Ug,fixedFields:{name:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Reference:{$visitor:zg,fixedFields:{$ref:Wg}},JSONSchema:{$ref:\"#/visitors/document/objects/Schema\"},JSONReference:{$ref:\"#/visitors/document/objects/Reference\"},Schema:{$visitor:oy,fixedFields:{title:zv.title,multipleOf:zv.multipleOf,maximum:zv.maximum,exclusiveMaximum:zv.exclusiveMaximum,minimum:zv.minimum,exclusiveMinimum:zv.exclusiveMinimum,maxLength:zv.maxLength,minLength:zv.minLength,pattern:zv.pattern,maxItems:zv.maxItems,minItems:zv.minItems,uniqueItems:zv.uniqueItems,maxProperties:zv.maxProperties,minProperties:zv.minProperties,required:zv.required,enum:zv.enum,type:yy,allOf:ay,anyOf:ly,oneOf:py,not:by,items:dy,properties:my,additionalProperties:by,description:zv.description,format:zv.format,default:zv.default,nullable:{$ref:\"#/visitors/value\"},discriminator:{$ref:\"#/visitors/document/objects/Discriminator\"},writeOnly:{$ref:\"#/visitors/value\"},xml:{$ref:\"#/visitors/document/objects/XML\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},example:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"}}},Discriminator:{$visitor:_y,fixedFields:{propertyName:{$ref:\"#/visitors/value\"},mapping:Ey}},XML:{$visitor:wy,fixedFields:{name:{$ref:\"#/visitors/value\"},namespace:{$ref:\"#/visitors/value\"},prefix:{$ref:\"#/visitors/value\"},attribute:{$ref:\"#/visitors/value\"},wrapped:{$ref:\"#/visitors/value\"}}},SecurityScheme:{$visitor:Lv,fixedFields:{type:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},name:{$ref:\"#/visitors/value\"},in:{$ref:\"#/visitors/value\"},scheme:{$ref:\"#/visitors/value\"},bearerFormat:{$ref:\"#/visitors/value\"},flows:{$ref:\"#/visitors/document/objects/OAuthFlows\"},openIdConnectUrl:{$ref:\"#/visitors/value\"}}},OAuthFlows:{$visitor:Fv,fixedFields:{implicit:{$ref:\"#/visitors/document/objects/OAuthFlow\"},password:{$ref:\"#/visitors/document/objects/OAuthFlow\"},clientCredentials:{$ref:\"#/visitors/document/objects/OAuthFlow\"},authorizationCode:{$ref:\"#/visitors/document/objects/OAuthFlow\"}}},OAuthFlow:{$visitor:Bv,fixedFields:{authorizationUrl:{$ref:\"#/visitors/value\"},tokenUrl:{$ref:\"#/visitors/value\"},refreshUrl:{$ref:\"#/visitors/value\"},scopes:qv}},SecurityRequirement:{$visitor:xg}},extension:{$visitor:dm}}}},src_traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},Jv={CallbackElement:[\"content\"],ComponentsElement:[\"content\"],ContactElement:[\"content\"],DiscriminatorElement:[\"content\"],Encoding:[\"content\"],Example:[\"content\"],ExternalDocumentationElement:[\"content\"],HeaderElement:[\"content\"],InfoElement:[\"content\"],LicenseElement:[\"content\"],MediaTypeElement:[\"content\"],OAuthFlowElement:[\"content\"],OAuthFlowsElement:[\"content\"],OpenApi3_0Element:[\"content\"],OperationElement:[\"content\"],ParameterElement:[\"content\"],PathItemElement:[\"content\"],PathsElement:[\"content\"],ReferenceElement:[\"content\"],RequestBodyElement:[\"content\"],ResponseElement:[\"content\"],ResponsesElement:[\"content\"],SchemaElement:[\"content\"],SecurityRequirementElement:[\"content\"],SecuritySchemeElement:[\"content\"],ServerElement:[\"content\"],ServerVariableElement:[\"content\"],TagElement:[\"content\"],...Ku},Hv={namespace:s=>{const{base:o}=s;return o.register(\"callback\",Up),o.register(\"components\",zp),o.register(\"contact\",Wp),o.register(\"discriminator\",Jp),o.register(\"encoding\",Hp),o.register(\"example\",Kp),o.register(\"externalDocumentation\",Gp),o.register(\"header\",Yp),o.register(\"info\",Xp),o.register(\"license\",Qp),o.register(\"link\",Zp),o.register(\"mediaType\",th),o.register(\"oAuthFlow\",rh),o.register(\"oAuthFlows\",uh),o.register(\"openapi\",dh),o.register(\"openApi3_0\",fh),o.register(\"operation\",vh),o.register(\"parameter\",_h),o.register(\"pathItem\",wh),o.register(\"paths\",Oh),o.register(\"reference\",jh),o.register(\"requestBody\",Ih),o.register(\"response\",Ph),o.register(\"responses\",Rh),o.register(\"schema\",Wf),o.register(\"securityRequirement\",Jf),o.register(\"securityScheme\",Hf),o.register(\"server\",Gf),o.register(\"serverVariable\",Xf),o.register(\"tag\",Qf),o.register(\"xml\",em),o}},Kv=Hv,src_refractor_toolbox=()=>{const s=createNamespace(Kv);return{predicates:{...ce,isElement:ju,isStringElement:Iu,isArrayElement:Ru,isObjectElement:Mu,isMemberElement:Du,includesClasses,hasElementSourceMap},namespace:s}},src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"],plugins:i=[]}={})=>{const a=(0,Su.e)(s),u=dereference(Wv),_=new(tp(o,u))({specObj:u});return visitor_visit(a,_),dispatchPluginsSync(_.element,i,{toolboxCreator:src_refractor_toolbox,visitorOptions:{keyMap:Jv,nodeTypeGetter:src_traversal_visitor_getNodeType}})},src_refractor_createRefractor=s=>(o,i={})=>src_refractor_refract(o,{specPath:s,...i});Up.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Callback\",\"$visitor\"]),zp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Components\",\"$visitor\"]),Wp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Contact\",\"$visitor\"]),Kp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Example\",\"$visitor\"]),Jp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Discriminator\",\"$visitor\"]),Hp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Encoding\",\"$visitor\"]),Gp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ExternalDocumentation\",\"$visitor\"]),Yp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Header\",\"$visitor\"]),Xp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Info\",\"$visitor\"]),Qp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"License\",\"$visitor\"]),Zp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Link\",\"$visitor\"]),th.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"MediaType\",\"$visitor\"]),rh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlow\",\"$visitor\"]),uh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlows\",\"$visitor\"]),dh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"openapi\"]),fh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"]),vh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Operation\",\"$visitor\"]),_h.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Parameter\",\"$visitor\"]),wh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"PathItem\",\"$visitor\"]),Oh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Paths\",\"$visitor\"]),jh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Reference\",\"$visitor\"]),Ih.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"RequestBody\",\"$visitor\"]),Ph.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Response\",\"$visitor\"]),Rh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Responses\",\"$visitor\"]),Wf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Schema\",\"$visitor\"]),Jf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityRequirement\",\"$visitor\"]),Hf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityScheme\",\"$visitor\"]),Gf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Server\",\"$visitor\"]),Xf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ServerVariable\",\"$visitor\"]),Qf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Tag\",\"$visitor\"]),em.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"XML\",\"$visitor\"]);const Gv=class Callback_Callback extends Up{};const Yv=class Components_Components extends zp{get pathItems(){return this.get(\"pathItems\")}set pathItems(s){this.set(\"pathItems\",s)}};const Xv=class Contact_Contact extends Wp{};const Qv=class Discriminator_Discriminator extends Jp{};const Zv=class Encoding_Encoding extends Hp{};const eb=class Example_Example extends Kp{};const tb=class ExternalDocumentation_ExternalDocumentation extends Gp{};const nb=class Header_Header extends Yp{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const pb=class Info_Info extends Xp{get license(){return this.get(\"license\")}set license(s){this.set(\"license\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}};class JsonSchemaDialect extends Su.Om{static default=new JsonSchemaDialect(\"https://spec.openapis.org/oas/3.1/dialect/base\");constructor(s,o,i){super(s,o,i),this.element=\"jsonSchemaDialect\"}}const mb=JsonSchemaDialect;const yb=class License_License extends Qp{get identifier(){return this.get(\"identifier\")}set identifier(s){this.set(\"identifier\",s)}};const _b=class Link_Link extends Zp{};const Sb=class MediaType_MediaType extends th{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const wb=class OAuthFlow_OAuthFlow extends rh{};const Ob=class OAuthFlows_OAuthFlows extends uh{};const Ab=class Openapi_Openapi extends dh{};class OpenApi3_1 extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"openApi3_1\",this.classes.push(\"api\")}get openapi(){return this.get(\"openapi\")}set openapi(s){this.set(\"openapi\",s)}get info(){return this.get(\"info\")}set info(s){this.set(\"info\",s)}get jsonSchemaDialect(){return this.get(\"jsonSchemaDialect\")}set jsonSchemaDialect(s){this.set(\"jsonSchemaDialect\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get paths(){return this.get(\"paths\")}set paths(s){this.set(\"paths\",s)}get components(){return this.get(\"components\")}set components(s){this.set(\"components\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get webhooks(){return this.get(\"webhooks\")}set webhooks(s){this.set(\"webhooks\",s)}}const Ib=OpenApi3_1;const Pb=class Operation_Operation extends vh{get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}};const Mb=class Parameter_Parameter extends _h{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const Rb=class PathItem_PathItem extends wh{get GET(){return this.get(\"get\")}set GET(s){this.set(\"GET\",s)}get PUT(){return this.get(\"put\")}set PUT(s){this.set(\"PUT\",s)}get POST(){return this.get(\"post\")}set POST(s){this.set(\"POST\",s)}get DELETE(){return this.get(\"delete\")}set DELETE(s){this.set(\"DELETE\",s)}get OPTIONS(){return this.get(\"options\")}set OPTIONS(s){this.set(\"OPTIONS\",s)}get HEAD(){return this.get(\"head\")}set HEAD(s){this.set(\"HEAD\",s)}get PATCH(){return this.get(\"patch\")}set PATCH(s){this.set(\"PATCH\",s)}get TRACE(){return this.get(\"trace\")}set TRACE(s){this.set(\"TRACE\",s)}};const Lb=class Paths_Paths extends Oh{};class Reference_Reference extends jh{}Object.defineProperty(Reference_Reference.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0}),Object.defineProperty(Reference_Reference.prototype,\"summary\",{get(){return this.get(\"summary\")},set(s){this.set(\"summary\",s)},enumerable:!0});const qb=Reference_Reference;const zb=class RequestBody_RequestBody extends Ih{};const Qb=class elements_Response_Response extends Ph{};const e_=class Responses_Responses extends Rh{};const t_=class JSONSchema_JSONSchema extends Lh{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft6\"}get idProp(){throw new Dh(\"id keyword from Core vocabulary has been renamed to $id.\")}set idProp(s){throw new Dh(\"id keyword from Core vocabulary has been renamed to $id.\")}get $id(){return this.get(\"$id\")}set $id(s){this.set(\"$id\",s)}get exclusiveMaximum(){return this.get(\"exclusiveMaximum\")}set exclusiveMaximum(s){this.set(\"exclusiveMaximum\",s)}get exclusiveMinimum(){return this.get(\"exclusiveMinimum\")}set exclusiveMinimum(s){this.set(\"exclusiveMinimum\",s)}get containsProp(){return this.get(\"contains\")}set containsProp(s){this.set(\"contains\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get propertyNames(){return this.get(\"propertyNames\")}set propertyNames(s){this.set(\"propertyNames\",s)}get const(){return this.get(\"const\")}set const(s){this.set(\"const\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}};const r_=class LinkDescription_LinkDescription extends Hh{get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get schema(){throw new Dh(\"schema keyword from Hyper-Schema vocabulary has been renamed to submissionSchema.\")}set schema(s){throw new Dh(\"schema keyword from Hyper-Schema vocabulary has been renamed to submissionSchema.\")}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}get method(){throw new Dh(\"method keyword from Hyper-Schema vocabulary has been removed.\")}set method(s){throw new Dh(\"method keyword from Hyper-Schema vocabulary has been removed.\")}get encType(){throw new Dh(\"encType keyword from Hyper-Schema vocabulary has been renamed to submissionEncType.\")}set encType(s){throw new Dh(\"encType keyword from Hyper-Schema vocabulary has been renamed to submissionEncType.\")}get submissionEncType(){return this.get(\"submissionEncType\")}set submissionEncType(s){this.set(\"submissionEncType\",s)}};var n_=_curry3((function assocPath(s,o,i){if(0===s.length)return o;var a=s[0];if(s.length>1){var u=!Gh(i)&&_has(a,i)&&\"object\"==typeof i[a]?i[a]:Xo(s[1])?[]:{};o=assocPath(Array.prototype.slice.call(s,1),o,u)}return function _assoc(s,o,i){if(Xo(s)&&ca(i)){var a=[].concat(i);return a[s]=o,a}var u={};for(var _ in i)u[_]=i[_];return u[s]=o,u}(a,o,i)}));const s_=n_;var o_=_curry3((function remove(s,o,i){var a=Array.prototype.slice.call(i,0);return a.splice(s,o),a}));const i_=o_;var a_=_curry3((function assoc(s,o,i){return s_([s],o,i)}));const c_=a_;var l_=_curry2((function dissocPath(s,o){if(null==o)return o;switch(s.length){case 0:return o;case 1:return function _dissoc(s,o){if(null==o)return o;if(Xo(s)&&ca(o))return i_(s,1,o);var i={};for(var a in o)i[a]=o[a];return delete i[s],i}(s[0],o);default:var i=s[0],a=Array.prototype.slice.call(s,1);return null==o[i]?function _shallowCloneObject(s,o){if(Xo(s)&&ca(o))return[].concat(o);var i={};for(var a in o)i[a]=o[a];return i}(i,o):c_(i,dissocPath(a,o[i]),o)}}));const u_=l_;const p_=class json_schema_JSONSchemaVisitor extends Ud{constructor(s){super(s),this.element=new t_}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-06/schema#\"}BooleanElement(s){const o=this.enter(s);return this.element.classes.push(\"boolean-json-schema\"),o}handleSchemaIdentifier(s,o=\"$id\"){return super.handleSchemaIdentifier(s,o)}};const h_=class json_schema_ItemsVisitor_ItemsVisitor extends Wd{BooleanElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}};const d_=class json_schema_ExamplesVisitor_ExamplesVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-examples\"),o}};const f_=class link_description_LinkDescriptionVisitor extends Nf{constructor(s){super(s),this.element=new r_}},m_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],p_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"id\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$id\"],Rf.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],h_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"const\"],Rf.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"examples\"],d_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],f_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"schema\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"method\"]),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"encType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionEncType\"],Rf.visitors.value))(Rf),g_={JSONSchemaDraft6Element:[\"content\"],JSONReferenceElement:[\"content\"],MediaElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},y_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof t_||s(a)&&o(\"JSONSchemaDraft6\",a)&&i(\"object\",a))),v_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof r_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),b_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft6\",t_),o.register(\"jSONReference\",Fh),o.register(\"media\",Jh),o.register(\"linkDescription\",r_),o}},S_=b_,apidom_ns_json_schema_draft_6_src_refractor_toolbox=()=>{const s=createNamespace(S_);return{predicates:{...le,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_draft_6_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=m_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_draft_6_src_refractor_toolbox,visitorOptions:{keyMap:g_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_draft_6_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_draft_6_src_refractor_refract(o,{specPath:s,...i});t_.refract=apidom_ns_json_schema_draft_6_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),r_.refract=apidom_ns_json_schema_draft_6_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const E_=class elements_JSONSchema_JSONSchema extends t_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft7\"}get $comment(){return this.get(\"$comment\")}set $comment(s){this.set(\"$comment\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get if(){return this.get(\"if\")}set if(s){this.set(\"if\",s)}get then(){return this.get(\"then\")}set then(s){this.set(\"then\",s)}get else(){return this.get(\"else\")}set else(s){this.set(\"else\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get contentEncoding(){return this.get(\"contentEncoding\")}set contentEncoding(s){this.set(\"contentEncoding\",s)}get contentMediaType(){return this.get(\"contentMediaType\")}set contentMediaType(s){this.set(\"contentMediaType\",s)}get media(){throw new Dh('media keyword from Hyper-Schema vocabulary has been moved to validation vocabulary as \"contentMediaType\" / \"contentEncoding\"')}set media(s){throw new Dh('media keyword from Hyper-Schema vocabulary has been moved to validation vocabulary as \"contentMediaType\" / \"contentEncoding\"')}get writeOnly(){return this.get(\"writeOnly\")}set writeOnly(s){this.set(\"writeOnly\",s)}};const w_=class elements_LinkDescription_LinkDescription extends r_{get anchor(){return this.get(\"anchor\")}set anchor(s){this.set(\"anchor\",s)}get anchorPointer(){return this.get(\"anchorPointer\")}set anchorPointer(s){this.set(\"anchorPointer\",s)}get templatePointers(){return this.get(\"templatePointers\")}set templatePointers(s){this.set(\"templatePointers\",s)}get templateRequired(){return this.get(\"templateRequired\")}set templateRequired(s){this.set(\"templateRequired\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get mediaType(){throw new Dh(\"mediaType keyword from Hyper-Schema vocabulary has been renamed to targetMediaType.\")}set mediaType(s){throw new Dh(\"mediaType keyword from Hyper-Schema vocabulary has been renamed to targetMediaType.\")}get targetMediaType(){return this.get(\"targetMediaType\")}set targetMediaType(s){this.set(\"targetMediaType\",s)}get targetHints(){return this.get(\"targetHints\")}set targetHints(s){this.set(\"targetHints\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get $comment(){return this.get(\"$comment\")}set $comment(s){this.set(\"$comment\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}get submissionEncType(){throw new Dh(\"submissionEncType keyword from Hyper-Schema vocabulary has been renamed to submissionMediaType.\")}set submissionEncType(s){throw new Dh(\"submissionEncType keyword from Hyper-Schema vocabulary has been renamed to submissionMediaType.\")}get submissionMediaType(){return this.get(\"submissionMediaType\")}set submissionMediaType(s){this.set(\"submissionMediaType\",s)}};const x_=class visitors_json_schema_JSONSchemaVisitor extends p_{constructor(s){super(s),this.element=new E_}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-07/schema#\"}};const k_=class json_schema_link_description_LinkDescriptionVisitor extends f_{constructor(s){super(s),this.element=new w_}},O_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],x_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$comment\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"media\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentEncoding\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentMediaType\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"writeOnly\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],k_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"anchor\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"anchorPointer\"],m_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"mediaType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetMediaType\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetHints\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"description\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"$comment\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionEncType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionMediaType\"],m_.visitors.value))(m_),C_={JSONSchemaDraft7Element:[\"content\"],JSONReferenceElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},A_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof E_||s(a)&&o(\"JSONSchemaDraft7\",a)&&i(\"object\",a))),j_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof w_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),I_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft7\",E_),o.register(\"jSONReference\",Fh),o.register(\"linkDescription\",w_),o}},P_=I_,apidom_ns_json_schema_draft_7_src_refractor_toolbox=()=>{const s=createNamespace(P_);return{predicates:{...pe,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_draft_7_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=O_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_draft_7_src_refractor_toolbox,visitorOptions:{keyMap:C_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_draft_7_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_draft_7_src_refractor_refract(o,{specPath:s,...i});E_.refract=apidom_ns_json_schema_draft_7_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),w_.refract=apidom_ns_json_schema_draft_7_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const T_=class src_elements_JSONSchema_JSONSchema extends E_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchema201909\"}get $vocabulary(){return this.get(\"$vocabulary\")}set $vocabulary(s){this.set(\"$vocabulary\",s)}get $anchor(){return this.get(\"$anchor\")}set $anchor(s){this.set(\"$anchor\",s)}get $recursiveAnchor(){return this.get(\"$recursiveAnchor\")}set $recursiveAnchor(s){this.set(\"$recursiveAnchor\",s)}get $recursiveRef(){return this.get(\"$recursiveRef\")}set $recursiveRef(s){this.set(\"$recursiveRef\",s)}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}get $defs(){return this.get(\"$defs\")}set $defs(s){this.set(\"$defs\",s)}get definitions(){throw new Dh(\"definitions keyword from Validation vocabulary has been renamed to $defs.\")}set definitions(s){throw new Dh(\"definitions keyword from Validation vocabulary has been renamed to $defs.\")}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get if(){return this.get(\"if\")}set if(s){this.set(\"if\",s)}get then(){return this.get(\"then\")}set then(s){this.set(\"then\",s)}get else(){return this.get(\"else\")}set else(s){this.set(\"else\",s)}get dependentSchemas(){return this.get(\"dependentSchemas\")}set dependentSchemas(s){this.set(\"dependentSchemas\",s)}get dependencies(){throw new Dh(\"dependencies keyword from Validation vocabulary has been renamed to dependentSchemas.\")}set dependencies(s){throw new Dh(\"dependencies keyword from Validation vocabulary has been renamed to dependentSchemas.\")}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get containsProp(){return this.get(\"contains\")}set containsProp(s){this.set(\"contains\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get propertyNames(){return this.get(\"propertyNames\")}set propertyNames(s){this.set(\"propertyNames\",s)}get unevaluatedItems(){return this.get(\"unevaluatedItems\")}set unevaluatedItems(s){this.set(\"unevaluatedItems\",s)}get unevaluatedProperties(){return this.get(\"unevaluatedProperties\")}set unevaluatedProperties(s){this.set(\"unevaluatedProperties\",s)}get maxContains(){return this.get(\"maxContains\")}set maxContains(s){this.set(\"maxContains\",s)}get minContains(){return this.get(\"minContains\")}set minContains(s){this.set(\"minContains\",s)}get dependentRequired(){return this.get(\"dependentRequired\")}set dependentRequired(s){this.set(\"dependentRequired\",s)}get deprecated(){return this.get(\"deprecated\")}set deprecated(s){this.set(\"deprecated\",s)}get contentSchema(){return this.get(\"contentSchema\")}set contentSchema(s){this.set(\"contentSchema\",s)}};const N_=class src_elements_LinkDescription_LinkDescription extends w_{get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}};const M_=class refractor_visitors_json_schema_JSONSchemaVisitor extends x_{constructor(s){super(s),this.element=new T_}get defaultDialectIdentifier(){return\"https://json-schema.org/draft/2019-09/schema\"}ObjectElement(s){this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element;const o=Dd.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&(this.element.classes.push(\"reference-element\"),this.element.setMetaProperty(\"referenced-element\",\"schema\")),o}};const R_=class $vocabularyVisitor extends _d{ObjectElement(s){const o=super.enter(s);return this.element.classes.push(\"json-schema-$vocabulary\"),o}};const D_=class $refVisitor extends _d{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class $defsVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-$defs\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const L_=$defsVisitor;class json_schema_AllOfVisitor_AllOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-allOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const F_=json_schema_AllOfVisitor_AllOfVisitor;class json_schema_AnyOfVisitor_AnyOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-anyOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const B_=json_schema_AnyOfVisitor_AnyOfVisitor;class json_schema_OneOfVisitor_OneOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-oneOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const $_=json_schema_OneOfVisitor_OneOfVisitor;class DependentSchemasVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-dependentSchemas\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const q_=DependentSchemasVisitor;class visitors_json_schema_ItemsVisitor_ItemsVisitor extends(Mixin(Rd,Ld,_d)){ObjectElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}ArrayElement(s){return this.element=new Su.wE,this.element.classes.push(\"json-schema-items\"),s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}BooleanElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}}const V_=visitors_json_schema_ItemsVisitor_ItemsVisitor;class json_schema_PropertiesVisitor_PropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-properties\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const U_=json_schema_PropertiesVisitor_PropertiesVisitor;class PatternPropertiesVisitor_PatternPropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-patternProperties\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const z_=PatternPropertiesVisitor_PatternPropertiesVisitor;const W_=class DependentRequiredVisitor extends _d{ObjectElement(s){const o=super.enter(s);return this.element.classes.push(\"json-schema-dependentRequired\"),o}};const J_=class visitors_json_schema_link_description_LinkDescriptionVisitor extends k_{constructor(s){super(s),this.element=new N_}},H_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$vocabulary\"],R_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$anchor\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveAnchor\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveRef\"],O_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"JSONReference\",\"$visitor\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$ref\"],D_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"definitions\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$defs\"],L_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"allOf\"],F_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"anyOf\"],B_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"oneOf\"],$_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"not\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],M_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependencies\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependentSchemas\"],q_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],V_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"properties\"],U_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"patternProperties\"],z_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalProperties\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalItems\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedItems\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedProperties\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"maxContains\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"minContains\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependentRequired\"],W_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"deprecated\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],J_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],M_))(O_),K_={JSONSchema201909Element:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},G_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof T_||s(a)&&o(\"JSONSchema201909\",a)&&i(\"object\",a))),Y_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof N_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),X_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchema201909\",T_),o.register(\"linkDescription\",N_),o}},Q_=X_,apidom_ns_json_schema_2019_09_src_refractor_toolbox=()=>{const s=createNamespace(Q_);return{predicates:{...de,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_2019_09_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=H_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_2019_09_src_refractor_toolbox,visitorOptions:{keyMap:K_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_2019_09_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_2019_09_src_refractor_refract(o,{specPath:s,...i});T_.refract=apidom_ns_json_schema_2019_09_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),N_.refract=apidom_ns_json_schema_2019_09_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const Z_=class apidom_ns_json_schema_2020_12_src_elements_JSONSchema_JSONSchema extends T_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchema202012\"}get $dynamicAnchor(){return this.get(\"$dynamicAnchor\")}set $dynamicAnchor(s){this.set(\"$dynamicAnchor\",s)}get $recursiveAnchor(){throw new Dh(\"$recursiveAnchor keyword from Core vocabulary has been renamed to $dynamicAnchor.\")}set $recursiveAnchor(s){throw new Dh(\"$recursiveAnchor keyword from Core vocabulary has been renamed to $dynamicAnchor.\")}get $dynamicRef(){return this.get(\"$dynamicRef\")}set $dynamicRef(s){this.set(\"$dynamicRef\",s)}get $recursiveRef(){throw new Dh(\"$recursiveRef keyword from Core vocabulary has been renamed to $dynamicRef.\")}set $recursiveRef(s){throw new Dh(\"$recursiveRef keyword from Core vocabulary has been renamed to $dynamicRef.\")}get prefixItems(){return this.get(\"prefixItems\")}set prefixItems(s){this.set(\"prefixItems\",s)}};const eS=class apidom_ns_json_schema_2020_12_src_elements_LinkDescription_LinkDescription extends N_{get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}};const tS=class src_refractor_visitors_json_schema_JSONSchemaVisitor extends M_{constructor(s){super(s),this.element=new Z_}get defaultDialectIdentifier(){return\"https://json-schema.org/draft/2020-12/schema\"}};class PrefixItemsVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-prefixItems\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const rS=PrefixItemsVisitor;const nS=class refractor_visitors_json_schema_link_description_LinkDescriptionVisitor extends J_{constructor(s){super(s),this.element=new eS}},sS=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],tS),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveAnchor\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$dynamicAnchor\"],H_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveRef\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$dynamicRef\"],H_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"not\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"prefixItems\"],rS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalProperties\"],tS),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalItems\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedItems\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedProperties\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],nS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],tS))(H_),oS={JSONSchema202012Element:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},iS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Z_||s(a)&&o(\"JSONSchema202012\",a)&&i(\"object\",a))),aS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof eS||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),cS={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchema202012\",Z_),o.register(\"linkDescription\",eS),o}},lS=cS,apidom_ns_json_schema_2020_12_src_refractor_toolbox=()=>{const s=createNamespace(lS);return{predicates:{...fe,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_2020_12_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=sS}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_2020_12_src_refractor_toolbox,visitorOptions:{keyMap:oS,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_2020_12_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_2020_12_src_refractor_refract(o,{specPath:s,...i});Z_.refract=apidom_ns_json_schema_2020_12_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),eS.refract=apidom_ns_json_schema_2020_12_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const uS=class elements_Schema_Schema extends Z_{constructor(s,o,i){super(s,o,i),this.element=\"schema\"}get discriminator(){return this.get(\"discriminator\")}set discriminator(s){this.set(\"discriminator\",s)}get xml(){return this.get(\"xml\")}set xml(s){this.set(\"xml\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}};const pS=class SecurityRequirement_SecurityRequirement extends Jf{};const hS=class SecurityScheme_SecurityScheme extends Hf{};const dS=class Server_Server extends Gf{};const fS=class ServerVariable_ServerVariable extends Xf{};const mS=class Tag_Tag extends Qf{};const gS=class Xml_Xml extends em{};class OpenApi3_1Visitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ib,this.specPath=fc([\"document\",\"objects\",\"OpenApi\"]),this.canSupportSpecificationExtensions=!0,this.openApiSemanticElement=this.element}ObjectElement(s){return this.openApiGenericElement=s,um.prototype.ObjectElement.call(this,s)}}const yS=OpenApi3_1Visitor,vS=Wv.visitors.document.objects.Info.$visitor;const bS=class info_InfoVisitor extends vS{constructor(s){super(s),this.element=new pb}},_S=Wv.visitors.document.objects.Contact.$visitor;const SS=class contact_ContactVisitor extends _S{constructor(s){super(s),this.element=new Xv}},ES=Wv.visitors.document.objects.License.$visitor;const wS=class license_LicenseVisitor extends ES{constructor(s){super(s),this.element=new yb}},xS=Wv.visitors.document.objects.Link.$visitor;const kS=class link_LinkVisitor extends xS{constructor(s){super(s),this.element=new _b}};class JsonSchemaDialectVisitor extends(Mixin(nm,rm)){StringElement(s){const o=new mb(serializers_value(s));return this.copyMetaAndAttributes(s,o),this.element=o,Uu}}const OS=JsonSchemaDialectVisitor,CS=Wv.visitors.document.objects.Server.$visitor;const AS=class server_ServerVisitor extends CS{constructor(s){super(s),this.element=new dS}},jS=Wv.visitors.document.objects.ServerVariable.$visitor;const IS=class server_variable_ServerVariableVisitor extends jS{constructor(s){super(s),this.element=new fS}},PS=Wv.visitors.document.objects.MediaType.$visitor;const TS=class media_type_MediaTypeVisitor extends PS{constructor(s){super(s),this.element=new Sb}},NS=Wv.visitors.document.objects.SecurityRequirement.$visitor;const MS=class security_requirement_SecurityRequirementVisitor extends NS{constructor(s){super(s),this.element=new pS}},RS=Wv.visitors.document.objects.Components.$visitor;const DS=class components_ComponentsVisitor extends RS{constructor(s){super(s),this.element=new Yv}},LS=Wv.visitors.document.objects.Tag.$visitor;const FS=class tag_TagVisitor extends LS{constructor(s){super(s),this.element=new mS}},BS=Wv.visitors.document.objects.Reference.$visitor;const $S=class reference_ReferenceVisitor extends BS{constructor(s){super(s),this.element=new qb}},qS=Wv.visitors.document.objects.Parameter.$visitor;const VS=class parameter_ParameterVisitor extends qS{constructor(s){super(s),this.element=new Mb}},US=Wv.visitors.document.objects.Header.$visitor;const zS=class header_HeaderVisitor extends US{constructor(s){super(s),this.element=new nb}},WS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gv||s(a)&&o(\"callback\",a)&&i(\"object\",a))),JS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Yv||s(a)&&o(\"components\",a)&&i(\"object\",a))),HS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xv||s(a)&&o(\"contact\",a)&&i(\"object\",a))),KS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof eb||s(a)&&o(\"example\",a)&&i(\"object\",a))),GS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof tb||s(a)&&o(\"externalDocumentation\",a)&&i(\"object\",a))),YS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof nb||s(a)&&o(\"header\",a)&&i(\"object\",a))),XS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof pb||s(a)&&o(\"info\",a)&&i(\"object\",a))),QS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof mb||s(a)&&o(\"jsonSchemaDialect\",a)&&i(\"string\",a))),ZS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof yb||s(a)&&o(\"license\",a)&&i(\"object\",a))),eE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof _b||s(a)&&o(\"link\",a)&&i(\"object\",a))),tE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ab||s(a)&&o(\"openapi\",a)&&i(\"string\",a))),rE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof Ib||s(u)&&o(\"openApi3_1\",u)&&i(\"object\",u)&&a(\"api\",u))),nE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Pb||s(a)&&o(\"operation\",a)&&i(\"object\",a))),sE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Mb||s(a)&&o(\"parameter\",a)&&i(\"object\",a))),oE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Rb||s(a)&&o(\"pathItem\",a)&&i(\"object\",a))),isPathItemElementExternal=s=>{if(!oE(s))return!1;if(!Iu(s.$ref))return!1;const o=serializers_value(s.$ref);return\"string\"==typeof o&&o.length>0&&!o.startsWith(\"#\")},iE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Lb||s(a)&&o(\"paths\",a)&&i(\"object\",a))),aE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof qb||s(a)&&o(\"reference\",a)&&i(\"object\",a))),isReferenceElementExternal=s=>{if(!aE(s))return!1;if(!Iu(s.$ref))return!1;const o=serializers_value(s.$ref);return\"string\"==typeof o&&o.length>0&&!o.startsWith(\"#\")},cE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof zb||s(a)&&o(\"requestBody\",a)&&i(\"object\",a))),lE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Qb||s(a)&&o(\"response\",a)&&i(\"object\",a))),uE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof e_||s(a)&&o(\"responses\",a)&&i(\"object\",a))),pE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof uS||s(a)&&o(\"schema\",a)&&i(\"object\",a))),predicates_isBooleanJsonSchemaElement=s=>Nu(s)&&s.classes.includes(\"boolean-json-schema\"),hE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof pS||s(a)&&o(\"securityRequirement\",a)&&i(\"object\",a))),dE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof hS||s(a)&&o(\"securityScheme\",a)&&i(\"object\",a))),fE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof dS||s(a)&&o(\"server\",a)&&i(\"object\",a))),mE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof fS||s(a)&&o(\"serverVariable\",a)&&i(\"object\",a))),gE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Sb||s(a)&&o(\"mediaType\",a)&&i(\"object\",a)));class open_api_3_1_schema_SchemaVisitor extends(Mixin(um,Ld,rm)){constructor(s){super(s),this.element=new uS,this.specPath=fc([\"document\",\"objects\",\"Schema\"]),this.canSupportSpecificationExtensions=!0,this.jsonSchemaDefaultDialect=mb.default,this.passingOptionsNames.push(\"parent\")}ObjectElement(s){this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element;const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&(this.element.classes.push(\"reference-element\"),this.element.setMetaProperty(\"referenced-element\",\"schema\")),o}BooleanElement(s){return tS.prototype.BooleanElement.call(this,s)}get defaultDialectIdentifier(){let s;return s=void 0!==this.openApiSemanticElement&&QS(this.openApiSemanticElement.jsonSchemaDialect)?serializers_value(this.openApiSemanticElement.jsonSchemaDialect):void 0!==this.openApiGenericElement&&Iu(this.openApiGenericElement.get(\"jsonSchemaDialect\"))?serializers_value(this.openApiGenericElement.get(\"jsonSchemaDialect\")):serializers_value(this.jsonSchemaDefaultDialect),s}handleDialectIdentifier(s){return tS.prototype.handleDialectIdentifier.call(this,s)}handleSchemaIdentifier(s){return tS.prototype.handleSchemaIdentifier.call(this,s)}}const yE=open_api_3_1_schema_SchemaVisitor;const vE=class $defsVisitor_$defsVisitor extends L_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const bE=class schema_AllOfVisitor_AllOfVisitor extends F_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const _E=class schema_AnyOfVisitor_AnyOfVisitor extends B_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const SE=class schema_OneOfVisitor_OneOfVisitor extends $_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const EE=class DependentSchemasVisitor_DependentSchemasVisitor extends q_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const wE=class PrefixItemsVisitor_PrefixItemsVisitor extends rS{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const xE=class schema_PropertiesVisitor_PropertiesVisitor extends U_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const kE=class schema_PatternPropertiesVisitor_PatternPropertiesVisitor extends z_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}},OE=Wv.visitors.document.objects.Discriminator.$visitor;const CE=class distriminator_DiscriminatorVisitor extends OE{constructor(s){super(s),this.element=new Qv,this.canSupportSpecificationExtensions=!0}},AE=Wv.visitors.document.objects.XML.$visitor;const jE=class xml_XmlVisitor extends AE{constructor(s){super(s),this.element=new gS}};class SchemasVisitor_SchemasVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ay,this.specPath=fc([\"document\",\"objects\",\"Schema\"])}}const IE=SchemasVisitor_SchemasVisitor;class ComponentsPathItems extends Su.Sh{static primaryClass=\"components-path-items\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsPathItems.primaryClass)}}const PE=ComponentsPathItems;class PathItemsVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new PE,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),o}}const TE=PathItemsVisitor,NE=Wv.visitors.document.objects.Example.$visitor;const ME=class example_ExampleVisitor extends NE{constructor(s){super(s),this.element=new eb}},RE=Wv.visitors.document.objects.ExternalDocumentation.$visitor;const DE=class external_documentation_ExternalDocumentationVisitor extends RE{constructor(s){super(s),this.element=new tb}},LE=Wv.visitors.document.objects.Encoding.$visitor;const FE=class open_api_3_1_encoding_EncodingVisitor extends LE{constructor(s){super(s),this.element=new Zv}},BE=Wv.visitors.document.objects.Paths.$visitor;const $E=class paths_PathsVisitor extends BE{constructor(s){super(s),this.element=new Lb}},qE=Wv.visitors.document.objects.RequestBody.$visitor;const VE=class request_body_RequestBodyVisitor extends qE{constructor(s){super(s),this.element=new zb}},UE=Wv.visitors.document.objects.Callback.$visitor;const zE=class callback_CallbackVisitor extends UE{constructor(s){super(s),this.element=new Gv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=UE.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),o}},WE=Wv.visitors.document.objects.Response.$visitor;const JE=class response_ResponseVisitor extends WE{constructor(s){super(s),this.element=new Qb}},HE=Wv.visitors.document.objects.Responses.$visitor;const KE=class open_api_3_1_responses_ResponsesVisitor extends HE{constructor(s){super(s),this.element=new e_}},GE=Wv.visitors.document.objects.Operation.$visitor;const YE=class operation_OperationVisitor extends GE{constructor(s){super(s),this.element=new Pb}},XE=Wv.visitors.document.objects.PathItem.$visitor;const QE=class path_item_PathItemVisitor extends XE{constructor(s){super(s),this.element=new Rb}},ZE=Wv.visitors.document.objects.SecurityScheme.$visitor;const ew=class security_scheme_SecuritySchemeVisitor extends ZE{constructor(s){super(s),this.element=new hS}},tw=Wv.visitors.document.objects.OAuthFlows.$visitor;const rw=class oauth_flows_OAuthFlowsVisitor extends tw{constructor(s){super(s),this.element=new Ob}},nw=Wv.visitors.document.objects.OAuthFlow.$visitor;const sw=class oauth_flow_OAuthFlowVisitor extends nw{constructor(s){super(s),this.element=new wb}};class Webhooks extends Su.Sh{static primaryClass=\"webhooks\";constructor(s,o,i){super(s,o,i),this.classes.push(Webhooks.primaryClass)}}const ow=Webhooks;class WebhooksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new ow,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),this.element.filter(oE).forEach(((s,o)=>{s.setMetaProperty(\"webhook-name\",serializers_value(o))})),o}}const iw=WebhooksVisitor,{JSONSchema:aw,LinkDescription:cw}=sS.visitors.document.objects,lw={visitors:{value:Wv.visitors.value,document:{objects:{OpenApi:{$visitor:yS,fixedFields:{openapi:Wv.visitors.document.objects.OpenApi.fixedFields.openapi,info:{$ref:\"#/visitors/document/objects/Info\"},jsonSchemaDialect:OS,servers:Wv.visitors.document.objects.OpenApi.fixedFields.servers,paths:{$ref:\"#/visitors/document/objects/Paths\"},webhooks:iw,components:{$ref:\"#/visitors/document/objects/Components\"},security:Wv.visitors.document.objects.OpenApi.fixedFields.security,tags:Wv.visitors.document.objects.OpenApi.fixedFields.tags,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Info:{$visitor:bS,fixedFields:{title:Wv.visitors.document.objects.Info.fixedFields.title,description:Wv.visitors.document.objects.Info.fixedFields.description,summary:{$ref:\"#/visitors/value\"},termsOfService:Wv.visitors.document.objects.Info.fixedFields.termsOfService,contact:{$ref:\"#/visitors/document/objects/Contact\"},license:{$ref:\"#/visitors/document/objects/License\"},version:Wv.visitors.document.objects.Info.fixedFields.version}},Contact:{$visitor:SS,fixedFields:{name:Wv.visitors.document.objects.Contact.fixedFields.name,url:Wv.visitors.document.objects.Contact.fixedFields.url,email:Wv.visitors.document.objects.Contact.fixedFields.email}},License:{$visitor:wS,fixedFields:{name:Wv.visitors.document.objects.License.fixedFields.name,identifier:{$ref:\"#/visitors/value\"},url:Wv.visitors.document.objects.License.fixedFields.url}},Server:{$visitor:AS,fixedFields:{url:Wv.visitors.document.objects.Server.fixedFields.url,description:Wv.visitors.document.objects.Server.fixedFields.description,variables:Wv.visitors.document.objects.Server.fixedFields.variables}},ServerVariable:{$visitor:IS,fixedFields:{enum:Wv.visitors.document.objects.ServerVariable.fixedFields.enum,default:Wv.visitors.document.objects.ServerVariable.fixedFields.default,description:Wv.visitors.document.objects.ServerVariable.fixedFields.description}},Components:{$visitor:DS,fixedFields:{schemas:IE,responses:Wv.visitors.document.objects.Components.fixedFields.responses,parameters:Wv.visitors.document.objects.Components.fixedFields.parameters,examples:Wv.visitors.document.objects.Components.fixedFields.examples,requestBodies:Wv.visitors.document.objects.Components.fixedFields.requestBodies,headers:Wv.visitors.document.objects.Components.fixedFields.headers,securitySchemes:Wv.visitors.document.objects.Components.fixedFields.securitySchemes,links:Wv.visitors.document.objects.Components.fixedFields.links,callbacks:Wv.visitors.document.objects.Components.fixedFields.callbacks,pathItems:TE}},Paths:{$visitor:$E},PathItem:{$visitor:QE,fixedFields:{$ref:Wv.visitors.document.objects.PathItem.fixedFields.$ref,summary:Wv.visitors.document.objects.PathItem.fixedFields.summary,description:Wv.visitors.document.objects.PathItem.fixedFields.description,get:{$ref:\"#/visitors/document/objects/Operation\"},put:{$ref:\"#/visitors/document/objects/Operation\"},post:{$ref:\"#/visitors/document/objects/Operation\"},delete:{$ref:\"#/visitors/document/objects/Operation\"},options:{$ref:\"#/visitors/document/objects/Operation\"},head:{$ref:\"#/visitors/document/objects/Operation\"},patch:{$ref:\"#/visitors/document/objects/Operation\"},trace:{$ref:\"#/visitors/document/objects/Operation\"},servers:Wv.visitors.document.objects.PathItem.fixedFields.servers,parameters:Wv.visitors.document.objects.PathItem.fixedFields.parameters}},Operation:{$visitor:YE,fixedFields:{tags:Wv.visitors.document.objects.Operation.fixedFields.tags,summary:Wv.visitors.document.objects.Operation.fixedFields.summary,description:Wv.visitors.document.objects.Operation.fixedFields.description,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},operationId:Wv.visitors.document.objects.Operation.fixedFields.operationId,parameters:Wv.visitors.document.objects.Operation.fixedFields.parameters,requestBody:Wv.visitors.document.objects.Operation.fixedFields.requestBody,responses:{$ref:\"#/visitors/document/objects/Responses\"},callbacks:Wv.visitors.document.objects.Operation.fixedFields.callbacks,deprecated:Wv.visitors.document.objects.Operation.fixedFields.deprecated,security:Wv.visitors.document.objects.Operation.fixedFields.security,servers:Wv.visitors.document.objects.Operation.fixedFields.servers}},ExternalDocumentation:{$visitor:DE,fixedFields:{description:Wv.visitors.document.objects.ExternalDocumentation.fixedFields.description,url:Wv.visitors.document.objects.ExternalDocumentation.fixedFields.url}},Parameter:{$visitor:VS,fixedFields:{name:Wv.visitors.document.objects.Parameter.fixedFields.name,in:Wv.visitors.document.objects.Parameter.fixedFields.in,description:Wv.visitors.document.objects.Parameter.fixedFields.description,required:Wv.visitors.document.objects.Parameter.fixedFields.required,deprecated:Wv.visitors.document.objects.Parameter.fixedFields.deprecated,allowEmptyValue:Wv.visitors.document.objects.Parameter.fixedFields.allowEmptyValue,style:Wv.visitors.document.objects.Parameter.fixedFields.style,explode:Wv.visitors.document.objects.Parameter.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Parameter.fixedFields.allowReserved,schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.Parameter.fixedFields.example,examples:Wv.visitors.document.objects.Parameter.fixedFields.examples,content:Wv.visitors.document.objects.Parameter.fixedFields.content}},RequestBody:{$visitor:VE,fixedFields:{description:Wv.visitors.document.objects.RequestBody.fixedFields.description,content:Wv.visitors.document.objects.RequestBody.fixedFields.content,required:Wv.visitors.document.objects.RequestBody.fixedFields.required}},MediaType:{$visitor:TS,fixedFields:{schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.MediaType.fixedFields.example,examples:Wv.visitors.document.objects.MediaType.fixedFields.examples,encoding:Wv.visitors.document.objects.MediaType.fixedFields.encoding}},Encoding:{$visitor:FE,fixedFields:{contentType:Wv.visitors.document.objects.Encoding.fixedFields.contentType,headers:Wv.visitors.document.objects.Encoding.fixedFields.headers,style:Wv.visitors.document.objects.Encoding.fixedFields.style,explode:Wv.visitors.document.objects.Encoding.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Encoding.fixedFields.allowReserved}},Responses:{$visitor:KE,fixedFields:{default:Wv.visitors.document.objects.Responses.fixedFields.default}},Response:{$visitor:JE,fixedFields:{description:Wv.visitors.document.objects.Response.fixedFields.description,headers:Wv.visitors.document.objects.Response.fixedFields.headers,content:Wv.visitors.document.objects.Response.fixedFields.content,links:Wv.visitors.document.objects.Response.fixedFields.links}},Callback:{$visitor:zE},Example:{$visitor:ME,fixedFields:{summary:Wv.visitors.document.objects.Example.fixedFields.summary,description:Wv.visitors.document.objects.Example.fixedFields.description,value:Wv.visitors.document.objects.Example.fixedFields.value,externalValue:Wv.visitors.document.objects.Example.fixedFields.externalValue}},Link:{$visitor:kS,fixedFields:{operationRef:Wv.visitors.document.objects.Link.fixedFields.operationRef,operationId:Wv.visitors.document.objects.Link.fixedFields.operationId,parameters:Wv.visitors.document.objects.Link.fixedFields.parameters,requestBody:Wv.visitors.document.objects.Link.fixedFields.requestBody,description:Wv.visitors.document.objects.Link.fixedFields.description,server:{$ref:\"#/visitors/document/objects/Server\"}}},Header:{$visitor:zS,fixedFields:{description:Wv.visitors.document.objects.Header.fixedFields.description,required:Wv.visitors.document.objects.Header.fixedFields.required,deprecated:Wv.visitors.document.objects.Header.fixedFields.deprecated,allowEmptyValue:Wv.visitors.document.objects.Header.fixedFields.allowEmptyValue,style:Wv.visitors.document.objects.Header.fixedFields.style,explode:Wv.visitors.document.objects.Header.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Header.fixedFields.allowReserved,schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.Header.fixedFields.example,examples:Wv.visitors.document.objects.Header.fixedFields.examples,content:Wv.visitors.document.objects.Header.fixedFields.content}},Tag:{$visitor:FS,fixedFields:{name:Wv.visitors.document.objects.Tag.fixedFields.name,description:Wv.visitors.document.objects.Tag.fixedFields.description,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Reference:{$visitor:$S,fixedFields:{$ref:Wv.visitors.document.objects.Reference.fixedFields.$ref,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"}}},JSONSchema:{$ref:\"#/visitors/document/objects/Schema\"},LinkDescription:{...cw},Schema:{$visitor:yE,fixedFields:{...aw.fixedFields,$defs:vE,allOf:bE,anyOf:_E,oneOf:SE,not:{$ref:\"#/visitors/document/objects/Schema\"},if:{$ref:\"#/visitors/document/objects/Schema\"},then:{$ref:\"#/visitors/document/objects/Schema\"},else:{$ref:\"#/visitors/document/objects/Schema\"},dependentSchemas:EE,prefixItems:wE,items:{$ref:\"#/visitors/document/objects/Schema\"},contains:{$ref:\"#/visitors/document/objects/Schema\"},properties:xE,patternProperties:kE,additionalProperties:{$ref:\"#/visitors/document/objects/Schema\"},propertyNames:{$ref:\"#/visitors/document/objects/Schema\"},unevaluatedItems:{$ref:\"#/visitors/document/objects/Schema\"},unevaluatedProperties:{$ref:\"#/visitors/document/objects/Schema\"},contentSchema:{$ref:\"#/visitors/document/objects/Schema\"},discriminator:{$ref:\"#/visitors/document/objects/Discriminator\"},xml:{$ref:\"#/visitors/document/objects/XML\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},example:{$ref:\"#/visitors/value\"}}},Discriminator:{$visitor:CE,fixedFields:{propertyName:Wv.visitors.document.objects.Discriminator.fixedFields.propertyName,mapping:Wv.visitors.document.objects.Discriminator.fixedFields.mapping}},XML:{$visitor:jE,fixedFields:{name:Wv.visitors.document.objects.XML.fixedFields.name,namespace:Wv.visitors.document.objects.XML.fixedFields.namespace,prefix:Wv.visitors.document.objects.XML.fixedFields.prefix,attribute:Wv.visitors.document.objects.XML.fixedFields.attribute,wrapped:Wv.visitors.document.objects.XML.fixedFields.wrapped}},SecurityScheme:{$visitor:ew,fixedFields:{type:Wv.visitors.document.objects.SecurityScheme.fixedFields.type,description:Wv.visitors.document.objects.SecurityScheme.fixedFields.description,name:Wv.visitors.document.objects.SecurityScheme.fixedFields.name,in:Wv.visitors.document.objects.SecurityScheme.fixedFields.in,scheme:Wv.visitors.document.objects.SecurityScheme.fixedFields.scheme,bearerFormat:Wv.visitors.document.objects.SecurityScheme.fixedFields.bearerFormat,flows:{$ref:\"#/visitors/document/objects/OAuthFlows\"},openIdConnectUrl:Wv.visitors.document.objects.SecurityScheme.fixedFields.openIdConnectUrl}},OAuthFlows:{$visitor:rw,fixedFields:{implicit:{$ref:\"#/visitors/document/objects/OAuthFlow\"},password:{$ref:\"#/visitors/document/objects/OAuthFlow\"},clientCredentials:{$ref:\"#/visitors/document/objects/OAuthFlow\"},authorizationCode:{$ref:\"#/visitors/document/objects/OAuthFlow\"}}},OAuthFlow:{$visitor:sw,fixedFields:{authorizationUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.authorizationUrl,tokenUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.tokenUrl,refreshUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.refreshUrl,scopes:Wv.visitors.document.objects.OAuthFlow.fixedFields.scopes}},SecurityRequirement:{$visitor:MS}},extension:{$visitor:Wv.visitors.document.extension.$visitor}}}},apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},uw={CallbackElement:[\"content\"],ComponentsElement:[\"content\"],ContactElement:[\"content\"],DiscriminatorElement:[\"content\"],Encoding:[\"content\"],Example:[\"content\"],ExternalDocumentationElement:[\"content\"],HeaderElement:[\"content\"],InfoElement:[\"content\"],LicenseElement:[\"content\"],MediaTypeElement:[\"content\"],OAuthFlowElement:[\"content\"],OAuthFlowsElement:[\"content\"],OpenApi3_1Element:[\"content\"],OperationElement:[\"content\"],ParameterElement:[\"content\"],PathItemElement:[\"content\"],PathsElement:[\"content\"],ReferenceElement:[\"content\"],RequestBodyElement:[\"content\"],ResponseElement:[\"content\"],ResponsesElement:[\"content\"],SchemaElement:[\"content\"],SecurityRequirementElement:[\"content\"],SecuritySchemeElement:[\"content\"],ServerElement:[\"content\"],ServerVariableElement:[\"content\"],TagElement:[\"content\"],...Ku},pw={namespace:s=>{const{base:o}=s;return o.register(\"callback\",Gv),o.register(\"components\",Yv),o.register(\"contact\",Xv),o.register(\"discriminator\",Qv),o.register(\"encoding\",Zv),o.register(\"example\",eb),o.register(\"externalDocumentation\",tb),o.register(\"header\",nb),o.register(\"info\",pb),o.register(\"jsonSchemaDialect\",mb),o.register(\"license\",yb),o.register(\"link\",_b),o.register(\"mediaType\",Sb),o.register(\"oAuthFlow\",wb),o.register(\"oAuthFlows\",Ob),o.register(\"openapi\",Ab),o.register(\"openApi3_1\",Ib),o.register(\"operation\",Pb),o.register(\"parameter\",Mb),o.register(\"pathItem\",Rb),o.register(\"paths\",Lb),o.register(\"reference\",qb),o.register(\"requestBody\",zb),o.register(\"response\",Qb),o.register(\"responses\",e_),o.register(\"schema\",uS),o.register(\"securityRequirement\",pS),o.register(\"securityScheme\",hS),o.register(\"server\",dS),o.register(\"serverVariable\",fS),o.register(\"tag\",mS),o.register(\"xml\",gS),o}},hw=pw,ancestorLineageToJSONPointer=s=>{const o=s.reduce(((o,i,a)=>{if(Du(i)){const s=String(serializers_value(i.key));o.push(s)}else if(Ru(s[a-2])){const u=String(s[a-2].content.indexOf(i));o.push(u)}return o}),[]);return es_compile(o)},apidom_ns_openapi_3_1_src_refractor_toolbox=()=>{const s=createNamespace(hw);return{predicates:{...ye,isElement:ju,isStringElement:Iu,isArrayElement:Ru,isObjectElement:Mu,isMemberElement:Du,isServersElement:lg,includesClasses,hasElementSourceMap},ancestorLineageToJSONPointer,namespace:s}},apidom_ns_openapi_3_1_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"],plugins:i=[]}={})=>{const a=(0,Su.e)(s),u=dereference(lw),_=new(tp(o,u))({specObj:u});return visitor_visit(a,_),dispatchPluginsSync(_.element,i,{toolboxCreator:apidom_ns_openapi_3_1_src_refractor_toolbox,visitorOptions:{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}})},apidom_ns_openapi_3_1_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_openapi_3_1_src_refractor_refract(o,{specPath:s,...i});Gv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Callback\",\"$visitor\"]),Yv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Components\",\"$visitor\"]),Xv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Contact\",\"$visitor\"]),eb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Example\",\"$visitor\"]),Qv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Discriminator\",\"$visitor\"]),Zv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Encoding\",\"$visitor\"]),tb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ExternalDocumentation\",\"$visitor\"]),nb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Header\",\"$visitor\"]),pb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Info\",\"$visitor\"]),mb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"jsonSchemaDialect\"]),yb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"License\",\"$visitor\"]),_b.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Link\",\"$visitor\"]),Sb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"MediaType\",\"$visitor\"]),wb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlow\",\"$visitor\"]),Ob.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlows\",\"$visitor\"]),Ab.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"openapi\"]),Ib.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"]),Pb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Operation\",\"$visitor\"]),Mb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Parameter\",\"$visitor\"]),Rb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"PathItem\",\"$visitor\"]),Lb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Paths\",\"$visitor\"]),qb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Reference\",\"$visitor\"]),zb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"RequestBody\",\"$visitor\"]),Qb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Response\",\"$visitor\"]),e_.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Responses\",\"$visitor\"]),uS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Schema\",\"$visitor\"]),pS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityRequirement\",\"$visitor\"]),hS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityScheme\",\"$visitor\"]),dS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Server\",\"$visitor\"]),fS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ServerVariable\",\"$visitor\"]),mS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Tag\",\"$visitor\"]),gS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"XML\",\"$visitor\"]);const dw=class NotImplementedError extends Dh{};const fw=class MediaTypes extends Array{unknownMediaType=\"application/octet-stream\";filterByFormat(){throw new dw(\"filterByFormat method in MediaTypes class is not yet implemented.\")}findBy(){throw new dw(\"findBy method in MediaTypes class is not yet implemented.\")}latest(){throw new dw(\"latest method in MediaTypes class is not yet implemented.\")}};class OpenAPIMediaTypes extends fw{filterByFormat(s=\"generic\"){const o=\"generic\"===s?\"openapi;version\":s;return this.filter((s=>s.includes(o)))}findBy(s=\"3.1.0\",o=\"generic\"){const i=\"generic\"===o?`vnd.oai.openapi;version=${s}`:`vnd.oai.openapi+${o};version=${s}`;return this.find((s=>s.includes(i)))||this.unknownMediaType}latest(s=\"generic\"){return Ba(this.filterByFormat(s))}}const mw=new OpenAPIMediaTypes(\"application/vnd.oai.openapi;version=3.1.0\",\"application/vnd.oai.openapi+json;version=3.1.0\",\"application/vnd.oai.openapi+yaml;version=3.1.0\");const gw=class src_Reference_Reference{uri;depth;value;refSet;errors;constructor({uri:s,depth:o=0,refSet:i,value:a}){this.uri=s,this.value=a,this.depth=o,this.refSet=i,this.errors=[]}};const yw=class ReferenceSet{rootRef;refs;circular;constructor({refs:s=[],circular:o=!1}={}){this.refs=[],this.circular=o,s.forEach(this.add.bind(this))}get size(){return this.refs.length}add(s){return this.has(s)||(this.refs.push(s),this.rootRef=void 0===this.rootRef?s:this.rootRef,s.refSet=this),this}merge(s){for(const o of s.values())this.add(o);return this}has(s){const o=Jc(s)?s:s.uri;return _c(this.find((s=>s.uri===o)))}find(s){return this.refs.find(s)}*values(){yield*this.refs}clean(){this.refs.forEach((s=>{s.refSet=void 0})),this.rootRef=void 0,this.refs.length=0}};function _identity(s){return s}const vw=_curry1(_identity),bw={parse:{mediaType:\"text/plain\",parsers:[],parserOpts:{}},resolve:{baseURI:\"\",resolvers:[],resolverOpts:{},strategies:[],strategyOpts:{},internal:!0,external:!0,maxDepth:1/0},dereference:{strategies:[],strategyOpts:{},refSet:null,maxDepth:1/0,circular:\"ignore\",circularReplacer:vw,immutable:!0},bundle:{strategies:[],refSet:null,maxDepth:1/0}};const _w=_curry2((function lens(s,o){return function(i){return function(a){return cc((function(s){return o(s,a)}),i(s(a)))}}}));var Identity=function(s){return{value:s,map:function(o){return Identity(o(s))}}},Sw=_curry3((function over(s,o,i){return s((function(s){return Identity(o(s))}))(i).value}));const Ew=Sw;const ww=na(\"\"),xw=_w(tp([\"resolve\",\"baseURI\"]),s_([\"resolve\",\"baseURI\"])),baseURIDefault=s=>ww(s)?url_cwd():s,util_merge=(s,o)=>{const i=ep(s,o);return Ew(xw,baseURIDefault,i)};const kw=class File_File{uri;mediaType;data;parseResult;constructor({uri:s,mediaType:o=\"text/plain\",data:i,parseResult:a}){this.uri=s,this.mediaType=o,this.data=i,this.parseResult=a}get extension(){return Jc(this.uri)?(s=>{const o=s.lastIndexOf(\".\");return o>=0?s.substring(o).toLowerCase():\"\"})(this.uri):\"\"}toString(){if(\"string\"==typeof this.data)return this.data;if(this.data instanceof ArrayBuffer||[\"ArrayBuffer\"].includes(ra(this.data))||ArrayBuffer.isView(this.data)){return new TextDecoder(\"utf-8\").decode(this.data)}return String(this.data)}};const Ow=class PluginError extends Ko{plugin;constructor(s,o){super(s,{cause:o.cause}),this.plugin=o.plugin}},plugins_filter=async(s,o,i)=>{const a=await Promise.all(i.map(hp([s],o)));return i.filter(((s,o)=>a[o]))},run=async(s,o,i)=>{let a;for(const u of i)try{const i=await u[s].call(u,...o);return{plugin:u,result:i}}catch(s){a=new Ow(\"Error while running plugin\",{cause:s,plugin:u})}return Promise.reject(a)};const Cw=class DereferenceError extends Ko{};const Aw=class UnmatchedDereferenceStrategyError extends Cw{},dereferenceApiDOM=async(s,o)=>{let i=s,a=!1;if(!qu(s)){const o=cloneShallow(s);o.classes.push(\"result\"),i=new Cu([o]),a=!0}const u=new kw({uri:o.resolve.baseURI,parseResult:i,mediaType:o.parse.mediaType}),_=await plugins_filter(\"canDereference\",[u,o],o.dereference.strategies);if(cp(_))throw new Aw(u.uri);try{const{result:s}=await run(\"dereference\",[u,o],_);return a?s.get(0):s}catch(s){throw new Cw(`Error while dereferencing file \"${u.uri}\"`,{cause:s})}};const jw=class ParseError extends Ko{};const Iw=class ParserError extends jw{};const Pw=class Parser_Parser{name;allowEmpty;sourceMap;fileExtensions;mediaTypes;constructor({name:s,allowEmpty:o=!0,sourceMap:i=!1,fileExtensions:a=[],mediaTypes:u=[]}){this.name=s,this.allowEmpty=o,this.sourceMap=i,this.fileExtensions=a,this.mediaTypes=u}};const Tw=class BinaryParser extends Pw{constructor(s){super({...null!=s?s:{},name:\"binary\"})}canParse(s){return 0===this.fileExtensions.length||this.fileExtensions.includes(s.extension)}parse(s){try{const o=unescape(encodeURIComponent(s.toString())),i=btoa(o),a=new Cu;if(0!==i.length){const s=new Su.Om(i);s.classes.push(\"result\"),a.push(s)}return a}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Nw=class ResolveStrategy{name;constructor({name:s}){this.name=s}};const Mw=class OpenAPI3_1ResolveStrategy extends Nw{constructor(s){super({...null!=s?s:{},name:\"openapi-3-1\"})}canResolve(s,o){const i=o.dereference.strategies.find((s=>\"openapi-3-1\"===s.name));return void 0!==i&&i.canDereference(s,o)}async resolve(s,o){const i=o.dereference.strategies.find((s=>\"openapi-3-1\"===s.name));if(void 0===i)throw new Aw('\"openapi-3-1\" dereference strategy is not available.');const a=new yw,u=util_merge(o,{resolve:{internal:!1},dereference:{refSet:a}});return await i.dereference(s,u),a}};const Rw=class Resolver{name;constructor({name:s}){this.name=s}};const Dw=class HTTPResolver extends Rw{timeout;redirects;withCredentials;constructor(s){const{name:o=\"http-resolver\",timeout:i=5e3,redirects:a=5,withCredentials:u=!1}=null!=s?s:{};super({name:o}),this.timeout=i,this.redirects=a,this.withCredentials=u}canRead(s){return isHttpUrl(s.uri)}};const Lw=class ResolveError extends Ko{};const Fw=class ResolverError extends Lw{},{AbortController:Bw,AbortSignal:$w}=globalThis;void 0===globalThis.AbortController&&(globalThis.AbortController=Bw),void 0===globalThis.AbortSignal&&(globalThis.AbortSignal=$w);const qw=class HTTPResolverSwaggerClient extends Dw{swaggerHTTPClient=http_http;swaggerHTTPClientConfig;constructor({swaggerHTTPClient:s=http_http,swaggerHTTPClientConfig:o={},...i}={}){super({...i,name:\"http-swagger-client\"}),this.swaggerHTTPClient=s,this.swaggerHTTPClientConfig=o}getHttpClient(){return this.swaggerHTTPClient}async read(s){const o=this.getHttpClient(),i=new AbortController,{signal:a}=i,u=setTimeout((()=>{i.abort()}),this.timeout),_=this.getHttpClient().withCredentials||this.withCredentials?\"include\":\"same-origin\",w=0===this.redirects?\"error\":\"follow\",x=this.redirects>0?this.redirects:void 0;try{return(await o({url:s.uri,signal:a,userFetch:async(s,o)=>{let i=await fetch(s,o);try{i.headers.delete(\"Content-Type\")}catch{i=new Response(i.body,{...i,headers:new Headers(i.headers)}),i.headers.delete(\"Content-Type\")}return i},credentials:_,redirect:w,follow:x,...this.swaggerHTTPClientConfig})).text.arrayBuffer()}catch(o){throw new Fw(`Error downloading \"${s.uri}\"`,{cause:o})}finally{clearTimeout(u)}}},transformers_from=(s,o=fp)=>{if(Jc(s))try{return o.fromRefract(JSON.parse(s))}catch{}return fu(s)&&id(\"element\",s)?o.fromRefract(s):o.toElement(s)};const Vw=class JSONParser extends Pw{constructor(s={}){super({name:\"json-swagger-client\",mediaTypes:[\"application/json\"],...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{return JSON.parse(s.toString()),!0}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"json-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();if(this.allowEmpty&&\"\"===i.trim())return o;try{const s=transformers_from(JSON.parse(i));return s.classes.push(\"result\"),o.push(s),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Uw=class YAMLParser extends Pw{constructor(s={}){super({name:\"yaml-1-2-swagger-client\",mediaTypes:[\"text/yaml\",\"application/yaml\"],...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{return fn.load(s.toString(),{schema:rn}),!0}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"yaml-1-2-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();try{const s=fn.load(i,{schema:rn});if(this.allowEmpty&&void 0===s)return o;const a=transformers_from(s);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const zw=class OpenAPIJSON3_1Parser extends Pw{detectionRegExp=/\"openapi\"\\s*:\\s*\"(?<version_json>3\\.1\\.(?:[1-9]\\d*|0))\"/;constructor(s={}){super({name:\"openapi-json-3-1-swagger-client\",mediaTypes:new OpenAPIMediaTypes(...mw.filterByFormat(\"generic\"),...mw.filterByFormat(\"json\")),...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{const o=s.toString();return JSON.parse(o),this.detectionRegExp.test(o)}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"openapi-json-3-1-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();if(this.allowEmpty&&\"\"===i.trim())return o;try{const s=JSON.parse(i),a=Ib.refract(s,this.refractorOpts);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Ww=class OpenAPIYAML31Parser extends Pw{detectionRegExp=/(?<YAML>^([\"']?)openapi\\2\\s*:\\s*([\"']?)(?<version_yaml>3\\.1\\.(?:[1-9]\\d*|0))\\3(?:\\s+|$))|(?<JSON>\"openapi\"\\s*:\\s*\"(?<version_json>3\\.1\\.(?:[1-9]\\d*|0))\")/m;constructor(s={}){super({name:\"openapi-yaml-3-1-swagger-client\",mediaTypes:new OpenAPIMediaTypes(...mw.filterByFormat(\"generic\"),...mw.filterByFormat(\"yaml\")),...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{const o=s.toString();return fn.load(o),this.detectionRegExp.test(o)}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"openapi-yaml-3-1-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();try{const s=fn.load(i,{schema:rn});if(this.allowEmpty&&void 0===s)return o;const a=Ib.refract(s,this.refractorOpts);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Jw=_curry3((function propEq(s,o,i){return na(s,Da(o,i))}));const Hw=class DereferenceStrategy{name;constructor({name:s}){this.name=s}};const Kw=_curry2((function none(s,o){return xu(_complement(s),o)}));var Gw=__webpack_require__(8068);const Yw=class ElementIdentityError extends Go{value;constructor(s,o){super(s,o),void 0!==o&&(this.value=o.value)}};class IdentityManager{uuid;identityMap;constructor({length:s=6}={}){this.uuid=new Gw({length:s}),this.identityMap=new WeakMap}identify(s){if(!ju(s))throw new Yw(\"Cannot not identify the element. `element` is neither structurally compatible nor a subclass of an Element class.\",{value:s});if(s.meta.hasKey(\"id\")&&Iu(s.meta.get(\"id\"))&&!s.meta.get(\"id\").equals(\"\"))return s.id;if(this.identityMap.has(s))return this.identityMap.get(s);const o=new Su.Om(this.generateId());return this.identityMap.set(s,o),o}forget(s){return!!this.identityMap.has(s)&&(this.identityMap.delete(s),!0)}generateId(){return this.uuid.randomUUID()}}new IdentityManager;const Xw=_curry3((function pathOr(s,o,i){return Na(s,_path(o,i))})),traversal_find=(s,o)=>{const i=new PredicateVisitor({predicate:s,returnOnTrue:Uu});return visitor_visit(o,i),Xw(void 0,[0],i.result)};const Qw=class JsonSchema$anchorError extends Ko{};const Zw=class EvaluationJsonSchema$anchorError extends Qw{};const ex=class InvalidJsonSchema$anchorError extends Qw{constructor(s){super(`Invalid JSON Schema $anchor \"${s}\".`)}},isAnchor=s=>/^[A-Za-z_][A-Za-z_0-9.-]*$/.test(s),uriToAnchor=s=>{const o=getHash(s);return dd(\"#\",o)},$anchor_evaluate=(s,o)=>{const i=(s=>{if(!isAnchor(s))throw new ex(s);return s})(s),a=traversal_find((s=>pE(s)&&serializers_value(s.$anchor)===i),o);if(bc(a))throw new Zw(`Evaluation failed on token: \"${i}\"`);return a},traversal_filter=(s,o)=>{const i=new PredicateVisitor({predicate:s});return visitor_visit(o,i),new Su.G6(i.result)};const tx=class JsonSchemaUriError extends Ko{};const rx=class EvaluationJsonSchemaUriError extends tx{},resolveSchema$refField=(s,o)=>{if(void 0===o.$ref)return;const i=getHash(serializers_value(o.$ref)),a=serializers_value(o.meta.get(\"ancestorsSchemaIdentifiers\")),u=Ca(((s,o)=>resolve(s,sanitize(stripHash(o)))),s,[...a,serializers_value(o.$ref)]);return`${u}${\"#\"===i?\"\":i}`},refractToSchemaElement=s=>{if(refractToSchemaElement.cache.has(s))return refractToSchemaElement.cache.get(s);const o=uS.refract(s);return refractToSchemaElement.cache.set(s,o),o};refractToSchemaElement.cache=new WeakMap;const maybeRefractToSchemaElement=s=>isPrimitiveElement(s)?refractToSchemaElement(s):s,uri_evaluate=(s,o)=>{const{cache:i}=uri_evaluate,a=stripHash(s),isSchemaElementWith$id=s=>pE(s)&&void 0!==s.$id;if(!i.has(o)){const s=traversal_filter(isSchemaElementWith$id,o);i.set(o,Array.from(s))}const u=i.get(o).find((s=>{const o=((s,o)=>{if(void 0===o.$id)return;const i=serializers_value(o.meta.get(\"ancestorsSchemaIdentifiers\"));return Ca(((s,o)=>resolve(s,sanitize(stripHash(o)))),s,i)})(a,s);return o===a}));if(bc(u))throw new rx(`Evaluation failed on URI: \"${s}\"`);return isAnchor(uriToAnchor(s))?$anchor_evaluate(uriToAnchor(s),u):apidom_evaluate(u,fromURIReference(s))};uri_evaluate.cache=new WeakMap;const nx=class MaximumDereferenceDepthError extends Cw{};const sx=class MaximumResolveDepthError extends Lw{};const ox=class UnmatchedResolverError extends Fw{},apidom_reference_src_parse=async(s,o)=>{const i=new kw({uri:sanitize(stripHash(s)),mediaType:o.parse.mediaType}),a=await(async(s,o)=>{const i=o.resolve.resolvers.map((s=>{const i=Object.create(s);return Object.assign(i,o.resolve.resolverOpts)})),a=await plugins_filter(\"canRead\",[s,o],i);if(cp(a))throw new ox(s.uri);try{const{result:o}=await run(\"read\",[s],a);return o}catch(o){throw new Lw(`Error while reading file \"${s.uri}\"`,{cause:o})}})(i,o);return(async(s,o)=>{const i=o.parse.parsers.map((s=>{const i=Object.create(s);return Object.assign(i,o.parse.parserOpts)})),a=await plugins_filter(\"canParse\",[s,o],i);if(cp(a))throw new ox(s.uri);try{const{plugin:i,result:u}=await run(\"parse\",[s,o],a);return!i.allowEmpty&&u.isEmpty?Promise.reject(new jw(`Error while parsing file \"${s.uri}\". File is empty.`)):u}catch(o){throw new jw(`Error while parsing file \"${s.uri}\"`,{cause:o})}})(new kw({...i,data:a}),o)};class AncestorLineage extends Array{includesCycle(s){return this.filter((o=>o.has(s))).length>1}includes(s,o){return s instanceof Set?super.includes(s,o):this.some((o=>o.has(s)))}findItem(s){for(const o of this)for(const i of o)if(ju(i)&&s(i))return i}}const ix=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],ax=new IdentityManager,mutationReplacer=(s,o,i,a)=>{Du(a)?a.value=s:Array.isArray(a)&&(a[i]=s)};class OpenAPI3_1DereferenceVisitor{indirections;namespace;reference;options;ancestors;refractCache;constructor({reference:s,namespace:o,options:i,indirections:a=[],ancestors:u=new AncestorLineage,refractCache:_=new Map}){this.indirections=a,this.namespace=o,this.reference=s,this.options=i,this.ancestors=new AncestorLineage(...u),this.refractCache=_}toBaseURI(s){return resolve(this.reference.uri,sanitize(stripHash(s)))}async toReference(s){if(this.reference.depth>=this.options.resolve.maxDepth)throw new sx(`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file \"${this.reference.uri}\"`);const o=this.toBaseURI(s),{refSet:i}=this.reference;if(i.has(o))return i.find(Jw(o,\"uri\"));const a=await apidom_reference_src_parse(unsanitize(o),{...this.options,parse:{...this.options.parse,mediaType:\"text/plain\"}}),u=new gw({uri:o,value:cloneDeep(a),depth:this.reference.depth+1});if(i.add(u),this.options.dereference.immutable){const s=new gw({uri:`immutable://${o}`,value:a,depth:this.reference.depth+1});i.add(s)}return u}toAncestorLineage(s){const o=new Set(s.filter(ju));return[new AncestorLineage(...this.ancestors,o),o]}async ReferenceElement(s,o,i,a,u,_){if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]),C=this.toBaseURI(serializers_value(s.$ref)),j=stripHash(this.reference.uri)===C,L=!j;if(!this.options.resolve.internal&&j)return!1;if(!this.options.resolve.external&&L)return!1;const B=await this.toReference(serializers_value(s.$ref)),$=resolve(C,serializers_value(s.$ref));this.indirections.push(s);const V=fromURIReference($);let U=apidom_evaluate(B.value.result,V);if(U.id=ax.identify(U),isPrimitiveElement(U)){const o=serializers_value(s.meta.get(\"referenced-element\")),i=`${o}-${serializers_value(ax.identify(U))}`;if(this.refractCache.has(i))U=this.refractCache.get(i);else if(isReferenceLikeElement(U))U=qb.refract(U),U.setMetaProperty(\"referenced-element\",o),this.refractCache.set(i,U);else{U=this.namespace.getElementClass(o).refract(U),this.refractCache.set(i,U)}}if(s===U)throw new Ko(\"Recursive Reference Object detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(U)){if(B.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var z,Y;const o=new Su.sI(U.id,{type:\"reference\",uri:B.uri,$ref:serializers_value(s.$ref)}),a=(null!==(z=null===(Y=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===Y?void 0:Y.circularReplacer)&&void 0!==z?z:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const Z=stripHash(B.refSet.rootRef.uri)!==B.uri,ee=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((L||Z||aE(U)||ee)&&!w.includesCycle(U)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:B,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});U=await ix(U,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}this.indirections.pop();const ie=cloneShallow(U);return ie.setMetaProperty(\"id\",ax.generateId()),ie.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref),description:serializers_value(s.description),summary:serializers_value(s.summary)}),ie.setMetaProperty(\"ref-origin\",B.uri),ie.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),Mu(U)&&Mu(ie)&&(s.hasKey(\"description\")&&\"description\"in U&&(ie.remove(\"description\"),ie.set(\"description\",s.get(\"description\"))),s.hasKey(\"summary\")&&\"summary\"in U&&(ie.remove(\"summary\"),ie.set(\"summary\",s.get(\"summary\")))),_.replaceWith(ie,mutationReplacer),!i&&ie}async PathItemElement(s,o,i,a,u,_){if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]),C=this.toBaseURI(serializers_value(s.$ref)),j=stripHash(this.reference.uri)===C,L=!j;if(!this.options.resolve.internal&&j)return;if(!this.options.resolve.external&&L)return;const B=await this.toReference(serializers_value(s.$ref)),$=resolve(C,serializers_value(s.$ref));this.indirections.push(s);const V=fromURIReference($);let U=apidom_evaluate(B.value.result,V);if(U.id=ax.identify(U),isPrimitiveElement(U)){const s=`path-item-${serializers_value(ax.identify(U))}`;this.refractCache.has(s)?U=this.refractCache.get(s):(U=Rb.refract(U),this.refractCache.set(s,U))}if(s===U)throw new Ko(\"Recursive Path Item Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(U)){if(B.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var z,Y;const o=new Su.sI(U.id,{type:\"path-item\",uri:B.uri,$ref:serializers_value(s.$ref)}),a=(null!==(z=null===(Y=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===Y?void 0:Y.circularReplacer)&&void 0!==z?z:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const Z=stripHash(B.refSet.rootRef.uri)!==B.uri,ee=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((L||Z||oE(U)&&Iu(U.$ref)||ee)&&!w.includesCycle(U)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:B,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});U=await ix(U,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}if(this.indirections.pop(),oE(U)){const o=new Rb([...U.content],cloneDeep(U.meta),cloneDeep(U.attributes));o.setMetaProperty(\"id\",ax.generateId()),s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",B.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),U=o}return _.replaceWith(U,mutationReplacer),i?void 0:U}async LinkElement(s,o,i,a,u,_){if(!Iu(s.operationRef)&&!Iu(s.operationId))return;if(Iu(s.operationRef)&&Iu(s.operationId))throw new Ko(\"LinkElement operationRef and operationId fields are mutually exclusive.\");let w;if(Iu(s.operationRef)){var x;const o=fromURIReference(serializers_value(s.operationRef)),a=this.toBaseURI(serializers_value(s.operationRef)),u=stripHash(this.reference.uri)===a,C=!u;if(!this.options.resolve.internal&&u)return;if(!this.options.resolve.external&&C)return;const j=await this.toReference(serializers_value(s.operationRef));if(w=apidom_evaluate(j.value.result,o),isPrimitiveElement(w)){const s=`operation-${serializers_value(ax.identify(w))}`;this.refractCache.has(s)?w=this.refractCache.get(s):(w=Pb.refract(w),this.refractCache.set(s,w))}w=cloneShallow(w),w.setMetaProperty(\"ref-origin\",j.uri);const L=cloneShallow(s);return null===(x=L.operationRef)||void 0===x||x.meta.set(\"operation\",w),_.replaceWith(L,mutationReplacer),i?void 0:L}if(Iu(s.operationId)){var C;const o=serializers_value(s.operationId),a=await this.toReference(unsanitize(this.reference.uri));if(w=traversal_find((s=>nE(s)&&ju(s.operationId)&&s.operationId.equals(o)),a.value.result),bc(w))throw new Ko(`OperationElement(operationId=${o}) not found.`);const u=cloneShallow(s);return null===(C=u.operationId)||void 0===C||C.meta.set(\"operation\",w),_.replaceWith(u,mutationReplacer),i?void 0:u}}async ExampleElement(s,o,i,a,u,_){if(!Iu(s.externalValue))return;if(s.hasKey(\"value\")&&Iu(s.externalValue))throw new Ko(\"ExampleElement value and externalValue fields are mutually exclusive.\");const w=this.toBaseURI(serializers_value(s.externalValue)),x=stripHash(this.reference.uri)===w,C=!x;if(!this.options.resolve.internal&&x)return;if(!this.options.resolve.external&&C)return;const j=await this.toReference(serializers_value(s.externalValue)),L=cloneShallow(j.value.result);L.setMetaProperty(\"ref-origin\",j.uri);const B=cloneShallow(s);return B.value=L,_.replaceWith(B,mutationReplacer),i?void 0:B}async SchemaElement(s,o,i,a,u,_){if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]);let C=await this.toReference(unsanitize(this.reference.uri)),{uri:j}=C;const L=resolveSchema$refField(j,s),B=stripHash(L),$=new kw({uri:B}),V=Kw((s=>s.canRead($)),this.options.resolve.resolvers),U=!V;let z,Y=stripHash(this.reference.uri)===L,Z=!Y;this.indirections.push(s);try{if(V||U){j=this.toBaseURI(L);const s=L,o=maybeRefractToSchemaElement(C.value.result);if(z=uri_evaluate(s,o),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z),!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return}else{if(j=this.toBaseURI(L),Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=fromURIReference(L),o=maybeRefractToSchemaElement(C.value.result);z=apidom_evaluate(o,s),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}}catch(s){if(!(U&&s instanceof rx))throw s;if(isAnchor(uriToAnchor(L))){if(Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=uriToAnchor(L),o=maybeRefractToSchemaElement(C.value.result);z=$anchor_evaluate(s,o),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}else{if(j=this.toBaseURI(L),Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=fromURIReference(L),o=maybeRefractToSchemaElement(C.value.result);z=apidom_evaluate(o,s),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}}if(s===z)throw new Ko(\"Recursive Schema Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(z)){if(C.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var ee,ie;const o=new Su.sI(z.id,{type:\"json-schema\",uri:C.uri,$ref:serializers_value(s.$ref)}),a=(null!==(ee=null===(ie=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===ie?void 0:ie.circularReplacer)&&void 0!==ee?ee:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const ae=stripHash(C.refSet.rootRef.uri)!==C.uri,ce=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((Z||ae||pE(z)&&Iu(z.$ref)||ce)&&!w.includesCycle(z)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:C,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});z=await ix(z,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}if(this.indirections.pop(),predicates_isBooleanJsonSchemaElement(z)){const o=cloneDeep(z);return o.setMetaProperty(\"id\",ax.generateId()),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",C.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),_.replaceWith(o,mutationReplacer),!i&&o}if(pE(z)){const o=new uS([...z.content],cloneDeep(z.meta),cloneDeep(z.attributes));o.setMetaProperty(\"id\",ax.generateId()),s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",C.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),z=o}return _.replaceWith(z,mutationReplacer),i?void 0:z}}const cx=OpenAPI3_1DereferenceVisitor,lx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")];const ux=class OpenAPI3_1DereferenceStrategy extends Hw{constructor(s){super({...null!=s?s:{},name:\"openapi-3-1\"})}canDereference(s){var o;return\"text/plain\"!==s.mediaType?mw.includes(s.mediaType):rE(null===(o=s.parseResult)||void 0===o?void 0:o.result)}async dereference(s,o){var i;const a=createNamespace(hw),u=null!==(i=o.dereference.refSet)&&void 0!==i?i:new yw,_=new yw;let w,x=u;u.has(s.uri)?w=u.find(Jw(s.uri,\"uri\")):(w=new gw({uri:s.uri,value:s.parseResult}),u.add(w)),o.dereference.immutable&&(u.refs.map((s=>new gw({...s,value:cloneDeep(s.value)}))).forEach((s=>_.add(s))),w=_.find((o=>o.uri===s.uri)),x=_);const C=new cx({reference:w,namespace:a,options:o}),j=await lx(x.rootRef.value,C,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});return o.dereference.immutable&&_.refs.filter((s=>s.uri.startsWith(\"immutable://\"))).map((s=>new gw({...s,uri:s.uri.replace(/^immutable:\\/\\//,\"\")}))).forEach((s=>u.add(s))),null===o.dereference.refSet&&u.clean(),_.clean(),j}},to_path=s=>{const o=(s=>s.slice(2))(s);return o.reduce(((s,i,a)=>{if(Du(i)){const o=String(serializers_value(i.key));s.push(o)}else if(Ru(o[a-2])){const u=o[a-2].content.indexOf(i);s.push(u)}return s}),[])};const px=class ModelPropertyMacroVisitor{modelPropertyMacro;options;SchemaElement={leave:(s,o,i,a,u)=>{void 0!==s.properties&&Mu(s.properties)&&s.properties.forEach((o=>{if(Mu(o))try{const s=this.modelPropertyMacro(serializers_value(o));o.set(\"default\",s)}catch(o){var a,_;const w=new Error(o,{cause:o});w.fullPath=[...to_path([...u,i,s]),\"properties\"],null===(a=this.options.dereference.dereferenceOpts)||void 0===a||null===(a=a.errors)||void 0===a||null===(_=a.push)||void 0===_||_.call(a,w)}}))}};constructor({modelPropertyMacro:s,options:o}){this.modelPropertyMacro=s,this.options=o}};const hx=class all_of_AllOfVisitor{options;SchemaElement={leave(s,o,i,a,u){if(void 0===s.allOf)return;if(!Ru(s.allOf)){var _,w;const o=new TypeError(\"allOf must be an array\");return o.fullPath=[...to_path([...u,i,s]),\"allOf\"],void(null===(_=this.options.dereference.dereferenceOpts)||void 0===_||null===(_=_.errors)||void 0===_||null===(w=_.push)||void 0===w||w.call(_,o))}if(s.allOf.isEmpty)return void s.remove(\"allOf\");if(!s.allOf.content.every(pE)){var x,C;const o=new TypeError(\"Elements in allOf must be objects\");return o.fullPath=[...to_path([...u,i,s]),\"allOf\"],void(null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,o))}for(;s.hasKey(\"allOf\");){const{allOf:o}=s;s.remove(\"allOf\");const i=yd.all([...o.content,s]);if(s.hasKey(\"$$ref\")||i.remove(\"$$ref\"),s.hasKey(\"example\")){const o=i.getMember(\"example\");o&&(o.value=s.get(\"example\"))}if(s.hasKey(\"examples\")){const o=i.getMember(\"examples\");o&&(o.value=s.get(\"examples\"))}s.content=i.content}}};constructor({options:s}){this.options=s}};const dx=class ParameterMacroVisitor{parameterMacro;options;#n;OperationElement={enter:s=>{this.#n=s},leave:()=>{this.#n=void 0}};ParameterElement={leave:(s,o,i,a,u)=>{const _=this.#n?serializers_value(this.#n):null,w=serializers_value(s);try{const o=this.parameterMacro(_,w);s.set(\"default\",o)}catch(s){var x,C;const o=new Error(s,{cause:s});o.fullPath=to_path([...u,i]),null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,o)}}};constructor({parameterMacro:s,options:o}){this.parameterMacro=s,this.options=o}},get_root_cause=s=>{if(null==s.cause)return s;let{cause:o}=s;for(;null!=o.cause;)o=o.cause;return o};const fx=class SchemaRefError extends Go{},{wrapError:mx}=Xl,gx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],yx=new IdentityManager,dereference_mutationReplacer=(s,o,i,a)=>{Du(a)?a.value=s:Array.isArray(a)&&(a[i]=s)};class OpenAPI3_1SwaggerClientDereferenceVisitor extends cx{useCircularStructures;allowMetaPatches;basePath;constructor({allowMetaPatches:s=!0,useCircularStructures:o=!1,basePath:i=null,...a}){super(a),this.allowMetaPatches=s,this.useCircularStructures=o,this.basePath=i}async ReferenceElement(s,o,i,a,u,_){try{if(this.indirections.includes(s))return!1;const[o,a]=this.toAncestorLineage([...u,i]),j=this.toBaseURI(serializers_value(s.$ref)),L=stripHash(this.reference.uri)===j,B=!L;if(!this.options.resolve.internal&&L)return!1;if(!this.options.resolve.external&&B)return!1;const $=await this.toReference(serializers_value(s.$ref)),V=resolve(j,serializers_value(s.$ref));this.indirections.push(s);const U=fromURIReference(V);let z=apidom_evaluate($.value.result,U);if(z.id=yx.identify(z),isPrimitiveElement(z)){const o=serializers_value(s.meta.get(\"referenced-element\")),i=`${o}-${serializers_value(yx.identify(z))}`;if(this.refractCache.has(i))z=this.refractCache.get(i);else if(isReferenceLikeElement(z))z=qb.refract(z),z.setMetaProperty(\"referenced-element\",o),this.refractCache.set(i,z);else{z=this.namespace.getElementClass(o).refract(z),this.refractCache.set(i,z)}}if(s===z)throw new Ko(\"Recursive Reference Object detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(z)){if($.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(z.id,{type:\"reference\",uri:$.uri,$ref:serializers_value(s.$ref),baseURI:V,referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(o,dereference_mutationReplacer),!i&&a}}const Y=stripHash($.refSet.rootRef.uri)!==$.uri,Z=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((B||Y||aE(z)||Z)&&!o.includesCycle(z)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:$,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:o,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});z=await gx(z,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}this.indirections.pop();const ee=cloneShallow(z);if(ee.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref),description:serializers_value(s.description),summary:serializers_value(s.summary)}),ee.setMetaProperty(\"ref-origin\",$.uri),ee.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),Mu(z)&&(s.hasKey(\"description\")&&\"description\"in z&&(ee.remove(\"description\"),ee.set(\"description\",s.get(\"description\"))),s.hasKey(\"summary\")&&\"summary\"in z&&(ee.remove(\"summary\"),ee.set(\"summary\",s.get(\"summary\")))),this.allowMetaPatches&&Mu(ee)&&!ee.hasKey(\"$$ref\")){const s=resolve(j,V);ee.set(\"$$ref\",s)}return _.replaceWith(ee,dereference_mutationReplacer),!i&&ee}catch(o){var j,L,B;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),pointer:fromURIReference(serializers_value(s.$ref)),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"]});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async PathItemElement(s,o,i,a,u,_){try{if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;if(includesClasses([\"cycle\"],s.$ref))return!1;const[o,a]=this.toAncestorLineage([...u,i]),j=this.toBaseURI(serializers_value(s.$ref)),L=stripHash(this.reference.uri)===j,B=!L;if(!this.options.resolve.internal&&L)return;if(!this.options.resolve.external&&B)return;const $=await this.toReference(serializers_value(s.$ref)),V=resolve(j,serializers_value(s.$ref));this.indirections.push(s);const U=fromURIReference(V);let z=apidom_evaluate($.value.result,U);if(z.id=yx.identify(z),isPrimitiveElement(z)){const s=`path-item-${serializers_value(yx.identify(z))}`;this.refractCache.has(s)?z=this.refractCache.get(s):(z=Rb.refract(z),this.refractCache.set(s,z))}if(s===z)throw new Ko(\"Recursive Path Item Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(z)){if($.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(z.id,{type:\"path-item\",uri:$.uri,$ref:serializers_value(s.$ref),baseURI:V,referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(o,dereference_mutationReplacer),!i&&a}}const Y=stripHash($.refSet.rootRef.uri)!==$.uri,Z=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((B||Y||oE(z)&&Iu(z.$ref)||Z)&&!o.includesCycle(z)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:$,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:o,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});z=await gx(z,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}if(this.indirections.pop(),oE(z)){const o=new Rb([...z.content],cloneDeep(z.meta),cloneDeep(z.attributes));if(s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",$.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),this.allowMetaPatches&&void 0===o.get(\"$$ref\")){const s=resolve(j,V);o.set(\"$$ref\",s)}z=o}return _.replaceWith(z,dereference_mutationReplacer),i?void 0:z}catch(o){var j,L,B;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),pointer:fromURIReference(serializers_value(s.$ref)),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"]});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async SchemaElement(s,o,i,a,u,_){try{if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[o,a]=this.toAncestorLineage([...u,i]);let j=await this.toReference(unsanitize(this.reference.uri)),{uri:L}=j;const B=resolveSchema$refField(L,s),$=stripHash(B),V=new kw({uri:$}),U=!this.options.resolve.resolvers.some((s=>s.canRead(V))),z=!U;let Y,Z=stripHash(this.reference.uri)===B,ee=!Z;this.indirections.push(s);try{if(U||z){L=this.toBaseURI(B);const s=B,o=maybeRefractToSchemaElement(j.value.result);if(Y=uri_evaluate(s,o),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y),!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return}else{if(L=this.toBaseURI(B),Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=fromURIReference(B),o=maybeRefractToSchemaElement(j.value.result);Y=apidom_evaluate(o,s),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}}catch(s){if(!(z&&s instanceof rx))throw s;if(isAnchor(uriToAnchor(B))){if(Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=uriToAnchor(B),o=maybeRefractToSchemaElement(j.value.result);Y=$anchor_evaluate(s,o),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}else{if(L=this.toBaseURI(serializers_value(B)),Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=fromURIReference(B),o=maybeRefractToSchemaElement(j.value.result);Y=apidom_evaluate(o,s),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}}if(s===Y)throw new Ko(\"Recursive Schema Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(Y)){if(j.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(Y.id,{type:\"json-schema\",uri:j.uri,$ref:serializers_value(s.$ref),baseURI:resolve(L,B),referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,dereference_mutationReplacer),!i&&a}}const ie=stripHash(j.refSet.rootRef.uri)!==j.uri,ae=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((ee||ie||pE(Y)&&Iu(Y.$ref)||ae)&&!o.includesCycle(Y)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:j,namespace:this.namespace,indirections:[...this.indirections],options:this.options,useCircularStructures:this.useCircularStructures,allowMetaPatches:this.allowMetaPatches,ancestors:o,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});Y=await gx(Y,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}if(this.indirections.pop(),predicates_isBooleanJsonSchemaElement(Y)){const o=cloneDeep(Y);return o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",j.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),_.replaceWith(o,dereference_mutationReplacer),!i&&o}if(pE(Y)){const o=new uS([...Y.content],cloneDeep(Y.meta),cloneDeep(Y.attributes));if(s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",j.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),this.allowMetaPatches&&void 0===o.get(\"$$ref\")){const s=resolve(L,B);o.set(\"$$ref\",s)}Y=o}return _.replaceWith(Y,dereference_mutationReplacer),i?void 0:Y}catch(o){var j,L,B;const a=get_root_cause(o),_=new fx(`Could not resolve reference: ${a.message}`,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"],cause:a});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async LinkElement(){}async ExampleElement(s,o,i,a,u,_){try{return await super.ExampleElement(s,o,i,a,u,_)}catch(o){var w,x,C;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,externalValue:serializers_value(s.externalValue),fullPath:null!==(w=this.basePath)&&void 0!==w?w:[...to_path([...u,i,s]),\"externalValue\"]});return void(null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,_))}}}const vx=OpenAPI3_1SwaggerClientDereferenceVisitor,bx=mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")];const _x=class RootVisitor{constructor({parameterMacro:s,modelPropertyMacro:o,mode:i,options:a,...u}){const _=[];_.push(new vx({...u,options:a})),\"function\"==typeof o&&_.push(new px({modelPropertyMacro:o,options:a})),\"strict\"!==i&&_.push(new hx({options:a})),\"function\"==typeof s&&_.push(new dx({parameterMacro:s,options:a}));const w=bx(_,{nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});Object.assign(this,w)}},Sx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")];const Ex=class OpenAPI3_1SwaggerClientDereferenceStrategy extends ux{allowMetaPatches;parameterMacro;modelPropertyMacro;mode;ancestors;constructor({allowMetaPatches:s=!1,parameterMacro:o=null,modelPropertyMacro:i=null,mode:a=\"non-strict\",ancestors:u=[],..._}={}){super({..._}),this.name=\"openapi-3-1-swagger-client\",this.allowMetaPatches=s,this.parameterMacro=o,this.modelPropertyMacro=i,this.mode=a,this.ancestors=[...u]}async dereference(s,o){var i;const a=createNamespace(hw),u=null!==(i=o.dereference.refSet)&&void 0!==i?i:new yw,_=new yw;let w,x=u;u.has(s.uri)?w=u.find((o=>o.uri===s.uri)):(w=new gw({uri:s.uri,value:s.parseResult}),u.add(w)),o.dereference.immutable&&(u.refs.map((s=>new gw({...s,value:cloneDeep(s.value)}))).forEach((s=>_.add(s))),w=_.find((o=>o.uri===s.uri)),x=_);const C=new _x({reference:w,namespace:a,options:o,allowMetaPatches:this.allowMetaPatches,ancestors:this.ancestors,modelPropertyMacro:this.modelPropertyMacro,mode:this.mode,parameterMacro:this.parameterMacro}),j=await Sx(x.rootRef.value,C,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});return o.dereference.immutable&&_.refs.filter((s=>s.uri.startsWith(\"immutable://\"))).map((s=>new gw({...s,uri:s.uri.replace(/^immutable:\\/\\//,\"\")}))).forEach((s=>u.add(s))),null===o.dereference.refSet&&u.clean(),_.clean(),j}},circularReplacer=s=>{const o=serializers_value(s.meta.get(\"baseURI\")),i=s.meta.get(\"referencingElement\");return new Su.Sh({$ref:o},cloneDeep(i.meta),cloneDeep(i.attributes))},resolveOpenAPI31Strategy=async s=>{const{spec:o,timeout:i,redirects:a,requestInterceptor:u,responseInterceptor:_,pathDiscriminator:w=[],allowMetaPatches:x=!1,useCircularStructures:C=!1,skipNormalization:j=!1,parameterMacro:L=null,modelPropertyMacro:B=null,mode:$=\"non-strict\",strategies:V}=s;try{const{cache:U}=resolveOpenAPI31Strategy,z=V.find((s=>s.match(o))),Y=isHttpUrl(url_cwd())?url_cwd():Ll,Z=options_retrievalURI(s),ee=resolve(Y,Z);let ie;U.has(o)?ie=U.get(o):(ie=Ib.refract(o),ie.classes.push(\"result\"),U.set(o,ie));const ae=new Cu([ie]),ce=es_compile(w),le=\"\"===ce?\"\":`#${ce}`,pe=apidom_evaluate(ie,ce),de=new gw({uri:ee,value:ae}),fe=new yw({refs:[de]});\"\"!==ce&&(fe.rootRef=void 0);const ye=[new Set([pe])],be=[],_e=await(async(s,o={})=>{const i=util_merge(bw,o);return dereferenceApiDOM(s,i)})(pe,{resolve:{baseURI:`${ee}${le}`,resolvers:[new qw({timeout:i||1e4,redirects:a||10})],resolverOpts:{swaggerHTTPClientConfig:{requestInterceptor:u,responseInterceptor:_}},strategies:[new Mw]},parse:{mediaType:mw.latest(),parsers:[new zw({allowEmpty:!1,sourceMap:!1}),new Ww({allowEmpty:!1,sourceMap:!1}),new Vw({allowEmpty:!1,sourceMap:!1}),new Uw({allowEmpty:!1,sourceMap:!1}),new Tw({allowEmpty:!1,sourceMap:!1})]},dereference:{maxDepth:100,strategies:[new Ex({allowMetaPatches:x,useCircularStructures:C,parameterMacro:L,modelPropertyMacro:B,mode:$,ancestors:ye})],refSet:fe,dereferenceOpts:{errors:be},immutable:!1,circular:C?\"ignore\":\"replace\",circularReplacer:C?bw.dereference.circularReplacer:circularReplacer}}),Se=((s,o,i)=>new gp({element:i}).transclude(s,o))(pe,_e,ie),we=j?Se:z.normalize(Se);return{spec:serializers_value(we),errors:be}}catch(s){if(s instanceof Lp)return{spec:o,errors:[]};throw s}};resolveOpenAPI31Strategy.cache=new WeakMap;const wx=resolveOpenAPI31Strategy;function _clone(s,o,i){if(i||(i=new xx),function _isPrimitive(s){var o=typeof s;return null==s||\"object\"!=o&&\"function\"!=o}(s))return s;var a=function copy(a){var u=i.get(s);if(u)return u;for(var _ in i.set(s,a),s)Object.prototype.hasOwnProperty.call(s,_)&&(a[_]=o?_clone(s[_],!0,i):s[_]);return a};switch(ra(s)){case\"Object\":return a(Object.create(Object.getPrototypeOf(s)));case\"Array\":return a(Array(s.length));case\"Date\":return new Date(s.valueOf());case\"RegExp\":return _cloneRegExp(s);case\"Int8Array\":case\"Uint8Array\":case\"Uint8ClampedArray\":case\"Int16Array\":case\"Uint16Array\":case\"Int32Array\":case\"Uint32Array\":case\"Float32Array\":case\"Float64Array\":case\"BigInt64Array\":case\"BigUint64Array\":return s.slice();default:return s}}var xx=function(){function _ObjectMap(){this.map={},this.length=0}return _ObjectMap.prototype.set=function(s,o){var i=this.hash(s),a=this.map[i];a||(this.map[i]=a=[]),a.push([s,o]),this.length+=1},_ObjectMap.prototype.hash=function(s){var o=[];for(var i in s)o.push(Object.prototype.toString.call(s[i]));return o.join()},_ObjectMap.prototype.get=function(s){if(this.length<=180)for(var o in this.map)for(var i=this.map[o],a=0;a<i.length;a+=1){if((_=i[a])[0]===s)return _[1]}else{var u=this.hash(s);if(i=this.map[u])for(a=0;a<i.length;a+=1){var _;if((_=i[a])[0]===s)return _[1]}}},_ObjectMap}(),kx=function(){function XReduceBy(s,o,i,a){this.valueFn=s,this.valueAcc=o,this.keyFn=i,this.xf=a,this.inputs={}}return XReduceBy.prototype[\"@@transducer/init\"]=_xfBase_init,XReduceBy.prototype[\"@@transducer/result\"]=function(s){var o;for(o in this.inputs)if(_has(o,this.inputs)&&(s=this.xf[\"@@transducer/step\"](s,this.inputs[o]))[\"@@transducer/reduced\"]){s=s[\"@@transducer/value\"];break}return this.inputs=null,this.xf[\"@@transducer/result\"](s)},XReduceBy.prototype[\"@@transducer/step\"]=function(s,o){var i=this.keyFn(o);return this.inputs[i]=this.inputs[i]||[i,_clone(this.valueAcc,!1)],this.inputs[i][1]=this.valueFn(this.inputs[i][1],o),s},XReduceBy}();function _xreduceBy(s,o,i){return function(a){return new kx(s,o,i,a)}}var Ox=_curryN(4,[],_dispatchable([],_xreduceBy,(function reduceBy(s,o,i,a){var u=_xwrap((function(a,u){var _=i(u),w=s(_has(_,a)?a[_]:_clone(o,!1),u);return w&&w[\"@@transducer/reduced\"]?_reduced(a):(a[_]=w,a)}));return wa(u,{},a)})));const Cx=_curry2(_checkForMethod(\"groupBy\",Ox((function(s,o){return s.push(o),s}),[])));const Ax=class NormalizeStorage{internalStore;constructor(s,o,i){this.storageElement=s,this.storageField=o,this.storageSubField=i}get store(){if(!this.internalStore){let s=this.storageElement.get(this.storageField);Mu(s)||(s=new Su.Sh,this.storageElement.set(this.storageField,s));let o=s.get(this.storageSubField);Ru(o)||(o=new Su.wE,s.set(this.storageSubField,o)),this.internalStore=o}return this.internalStore}append(s){this.includes(s)||this.store.push(s)}includes(s){return this.store.includes(s)}},removeSpaces=s=>s.replace(/\\s/g,\"\"),normalize_operation_ids_replaceSpecialCharsWithUnderscore=s=>s.replace(/\\W/gi,\"_\"),normalizeOperationId=(s,o,i)=>{const a=removeSpaces(s);return a.length>0?normalize_operation_ids_replaceSpecialCharsWithUnderscore(a):((s,o)=>`${normalize_operation_ids_replaceSpecialCharsWithUnderscore(removeSpaces(o.toLowerCase()))}${normalize_operation_ids_replaceSpecialCharsWithUnderscore(removeSpaces(s))}`)(o,i)},normalize_operation_ids=({storageField:s=\"x-normalized\",operationIdNormalizer:o=normalizeOperationId}={})=>i=>{const{predicates:a,ancestorLineageToJSONPointer:u,namespace:_}=i,w=[],x=[],C=[];let j;return{visitor:{OpenApi3_1Element:{enter(o){j=new Ax(o,s,\"operation-ids\")},leave(){const s=Cx((s=>serializers_value(s.operationId)),x);Object.entries(s).forEach((([s,o])=>{Array.isArray(o)&&(o.length<=1||o.forEach(((o,i)=>{const a=`${s}${i+1}`;o.operationId=new _.elements.String(a)})))})),C.forEach((s=>{if(void 0===s.operationId)return;const o=String(serializers_value(s.operationId)),i=x.find((s=>serializers_value(s.meta.get(\"originalOperationId\"))===o));void 0!==i&&(s.operationId=cloneDeep.safe(i.operationId),s.meta.set(\"originalOperationId\",o),s.set(\"__originalOperationId\",o))})),x.length=0,C.length=0,j=void 0}},PathItemElement:{enter(s){const o=Na(\"path\",serializers_value(s.meta.get(\"path\")));w.push(o)},leave(){w.pop()}},OperationElement:{enter(s,i,a,C,L){if(void 0===s.operationId)return;const B=u([...L,a,s]);if(j.includes(B))return;const $=String(serializers_value(s.operationId)),V=Ba(w),U=Na(\"method\",serializers_value(s.meta.get(\"http-method\"))),z=o($,V,U);$!==z&&(s.operationId=new _.elements.String(z),s.set(\"__originalOperationId\",$),s.meta.set(\"originalOperationId\",$),x.push(s),j.append(B))}},LinkElement:{leave(s){a.isLinkElement(s)&&void 0!==s.operationId&&C.push(s)}}}}};var jx=function(){function XUniqWith(s,o){this.xf=o,this.pred=s,this.items=[]}return XUniqWith.prototype[\"@@transducer/init\"]=_xfBase_init,XUniqWith.prototype[\"@@transducer/result\"]=_xfBase_result,XUniqWith.prototype[\"@@transducer/step\"]=function(s,o){return _includesWith(this.pred,o,this.items)?s:(this.items.push(o),this.xf[\"@@transducer/step\"](s,o))},XUniqWith}();function _xuniqWith(s){return function(o){return new jx(s,o)}}var Ix=_curry2(_dispatchable([],_xuniqWith,(function(s,o){for(var i,a=0,u=o.length,_=[];a<u;)_includesWith(s,i=o[a],_)||(_[_.length]=i),a+=1;return _})));const Px=Ix,normalize_parameters=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o,parameterEquals=(s,o)=>!!i.isParameterElement(s)&&(!!i.isParameterElement(o)&&(!!i.isStringElement(s.name)&&(!!i.isStringElement(s.in)&&(!!i.isStringElement(o.name)&&(!!i.isStringElement(o.in)&&(serializers_value(s.name)===serializers_value(o.name)&&serializers_value(s.in)===serializers_value(o.in))))))),u=[];let _;return{visitor:{OpenApi3_1Element:{enter(o){_=new Ax(o,s,\"parameters\")},leave(){_=void 0}},PathItemElement:{enter(s,o,a,_,w){if(w.some(i.isComponentsElement))return;const{parameters:x}=s;i.isArrayElement(x)?u.push([...x.content]):u.push([])},leave(){u.pop()}},OperationElement:{leave(s,o,i,w,x){const C=Ba(u);if(!Array.isArray(C)||0===C.length)return;const j=a([...x,i,s]);if(_.includes(j))return;const L=Xw([],[\"parameters\",\"content\"],s),B=Px(parameterEquals,[...L,...C]);s.parameters=new Sv(B),_.append(j)}}}}},normalize_security_requirements=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u,_;return{visitor:{OpenApi3_1Element:{enter(o){_=new Ax(o,s,\"security-requirements\"),i.isArrayElement(o.security)&&(u=o.security)},leave(){_=void 0,u=void 0}},OperationElement:{leave(s,o,w,x,C){if(C.some(i.isComponentsElement))return;const j=a([...C,w,s]);if(_.includes(j))return;var L;void 0===s.security&&void 0!==u&&(s.security=new Cv(null===(L=u)||void 0===L?void 0:L.content),_.append(j))}}}}},normalize_parameter_examples=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u;return{visitor:{OpenApi3_1Element:{enter(o){u=new Ax(o,s,\"parameter-examples\")},leave(){u=void 0}},ParameterElement:{leave(s,o,_,w,x){var C,j;if(x.some(i.isComponentsElement))return;if(void 0===s.schema||!i.isSchemaElement(s.schema))return;if(void 0===(null===(C=s.schema)||void 0===C?void 0:C.example)&&void 0===(null===(j=s.schema)||void 0===j?void 0:j.examples))return;const L=a([...x,_,s]);if(!u.includes(L)){if(void 0!==s.examples&&i.isObjectElement(s.examples)){const o=s.examples.map((s=>cloneDeep.safe(s.value)));return void 0!==s.schema.examples&&(s.schema.set(\"examples\",o),u.append(L)),void(void 0!==s.schema.example&&(s.schema.set(\"example\",o[0]),u.append(L)))}void 0!==s.example&&(void 0!==s.schema.examples&&(s.schema.set(\"examples\",[cloneDeep(s.example)]),u.append(L)),void 0!==s.schema.example&&(s.schema.set(\"example\",cloneDeep(s.example)),u.append(L)))}}}}}},normalize_header_examples=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u;return{visitor:{OpenApi3_1Element:{enter(o){u=new Ax(o,s,\"header-examples\")},leave(){u=void 0}},HeaderElement:{leave(s,o,_,w,x){var C,j;if(x.some(i.isComponentsElement))return;if(void 0===s.schema||!i.isSchemaElement(s.schema))return;if(void 0===(null===(C=s.schema)||void 0===C?void 0:C.example)&&void 0===(null===(j=s.schema)||void 0===j?void 0:j.examples))return;const L=a([...x,_,s]);if(!u.includes(L)){if(void 0!==s.examples&&i.isObjectElement(s.examples)){const o=s.examples.map((s=>cloneDeep.safe(s.value)));return void 0!==s.schema.examples&&(s.schema.set(\"examples\",o),u.append(L)),void(void 0!==s.schema.example&&(s.schema.set(\"example\",o[0]),u.append(L)))}void 0!==s.example&&(void 0!==s.schema.examples&&(s.schema.set(\"examples\",[cloneDeep(s.example)]),u.append(L)),void 0!==s.schema.example&&(s.schema.set(\"example\",cloneDeep(s.example)),u.append(L)))}}}}}},openapi_3_1_apidom_normalize=s=>{if(!Mu(s))return s;const o=[normalize_operation_ids({operationIdNormalizer:(s,o,i)=>opId({operationId:s},o,i,{v2OperationIdCompatibilityMode:!1})}),normalize_parameters(),normalize_security_requirements(),normalize_parameter_examples(),normalize_header_examples()];return dispatchPluginsSync(s,o,{toolboxCreator:apidom_ns_openapi_3_1_src_refractor_toolbox,visitorOptions:{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}})},Tx={name:\"openapi-3-1-apidom\",match:s=>isOpenAPI31(s),normalize(s){if(!ju(s)&&fu(s)&&!s.$$normalized){const i=(o=openapi_3_1_apidom_normalize,s=>{const i=Ib.refract(s);i.classes.push(\"result\");const a=o(i),u=serializers_value(a);return wx.cache.set(u,a),serializers_value(a)})(s);return i.$$normalized=!0,i}var o;return ju(s)?openapi_3_1_apidom_normalize(s):s},resolve:async s=>wx(s)},Nx=Tx,makeResolve=s=>async o=>(async s=>{const{spec:o,requestInterceptor:i,responseInterceptor:a}=s,u=options_retrievalURI(s),_=options_httpClient(s),w=o||await makeFetchJSON(_,{requestInterceptor:i,responseInterceptor:a})(u),x={...s,spec:w};return s.strategies.find((s=>s.match(w))).resolve(x)})({...s,...o}),Mx=makeResolve({strategies:[_u,vu,gu]});const server_url_template=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-url-template\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},callbacks_server_variable=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-variable\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},server_variable_name=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-variable-name\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},callbacks_literals=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"literals\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},Rx=new function server_url_templating_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"server-url-template\",lower:\"server-url-template\",index:0,isBkr:!1},this.rules[1]={name:\"server-variable\",lower:\"server-variable\",index:1,isBkr:!1},this.rules[2]={name:\"server-variable-name\",lower:\"server-variable-name\",index:2,isBkr:!1},this.rules[3]={name:\"literals\",lower:\"literals\",index:3,isBkr:!1},this.rules[4]={name:\"DIGIT\",lower:\"digit\",index:4,isBkr:!1},this.rules[5]={name:\"HEXDIG\",lower:\"hexdig\",index:5,isBkr:!1},this.rules[6]={name:\"pct-encoded\",lower:\"pct-encoded\",index:6,isBkr:!1},this.rules[7]={name:\"ucschar\",lower:\"ucschar\",index:7,isBkr:!1},this.rules[8]={name:\"iprivate\",lower:\"iprivate\",index:8,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:3,min:1,max:1/0},this.rules[0].opcodes[1]={type:1,children:[2,3]},this.rules[0].opcodes[2]={type:4,index:3},this.rules[0].opcodes[3]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:2,children:[1,2,3]},this.rules[1].opcodes[1]={type:7,string:[123]},this.rules[1].opcodes[2]={type:4,index:2},this.rules[1].opcodes[3]={type:7,string:[125]},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:3,min:1,max:1/0},this.rules[2].opcodes[1]={type:1,children:[2,3,4]},this.rules[2].opcodes[2]={type:5,min:0,max:122},this.rules[2].opcodes[3]={type:6,string:[124]},this.rules[2].opcodes[4]={type:5,min:126,max:1114111},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:3,min:1,max:1/0},this.rules[3].opcodes[1]={type:1,children:[2,3,4,5,6,7,8,9,10,11,12,13]},this.rules[3].opcodes[2]={type:6,string:[33]},this.rules[3].opcodes[3]={type:5,min:35,max:36},this.rules[3].opcodes[4]={type:5,min:38,max:59},this.rules[3].opcodes[5]={type:6,string:[61]},this.rules[3].opcodes[6]={type:5,min:63,max:91},this.rules[3].opcodes[7]={type:6,string:[93]},this.rules[3].opcodes[8]={type:6,string:[95]},this.rules[3].opcodes[9]={type:5,min:97,max:122},this.rules[3].opcodes[10]={type:6,string:[126]},this.rules[3].opcodes[11]={type:4,index:7},this.rules[3].opcodes[12]={type:4,index:8},this.rules[3].opcodes[13]={type:4,index:6},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:5,min:48,max:57},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,2,3,4,5,6,7]},this.rules[5].opcodes[1]={type:4,index:4},this.rules[5].opcodes[2]={type:7,string:[97]},this.rules[5].opcodes[3]={type:7,string:[98]},this.rules[5].opcodes[4]={type:7,string:[99]},this.rules[5].opcodes[5]={type:7,string:[100]},this.rules[5].opcodes[6]={type:7,string:[101]},this.rules[5].opcodes[7]={type:7,string:[102]},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:2,children:[1,2,3]},this.rules[6].opcodes[1]={type:7,string:[37]},this.rules[6].opcodes[2]={type:4,index:5},this.rules[6].opcodes[3]={type:4,index:5},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]},this.rules[7].opcodes[1]={type:5,min:160,max:55295},this.rules[7].opcodes[2]={type:5,min:63744,max:64975},this.rules[7].opcodes[3]={type:5,min:65008,max:65519},this.rules[7].opcodes[4]={type:5,min:65536,max:131069},this.rules[7].opcodes[5]={type:5,min:131072,max:196605},this.rules[7].opcodes[6]={type:5,min:196608,max:262141},this.rules[7].opcodes[7]={type:5,min:262144,max:327677},this.rules[7].opcodes[8]={type:5,min:327680,max:393213},this.rules[7].opcodes[9]={type:5,min:393216,max:458749},this.rules[7].opcodes[10]={type:5,min:458752,max:524285},this.rules[7].opcodes[11]={type:5,min:524288,max:589821},this.rules[7].opcodes[12]={type:5,min:589824,max:655357},this.rules[7].opcodes[13]={type:5,min:655360,max:720893},this.rules[7].opcodes[14]={type:5,min:720896,max:786429},this.rules[7].opcodes[15]={type:5,min:786432,max:851965},this.rules[7].opcodes[16]={type:5,min:851968,max:917501},this.rules[7].opcodes[17]={type:5,min:921600,max:983037},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:1,children:[1,2,3]},this.rules[8].opcodes[1]={type:5,min:57344,max:63743},this.rules[8].opcodes[2]={type:5,min:983040,max:1048573},this.rules[8].opcodes[3]={type:5,min:1048576,max:1114109},this.toString=function toString(){let s=\"\";return s+=\"; OpenAPI Server URL templating ABNF syntax\\n\",s+=\"server-url-template    = 1*( literals / server-variable ) ; variant of https://www.rfc-editor.org/rfc/rfc6570#section-2\\n\",s+='server-variable        = \"{\" server-variable-name \"}\"\\n',s+=\"server-variable-name   = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\",s+=\"\\n\",s+=\"; https://www.rfc-editor.org/rfc/rfc6570#section-2.1\\n\",s+=\"; https://www.rfc-editor.org/errata/eid6937\\n\",s+=\"literals               = 1*( %x21 / %x23-24 / %x26-3B / %x3D / %x3F-5B\\n\",s+=\"                       / %x5D / %x5F / %x61-7A / %x7E / ucschar / iprivate\\n\",s+=\"                       / pct-encoded)\\n\",s+=\"                            ; any Unicode character except: CTL, SP,\\n\",s+='                            ;  DQUOTE, \"%\" (aside from pct-encoded),\\n',s+='                            ;  \"<\", \">\", \"\\\\\", \"^\", \"`\", \"{\", \"|\", \"}\"\\n',s+=\"\\n\",s+=\"; https://www.rfc-editor.org/rfc/rfc6570#section-1.5\\n\",s+=\"DIGIT          =  %x30-39             ; 0-9\\n\",s+='HEXDIG         =  DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" ; case-insensitive\\n',s+=\"\\n\",s+='pct-encoded    =  \"%\" HEXDIG HEXDIG\\n',s+=\"\\n\",s+=\"ucschar        =  %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\\n\",s+=\"               /  %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\\n\",s+=\"               /  %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\\n\",s+=\"               /  %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\\n\",s+=\"               /  %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\\n\",s+=\"               /  %xD0000-DFFFD / %xE1000-EFFFD\\n\",s+=\"\\n\",s+=\"iprivate       =  %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD\\n\",'; OpenAPI Server URL templating ABNF syntax\\nserver-url-template    = 1*( literals / server-variable ) ; variant of https://www.rfc-editor.org/rfc/rfc6570#section-2\\nserver-variable        = \"{\" server-variable-name \"}\"\\nserver-variable-name   = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\\n; https://www.rfc-editor.org/rfc/rfc6570#section-2.1\\n; https://www.rfc-editor.org/errata/eid6937\\nliterals               = 1*( %x21 / %x23-24 / %x26-3B / %x3D / %x3F-5B\\n                       / %x5D / %x5F / %x61-7A / %x7E / ucschar / iprivate\\n                       / pct-encoded)\\n                            ; any Unicode character except: CTL, SP,\\n                            ;  DQUOTE, \"%\" (aside from pct-encoded),\\n                            ;  \"<\", \">\", \"\\\\\", \"^\", \"`\", \"{\", \"|\", \"}\"\\n\\n; https://www.rfc-editor.org/rfc/rfc6570#section-1.5\\nDIGIT          =  %x30-39             ; 0-9\\nHEXDIG         =  DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" ; case-insensitive\\n\\npct-encoded    =  \"%\" HEXDIG HEXDIG\\n\\nucschar        =  %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\\n               /  %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\\n               /  %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\\n               /  %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\\n               /  %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\\n               /  %xD0000-DFFFD / %xE1000-EFFFD\\n\\niprivate       =  %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD\\n'}},openapi_server_url_templating_es_parse=s=>{const o=new yp;o.ast=new vp,o.ast.callbacks[\"server-url-template\"]=server_url_template,o.ast.callbacks[\"server-variable\"]=callbacks_server_variable,o.ast.callbacks[\"server-variable-name\"]=server_variable_name,o.ast.callbacks.literals=callbacks_literals;return{result:o.parse(Rx,\"server-url-template\",s),ast:o.ast}},openapi_server_url_templating_es_test=(s,{strict:o=!1}={})=>{try{const i=openapi_server_url_templating_es_parse(s);if(!i.result.success)return!1;const a=[];i.ast.translate(a);const u=a.some((([s])=>\"server-variable\"===s));if(!o&&!u)try{return new URL(s,\"https://vladimirgorej.com\"),!0}catch{return!1}return!o||u}catch{return!1}},encodeServerVariable=s=>(s=>{try{return\"string\"==typeof s&&decodeURIComponent(s)!==s}catch{return!1}})(s)?s:encodeURIComponent(s).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\"),Dx=[\"literals\",\"server-variable-name\"],es_substitute=(s,o,i={})=>{const a={...{encoder:encodeServerVariable},...i},u=openapi_server_url_templating_es_parse(s);if(!u.result.success)return s;const _=[];u.ast.translate(_);const w=_.filter((([s])=>Dx.includes(s))).map((([s,i])=>\"server-variable-name\"===s?Object.hasOwn(o,i)?a.encoder(o[i],i):`{${i}}`:i));return w.join(\"\")};function path_templating_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"path-template\",lower:\"path-template\",index:0,isBkr:!1},this.rules[1]={name:\"path-segment\",lower:\"path-segment\",index:1,isBkr:!1},this.rules[2]={name:\"slash\",lower:\"slash\",index:2,isBkr:!1},this.rules[3]={name:\"path-literal\",lower:\"path-literal\",index:3,isBkr:!1},this.rules[4]={name:\"template-expression\",lower:\"template-expression\",index:4,isBkr:!1},this.rules[5]={name:\"template-expression-param-name\",lower:\"template-expression-param-name\",index:5,isBkr:!1},this.rules[6]={name:\"pchar\",lower:\"pchar\",index:6,isBkr:!1},this.rules[7]={name:\"unreserved\",lower:\"unreserved\",index:7,isBkr:!1},this.rules[8]={name:\"pct-encoded\",lower:\"pct-encoded\",index:8,isBkr:!1},this.rules[9]={name:\"sub-delims\",lower:\"sub-delims\",index:9,isBkr:!1},this.rules[10]={name:\"ALPHA\",lower:\"alpha\",index:10,isBkr:!1},this.rules[11]={name:\"DIGIT\",lower:\"digit\",index:11,isBkr:!1},this.rules[12]={name:\"HEXDIG\",lower:\"hexdig\",index:12,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:2,children:[1,2,6]},this.rules[0].opcodes[1]={type:4,index:2},this.rules[0].opcodes[2]={type:3,min:0,max:1/0},this.rules[0].opcodes[3]={type:2,children:[4,5]},this.rules[0].opcodes[4]={type:4,index:1},this.rules[0].opcodes[5]={type:4,index:2},this.rules[0].opcodes[6]={type:3,min:0,max:1},this.rules[0].opcodes[7]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:3,min:1,max:1/0},this.rules[1].opcodes[1]={type:1,children:[2,3]},this.rules[1].opcodes[2]={type:4,index:3},this.rules[1].opcodes[3]={type:4,index:4},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:7,string:[47]},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:3,min:1,max:1/0},this.rules[3].opcodes[1]={type:4,index:6},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:2,children:[1,2,3]},this.rules[4].opcodes[1]={type:7,string:[123]},this.rules[4].opcodes[2]={type:4,index:5},this.rules[4].opcodes[3]={type:7,string:[125]},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:3,min:1,max:1/0},this.rules[5].opcodes[1]={type:1,children:[2,3,4]},this.rules[5].opcodes[2]={type:5,min:0,max:122},this.rules[5].opcodes[3]={type:6,string:[124]},this.rules[5].opcodes[4]={type:5,min:126,max:1114111},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:1,children:[1,2,3,4,5]},this.rules[6].opcodes[1]={type:4,index:7},this.rules[6].opcodes[2]={type:4,index:8},this.rules[6].opcodes[3]={type:4,index:9},this.rules[6].opcodes[4]={type:7,string:[58]},this.rules[6].opcodes[5]={type:7,string:[64]},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2,3,4,5,6]},this.rules[7].opcodes[1]={type:4,index:10},this.rules[7].opcodes[2]={type:4,index:11},this.rules[7].opcodes[3]={type:7,string:[45]},this.rules[7].opcodes[4]={type:7,string:[46]},this.rules[7].opcodes[5]={type:7,string:[95]},this.rules[7].opcodes[6]={type:7,string:[126]},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:2,children:[1,2,3]},this.rules[8].opcodes[1]={type:7,string:[37]},this.rules[8].opcodes[2]={type:4,index:12},this.rules[8].opcodes[3]={type:4,index:12},this.rules[9].opcodes=[],this.rules[9].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11]},this.rules[9].opcodes[1]={type:7,string:[33]},this.rules[9].opcodes[2]={type:7,string:[36]},this.rules[9].opcodes[3]={type:7,string:[38]},this.rules[9].opcodes[4]={type:7,string:[39]},this.rules[9].opcodes[5]={type:7,string:[40]},this.rules[9].opcodes[6]={type:7,string:[41]},this.rules[9].opcodes[7]={type:7,string:[42]},this.rules[9].opcodes[8]={type:7,string:[43]},this.rules[9].opcodes[9]={type:7,string:[44]},this.rules[9].opcodes[10]={type:7,string:[59]},this.rules[9].opcodes[11]={type:7,string:[61]},this.rules[10].opcodes=[],this.rules[10].opcodes[0]={type:1,children:[1,2]},this.rules[10].opcodes[1]={type:5,min:65,max:90},this.rules[10].opcodes[2]={type:5,min:97,max:122},this.rules[11].opcodes=[],this.rules[11].opcodes[0]={type:5,min:48,max:57},this.rules[12].opcodes=[],this.rules[12].opcodes[0]={type:1,children:[1,2,3,4,5,6,7]},this.rules[12].opcodes[1]={type:4,index:11},this.rules[12].opcodes[2]={type:7,string:[97]},this.rules[12].opcodes[3]={type:7,string:[98]},this.rules[12].opcodes[4]={type:7,string:[99]},this.rules[12].opcodes[5]={type:7,string:[100]},this.rules[12].opcodes[6]={type:7,string:[101]},this.rules[12].opcodes[7]={type:7,string:[102]},this.toString=function toString(){let s=\"\";return s+=\"; OpenAPI Path Templating ABNF syntax\\n\",s+=\"; variant of https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\n\",s+=\"path-template                  = slash *( path-segment slash ) [ path-segment ]\\n\",s+=\"path-segment                   = 1*( path-literal / template-expression )\\n\",s+='slash                          = \"/\"\\n',s+=\"path-literal                   = 1*pchar\\n\",s+='template-expression            = \"{\" template-expression-param-name \"}\"\\n',s+=\"template-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\n\",s+='pchar               = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\\n',s+='unreserved          = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.3\\n\",s+='pct-encoded         = \"%\" HEXDIG HEXDIG\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.1\\n\",s+='sub-delims          = \"!\" / \"$\" / \"&\" / \"\\'\" / \"(\" / \")\"\\n',s+='                    / \"*\" / \"+\" / \",\" / \";\" / \"=\"\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.2\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\n\",s+=\"ALPHA               = %x41-5A / %x61-7A   ; A-Z / a-z\\n\",s+=\"DIGIT               = %x30-39            ; 0-9\\n\",s+='HEXDIG              = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\\n','; OpenAPI Path Templating ABNF syntax\\n; variant of https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\npath-template                  = slash *( path-segment slash ) [ path-segment ]\\npath-segment                   = 1*( path-literal / template-expression )\\nslash                          = \"/\"\\npath-literal                   = 1*pchar\\ntemplate-expression            = \"{\" template-expression-param-name \"}\"\\ntemplate-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\\n; https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\npchar               = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\\nunreserved          = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.3\\npct-encoded         = \"%\" HEXDIG HEXDIG\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.1\\nsub-delims          = \"!\" / \"$\" / \"&\" / \"\\'\" / \"(\" / \")\"\\n                    / \"*\" / \"+\" / \",\" / \";\" / \"=\"\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.2\\n\\n; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\nALPHA               = %x41-5A / %x61-7A   ; A-Z / a-z\\nDIGIT               = %x30-39            ; 0-9\\nHEXDIG              = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\\n'}}const callbacks_slash=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"slash\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),path_template=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"path-template\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},path_literal=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"path-literal\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),template_expression=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"template-expression\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),template_expression_param_name=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"template-expression-param-name\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),Lx=new path_templating_grammar,openapi_path_templating_es_parse=s=>{const o=new yp;o.ast=new vp,o.ast.callbacks[\"path-template\"]=path_template,o.ast.callbacks.slash=callbacks_slash,o.ast.callbacks[\"path-literal\"]=path_literal,o.ast.callbacks[\"template-expression\"]=template_expression,o.ast.callbacks[\"template-expression-param-name\"]=template_expression_param_name;return{result:o.parse(Lx,\"path-template\",s),ast:o.ast}},encodePathComponent=s=>(s=>{try{return\"string\"==typeof s&&decodeURIComponent(s)!==s}catch{return!1}})(s)?s:encodeURIComponent(s).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\"),Fx=[\"slash\",\"path-literal\",\"template-expression-param-name\"],es_resolve=(s,o,i={})=>{const a={...{encoder:encodePathComponent},...i},u=openapi_path_templating_es_parse(s);if(!u.result.success)return s;const _=[];u.ast.translate(_);const w=_.filter((([s])=>Fx.includes(s))).map((([s,i])=>\"template-expression-param-name\"===s?Object.prototype.hasOwnProperty.call(o,i)?a.encoder(o[i],i):`{${i}}`:i));return w.join(\"\")},Bx=(new path_templating_grammar,new yp,{body:function bodyBuilder({req:s,value:o}){void 0!==o&&(s.body=o)},header:function headerBuilder({req:s,parameter:o,value:i}){s.headers=s.headers||{},void 0!==i&&(s.headers[o.name]=i)},query:function queryBuilder({req:s,value:o,parameter:i}){s.query=s.query||{},!1===o&&\"boolean\"===i.type&&(o=\"false\");0===o&&[\"number\",\"integer\"].indexOf(i.type)>-1&&(o=\"0\");if(o)s.query[i.name]={collectionFormat:i.collectionFormat,value:o};else if(i.allowEmptyValue&&void 0!==o){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}},path:function pathBuilder({req:s,value:o,parameter:i,baseURL:a}){if(void 0!==o){const u=s.url.replace(a,\"\"),_=es_resolve(u,{[i.name]:o});s.url=a+_}},formData:function formDataBuilder({req:s,value:o,parameter:i}){!1===o&&\"boolean\"===i.type&&(o=\"false\");0===o&&[\"number\",\"integer\"].indexOf(i.type)>-1&&(o=\"0\");if(o)s.form=s.form||{},s.form[i.name]={collectionFormat:i.collectionFormat,value:o};else if(i.allowEmptyValue&&void 0!==o){s.form=s.form||{};const o=i.name;s.form[o]=s.form[o]||{},s.form[o].allowEmptyValue=!0}}});function serialize(s,o){return o.includes(\"application/json\")?\"string\"==typeof s?s:(Array.isArray(s)&&(s=s.map((s=>{try{return JSON.parse(s)}catch(o){return s}}))),JSON.stringify(s)):String(s)}function grammar_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"lenient-cookie-string\",lower:\"lenient-cookie-string\",index:0,isBkr:!1},this.rules[1]={name:\"lenient-cookie-entry\",lower:\"lenient-cookie-entry\",index:1,isBkr:!1},this.rules[2]={name:\"lenient-cookie-pair\",lower:\"lenient-cookie-pair\",index:2,isBkr:!1},this.rules[3]={name:\"lenient-cookie-pair-invalid\",lower:\"lenient-cookie-pair-invalid\",index:3,isBkr:!1},this.rules[4]={name:\"lenient-cookie-name\",lower:\"lenient-cookie-name\",index:4,isBkr:!1},this.rules[5]={name:\"lenient-cookie-value\",lower:\"lenient-cookie-value\",index:5,isBkr:!1},this.rules[6]={name:\"lenient-quoted-value\",lower:\"lenient-quoted-value\",index:6,isBkr:!1},this.rules[7]={name:\"lenient-quoted-char\",lower:\"lenient-quoted-char\",index:7,isBkr:!1},this.rules[8]={name:\"lenient-cookie-octet\",lower:\"lenient-cookie-octet\",index:8,isBkr:!1},this.rules[9]={name:\"cookie-string\",lower:\"cookie-string\",index:9,isBkr:!1},this.rules[10]={name:\"cookie-pair\",lower:\"cookie-pair\",index:10,isBkr:!1},this.rules[11]={name:\"cookie-name\",lower:\"cookie-name\",index:11,isBkr:!1},this.rules[12]={name:\"cookie-value\",lower:\"cookie-value\",index:12,isBkr:!1},this.rules[13]={name:\"cookie-octet\",lower:\"cookie-octet\",index:13,isBkr:!1},this.rules[14]={name:\"OWS\",lower:\"ows\",index:14,isBkr:!1},this.rules[15]={name:\"token\",lower:\"token\",index:15,isBkr:!1},this.rules[16]={name:\"tchar\",lower:\"tchar\",index:16,isBkr:!1},this.rules[17]={name:\"CHAR\",lower:\"char\",index:17,isBkr:!1},this.rules[18]={name:\"CTL\",lower:\"ctl\",index:18,isBkr:!1},this.rules[19]={name:\"separators\",lower:\"separators\",index:19,isBkr:!1},this.rules[20]={name:\"SP\",lower:\"sp\",index:20,isBkr:!1},this.rules[21]={name:\"HT\",lower:\"ht\",index:21,isBkr:!1},this.rules[22]={name:\"ALPHA\",lower:\"alpha\",index:22,isBkr:!1},this.rules[23]={name:\"DIGIT\",lower:\"digit\",index:23,isBkr:!1},this.rules[24]={name:\"DQUOTE\",lower:\"dquote\",index:24,isBkr:!1},this.rules[25]={name:\"WSP\",lower:\"wsp\",index:25,isBkr:!1},this.rules[26]={name:\"HTAB\",lower:\"htab\",index:26,isBkr:!1},this.rules[27]={name:\"CRLF\",lower:\"crlf\",index:27,isBkr:!1},this.rules[28]={name:\"CR\",lower:\"cr\",index:28,isBkr:!1},this.rules[29]={name:\"LF\",lower:\"lf\",index:29,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:2,children:[1,2]},this.rules[0].opcodes[1]={type:4,index:1},this.rules[0].opcodes[2]={type:3,min:0,max:1/0},this.rules[0].opcodes[3]={type:2,children:[4,5,6]},this.rules[0].opcodes[4]={type:7,string:[59]},this.rules[0].opcodes[5]={type:4,index:14},this.rules[0].opcodes[6]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:1,children:[1,2]},this.rules[1].opcodes[1]={type:4,index:2},this.rules[1].opcodes[2]={type:4,index:3},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:2,children:[1,2,3,4,5,6,7]},this.rules[2].opcodes[1]={type:4,index:14},this.rules[2].opcodes[2]={type:4,index:4},this.rules[2].opcodes[3]={type:4,index:14},this.rules[2].opcodes[4]={type:7,string:[61]},this.rules[2].opcodes[5]={type:4,index:14},this.rules[2].opcodes[6]={type:4,index:5},this.rules[2].opcodes[7]={type:4,index:14},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:2,children:[1,2,4]},this.rules[3].opcodes[1]={type:4,index:14},this.rules[3].opcodes[2]={type:3,min:1,max:1/0},this.rules[3].opcodes[3]={type:4,index:16},this.rules[3].opcodes[4]={type:4,index:14},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:3,min:1,max:1/0},this.rules[4].opcodes[1]={type:1,children:[2,3,4]},this.rules[4].opcodes[2]={type:5,min:33,max:58},this.rules[4].opcodes[3]={type:6,string:[60]},this.rules[4].opcodes[4]={type:5,min:62,max:126},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,6]},this.rules[5].opcodes[1]={type:2,children:[2,3]},this.rules[5].opcodes[2]={type:4,index:6},this.rules[5].opcodes[3]={type:3,min:0,max:1},this.rules[5].opcodes[4]={type:3,min:0,max:1/0},this.rules[5].opcodes[5]={type:4,index:8},this.rules[5].opcodes[6]={type:3,min:0,max:1/0},this.rules[5].opcodes[7]={type:4,index:8},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:2,children:[1,2,4]},this.rules[6].opcodes[1]={type:4,index:24},this.rules[6].opcodes[2]={type:3,min:0,max:1/0},this.rules[6].opcodes[3]={type:4,index:7},this.rules[6].opcodes[4]={type:4,index:24},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2]},this.rules[7].opcodes[1]={type:5,min:32,max:33},this.rules[7].opcodes[2]={type:5,min:35,max:126},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:1,children:[1,2,3]},this.rules[8].opcodes[1]={type:5,min:33,max:43},this.rules[8].opcodes[2]={type:5,min:45,max:58},this.rules[8].opcodes[3]={type:5,min:60,max:126},this.rules[9].opcodes=[],this.rules[9].opcodes[0]={type:2,children:[1,2]},this.rules[9].opcodes[1]={type:4,index:10},this.rules[9].opcodes[2]={type:3,min:0,max:1/0},this.rules[9].opcodes[3]={type:2,children:[4,5,6]},this.rules[9].opcodes[4]={type:7,string:[59]},this.rules[9].opcodes[5]={type:4,index:20},this.rules[9].opcodes[6]={type:4,index:10},this.rules[10].opcodes=[],this.rules[10].opcodes[0]={type:2,children:[1,2,3]},this.rules[10].opcodes[1]={type:4,index:11},this.rules[10].opcodes[2]={type:7,string:[61]},this.rules[10].opcodes[3]={type:4,index:12},this.rules[11].opcodes=[],this.rules[11].opcodes[0]={type:4,index:15},this.rules[12].opcodes=[],this.rules[12].opcodes[0]={type:1,children:[1,6]},this.rules[12].opcodes[1]={type:2,children:[2,3,5]},this.rules[12].opcodes[2]={type:4,index:24},this.rules[12].opcodes[3]={type:3,min:0,max:1/0},this.rules[12].opcodes[4]={type:4,index:13},this.rules[12].opcodes[5]={type:4,index:24},this.rules[12].opcodes[6]={type:3,min:0,max:1/0},this.rules[12].opcodes[7]={type:4,index:13},this.rules[13].opcodes=[],this.rules[13].opcodes[0]={type:1,children:[1,2,3,4,5]},this.rules[13].opcodes[1]={type:6,string:[33]},this.rules[13].opcodes[2]={type:5,min:35,max:43},this.rules[13].opcodes[3]={type:5,min:45,max:58},this.rules[13].opcodes[4]={type:5,min:60,max:91},this.rules[13].opcodes[5]={type:5,min:93,max:126},this.rules[14].opcodes=[],this.rules[14].opcodes[0]={type:3,min:0,max:1/0},this.rules[14].opcodes[1]={type:2,children:[2,4]},this.rules[14].opcodes[2]={type:3,min:0,max:1},this.rules[14].opcodes[3]={type:4,index:27},this.rules[14].opcodes[4]={type:4,index:25},this.rules[15].opcodes=[],this.rules[15].opcodes[0]={type:3,min:1,max:1/0},this.rules[15].opcodes[1]={type:4,index:16},this.rules[16].opcodes=[],this.rules[16].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]},this.rules[16].opcodes[1]={type:7,string:[33]},this.rules[16].opcodes[2]={type:7,string:[35]},this.rules[16].opcodes[3]={type:7,string:[36]},this.rules[16].opcodes[4]={type:7,string:[37]},this.rules[16].opcodes[5]={type:7,string:[38]},this.rules[16].opcodes[6]={type:7,string:[39]},this.rules[16].opcodes[7]={type:7,string:[42]},this.rules[16].opcodes[8]={type:7,string:[43]},this.rules[16].opcodes[9]={type:7,string:[45]},this.rules[16].opcodes[10]={type:7,string:[46]},this.rules[16].opcodes[11]={type:7,string:[94]},this.rules[16].opcodes[12]={type:7,string:[95]},this.rules[16].opcodes[13]={type:7,string:[96]},this.rules[16].opcodes[14]={type:7,string:[124]},this.rules[16].opcodes[15]={type:7,string:[126]},this.rules[16].opcodes[16]={type:4,index:23},this.rules[16].opcodes[17]={type:4,index:22},this.rules[17].opcodes=[],this.rules[17].opcodes[0]={type:5,min:1,max:127},this.rules[18].opcodes=[],this.rules[18].opcodes[0]={type:1,children:[1,2]},this.rules[18].opcodes[1]={type:5,min:0,max:31},this.rules[18].opcodes[2]={type:6,string:[127]},this.rules[19].opcodes=[],this.rules[19].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]},this.rules[19].opcodes[1]={type:7,string:[40]},this.rules[19].opcodes[2]={type:7,string:[41]},this.rules[19].opcodes[3]={type:7,string:[60]},this.rules[19].opcodes[4]={type:7,string:[62]},this.rules[19].opcodes[5]={type:7,string:[64]},this.rules[19].opcodes[6]={type:7,string:[44]},this.rules[19].opcodes[7]={type:7,string:[59]},this.rules[19].opcodes[8]={type:7,string:[58]},this.rules[19].opcodes[9]={type:7,string:[92]},this.rules[19].opcodes[10]={type:6,string:[34]},this.rules[19].opcodes[11]={type:7,string:[47]},this.rules[19].opcodes[12]={type:7,string:[91]},this.rules[19].opcodes[13]={type:7,string:[93]},this.rules[19].opcodes[14]={type:7,string:[63]},this.rules[19].opcodes[15]={type:7,string:[61]},this.rules[19].opcodes[16]={type:7,string:[123]},this.rules[19].opcodes[17]={type:7,string:[125]},this.rules[19].opcodes[18]={type:4,index:20},this.rules[19].opcodes[19]={type:4,index:21},this.rules[20].opcodes=[],this.rules[20].opcodes[0]={type:6,string:[32]},this.rules[21].opcodes=[],this.rules[21].opcodes[0]={type:6,string:[9]},this.rules[22].opcodes=[],this.rules[22].opcodes[0]={type:1,children:[1,2]},this.rules[22].opcodes[1]={type:5,min:65,max:90},this.rules[22].opcodes[2]={type:5,min:97,max:122},this.rules[23].opcodes=[],this.rules[23].opcodes[0]={type:5,min:48,max:57},this.rules[24].opcodes=[],this.rules[24].opcodes[0]={type:6,string:[34]},this.rules[25].opcodes=[],this.rules[25].opcodes[0]={type:1,children:[1,2]},this.rules[25].opcodes[1]={type:4,index:20},this.rules[25].opcodes[2]={type:4,index:26},this.rules[26].opcodes=[],this.rules[26].opcodes[0]={type:6,string:[9]},this.rules[27].opcodes=[],this.rules[27].opcodes[0]={type:2,children:[1,2]},this.rules[27].opcodes[1]={type:4,index:28},this.rules[27].opcodes[2]={type:4,index:29},this.rules[28].opcodes=[],this.rules[28].opcodes[0]={type:6,string:[13]},this.rules[29].opcodes=[],this.rules[29].opcodes[0]={type:6,string:[10]},this.toString=function toString(){let s=\"\";return s+=\"; Lenient version of https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\n\",s+='lenient-cookie-string        = lenient-cookie-entry *( \";\" OWS lenient-cookie-entry )\\n',s+=\"lenient-cookie-entry         = lenient-cookie-pair / lenient-cookie-pair-invalid\\n\",s+='lenient-cookie-pair          = OWS lenient-cookie-name OWS \"=\" OWS lenient-cookie-value OWS\\n',s+='lenient-cookie-pair-invalid  = OWS 1*tchar OWS ; Allow for standalone entries like \"fizz\" to be ignored\\n',s+='lenient-cookie-name          = 1*( %x21-3A / %x3C / %x3E-7E ) ; Allow all printable US-ASCII except \"=\"\\n',s+=\"lenient-cookie-value         = lenient-quoted-value [ *lenient-cookie-octet ] / *lenient-cookie-octet\\n\",s+=\"lenient-quoted-value         = DQUOTE *( lenient-quoted-char ) DQUOTE\\n\",s+=\"lenient-quoted-char          = %x20-21 / %x23-7E ; Allow all printable US-ASCII except DQUOTE\\n\",s+=\"lenient-cookie-octet         = %x21-2B / %x2D-3A / %x3C-7E\\n\",s+=\"                             ; Allow all printable characters except CTLs, semicolon and SP\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\n\",s+='cookie-string     = cookie-pair *( \";\" SP cookie-pair )\\n',s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1\\n\",s+=\"; https://www.rfc-editor.org/errata/eid5518\\n\",s+='cookie-pair       = cookie-name \"=\" cookie-value\\n',s+=\"cookie-name       = token\\n\",s+=\"cookie-value      = ( DQUOTE *cookie-octet DQUOTE ) / *cookie-octet\\n\",s+=\"                  ; https://www.rfc-editor.org/errata/eid8242\\n\",s+=\"cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\\n\",s+=\"                       ; US-ASCII characters excluding CTLs,\\n\",s+=\"                       ; whitespace, DQUOTE, comma, semicolon,\\n\",s+=\"                       ; and backslash\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-2.2\\n\",s+='OWS            = *( [ CRLF ] WSP ) ; \"optional\" whitespace\\n',s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc9110#section-5.6.2\\n\",s+=\"token          = 1*(tchar)\\n\",s+='tchar          = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"\\'\" / \"*\"\\n',s+='                 / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\\n',s+=\"                 / DIGIT / ALPHA\\n\",s+=\"                 ; any VCHAR, except delimiters\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc2616#section-2.2\\n\",s+=\"CHAR           = %x01-7F ; any US-ASCII character (octets 0 - 127)\\n\",s+=\"CTL            = %x00-1F / %x7F ; any US-ASCII control character\\n\",s+='separators     = \"(\" / \")\" / \"<\" / \">\" / \"@\" / \",\" / \";\" / \":\" / \"\\\\\" / %x22 / \"/\" / \"[\" / \"]\" / \"?\" / \"=\" / \"{\" / \"}\" / SP / HT\\n',s+=\"SP             = %x20 ; US-ASCII SP, space (32)\\n\",s+=\"HT             = %x09 ; US-ASCII HT, horizontal-tab (9)\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\n\",s+=\"ALPHA          =  %x41-5A / %x61-7A ; A-Z / a-z\\n\",s+=\"DIGIT          =  %x30-39 ; 0-9\\n\",s+='DQUOTE         =  %x22 ; \" (Double Quote)\\n',s+=\"WSP            =  SP / HTAB ; white space\\n\",s+=\"HTAB           =  %x09 ; horizontal tab\\n\",s+=\"CRLF           =  CR LF ; Internet standard newline\\n\",s+=\"CR             =  %x0D ; carriage return\\n\",s+=\"LF             =  %x0A ; linefeed\\n\",'; Lenient version of https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\nlenient-cookie-string        = lenient-cookie-entry *( \";\" OWS lenient-cookie-entry )\\nlenient-cookie-entry         = lenient-cookie-pair / lenient-cookie-pair-invalid\\nlenient-cookie-pair          = OWS lenient-cookie-name OWS \"=\" OWS lenient-cookie-value OWS\\nlenient-cookie-pair-invalid  = OWS 1*tchar OWS ; Allow for standalone entries like \"fizz\" to be ignored\\nlenient-cookie-name          = 1*( %x21-3A / %x3C / %x3E-7E ) ; Allow all printable US-ASCII except \"=\"\\nlenient-cookie-value         = lenient-quoted-value [ *lenient-cookie-octet ] / *lenient-cookie-octet\\nlenient-quoted-value         = DQUOTE *( lenient-quoted-char ) DQUOTE\\nlenient-quoted-char          = %x20-21 / %x23-7E ; Allow all printable US-ASCII except DQUOTE\\nlenient-cookie-octet         = %x21-2B / %x2D-3A / %x3C-7E\\n                             ; Allow all printable characters except CTLs, semicolon and SP\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\ncookie-string     = cookie-pair *( \";\" SP cookie-pair )\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1\\n; https://www.rfc-editor.org/errata/eid5518\\ncookie-pair       = cookie-name \"=\" cookie-value\\ncookie-name       = token\\ncookie-value      = ( DQUOTE *cookie-octet DQUOTE ) / *cookie-octet\\n                  ; https://www.rfc-editor.org/errata/eid8242\\ncookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\\n                       ; US-ASCII characters excluding CTLs,\\n                       ; whitespace, DQUOTE, comma, semicolon,\\n                       ; and backslash\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-2.2\\nOWS            = *( [ CRLF ] WSP ) ; \"optional\" whitespace\\n\\n; https://datatracker.ietf.org/doc/html/rfc9110#section-5.6.2\\ntoken          = 1*(tchar)\\ntchar          = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"\\'\" / \"*\"\\n                 / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\\n                 / DIGIT / ALPHA\\n                 ; any VCHAR, except delimiters\\n\\n; https://datatracker.ietf.org/doc/html/rfc2616#section-2.2\\nCHAR           = %x01-7F ; any US-ASCII character (octets 0 - 127)\\nCTL            = %x00-1F / %x7F ; any US-ASCII control character\\nseparators     = \"(\" / \")\" / \"<\" / \">\" / \"@\" / \",\" / \";\" / \":\" / \"\\\\\" / %x22 / \"/\" / \"[\" / \"]\" / \"?\" / \"=\" / \"{\" / \"}\" / SP / HT\\nSP             = %x20 ; US-ASCII SP, space (32)\\nHT             = %x09 ; US-ASCII HT, horizontal-tab (9)\\n\\n; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\nALPHA          =  %x41-5A / %x61-7A ; A-Z / a-z\\nDIGIT          =  %x30-39 ; 0-9\\nDQUOTE         =  %x22 ; \" (Double Quote)\\nWSP            =  SP / HTAB ; white space\\nHTAB           =  %x09 ; horizontal tab\\nCRLF           =  CR LF ; Internet standard newline\\nCR             =  %x0D ; carriage return\\nLF             =  %x0A ; linefeed\\n'}}new grammar_grammar;const utils_percentEncodeChar=s=>{if(\"string\"!=typeof s||1!==[...s].length)throw new TypeError(\"Input must be a single character string.\");const o=s.codePointAt(0);return o<=127?`%${o.toString(16).toUpperCase().padStart(2,\"0\")}`:encodeURIComponent(s)},utils_isQuoted=s=>s.length>=2&&s.startsWith('\"')&&s.endsWith('\"'),utils_unquote=s=>utils_isQuoted(s)?s.slice(1,-1):s,utils_quote=s=>`\"${s}\"`,utils_identity=s=>s,$x=new yp,qx=new grammar_grammar,test_cookie_value=(s,{strict:o=!0,quoted:i=null}={})=>{try{const a=o?\"cookie-value\":\"lenient-cookie-value\",u=$x.parse(qx,a,s);return\"boolean\"==typeof i?u.success&&i===utils_isQuoted(s):u.success}catch{return!1}},base64_browser=s=>{const o=(new TextEncoder).encode(s).reduce(((s,o)=>s+String.fromCharCode(o)),\"\");return btoa(o)},cookie_value_strict_base64=(s,o=base64_browser)=>{const i=String(s);if(test_cookie_value(i))return i;const a=utils_isQuoted(i),u=o(a?utils_unquote(i):i);return a?utils_quote(u):u},base64url_browser=s=>(s=>s.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=+$/g,\"\"))(base64_browser(s)),cookie_value_strict_base64url=s=>cookie_value_strict_base64(s,base64url_browser),Vx=new yp,Ux=new grammar_grammar,test_cookie_name=(s,{strict:o=!0}={})=>{try{const i=o?\"cookie-name\":\"lenient-cookie-name\";return Vx.parse(Ux,i,s).success}catch{return!1}},cookie_name_strict=s=>{if(!test_cookie_name(s))throw new TypeError(`Invalid cookie name: ${s}`)},cookie_value_strict=s=>{if(!test_cookie_value(s))throw new TypeError(`Invalid cookie value: ${s}`)},zx={encoders:{name:utils_identity,value:cookie_value_strict_base64url},validators:{name:cookie_name_strict,value:cookie_value_strict}},set_cookie_serialize=(s,o,i={})=>{const a={...zx,...i,encoders:{...zx.encoders,...i.encoders},validators:{...zx.validators,...i.validators}},u=a.encoders.name(s),_=a.encoders.value(o);return a.validators.name(u),a.validators.value(_),`${u}=${_}`},cookie_serialize=(s,o={})=>(Array.isArray(s)?s:\"object\"==typeof s&&null!==s?Object.entries(s):[]).map((([s,i])=>set_cookie_serialize(s,i,o))).join(\"; \"),Wx=new yp,Jx=new grammar_grammar,cookie_value_strict_percent=s=>{const o=String(s);if(test_cookie_value(o))return o;const i=utils_isQuoted(o),a=i?utils_unquote(o):o;let u=\"\";for(const s of a)u+=Wx.parse(Jx,\"cookie-octet\",s).success?s:utils_percentEncodeChar(s);return i?utils_quote(u):u},Hx=(new yp,new grammar_grammar,s=>{if(!test_cookie_name(s,{strict:!1}))throw new TypeError(`Invalid cookie name: ${s}`)}),valuePercentEncoder=s=>cookie_value_strict_percent(s).replace(/[=&]/gu,(s=>\"=\"===s?\"%3D\":\"%26\")),helpers_cookie_serialize=(s,o={})=>cookie_serialize(s,ep({encoders:{name:utils_identity,value:valuePercentEncoder},validators:{name:Hx,value:cookie_value_strict}},o));function parameter_builders_path({req:s,value:o,parameter:i,baseURL:a}){const{name:u,style:_,explode:w,content:x}=i;if(void 0===o)return;const C=s.url.replace(a,\"\");let j;if(x){const s=Object.keys(x)[0];j=es_resolve(C,{[u]:o},{encoder:o=>encodeCharacters(serialize(o,s))})}else j=es_resolve(C,{[u]:o},{encoder:s=>stylize({key:i.name,value:s,style:_||\"simple\",explode:null!=w&&w,escape:\"reserved\"})});s.url=a+j}function query({req:s,value:o,parameter:i}){if(s.query=s.query||{},void 0!==o&&i.content){const a=serialize(o,Object.keys(i.content)[0]);if(a)s.query[i.name]=a;else if(i.allowEmptyValue){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}}else if(!1===o&&(o=\"false\"),0===o&&(o=\"0\"),o){const{style:a,explode:u,allowReserved:_}=i;s.query[i.name]={value:o,serializationOption:{style:a,explode:u,allowReserved:_}}}else if(i.allowEmptyValue&&void 0!==o){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}}const Kx=[\"accept\",\"authorization\",\"content-type\"];function parameter_builders_header({req:s,parameter:o,value:i}){if(s.headers=s.headers||{},!(Kx.indexOf(o.name.toLowerCase())>-1))if(void 0!==i&&o.content){const a=Object.keys(o.content)[0];s.headers[o.name]=serialize(i,a)}else void 0===i||Array.isArray(i)&&0===i.length||(s.headers[o.name]=stylize({key:o.name,value:i,style:o.style||\"simple\",explode:void 0!==o.explode&&o.explode,escape:!1}))}function cookie({req:s,parameter:o,value:i}){const{name:a}=o;if(s.headers=s.headers||{},void 0!==i&&o.content){const u=serialize(i,Object.keys(o.content)[0]);s.headers.Cookie=helpers_cookie_serialize({[a]:u})}else if(void 0!==i&&(!Array.isArray(i)||0!==i.length)){var u;const _=stylize({key:o.name,value:i,escape:!1,style:o.style||\"form\",explode:null!==(u=o.explode)&&void 0!==u&&u}),w=Array.isArray(i)&&o.explode?`${a}=${_}`:_;s.headers.Cookie=helpers_cookie_serialize({[a]:w})}}const Gx=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:window,{btoa:Yx}=Gx,Xx=Yx;function buildRequest(s,o){const{operation:i,requestBody:a,securities:u,spec:_,attachContentTypeForEmptyPayload:w}=s;let{requestContentType:x}=s;o=function applySecurities({request:s,securities:o={},operation:i={},spec:a}){var u;const _={...s},{authorized:w={}}=o,x=i.security||a.security||[],C=w&&!!Object.keys(w).length,j=(null==a||null===(u=a.components)||void 0===u?void 0:u.securitySchemes)||{};if(_.headers=_.headers||{},_.query=_.query||{},!Object.keys(o).length||!C||!x||Array.isArray(i.security)&&!i.security.length)return s;return x.forEach((s=>{Object.keys(s).forEach((s=>{const o=w[s],i=j[s];if(!o)return;const a=o.value||o,{type:u}=i;if(o)if(\"apiKey\"===u)\"query\"===i.in&&(_.query[i.name]=a),\"header\"===i.in&&(_.headers[i.name]=a),\"cookie\"===i.in&&(_.cookies[i.name]=a);else if(\"http\"===u){if(/^basic$/i.test(i.scheme)){const s=a.username||\"\",o=a.password||\"\",i=Xx(`${s}:${o}`);_.headers.Authorization=`Basic ${i}`}/^bearer$/i.test(i.scheme)&&(_.headers.Authorization=`Bearer ${a}`)}else if(\"oauth2\"===u||\"openIdConnect\"===u){const s=o.token||{},a=s[i[\"x-tokenName\"]||\"access_token\"];let u=s.token_type;u&&\"bearer\"!==u.toLowerCase()||(u=\"Bearer\"),_.headers.Authorization=`${u} ${a}`}}))})),_}({request:o,securities:u,operation:i,spec:_});const C=i.requestBody||{},j=Object.keys(C.content||{}),L=x&&j.indexOf(x)>-1;if(a||w){if(x&&L)o.headers[\"Content-Type\"]=x;else if(!x){const s=j[0];s&&(o.headers[\"Content-Type\"]=s,x=s)}}else x&&L&&(o.headers[\"Content-Type\"]=x);if(!s.responseContentType&&i.responses){const s=Object.entries(i.responses).filter((([s,o])=>{const i=parseInt(s,10);return i>=200&&i<300&&fu(o.content)})).reduce(((s,[,o])=>s.concat(Object.keys(o.content))),[]);s.length>0&&(o.headers.accept=s.join(\", \"))}if(a)if(x){if(j.indexOf(x)>-1)if(\"application/x-www-form-urlencoded\"===x||\"multipart/form-data\"===x)if(\"object\"==typeof a){var B,$;const s=null!==(B=null===($=C.content[x])||void 0===$?void 0:$.encoding)&&void 0!==B?B:{};o.form={},Object.keys(a).forEach((i=>{let u;try{u=JSON.parse(a[i])}catch{u=a[i]}o.form[i]={value:u,encoding:s[i]||{}}}))}else if(\"string\"==typeof a){var V,U;const s=null!==(V=null===(U=C.content[x])||void 0===U?void 0:U.encoding)&&void 0!==V?V:{};try{o.form={};const i=JSON.parse(a);Object.entries(i).forEach((([i,a])=>{o.form[i]={value:a,encoding:s[i]||{}}}))}catch{o.form=a}}else o.form=a;else o.body=a}else o.body=a;return o}function build_request_buildRequest(s,o){const{spec:i,operation:a,securities:u,requestContentType:_,responseContentType:w,attachContentTypeForEmptyPayload:x}=s;if(o=function build_request_applySecurities({request:s,securities:o={},operation:i={},spec:a}){const u={...s},{authorized:_={},specSecurity:w=[]}=o,x=i.security||w,C=_&&!!Object.keys(_).length,j=a.securityDefinitions;if(u.headers=u.headers||{},u.query=u.query||{},!Object.keys(o).length||!C||!x||Array.isArray(i.security)&&!i.security.length)return s;return x.forEach((s=>{Object.keys(s).forEach((s=>{const o=_[s];if(!o)return;const{token:i}=o,a=o.value||o,w=j[s],{type:x}=w,C=w[\"x-tokenName\"]||\"access_token\",L=i&&i[C];let B=i&&i.token_type;if(o)if(\"apiKey\"===x){const s=\"query\"===w.in?\"query\":\"headers\";u[s]=u[s]||{},u[s][w.name]=a}else if(\"basic\"===x)if(a.header)u.headers.authorization=a.header;else{const s=a.username||\"\",o=a.password||\"\";a.base64=Xx(`${s}:${o}`),u.headers.authorization=`Basic ${a.base64}`}else\"oauth2\"===x&&L&&(B=B&&\"bearer\"!==B.toLowerCase()?B:\"Bearer\",u.headers.authorization=`${B} ${L}`)}))})),u}({request:o,securities:u,operation:a,spec:i}),o.body||o.form||x)_?o.headers[\"Content-Type\"]=_:Array.isArray(a.consumes)?[o.headers[\"Content-Type\"]]=a.consumes:Array.isArray(i.consumes)?[o.headers[\"Content-Type\"]]=i.consumes:a.parameters&&a.parameters.filter((s=>\"file\"===s.type)).length?o.headers[\"Content-Type\"]=\"multipart/form-data\":a.parameters&&a.parameters.filter((s=>\"formData\"===s.in)).length&&(o.headers[\"Content-Type\"]=\"application/x-www-form-urlencoded\");else if(_){const s=a.parameters&&a.parameters.filter((s=>\"body\"===s.in)).length>0,i=a.parameters&&a.parameters.filter((s=>\"formData\"===s.in)).length>0;(s||i)&&(o.headers[\"Content-Type\"]=_)}return!w&&Array.isArray(a.produces)&&a.produces.length>0&&(o.headers.accept=a.produces.join(\", \")),o}function idFromPathMethodLegacy(s,o){return`${o.toLowerCase()}-${s}`}const arrayOrEmpty=s=>Array.isArray(s)?s:[],findObjectOrArraySchema=(s,{recurse:o=!0,depth:i=1}={})=>{if(fu(s)){if(\"object\"===s.type||\"array\"===s.type||Array.isArray(s.type)&&(s.type.includes(\"object\")||s.type.includes(\"array\")))return s;if(!(i>Bl)&&o){const a=Array.isArray(s.oneOf)?s.oneOf.find((s=>findObjectOrArraySchema(s,{recurse:o,depth:i+1}))):void 0;if(a)return a;const u=Array.isArray(s.anyOf)?s.anyOf.find((s=>findObjectOrArraySchema(s,{recurse:o,depth:i+1}))):void 0;if(u)return u}}},parseJsonObjectOrArray=({value:s,silentFail:o=!1})=>{try{const i=JSON.parse(s);if(fu(i)||Array.isArray(i))return i;if(!o)throw new Error(\"Expected JSON serialized object or array\")}catch{if(!o)throw new Error(\"Could not parse parameter value string as JSON Object or JSON Array\")}return s},parseURIReference=s=>{try{return new URL(s)}catch{const o=new URL(s,Ll),i=String(s).startsWith(\"/\")?o.pathname:o.pathname.substring(1);return{hash:o.hash,host:\"\",hostname:\"\",href:\"\",origin:\"\",password:\"\",pathname:i,port:\"\",protocol:\"\",search:o.search,searchParams:o.searchParams}}};class OperationNotFoundError extends Go{}const Qx={buildRequest:execute_buildRequest};function execute_execute({http:s,fetch:o,spec:i,operationId:a,pathName:u,method:_,parameters:w,securities:x,...C}){const j=s||o||http_http;u&&_&&!a&&(a=idFromPathMethodLegacy(u,_));const L=Qx.buildRequest({spec:i,operationId:a,parameters:w,securities:x,http:j,...C});return L.body&&(fu(L.body)||Array.isArray(L.body))&&(L.body=JSON.stringify(L.body)),j(L)}function execute_buildRequest(s){const{spec:o,operationId:i,responseContentType:a,scheme:u,requestInterceptor:_,responseInterceptor:w,contextUrl:x,userFetch:C,server:j,serverVariables:L,http:B,signal:$,serverVariableEncoder:V}=s;let{parameters:U,parameterBuilders:z,baseURL:Y}=s;const Z=isOpenAPI3(o);z||(z=Z?be:Bx);let ee={url:\"\",credentials:B&&B.withCredentials?\"include\":\"same-origin\",headers:{},cookies:{}};$&&(ee.signal=$),_&&(ee.requestInterceptor=_),w&&(ee.responseInterceptor=w),C&&(ee.userFetch=C);const ie=function getOperationRaw(s,o){return s&&s.paths?function findOperation(s,o){return function eachOperation(s,o,i){if(!s||\"object\"!=typeof s||!s.paths||\"object\"!=typeof s.paths)return null;const{paths:a}=s;for(const u in a)for(const _ in a[u]){if(\"PARAMETERS\"===_.toUpperCase())continue;const w=a[u][_];if(!w||\"object\"!=typeof w)continue;const x={spec:s,pathName:u,method:_.toUpperCase(),operation:w},C=o(x);if(i&&C)return x}}(s,o,!0)||null}(s,(({pathName:s,method:i,operation:a})=>{if(!a||\"object\"!=typeof a)return!1;const u=a.operationId;return[opId(a,s,i),idFromPathMethodLegacy(s,i),u].some((s=>s&&s===o))})):null}(o,i);if(!ie)throw new OperationNotFoundError(`Operation ${i} not found`);const{operation:ae={},method:ce,pathName:le}=ie;if(Y=null!=Y?Y:function baseUrl(s){const o=isOpenAPI3(s.spec);return o?function oas3BaseUrl({spec:s,pathName:o,method:i,server:a,contextUrl:u,serverVariables:_={},serverVariableEncoder:w}){var x,C;let j,L=[],B=\"\";const $=null==s||null===(x=s.paths)||void 0===x||null===(x=x[o])||void 0===x||null===(x=x[(i||\"\").toLowerCase()])||void 0===x?void 0:x.servers,V=null==s||null===(C=s.paths)||void 0===C||null===(C=C[o])||void 0===C?void 0:C.servers,U=null==s?void 0:s.servers;L=isNonEmptyServerList($)?$:isNonEmptyServerList(V)?V:isNonEmptyServerList(U)?U:[Fl],a&&(j=L.find((s=>s.url===a)),j&&(B=a));B||([j]=L,B=j.url);if(openapi_server_url_templating_es_test(B,{strict:!0})){const s=Object.entries({...j.variables}).reduce(((s,[o,i])=>(s[o]=i.default,s)),{});B=es_substitute(B,{...s,..._},{encoder:\"function\"==typeof w?w:vw})}return function buildOas3UrlWithContext(s=\"\",o=\"\"){const i=parseURIReference(s&&o?resolve(o,s):s),a=parseURIReference(o),u=stripNonAlpha(i.protocol)||stripNonAlpha(a.protocol),_=i.host||a.host,w=i.pathname;let x;x=u&&_?`${u}://${_+w}`:w;return\"/\"===x[x.length-1]?x.slice(0,-1):x}(B,u)}(s):function swagger2BaseUrl({spec:s,scheme:o,contextUrl:i=\"\"}){const a=parseURIReference(i),u=Array.isArray(s.schemes)?s.schemes[0]:null,_=o||u||stripNonAlpha(a.protocol)||\"http\",w=s.host||a.host||\"\",x=s.basePath||\"\";let C;C=_&&w?`${_}://${w+x}`:x;return\"/\"===C[C.length-1]?C.slice(0,-1):C}(s)}({spec:o,scheme:u,contextUrl:x,server:j,serverVariables:L,pathName:le,method:ce,serverVariableEncoder:V}),ee.url+=Y,!i)return delete ee.cookies,ee;ee.url+=le,ee.method=`${ce}`.toUpperCase(),U=U||{};const pe=o.paths[le]||{};a&&(ee.headers.accept=a);const de=(s=>{const o={};s.forEach((s=>{o[s.in]||(o[s.in]={}),o[s.in][s.name]=s}));const i=[];return Object.keys(o).forEach((s=>{Object.keys(o[s]).forEach((a=>{i.push(o[s][a])}))})),i})([].concat(arrayOrEmpty(ae.parameters)).concat(arrayOrEmpty(pe.parameters)));de.forEach((s=>{const i=z[s.in];let a;if(\"body\"===s.in&&s.schema&&s.schema.properties&&(a=U),a=s&&s.name&&U[s.name],void 0===a?a=s&&s.name&&U[`${s.in}.${s.name}`]:((s,o)=>o.filter((o=>o.name===s)))(s.name,de).length>1&&console.warn(`Parameter '${s.name}' is ambiguous because the defined spec has more than one parameter with the name: '${s.name}' and the passed-in parameter values did not define an 'in' value.`),null!==a){if(void 0!==s.default&&void 0===a&&(a=s.default),void 0===a&&s.required&&!s.allowEmptyValue)throw new Error(`Required parameter ${s.name} is not provided`);Z&&\"string\"==typeof a&&(id(\"type\",s.schema)&&\"string\"==typeof s.schema.type&&findObjectOrArraySchema(s.schema,{recurse:!1})?a=parseJsonObjectOrArray({value:a,silentFail:!1}):(id(\"type\",s.schema)&&Array.isArray(s.schema.type)&&findObjectOrArraySchema(s.schema,{recurse:!1})||!id(\"type\",s.schema)&&findObjectOrArraySchema(s.schema,{recurse:!0}))&&(a=parseJsonObjectOrArray({value:a,silentFail:!0}))),i&&i({req:ee,parameter:s,value:a,operation:ae,spec:o,baseURL:Y})}}));const fe={...s,operation:ae};if(ee=Z?buildRequest(fe,ee):build_request_buildRequest(fe,ee),ee.cookies&&Object.keys(ee.cookies).length>0){const s=helpers_cookie_serialize(ee.cookies);Nd(ee.headers.Cookie)?ee.headers.Cookie+=`; ${s}`:ee.headers.Cookie=s}return ee.cookies&&delete ee.cookies,serializeRequest(ee)}const stripNonAlpha=s=>s?s.replace(/\\W/g,\"\"):null;const isNonEmptyServerList=s=>Array.isArray(s)&&s.length>0;const makeResolveSubtree=s=>async(o,i,a={})=>(async(s,o,i={})=>{const{returnEntireTree:a,baseDoc:u,requestInterceptor:_,responseInterceptor:w,parameterMacro:x,modelPropertyMacro:C,useCircularStructures:j,strategies:L}=i,B={spec:s,pathDiscriminator:o,baseDoc:u,requestInterceptor:_,responseInterceptor:w,parameterMacro:x,modelPropertyMacro:C,useCircularStructures:j,strategies:L},$=L.find((o=>o.match(s))).normalize(s),V=await Mx({spec:$,...B,allowMetaPatches:!0,skipNormalization:!isOpenAPI31(s)});return!a&&Array.isArray(o)&&o.length&&(V.spec=o.reduce(((s,o)=>null==s?void 0:s[o]),V.spec)||null),V})(o,i,{...s,...a}),Zx=(makeResolveSubtree({strategies:[_u,vu,gu]}),(s,o)=>(...i)=>{s(...i);const a=o.getConfigs().withCredentials;o.fn.fetch.withCredentials=a});function swagger_client({configs:s,getConfigs:o}){return{fn:{fetch:(i=http_http,a=s.preFetch,u=s.postFetch,u=u||(s=>s),a=a||(s=>s),s=>(\"string\"==typeof s&&(s={url:s}),s=serializeRequest(s),s=a(s),u(i(s)))),buildRequest:execute_buildRequest,execute:execute_execute,resolve:makeResolve({strategies:[Nx,_u,vu,gu]}),resolveSubtree:async(s,i,a={})=>{const u=o(),_={modelPropertyMacro:u.modelPropertyMacro,parameterMacro:u.parameterMacro,requestInterceptor:u.requestInterceptor,responseInterceptor:u.responseInterceptor,strategies:[Nx,_u,vu,gu]};return makeResolveSubtree(_)(s,i,a)},serializeRes:serializeResponse,opId},statePlugins:{configs:{wrapActions:{loaded:Zx}}}};var i,a,u}function util(){return{fn:{shallowEqualKeys,sanitizeUrl}}}var tk=__webpack_require__(40961),rk=(__webpack_require__(78418),Re.version.startsWith(\"19\")),nk=Symbol.for(rk?\"react.transitional.element\":\"react.element\"),sk=Symbol.for(\"react.portal\"),ok=Symbol.for(\"react.fragment\"),lk=Symbol.for(\"react.strict_mode\"),uk=Symbol.for(\"react.profiler\"),pk=Symbol.for(\"react.consumer\"),fk=Symbol.for(\"react.context\"),mk=Symbol.for(\"react.forward_ref\"),yk=Symbol.for(\"react.suspense\"),vk=Symbol.for(\"react.suspense_list\"),_k=Symbol.for(\"react.memo\"),wk=Symbol.for(\"react.lazy\"),xk=mk,Ak=_k;function typeOf(s){if(\"object\"==typeof s&&null!==s){const{$$typeof:o}=s;switch(o){case nk:switch(s=s.type){case ok:case uk:case lk:case yk:case vk:return s;default:switch(s=s&&s.$$typeof){case fk:case mk:case wk:case _k:case pk:return s;default:return o}}case sk:return o}}}function pureFinalPropsSelectorFactory(s,o,i,a,{areStatesEqual:u,areOwnPropsEqual:_,areStatePropsEqual:w}){let x,C,j,L,B,$=!1;function handleSubsequentCalls($,V){const U=!_(V,C),z=!u($,x,V,C);return x=$,C=V,U&&z?function handleNewPropsAndNewState(){return j=s(x,C),o.dependsOnOwnProps&&(L=o(a,C)),B=i(j,L,C),B}():U?function handleNewProps(){return s.dependsOnOwnProps&&(j=s(x,C)),o.dependsOnOwnProps&&(L=o(a,C)),B=i(j,L,C),B}():z?function handleNewState(){const o=s(x,C),a=!w(o,j);return j=o,a&&(B=i(j,L,C)),B}():B}return function pureFinalPropsSelector(u,_){return $?handleSubsequentCalls(u,_):function handleFirstCall(u,_){return x=u,C=_,j=s(x,C),L=o(a,C),B=i(j,L,C),$=!0,B}(u,_)}}function wrapMapToPropsConstant(s){return function initConstantSelector(o){const i=s(o);function constantSelector(){return i}return constantSelector.dependsOnOwnProps=!1,constantSelector}}function getDependsOnOwnProps(s){return s.dependsOnOwnProps?Boolean(s.dependsOnOwnProps):1!==s.length}function wrapMapToPropsFunc(s,o){return function initProxySelector(o,{displayName:i}){const a=function mapToPropsProxy(s,o){return a.dependsOnOwnProps?a.mapToProps(s,o):a.mapToProps(s,void 0)};return a.dependsOnOwnProps=!0,a.mapToProps=function detectFactoryAndVerify(o,i){a.mapToProps=s,a.dependsOnOwnProps=getDependsOnOwnProps(s);let u=a(o,i);return\"function\"==typeof u&&(a.mapToProps=u,a.dependsOnOwnProps=getDependsOnOwnProps(u),u=a(o,i)),u},a}}function createInvalidArgFactory(s,o){return(i,a)=>{throw new Error(`Invalid value of type ${typeof s} for ${o} argument when connecting component ${a.wrappedComponentName}.`)}}function defaultMergeProps(s,o,i){return{...i,...s,...o}}function defaultNoopBatch(s){s()}var Bk={notify(){},get:()=>[]};function createSubscription(s,o){let i,a=Bk,u=0,_=!1;function handleChangeWrapper(){w.onStateChange&&w.onStateChange()}function trySubscribe(){u++,i||(i=o?o.addNestedSub(handleChangeWrapper):s.subscribe(handleChangeWrapper),a=function createListenerCollection(){let s=null,o=null;return{clear(){s=null,o=null},notify(){defaultNoopBatch((()=>{let o=s;for(;o;)o.callback(),o=o.next}))},get(){const o=[];let i=s;for(;i;)o.push(i),i=i.next;return o},subscribe(i){let a=!0;const u=o={callback:i,next:null,prev:o};return u.prev?u.prev.next=u:s=u,function unsubscribe(){a&&null!==s&&(a=!1,u.next?u.next.prev=u.prev:o=u.prev,u.prev?u.prev.next=u.next:s=u.next)}}}}())}function tryUnsubscribe(){u--,i&&0===u&&(i(),i=void 0,a.clear(),a=Bk)}const w={addNestedSub:function addNestedSub(s){trySubscribe();const o=a.subscribe(s);let i=!1;return()=>{i||(i=!0,o(),tryUnsubscribe())}},notifyNestedSubs:function notifyNestedSubs(){a.notify()},handleChangeWrapper,isSubscribed:function isSubscribed(){return _},trySubscribe:function trySubscribeSelf(){_||(_=!0,trySubscribe())},tryUnsubscribe:function tryUnsubscribeSelf(){_&&(_=!1,tryUnsubscribe())},getListeners:()=>a};return w}var qk=(()=>!(\"undefined\"==typeof window||void 0===window.document||void 0===window.document.createElement))(),Vk=(()=>\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product)(),zk=(()=>qk||Vk?Re.useLayoutEffect:Re.useEffect)();function is(s,o){return s===o?0!==s||0!==o||1/s==1/o:s!=s&&o!=o}function shallowEqual(s,o){if(is(s,o))return!0;if(\"object\"!=typeof s||null===s||\"object\"!=typeof o||null===o)return!1;const i=Object.keys(s),a=Object.keys(o);if(i.length!==a.length)return!1;for(let a=0;a<i.length;a++)if(!Object.prototype.hasOwnProperty.call(o,i[a])||!is(s[i[a]],o[i[a]]))return!1;return!0}var eO={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},tO={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},rO={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},nO={[xk]:{$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},[Ak]:rO};function getStatics(s){return function isMemo(s){return typeOf(s)===_k}(s)?rO:nO[s.$$typeof]||eO}var sO=Object.defineProperty,oO=Object.getOwnPropertyNames,iO=Object.getOwnPropertySymbols,aO=Object.getOwnPropertyDescriptor,cO=Object.getPrototypeOf,lO=Object.prototype;function hoistNonReactStatics(s,o){if(\"string\"!=typeof o){if(lO){const i=cO(o);i&&i!==lO&&hoistNonReactStatics(s,i)}let i=oO(o);iO&&(i=i.concat(iO(o)));const a=getStatics(s),u=getStatics(o);for(let _=0;_<i.length;++_){const w=i[_];if(!(tO[w]||u&&u[w]||a&&a[w])){const i=aO(o,w);try{sO(s,w,i)}catch(s){}}}}return s}var uO=Symbol.for(\"react-redux-context\"),pO=\"undefined\"!=typeof globalThis?globalThis:{};function getContext(){if(!Re.createContext)return{};const s=pO[uO]??=new Map;let o=s.get(Re.createContext);return o||(o=Re.createContext(null),s.set(Re.createContext,o)),o}var hO=getContext(),dO=[null,null];function captureWrapperProps(s,o,i,a,u,_){s.current=a,i.current=!1,u.current&&(u.current=null,_())}function strictEqual(s,o){return s===o}var fO=function connect(s,o,i,{pure:a,areStatesEqual:u=strictEqual,areOwnPropsEqual:_=shallowEqual,areStatePropsEqual:w=shallowEqual,areMergedPropsEqual:x=shallowEqual,forwardRef:C=!1,context:j=hO}={}){const L=j,B=function mapStateToPropsFactory(s){return s?\"function\"==typeof s?wrapMapToPropsFunc(s):createInvalidArgFactory(s,\"mapStateToProps\"):wrapMapToPropsConstant((()=>({})))}(s),$=function mapDispatchToPropsFactory(s){return s&&\"object\"==typeof s?wrapMapToPropsConstant((o=>function react_redux_bindActionCreators(s,o){const i={};for(const a in s){const u=s[a];\"function\"==typeof u&&(i[a]=(...s)=>o(u(...s)))}return i}(s,o))):s?\"function\"==typeof s?wrapMapToPropsFunc(s):createInvalidArgFactory(s,\"mapDispatchToProps\"):wrapMapToPropsConstant((s=>({dispatch:s})))}(o),V=function mergePropsFactory(s){return s?\"function\"==typeof s?function wrapMergePropsFunc(s){return function initMergePropsProxy(o,{displayName:i,areMergedPropsEqual:a}){let u,_=!1;return function mergePropsProxy(o,i,w){const x=s(o,i,w);return _?a(x,u)||(u=x):(_=!0,u=x),u}}}(s):createInvalidArgFactory(s,\"mergeProps\"):()=>defaultMergeProps}(i),U=Boolean(s);return s=>{const o=s.displayName||s.name||\"Component\",i=`Connect(${o})`,a={shouldHandleStateChanges:U,displayName:i,wrappedComponentName:o,WrappedComponent:s,initMapStateToProps:B,initMapDispatchToProps:$,initMergeProps:V,areStatesEqual:u,areStatePropsEqual:w,areOwnPropsEqual:_,areMergedPropsEqual:x};function ConnectFunction(o){const[i,u,_]=Re.useMemo((()=>{const{reactReduxForwardedRef:s,...i}=o;return[o.context,s,i]}),[o]),w=Re.useMemo((()=>L),[i,L]),x=Re.useContext(w),C=Boolean(o.store)&&Boolean(o.store.getState)&&Boolean(o.store.dispatch),j=Boolean(x)&&Boolean(x.store);const B=C?o.store:x.store,$=j?x.getServerState:B.getState,V=Re.useMemo((()=>function finalPropsSelectorFactory(s,{initMapStateToProps:o,initMapDispatchToProps:i,initMergeProps:a,...u}){return pureFinalPropsSelectorFactory(o(s,u),i(s,u),a(s,u),s,u)}(B.dispatch,a)),[B]),[z,Y]=Re.useMemo((()=>{if(!U)return dO;const s=createSubscription(B,C?void 0:x.subscription),o=s.notifyNestedSubs.bind(s);return[s,o]}),[B,C,x]),Z=Re.useMemo((()=>C?x:{...x,subscription:z}),[C,x,z]),ee=Re.useRef(void 0),ie=Re.useRef(_),ae=Re.useRef(void 0),ce=Re.useRef(!1),le=Re.useRef(!1),pe=Re.useRef(void 0);zk((()=>(le.current=!0,()=>{le.current=!1})),[]);const de=Re.useMemo((()=>()=>ae.current&&_===ie.current?ae.current:V(B.getState(),_)),[B,_]),fe=Re.useMemo((()=>s=>z?function subscribeUpdates(s,o,i,a,u,_,w,x,C,j,L){if(!s)return()=>{};let B=!1,$=null;const checkForUpdates=()=>{if(B||!x.current)return;const s=o.getState();let i,V;try{i=a(s,u.current)}catch(s){V=s,$=s}V||($=null),i===_.current?w.current||j():(_.current=i,C.current=i,w.current=!0,L())};return i.onStateChange=checkForUpdates,i.trySubscribe(),checkForUpdates(),()=>{if(B=!0,i.tryUnsubscribe(),i.onStateChange=null,$)throw $}}(U,B,z,V,ie,ee,ce,le,ae,Y,s):()=>{}),[z]);let ye;!function useIsomorphicLayoutEffectWithArgs(s,o,i){zk((()=>s(...o)),i)}(captureWrapperProps,[ie,ee,ce,_,ae,Y]);try{ye=Re.useSyncExternalStore(fe,de,$?()=>V($(),_):de)}catch(s){throw pe.current&&(s.message+=`\\nThe error may be correlated with this previous error:\\n${pe.current.stack}\\n\\n`),s}zk((()=>{pe.current=void 0,ae.current=void 0,ee.current=ye}));const be=Re.useMemo((()=>Re.createElement(s,{...ye,ref:u})),[u,s,ye]);return Re.useMemo((()=>U?Re.createElement(w.Provider,{value:Z},be):be),[w,be,Z])}const j=Re.memo(ConnectFunction);if(j.WrappedComponent=s,j.displayName=ConnectFunction.displayName=i,C){const o=Re.forwardRef((function forwardConnectRef(s,o){return Re.createElement(j,{...s,reactReduxForwardedRef:o})}));return o.displayName=i,o.WrappedComponent=s,hoistNonReactStatics(o,s)}return hoistNonReactStatics(j,s)}};var mO=function Provider(s){const{children:o,context:i,serverState:a,store:u}=s,_=Re.useMemo((()=>{const s=createSubscription(u);return{store:u,subscription:s,getServerState:a?()=>a:void 0}}),[u,a]),w=Re.useMemo((()=>u.getState()),[u]);zk((()=>{const{subscription:s}=_;return s.onStateChange=s.notifyNestedSubs,s.trySubscribe(),w!==u.getState()&&s.notifyNestedSubs(),()=>{s.tryUnsubscribe(),s.onStateChange=void 0}}),[_,w]);const x=i||hO;return Re.createElement(x.Provider,{value:_},o)};var gO=__webpack_require__(83488),yO=__webpack_require__.n(gO);const withSystem=s=>o=>{const{fn:i}=s();class WithSystem extends Re.Component{render(){return Re.createElement(o,Mn()({},s(),this.props,this.context))}}return WithSystem.displayName=`WithSystem(${i.getDisplayName(o)})`,WithSystem},withRoot=(s,o)=>i=>{const{fn:a}=s();class WithRoot extends Re.Component{render(){return Re.createElement(mO,{store:o},Re.createElement(i,Mn()({},this.props,this.context)))}}return WithRoot.displayName=`WithRoot(${a.getDisplayName(i)})`,WithRoot},withConnect=(s,o,i)=>compose(i?withRoot(s,i):yO(),fO(((i,a)=>{const u={...a,...s()},_=o.prototype?.mapStateToProps||(s=>({state:s}));return _(i,u)})),withSystem(s))(o),handleProps=(s,o,i,a)=>{for(const u in o){const _=o[u];\"function\"==typeof _&&_(i[u],a[u],s())}},withMappedContainer=(s,o,i)=>(o,a)=>{const{fn:u}=s(),_=i(o,\"root\");class WithMappedContainer extends Re.Component{constructor(o,i){super(o,i),handleProps(s,a,o,{})}UNSAFE_componentWillReceiveProps(o){handleProps(s,a,o,this.props)}render(){const s=Gt()(this.props,a?Object.keys(a):[]);return Re.createElement(_,s)}}return WithMappedContainer.displayName=`WithMappedContainer(${u.getDisplayName(_)})`,WithMappedContainer},render=(s,o,i,a)=>u=>{const _=i(s,o,a)(\"App\",\"root\"),{createRoot:w}=tk;w(u).render(Re.createElement(_,null))},getComponent=(s,o,i)=>(a,u,_={})=>{if(\"string\"!=typeof a)throw new TypeError(\"Need a string, to fetch a component. Was given a \"+typeof a);const w=i(a);return w?u?\"root\"===u?withConnect(s,w,o()):withConnect(s,w):w:(_.failSilently||s().log.warn(\"Could not find component:\",a),null)},getDisplayName=s=>s.displayName||s.name||\"Component\",view=({getComponents:s,getStore:o,getSystem:i})=>{const a=(u=getComponent(i,o,s),It(u,((...s)=>JSON.stringify(s))));var u;const _=(s=>utils_memoizeN(s,((...s)=>s)))(withMappedContainer(i,0,a));return{rootInjects:{getComponent:a,makeMappedContainer:_,render:render(i,o,getComponent,s)},fn:{getDisplayName}}},view_legacy=({React:s,getSystem:o,getStore:i,getComponents:a})=>{const u={},_=parseInt(s?.version,10);return _>=16&&_<18&&(u.render=((s,o,i,a)=>u=>{const _=i(s,o,a)(\"App\",\"root\");tk.render(Re.createElement(_,null),u)})(o,i,getComponent,a)),{rootInjects:u}};function downloadUrlPlugin(s){let{fn:o}=s;const i={download:s=>({errActions:i,specSelectors:a,specActions:u,getConfigs:_})=>{let{fetch:w}=o;const x=_();function next(o){if(o instanceof Error||o.status>=400)return u.updateLoadingStatus(\"failed\"),i.newThrownErr(Object.assign(new Error((o.message||o.statusText)+\" \"+s),{source:\"fetch\"})),void(!o.status&&o instanceof Error&&function checkPossibleFailReasons(){try{let o;if(\"URL\"in lt?o=new URL(s):(o=document.createElement(\"a\"),o.href=s),\"https:\"!==o.protocol&&\"https:\"===lt.location.protocol){const s=Object.assign(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${o.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:\"fetch\"});return void i.newThrownErr(s)}if(o.origin!==lt.location.origin){const s=Object.assign(new Error(`Possible cross-origin (CORS) issue? The URL origin (${o.origin}) does not match the page (${lt.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:\"fetch\"});i.newThrownErr(s)}}catch(s){return}}());u.updateLoadingStatus(\"success\"),u.updateSpec(o.text),a.url()!==s&&u.updateUrl(s)}s=s||a.url(),u.updateLoadingStatus(\"loading\"),i.clear({source:\"fetch\"}),w({url:s,loadSpec:!0,requestInterceptor:x.requestInterceptor||(s=>s),responseInterceptor:x.responseInterceptor||(s=>s),credentials:\"same-origin\",headers:{Accept:\"application/json,*/*\"}}).then(next,next)},updateLoadingStatus:s=>{let o=[null,\"loading\",\"failed\",\"success\",\"failedConfig\"];return-1===o.indexOf(s)&&console.error(`Error: ${s} is not one of ${JSON.stringify(o)}`),{type:\"spec_update_loading_status\",payload:s}}};let a={loadingStatus:Vt((s=>s||(0,ze.Map)()),(s=>s.get(\"loadingStatus\")||null))};return{statePlugins:{spec:{actions:i,reducers:{spec_update_loading_status:(s,o)=>\"string\"==typeof o.payload?s.set(\"loadingStatus\",o.payload):s},selectors:a}}}}function arrayLikeToArray_arrayLikeToArray(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=Array(o);i<o;i++)a[i]=s[i];return a}function toConsumableArray_toConsumableArray(s){return function arrayWithoutHoles_arrayWithoutHoles(s){if(Array.isArray(s))return arrayLikeToArray_arrayLikeToArray(s)}(s)||function iterableToArray_iterableToArray(s){if(\"undefined\"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s[\"@@iterator\"])return Array.from(s)}(s)||function unsupportedIterableToArray_unsupportedIterableToArray(s,o){if(s){if(\"string\"==typeof s)return arrayLikeToArray_arrayLikeToArray(s,o);var i={}.toString.call(s).slice(8,-1);return\"Object\"===i&&s.constructor&&(i=s.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(s):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?arrayLikeToArray_arrayLikeToArray(s,o):void 0}}(s)||function nonIterableSpread_nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function typeof_typeof(s){return typeof_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},typeof_typeof(s)}function toPropertyKey(s){var o=function toPrimitive(s,o){if(\"object\"!=typeof_typeof(s)||!s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof_typeof(a))return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof_typeof(o)?o:o+\"\"}function defineProperty_defineProperty(s,o,i){return(o=toPropertyKey(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function extends_extends(){return extends_extends=Object.assign?Object.assign.bind():function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},extends_extends.apply(null,arguments)}function create_element_ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?create_element_ownKeys(Object(i),!0).forEach((function(o){defineProperty_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):create_element_ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}var vO={};function createStyleObject(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;return function getClassNameCombinations(s){if(0===s.length||1===s.length)return s;var o=s.join(\".\");return vO[o]||(vO[o]=function powerSetPermutations(s){var o=s.length;return 0===o||1===o?s:2===o?[s[0],s[1],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0])]:3===o?[s[0],s[1],s[2],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2]),\"\".concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0])]:o>=4?[s[0],s[1],s[2],s[3],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[3]),\"\".concat(s[3],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[1],\".\").concat(s[0])]:void 0}(s)),vO[o]}(s.filter((function(s){return\"token\"!==s}))).reduce((function(s,o){return _objectSpread(_objectSpread({},s),i[o])}),o)}function createClassNameString(s){return s.join(\" \")}function createElement(s){var o=s.node,i=s.stylesheet,a=s.style,u=void 0===a?{}:a,_=s.useInlineStyles,w=s.key,x=o.properties,C=o.type,j=o.tagName,L=o.value;if(\"text\"===C)return L;if(j){var B,$=function createChildren(s,o){var i=0;return function(a){return i+=1,a.map((function(a,u){return createElement({node:a,stylesheet:s,useInlineStyles:o,key:\"code-segment-\".concat(i,\"-\").concat(u)})}))}}(i,_);if(_){var V=Object.keys(i).reduce((function(s,o){return o.split(\".\").forEach((function(o){s.includes(o)||s.push(o)})),s}),[]),U=x.className&&x.className.includes(\"token\")?[\"token\"]:[],z=x.className&&U.concat(x.className.filter((function(s){return!V.includes(s)})));B=_objectSpread(_objectSpread({},x),{},{className:createClassNameString(z)||void 0,style:createStyleObject(x.className,Object.assign({},x.style,u),i)})}else B=_objectSpread(_objectSpread({},x),{},{className:createClassNameString(x.className)});var Y=$(o.children);return Re.createElement(j,extends_extends({key:w},B),Y)}}var bO=[\"language\",\"children\",\"style\",\"customStyle\",\"codeTagProps\",\"useInlineStyles\",\"showLineNumbers\",\"showInlineLineNumbers\",\"startingLineNumber\",\"lineNumberContainerStyle\",\"lineNumberStyle\",\"wrapLines\",\"wrapLongLines\",\"lineProps\",\"renderer\",\"PreTag\",\"CodeTag\",\"code\",\"astGenerator\"];function highlight_ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function highlight_objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?highlight_ownKeys(Object(i),!0).forEach((function(o){defineProperty_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):highlight_ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}var _O=/\\n/g;function AllLineNumbers(s){var o=s.codeString,i=s.codeStyle,a=s.containerStyle,u=void 0===a?{float:\"left\",paddingRight:\"10px\"}:a,_=s.numberStyle,w=void 0===_?{}:_,x=s.startingLineNumber;return Re.createElement(\"code\",{style:Object.assign({},i,u)},function getAllLineNumbers(s){var o=s.lines,i=s.startingLineNumber,a=s.style;return o.map((function(s,o){var u=o+i;return Re.createElement(\"span\",{key:\"line-\".concat(o),className:\"react-syntax-highlighter-line-number\",style:\"function\"==typeof a?a(u):a},\"\".concat(u,\"\\n\"))}))}({lines:o.replace(/\\n$/,\"\").split(\"\\n\"),style:w,startingLineNumber:x}))}function getInlineLineNumber(s,o){return{type:\"element\",tagName:\"span\",properties:{key:\"line-number--\".concat(s),className:[\"comment\",\"linenumber\",\"react-syntax-highlighter-line-number\"],style:o},children:[{type:\"text\",value:s}]}}function assembleLineNumberStyles(s,o,i){var a,u={display:\"inline-block\",minWidth:(a=i,\"\".concat(a.toString().length,\".25em\")),paddingRight:\"1em\",textAlign:\"right\",userSelect:\"none\"},_=\"function\"==typeof s?s(o):s;return highlight_objectSpread(highlight_objectSpread({},u),_)}function createLineElement(s){var o=s.children,i=s.lineNumber,a=s.lineNumberStyle,u=s.largestLineNumber,_=s.showInlineLineNumbers,w=s.lineProps,x=void 0===w?{}:w,C=s.className,j=void 0===C?[]:C,L=s.showLineNumbers,B=s.wrapLongLines,$=s.wrapLines,V=void 0!==$&&$?highlight_objectSpread({},\"function\"==typeof x?x(i):x):{};if(V.className=V.className?[].concat(toConsumableArray_toConsumableArray(V.className.trim().split(/\\s+/)),toConsumableArray_toConsumableArray(j)):j,i&&_){var U=assembleLineNumberStyles(a,i,u);o.unshift(getInlineLineNumber(i,U))}return B&L&&(V.style=highlight_objectSpread({display:\"flex\"},V.style)),{type:\"element\",tagName:\"span\",properties:V,children:o}}function flattenCodeTree(s){for(var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=0;a<s.length;a++){var u=s[a];if(\"text\"===u.type)i.push(createLineElement({children:[u],className:toConsumableArray_toConsumableArray(new Set(o))}));else if(u.children){var _=o.concat(u.properties.className);flattenCodeTree(u.children,_).forEach((function(s){return i.push(s)}))}}return i}function processLines(s,o,i,a,u,_,w,x,C){var j,L=flattenCodeTree(s.value),B=[],$=-1,V=0;function createLine(s,_){var j=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return o||j.length>0?function createWrappedLine(s,_){return createLineElement({children:s,lineNumber:_,lineNumberStyle:x,largestLineNumber:w,showInlineLineNumbers:u,lineProps:i,className:arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],showLineNumbers:a,wrapLongLines:C,wrapLines:o})}(s,_,j):function createUnwrappedLine(s,o){if(a&&o&&u){var i=assembleLineNumberStyles(x,o,w);s.unshift(getInlineLineNumber(o,i))}return s}(s,_)}for(var U=function _loop(){var s=L[V],o=s.children[0].value,i=function getNewLines(s){return s.match(_O)}(o);if(i){var u=o.split(\"\\n\");u.forEach((function(o,i){var w=a&&B.length+_,x={type:\"text\",value:\"\".concat(o,\"\\n\")};if(0===i){var C=createLine(L.slice($+1,V).concat(createLineElement({children:[x],className:s.properties.className})),w);B.push(C)}else if(i===u.length-1){var j=L[V+1]&&L[V+1].children&&L[V+1].children[0],U={type:\"text\",value:\"\".concat(o)};if(j){var z=createLineElement({children:[U],className:s.properties.className});L.splice(V+1,0,z)}else{var Y=createLine([U],w,s.properties.className);B.push(Y)}}else{var Z=createLine([x],w,s.properties.className);B.push(Z)}})),$=V}V++};V<L.length;)U();if($!==L.length-1){var z=L.slice($+1,L.length);if(z&&z.length){var Y=createLine(z,a&&B.length+_);B.push(Y)}}return o?B:(j=[]).concat.apply(j,B)}function defaultRenderer(s){var o=s.rows,i=s.stylesheet,a=s.useInlineStyles;return o.map((function(s,o){return createElement({node:s,stylesheet:i,useInlineStyles:a,key:\"code-segement\".concat(o)})}))}function isHighlightJs(s){return s&&void 0!==s.highlightAuto}var SO=__webpack_require__(43768),EO=function highlight(s,o){return function SyntaxHighlighter(i){var a=i.language,u=i.children,_=i.style,w=void 0===_?o:_,x=i.customStyle,C=void 0===x?{}:x,j=i.codeTagProps,L=void 0===j?{className:a?\"language-\".concat(a):void 0,style:highlight_objectSpread(highlight_objectSpread({},w['code[class*=\"language-\"]']),w['code[class*=\"language-'.concat(a,'\"]')])}:j,B=i.useInlineStyles,$=void 0===B||B,V=i.showLineNumbers,U=void 0!==V&&V,z=i.showInlineLineNumbers,Y=void 0===z||z,Z=i.startingLineNumber,ee=void 0===Z?1:Z,ie=i.lineNumberContainerStyle,ae=i.lineNumberStyle,ce=void 0===ae?{}:ae,le=i.wrapLines,pe=i.wrapLongLines,de=void 0!==pe&&pe,fe=i.lineProps,ye=void 0===fe?{}:fe,be=i.renderer,_e=i.PreTag,Se=void 0===_e?\"pre\":_e,we=i.CodeTag,xe=void 0===we?\"code\":we,Pe=i.code,Te=void 0===Pe?(Array.isArray(u)?u[0]:u)||\"\":Pe,$e=i.astGenerator,qe=function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i={};for(var a in s)if({}.hasOwnProperty.call(s,a)){if(-1!==o.indexOf(a))continue;i[a]=s[a]}return i}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],-1===o.indexOf(i)&&{}.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}(i,bO);$e=$e||s;var ze=U?Re.createElement(AllLineNumbers,{containerStyle:ie,codeStyle:L.style||{},numberStyle:ce,startingLineNumber:ee,codeString:Te}):null,We=w.hljs||w['pre[class*=\"language-\"]']||{backgroundColor:\"#fff\"},He=isHighlightJs($e)?\"hljs\":\"prismjs\",Ye=$?Object.assign({},qe,{style:Object.assign({},We,C)}):Object.assign({},qe,{className:qe.className?\"\".concat(He,\" \").concat(qe.className):He,style:Object.assign({},C)});if(L.style=highlight_objectSpread(de?{whiteSpace:\"pre-wrap\"}:{whiteSpace:\"pre\"},L.style),!$e)return Re.createElement(Se,Ye,ze,Re.createElement(xe,L,Te));(void 0===le&&be||de)&&(le=!0),be=be||defaultRenderer;var Xe=[{type:\"text\",value:Te}],Qe=function getCodeTree(s){var o=s.astGenerator,i=s.language,a=s.code,u=s.defaultCodeValue;if(isHighlightJs(o)){var _=function(s,o){return-1!==s.listLanguages().indexOf(o)}(o,i);return\"text\"===i?{value:u,language:\"text\"}:_?o.highlight(i,a):o.highlightAuto(a)}try{return i&&\"text\"!==i?{value:o.highlight(a,i)}:{value:u}}catch(s){return{value:u}}}({astGenerator:$e,language:a,code:Te,defaultCodeValue:Xe});null===Qe.language&&(Qe.value=Xe);var et=Qe.value.length;1===et&&\"text\"===Qe.value[0].type&&(et=Qe.value[0].value.split(\"\\n\").length);var tt=processLines(Qe,le,ye,U,Y,ee,et+ee,ce,de);return Re.createElement(Se,Ye,Re.createElement(xe,L,!Y&&ze,be({rows:tt,stylesheet:w,useInlineStyles:$})))}}(SO,{});EO.registerLanguage=SO.registerLanguage;const wO=EO;var xO=__webpack_require__(95089);const kO=__webpack_require__.n(xO)();var OO=__webpack_require__(65772);const CO=__webpack_require__.n(OO)();var AO=__webpack_require__(17285);const jO=__webpack_require__.n(AO)();var IO=__webpack_require__(35344);const PO=__webpack_require__.n(IO)();var TO=__webpack_require__(17533);const NO=__webpack_require__.n(TO)();var MO=__webpack_require__(73402);const RO=__webpack_require__.n(MO)();var DO=__webpack_require__(26571);const LO=__webpack_require__.n(DO)(),after_load=()=>{wO.registerLanguage(\"json\",CO),wO.registerLanguage(\"js\",kO),wO.registerLanguage(\"xml\",jO),wO.registerLanguage(\"yaml\",NO),wO.registerLanguage(\"http\",RO),wO.registerLanguage(\"bash\",PO),wO.registerLanguage(\"powershell\",LO),wO.registerLanguage(\"javascript\",kO)},FO={hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#333\",color:\"white\"},\"hljs-name\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-code\":{fontStyle:\"italic\",color:\"#888\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-tag\":{color:\"#62c8f3\"},\"hljs-variable\":{color:\"#ade5fc\"},\"hljs-template-variable\":{color:\"#ade5fc\"},\"hljs-selector-id\":{color:\"#ade5fc\"},\"hljs-selector-class\":{color:\"#ade5fc\"},\"hljs-string\":{color:\"#a2fca2\"},\"hljs-bullet\":{color:\"#d36363\"},\"hljs-type\":{color:\"#ffa\"},\"hljs-title\":{color:\"#ffa\"},\"hljs-section\":{color:\"#ffa\"},\"hljs-attribute\":{color:\"#ffa\"},\"hljs-quote\":{color:\"#ffa\"},\"hljs-built_in\":{color:\"#ffa\"},\"hljs-builtin-name\":{color:\"#ffa\"},\"hljs-number\":{color:\"#d36363\"},\"hljs-symbol\":{color:\"#d36363\"},\"hljs-keyword\":{color:\"#fcc28c\"},\"hljs-selector-tag\":{color:\"#fcc28c\"},\"hljs-literal\":{color:\"#fcc28c\"},\"hljs-comment\":{color:\"#888\"},\"hljs-deletion\":{color:\"#333\",backgroundColor:\"#fc9b9b\"},\"hljs-regexp\":{color:\"#c6b4f0\"},\"hljs-link\":{color:\"#c6b4f0\"},\"hljs-meta\":{color:\"#fc9b9b\"},\"hljs-addition\":{backgroundColor:\"#a2fca2\",color:\"#333\"}},BO={agate:FO,arta:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#222\",color:\"#aaa\"},\"hljs-subst\":{color:\"#aaa\"},\"hljs-section\":{color:\"#fff\",fontWeight:\"bold\"},\"hljs-comment\":{color:\"#444\"},\"hljs-quote\":{color:\"#444\"},\"hljs-meta\":{color:\"#444\"},\"hljs-string\":{color:\"#ffcc33\"},\"hljs-symbol\":{color:\"#ffcc33\"},\"hljs-bullet\":{color:\"#ffcc33\"},\"hljs-regexp\":{color:\"#ffcc33\"},\"hljs-number\":{color:\"#00cc66\"},\"hljs-addition\":{color:\"#00cc66\"},\"hljs-built_in\":{color:\"#32aaee\"},\"hljs-builtin-name\":{color:\"#32aaee\"},\"hljs-literal\":{color:\"#32aaee\"},\"hljs-type\":{color:\"#32aaee\"},\"hljs-template-variable\":{color:\"#32aaee\"},\"hljs-attribute\":{color:\"#32aaee\"},\"hljs-link\":{color:\"#32aaee\"},\"hljs-keyword\":{color:\"#6644aa\"},\"hljs-selector-tag\":{color:\"#6644aa\"},\"hljs-name\":{color:\"#6644aa\"},\"hljs-selector-id\":{color:\"#6644aa\"},\"hljs-selector-class\":{color:\"#6644aa\"},\"hljs-title\":{color:\"#bb1166\"},\"hljs-variable\":{color:\"#bb1166\"},\"hljs-deletion\":{color:\"#bb1166\"},\"hljs-template-tag\":{color:\"#bb1166\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-emphasis\":{fontStyle:\"italic\"}},monokai:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#272822\",color:\"#ddd\"},\"hljs-tag\":{color:\"#f92672\"},\"hljs-keyword\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-selector-tag\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-literal\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-strong\":{color:\"#f92672\"},\"hljs-name\":{color:\"#f92672\"},\"hljs-code\":{color:\"#66d9ef\"},\"hljs-class .hljs-title\":{color:\"white\"},\"hljs-attribute\":{color:\"#bf79db\"},\"hljs-symbol\":{color:\"#bf79db\"},\"hljs-regexp\":{color:\"#bf79db\"},\"hljs-link\":{color:\"#bf79db\"},\"hljs-string\":{color:\"#a6e22e\"},\"hljs-bullet\":{color:\"#a6e22e\"},\"hljs-subst\":{color:\"#a6e22e\"},\"hljs-title\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-section\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-emphasis\":{color:\"#a6e22e\"},\"hljs-type\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-built_in\":{color:\"#a6e22e\"},\"hljs-builtin-name\":{color:\"#a6e22e\"},\"hljs-selector-attr\":{color:\"#a6e22e\"},\"hljs-selector-pseudo\":{color:\"#a6e22e\"},\"hljs-addition\":{color:\"#a6e22e\"},\"hljs-variable\":{color:\"#a6e22e\"},\"hljs-template-tag\":{color:\"#a6e22e\"},\"hljs-template-variable\":{color:\"#a6e22e\"},\"hljs-comment\":{color:\"#75715e\"},\"hljs-quote\":{color:\"#75715e\"},\"hljs-deletion\":{color:\"#75715e\"},\"hljs-meta\":{color:\"#75715e\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-selector-id\":{fontWeight:\"bold\"}},nord:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#2E3440\",color:\"#D8DEE9\"},\"hljs-subst\":{color:\"#D8DEE9\"},\"hljs-selector-tag\":{color:\"#81A1C1\"},\"hljs-selector-id\":{color:\"#8FBCBB\",fontWeight:\"bold\"},\"hljs-selector-class\":{color:\"#8FBCBB\"},\"hljs-selector-attr\":{color:\"#8FBCBB\"},\"hljs-selector-pseudo\":{color:\"#88C0D0\"},\"hljs-addition\":{backgroundColor:\"rgba(163, 190, 140, 0.5)\"},\"hljs-deletion\":{backgroundColor:\"rgba(191, 97, 106, 0.5)\"},\"hljs-built_in\":{color:\"#8FBCBB\"},\"hljs-type\":{color:\"#8FBCBB\"},\"hljs-class\":{color:\"#8FBCBB\"},\"hljs-function\":{color:\"#88C0D0\"},\"hljs-function > .hljs-title\":{color:\"#88C0D0\"},\"hljs-keyword\":{color:\"#81A1C1\"},\"hljs-literal\":{color:\"#81A1C1\"},\"hljs-symbol\":{color:\"#81A1C1\"},\"hljs-number\":{color:\"#B48EAD\"},\"hljs-regexp\":{color:\"#EBCB8B\"},\"hljs-string\":{color:\"#A3BE8C\"},\"hljs-title\":{color:\"#8FBCBB\"},\"hljs-params\":{color:\"#D8DEE9\"},\"hljs-bullet\":{color:\"#81A1C1\"},\"hljs-code\":{color:\"#8FBCBB\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-formula\":{color:\"#8FBCBB\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-link:hover\":{textDecoration:\"underline\"},\"hljs-quote\":{color:\"#4C566A\"},\"hljs-comment\":{color:\"#4C566A\"},\"hljs-doctag\":{color:\"#8FBCBB\"},\"hljs-meta\":{color:\"#5E81AC\"},\"hljs-meta-keyword\":{color:\"#5E81AC\"},\"hljs-meta-string\":{color:\"#A3BE8C\"},\"hljs-attr\":{color:\"#8FBCBB\"},\"hljs-attribute\":{color:\"#D8DEE9\"},\"hljs-builtin-name\":{color:\"#81A1C1\"},\"hljs-name\":{color:\"#81A1C1\"},\"hljs-section\":{color:\"#88C0D0\"},\"hljs-tag\":{color:\"#81A1C1\"},\"hljs-variable\":{color:\"#D8DEE9\"},\"hljs-template-variable\":{color:\"#D8DEE9\"},\"hljs-template-tag\":{color:\"#5E81AC\"},\"abnf .hljs-attribute\":{color:\"#88C0D0\"},\"abnf .hljs-symbol\":{color:\"#EBCB8B\"},\"apache .hljs-attribute\":{color:\"#88C0D0\"},\"apache .hljs-section\":{color:\"#81A1C1\"},\"arduino .hljs-built_in\":{color:\"#88C0D0\"},\"aspectj .hljs-meta\":{color:\"#D08770\"},\"aspectj > .hljs-title\":{color:\"#88C0D0\"},\"bnf .hljs-attribute\":{color:\"#8FBCBB\"},\"clojure .hljs-name\":{color:\"#88C0D0\"},\"clojure .hljs-symbol\":{color:\"#EBCB8B\"},\"coq .hljs-built_in\":{color:\"#88C0D0\"},\"cpp .hljs-meta-string\":{color:\"#8FBCBB\"},\"css .hljs-built_in\":{color:\"#88C0D0\"},\"css .hljs-keyword\":{color:\"#D08770\"},\"diff .hljs-meta\":{color:\"#8FBCBB\"},\"ebnf .hljs-attribute\":{color:\"#8FBCBB\"},\"glsl .hljs-built_in\":{color:\"#88C0D0\"},\"groovy .hljs-meta:not(:first-child)\":{color:\"#D08770\"},\"haxe .hljs-meta\":{color:\"#D08770\"},\"java .hljs-meta\":{color:\"#D08770\"},\"ldif .hljs-attribute\":{color:\"#8FBCBB\"},\"lisp .hljs-name\":{color:\"#88C0D0\"},\"lua .hljs-built_in\":{color:\"#88C0D0\"},\"moonscript .hljs-built_in\":{color:\"#88C0D0\"},\"nginx .hljs-attribute\":{color:\"#88C0D0\"},\"nginx .hljs-section\":{color:\"#5E81AC\"},\"pf .hljs-built_in\":{color:\"#88C0D0\"},\"processing .hljs-built_in\":{color:\"#88C0D0\"},\"scss .hljs-keyword\":{color:\"#81A1C1\"},\"stylus .hljs-keyword\":{color:\"#81A1C1\"},\"swift .hljs-meta\":{color:\"#D08770\"},\"vim .hljs-built_in\":{color:\"#88C0D0\",fontStyle:\"italic\"},\"yaml .hljs-meta\":{color:\"#D08770\"}},obsidian:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#282b2e\",color:\"#e0e2e4\"},\"hljs-keyword\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-selector-tag\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-literal\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-selector-id\":{color:\"#93c763\"},\"hljs-number\":{color:\"#ffcd22\"},\"hljs-attribute\":{color:\"#668bb0\"},\"hljs-code\":{color:\"white\"},\"hljs-class .hljs-title\":{color:\"white\"},\"hljs-section\":{color:\"white\",fontWeight:\"bold\"},\"hljs-regexp\":{color:\"#d39745\"},\"hljs-link\":{color:\"#d39745\"},\"hljs-meta\":{color:\"#557182\"},\"hljs-tag\":{color:\"#8cbbad\"},\"hljs-name\":{color:\"#8cbbad\",fontWeight:\"bold\"},\"hljs-bullet\":{color:\"#8cbbad\"},\"hljs-subst\":{color:\"#8cbbad\"},\"hljs-emphasis\":{color:\"#8cbbad\"},\"hljs-type\":{color:\"#8cbbad\",fontWeight:\"bold\"},\"hljs-built_in\":{color:\"#8cbbad\"},\"hljs-selector-attr\":{color:\"#8cbbad\"},\"hljs-selector-pseudo\":{color:\"#8cbbad\"},\"hljs-addition\":{color:\"#8cbbad\"},\"hljs-variable\":{color:\"#8cbbad\"},\"hljs-template-tag\":{color:\"#8cbbad\"},\"hljs-template-variable\":{color:\"#8cbbad\"},\"hljs-string\":{color:\"#ec7600\"},\"hljs-symbol\":{color:\"#ec7600\"},\"hljs-comment\":{color:\"#818e96\"},\"hljs-quote\":{color:\"#818e96\"},\"hljs-deletion\":{color:\"#818e96\"},\"hljs-selector-class\":{color:\"#A082BD\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-title\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"}},\"tomorrow-night\":{\"hljs-comment\":{color:\"#969896\"},\"hljs-quote\":{color:\"#969896\"},\"hljs-variable\":{color:\"#cc6666\"},\"hljs-template-variable\":{color:\"#cc6666\"},\"hljs-tag\":{color:\"#cc6666\"},\"hljs-name\":{color:\"#cc6666\"},\"hljs-selector-id\":{color:\"#cc6666\"},\"hljs-selector-class\":{color:\"#cc6666\"},\"hljs-regexp\":{color:\"#cc6666\"},\"hljs-deletion\":{color:\"#cc6666\"},\"hljs-number\":{color:\"#de935f\"},\"hljs-built_in\":{color:\"#de935f\"},\"hljs-builtin-name\":{color:\"#de935f\"},\"hljs-literal\":{color:\"#de935f\"},\"hljs-type\":{color:\"#de935f\"},\"hljs-params\":{color:\"#de935f\"},\"hljs-meta\":{color:\"#de935f\"},\"hljs-link\":{color:\"#de935f\"},\"hljs-attribute\":{color:\"#f0c674\"},\"hljs-string\":{color:\"#b5bd68\"},\"hljs-symbol\":{color:\"#b5bd68\"},\"hljs-bullet\":{color:\"#b5bd68\"},\"hljs-addition\":{color:\"#b5bd68\"},\"hljs-title\":{color:\"#81a2be\"},\"hljs-section\":{color:\"#81a2be\"},\"hljs-keyword\":{color:\"#b294bb\"},\"hljs-selector-tag\":{color:\"#b294bb\"},hljs:{display:\"block\",overflowX:\"auto\",background:\"#1d1f21\",color:\"#c5c8c6\",padding:\"0.5em\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-strong\":{fontWeight:\"bold\"}},idea:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",color:\"#000\",background:\"#fff\"},\"hljs-subst\":{fontWeight:\"normal\",color:\"#000\"},\"hljs-title\":{fontWeight:\"normal\",color:\"#000\"},\"hljs-comment\":{color:\"#808080\",fontStyle:\"italic\"},\"hljs-quote\":{color:\"#808080\",fontStyle:\"italic\"},\"hljs-meta\":{color:\"#808000\"},\"hljs-tag\":{background:\"#efefef\"},\"hljs-section\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-name\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-literal\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-keyword\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-tag\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-type\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-id\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-class\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-attribute\":{fontWeight:\"bold\",color:\"#0000ff\"},\"hljs-number\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-regexp\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-link\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-string\":{color:\"#008000\",fontWeight:\"bold\"},\"hljs-symbol\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-bullet\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-formula\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-doctag\":{textDecoration:\"underline\"},\"hljs-variable\":{color:\"#660e7a\"},\"hljs-template-variable\":{color:\"#660e7a\"},\"hljs-addition\":{background:\"#baeeba\"},\"hljs-deletion\":{background:\"#ffc8bd\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-strong\":{fontWeight:\"bold\"}}},$O=FO,components_SyntaxHighlighter=({language:s,className:o=\"\",getConfigs:i,syntaxHighlighting:a={},children:u=\"\"})=>{const _=i().syntaxHighlight.theme,{styles:w,defaultStyle:x}=a,C=w?.[_]??x;return Re.createElement(wO,{language:s,className:o,style:C},u)};var qO=__webpack_require__(5419),VO=__webpack_require__.n(qO);const components_HighlightCode=({fileName:s=\"response.txt\",className:o,downloadable:i,getComponent:a,canCopy:u,language:_,children:w})=>{const x=(0,Re.useRef)(null),C=a(\"SyntaxHighlighter\",!0),handlePreventYScrollingBeyondElement=s=>{const{target:o,deltaY:i}=s,{scrollHeight:a,offsetHeight:u,scrollTop:_}=o;a>u&&(0===_&&i<0||u+_>=a&&i>0)&&s.preventDefault()};return(0,Re.useEffect)((()=>{const s=Array.from(x.current.childNodes).filter((s=>!!s.nodeType&&s.classList.contains(\"microlight\")));return s.forEach((s=>s.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{s.forEach((s=>s.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[w,o,_]),Re.createElement(\"div\",{className:\"highlight-code\",ref:x},u&&Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:w},Re.createElement(\"button\",null))),i?Re.createElement(\"button\",{className:\"download-contents\",onClick:()=>{VO()(w,s)}},\"Download\"):null,Re.createElement(C,{language:_,className:Jn()(o,\"microlight\"),renderPlainText:({children:s,PlainTextViewer:i})=>Re.createElement(i,{className:o},s)},w))},components_PlainTextViewer=({className:s=\"\",children:o})=>Re.createElement(\"pre\",{className:Jn()(\"microlight\",s)},o),wrap_components_SyntaxHighlighter=(s,o)=>({renderPlainText:i,children:a,...u})=>{const _=o.getConfigs().syntaxHighlight.activated,w=o.getComponent(\"PlainTextViewer\");return _||\"function\"!=typeof i?_?Re.createElement(s,u,a):Re.createElement(w,null,a):i({children:a,PlainTextViewer:w})},SyntaxHighlightingPlugin1=()=>({afterLoad:after_load,rootInjects:{syntaxHighlighting:{styles:BO,defaultStyle:$O}},components:{SyntaxHighlighter:components_SyntaxHighlighter,HighlightCode:components_HighlightCode,PlainTextViewer:components_PlainTextViewer}}),SyntaxHighlightingPlugin2=()=>({wrapComponents:{SyntaxHighlighter:wrap_components_SyntaxHighlighter}}),syntax_highlighting=()=>[SyntaxHighlightingPlugin1,SyntaxHighlightingPlugin2],versions_after_load=()=>{const{GIT_DIRTY:s,GIT_COMMIT:o,PACKAGE_VERSION:i,BUILD_TIME:a}={PACKAGE_VERSION:\"5.22.0\",GIT_COMMIT:\"g0a438f23\",GIT_DIRTY:!0,BUILD_TIME:\"Wed, 21 May 2025 12:43:49 GMT\"};lt.versions=lt.versions||{},lt.versions.swaggerUI={version:i,gitRevision:o,gitDirty:s,buildTimestamp:a}},versions=()=>({afterLoad:versions_after_load});var UO=__webpack_require__(47248),zO=__webpack_require__.n(UO);const WO=console.error,withErrorBoundary=s=>o=>{const{getComponent:i,fn:a}=s(),u=i(\"ErrorBoundary\"),_=a.getDisplayName(o);class WithErrorBoundary extends Re.Component{render(){return Re.createElement(u,{targetName:_,getComponent:i,fn:a},Re.createElement(o,Mn()({},this.props,this.context)))}}var w;return WithErrorBoundary.displayName=`WithErrorBoundary(${_})`,(w=o).prototype&&w.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=o.prototype.mapStateToProps),WithErrorBoundary},fallback=({name:s})=>Re.createElement(\"div\",{className:\"fallback\"},\"😱 \",Re.createElement(\"i\",null,\"Could not render \",\"t\"===s?\"this component\":s,\", see the console.\"));class ErrorBoundary extends Re.Component{static defaultProps={targetName:\"this component\",getComponent:()=>fallback,fn:{componentDidCatch:WO},children:null};static getDerivedStateFromError(s){return{hasError:!0,error:s}}constructor(...s){super(...s),this.state={hasError:!1,error:null}}componentDidCatch(s,o){this.props.fn.componentDidCatch(s,o)}render(){const{getComponent:s,targetName:o,children:i}=this.props;if(this.state.hasError){const i=s(\"Fallback\");return Re.createElement(i,{name:o})}return i}}const JO=ErrorBoundary,safe_render=({componentList:s=[],fullOverride:o=!1}={})=>({getSystem:i})=>{const a=o?s:[\"App\",\"BaseLayout\",\"VersionPragmaFilter\",\"InfoContainer\",\"ServersContainer\",\"SchemesContainer\",\"AuthorizeBtnContainer\",\"FilterContainer\",\"Operations\",\"OperationContainer\",\"parameters\",\"responses\",\"OperationServers\",\"Models\",\"ModelWrapper\",...s],u=zO()(a,Array(a.length).fill(((s,{fn:o})=>o.withErrorBoundary(s))));return{fn:{componentDidCatch:WO,withErrorBoundary:withErrorBoundary(i)},components:{ErrorBoundary:JO,Fallback:fallback},wrapComponents:u}};class App extends Re.Component{getLayout(){const{getComponent:s,layoutSelectors:o}=this.props,i=o.current(),a=s(i,!0);return a||(()=>Re.createElement(\"h1\",null,' No layout defined for \"',i,'\" '))}render(){const s=this.getLayout();return Re.createElement(s,null)}}const HO=App;class AuthorizationPopup extends Re.Component{close=()=>{let{authActions:s}=this.props;s.showDefinitions(!1)};render(){let{authSelectors:s,authActions:o,getComponent:i,errSelectors:a,specSelectors:u,fn:{AST:_={}}}=this.props,w=s.shownDefinitions();const x=i(\"auths\"),C=i(\"CloseIcon\");return Re.createElement(\"div\",{className:\"dialog-ux\"},Re.createElement(\"div\",{className:\"backdrop-ux\"}),Re.createElement(\"div\",{className:\"modal-ux\"},Re.createElement(\"div\",{className:\"modal-dialog-ux\"},Re.createElement(\"div\",{className:\"modal-ux-inner\"},Re.createElement(\"div\",{className:\"modal-ux-header\"},Re.createElement(\"h3\",null,\"Available authorizations\"),Re.createElement(\"button\",{type:\"button\",className:\"close-modal\",onClick:this.close},Re.createElement(C,null))),Re.createElement(\"div\",{className:\"modal-ux-content\"},w.valueSeq().map(((w,C)=>Re.createElement(x,{key:C,AST:_,definitions:w,getComponent:i,errSelectors:a,authSelectors:s,authActions:o,specSelectors:u}))))))))}}class AuthorizeBtn extends Re.Component{render(){let{isAuthorized:s,showPopup:o,onClick:i,getComponent:a}=this.props;const u=a(\"authorizationPopup\",!0),_=a(\"LockAuthIcon\",!0),w=a(\"UnlockAuthIcon\",!0);return Re.createElement(\"div\",{className:\"auth-wrapper\"},Re.createElement(\"button\",{className:s?\"btn authorize locked\":\"btn authorize unlocked\",onClick:i},Re.createElement(\"span\",null,\"Authorize\"),s?Re.createElement(_,null):Re.createElement(w,null)),o&&Re.createElement(u,null))}}class AuthorizeBtnContainer extends Re.Component{render(){const{authActions:s,authSelectors:o,specSelectors:i,getComponent:a}=this.props,u=i.securityDefinitions(),_=o.definitionsToAuthorize(),w=a(\"authorizeBtn\");return u?Re.createElement(w,{onClick:()=>s.showDefinitions(_),isAuthorized:!!o.authorized().size,showPopup:!!o.shownDefinitions(),getComponent:a}):null}}class AuthorizeOperationBtn extends Re.Component{onClick=s=>{s.stopPropagation();let{onClick:o}=this.props;o&&o()};render(){let{isAuthorized:s,getComponent:o}=this.props;const i=o(\"LockAuthOperationIcon\",!0),a=o(\"UnlockAuthOperationIcon\",!0);return Re.createElement(\"button\",{className:\"authorization__btn\",\"aria-label\":s?\"authorization button locked\":\"authorization button unlocked\",onClick:this.onClick},s?Re.createElement(i,{className:\"locked\"}):Re.createElement(a,{className:\"unlocked\"}))}}class Auths extends Re.Component{constructor(s,o){super(s,o),this.state={}}onAuthChange=s=>{let{name:o}=s;this.setState({[o]:s})};submitAuth=s=>{s.preventDefault();let{authActions:o}=this.props;o.authorizeWithPersistOption(this.state)};logoutClick=s=>{s.preventDefault();let{authActions:o,definitions:i}=this.props,a=i.map(((s,o)=>o)).toArray();this.setState(a.reduce(((s,o)=>(s[o]=\"\",s)),{})),o.logoutWithPersistOption(a)};close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};render(){let{definitions:s,getComponent:o,authSelectors:i,errSelectors:a}=this.props;const u=o(\"AuthItem\"),_=o(\"oauth2\",!0),w=o(\"Button\");let x=i.authorized(),C=s.filter(((s,o)=>!!x.get(o))),j=s.filter((s=>\"oauth2\"!==s.get(\"type\"))),L=s.filter((s=>\"oauth2\"===s.get(\"type\")));return Re.createElement(\"div\",{className:\"auth-container\"},!!j.size&&Re.createElement(\"form\",{onSubmit:this.submitAuth},j.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray(),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},j.size===C.size?Re.createElement(w,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(w,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),Re.createElement(w,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),L&&L.size?Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"scope-def\"},Re.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),Re.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),s.filter((s=>\"oauth2\"===s.get(\"type\"))).map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(_,{authorized:x,schema:s,name:o})))).toArray()):null)}}class auth_item_Auths extends Re.Component{render(){let{schema:s,name:o,getComponent:i,onAuthChange:a,authorized:u,errSelectors:_,authSelectors:w}=this.props;const x=i(\"apiKeyAuth\"),C=i(\"basicAuth\");let j;const L=s.get(\"type\");switch(L){case\"apiKey\":j=Re.createElement(x,{key:o,schema:s,name:o,errSelectors:_,authorized:u,getComponent:i,onChange:a,authSelectors:w});break;case\"basic\":j=Re.createElement(C,{key:o,schema:s,name:o,errSelectors:_,authorized:u,getComponent:i,onChange:a,authSelectors:w});break;default:j=Re.createElement(\"div\",{key:o},\"Unknown security definition type \",L)}return Re.createElement(\"div\",{key:`${o}-jump`},j)}}class AuthError extends Re.Component{render(){let{error:s}=this.props,o=s.get(\"level\"),i=s.get(\"message\"),a=s.get(\"source\");return Re.createElement(\"div\",{className:\"errors\"},Re.createElement(\"b\",null,a,\" \",o),Re.createElement(\"span\",null,i))}}class ApiKeyAuth extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a}=this.props,u=this.getValue();this.state={name:i,schema:a,value:u}}getValue(){let{name:s,authorized:o}=this.props;return o&&o.getIn([s,\"value\"])}onChange=s=>{let{onChange:o}=this.props,i=s.target.value,a=Object.assign({},this.state,{value:i});this.setState(a),o(a)};render(){let{schema:s,getComponent:o,errSelectors:i,name:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"Markdown\",!0),L=o(\"JumpToPath\",!0),B=u.selectAuthPath(a);let $=this.getValue(),V=i.allErrors().filter((s=>s.get(\"authId\")===a));return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a||s.get(\"name\")),\" (apiKey)\",Re.createElement(L,{path:B})),$&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"p\",null,\"Name: \",Re.createElement(\"code\",null,s.get(\"name\")))),Re.createElement(w,null,Re.createElement(\"p\",null,\"In: \",Re.createElement(\"code\",null,s.get(\"in\")))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"api_key_value\"},\"Value:\"),$?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"api_key_value\",type:\"text\",onChange:this.onChange,autoFocus:!0}))),V.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}}class BasicAuth extends Re.Component{constructor(s,o){super(s,o);let{schema:i,name:a}=this.props,u=this.getValue().username;this.state={name:a,schema:i,value:u?{username:u}:{}}}getValue(){let{authorized:s,name:o}=this.props;return s&&s.getIn([o,\"value\"])||{}}onChange=s=>{let{onChange:o}=this.props,{value:i,name:a}=s.target,u=this.state.value;u[a]=i,this.setState({value:u}),o(this.state)};render(){let{schema:s,getComponent:o,name:i,errSelectors:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"JumpToPath\",!0),L=o(\"Markdown\",!0),B=u.selectAuthPath(i);let $=this.getValue().username,V=a.allErrors().filter((s=>s.get(\"authId\")===i));return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,\"Basic authorization\",Re.createElement(j,{path:B})),$&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(L,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth_username\"},\"Username:\"),$?Re.createElement(\"code\",null,\" \",$,\" \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth_username\",type:\"text\",required:\"required\",name:\"username\",onChange:this.onChange,autoFocus:!0}))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth_password\"},\"Password:\"),$?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth_password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",onChange:this.onChange}))),V.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}}function example_Example(s){const{example:o,showValue:i,getComponent:a}=s,u=a(\"Markdown\",!0),_=a(\"HighlightCode\",!0);return o&&ze.Map.isMap(o)?Re.createElement(\"div\",{className:\"example\"},o.get(\"description\")?Re.createElement(\"section\",{className:\"example__section\"},Re.createElement(\"div\",{className:\"example__section-header\"},\"Example Description\"),Re.createElement(\"p\",null,Re.createElement(u,{source:o.get(\"description\")}))):null,i&&o.has(\"value\")?Re.createElement(\"section\",{className:\"example__section\"},Re.createElement(\"div\",{className:\"example__section-header\"},\"Example Value\"),Re.createElement(_,null,stringify(o.get(\"value\")))):null):null}class ExamplesSelect extends Re.PureComponent{static defaultProps={examples:(0,ze.Map)({}),onSelect:(...s)=>console.log(\"DEBUG: ExamplesSelect was not given an onSelect callback\",...s),currentExampleKey:null,showLabels:!0};_onSelect=(s,{isSyntheticChange:o=!1}={})=>{\"function\"==typeof this.props.onSelect&&this.props.onSelect(s,{isSyntheticChange:o})};_onDomSelect=s=>{if(\"function\"==typeof this.props.onSelect){const o=s.target.selectedOptions[0].getAttribute(\"value\");this._onSelect(o,{isSyntheticChange:!1})}};getCurrentExample=()=>{const{examples:s,currentExampleKey:o}=this.props,i=s.get(o),a=s.keySeq().first(),u=s.get(a);return i||u||(0,ze.Map)({})};componentDidMount(){const{onSelect:s,examples:o}=this.props;if(\"function\"==typeof s){const s=o.first(),i=o.keyOf(s);this._onSelect(i,{isSyntheticChange:!0})}}UNSAFE_componentWillReceiveProps(s){const{currentExampleKey:o,examples:i}=s;if(i!==this.props.examples&&!i.has(o)){const s=i.first(),o=i.keyOf(s);this._onSelect(o,{isSyntheticChange:!0})}}render(){const{examples:s,currentExampleKey:o,isValueModified:i,isModifiedValueAvailable:a,showLabels:u}=this.props;return Re.createElement(\"div\",{className:\"examples-select\"},u?Re.createElement(\"span\",{className:\"examples-select__section-label\"},\"Examples: \"):null,Re.createElement(\"select\",{className:\"examples-select-element\",onChange:this._onDomSelect,value:a&&i?\"__MODIFIED__VALUE__\":o||\"\"},a?Re.createElement(\"option\",{value:\"__MODIFIED__VALUE__\"},\"[Modified value]\"):null,s.map(((s,o)=>Re.createElement(\"option\",{key:o,value:o},ze.Map.isMap(s)&&s.get(\"summary\")||o))).valueSeq()))}}const stringifyUnlessList=s=>ze.List.isList(s)?s:stringify(s);class ExamplesSelectValueRetainer extends Re.PureComponent{static defaultProps={userHasEditedBody:!1,examples:(0,ze.Map)({}),currentNamespace:\"__DEFAULT__NAMESPACE__\",setRetainRequestBodyValueFlag:()=>{},onSelect:(...s)=>console.log(\"ExamplesSelectValueRetainer: no `onSelect` function was provided\",...s),updateValue:(...s)=>console.log(\"ExamplesSelectValueRetainer: no `updateValue` function was provided\",...s)};constructor(s){super(s);const o=this._getCurrentExampleValue();this.state={[s.currentNamespace]:(0,ze.Map)({lastUserEditedValue:this.props.currentUserInputValue,lastDownstreamValue:o,isModifiedValueSelected:this.props.userHasEditedBody||this.props.currentUserInputValue!==o})}}componentWillUnmount(){this.props.setRetainRequestBodyValueFlag(!1)}_getStateForCurrentNamespace=()=>{const{currentNamespace:s}=this.props;return(this.state[s]||(0,ze.Map)()).toObject()};_setStateForCurrentNamespace=s=>{const{currentNamespace:o}=this.props;return this._setStateForNamespace(o,s)};_setStateForNamespace=(s,o)=>{const i=(this.state[s]||(0,ze.Map)()).mergeDeep(o);return this.setState({[s]:i})};_isCurrentUserInputSameAsExampleValue=()=>{const{currentUserInputValue:s}=this.props;return this._getCurrentExampleValue()===s};_getValueForExample=(s,o)=>{const{examples:i}=o||this.props;return stringifyUnlessList((i||(0,ze.Map)({})).getIn([s,\"value\"]))};_getCurrentExampleValue=s=>{const{currentKey:o}=s||this.props;return this._getValueForExample(o,s||this.props)};_onExamplesSelect=(s,{isSyntheticChange:o}={},...i)=>{const{onSelect:a,updateValue:u,currentUserInputValue:_,userHasEditedBody:w}=this.props,{lastUserEditedValue:x}=this._getStateForCurrentNamespace(),C=this._getValueForExample(s);if(\"__MODIFIED__VALUE__\"===s)return u(stringifyUnlessList(x)),this._setStateForCurrentNamespace({isModifiedValueSelected:!0});\"function\"==typeof a&&a(s,{isSyntheticChange:o},...i),this._setStateForCurrentNamespace({lastDownstreamValue:C,isModifiedValueSelected:o&&w||!!_&&_!==C}),o||\"function\"==typeof u&&u(stringifyUnlessList(C))};UNSAFE_componentWillReceiveProps(s){const{currentUserInputValue:o,examples:i,onSelect:a,userHasEditedBody:u}=s,{lastUserEditedValue:_,lastDownstreamValue:w}=this._getStateForCurrentNamespace(),x=this._getValueForExample(s.currentKey,s),C=i.filter((s=>ze.Map.isMap(s)&&(s.get(\"value\")===o||stringify(s.get(\"value\"))===o)));if(C.size){let o;o=C.has(s.currentKey)?s.currentKey:C.keySeq().first(),a(o,{isSyntheticChange:!0})}else o!==this.props.currentUserInputValue&&o!==_&&o!==w&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(s.currentNamespace,{lastUserEditedValue:s.currentUserInputValue,isModifiedValueSelected:u||o!==x}))}render(){const{currentUserInputValue:s,examples:o,currentKey:i,getComponent:a,userHasEditedBody:u}=this.props,{lastDownstreamValue:_,lastUserEditedValue:w,isModifiedValueSelected:x}=this._getStateForCurrentNamespace(),C=a(\"ExamplesSelect\");return Re.createElement(C,{examples:o,currentExampleKey:i,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!w&&w!==_,isValueModified:void 0!==s&&x&&s!==this._getCurrentExampleValue()||u})}}function oauth2_authorize_authorize({auth:s,authActions:o,errActions:i,configs:a,authConfigs:u={},currentServer:_}){let{schema:w,scopes:x,name:C,clientId:j}=s,L=w.get(\"flow\"),B=[];switch(L){case\"password\":return void o.authorizePassword(s);case\"application\":case\"clientCredentials\":case\"client_credentials\":return void o.authorizeApplication(s);case\"accessCode\":case\"authorizationCode\":case\"authorization_code\":B.push(\"response_type=code\");break;case\"implicit\":B.push(\"response_type=token\")}\"string\"==typeof j&&B.push(\"client_id=\"+encodeURIComponent(j));let $=a.oauth2RedirectUrl;if(void 0===$)return void i.newAuthErr({authId:C,source:\"validation\",level:\"error\",message:\"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"});B.push(\"redirect_uri=\"+encodeURIComponent($));let V=[];if(Array.isArray(x)?V=x:We().List.isList(x)&&(V=x.toArray()),V.length>0){let s=u.scopeSeparator||\" \";B.push(\"scope=\"+encodeURIComponent(V.join(s)))}let U=utils_btoa(new Date);if(B.push(\"state=\"+encodeURIComponent(U)),void 0!==u.realm&&B.push(\"realm=\"+encodeURIComponent(u.realm)),(\"authorizationCode\"===L||\"authorization_code\"===L||\"accessCode\"===L)&&u.usePkceWithAuthorizationCodeGrant){const o=function generateCodeVerifier(){return b64toB64UrlEncoded(xt()(32).toString(\"base64\"))}(),i=function createCodeChallenge(s){return b64toB64UrlEncoded(Ot()(\"sha256\").update(s).digest(\"base64\"))}(o);B.push(\"code_challenge=\"+i),B.push(\"code_challenge_method=S256\"),s.codeVerifier=o}let{additionalQueryStringParams:z}=u;for(let s in z)void 0!==z[s]&&B.push([s,z[s]].map(encodeURIComponent).join(\"=\"));const Y=w.get(\"authorizationUrl\");let Z;Z=_?Nt()(sanitizeUrl(Y),_,!0).toString():sanitizeUrl(Y);let ee,ie=[Z,B.join(\"&\")].join(\"string\"!=typeof Y||Y.includes(\"?\")?\"&\":\"?\");ee=\"implicit\"===L?o.preAuthorizeImplicit:u.useBasicAuthenticationWithAccessCodeGrant?o.authorizeAccessCodeWithBasicAuthentication:o.authorizeAccessCodeWithFormParams,o.authPopup(ie,{auth:s,state:U,redirectUrl:$,callback:ee,errCb:i.newAuthErr})}class Oauth2 extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a,authorized:u,authSelectors:_}=this.props,w=u&&u.get(i),x=_.getConfigs()||{},C=w&&w.get(\"username\")||\"\",j=w&&w.get(\"clientId\")||x.clientId||\"\",L=w&&w.get(\"clientSecret\")||x.clientSecret||\"\",B=w&&w.get(\"passwordType\")||\"basic\",$=w&&w.get(\"scopes\")||x.scopes||[];\"string\"==typeof $&&($=$.split(x.scopeSeparator||\" \")),this.state={appName:x.appName,name:i,schema:a,scopes:$,clientId:j,clientSecret:L,username:C,password:\"\",passwordType:B}}close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};authorize=()=>{let{authActions:s,errActions:o,getConfigs:i,authSelectors:a,oas3Selectors:u}=this.props,_=i(),w=a.getConfigs();o.clear({authId:name,type:\"auth\",source:\"auth\"}),oauth2_authorize_authorize({auth:this.state,currentServer:u.serverEffectiveValue(u.selectedServer()),authActions:s,errActions:o,configs:_,authConfigs:w})};onScopeChange=s=>{let{target:o}=s,{checked:i}=o,a=o.dataset.value;if(i&&-1===this.state.scopes.indexOf(a)){let s=this.state.scopes.concat([a]);this.setState({scopes:s})}else!i&&this.state.scopes.indexOf(a)>-1&&this.setState({scopes:this.state.scopes.filter((s=>s!==a))})};onInputChange=s=>{let{target:{dataset:{name:o},value:i}}=s,a={[o]:i};this.setState(a)};selectScopes=s=>{s.target.dataset.all?this.setState({scopes:Array.from((this.props.schema.get(\"allowedScopes\")||this.props.schema.get(\"scopes\")).keys())}):this.setState({scopes:[]})};logout=s=>{s.preventDefault();let{authActions:o,errActions:i,name:a}=this.props;i.clear({authId:a,type:\"auth\",source:\"auth\"}),o.logoutWithPersistOption([a])};render(){let{schema:s,getComponent:o,authSelectors:i,errSelectors:a,name:u,specSelectors:_}=this.props;const w=o(\"Input\"),x=o(\"Row\"),C=o(\"Col\"),j=o(\"Button\"),L=o(\"authError\"),B=o(\"JumpToPath\",!0),$=o(\"Markdown\",!0),V=o(\"InitializedInput\"),{isOAS3:U}=_;let z=U()?s.get(\"openIdConnectUrl\"):null;const Y=\"implicit\",Z=\"password\",ee=U()?z?\"authorization_code\":\"authorizationCode\":\"accessCode\",ie=U()?z?\"client_credentials\":\"clientCredentials\":\"application\",ae=i.selectAuthPath(u);let ce=!!(i.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,le=s.get(\"flow\"),pe=le===ee&&ce?le+\" with PKCE\":le,de=s.get(\"allowedScopes\")||s.get(\"scopes\"),fe=!!i.authorized().get(u),ye=a.allErrors().filter((s=>s.get(\"authId\")===u)),be=!ye.filter((s=>\"validation\"===s.get(\"source\"))).size,_e=s.get(\"description\");return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,u,\" (OAuth2, \",pe,\") \",Re.createElement(B,{path:ae})),this.state.appName?Re.createElement(\"h5\",null,\"Application: \",this.state.appName,\" \"):null,_e&&Re.createElement($,{source:s.get(\"description\")}),fe&&Re.createElement(\"h6\",null,\"Authorized\"),z&&Re.createElement(\"p\",null,\"OpenID Connect URL: \",Re.createElement(\"code\",null,z)),(le===Y||le===ee)&&Re.createElement(\"p\",null,\"Authorization URL: \",Re.createElement(\"code\",null,s.get(\"authorizationUrl\"))),(le===Z||le===ee||le===ie)&&Re.createElement(\"p\",null,\"Token URL:\",Re.createElement(\"code\",null,\" \",s.get(\"tokenUrl\"))),Re.createElement(\"p\",{className:\"flow\"},\"Flow: \",Re.createElement(\"code\",null,pe)),le!==Z?null:Re.createElement(x,null,Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"oauth_username\"},\"username:\"),fe?Re.createElement(\"code\",null,\" \",this.state.username,\" \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"input\",{id:\"oauth_username\",type:\"text\",\"data-name\":\"username\",onChange:this.onInputChange,autoFocus:!0}))),Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"oauth_password\"},\"password:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"input\",{id:\"oauth_password\",type:\"password\",\"data-name\":\"password\",onChange:this.onInputChange}))),Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"password_type\"},\"Client credentials location:\"),fe?Re.createElement(\"code\",null,\" \",this.state.passwordType,\" \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"select\",{id:\"password_type\",\"data-name\":\"passwordType\",onChange:this.onInputChange},Re.createElement(\"option\",{value:\"basic\"},\"Authorization header\"),Re.createElement(\"option\",{value:\"request-body\"},\"Request body\"))))),(le===ie||le===Y||le===ee||le===Z)&&(!fe||fe&&this.state.clientId)&&Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:`client_id_${le}`},\"client_id:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(V,{id:`client_id_${le}`,type:\"text\",required:le===Z,initialValue:this.state.clientId,\"data-name\":\"clientId\",onChange:this.onInputChange}))),(le===ie||le===ee||le===Z)&&Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:`client_secret_${le}`},\"client_secret:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(V,{id:`client_secret_${le}`,initialValue:this.state.clientSecret,type:\"password\",\"data-name\":\"clientSecret\",onChange:this.onInputChange}))),!fe&&de&&de.size?Re.createElement(\"div\",{className:\"scopes\"},Re.createElement(\"h2\",null,\"Scopes:\",Re.createElement(\"a\",{onClick:this.selectScopes,\"data-all\":!0},\"select all\"),Re.createElement(\"a\",{onClick:this.selectScopes},\"select none\")),de.map(((s,o)=>Re.createElement(x,{key:o},Re.createElement(\"div\",{className:\"checkbox\"},Re.createElement(w,{\"data-value\":o,id:`${o}-${le}-checkbox-${this.state.name}`,disabled:fe,checked:this.state.scopes.includes(o),type:\"checkbox\",onChange:this.onScopeChange}),Re.createElement(\"label\",{htmlFor:`${o}-${le}-checkbox-${this.state.name}`},Re.createElement(\"span\",{className:\"item\"}),Re.createElement(\"div\",{className:\"text\"},Re.createElement(\"p\",{className:\"name\"},o),Re.createElement(\"p\",{className:\"description\"},s))))))).toArray()):null,ye.valueSeq().map(((s,o)=>Re.createElement(L,{error:s,key:o}))),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},be&&(fe?Re.createElement(j,{className:\"btn modal-btn auth authorize\",onClick:this.logout,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(j,{className:\"btn modal-btn auth authorize\",onClick:this.authorize,\"aria-label\":\"Apply given OAuth2 credentials\"},\"Authorize\")),Re.createElement(j,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\")))}}class Clear extends Re.Component{onClick=()=>{let{specActions:s,path:o,method:i}=this.props;s.clearResponse(o,i),s.clearRequest(o,i)};render(){return Re.createElement(\"button\",{className:\"btn btn-clear opblock-control__btn\",onClick:this.onClick},\"Clear\")}}const live_response_Headers=({headers:s})=>Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Response headers\"),Re.createElement(\"pre\",{className:\"microlight\"},s)),Duration=({duration:s})=>Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Request duration\"),Re.createElement(\"pre\",{className:\"microlight\"},s,\" ms\"));class LiveResponse extends Re.Component{shouldComponentUpdate(s){return this.props.response!==s.response||this.props.path!==s.path||this.props.method!==s.method||this.props.displayRequestDuration!==s.displayRequestDuration}render(){const{response:s,getComponent:o,getConfigs:i,displayRequestDuration:a,specSelectors:u,path:_,method:w}=this.props,{showMutatedRequest:x,requestSnippetsEnabled:C}=i(),j=x?u.mutatedRequestFor(_,w):u.requestFor(_,w),L=s.get(\"status\"),B=j.get(\"url\"),$=s.get(\"headers\").toJS(),V=s.get(\"notDocumented\"),U=s.get(\"error\"),z=s.get(\"text\"),Y=s.get(\"duration\"),Z=Object.keys($),ee=$[\"content-type\"]||$[\"Content-Type\"],ie=o(\"responseBody\"),ae=Z.map((s=>{var o=Array.isArray($[s])?$[s].join():$[s];return Re.createElement(\"span\",{className:\"headerline\",key:s},\" \",s,\": \",o,\" \")})),ce=0!==ae.length,le=o(\"Markdown\",!0),pe=o(\"RequestSnippets\",!0),de=o(\"curl\",!0);return Re.createElement(\"div\",null,j&&C?Re.createElement(pe,{request:j}):Re.createElement(de,{request:j}),B&&Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"request-url\"},Re.createElement(\"h4\",null,\"Request URL\"),Re.createElement(\"pre\",{className:\"microlight\"},B))),Re.createElement(\"h4\",null,\"Server response\"),Re.createElement(\"table\",{className:\"responses-table live-responses-table\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"responses-header\"},Re.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),Re.createElement(\"td\",{className:\"col_header response-col_description\"},\"Details\"))),Re.createElement(\"tbody\",null,Re.createElement(\"tr\",{className:\"response\"},Re.createElement(\"td\",{className:\"response-col_status\"},L,V?Re.createElement(\"div\",{className:\"response-undocumented\"},Re.createElement(\"i\",null,\" Undocumented \")):null),Re.createElement(\"td\",{className:\"response-col_description\"},U?Re.createElement(le,{source:`${\"\"!==s.get(\"name\")?`${s.get(\"name\")}: `:\"\"}${s.get(\"message\")}`}):null,z?Re.createElement(ie,{content:z,contentType:ee,url:B,headers:$,getConfigs:i,getComponent:o}):null,ce?Re.createElement(live_response_Headers,{headers:ae}):null,a&&Y?Re.createElement(Duration,{duration:Y}):null)))))}}class OnlineValidatorBadge extends Re.Component{constructor(s,o){super(s,o);let{getConfigs:i}=s,{validatorUrl:a}=i();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===a?\"https://validator.swagger.io/validator\":a}}getDefinitionUrl=()=>{let{specSelectors:s}=this.props;return new(Nt())(s.url(),lt.location).toString()};UNSAFE_componentWillReceiveProps(s){let{getConfigs:o}=s,{validatorUrl:i}=o();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===i?\"https://validator.swagger.io/validator\":i})}render(){let{getConfigs:s}=this.props,{spec:o}=s(),i=sanitizeUrl(this.state.validatorUrl);return\"object\"==typeof o&&Object.keys(o).length?null:this.state.url&&requiresValidationURL(this.state.validatorUrl)&&requiresValidationURL(this.state.url)?Re.createElement(\"span\",{className:\"float-right\"},Re.createElement(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:`${i}/debug?url=${encodeURIComponent(this.state.url)}`},Re.createElement(ValidatorImage,{src:`${i}?url=${encodeURIComponent(this.state.url)}`,alt:\"Online validator badge\"}))):null}}class ValidatorImage extends Re.Component{constructor(s){super(s),this.state={loaded:!1,error:!1}}componentDidMount(){const s=new Image;s.onload=()=>{this.setState({loaded:!0})},s.onerror=()=>{this.setState({error:!0})},s.src=this.props.src}UNSAFE_componentWillReceiveProps(s){if(s.src!==this.props.src){const o=new Image;o.onload=()=>{this.setState({loaded:!0})},o.onerror=()=>{this.setState({error:!0})},o.src=s.src}}render(){return this.state.error?Re.createElement(\"img\",{alt:\"Error\"}):this.state.loaded?Re.createElement(\"img\",{src:this.props.src,alt:this.props.alt}):null}}class Operations extends Re.Component{render(){let{specSelectors:s}=this.props;const o=s.taggedOperations();return 0===o.size?Re.createElement(\"h3\",null,\" No operations defined in spec!\"):Re.createElement(\"div\",null,o.map(this.renderOperationTag).toArray(),o.size<1?Re.createElement(\"h3\",null,\" No operations defined in spec! \"):null)}renderOperationTag=(s,o)=>{const{specSelectors:i,getComponent:a,oas3Selectors:u,layoutSelectors:_,layoutActions:w,getConfigs:x}=this.props,C=i.validOperationMethods(),j=a(\"OperationContainer\",!0),L=a(\"OperationTag\"),B=s.get(\"operations\");return Re.createElement(L,{key:\"operation-\"+o,tagObj:s,tag:o,oas3Selectors:u,layoutSelectors:_,layoutActions:w,getConfigs:x,getComponent:a,specUrl:i.url()},Re.createElement(\"div\",{className:\"operation-tag-content\"},B.map((s=>{const i=s.get(\"path\"),a=s.get(\"method\"),u=We().List([\"paths\",i,a]);return-1===C.indexOf(a)?null:Re.createElement(j,{key:`${i}-${a}`,specPath:u,op:s,path:i,method:a,tag:o})})).toArray()))}}class OperationTag extends Re.Component{static defaultProps={tagObj:We().fromJS({}),tag:\"\"};render(){const{tagObj:s,tag:o,children:i,oas3Selectors:a,layoutSelectors:u,layoutActions:_,getConfigs:w,getComponent:x,specUrl:C}=this.props;let{docExpansion:j,deepLinking:L}=w();const B=x(\"Collapse\"),$=x(\"Markdown\",!0),V=x(\"DeepLink\"),U=x(\"Link\"),z=x(\"ArrowUpIcon\"),Y=x(\"ArrowDownIcon\");let Z,ee=s.getIn([\"tagDetails\",\"description\"],null),ie=s.getIn([\"tagDetails\",\"externalDocs\",\"description\"]),ae=s.getIn([\"tagDetails\",\"externalDocs\",\"url\"]);Z=isFunc(a)&&isFunc(a.selectedServer)?safeBuildUrl(ae,C,{selectedServer:a.selectedServer()}):ae;let ce=[\"operations-tag\",o],le=u.isShown(ce,\"full\"===j||\"list\"===j);return Re.createElement(\"div\",{className:le?\"opblock-tag-section is-open\":\"opblock-tag-section\"},Re.createElement(\"h3\",{onClick:()=>_.show(ce,!le),className:ee?\"opblock-tag\":\"opblock-tag no-desc\",id:ce.map((s=>escapeDeepLinkPath(s))).join(\"-\"),\"data-tag\":o,\"data-is-open\":le},Re.createElement(V,{enabled:L,isShown:le,path:createDeepLinkPath(o),text:o}),ee?Re.createElement(\"small\",null,Re.createElement($,{source:ee})):Re.createElement(\"small\",null),Z?Re.createElement(\"div\",{className:\"info__externaldocs\"},Re.createElement(\"small\",null,Re.createElement(U,{href:sanitizeUrl(Z),onClick:s=>s.stopPropagation(),target:\"_blank\"},ie||Z))):null,Re.createElement(\"button\",{\"aria-expanded\":le,className:\"expand-operation\",title:le?\"Collapse operation\":\"Expand operation\",onClick:()=>_.show(ce,!le)},le?Re.createElement(z,{className:\"arrow\"}):Re.createElement(Y,{className:\"arrow\"}))),Re.createElement(B,{isOpened:le},i))}}class operation_Operation extends Re.PureComponent{static defaultProps={operation:null,response:null,request:null,specPath:(0,ze.List)(),summary:\"\"};render(){let{specPath:s,response:o,request:i,toggleShown:a,onTryoutClick:u,onResetClick:_,onCancelClick:w,onExecute:x,fn:C,getComponent:j,getConfigs:L,specActions:B,specSelectors:$,authActions:V,authSelectors:U,oas3Actions:z,oas3Selectors:Y}=this.props,Z=this.props.operation,{deprecated:ee,isShown:ie,path:ae,method:ce,op:le,tag:pe,operationId:de,allowTryItOut:fe,displayRequestDuration:ye,tryItOutEnabled:be,executeInProgress:_e}=Z.toJS(),{description:Se,externalDocs:we,schemes:xe}=le;const Pe=we?safeBuildUrl(we.url,$.url(),{selectedServer:Y.selectedServer()}):\"\";let Te=Z.getIn([\"op\"]),$e=Te.get(\"responses\"),qe=function getList(s,o){if(!We().Iterable.isIterable(s))return We().List();let i=s.getIn(Array.isArray(o)?o:[o]);return We().List.isList(i)?i:We().List()}(Te,[\"parameters\"]),ze=$.operationScheme(ae,ce),He=[\"operations\",pe,de],Ye=getExtensions(Te);const Xe=j(\"responses\"),Qe=j(\"parameters\"),et=j(\"execute\"),tt=j(\"clear\"),rt=j(\"Collapse\"),nt=j(\"Markdown\",!0),st=j(\"schemes\"),ot=j(\"OperationServers\"),it=j(\"OperationExt\"),at=j(\"OperationSummary\"),ct=j(\"Link\"),{showExtensions:lt}=L();if($e&&o&&o.size>0){let s=!$e.get(String(o.get(\"status\")))&&!$e.get(\"default\");o=o.set(\"notDocumented\",s)}let ut=[ae,ce];const pt=$.validationErrors([ae,ce]);return Re.createElement(\"div\",{className:ee?\"opblock opblock-deprecated\":ie?`opblock opblock-${ce} is-open`:`opblock opblock-${ce}`,id:escapeDeepLinkPath(He.join(\"-\"))},Re.createElement(at,{operationProps:Z,isShown:ie,toggleShown:a,getComponent:j,authActions:V,authSelectors:U,specPath:s}),Re.createElement(rt,{isOpened:ie},Re.createElement(\"div\",{className:\"opblock-body\"},Te&&Te.size||null===Te?null:Re.createElement(rolling_load,{height:\"32px\",width:\"32px\",className:\"opblock-loading-animation\"}),ee&&Re.createElement(\"h4\",{className:\"opblock-title_normal\"},\" Warning: Deprecated\"),Se&&Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"div\",{className:\"opblock-description\"},Re.createElement(nt,{source:Se}))),Pe?Re.createElement(\"div\",{className:\"opblock-external-docs-wrapper\"},Re.createElement(\"h4\",{className:\"opblock-title_normal\"},\"Find more details\"),Re.createElement(\"div\",{className:\"opblock-external-docs\"},we.description&&Re.createElement(\"span\",{className:\"opblock-external-docs__description\"},Re.createElement(nt,{source:we.description})),Re.createElement(ct,{target:\"_blank\",className:\"opblock-external-docs__link\",href:sanitizeUrl(Pe)},Pe))):null,Te&&Te.size?Re.createElement(Qe,{parameters:qe,specPath:s.push(\"parameters\"),operation:Te,onChangeKey:ut,onTryoutClick:u,onResetClick:_,onCancelClick:w,tryItOutEnabled:be,allowTryItOut:fe,fn:C,getComponent:j,specActions:B,specSelectors:$,pathMethod:[ae,ce],getConfigs:L,oas3Actions:z,oas3Selectors:Y}):null,be?Re.createElement(ot,{getComponent:j,path:ae,method:ce,operationServers:Te.get(\"servers\"),pathServers:$.paths().getIn([ae,\"servers\"]),getSelectedServer:Y.selectedServer,setSelectedServer:z.setSelectedServer,setServerVariableValue:z.setServerVariableValue,getServerVariable:Y.serverVariableValue,getEffectiveServerValue:Y.serverEffectiveValue}):null,be&&fe&&xe&&xe.size?Re.createElement(\"div\",{className:\"opblock-schemes\"},Re.createElement(st,{schemes:xe,path:ae,method:ce,specActions:B,currentScheme:ze})):null,!be||!fe||pt.length<=0?null:Re.createElement(\"div\",{className:\"validation-errors errors-wrapper\"},\"Please correct the following validation errors and try again.\",Re.createElement(\"ul\",null,pt.map(((s,o)=>Re.createElement(\"li\",{key:o},\" \",s,\" \"))))),Re.createElement(\"div\",{className:be&&o&&fe?\"btn-group\":\"execute-wrapper\"},be&&fe?Re.createElement(et,{operation:Te,specActions:B,specSelectors:$,oas3Selectors:Y,oas3Actions:z,path:ae,method:ce,onExecute:x,disabled:_e}):null,be&&o&&fe?Re.createElement(tt,{specActions:B,path:ae,method:ce}):null),_e?Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"div\",{className:\"loading\"})):null,$e?Re.createElement(Xe,{responses:$e,request:i,tryItOutResponse:o,getComponent:j,getConfigs:L,specSelectors:$,oas3Actions:z,oas3Selectors:Y,specActions:B,produces:$.producesOptionsFor([ae,ce]),producesValue:$.currentProducesFor([ae,ce]),specPath:s.push(\"responses\"),path:ae,method:ce,displayRequestDuration:ye,fn:C}):null,lt&&Ye.size?Re.createElement(it,{extensions:Ye,getComponent:j}):null)))}}class OperationContainer extends Re.PureComponent{constructor(s,o){super(s,o);const{tryItOutEnabled:i}=s.getConfigs();this.state={tryItOutEnabled:i,executeInProgress:!1}}static defaultProps={showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1};mapStateToProps(s,o){const{op:i,layoutSelectors:a,getConfigs:u}=o,{docExpansion:_,deepLinking:w,displayOperationId:x,displayRequestDuration:C,supportedSubmitMethods:j}=u(),L=a.showSummary(),B=i.getIn([\"operation\",\"__originalOperationId\"])||i.getIn([\"operation\",\"operationId\"])||opId(i.get(\"operation\"),o.path,o.method)||i.get(\"id\"),$=[\"operations\",o.tag,B],V=j.indexOf(o.method)>=0&&(void 0===o.allowTryItOut?o.specSelectors.allowTryItOutFor(o.path,o.method):o.allowTryItOut),U=i.getIn([\"operation\",\"security\"])||o.specSelectors.security();return{operationId:B,isDeepLinkingEnabled:w,showSummary:L,displayOperationId:x,displayRequestDuration:C,allowTryItOut:V,security:U,isAuthorized:o.authSelectors.isAuthorized(U),isShown:a.isShown($,\"full\"===_),jumpToKey:`paths.${o.path}.${o.method}`,response:o.specSelectors.responseFor(o.path,o.method),request:o.specSelectors.requestFor(o.path,o.method)}}componentDidMount(){const{isShown:s}=this.props,o=this.getResolvedSubtree();s&&void 0===o&&this.requestResolvedSubtree()}UNSAFE_componentWillReceiveProps(s){const{response:o,isShown:i}=s,a=this.getResolvedSubtree();o!==this.props.response&&this.setState({executeInProgress:!1}),i&&void 0===a&&this.requestResolvedSubtree()}toggleShown=()=>{let{layoutActions:s,tag:o,operationId:i,isShown:a}=this.props;const u=this.getResolvedSubtree();a||void 0!==u||this.requestResolvedSubtree(),s.show([\"operations\",o,i],!a)};onCancelClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onTryoutClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onResetClick=s=>{const o=this.props.oas3Selectors.selectDefaultRequestBodyValue(...s);this.props.oas3Actions.setRequestBodyValue({value:o,pathMethod:s})};onExecute=()=>{this.setState({executeInProgress:!0})};getResolvedSubtree=()=>{const{specSelectors:s,path:o,method:i,specPath:a}=this.props;return a?s.specResolvedSubtree(a.toJS()):s.specResolvedSubtree([\"paths\",o,i])};requestResolvedSubtree=()=>{const{specActions:s,path:o,method:i,specPath:a}=this.props;return a?s.requestResolvedSubtree(a.toJS()):s.requestResolvedSubtree([\"paths\",o,i])};render(){let{op:s,tag:o,path:i,method:a,security:u,isAuthorized:_,operationId:w,showSummary:x,isShown:C,jumpToKey:j,allowTryItOut:L,response:B,request:$,displayOperationId:V,displayRequestDuration:U,isDeepLinkingEnabled:z,specPath:Y,specSelectors:Z,specActions:ee,getComponent:ie,getConfigs:ae,layoutSelectors:ce,layoutActions:le,authActions:pe,authSelectors:de,oas3Actions:fe,oas3Selectors:ye,fn:be}=this.props;const _e=ie(\"operation\"),Se=this.getResolvedSubtree()||(0,ze.Map)(),we=(0,ze.fromJS)({op:Se,tag:o,path:i,summary:s.getIn([\"operation\",\"summary\"])||\"\",deprecated:Se.get(\"deprecated\")||s.getIn([\"operation\",\"deprecated\"])||!1,method:a,security:u,isAuthorized:_,operationId:w,originalOperationId:Se.getIn([\"operation\",\"__originalOperationId\"]),showSummary:x,isShown:C,jumpToKey:j,allowTryItOut:L,request:$,displayOperationId:V,displayRequestDuration:U,isDeepLinkingEnabled:z,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return Re.createElement(_e,{operation:we,response:B,request:$,isShown:C,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onResetClick:this.onResetClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:Y,specActions:ee,specSelectors:Z,oas3Actions:fe,oas3Selectors:ye,layoutActions:le,layoutSelectors:ce,authActions:pe,authSelectors:de,getComponent:ie,getConfigs:ae,fn:be})}}var KO=__webpack_require__(13222),GO=__webpack_require__.n(KO);class OperationSummary extends Re.PureComponent{static defaultProps={operationProps:null,specPath:(0,ze.List)(),summary:\"\"};render(){let{isShown:s,toggleShown:o,getComponent:i,authActions:a,authSelectors:u,operationProps:_,specPath:w}=this.props,{summary:x,isAuthorized:C,method:j,op:L,showSummary:B,path:$,operationId:V,originalOperationId:U,displayOperationId:z}=_.toJS(),{summary:Y}=L,Z=_.get(\"security\");const ee=i(\"authorizeOperationBtn\",!0),ie=i(\"OperationSummaryMethod\"),ae=i(\"OperationSummaryPath\"),ce=i(\"JumpToPath\",!0),le=i(\"CopyToClipboardBtn\",!0),pe=i(\"ArrowUpIcon\"),de=i(\"ArrowDownIcon\"),fe=Z&&!!Z.count(),ye=fe&&1===Z.size&&Z.first().isEmpty(),be=!fe||ye;return Re.createElement(\"div\",{className:`opblock-summary opblock-summary-${j}`},Re.createElement(\"button\",{\"aria-expanded\":s,className:\"opblock-summary-control\",onClick:o},Re.createElement(ie,{method:j}),Re.createElement(\"div\",{className:\"opblock-summary-path-description-wrapper\"},Re.createElement(ae,{getComponent:i,operationProps:_,specPath:w}),B?Re.createElement(\"div\",{className:\"opblock-summary-description\"},GO()(Y||x)):null),z&&(U||V)?Re.createElement(\"span\",{className:\"opblock-summary-operation-id\"},U||V):null),Re.createElement(le,{textToCopy:`${w.get(1)}`}),be?null:Re.createElement(ee,{isAuthorized:C,onClick:()=>{const s=u.definitionsForRequirements(Z);a.showDefinitions(s)}}),Re.createElement(ce,{path:w}),Re.createElement(\"button\",{\"aria-label\":`${j} ${$.replace(/\\//g,\"​/\")}`,className:\"opblock-control-arrow\",\"aria-expanded\":s,tabIndex:\"-1\",onClick:o},s?Re.createElement(pe,{className:\"arrow\"}):Re.createElement(de,{className:\"arrow\"})))}}class OperationSummaryMethod extends Re.PureComponent{static defaultProps={operationProps:null};render(){let{method:s}=this.props;return Re.createElement(\"span\",{className:\"opblock-summary-method\"},s.toUpperCase())}}class OperationSummaryPath extends Re.PureComponent{render(){let{getComponent:s,operationProps:o}=this.props,{deprecated:i,isShown:a,path:u,tag:_,operationId:w,isDeepLinkingEnabled:x}=o.toJS();const C=u.split(/(?=\\/)/g);for(let s=1;s<C.length;s+=2)C.splice(s,0,Re.createElement(\"wbr\",{key:s}));const j=s(\"DeepLink\");return Re.createElement(\"span\",{className:i?\"opblock-summary-path__deprecated\":\"opblock-summary-path\",\"data-path\":u},Re.createElement(j,{enabled:x,isShown:a,path:createDeepLinkPath(`${_}/${w}`),text:C}))}}const operation_extensions=({extensions:s,getComponent:o})=>{let i=o(\"OperationExtRow\");return Re.createElement(\"div\",{className:\"opblock-section\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",null,\"Extensions\")),Re.createElement(\"div\",{className:\"table-container\"},Re.createElement(\"table\",null,Re.createElement(\"thead\",null,Re.createElement(\"tr\",null,Re.createElement(\"td\",{className:\"col_header\"},\"Field\"),Re.createElement(\"td\",{className:\"col_header\"},\"Value\"))),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,o])=>Re.createElement(i,{key:`${s}-${o}`,xKey:s,xVal:o})))))))},operation_extension_row=({xKey:s,xVal:o})=>{const i=o?o.toJS?o.toJS():o:null;return Re.createElement(\"tr\",null,Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,JSON.stringify(i)))};function createHtmlReadyId(s,o=\"_\"){return s.replace(/[^\\w-]/g,o)}class responses_Responses extends Re.Component{static defaultProps={tryItOutResponse:null,produces:(0,ze.fromJS)([\"application/json\"]),displayRequestDuration:!1};onChangeProducesWrapper=s=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],s);onResponseContentTypeChange=({controlsAcceptHeader:s,value:o})=>{const{oas3Actions:i,path:a,method:u}=this.props;s&&i.setResponseContentType({value:o,path:a,method:u})};render(){let{responses:s,tryItOutResponse:o,getComponent:i,getConfigs:a,specSelectors:u,fn:_,producesValue:w,displayRequestDuration:x,specPath:C,path:j,method:L,oas3Selectors:B,oas3Actions:$}=this.props,V=function defaultStatusCode(s){let o=s.keySeq();return o.contains(jt)?jt:o.filter((s=>\"2\"===(s+\"\")[0])).sort().first()}(s);const U=i(\"contentType\"),z=i(\"liveResponse\"),Y=i(\"response\");let Z=this.props.produces&&this.props.produces.size?this.props.produces:responses_Responses.defaultProps.produces;const ee=u.isOAS3()?function getAcceptControllingResponse(s){if(!We().OrderedMap.isOrderedMap(s))return null;if(!s.size)return null;const o=s.find(((s,o)=>o.startsWith(\"2\")&&Object.keys(s.get(\"content\")||{}).length>0)),i=s.get(\"default\")||We().OrderedMap(),a=(i.get(\"content\")||We().OrderedMap()).keySeq().toJS().length?i:null;return o||a}(s):null,ie=createHtmlReadyId(`${L}${j}_responses`),ae=`${ie}_select`;return Re.createElement(\"div\",{className:\"responses-wrapper\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",null,\"Responses\"),u.isOAS3()?null:Re.createElement(\"label\",{htmlFor:ae},Re.createElement(\"span\",null,\"Response content type\"),Re.createElement(U,{value:w,ariaControls:ie,ariaLabel:\"Response content type\",className:\"execute-content-type\",contentTypes:Z,controlId:ae,onChange:this.onChangeProducesWrapper}))),Re.createElement(\"div\",{className:\"responses-inner\"},o?Re.createElement(\"div\",null,Re.createElement(z,{response:o,getComponent:i,getConfigs:a,specSelectors:u,path:this.props.path,method:this.props.method,displayRequestDuration:x}),Re.createElement(\"h4\",null,\"Responses\")):null,Re.createElement(\"table\",{\"aria-live\":\"polite\",className:\"responses-table\",id:ie,role:\"region\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"responses-header\"},Re.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),Re.createElement(\"td\",{className:\"col_header response-col_description\"},\"Description\"),u.isOAS3()?Re.createElement(\"td\",{className:\"col col_header response-col_links\"},\"Links\"):null)),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,x])=>{let U=o&&o.get(\"status\")==s?\"response_current\":\"\";return Re.createElement(Y,{key:s,path:j,method:L,specPath:C.push(s),isDefault:V===s,fn:_,className:U,code:s,response:x,specSelectors:u,controlsAcceptHeader:x===ee,onContentTypeChange:this.onResponseContentTypeChange,contentType:w,getConfigs:a,activeExamplesKey:B.activeExamplesMember(j,L,\"responses\",s),oas3Actions:$,getComponent:i})})).toArray()))))}}function getKnownSyntaxHighlighterLanguage(s){const o=function canJsonParse(s){try{return!!JSON.parse(s)}catch(s){return null}}(s);return o?\"json\":null}class response_Response extends Re.Component{constructor(s,o){super(s,o),this.state={responseContentType:\"\"}}static defaultProps={response:(0,ze.fromJS)({}),onContentTypeChange:()=>{}};_onContentTypeChange=s=>{const{onContentTypeChange:o,controlsAcceptHeader:i}=this.props;this.setState({responseContentType:s}),o({value:s,controlsAcceptHeader:i})};getTargetExamplesKey=()=>{const{response:s,contentType:o,activeExamplesKey:i}=this.props,a=this.state.responseContentType||o,u=s.getIn([\"content\",a],(0,ze.Map)({})).get(\"examples\",null).keySeq().first();return i||u};render(){let{path:s,method:o,code:i,response:a,className:u,specPath:_,fn:w,getComponent:x,getConfigs:C,specSelectors:j,contentType:L,controlsAcceptHeader:B,oas3Actions:$}=this.props,{inferSchema:V,getSampleSchema:U}=w,z=j.isOAS3();const{showExtensions:Y}=C();let Z=Y?getExtensions(a):null,ee=a.get(\"headers\"),ie=a.get(\"links\");const ae=x(\"ResponseExtension\"),ce=x(\"headers\"),le=x(\"HighlightCode\",!0),pe=x(\"modelExample\"),de=x(\"Markdown\",!0),fe=x(\"operationLink\"),ye=x(\"contentType\"),be=x(\"ExamplesSelect\"),_e=x(\"Example\");var Se,we;const xe=this.state.responseContentType||L,Pe=a.getIn([\"content\",xe],(0,ze.Map)({})),Te=Pe.get(\"examples\",null);if(z){const s=Pe.get(\"schema\");Se=s?V(s.toJS()):null,we=s?(0,ze.List)([\"content\",this.state.responseContentType,\"schema\"]):_}else Se=a.get(\"schema\"),we=a.has(\"schema\")?_.push(\"schema\"):_;let $e,qe,We=!1,He={includeReadOnly:!0};if(z)if(qe=Pe.get(\"schema\")?.toJS(),ze.Map.isMap(Te)&&!Te.isEmpty()){const s=this.getTargetExamplesKey(),getMediaTypeExample=s=>ze.Map.isMap(s)?s.get(\"value\"):void 0;$e=getMediaTypeExample(Te.get(s,(0,ze.Map)({}))),void 0===$e&&($e=getMediaTypeExample(Te.values().next().value)),We=!0}else void 0!==Pe.get(\"example\")&&($e=Pe.get(\"example\"),We=!0);else{qe=Se,He={...He,includeWriteOnly:!0};const s=a.getIn([\"examples\",xe]);s&&($e=s,We=!0)}const Ye=((s,o)=>{if(null==s)return null;const i=getKnownSyntaxHighlighterLanguage(s)?\"json\":null;return Re.createElement(\"div\",null,Re.createElement(o,{className:\"example\",language:i},stringify(s)))})(U(qe,xe,He,We?$e:void 0),le);return Re.createElement(\"tr\",{className:\"response \"+(u||\"\"),\"data-code\":i},Re.createElement(\"td\",{className:\"response-col_status\"},i),Re.createElement(\"td\",{className:\"response-col_description\"},Re.createElement(\"div\",{className:\"response-col_description__inner\"},Re.createElement(de,{source:a.get(\"description\")})),Y&&Z.size?Z.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null,z&&a.get(\"content\")?Re.createElement(\"section\",{className:\"response-controls\"},Re.createElement(\"div\",{className:Jn()(\"response-control-media-type\",{\"response-control-media-type--accept-controller\":B})},Re.createElement(\"small\",{className:\"response-control-media-type__title\"},\"Media type\"),Re.createElement(ye,{value:this.state.responseContentType,contentTypes:a.get(\"content\")?a.get(\"content\").keySeq():(0,ze.Seq)(),onChange:this._onContentTypeChange,ariaLabel:\"Media Type\"}),B?Re.createElement(\"small\",{className:\"response-control-media-type__accept-message\"},\"Controls \",Re.createElement(\"code\",null,\"Accept\"),\" header.\"):null),ze.Map.isMap(Te)&&!Te.isEmpty()?Re.createElement(\"div\",{className:\"response-control-examples\"},Re.createElement(\"small\",{className:\"response-control-examples__title\"},\"Examples\"),Re.createElement(be,{examples:Te,currentExampleKey:this.getTargetExamplesKey(),onSelect:a=>$.setActiveExamplesMember({name:a,pathMethod:[s,o],contextType:\"responses\",contextName:i}),showLabels:!1})):null):null,Ye||Se?Re.createElement(pe,{specPath:we,getComponent:x,getConfigs:C,specSelectors:j,schema:fromJSOrdered(Se),example:Ye,includeReadOnly:!0}):null,z&&Te?Re.createElement(_e,{example:Te.get(this.getTargetExamplesKey(),(0,ze.Map)({})),getComponent:x,getConfigs:C,omitValue:!0}):null,ee?Re.createElement(ce,{headers:ee,getComponent:x}):null),z?Re.createElement(\"td\",{className:\"response-col_links\"},ie?ie.toSeq().entrySeq().map((([s,o])=>Re.createElement(fe,{key:s,name:s,link:o,getComponent:x}))):Re.createElement(\"i\",null,\"No links\")):null)}}const response_extension=({xKey:s,xVal:o})=>Re.createElement(\"div\",{className:\"response__extension\"},s,\": \",String(o));var YO=__webpack_require__(26657),XO=__webpack_require__.n(YO),QO=__webpack_require__(80218),ZO=__webpack_require__.n(QO);class ResponseBody extends Re.PureComponent{state={parsedContent:null};updateParsedContent=s=>{const{content:o}=this.props;if(s!==o)if(o&&o instanceof Blob){var i=new FileReader;i.onload=()=>{this.setState({parsedContent:i.result})},i.readAsText(o)}else this.setState({parsedContent:o.toString()})};componentDidMount(){this.updateParsedContent(null)}componentDidUpdate(s){this.updateParsedContent(s.content)}render(){let{content:s,contentType:o,url:i,headers:a={},getComponent:u}=this.props;const{parsedContent:_}=this.state,w=u(\"HighlightCode\",!0),x=\"response_\"+(new Date).getTime();let C,j;if(i=i||\"\",(/^application\\/octet-stream/i.test(o)||a[\"Content-Disposition\"]&&/attachment/i.test(a[\"Content-Disposition\"])||a[\"content-disposition\"]&&/attachment/i.test(a[\"content-disposition\"])||a[\"Content-Description\"]&&/File Transfer/i.test(a[\"Content-Description\"])||a[\"content-description\"]&&/File Transfer/i.test(a[\"content-description\"]))&&(s.size>0||s.length>0))if(\"Blob\"in window){let u=o||\"text/html\",_=s instanceof Blob?s:new Blob([s],{type:u}),w=window.URL.createObjectURL(_),x=[u,i.substr(i.lastIndexOf(\"/\")+1),w].join(\":\"),C=a[\"content-disposition\"]||a[\"Content-Disposition\"];if(void 0!==C){let s=function extractFileNameFromContentDispositionHeader(s){let o;if([/filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,/filename\\*=[^']+'\\w*'([^;]+);?/i,/filename=\"([^;]*);?\"/i,/filename=([^;]*);?/i].some((i=>(o=i.exec(s),null!==o))),null!==o&&o.length>1)try{return decodeURIComponent(o[1])}catch(s){console.error(s)}return null}(C);null!==s&&(x=s)}j=lt.navigator&&lt.navigator.msSaveOrOpenBlob?Re.createElement(\"div\",null,Re.createElement(\"a\",{href:w,onClick:()=>lt.navigator.msSaveOrOpenBlob(_,x)},\"Download file\")):Re.createElement(\"div\",null,Re.createElement(\"a\",{href:w,download:x},\"Download file\"))}else j=Re.createElement(\"pre\",{className:\"microlight\"},\"Download headers detected but your browser does not support downloading binary via XHR (Blob).\");else if(/json/i.test(o)){let o=null;getKnownSyntaxHighlighterLanguage(s)&&(o=\"json\");try{C=JSON.stringify(JSON.parse(s),null,\"  \")}catch(o){C=\"can't parse JSON.  Raw result:\\n\\n\"+s}j=Re.createElement(w,{language:o,downloadable:!0,fileName:`${x}.json`,canCopy:!0},C)}else/xml/i.test(o)?(C=XO()(s,{textNodesOnSameLine:!0,indentor:\"  \"}),j=Re.createElement(w,{downloadable:!0,fileName:`${x}.xml`,canCopy:!0},C)):j=\"text/html\"===ZO()(o)||/text\\/plain/.test(o)?Re.createElement(w,{downloadable:!0,fileName:`${x}.html`,canCopy:!0},s):\"text/csv\"===ZO()(o)||/text\\/csv/.test(o)?Re.createElement(w,{downloadable:!0,fileName:`${x}.csv`,canCopy:!0},s):/^image\\//i.test(o)?o.includes(\"svg\")?Re.createElement(\"div\",null,\" \",s,\" \"):Re.createElement(\"img\",{src:window.URL.createObjectURL(s)}):/^audio\\//i.test(o)?Re.createElement(\"pre\",{className:\"microlight\"},Re.createElement(\"audio\",{controls:!0,key:i},Re.createElement(\"source\",{src:i,type:o}))):\"string\"==typeof s?Re.createElement(w,{downloadable:!0,fileName:`${x}.txt`,canCopy:!0},s):s.size>0?_?Re.createElement(\"div\",null,Re.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; displaying content as text.\"),Re.createElement(w,{downloadable:!0,fileName:`${x}.txt`,canCopy:!0},_)):Re.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; unable to display.\"):null;return j?Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Response body\"),j):null}}class Parameters extends Re.Component{constructor(s){super(s),this.state={callbackVisible:!1,parametersVisible:!0}}static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]};onChange=(s,o,i)=>{let{specActions:{changeParamByIdentity:a},onChangeKey:u}=this.props;a(u,s,o,i)};onChangeConsumesWrapper=s=>{let{specActions:{changeConsumesValue:o},onChangeKey:i}=this.props;o(i,s)};toggleTab=s=>\"parameters\"===s?this.setState({parametersVisible:!0,callbackVisible:!1}):\"callbacks\"===s?this.setState({callbackVisible:!0,parametersVisible:!1}):void 0;onChangeMediaType=({value:s,pathMethod:o})=>{let{specActions:i,oas3Selectors:a,oas3Actions:u}=this.props;const _=a.hasUserEditedBody(...o),w=a.shouldRetainRequestBodyValue(...o);u.setRequestContentType({value:s,pathMethod:o}),u.initRequestBodyValidateError({pathMethod:o}),_||(w||u.setRequestBodyValue({value:void 0,pathMethod:o}),i.clearResponse(...o),i.clearRequest(...o),i.clearValidateParams(o))};render(){let{onTryoutClick:s,onResetClick:o,parameters:i,allowTryItOut:a,tryItOutEnabled:u,specPath:_,fn:w,getComponent:x,getConfigs:C,specSelectors:j,specActions:L,pathMethod:B,oas3Actions:$,oas3Selectors:V,operation:U}=this.props;const z=x(\"parameterRow\"),Y=x(\"TryItOutButton\"),Z=x(\"contentType\"),ee=x(\"Callbacks\",!0),ie=x(\"RequestBody\",!0),ae=u&&a,ce=j.isOAS3(),le=`${createHtmlReadyId(`${B[1]}${B[0]}_requests`)}_select`,pe=U.get(\"requestBody\"),de=Object.values(i.reduce(((s,o)=>{if(ze.Map.isMap(o)){const i=o.get(\"in\");s[i]??=[],s[i].push(o)}return s}),{})).reduce(((s,o)=>s.concat(o)),[]);return Re.createElement(\"div\",{className:\"opblock-section\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},ce?Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"div\",{onClick:()=>this.toggleTab(\"parameters\"),className:`tab-item ${this.state.parametersVisible&&\"active\"}`},Re.createElement(\"h4\",{className:\"opblock-title\"},Re.createElement(\"span\",null,\"Parameters\"))),U.get(\"callbacks\")?Re.createElement(\"div\",{onClick:()=>this.toggleTab(\"callbacks\"),className:`tab-item ${this.state.callbackVisible&&\"active\"}`},Re.createElement(\"h4\",{className:\"opblock-title\"},Re.createElement(\"span\",null,\"Callbacks\"))):null):Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"h4\",{className:\"opblock-title\"},\"Parameters\")),a?Re.createElement(Y,{isOAS3:j.isOAS3(),hasUserEditedBody:V.hasUserEditedBody(...B),enabled:u,onCancelClick:this.props.onCancelClick,onTryoutClick:s,onResetClick:()=>o(B)}):null),this.state.parametersVisible?Re.createElement(\"div\",{className:\"parameters-container\"},de.length?Re.createElement(\"div\",{className:\"table-container\"},Re.createElement(\"table\",{className:\"parameters\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",null,Re.createElement(\"th\",{className:\"col_header parameters-col_name\"},\"Name\"),Re.createElement(\"th\",{className:\"col_header parameters-col_description\"},\"Description\"))),Re.createElement(\"tbody\",null,de.map(((s,o)=>Re.createElement(z,{fn:w,specPath:_.push(o.toString()),getComponent:x,getConfigs:C,rawParam:s,param:j.parameterWithMetaByIdentity(B,s),key:`${s.get(\"in\")}.${s.get(\"name\")}`,onChange:this.onChange,onChangeConsumes:this.onChangeConsumesWrapper,specSelectors:j,specActions:L,oas3Actions:$,oas3Selectors:V,pathMethod:B,isExecute:ae})))))):Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"p\",null,\"No parameters\"))):null,this.state.callbackVisible?Re.createElement(\"div\",{className:\"callbacks-container opblock-description-wrapper\"},Re.createElement(ee,{callbacks:(0,ze.Map)(U.get(\"callbacks\")),specPath:_.slice(0,-1).push(\"callbacks\")})):null,ce&&pe&&this.state.parametersVisible&&Re.createElement(\"div\",{className:\"opblock-section opblock-section-request-body\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",{className:`opblock-title parameter__name ${pe.get(\"required\")&&\"required\"}`},\"Request body\"),Re.createElement(\"label\",{id:le},Re.createElement(Z,{value:V.requestContentType(...B),contentTypes:pe.get(\"content\",(0,ze.List)()).keySeq(),onChange:s=>{this.onChangeMediaType({value:s,pathMethod:B})},className:\"body-param-content-type\",ariaLabel:\"Request content type\",controlId:le}))),Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(ie,{setRetainRequestBodyValueFlag:s=>$.setRetainRequestBodyValueFlag({value:s,pathMethod:B}),userHasEditedBody:V.hasUserEditedBody(...B),specPath:_.slice(0,-1).push(\"requestBody\"),requestBody:pe,requestBodyValue:V.requestBodyValue(...B),requestBodyInclusionSetting:V.requestBodyInclusionSetting(...B),requestBodyErrors:V.requestBodyErrors(...B),isExecute:ae,getConfigs:C,activeExamplesKey:V.activeExamplesMember(...B,\"requestBody\",\"requestBody\"),updateActiveExamplesKey:s=>{this.props.oas3Actions.setActiveExamplesMember({name:s,pathMethod:this.props.pathMethod,contextType:\"requestBody\",contextName:\"requestBody\"})},onChange:(s,o)=>{if(o){const i=V.requestBodyValue(...B),a=ze.Map.isMap(i)?i:(0,ze.Map)();return $.setRequestBodyValue({pathMethod:B,value:a.setIn(o,s)})}$.setRequestBodyValue({value:s,pathMethod:B})},onChangeIncludeEmpty:(s,o)=>{$.setRequestBodyInclusion({pathMethod:B,value:o,name:s})},contentType:V.requestContentType(...B)}))))}}const parameter_extension=({xKey:s,xVal:o})=>Re.createElement(\"div\",{className:\"parameter__extension\"},s,\": \",String(o)),eC={onChange:()=>{},isIncludedOptions:{}};class ParameterIncludeEmpty extends Re.Component{static defaultProps=eC;componentDidMount(){const{isIncludedOptions:s,onChange:o}=this.props,{shouldDispatchInit:i,defaultValue:a}=s;i&&o(a)}onCheckboxChange=s=>{const{onChange:o}=this.props;o(s.target.checked)};render(){let{isIncluded:s,isDisabled:o}=this.props;return Re.createElement(\"div\",null,Re.createElement(\"label\",{htmlFor:\"include_empty_value\",className:Jn()(\"parameter__empty_value_toggle\",{disabled:o})},Re.createElement(\"input\",{id:\"include_empty_value\",type:\"checkbox\",disabled:o,checked:!o&&s,onChange:this.onCheckboxChange}),\"Send empty value\"))}}class ParameterRow extends Re.Component{constructor(s,o){super(s,o),this.setDefaultValue()}UNSAFE_componentWillReceiveProps(s){let o,{specSelectors:i,pathMethod:a,rawParam:u}=s,_=i.isOAS3(),w=i.parameterWithMetaByIdentity(a,u)||new ze.Map;if(w=w.isEmpty()?u:w,_){let{schema:s}=getParameterSchema(w,{isOAS3:_});o=s?s.get(\"enum\"):void 0}else o=w?w.get(\"enum\"):void 0;let x,C=w?w.get(\"value\"):void 0;void 0!==C?x=C:u.get(\"required\")&&o&&o.size&&(x=o.first()),void 0!==x&&x!==C&&this.onChangeWrapper(function numberToString(s){return\"number\"==typeof s?s.toString():s}(x)),this.setDefaultValue()}onChangeWrapper=(s,o=!1)=>{let i,{onChange:a,rawParam:u}=this.props;return i=\"\"===s||s&&0===s.size?null:s,a(u,i,o)};_onExampleSelect=s=>{this.props.oas3Actions.setActiveExamplesMember({name:s,pathMethod:this.props.pathMethod,contextType:\"parameters\",contextName:this.getParamKey()})};onChangeIncludeEmpty=s=>{let{specActions:o,param:i,pathMethod:a}=this.props;const u=i.get(\"name\"),_=i.get(\"in\");return o.updateEmptyParamInclusion(a,u,_,s)};setDefaultValue=()=>{let{specSelectors:s,pathMethod:o,rawParam:i,oas3Selectors:a,fn:u}=this.props;const _=s.parameterWithMetaByIdentity(o,i)||(0,ze.Map)();let{schema:w}=getParameterSchema(_,{isOAS3:s.isOAS3()});const x=_.get(\"content\",(0,ze.Map)()).keySeq().first(),C=w?u.getSampleSchema(w.toJS(),x,{includeWriteOnly:!0}):null;if(_&&void 0===_.get(\"value\")&&\"body\"!==_.get(\"in\")){let i;if(s.isSwagger2())i=void 0!==_.get(\"x-example\")?_.get(\"x-example\"):void 0!==_.getIn([\"schema\",\"example\"])?_.getIn([\"schema\",\"example\"]):w&&w.getIn([\"default\"]);else if(s.isOAS3()){w=this.composeJsonSchema(w);const s=a.activeExamplesMember(...o,\"parameters\",this.getParamKey());i=void 0!==_.getIn([\"examples\",s,\"value\"])?_.getIn([\"examples\",s,\"value\"]):void 0!==_.getIn([\"content\",x,\"example\"])?_.getIn([\"content\",x,\"example\"]):void 0!==_.get(\"example\")?_.get(\"example\"):void 0!==(w&&w.get(\"example\"))?w&&w.get(\"example\"):void 0!==(w&&w.get(\"default\"))?w&&w.get(\"default\"):_.get(\"default\")}void 0===i||ze.List.isList(i)||(i=stringify(i));const j=u.jsonSchema202012.foldType(immutableToJS(w?.get(\"type\"))),L=u.jsonSchema202012.foldType(immutableToJS(w?.getIn([\"items\",\"type\"])));void 0!==i?this.onChangeWrapper(i):\"object\"===j&&C&&!_.get(\"examples\")?this.onChangeWrapper(ze.List.isList(C)?C:stringify(C)):\"array\"===j&&\"object\"===L&&C&&!_.get(\"examples\")&&this.onChangeWrapper(ze.List.isList(C)?C:(0,ze.List)(JSON.parse(C)))}};getParamKey(){const{param:s}=this.props;return s?`${s.get(\"name\")}-${s.get(\"in\")}`:null}composeJsonSchema(s){const{fn:o}=this.props,i=s.get(\"oneOf\")?.get(0)?.toJS(),a=s.get(\"anyOf\")?.get(0)?.toJS();return(0,ze.fromJS)(o.mergeJsonSchema(s.toJS(),i??a??{}))}render(){let{param:s,rawParam:o,getComponent:i,getConfigs:a,isExecute:u,fn:_,onChangeConsumes:w,specSelectors:x,pathMethod:C,specPath:j,oas3Selectors:L}=this.props,B=x.isOAS3();const{showExtensions:$,showCommonExtensions:V}=a();if(s||(s=o),!o)return null;const U=i(\"JsonSchemaForm\"),z=i(\"ParamBody\");let Y=s.get(\"in\"),Z=\"body\"!==Y?null:Re.createElement(z,{getComponent:i,getConfigs:a,fn:_,param:s,consumes:x.consumesOptionsFor(C),consumesValue:x.contentTypeValues(C).get(\"requestContentType\"),onChange:this.onChangeWrapper,onChangeConsumes:w,isExecute:u,specSelectors:x,pathMethod:C});const ee=i(\"modelExample\"),ie=i(\"Markdown\",!0),ae=i(\"ParameterExt\"),ce=i(\"ParameterIncludeEmpty\"),le=i(\"ExamplesSelectValueRetainer\"),pe=i(\"Example\");let{schema:de}=getParameterSchema(s,{isOAS3:B}),fe=x.parameterWithMetaByIdentity(C,o)||(0,ze.Map)();B&&(de=this.composeJsonSchema(de));let ye=de?de.get(\"format\"):null,be=\"formData\"===Y,_e=\"FormData\"in lt,Se=s.get(\"required\");const we=_.jsonSchema202012.getType(immutableToJS(de)),xe=_.jsonSchema202012.foldType(immutableToJS(de?.get(\"type\"))),Pe=_.jsonSchema202012.foldType(immutableToJS(de?.getIn([\"items\",\"type\"]))),Te=!Z&&\"object\"===xe,$e=!Z&&\"object\"===Pe;let qe,We,He,Ye,Xe=fe?fe.get(\"value\"):\"\",Qe=V?getCommonExtensions(de):null,et=$?getExtensions(s):null,tt=!1;void 0!==s&&de&&(qe=de.get(\"items\")),void 0!==qe?(We=qe.get(\"enum\"),He=qe.get(\"default\")):de&&(We=de.get(\"enum\")),We&&We.size&&We.size>0&&(tt=!0),void 0!==s&&(de&&(He=de.get(\"default\")),void 0===He&&(He=s.get(\"default\")),Ye=s.get(\"example\"),void 0===Ye&&(Ye=s.get(\"x-example\")));const rt=Z?null:Re.createElement(U,{fn:_,getComponent:i,value:Xe,required:Se,disabled:!u,description:s.get(\"name\"),onChange:this.onChangeWrapper,errors:fe.get(\"errors\"),schema:de});return Re.createElement(\"tr\",{\"data-param-name\":s.get(\"name\"),\"data-param-in\":s.get(\"in\")},Re.createElement(\"td\",{className:\"parameters-col_name\"},Re.createElement(\"div\",{className:Se?\"parameter__name required\":\"parameter__name\"},s.get(\"name\"),Se?Re.createElement(\"span\",null,\" *\"):null),Re.createElement(\"div\",{className:\"parameter__type\"},we,ye&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",ye,\")\")),Re.createElement(\"div\",{className:\"parameter__deprecated\"},B&&s.get(\"deprecated\")?\"deprecated\":null),Re.createElement(\"div\",{className:\"parameter__in\"},\"(\",s.get(\"in\"),\")\")),Re.createElement(\"td\",{className:\"parameters-col_description\"},s.get(\"description\")?Re.createElement(ie,{source:s.get(\"description\")}):null,!Z&&u||!tt?null:Re.createElement(ie,{className:\"parameter__enum\",source:\"<i>Available values</i> : \"+We.map((function(s){return s})).toArray().map(String).join(\", \")}),!Z&&u||void 0===He?null:Re.createElement(ie,{className:\"parameter__default\",source:\"<i>Default value</i> : \"+He}),!Z&&u||void 0===Ye?null:Re.createElement(ie,{source:\"<i>Example</i> : \"+Ye}),be&&!_e&&Re.createElement(\"div\",null,\"Error: your browser does not support FormData\"),B&&s.get(\"examples\")?Re.createElement(\"section\",{className:\"parameter-controls\"},Re.createElement(le,{examples:s.get(\"examples\"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:i,defaultToFirstExample:!0,currentKey:L.activeExamplesMember(...C,\"parameters\",this.getParamKey()),currentUserInputValue:Xe})):null,Te||$e?Re.createElement(ee,{getComponent:i,specPath:j.push(\"schema\"),getConfigs:a,isExecute:u,specSelectors:x,schema:de,example:rt}):rt,Z&&de?Re.createElement(ee,{getComponent:i,specPath:j.push(\"schema\"),getConfigs:a,isExecute:u,specSelectors:x,schema:de,example:Z,includeWriteOnly:!0}):null,!Z&&u&&s.get(\"allowEmptyValue\")?Re.createElement(ce,{onChange:this.onChangeIncludeEmpty,isIncluded:x.parameterInclusionSettingFor(C,s.get(\"name\"),s.get(\"in\")),isDisabled:!isEmptyValue(Xe)}):null,B&&s.get(\"examples\")?Re.createElement(pe,{example:s.getIn([\"examples\",L.activeExamplesMember(...C,\"parameters\",this.getParamKey())]),getComponent:i,getConfigs:a}):null,V&&Qe.size?Qe.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null,$&&et.size?et.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null))}}class Execute extends Re.Component{handleValidateParameters=()=>{let{specSelectors:s,specActions:o,path:i,method:a}=this.props;return o.validateParams([i,a]),s.validateBeforeExecute([i,a])};handleValidateRequestBody=()=>{let{path:s,method:o,specSelectors:i,oas3Selectors:a,oas3Actions:u}=this.props,_={missingBodyValue:!1,missingRequiredKeys:[]};u.clearRequestBodyValidateError({path:s,method:o});let w=i.getOAS3RequiredRequestBodyContentType([s,o]),x=a.requestBodyValue(s,o),C=a.validateBeforeExecute([s,o]),j=a.requestContentType(s,o);if(!C)return _.missingBodyValue=!0,u.setRequestBodyValidateError({path:s,method:o,validationErrors:_}),!1;if(!w)return!0;let L=a.validateShallowRequired({oas3RequiredRequestBodyContentType:w,oas3RequestContentType:j,oas3RequestBodyValue:x});return!L||L.length<1||(L.forEach((s=>{_.missingRequiredKeys.push(s)})),u.setRequestBodyValidateError({path:s,method:o,validationErrors:_}),!1)};handleValidationResultPass=()=>{let{specActions:s,operation:o,path:i,method:a}=this.props;this.props.onExecute&&this.props.onExecute(),s.execute({operation:o,path:i,method:a})};handleValidationResultFail=()=>{let{specActions:s,path:o,method:i}=this.props;s.clearValidateParams([o,i]),setTimeout((()=>{s.validateParams([o,i])}),40)};handleValidationResult=s=>{s?this.handleValidationResultPass():this.handleValidationResultFail()};onClick=()=>{let s=this.handleValidateParameters(),o=this.handleValidateRequestBody(),i=s&&o;this.handleValidationResult(i)};onChangeProducesWrapper=s=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],s);render(){const{disabled:s}=this.props;return Re.createElement(\"button\",{className:\"btn execute opblock-control__btn\",onClick:this.onClick,disabled:s},\"Execute\")}}class headers_Headers extends Re.Component{render(){let{headers:s,getComponent:o}=this.props;const i=o(\"Property\"),a=o(\"Markdown\",!0);return s&&s.size?Re.createElement(\"div\",{className:\"headers-wrapper\"},Re.createElement(\"h4\",{className:\"headers__title\"},\"Headers:\"),Re.createElement(\"table\",{className:\"headers\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"header-row\"},Re.createElement(\"th\",{className:\"header-col\"},\"Name\"),Re.createElement(\"th\",{className:\"header-col\"},\"Description\"),Re.createElement(\"th\",{className:\"header-col\"},\"Type\"))),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,o])=>{if(!We().Map.isMap(o))return null;const u=o.get(\"description\"),_=o.getIn([\"schema\"])?o.getIn([\"schema\",\"type\"]):o.getIn([\"type\"]),w=o.getIn([\"schema\",\"example\"]);return Re.createElement(\"tr\",{key:s},Re.createElement(\"td\",{className:\"header-col\"},s),Re.createElement(\"td\",{className:\"header-col\"},u?Re.createElement(a,{source:u}):null),Re.createElement(\"td\",{className:\"header-col\"},_,\" \",w?Re.createElement(i,{propKey:\"Example\",propVal:w,propClass:\"header-example\"}):null))})).toArray()))):null}}class Errors extends Re.Component{render(){let{editorActions:s,errSelectors:o,layoutSelectors:i,layoutActions:a,getComponent:u}=this.props;const _=u(\"Collapse\");if(s&&s.jumpToLine)var w=s.jumpToLine;let x=o.allErrors().filter((s=>\"thrown\"===s.get(\"type\")||\"error\"===s.get(\"level\")));if(!x||x.count()<1)return null;let C=i.isShown([\"errorPane\"],!0),j=x.sortBy((s=>s.get(\"line\")));return Re.createElement(\"pre\",{className:\"errors-wrapper\"},Re.createElement(\"hgroup\",{className:\"error\"},Re.createElement(\"h4\",{className:\"errors__title\"},\"Errors\"),Re.createElement(\"button\",{className:\"btn errors__clear-btn\",onClick:()=>a.show([\"errorPane\"],!C)},C?\"Hide\":\"Show\")),Re.createElement(_,{isOpened:C,animated:!0},Re.createElement(\"div\",{className:\"errors\"},j.map(((s,o)=>{let i=s.get(\"type\");return\"thrown\"===i||\"auth\"===i?Re.createElement(ThrownErrorItem,{key:o,error:s.get(\"error\")||s,jumpToLine:w}):\"spec\"===i?Re.createElement(SpecErrorItem,{key:o,error:s,jumpToLine:w}):void 0})))))}}const ThrownErrorItem=({error:s,jumpToLine:o})=>{if(!s)return null;let i=s.get(\"line\");return Re.createElement(\"div\",{className:\"error-wrapper\"},s?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,s.get(\"source\")&&s.get(\"level\")?toTitleCase(s.get(\"source\"))+\" \"+s.get(\"level\"):\"\",s.get(\"path\")?Re.createElement(\"small\",null,\" at \",s.get(\"path\")):null),Re.createElement(\"span\",{className:\"message thrown\"},s.get(\"message\")),Re.createElement(\"div\",{className:\"error-line\"},i&&o?Re.createElement(\"a\",{onClick:o.bind(null,i)},\"Jump to line \",i):null)):null)},SpecErrorItem=({error:s,jumpToLine:o=null})=>{let i=null;return s.get(\"path\")?i=ze.List.isList(s.get(\"path\"))?Re.createElement(\"small\",null,\"at \",s.get(\"path\").join(\".\")):Re.createElement(\"small\",null,\"at \",s.get(\"path\")):s.get(\"line\")&&!o&&(i=Re.createElement(\"small\",null,\"on line \",s.get(\"line\"))),Re.createElement(\"div\",{className:\"error-wrapper\"},s?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,toTitleCase(s.get(\"source\"))+\" \"+s.get(\"level\"),\" \",i),Re.createElement(\"span\",{className:\"message\"},s.get(\"message\")),Re.createElement(\"div\",{className:\"error-line\"},o?Re.createElement(\"a\",{onClick:o.bind(null,s.get(\"line\"))},\"Jump to line \",s.get(\"line\")):null)):null)};function toTitleCase(s){return(s||\"\").split(\" \").map((s=>s[0].toUpperCase()+s.slice(1))).join(\" \")}const content_type_noop=()=>{};class ContentType extends Re.Component{static defaultProps={onChange:content_type_noop,value:null,contentTypes:(0,ze.fromJS)([\"application/json\"])};componentDidMount(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}UNSAFE_componentWillReceiveProps(s){s.contentTypes&&s.contentTypes.size&&(s.contentTypes.includes(s.value)||s.onChange(s.contentTypes.first()))}onChangeWrapper=s=>this.props.onChange(s.target.value);render(){let{ariaControls:s,ariaLabel:o,className:i,contentTypes:a,controlId:u,value:_}=this.props;return a&&a.size?Re.createElement(\"div\",{className:\"content-type-wrapper \"+(i||\"\")},Re.createElement(\"select\",{\"aria-controls\":s,\"aria-label\":o,className:\"content-type\",id:u,onChange:this.onChangeWrapper,value:_||\"\"},a.map((s=>Re.createElement(\"option\",{key:s,value:s},s))).toArray())):null}}function xclass(...s){return s.filter((s=>!!s)).join(\" \").trim()}class Container extends Re.Component{render(){let{fullscreen:s,full:o,...i}=this.props;if(s)return Re.createElement(\"section\",i);let a=\"swagger-container\"+(o?\"-full\":\"\");return Re.createElement(\"section\",Mn()({},i,{className:xclass(i.className,a)}))}}const tC={mobile:\"\",tablet:\"-tablet\",desktop:\"-desktop\",large:\"-hd\"};class Col extends Re.Component{render(){const{hide:s,keepContents:o,mobile:i,tablet:a,desktop:u,large:_,...w}=this.props;if(s&&!o)return Re.createElement(\"span\",null);let x=[];for(let s in tC){if(!Object.prototype.hasOwnProperty.call(tC,s))continue;let o=tC[s];if(s in this.props){let i=this.props[s];if(i<1){x.push(\"none\"+o);continue}x.push(\"block\"+o),x.push(\"col-\"+i+o)}}s&&x.push(\"hidden\");let C=xclass(w.className,...x);return Re.createElement(\"section\",Mn()({},w,{className:C}))}}class Row extends Re.Component{render(){return Re.createElement(\"div\",Mn()({},this.props,{className:xclass(this.props.className,\"wrapper\")}))}}class Button extends Re.Component{static defaultProps={className:\"\"};render(){return Re.createElement(\"button\",Mn()({},this.props,{className:xclass(this.props.className,\"button\")}))}}const TextArea=s=>Re.createElement(\"textarea\",s),Input=s=>Re.createElement(\"input\",s);class Select extends Re.Component{static defaultProps={multiple:!1,allowEmptyValue:!0};constructor(s,o){let i;super(s,o),i=s.value?s.value:s.multiple?[\"\"]:\"\",this.state={value:i}}onChange=s=>{let o,{onChange:i,multiple:a}=this.props,u=[].slice.call(s.target.options);o=a?u.filter((function(s){return s.selected})).map((function(s){return s.value})):s.target.value,this.setState({value:o}),i&&i(o)};UNSAFE_componentWillReceiveProps(s){s.value!==this.props.value&&this.setState({value:s.value})}render(){let{allowedValues:s,multiple:o,allowEmptyValue:i,disabled:a}=this.props,u=this.state.value?.toJS?.()||this.state.value;return Re.createElement(\"select\",{className:this.props.className,multiple:o,value:u,onChange:this.onChange,disabled:a},i?Re.createElement(\"option\",{value:\"\"},\"--\"):null,s.map((function(s,o){return Re.createElement(\"option\",{key:o,value:String(s)},String(s))})))}}class layout_utils_Link extends Re.Component{render(){return Re.createElement(\"a\",Mn()({},this.props,{rel:\"noopener noreferrer\",className:xclass(this.props.className,\"link\")}))}}const NoMargin=({children:s})=>Re.createElement(\"div\",{className:\"no-margin\"},\" \",s,\" \");class Collapse extends Re.Component{static defaultProps={isOpened:!1,animated:!1};renderNotAnimated(){return this.props.isOpened?Re.createElement(NoMargin,null,this.props.children):Re.createElement(\"noscript\",null)}render(){let{animated:s,isOpened:o,children:i}=this.props;return s?(i=o?i:null,Re.createElement(NoMargin,null,i)):this.renderNotAnimated()}}class Overview extends Re.Component{constructor(...s){super(...s),this.setTagShown=this._setTagShown.bind(this)}_setTagShown(s,o){this.props.layoutActions.show(s,o)}showOp(s,o){let{layoutActions:i}=this.props;i.show(s,o)}render(){let{specSelectors:s,layoutSelectors:o,layoutActions:i,getComponent:a}=this.props,u=s.taggedOperations();const _=a(\"Collapse\");return Re.createElement(\"div\",null,Re.createElement(\"h4\",{className:\"overview-title\"},\"Overview\"),u.map(((s,a)=>{let u=s.get(\"operations\"),w=[\"overview-tags\",a],x=o.isShown(w,!0);return Re.createElement(\"div\",{key:\"overview-\"+a},Re.createElement(\"h4\",{onClick:()=>i.show(w,!x),className:\"link overview-tag\"},\" \",x?\"-\":\"+\",a),Re.createElement(_,{isOpened:x,animated:!0},u.map((s=>{let{path:a,method:u,id:_}=s.toObject(),w=\"operations\",x=_,C=o.isShown([w,x]);return Re.createElement(OperationLink,{key:_,path:a,method:u,id:a+\"-\"+u,shown:C,showOpId:x,showOpIdPrefix:w,href:`#operation-${x}`,onClick:i.show})})).toArray()))})).toArray(),u.size<1&&Re.createElement(\"h3\",null,\" No operations defined in spec! \"))}}class OperationLink extends Re.Component{constructor(s){super(s),this.onClick=this._onClick.bind(this)}_onClick(){let{showOpId:s,showOpIdPrefix:o,onClick:i,shown:a}=this.props;i([o,s],!a)}render(){let{id:s,method:o,shown:i,href:a}=this.props;return Re.createElement(layout_utils_Link,{href:a,onClick:this.onClick,className:\"block opblock-link \"+(i?\"shown\":\"\")},Re.createElement(\"div\",null,Re.createElement(\"small\",{className:`bold-label-${o}`},o.toUpperCase()),Re.createElement(\"span\",{className:\"bold-label\"},s)))}}class InitializedInput extends Re.Component{componentDidMount(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}render(){const{value:s,defaultValue:o,initialValue:i,...a}=this.props;return Re.createElement(\"input\",Mn()({},a,{ref:s=>this.inputRef=s}))}}class InfoBasePath extends Re.Component{render(){const{host:s,basePath:o}=this.props;return Re.createElement(\"pre\",{className:\"base-url\"},\"[ Base URL: \",s,o,\" ]\")}}class InfoUrl extends Re.PureComponent{render(){const{url:s,getComponent:o}=this.props,i=o(\"Link\");return Re.createElement(i,{target:\"_blank\",href:sanitizeUrl(s)},Re.createElement(\"span\",{className:\"url\"},\" \",s))}}class info_Info extends Re.Component{render(){const{info:s,url:o,host:i,basePath:a,getComponent:u,externalDocs:_,selectedServer:w,url:x}=this.props,C=s.get(\"version\"),j=s.get(\"description\"),L=s.get(\"title\"),B=safeBuildUrl(s.get(\"termsOfService\"),x,{selectedServer:w}),$=s.get(\"contact\"),V=s.get(\"license\"),U=safeBuildUrl(_&&_.get(\"url\"),x,{selectedServer:w}),z=_&&_.get(\"description\"),Y=u(\"Markdown\",!0),Z=u(\"Link\"),ee=u(\"VersionStamp\"),ie=u(\"OpenAPIVersion\"),ae=u(\"InfoUrl\"),ce=u(\"InfoBasePath\"),le=u(\"License\"),pe=u(\"Contact\");return Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"hgroup\",{className:\"main\"},Re.createElement(\"h2\",{className:\"title\"},L,Re.createElement(\"span\",null,C&&Re.createElement(ee,{version:C}),Re.createElement(ie,{oasVersion:\"2.0\"}))),i||a?Re.createElement(ce,{host:i,basePath:a}):null,o&&Re.createElement(ae,{getComponent:u,url:o})),Re.createElement(\"div\",{className:\"description\"},Re.createElement(Y,{source:j})),B&&Re.createElement(\"div\",{className:\"info__tos\"},Re.createElement(Z,{target:\"_blank\",href:sanitizeUrl(B)},\"Terms of service\")),$?.size>0&&Re.createElement(pe,{getComponent:u,data:$,selectedServer:w,url:o}),V?.size>0&&Re.createElement(le,{getComponent:u,license:V,selectedServer:w,url:o}),U?Re.createElement(Z,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(U)},z||U):null)}}const rC=info_Info;class InfoContainer extends Re.Component{render(){const{specSelectors:s,getComponent:o,oas3Selectors:i}=this.props,a=s.info(),u=s.url(),_=s.basePath(),w=s.host(),x=s.externalDocs(),C=i.selectedServer(),j=o(\"info\");return Re.createElement(\"div\",null,a&&a.count()?Re.createElement(j,{info:a,url:u,host:w,basePath:_,externalDocs:x,getComponent:o,selectedServer:C}):null)}}class contact_Contact extends Re.Component{render(){const{data:s,getComponent:o,selectedServer:i,url:a}=this.props,u=s.get(\"name\",\"the developer\"),_=safeBuildUrl(s.get(\"url\"),a,{selectedServer:i}),w=s.get(\"email\"),x=o(\"Link\");return Re.createElement(\"div\",{className:\"info__contact\"},_&&Re.createElement(\"div\",null,Re.createElement(x,{href:sanitizeUrl(_),target:\"_blank\"},u,\" - Website\")),w&&Re.createElement(x,{href:sanitizeUrl(`mailto:${w}`)},_?`Send email to ${u}`:`Contact ${u}`))}}const nC=contact_Contact;class license_License extends Re.Component{render(){const{license:s,getComponent:o,selectedServer:i,url:a}=this.props,u=s.get(\"name\",\"License\"),_=safeBuildUrl(s.get(\"url\"),a,{selectedServer:i}),w=o(\"Link\");return Re.createElement(\"div\",{className:\"info__license\"},_?Re.createElement(\"div\",{className:\"info__license__url\"},Re.createElement(w,{target:\"_blank\",href:sanitizeUrl(_)},u)):Re.createElement(\"span\",null,u))}}const sC=license_License;class JumpToPath extends Re.Component{render(){return null}}class CopyToClipboardBtn extends Re.Component{render(){let{getComponent:s}=this.props;const o=s(\"CopyIcon\");return Re.createElement(\"div\",{className:\"view-line-link copy-to-clipboard\",title:\"Copy to clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:this.props.textToCopy},Re.createElement(o,null)))}}class Footer extends Re.Component{render(){return Re.createElement(\"div\",{className:\"footer\"})}}class FilterContainer extends Re.Component{onFilterChange=s=>{const{target:{value:o}}=s;this.props.layoutActions.updateFilter(o)};render(){const{specSelectors:s,layoutSelectors:o,getComponent:i}=this.props,a=i(\"Col\"),u=\"loading\"===s.loadingStatus(),_=\"failed\"===s.loadingStatus(),w=o.currentFilter(),x=[\"operation-filter-input\"];return _&&x.push(\"failed\"),u&&x.push(\"loading\"),Re.createElement(\"div\",null,!1===w?null:Re.createElement(\"div\",{className:\"filter-container\"},Re.createElement(a,{className:\"filter wrapper\",mobile:12},Re.createElement(\"input\",{className:x.join(\" \"),placeholder:\"Filter by tag\",type:\"text\",onChange:this.onFilterChange,value:\"string\"==typeof w?w:\"\",disabled:u}))))}}const oC=Function.prototype;class ParamBody extends Re.PureComponent{static defaultProp={consumes:(0,ze.fromJS)([\"application/json\"]),param:(0,ze.fromJS)({}),onChange:oC,onChangeConsumes:oC};constructor(s,o){super(s,o),this.state={isEditBox:!1,value:\"\"}}componentDidMount(){this.updateValues.call(this,this.props)}UNSAFE_componentWillReceiveProps(s){this.updateValues.call(this,s)}updateValues=s=>{let{param:o,isExecute:i,consumesValue:a=\"\"}=s,u=/xml/i.test(a),_=/json/i.test(a),w=u?o.get(\"value_xml\"):o.get(\"value\");if(void 0!==w){let s=!w&&_?\"{}\":w;this.setState({value:s}),this.onChange(s,{isXml:u,isEditBox:i})}else u?this.onChange(this.sample(\"xml\"),{isXml:u,isEditBox:i}):this.onChange(this.sample(),{isEditBox:i})};sample=s=>{let{param:o,fn:i}=this.props,a=i.inferSchema(o.toJS());return i.getSampleSchema(a,s,{includeWriteOnly:!0})};onChange=(s,{isEditBox:o,isXml:i})=>{this.setState({value:s,isEditBox:o}),this._onChange(s,i)};_onChange=(s,o)=>{(this.props.onChange||oC)(s,o)};handleOnChange=s=>{const{consumesValue:o}=this.props,i=/xml/i.test(o),a=s.target.value;this.onChange(a,{isXml:i,isEditBox:this.state.isEditBox})};toggleIsEditBox=()=>this.setState((s=>({isEditBox:!s.isEditBox})));render(){let{onChangeConsumes:s,param:o,isExecute:i,specSelectors:a,pathMethod:u,getComponent:_}=this.props;const w=_(\"Button\"),x=_(\"TextArea\"),C=_(\"HighlightCode\",!0),j=_(\"contentType\");let L=(a?a.parameterWithMetaByIdentity(u,o):o).get(\"errors\",(0,ze.List)()),B=a.contentTypeValues(u).get(\"requestContentType\"),$=this.props.consumes&&this.props.consumes.size?this.props.consumes:ParamBody.defaultProp.consumes,{value:V,isEditBox:U}=this.state,z=null;getKnownSyntaxHighlighterLanguage(V)&&(z=\"json\");const Y=`${createHtmlReadyId(`${u[1]}${u[0]}_parameters`)}_select`;return Re.createElement(\"div\",{className:\"body-param\",\"data-param-name\":o.get(\"name\"),\"data-param-in\":o.get(\"in\")},U&&i?Re.createElement(x,{className:\"body-param__text\"+(L.count()?\" invalid\":\"\"),value:V,onChange:this.handleOnChange}):V&&Re.createElement(C,{className:\"body-param__example\",language:z},V),Re.createElement(\"div\",{className:\"body-param-options\"},i?Re.createElement(\"div\",{className:\"body-param-edit\"},Re.createElement(w,{className:U?\"btn cancel body-param__example-edit\":\"btn edit body-param__example-edit\",onClick:this.toggleIsEditBox},U?\"Cancel\":\"Edit\")):null,Re.createElement(\"label\",{htmlFor:Y},Re.createElement(\"span\",null,\"Parameter content type\"),Re.createElement(j,{value:B,contentTypes:$,onChange:s,className:\"body-param-content-type\",ariaLabel:\"Parameter content type\",controlId:Y}))))}}class Curl extends Re.Component{render(){const{request:s,getComponent:o}=this.props,i=requestSnippetGenerator_curl_bash(s),a=o(\"SyntaxHighlighter\",!0);return Re.createElement(\"div\",{className:\"curl-command\"},Re.createElement(\"h4\",null,\"Curl\"),Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:i},Re.createElement(\"button\",null))),Re.createElement(\"div\",null,Re.createElement(a,{language:\"bash\",className:\"curl microlight\",renderPlainText:({children:s,PlainTextViewer:o})=>Re.createElement(o,{className:\"curl\"},s)},i)))}}const property=({propKey:s,propVal:o,propClass:i})=>Re.createElement(\"span\",{className:i},Re.createElement(\"br\",null),s,\": \",String(o));class TryItOutButton extends Re.Component{static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1};render(){const{onTryoutClick:s,onCancelClick:o,onResetClick:i,enabled:a,hasUserEditedBody:u,isOAS3:_}=this.props,w=_&&u;return Re.createElement(\"div\",{className:w?\"try-out btn-group\":\"try-out\"},a?Re.createElement(\"button\",{className:\"btn try-out__btn cancel\",onClick:o},\"Cancel\"):Re.createElement(\"button\",{className:\"btn try-out__btn\",onClick:s},\"Try it out \"),w&&Re.createElement(\"button\",{className:\"btn try-out__btn reset\",onClick:i},\"Reset\"))}}class VersionPragmaFilter extends Re.PureComponent{static defaultProps={alsoShow:null,children:null,bypass:!1};render(){const{bypass:s,isSwagger2:o,isOAS3:i,alsoShow:a}=this.props;return s?Re.createElement(\"div\",null,this.props.children):o&&i?Re.createElement(\"div\",{className:\"version-pragma\"},a,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,Re.createElement(\"code\",null,\"swagger\"),\" and \",Re.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),Re.createElement(\"p\",null,\"Supported version fields are \",Re.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",Re.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\")))):o||i?Re.createElement(\"div\",null,this.props.children):Re.createElement(\"div\",{className:\"version-pragma\"},a,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),Re.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",Re.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",Re.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\"))))}}const version_stamp=({version:s})=>Re.createElement(\"small\",null,Re.createElement(\"pre\",{className:\"version\"},\" \",s,\" \")),openapi_version=({oasVersion:s})=>Re.createElement(\"small\",{className:\"version-stamp\"},Re.createElement(\"pre\",{className:\"version\"},\"OAS \",s)),deep_link=({enabled:s,path:o,text:i})=>Re.createElement(\"a\",{className:\"nostyle\",onClick:s?s=>s.preventDefault():null,href:s?`#/${o}`:null},Re.createElement(\"span\",null,i)),svg_assets=()=>Re.createElement(\"div\",null,Re.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",className:\"svg-assets\"},Re.createElement(\"defs\",null,Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"unlocked\"},Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"locked\"},Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"close\"},Re.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow\"},Re.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-down\"},Re.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-up\"},Re.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"jump-to\"},Re.createElement(\"path\",{d:\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"expand\"},Re.createElement(\"path\",{d:\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 15 16\",id:\"copy\"},Re.createElement(\"g\",{transform:\"translate(2, -1)\"},Re.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"}))))));var iC;function decodeEntity(s){return(iC=iC||document.createElement(\"textarea\")).innerHTML=\"&\"+s+\";\",iC.value}var aC=Object.prototype.hasOwnProperty;function index_browser_has(s,o){return!!s&&aC.call(s,o)}function index_browser_assign(s){return[].slice.call(arguments,1).forEach((function(o){if(o){if(\"object\"!=typeof o)throw new TypeError(o+\"must be object\");Object.keys(o).forEach((function(i){s[i]=o[i]}))}})),s}var cC=/\\\\([\\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;function unescapeMd(s){return s.indexOf(\"\\\\\")<0?s:s.replace(cC,\"$1\")}function isValidEntityCode(s){return!(s>=55296&&s<=57343)&&(!(s>=64976&&s<=65007)&&(!!(65535&~s&&65534!=(65535&s))&&(!(s>=0&&s<=8)&&(11!==s&&(!(s>=14&&s<=31)&&(!(s>=127&&s<=159)&&!(s>1114111)))))))}function fromCodePoint(s){if(s>65535){var o=55296+((s-=65536)>>10),i=56320+(1023&s);return String.fromCharCode(o,i)}return String.fromCharCode(s)}var lC=/&([a-z#][a-z0-9]{1,31});/gi,uC=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function replaceEntityPattern(s,o){var i=0,a=decodeEntity(o);return o!==a?a:35===o.charCodeAt(0)&&uC.test(o)&&isValidEntityCode(i=\"x\"===o[1].toLowerCase()?parseInt(o.slice(2),16):parseInt(o.slice(1),10))?fromCodePoint(i):s}function replaceEntities(s){return s.indexOf(\"&\")<0?s:s.replace(lC,replaceEntityPattern)}var pC=/[&<>\"]/,hC=/[&<>\"]/g,dC={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"};function replaceUnsafeChar(s){return dC[s]}function escapeHtml(s){return pC.test(s)?s.replace(hC,replaceUnsafeChar):s}var fC={};function nextToken(s,o){return++o>=s.length-2?o:\"paragraph_open\"===s[o].type&&s[o].tight&&\"inline\"===s[o+1].type&&0===s[o+1].content.length&&\"paragraph_close\"===s[o+2].type&&s[o+2].tight?nextToken(s,o+2):o}fC.blockquote_open=function(){return\"<blockquote>\\n\"},fC.blockquote_close=function(s,o){return\"</blockquote>\"+mC(s,o)},fC.code=function(s,o){return s[o].block?\"<pre><code>\"+escapeHtml(s[o].content)+\"</code></pre>\"+mC(s,o):\"<code>\"+escapeHtml(s[o].content)+\"</code>\"},fC.fence=function(s,o,i,a,u){var _,w,x=s[o],C=\"\",j=i.langPrefix;if(x.params){if(w=(_=x.params.split(/\\s+/g)).join(\" \"),index_browser_has(u.rules.fence_custom,_[0]))return u.rules.fence_custom[_[0]](s,o,i,a,u);C=' class=\"'+j+escapeHtml(replaceEntities(unescapeMd(w)))+'\"'}return\"<pre><code\"+C+\">\"+(i.highlight&&i.highlight.apply(i.highlight,[x.content].concat(_))||escapeHtml(x.content))+\"</code></pre>\"+mC(s,o)},fC.fence_custom={},fC.heading_open=function(s,o){return\"<h\"+s[o].hLevel+\">\"},fC.heading_close=function(s,o){return\"</h\"+s[o].hLevel+\">\\n\"},fC.hr=function(s,o,i){return(i.xhtmlOut?\"<hr />\":\"<hr>\")+mC(s,o)},fC.bullet_list_open=function(){return\"<ul>\\n\"},fC.bullet_list_close=function(s,o){return\"</ul>\"+mC(s,o)},fC.list_item_open=function(){return\"<li>\"},fC.list_item_close=function(){return\"</li>\\n\"},fC.ordered_list_open=function(s,o){var i=s[o];return\"<ol\"+(i.order>1?' start=\"'+i.order+'\"':\"\")+\">\\n\"},fC.ordered_list_close=function(s,o){return\"</ol>\"+mC(s,o)},fC.paragraph_open=function(s,o){return s[o].tight?\"\":\"<p>\"},fC.paragraph_close=function(s,o){var i=!(s[o].tight&&o&&\"inline\"===s[o-1].type&&!s[o-1].content);return(s[o].tight?\"\":\"</p>\")+(i?mC(s,o):\"\")},fC.link_open=function(s,o,i){var a=s[o].title?' title=\"'+escapeHtml(replaceEntities(s[o].title))+'\"':\"\",u=i.linkTarget?' target=\"'+i.linkTarget+'\"':\"\";return'<a href=\"'+escapeHtml(s[o].href)+'\"'+a+u+\">\"},fC.link_close=function(){return\"</a>\"},fC.image=function(s,o,i){var a=' src=\"'+escapeHtml(s[o].src)+'\"',u=s[o].title?' title=\"'+escapeHtml(replaceEntities(s[o].title))+'\"':\"\";return\"<img\"+a+(' alt=\"'+(s[o].alt?escapeHtml(replaceEntities(unescapeMd(s[o].alt))):\"\")+'\"')+u+(i.xhtmlOut?\" /\":\"\")+\">\"},fC.table_open=function(){return\"<table>\\n\"},fC.table_close=function(){return\"</table>\\n\"},fC.thead_open=function(){return\"<thead>\\n\"},fC.thead_close=function(){return\"</thead>\\n\"},fC.tbody_open=function(){return\"<tbody>\\n\"},fC.tbody_close=function(){return\"</tbody>\\n\"},fC.tr_open=function(){return\"<tr>\"},fC.tr_close=function(){return\"</tr>\\n\"},fC.th_open=function(s,o){var i=s[o];return\"<th\"+(i.align?' style=\"text-align:'+i.align+'\"':\"\")+\">\"},fC.th_close=function(){return\"</th>\"},fC.td_open=function(s,o){var i=s[o];return\"<td\"+(i.align?' style=\"text-align:'+i.align+'\"':\"\")+\">\"},fC.td_close=function(){return\"</td>\"},fC.strong_open=function(){return\"<strong>\"},fC.strong_close=function(){return\"</strong>\"},fC.em_open=function(){return\"<em>\"},fC.em_close=function(){return\"</em>\"},fC.del_open=function(){return\"<del>\"},fC.del_close=function(){return\"</del>\"},fC.ins_open=function(){return\"<ins>\"},fC.ins_close=function(){return\"</ins>\"},fC.mark_open=function(){return\"<mark>\"},fC.mark_close=function(){return\"</mark>\"},fC.sub=function(s,o){return\"<sub>\"+escapeHtml(s[o].content)+\"</sub>\"},fC.sup=function(s,o){return\"<sup>\"+escapeHtml(s[o].content)+\"</sup>\"},fC.hardbreak=function(s,o,i){return i.xhtmlOut?\"<br />\\n\":\"<br>\\n\"},fC.softbreak=function(s,o,i){return i.breaks?i.xhtmlOut?\"<br />\\n\":\"<br>\\n\":\"\\n\"},fC.text=function(s,o){return escapeHtml(s[o].content)},fC.htmlblock=function(s,o){return s[o].content},fC.htmltag=function(s,o){return s[o].content},fC.abbr_open=function(s,o){return'<abbr title=\"'+escapeHtml(replaceEntities(s[o].title))+'\">'},fC.abbr_close=function(){return\"</abbr>\"},fC.footnote_ref=function(s,o){var i=Number(s[o].id+1).toString(),a=\"fnref\"+i;return s[o].subId>0&&(a+=\":\"+s[o].subId),'<sup class=\"footnote-ref\"><a href=\"#fn'+i+'\" id=\"'+a+'\">['+i+\"]</a></sup>\"},fC.footnote_block_open=function(s,o,i){return(i.xhtmlOut?'<hr class=\"footnotes-sep\" />\\n':'<hr class=\"footnotes-sep\">\\n')+'<section class=\"footnotes\">\\n<ol class=\"footnotes-list\">\\n'},fC.footnote_block_close=function(){return\"</ol>\\n</section>\\n\"},fC.footnote_open=function(s,o){return'<li id=\"fn'+Number(s[o].id+1).toString()+'\"  class=\"footnote-item\">'},fC.footnote_close=function(){return\"</li>\\n\"},fC.footnote_anchor=function(s,o){var i=\"fnref\"+Number(s[o].id+1).toString();return s[o].subId>0&&(i+=\":\"+s[o].subId),' <a href=\"#'+i+'\" class=\"footnote-backref\">↩</a>'},fC.dl_open=function(){return\"<dl>\\n\"},fC.dt_open=function(){return\"<dt>\"},fC.dd_open=function(){return\"<dd>\"},fC.dl_close=function(){return\"</dl>\\n\"},fC.dt_close=function(){return\"</dt>\\n\"},fC.dd_close=function(){return\"</dd>\\n\"};var mC=fC.getBreak=function getBreak(s,o){return(o=nextToken(s,o))<s.length&&\"list_item_close\"===s[o].type?\"\":\"\\n\"};function Renderer(){this.rules=index_browser_assign({},fC),this.getBreak=fC.getBreak}function Ruler(){this.__rules__=[],this.__cache__=null}function StateInline(s,o,i,a,u){this.src=s,this.env=a,this.options=i,this.parser=o,this.tokens=u,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\"\",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent=\"\",this.labelUnmatchedScopes=0}function parseLinkLabel(s,o){var i,a,u,_=-1,w=s.posMax,x=s.pos,C=s.isInLabel;if(s.isInLabel)return-1;if(s.labelUnmatchedScopes)return s.labelUnmatchedScopes--,-1;for(s.pos=o+1,s.isInLabel=!0,i=1;s.pos<w;){if(91===(u=s.src.charCodeAt(s.pos)))i++;else if(93===u&&0===--i){a=!0;break}s.parser.skipToken(s)}return a?(_=s.pos,s.labelUnmatchedScopes=0):s.labelUnmatchedScopes=i-1,s.pos=x,s.isInLabel=C,_}function parseAbbr(s,o,i,a){var u,_,w,x,C,j;if(42!==s.charCodeAt(0))return-1;if(91!==s.charCodeAt(1))return-1;if(-1===s.indexOf(\"]:\"))return-1;if((_=parseLinkLabel(u=new StateInline(s,o,i,a,[]),1))<0||58!==s.charCodeAt(_+1))return-1;for(x=u.posMax,w=_+2;w<x&&10!==u.src.charCodeAt(w);w++);return C=s.slice(2,_),0===(j=s.slice(_+2,w).trim()).length?-1:(a.abbreviations||(a.abbreviations={}),void 0===a.abbreviations[\":\"+C]&&(a.abbreviations[\":\"+C]=j),w)}function normalizeLink(s){var o=replaceEntities(s);try{o=decodeURI(o)}catch(s){}return encodeURI(o)}function parseLinkDestination(s,o){var i,a,u,_=o,w=s.posMax;if(60===s.src.charCodeAt(o)){for(o++;o<w;){if(10===(i=s.src.charCodeAt(o)))return!1;if(62===i)return u=normalizeLink(unescapeMd(s.src.slice(_+1,o))),!!s.parser.validateLink(u)&&(s.pos=o+1,s.linkContent=u,!0);92===i&&o+1<w?o+=2:o++}return!1}for(a=0;o<w&&32!==(i=s.src.charCodeAt(o))&&!(i<32||127===i);)if(92===i&&o+1<w)o+=2;else{if(40===i&&++a>1)break;if(41===i&&--a<0)break;o++}return _!==o&&(u=unescapeMd(s.src.slice(_,o)),!!s.parser.validateLink(u)&&(s.linkContent=u,s.pos=o,!0))}function parseLinkTitle(s,o){var i,a=o,u=s.posMax,_=s.src.charCodeAt(o);if(34!==_&&39!==_&&40!==_)return!1;for(o++,40===_&&(_=41);o<u;){if((i=s.src.charCodeAt(o))===_)return s.pos=o+1,s.linkContent=unescapeMd(s.src.slice(a+1,o)),!0;92===i&&o+1<u?o+=2:o++}return!1}function normalizeReference(s){return s.trim().replace(/\\s+/g,\" \").toUpperCase()}function parseReference(s,o,i,a){var u,_,w,x,C,j,L,B,$;if(91!==s.charCodeAt(0))return-1;if(-1===s.indexOf(\"]:\"))return-1;if((_=parseLinkLabel(u=new StateInline(s,o,i,a,[]),0))<0||58!==s.charCodeAt(_+1))return-1;for(x=u.posMax,w=_+2;w<x&&(32===(C=u.src.charCodeAt(w))||10===C);w++);if(!parseLinkDestination(u,w))return-1;for(L=u.linkContent,j=w=u.pos,w+=1;w<x&&(32===(C=u.src.charCodeAt(w))||10===C);w++);for(w<x&&j!==w&&parseLinkTitle(u,w)?(B=u.linkContent,w=u.pos):(B=\"\",w=j);w<x&&32===u.src.charCodeAt(w);)w++;return w<x&&10!==u.src.charCodeAt(w)?-1:($=normalizeReference(s.slice(1,_)),void 0===a.references[$]&&(a.references[$]={title:B,href:L}),w)}Renderer.prototype.renderInline=function(s,o,i){for(var a=this.rules,u=s.length,_=0,w=\"\";u--;)w+=a[s[_].type](s,_++,o,i,this);return w},Renderer.prototype.render=function(s,o,i){for(var a=this.rules,u=s.length,_=-1,w=\"\";++_<u;)\"inline\"===s[_].type?w+=this.renderInline(s[_].children,o,i):w+=a[s[_].type](s,_,o,i,this);return w},Ruler.prototype.__find__=function(s){for(var o=this.__rules__.length,i=-1;o--;)if(this.__rules__[++i].name===s)return i;return-1},Ruler.prototype.__compile__=function(){var s=this,o=[\"\"];s.__rules__.forEach((function(s){s.enabled&&s.alt.forEach((function(s){o.indexOf(s)<0&&o.push(s)}))})),s.__cache__={},o.forEach((function(o){s.__cache__[o]=[],s.__rules__.forEach((function(i){i.enabled&&(o&&i.alt.indexOf(o)<0||s.__cache__[o].push(i.fn))}))}))},Ruler.prototype.at=function(s,o,i){var a=this.__find__(s),u=i||{};if(-1===a)throw new Error(\"Parser rule not found: \"+s);this.__rules__[a].fn=o,this.__rules__[a].alt=u.alt||[],this.__cache__=null},Ruler.prototype.before=function(s,o,i,a){var u=this.__find__(s),_=a||{};if(-1===u)throw new Error(\"Parser rule not found: \"+s);this.__rules__.splice(u,0,{name:o,enabled:!0,fn:i,alt:_.alt||[]}),this.__cache__=null},Ruler.prototype.after=function(s,o,i,a){var u=this.__find__(s),_=a||{};if(-1===u)throw new Error(\"Parser rule not found: \"+s);this.__rules__.splice(u+1,0,{name:o,enabled:!0,fn:i,alt:_.alt||[]}),this.__cache__=null},Ruler.prototype.push=function(s,o,i){var a=i||{};this.__rules__.push({name:s,enabled:!0,fn:o,alt:a.alt||[]}),this.__cache__=null},Ruler.prototype.enable=function(s,o){s=Array.isArray(s)?s:[s],o&&this.__rules__.forEach((function(s){s.enabled=!1})),s.forEach((function(s){var o=this.__find__(s);if(o<0)throw new Error(\"Rules manager: invalid rule name \"+s);this.__rules__[o].enabled=!0}),this),this.__cache__=null},Ruler.prototype.disable=function(s){(s=Array.isArray(s)?s:[s]).forEach((function(s){var o=this.__find__(s);if(o<0)throw new Error(\"Rules manager: invalid rule name \"+s);this.__rules__[o].enabled=!1}),this),this.__cache__=null},Ruler.prototype.getRules=function(s){return null===this.__cache__&&this.__compile__(),this.__cache__[s]||[]},StateInline.prototype.pushPending=function(){this.tokens.push({type:\"text\",content:this.pending,level:this.pendingLevel}),this.pending=\"\"},StateInline.prototype.push=function(s){this.pending&&this.pushPending(),this.tokens.push(s),this.pendingLevel=this.level},StateInline.prototype.cacheSet=function(s,o){for(var i=this.cache.length;i<=s;i++)this.cache.push(0);this.cache[s]=o},StateInline.prototype.cacheGet=function(s){return s<this.cache.length?this.cache[s]:0};var gC=\" \\n()[]'\\\".,!?-\";function regEscape(s){return s.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,\"\\\\$1\")}var yC=/\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/,vC=/\\((c|tm|r|p)\\)/gi,bC={c:\"©\",r:\"®\",p:\"§\",tm:\"™\"};function replaceScopedAbbr(s){return s.indexOf(\"(\")<0?s:s.replace(vC,(function(s,o){return bC[o.toLowerCase()]}))}var _C=/['\"]/,SC=/['\"]/g,EC=/[-\\s()\\[\\]]/;function isLetter(s,o){return!(o<0||o>=s.length)&&!EC.test(s[o])}function replaceAt(s,o,i){return s.substr(0,o)+i+s.substr(o+1)}var wC=[[\"block\",function block(s){s.inlineMode?s.tokens.push({type:\"inline\",content:s.src.replace(/\\n/g,\" \").trim(),level:0,lines:[0,1],children:[]}):s.block.parse(s.src,s.options,s.env,s.tokens)}],[\"abbr\",function abbr(s){var o,i,a,u,_=s.tokens;if(!s.inlineMode)for(o=1,i=_.length-1;o<i;o++)if(\"paragraph_open\"===_[o-1].type&&\"inline\"===_[o].type&&\"paragraph_close\"===_[o+1].type){for(a=_[o].content;a.length&&!((u=parseAbbr(a,s.inline,s.options,s.env))<0);)a=a.slice(u).trim();_[o].content=a,a.length||(_[o-1].tight=!0,_[o+1].tight=!0)}}],[\"references\",function references(s){var o,i,a,u,_=s.tokens;if(s.env.references=s.env.references||{},!s.inlineMode)for(o=1,i=_.length-1;o<i;o++)if(\"inline\"===_[o].type&&\"paragraph_open\"===_[o-1].type&&\"paragraph_close\"===_[o+1].type){for(a=_[o].content;a.length&&!((u=parseReference(a,s.inline,s.options,s.env))<0);)a=a.slice(u).trim();_[o].content=a,a.length||(_[o-1].tight=!0,_[o+1].tight=!0)}}],[\"inline\",function inline(s){var o,i,a,u=s.tokens;for(i=0,a=u.length;i<a;i++)\"inline\"===(o=u[i]).type&&s.inline.parse(o.content,s.options,s.env,o.children)}],[\"footnote_tail\",function footnote_block(s){var o,i,a,u,_,w,x,C,j,L=0,B=!1,$={};if(s.env.footnotes&&(s.tokens=s.tokens.filter((function(s){return\"footnote_reference_open\"===s.type?(B=!0,C=[],j=s.label,!1):\"footnote_reference_close\"===s.type?(B=!1,$[\":\"+j]=C,!1):(B&&C.push(s),!B)})),s.env.footnotes.list)){for(w=s.env.footnotes.list,s.tokens.push({type:\"footnote_block_open\",level:L++}),o=0,i=w.length;o<i;o++){for(s.tokens.push({type:\"footnote_open\",id:o,level:L++}),w[o].tokens?((x=[]).push({type:\"paragraph_open\",tight:!1,level:L++}),x.push({type:\"inline\",content:\"\",level:L,children:w[o].tokens}),x.push({type:\"paragraph_close\",tight:!1,level:--L})):w[o].label&&(x=$[\":\"+w[o].label]),s.tokens=s.tokens.concat(x),_=\"paragraph_close\"===s.tokens[s.tokens.length-1].type?s.tokens.pop():null,u=w[o].count>0?w[o].count:1,a=0;a<u;a++)s.tokens.push({type:\"footnote_anchor\",id:o,subId:a,level:L});_&&s.tokens.push(_),s.tokens.push({type:\"footnote_close\",level:--L})}s.tokens.push({type:\"footnote_block_close\",level:--L})}}],[\"abbr2\",function abbr2(s){var o,i,a,u,_,w,x,C,j,L,B,$,V=s.tokens;if(s.env.abbreviations)for(s.env.abbrRegExp||($=\"(^|[\"+gC.split(\"\").map(regEscape).join(\"\")+\"])(\"+Object.keys(s.env.abbreviations).map((function(s){return s.substr(1)})).sort((function(s,o){return o.length-s.length})).map(regEscape).join(\"|\")+\")($|[\"+gC.split(\"\").map(regEscape).join(\"\")+\"])\",s.env.abbrRegExp=new RegExp($,\"g\")),L=s.env.abbrRegExp,i=0,a=V.length;i<a;i++)if(\"inline\"===V[i].type)for(o=(u=V[i].children).length-1;o>=0;o--)if(\"text\"===(_=u[o]).type){for(C=0,w=_.content,L.lastIndex=0,j=_.level,x=[];B=L.exec(w);)L.lastIndex>C&&x.push({type:\"text\",content:w.slice(C,B.index+B[1].length),level:j}),x.push({type:\"abbr_open\",title:s.env.abbreviations[\":\"+B[2]],level:j++}),x.push({type:\"text\",content:B[2],level:j}),x.push({type:\"abbr_close\",level:--j}),C=L.lastIndex-B[3].length;x.length&&(C<w.length&&x.push({type:\"text\",content:w.slice(C),level:j}),V[i].children=u=[].concat(u.slice(0,o),x,u.slice(o+1)))}}],[\"replacements\",function index_browser_replace(s){var o,i,a,u,_;if(s.options.typographer)for(_=s.tokens.length-1;_>=0;_--)if(\"inline\"===s.tokens[_].type)for(o=(u=s.tokens[_].children).length-1;o>=0;o--)\"text\"===(i=u[o]).type&&(a=replaceScopedAbbr(a=i.content),yC.test(a)&&(a=a.replace(/\\+-/g,\"±\").replace(/\\.{2,}/g,\"…\").replace(/([?!])…/g,\"$1..\").replace(/([?!]){4,}/g,\"$1$1$1\").replace(/,{2,}/g,\",\").replace(/(^|[^-])---([^-]|$)/gm,\"$1—$2\").replace(/(^|\\s)--(\\s|$)/gm,\"$1–$2\").replace(/(^|[^-\\s])--([^-\\s]|$)/gm,\"$1–$2\")),i.content=a)}],[\"smartquotes\",function smartquotes(s){var o,i,a,u,_,w,x,C,j,L,B,$,V,U,z,Y,Z;if(s.options.typographer)for(Z=[],z=s.tokens.length-1;z>=0;z--)if(\"inline\"===s.tokens[z].type)for(Y=s.tokens[z].children,Z.length=0,o=0;o<Y.length;o++)if(\"text\"===(i=Y[o]).type&&!_C.test(i.text)){for(x=Y[o].level,V=Z.length-1;V>=0&&!(Z[V].level<=x);V--);Z.length=V+1,_=0,w=(a=i.content).length;e:for(;_<w&&(SC.lastIndex=_,u=SC.exec(a));)if(C=!isLetter(a,u.index-1),_=u.index+1,U=\"'\"===u[0],(j=!isLetter(a,_))||C){if(B=!j,$=!C)for(V=Z.length-1;V>=0&&(L=Z[V],!(Z[V].level<x));V--)if(L.single===U&&Z[V].level===x){L=Z[V],U?(Y[L.token].content=replaceAt(Y[L.token].content,L.pos,s.options.quotes[2]),i.content=replaceAt(i.content,u.index,s.options.quotes[3])):(Y[L.token].content=replaceAt(Y[L.token].content,L.pos,s.options.quotes[0]),i.content=replaceAt(i.content,u.index,s.options.quotes[1])),Z.length=V;continue e}B?Z.push({token:o,pos:u.index,single:U,level:x}):$&&U&&(i.content=replaceAt(i.content,u.index,\"’\"))}else U&&(i.content=replaceAt(i.content,u.index,\"’\"))}}]];function Core(){this.options={},this.ruler=new Ruler;for(var s=0;s<wC.length;s++)this.ruler.push(wC[s][0],wC[s][1])}function StateBlock(s,o,i,a,u){var _,w,x,C,j,L,B;for(this.src=s,this.parser=o,this.options=i,this.env=a,this.tokens=u,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType=\"root\",this.ddIndent=-1,this.level=0,this.result=\"\",L=0,B=!1,x=C=L=0,j=(w=this.src).length;C<j;C++){if(_=w.charCodeAt(C),!B){if(32===_){L++;continue}B=!0}10!==_&&C!==j-1||(10!==_&&C++,this.bMarks.push(x),this.eMarks.push(C),this.tShift.push(L),B=!1,L=0,x=C+1)}this.bMarks.push(w.length),this.eMarks.push(w.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function skipBulletListMarker(s,o){var i,a,u;return(a=s.bMarks[o]+s.tShift[o])>=(u=s.eMarks[o])||42!==(i=s.src.charCodeAt(a++))&&45!==i&&43!==i||a<u&&32!==s.src.charCodeAt(a)?-1:a}function skipOrderedListMarker(s,o){var i,a=s.bMarks[o]+s.tShift[o],u=s.eMarks[o];if(a+1>=u)return-1;if((i=s.src.charCodeAt(a++))<48||i>57)return-1;for(;;){if(a>=u)return-1;if(!((i=s.src.charCodeAt(a++))>=48&&i<=57)){if(41===i||46===i)break;return-1}}return a<u&&32!==s.src.charCodeAt(a)?-1:a}Core.prototype.process=function(s){var o,i,a;for(o=0,i=(a=this.ruler.getRules(\"\")).length;o<i;o++)a[o](s)},StateBlock.prototype.isEmpty=function isEmpty(s){return this.bMarks[s]+this.tShift[s]>=this.eMarks[s]},StateBlock.prototype.skipEmptyLines=function skipEmptyLines(s){for(var o=this.lineMax;s<o&&!(this.bMarks[s]+this.tShift[s]<this.eMarks[s]);s++);return s},StateBlock.prototype.skipSpaces=function skipSpaces(s){for(var o=this.src.length;s<o&&32===this.src.charCodeAt(s);s++);return s},StateBlock.prototype.skipChars=function skipChars(s,o){for(var i=this.src.length;s<i&&this.src.charCodeAt(s)===o;s++);return s},StateBlock.prototype.skipCharsBack=function skipCharsBack(s,o,i){if(s<=i)return s;for(;s>i;)if(o!==this.src.charCodeAt(--s))return s+1;return s},StateBlock.prototype.getLines=function getLines(s,o,i,a){var u,_,w,x,C,j=s;if(s>=o)return\"\";if(j+1===o)return _=this.bMarks[j]+Math.min(this.tShift[j],i),w=a?this.eMarks[j]+1:this.eMarks[j],this.src.slice(_,w);for(x=new Array(o-s),u=0;j<o;j++,u++)(C=this.tShift[j])>i&&(C=i),C<0&&(C=0),_=this.bMarks[j]+C,w=j+1<o||a?this.eMarks[j]+1:this.eMarks[j],x[u]=this.src.slice(_,w);return x.join(\"\")};var xC={};[\"article\",\"aside\",\"button\",\"blockquote\",\"body\",\"canvas\",\"caption\",\"col\",\"colgroup\",\"dd\",\"div\",\"dl\",\"dt\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"iframe\",\"li\",\"map\",\"object\",\"ol\",\"output\",\"p\",\"pre\",\"progress\",\"script\",\"section\",\"style\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"tr\",\"thead\",\"ul\",\"video\"].forEach((function(s){xC[s]=!0}));var kC=/^<([a-zA-Z]{1,15})[\\s\\/>]/,OC=/^<\\/([a-zA-Z]{1,15})[\\s>]/;function index_browser_getLine(s,o){var i=s.bMarks[o]+s.blkIndent,a=s.eMarks[o];return s.src.substr(i,a-i)}function skipMarker(s,o){var i,a,u=s.bMarks[o]+s.tShift[o],_=s.eMarks[o];return u>=_||126!==(a=s.src.charCodeAt(u++))&&58!==a||u===(i=s.skipSpaces(u))||i>=_?-1:i}var CC=[[\"code\",function code(s,o,i){var a,u;if(s.tShift[o]-s.blkIndent<4)return!1;for(u=a=o+1;a<i;)if(s.isEmpty(a))a++;else{if(!(s.tShift[a]-s.blkIndent>=4))break;u=++a}return s.line=a,s.tokens.push({type:\"code\",content:s.getLines(o,u,4+s.blkIndent,!0),block:!0,lines:[o,s.line],level:s.level}),!0}],[\"fences\",function fences(s,o,i,a){var u,_,w,x,C,j=!1,L=s.bMarks[o]+s.tShift[o],B=s.eMarks[o];if(L+3>B)return!1;if(126!==(u=s.src.charCodeAt(L))&&96!==u)return!1;if(C=L,(_=(L=s.skipChars(L,u))-C)<3)return!1;if((w=s.src.slice(L,B).trim()).indexOf(\"`\")>=0)return!1;if(a)return!0;for(x=o;!(++x>=i)&&!((L=C=s.bMarks[x]+s.tShift[x])<(B=s.eMarks[x])&&s.tShift[x]<s.blkIndent);)if(s.src.charCodeAt(L)===u&&!(s.tShift[x]-s.blkIndent>=4||(L=s.skipChars(L,u))-C<_||(L=s.skipSpaces(L))<B)){j=!0;break}return _=s.tShift[o],s.line=x+(j?1:0),s.tokens.push({type:\"fence\",params:w,content:s.getLines(o+1,x,_,!0),lines:[o,s.line],level:s.level}),!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"blockquote\",function blockquote(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z=s.bMarks[o]+s.tShift[o],Y=s.eMarks[o];if(z>Y)return!1;if(62!==s.src.charCodeAt(z++))return!1;if(s.level>=s.options.maxNesting)return!1;if(a)return!0;for(32===s.src.charCodeAt(z)&&z++,C=s.blkIndent,s.blkIndent=0,x=[s.bMarks[o]],s.bMarks[o]=z,_=(z=z<Y?s.skipSpaces(z):z)>=Y,w=[s.tShift[o]],s.tShift[o]=z-s.bMarks[o],B=s.parser.ruler.getRules(\"blockquote\"),u=o+1;u<i&&!((z=s.bMarks[u]+s.tShift[u])>=(Y=s.eMarks[u]));u++)if(62!==s.src.charCodeAt(z++)){if(_)break;for(U=!1,$=0,V=B.length;$<V;$++)if(B[$](s,u,i,!0)){U=!0;break}if(U)break;x.push(s.bMarks[u]),w.push(s.tShift[u]),s.tShift[u]=-1337}else 32===s.src.charCodeAt(z)&&z++,x.push(s.bMarks[u]),s.bMarks[u]=z,_=(z=z<Y?s.skipSpaces(z):z)>=Y,w.push(s.tShift[u]),s.tShift[u]=z-s.bMarks[u];for(j=s.parentType,s.parentType=\"blockquote\",s.tokens.push({type:\"blockquote_open\",lines:L=[o,0],level:s.level++}),s.parser.tokenize(s,o,u),s.tokens.push({type:\"blockquote_close\",level:--s.level}),s.parentType=j,L[1]=s.line,$=0;$<w.length;$++)s.bMarks[$+o]=x[$],s.tShift[$+o]=w[$];return s.blkIndent=C,!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"hr\",function hr(s,o,i,a){var u,_,w,x=s.bMarks[o],C=s.eMarks[o];if((x+=s.tShift[o])>C)return!1;if(42!==(u=s.src.charCodeAt(x++))&&45!==u&&95!==u)return!1;for(_=1;x<C;){if((w=s.src.charCodeAt(x++))!==u&&32!==w)return!1;w===u&&_++}return!(_<3)&&(a||(s.line=o+1,s.tokens.push({type:\"hr\",lines:[o,s.line],level:s.level})),!0)},[\"paragraph\",\"blockquote\",\"list\"]],[\"list\",function index_browser_list(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z,Y,Z,ee,ie,ae,ce,le,pe,de,fe=!0;if((B=skipOrderedListMarker(s,o))>=0)z=!0;else{if(!((B=skipBulletListMarker(s,o))>=0))return!1;z=!1}if(s.level>=s.options.maxNesting)return!1;if(U=s.src.charCodeAt(B-1),a)return!0;for(Z=s.tokens.length,z?(L=s.bMarks[o]+s.tShift[o],V=Number(s.src.substr(L,B-L-1)),s.tokens.push({type:\"ordered_list_open\",order:V,lines:ie=[o,0],level:s.level++})):s.tokens.push({type:\"bullet_list_open\",lines:ie=[o,0],level:s.level++}),u=o,ee=!1,ce=s.parser.ruler.getRules(\"list\");!(!(u<i)||(($=(Y=s.skipSpaces(B))>=s.eMarks[u]?1:Y-B)>4&&($=1),$<1&&($=1),_=B-s.bMarks[u]+$,s.tokens.push({type:\"list_item_open\",lines:ae=[o,0],level:s.level++}),x=s.blkIndent,C=s.tight,w=s.tShift[o],j=s.parentType,s.tShift[o]=Y-s.bMarks[o],s.blkIndent=_,s.tight=!0,s.parentType=\"list\",s.parser.tokenize(s,o,i,!0),s.tight&&!ee||(fe=!1),ee=s.line-o>1&&s.isEmpty(s.line-1),s.blkIndent=x,s.tShift[o]=w,s.tight=C,s.parentType=j,s.tokens.push({type:\"list_item_close\",level:--s.level}),u=o=s.line,ae[1]=u,Y=s.bMarks[o],u>=i)||s.isEmpty(u)||s.tShift[u]<s.blkIndent);){for(de=!1,le=0,pe=ce.length;le<pe;le++)if(ce[le](s,u,i,!0)){de=!0;break}if(de)break;if(z){if((B=skipOrderedListMarker(s,u))<0)break}else if((B=skipBulletListMarker(s,u))<0)break;if(U!==s.src.charCodeAt(B-1))break}return s.tokens.push({type:z?\"ordered_list_close\":\"bullet_list_close\",level:--s.level}),ie[1]=u,s.line=u,fe&&function markTightParagraphs(s,o){var i,a,u=s.level+2;for(i=o+2,a=s.tokens.length-2;i<a;i++)s.tokens[i].level===u&&\"paragraph_open\"===s.tokens[i].type&&(s.tokens[i+2].tight=!0,s.tokens[i].tight=!0,i+=2)}(s,Z),!0},[\"paragraph\",\"blockquote\"]],[\"footnote\",function footnote(s,o,i,a){var u,_,w,x,C,j=s.bMarks[o]+s.tShift[o],L=s.eMarks[o];if(j+4>L)return!1;if(91!==s.src.charCodeAt(j))return!1;if(94!==s.src.charCodeAt(j+1))return!1;if(s.level>=s.options.maxNesting)return!1;for(x=j+2;x<L;x++){if(32===s.src.charCodeAt(x))return!1;if(93===s.src.charCodeAt(x))break}return x!==j+2&&(!(x+1>=L||58!==s.src.charCodeAt(++x))&&(a||(x++,s.env.footnotes||(s.env.footnotes={}),s.env.footnotes.refs||(s.env.footnotes.refs={}),C=s.src.slice(j+2,x-2),s.env.footnotes.refs[\":\"+C]=-1,s.tokens.push({type:\"footnote_reference_open\",label:C,level:s.level++}),u=s.bMarks[o],_=s.tShift[o],w=s.parentType,s.tShift[o]=s.skipSpaces(x)-x,s.bMarks[o]=x,s.blkIndent+=4,s.parentType=\"footnote\",s.tShift[o]<s.blkIndent&&(s.tShift[o]+=s.blkIndent,s.bMarks[o]-=s.blkIndent),s.parser.tokenize(s,o,i,!0),s.parentType=w,s.blkIndent-=4,s.tShift[o]=_,s.bMarks[o]=u,s.tokens.push({type:\"footnote_reference_close\",level:--s.level})),!0))},[\"paragraph\"]],[\"heading\",function heading(s,o,i,a){var u,_,w,x=s.bMarks[o]+s.tShift[o],C=s.eMarks[o];if(x>=C)return!1;if(35!==(u=s.src.charCodeAt(x))||x>=C)return!1;for(_=1,u=s.src.charCodeAt(++x);35===u&&x<C&&_<=6;)_++,u=s.src.charCodeAt(++x);return!(_>6||x<C&&32!==u)&&(a||(C=s.skipCharsBack(C,32,x),(w=s.skipCharsBack(C,35,x))>x&&32===s.src.charCodeAt(w-1)&&(C=w),s.line=o+1,s.tokens.push({type:\"heading_open\",hLevel:_,lines:[o,s.line],level:s.level}),x<C&&s.tokens.push({type:\"inline\",content:s.src.slice(x,C).trim(),level:s.level+1,lines:[o,s.line],children:[]}),s.tokens.push({type:\"heading_close\",hLevel:_,level:s.level})),!0)},[\"paragraph\",\"blockquote\"]],[\"lheading\",function lheading(s,o,i){var a,u,_,w=o+1;return!(w>=i)&&(!(s.tShift[w]<s.blkIndent)&&(!(s.tShift[w]-s.blkIndent>3)&&(!((u=s.bMarks[w]+s.tShift[w])>=(_=s.eMarks[w]))&&((45===(a=s.src.charCodeAt(u))||61===a)&&(u=s.skipChars(u,a),!((u=s.skipSpaces(u))<_)&&(u=s.bMarks[o]+s.tShift[o],s.line=w+1,s.tokens.push({type:\"heading_open\",hLevel:61===a?1:2,lines:[o,s.line],level:s.level}),s.tokens.push({type:\"inline\",content:s.src.slice(u,s.eMarks[o]).trim(),level:s.level+1,lines:[o,s.line-1],children:[]}),s.tokens.push({type:\"heading_close\",hLevel:61===a?1:2,level:s.level}),!0))))))}],[\"htmlblock\",function htmlblock(s,o,i,a){var u,_,w,x=s.bMarks[o],C=s.eMarks[o],j=s.tShift[o];if(x+=j,!s.options.html)return!1;if(j>3||x+2>=C)return!1;if(60!==s.src.charCodeAt(x))return!1;if(33===(u=s.src.charCodeAt(x+1))||63===u){if(a)return!0}else{if(47!==u&&!function isLetter$1(s){var o=32|s;return o>=97&&o<=122}(u))return!1;if(47===u){if(!(_=s.src.slice(x,C).match(OC)))return!1}else if(!(_=s.src.slice(x,C).match(kC)))return!1;if(!0!==xC[_[1].toLowerCase()])return!1;if(a)return!0}for(w=o+1;w<s.lineMax&&!s.isEmpty(w);)w++;return s.line=w,s.tokens.push({type:\"htmlblock\",level:s.level,lines:[o,s.line],content:s.getLines(o,w,0,!0)}),!0},[\"paragraph\",\"blockquote\"]],[\"table\",function table(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U;if(o+2>i)return!1;if(C=o+1,s.tShift[C]<s.blkIndent)return!1;if((w=s.bMarks[C]+s.tShift[C])>=s.eMarks[C])return!1;if(124!==(u=s.src.charCodeAt(w))&&45!==u&&58!==u)return!1;if(_=index_browser_getLine(s,o+1),!/^[-:| ]+$/.test(_))return!1;if((j=_.split(\"|\"))<=2)return!1;for(B=[],x=0;x<j.length;x++){if(!($=j[x].trim())){if(0===x||x===j.length-1)continue;return!1}if(!/^:?-+:?$/.test($))return!1;58===$.charCodeAt($.length-1)?B.push(58===$.charCodeAt(0)?\"center\":\"right\"):58===$.charCodeAt(0)?B.push(\"left\"):B.push(\"\")}if(-1===(_=index_browser_getLine(s,o).trim()).indexOf(\"|\"))return!1;if(j=_.replace(/^\\||\\|$/g,\"\").split(\"|\"),B.length!==j.length)return!1;if(a)return!0;for(s.tokens.push({type:\"table_open\",lines:V=[o,0],level:s.level++}),s.tokens.push({type:\"thead_open\",lines:[o,o+1],level:s.level++}),s.tokens.push({type:\"tr_open\",lines:[o,o+1],level:s.level++}),x=0;x<j.length;x++)s.tokens.push({type:\"th_open\",align:B[x],lines:[o,o+1],level:s.level++}),s.tokens.push({type:\"inline\",content:j[x].trim(),lines:[o,o+1],level:s.level,children:[]}),s.tokens.push({type:\"th_close\",level:--s.level});for(s.tokens.push({type:\"tr_close\",level:--s.level}),s.tokens.push({type:\"thead_close\",level:--s.level}),s.tokens.push({type:\"tbody_open\",lines:U=[o+2,0],level:s.level++}),C=o+2;C<i&&!(s.tShift[C]<s.blkIndent)&&-1!==(_=index_browser_getLine(s,C).trim()).indexOf(\"|\");C++){for(j=_.replace(/^\\||\\|$/g,\"\").split(\"|\"),s.tokens.push({type:\"tr_open\",level:s.level++}),x=0;x<j.length;x++)s.tokens.push({type:\"td_open\",align:B[x],level:s.level++}),L=j[x].substring(124===j[x].charCodeAt(0)?1:0,124===j[x].charCodeAt(j[x].length-1)?j[x].length-1:j[x].length).trim(),s.tokens.push({type:\"inline\",content:L,level:s.level,children:[]}),s.tokens.push({type:\"td_close\",level:--s.level});s.tokens.push({type:\"tr_close\",level:--s.level})}return s.tokens.push({type:\"tbody_close\",level:--s.level}),s.tokens.push({type:\"table_close\",level:--s.level}),V[1]=U[1]=C,s.line=C,!0},[\"paragraph\"]],[\"deflist\",function deflist(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z,Y,Z;if(a)return!(s.ddIndent<0)&&skipMarker(s,o)>=0;if(L=o+1,s.isEmpty(L)&&++L>i)return!1;if(s.tShift[L]<s.blkIndent)return!1;if((u=skipMarker(s,L))<0)return!1;if(s.level>=s.options.maxNesting)return!1;j=s.tokens.length,s.tokens.push({type:\"dl_open\",lines:C=[o,0],level:s.level++}),w=o,_=L;e:for(;;){for(Z=!0,Y=!1,s.tokens.push({type:\"dt_open\",lines:[w,w],level:s.level++}),s.tokens.push({type:\"inline\",content:s.getLines(w,w+1,s.blkIndent,!1).trim(),level:s.level+1,lines:[w,w],children:[]}),s.tokens.push({type:\"dt_close\",level:--s.level});;){if(s.tokens.push({type:\"dd_open\",lines:x=[L,0],level:s.level++}),z=s.tight,$=s.ddIndent,B=s.blkIndent,U=s.tShift[_],V=s.parentType,s.blkIndent=s.ddIndent=s.tShift[_]+2,s.tShift[_]=u-s.bMarks[_],s.tight=!0,s.parentType=\"deflist\",s.parser.tokenize(s,_,i,!0),s.tight&&!Y||(Z=!1),Y=s.line-_>1&&s.isEmpty(s.line-1),s.tShift[_]=U,s.tight=z,s.parentType=V,s.blkIndent=B,s.ddIndent=$,s.tokens.push({type:\"dd_close\",level:--s.level}),x[1]=L=s.line,L>=i)break e;if(s.tShift[L]<s.blkIndent)break e;if((u=skipMarker(s,L))<0)break;_=L}if(L>=i)break;if(w=L,s.isEmpty(w))break;if(s.tShift[w]<s.blkIndent)break;if((_=w+1)>=i)break;if(s.isEmpty(_)&&_++,_>=i)break;if(s.tShift[_]<s.blkIndent)break;if((u=skipMarker(s,_))<0)break}return s.tokens.push({type:\"dl_close\",level:--s.level}),C[1]=L,s.line=L,Z&&function markTightParagraphs$1(s,o){var i,a,u=s.level+2;for(i=o+2,a=s.tokens.length-2;i<a;i++)s.tokens[i].level===u&&\"paragraph_open\"===s.tokens[i].type&&(s.tokens[i+2].tight=!0,s.tokens[i].tight=!0,i+=2)}(s,j),!0},[\"paragraph\"]],[\"paragraph\",function paragraph(s,o){var i,a,u,_,w,x,C=o+1;if(C<(i=s.lineMax)&&!s.isEmpty(C))for(x=s.parser.ruler.getRules(\"paragraph\");C<i&&!s.isEmpty(C);C++)if(!(s.tShift[C]-s.blkIndent>3)){for(u=!1,_=0,w=x.length;_<w;_++)if(x[_](s,C,i,!0)){u=!0;break}if(u)break}return a=s.getLines(o,C,s.blkIndent,!1).trim(),s.line=C,a.length&&(s.tokens.push({type:\"paragraph_open\",tight:!1,lines:[o,s.line],level:s.level}),s.tokens.push({type:\"inline\",content:a,level:s.level+1,lines:[o,s.line],children:[]}),s.tokens.push({type:\"paragraph_close\",tight:!1,level:s.level})),!0}]];function ParserBlock(){this.ruler=new Ruler;for(var s=0;s<CC.length;s++)this.ruler.push(CC[s][0],CC[s][1],{alt:(CC[s][2]||[]).slice()})}ParserBlock.prototype.tokenize=function(s,o,i){for(var a,u=this.ruler.getRules(\"\"),_=u.length,w=o,x=!1;w<i&&(s.line=w=s.skipEmptyLines(w),!(w>=i))&&!(s.tShift[w]<s.blkIndent);){for(a=0;a<_&&!u[a](s,w,i,!1);a++);if(s.tight=!x,s.isEmpty(s.line-1)&&(x=!0),(w=s.line)<i&&s.isEmpty(w)){if(x=!0,++w<i&&\"list\"===s.parentType&&s.isEmpty(w))break;s.line=w}}};var AC=/[\\n\\t]/g,jC=/\\r[\\n\\u0085]|[\\u2424\\u2028\\u0085]/g,IC=/\\u00a0/g;function isTerminatorChar(s){switch(s){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}ParserBlock.prototype.parse=function(s,o,i,a){var u,_=0,w=0;if(!s)return[];(s=(s=s.replace(IC,\" \")).replace(jC,\"\\n\")).indexOf(\"\\t\")>=0&&(s=s.replace(AC,(function(o,i){var a;return 10===s.charCodeAt(i)?(_=i+1,w=0,o):(a=\"    \".slice((i-_-w)%4),w=i-_+1,a)}))),u=new StateBlock(s,this,o,i,a),this.tokenize(u,u.line,u.lineMax)};for(var PC=[],TC=0;TC<256;TC++)PC.push(0);function isAlphaNum(s){return s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122}function scanDelims(s,o){var i,a,u,_=o,w=!0,x=!0,C=s.posMax,j=s.src.charCodeAt(o);for(i=o>0?s.src.charCodeAt(o-1):-1;_<C&&s.src.charCodeAt(_)===j;)_++;return _>=C&&(w=!1),(u=_-o)>=4?w=x=!1:(32!==(a=_<C?s.src.charCodeAt(_):-1)&&10!==a||(w=!1),32!==i&&10!==i||(x=!1),95===j&&(isAlphaNum(i)&&(w=!1),isAlphaNum(a)&&(x=!1))),{can_open:w,can_close:x,delims:u}}\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach((function(s){PC[s.charCodeAt(0)]=1}));var NC=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var MC=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var RC=[\"coap\",\"doi\",\"javascript\",\"aaa\",\"aaas\",\"about\",\"acap\",\"cap\",\"cid\",\"crid\",\"data\",\"dav\",\"dict\",\"dns\",\"file\",\"ftp\",\"geo\",\"go\",\"gopher\",\"h323\",\"http\",\"https\",\"iax\",\"icap\",\"im\",\"imap\",\"info\",\"ipp\",\"iris\",\"iris.beep\",\"iris.xpc\",\"iris.xpcs\",\"iris.lwz\",\"ldap\",\"mailto\",\"mid\",\"msrp\",\"msrps\",\"mtqp\",\"mupdate\",\"news\",\"nfs\",\"ni\",\"nih\",\"nntp\",\"opaquelocktoken\",\"pop\",\"pres\",\"rtsp\",\"service\",\"session\",\"shttp\",\"sieve\",\"sip\",\"sips\",\"sms\",\"snmp\",\"soap.beep\",\"soap.beeps\",\"tag\",\"tel\",\"telnet\",\"tftp\",\"thismessage\",\"tn3270\",\"tip\",\"tv\",\"urn\",\"vemmi\",\"ws\",\"wss\",\"xcon\",\"xcon-userid\",\"xmlrpc.beep\",\"xmlrpc.beeps\",\"xmpp\",\"z39.50r\",\"z39.50s\",\"adiumxtra\",\"afp\",\"afs\",\"aim\",\"apt\",\"attachment\",\"aw\",\"beshare\",\"bitcoin\",\"bolo\",\"callto\",\"chrome\",\"chrome-extension\",\"com-eventbrite-attendee\",\"content\",\"cvs\",\"dlna-playsingle\",\"dlna-playcontainer\",\"dtn\",\"dvb\",\"ed2k\",\"facetime\",\"feed\",\"finger\",\"fish\",\"gg\",\"git\",\"gizmoproject\",\"gtalk\",\"hcp\",\"icon\",\"ipn\",\"irc\",\"irc6\",\"ircs\",\"itms\",\"jar\",\"jms\",\"keyparc\",\"lastfm\",\"ldaps\",\"magnet\",\"maps\",\"market\",\"message\",\"mms\",\"ms-help\",\"msnim\",\"mumble\",\"mvn\",\"notes\",\"oid\",\"palm\",\"paparazzi\",\"platform\",\"proxy\",\"psyc\",\"query\",\"res\",\"resource\",\"rmi\",\"rsync\",\"rtmp\",\"secondlife\",\"sftp\",\"sgn\",\"skype\",\"smb\",\"soldat\",\"spotify\",\"ssh\",\"steam\",\"svn\",\"teamspeak\",\"things\",\"udp\",\"unreal\",\"ut2004\",\"ventrilo\",\"view-source\",\"webcal\",\"wtai\",\"wyciwyg\",\"xfire\",\"xri\",\"ymsgr\"],DC=/^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,LC=/^<([a-zA-Z.\\-]{1,25}):([^<>\\x00-\\x20]*)>/;function replace$1(s,o){return s=s.source,o=o||\"\",function self(i,a){return i?(a=a.source||a,s=s.replace(i,a),self):new RegExp(s,o)}}var FC=replace$1(/(?:unquoted|single_quoted|double_quoted)/)(\"unquoted\",/[^\"'=<>`\\x00-\\x20]+/)(\"single_quoted\",/'[^']*'/)(\"double_quoted\",/\"[^\"]*\"/)(),BC=replace$1(/(?:\\s+attr_name(?:\\s*=\\s*attr_value)?)/)(\"attr_name\",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)(\"attr_value\",FC)(),$C=replace$1(/<[A-Za-z][A-Za-z0-9]*attribute*\\s*\\/?>/)(\"attribute\",BC)(),qC=replace$1(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)(\"open_tag\",$C)(\"close_tag\",/<\\/[A-Za-z][A-Za-z0-9]*\\s*>/)(\"comment\",/<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/)(\"processing\",/<[?].*?[?]>/)(\"declaration\",/<![A-Z]+\\s+[^>]*>/)(\"cdata\",/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/)();var VC=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,UC=/^&([a-z][a-z0-9]{1,31});/i;var zC=[[\"text\",function index_browser_text(s,o){for(var i=s.pos;i<s.posMax&&!isTerminatorChar(s.src.charCodeAt(i));)i++;return i!==s.pos&&(o||(s.pending+=s.src.slice(s.pos,i)),s.pos=i,!0)}],[\"newline\",function newline(s,o){var i,a,u=s.pos;if(10!==s.src.charCodeAt(u))return!1;if(i=s.pending.length-1,a=s.posMax,!o)if(i>=0&&32===s.pending.charCodeAt(i))if(i>=1&&32===s.pending.charCodeAt(i-1)){for(var _=i-2;_>=0;_--)if(32!==s.pending.charCodeAt(_)){s.pending=s.pending.substring(0,_+1);break}s.push({type:\"hardbreak\",level:s.level})}else s.pending=s.pending.slice(0,-1),s.push({type:\"softbreak\",level:s.level});else s.push({type:\"softbreak\",level:s.level});for(u++;u<a&&32===s.src.charCodeAt(u);)u++;return s.pos=u,!0}],[\"escape\",function index_browser_escape(s,o){var i,a=s.pos,u=s.posMax;if(92!==s.src.charCodeAt(a))return!1;if(++a<u){if((i=s.src.charCodeAt(a))<256&&0!==PC[i])return o||(s.pending+=s.src[a]),s.pos+=2,!0;if(10===i){for(o||s.push({type:\"hardbreak\",level:s.level}),a++;a<u&&32===s.src.charCodeAt(a);)a++;return s.pos=a,!0}}return o||(s.pending+=\"\\\\\"),s.pos++,!0}],[\"backticks\",function backticks(s,o){var i,a,u,_,w,x=s.pos;if(96!==s.src.charCodeAt(x))return!1;for(i=x,x++,a=s.posMax;x<a&&96===s.src.charCodeAt(x);)x++;for(u=s.src.slice(i,x),_=w=x;-1!==(_=s.src.indexOf(\"`\",w));){for(w=_+1;w<a&&96===s.src.charCodeAt(w);)w++;if(w-_===u.length)return o||s.push({type:\"code\",content:s.src.slice(x,_).replace(/[ \\n]+/g,\" \").trim(),block:!1,level:s.level}),s.pos=w,!0}return o||(s.pending+=u),s.pos+=u.length,!0}],[\"del\",function del(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(126!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(126!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),126===_)return!1;if(126===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&126===s.src.charCodeAt(a);)a++;if(a>C+3)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(126===s.src.charCodeAt(s.pos)&&126===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),126!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&126!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"del_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"del_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"ins\",function ins(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(43!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(43!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),43===_)return!1;if(43===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&43===s.src.charCodeAt(a);)a++;if(a!==C+2)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(43===s.src.charCodeAt(s.pos)&&43===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),43!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&43!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"ins_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"ins_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"mark\",function mark(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(61!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(61!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),61===_)return!1;if(61===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&61===s.src.charCodeAt(a);)a++;if(a!==C+2)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(61===s.src.charCodeAt(s.pos)&&61===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),61!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&61!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"mark_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"mark_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"emphasis\",function emphasis(s,o){var i,a,u,_,w,x,C,j=s.posMax,L=s.pos,B=s.src.charCodeAt(L);if(95!==B&&42!==B)return!1;if(o)return!1;if(i=(C=scanDelims(s,L)).delims,!C.can_open)return s.pos+=i,o||(s.pending+=s.src.slice(L,s.pos)),!0;if(s.level>=s.options.maxNesting)return!1;for(s.pos=L+i,x=[i];s.pos<j;)if(s.src.charCodeAt(s.pos)!==B)s.parser.skipToken(s);else{if(a=(C=scanDelims(s,s.pos)).delims,C.can_close){for(_=x.pop(),w=a;_!==w;){if(w<_){x.push(_-w);break}if(w-=_,0===x.length)break;s.pos+=_,_=x.pop()}if(0===x.length){i=_,u=!0;break}s.pos+=a;continue}C.can_open&&x.push(a),s.pos+=a}return u?(s.posMax=s.pos,s.pos=L+i,o||(2!==i&&3!==i||s.push({type:\"strong_open\",level:s.level++}),1!==i&&3!==i||s.push({type:\"em_open\",level:s.level++}),s.parser.tokenize(s),1!==i&&3!==i||s.push({type:\"em_close\",level:--s.level}),2!==i&&3!==i||s.push({type:\"strong_close\",level:--s.level})),s.pos=s.posMax+i,s.posMax=j,!0):(s.pos=L,!1)}],[\"sub\",function sub(s,o){var i,a,u=s.posMax,_=s.pos;if(126!==s.src.charCodeAt(_))return!1;if(o)return!1;if(_+2>=u)return!1;if(s.level>=s.options.maxNesting)return!1;for(s.pos=_+1;s.pos<u;){if(126===s.src.charCodeAt(s.pos)){i=!0;break}s.parser.skipToken(s)}return i&&_+1!==s.pos?(a=s.src.slice(_+1,s.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(s.pos=_,!1):(s.posMax=s.pos,s.pos=_+1,o||s.push({type:\"sub\",level:s.level,content:a.replace(NC,\"$1\")}),s.pos=s.posMax+1,s.posMax=u,!0):(s.pos=_,!1)}],[\"sup\",function sup(s,o){var i,a,u=s.posMax,_=s.pos;if(94!==s.src.charCodeAt(_))return!1;if(o)return!1;if(_+2>=u)return!1;if(s.level>=s.options.maxNesting)return!1;for(s.pos=_+1;s.pos<u;){if(94===s.src.charCodeAt(s.pos)){i=!0;break}s.parser.skipToken(s)}return i&&_+1!==s.pos?(a=s.src.slice(_+1,s.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(s.pos=_,!1):(s.posMax=s.pos,s.pos=_+1,o||s.push({type:\"sup\",level:s.level,content:a.replace(MC,\"$1\")}),s.pos=s.posMax+1,s.posMax=u,!0):(s.pos=_,!1)}],[\"links\",function links(s,o){var i,a,u,_,w,x,C,j,L=!1,B=s.pos,$=s.posMax,V=s.pos,U=s.src.charCodeAt(V);if(33===U&&(L=!0,U=s.src.charCodeAt(++V)),91!==U)return!1;if(s.level>=s.options.maxNesting)return!1;if(i=V+1,(a=parseLinkLabel(s,V))<0)return!1;if((x=a+1)<$&&40===s.src.charCodeAt(x)){for(x++;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x>=$)return!1;for(V=x,parseLinkDestination(s,x)?(_=s.linkContent,x=s.pos):_=\"\",V=x;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x<$&&V!==x&&parseLinkTitle(s,x))for(w=s.linkContent,x=s.pos;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);else w=\"\";if(x>=$||41!==s.src.charCodeAt(x))return s.pos=B,!1;x++}else{if(s.linkLevel>0)return!1;for(;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x<$&&91===s.src.charCodeAt(x)&&(V=x+1,(x=parseLinkLabel(s,x))>=0?u=s.src.slice(V,x++):x=V-1),u||(void 0===u&&(x=a+1),u=s.src.slice(i,a)),!(C=s.env.references[normalizeReference(u)]))return s.pos=B,!1;_=C.href,w=C.title}return o||(s.pos=i,s.posMax=a,L?s.push({type:\"image\",src:_,title:w,alt:s.src.substr(i,a-i),level:s.level}):(s.push({type:\"link_open\",href:_,title:w,level:s.level++}),s.linkLevel++,s.parser.tokenize(s),s.linkLevel--,s.push({type:\"link_close\",level:--s.level}))),s.pos=x,s.posMax=$,!0}],[\"footnote_inline\",function footnote_inline(s,o){var i,a,u,_,w=s.posMax,x=s.pos;return!(x+2>=w)&&(94===s.src.charCodeAt(x)&&(91===s.src.charCodeAt(x+1)&&(!(s.level>=s.options.maxNesting)&&(i=x+2,!((a=parseLinkLabel(s,x+1))<0)&&(o||(s.env.footnotes||(s.env.footnotes={}),s.env.footnotes.list||(s.env.footnotes.list=[]),u=s.env.footnotes.list.length,s.pos=i,s.posMax=a,s.push({type:\"footnote_ref\",id:u,level:s.level}),s.linkLevel++,_=s.tokens.length,s.parser.tokenize(s),s.env.footnotes.list[u]={tokens:s.tokens.splice(_)},s.linkLevel--),s.pos=a+1,s.posMax=w,!0)))))}],[\"footnote_ref\",function footnote_ref(s,o){var i,a,u,_,w=s.posMax,x=s.pos;if(x+3>w)return!1;if(!s.env.footnotes||!s.env.footnotes.refs)return!1;if(91!==s.src.charCodeAt(x))return!1;if(94!==s.src.charCodeAt(x+1))return!1;if(s.level>=s.options.maxNesting)return!1;for(a=x+2;a<w;a++){if(32===s.src.charCodeAt(a))return!1;if(10===s.src.charCodeAt(a))return!1;if(93===s.src.charCodeAt(a))break}return a!==x+2&&(!(a>=w)&&(a++,i=s.src.slice(x+2,a-1),void 0!==s.env.footnotes.refs[\":\"+i]&&(o||(s.env.footnotes.list||(s.env.footnotes.list=[]),s.env.footnotes.refs[\":\"+i]<0?(u=s.env.footnotes.list.length,s.env.footnotes.list[u]={label:i,count:0},s.env.footnotes.refs[\":\"+i]=u):u=s.env.footnotes.refs[\":\"+i],_=s.env.footnotes.list[u].count,s.env.footnotes.list[u].count++,s.push({type:\"footnote_ref\",id:u,subId:_,level:s.level})),s.pos=a,s.posMax=w,!0)))}],[\"autolink\",function autolink(s,o){var i,a,u,_,w,x=s.pos;return 60===s.src.charCodeAt(x)&&(!((i=s.src.slice(x)).indexOf(\">\")<0)&&((a=i.match(LC))?!(RC.indexOf(a[1].toLowerCase())<0)&&(w=normalizeLink(_=a[0].slice(1,-1)),!!s.parser.validateLink(_)&&(o||(s.push({type:\"link_open\",href:w,level:s.level}),s.push({type:\"text\",content:_,level:s.level+1}),s.push({type:\"link_close\",level:s.level})),s.pos+=a[0].length,!0)):!!(u=i.match(DC))&&(w=normalizeLink(\"mailto:\"+(_=u[0].slice(1,-1))),!!s.parser.validateLink(w)&&(o||(s.push({type:\"link_open\",href:w,level:s.level}),s.push({type:\"text\",content:_,level:s.level+1}),s.push({type:\"link_close\",level:s.level})),s.pos+=u[0].length,!0))))}],[\"htmltag\",function htmltag(s,o){var i,a,u,_=s.pos;return!!s.options.html&&(u=s.posMax,!(60!==s.src.charCodeAt(_)||_+2>=u)&&(!(33!==(i=s.src.charCodeAt(_+1))&&63!==i&&47!==i&&!function isLetter$2(s){var o=32|s;return o>=97&&o<=122}(i))&&(!!(a=s.src.slice(_).match(qC))&&(o||s.push({type:\"htmltag\",content:s.src.slice(_,_+a[0].length),level:s.level}),s.pos+=a[0].length,!0))))}],[\"entity\",function entity(s,o){var i,a,u=s.pos,_=s.posMax;if(38!==s.src.charCodeAt(u))return!1;if(u+1<_)if(35===s.src.charCodeAt(u+1)){if(a=s.src.slice(u).match(VC))return o||(i=\"x\"===a[1][0].toLowerCase()?parseInt(a[1].slice(1),16):parseInt(a[1],10),s.pending+=isValidEntityCode(i)?fromCodePoint(i):fromCodePoint(65533)),s.pos+=a[0].length,!0}else if(a=s.src.slice(u).match(UC)){var w=decodeEntity(a[1]);if(a[1]!==w)return o||(s.pending+=w),s.pos+=a[0].length,!0}return o||(s.pending+=\"&\"),s.pos++,!0}]];function ParserInline(){this.ruler=new Ruler;for(var s=0;s<zC.length;s++)this.ruler.push(zC[s][0],zC[s][1]);this.validateLink=validateLink}function validateLink(s){var o=s.trim().toLowerCase();return-1===(o=replaceEntities(o)).indexOf(\":\")||-1===[\"vbscript\",\"javascript\",\"file\",\"data\"].indexOf(o.split(\":\")[0])}ParserInline.prototype.skipToken=function(s){var o,i,a=this.ruler.getRules(\"\"),u=a.length,_=s.pos;if((i=s.cacheGet(_))>0)s.pos=i;else{for(o=0;o<u;o++)if(a[o](s,!0))return void s.cacheSet(_,s.pos);s.pos++,s.cacheSet(_,s.pos)}},ParserInline.prototype.tokenize=function(s){for(var o,i,a=this.ruler.getRules(\"\"),u=a.length,_=s.posMax;s.pos<_;){for(i=0;i<u&&!(o=a[i](s,!1));i++);if(o){if(s.pos>=_)break}else s.pending+=s.src[s.pos++]}s.pending&&s.pushPending()},ParserInline.prototype.parse=function(s,o,i,a){var u=new StateInline(s,this,o,i,a);this.tokenize(u)};var WC={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"replacements\",\"smartquotes\",\"references\",\"abbr2\",\"footnote_tail\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"footnote\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\",\"table\"]},inline:{rules:[\"autolink\",\"backticks\",\"del\",\"emphasis\",\"entity\",\"escape\",\"footnote_ref\",\"htmltag\",\"links\",\"newline\",\"text\"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"abbr2\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\"]},inline:{rules:[\"autolink\",\"backticks\",\"emphasis\",\"entity\",\"escape\",\"htmltag\",\"links\",\"newline\",\"text\"]}}}};function StateCore(s,o,i){this.src=o,this.env=i,this.options=s.options,this.tokens=[],this.inlineMode=!1,this.inline=s.inline,this.block=s.block,this.renderer=s.renderer,this.typographer=s.typographer}function Remarkable(s,o){\"string\"!=typeof s&&(o=s,s=\"default\"),o&&null!=o.linkify&&console.warn(\"linkify option is removed. Use linkify plugin instead:\\n\\nimport Remarkable from 'remarkable';\\nimport linkify from 'remarkable/linkify';\\nnew Remarkable().use(linkify)\\n\"),this.inline=new ParserInline,this.block=new ParserBlock,this.core=new Core,this.renderer=new Renderer,this.ruler=new Ruler,this.options={},this.configure(WC[s]),this.set(o||{})}Remarkable.prototype.set=function(s){index_browser_assign(this.options,s)},Remarkable.prototype.configure=function(s){var o=this;if(!s)throw new Error(\"Wrong `remarkable` preset, check name/content\");s.options&&o.set(s.options),s.components&&Object.keys(s.components).forEach((function(i){s.components[i].rules&&o[i].ruler.enable(s.components[i].rules,!0)}))},Remarkable.prototype.use=function(s,o){return s(this,o),this},Remarkable.prototype.parse=function(s,o){var i=new StateCore(this,s,o);return this.core.process(i),i.tokens},Remarkable.prototype.render=function(s,o){return o=o||{},this.renderer.render(this.parse(s,o),this.options,o)},Remarkable.prototype.parseInline=function(s,o){var i=new StateCore(this,s,o);return i.inlineMode=!0,this.core.process(i),i.tokens},Remarkable.prototype.renderInline=function(s,o){return o=o||{},this.renderer.render(this.parseInline(s,o),this.options,o)};function indexOf(s,o){if(Array.prototype.indexOf)return s.indexOf(o);for(var i=0,a=s.length;i<a;i++)if(s[i]===o)return i;return-1}function utils_remove(s,o){for(var i=s.length-1;i>=0;i--)!0===o(s[i])&&s.splice(i,1)}function throwUnhandledCaseError(s){throw new Error(\"Unhandled case for value: '\".concat(s,\"'\"))}var JC=function(){function HtmlTag(s){void 0===s&&(s={}),this.tagName=\"\",this.attrs={},this.innerHTML=\"\",this.whitespaceRegex=/\\s+/,this.tagName=s.tagName||\"\",this.attrs=s.attrs||{},this.innerHTML=s.innerHtml||s.innerHTML||\"\"}return HtmlTag.prototype.setTagName=function(s){return this.tagName=s,this},HtmlTag.prototype.getTagName=function(){return this.tagName||\"\"},HtmlTag.prototype.setAttr=function(s,o){return this.getAttrs()[s]=o,this},HtmlTag.prototype.getAttr=function(s){return this.getAttrs()[s]},HtmlTag.prototype.setAttrs=function(s){return Object.assign(this.getAttrs(),s),this},HtmlTag.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},HtmlTag.prototype.setClass=function(s){return this.setAttr(\"class\",s)},HtmlTag.prototype.addClass=function(s){for(var o,i=this.getClass(),a=this.whitespaceRegex,u=i?i.split(a):[],_=s.split(a);o=_.shift();)-1===indexOf(u,o)&&u.push(o);return this.getAttrs().class=u.join(\" \"),this},HtmlTag.prototype.removeClass=function(s){for(var o,i=this.getClass(),a=this.whitespaceRegex,u=i?i.split(a):[],_=s.split(a);u.length&&(o=_.shift());){var w=indexOf(u,o);-1!==w&&u.splice(w,1)}return this.getAttrs().class=u.join(\" \"),this},HtmlTag.prototype.getClass=function(){return this.getAttrs().class||\"\"},HtmlTag.prototype.hasClass=function(s){return-1!==(\" \"+this.getClass()+\" \").indexOf(\" \"+s+\" \")},HtmlTag.prototype.setInnerHTML=function(s){return this.innerHTML=s,this},HtmlTag.prototype.setInnerHtml=function(s){return this.setInnerHTML(s)},HtmlTag.prototype.getInnerHTML=function(){return this.innerHTML||\"\"},HtmlTag.prototype.getInnerHtml=function(){return this.getInnerHTML()},HtmlTag.prototype.toAnchorString=function(){var s=this.getTagName(),o=this.buildAttrsStr();return[\"<\",s,o=o?\" \"+o:\"\",\">\",this.getInnerHtml(),\"</\",s,\">\"].join(\"\")},HtmlTag.prototype.buildAttrsStr=function(){if(!this.attrs)return\"\";var s=this.getAttrs(),o=[];for(var i in s)s.hasOwnProperty(i)&&o.push(i+'=\"'+s[i]+'\"');return o.join(\" \")},HtmlTag}();var HC=function(){function AnchorTagBuilder(s){void 0===s&&(s={}),this.newWindow=!1,this.truncate={},this.className=\"\",this.newWindow=s.newWindow||!1,this.truncate=s.truncate||{},this.className=s.className||\"\"}return AnchorTagBuilder.prototype.build=function(s){return new JC({tagName:\"a\",attrs:this.createAttrs(s),innerHtml:this.processAnchorText(s.getAnchorText())})},AnchorTagBuilder.prototype.createAttrs=function(s){var o={href:s.getAnchorHref()},i=this.createCssClass(s);return i&&(o.class=i),this.newWindow&&(o.target=\"_blank\",o.rel=\"noopener noreferrer\"),this.truncate&&this.truncate.length&&this.truncate.length<s.getAnchorText().length&&(o.title=s.getAnchorHref()),o},AnchorTagBuilder.prototype.createCssClass=function(s){var o=this.className;if(o){for(var i=[o],a=s.getCssClassSuffixes(),u=0,_=a.length;u<_;u++)i.push(o+\"-\"+a[u]);return i.join(\" \")}return\"\"},AnchorTagBuilder.prototype.processAnchorText=function(s){return s=this.doTruncate(s)},AnchorTagBuilder.prototype.doTruncate=function(s){var o=this.truncate;if(!o||!o.length)return s;var i=o.length,a=o.location;return\"smart\"===a?function truncateSmart(s,o,i){var a,u;null==i?(i=\"&hellip;\",u=3,a=8):(u=i.length,a=i.length);var buildUrl=function(s){var o=\"\";return s.scheme&&s.host&&(o+=s.scheme+\"://\"),s.host&&(o+=s.host),s.path&&(o+=\"/\"+s.path),s.query&&(o+=\"?\"+s.query),s.fragment&&(o+=\"#\"+s.fragment),o},buildSegment=function(s,o){var a=o/2,u=Math.ceil(a),_=-1*Math.floor(a),w=\"\";return _<0&&(w=s.substr(_)),s.substr(0,u)+i+w};if(s.length<=o)return s;var _=o-u,w=function(s){var o={},i=s,a=i.match(/^([a-z]+):\\/\\//i);return a&&(o.scheme=a[1],i=i.substr(a[0].length)),(a=i.match(/^(.*?)(?=(\\?|#|\\/|$))/i))&&(o.host=a[1],i=i.substr(a[0].length)),(a=i.match(/^\\/(.*?)(?=(\\?|#|$))/i))&&(o.path=a[1],i=i.substr(a[0].length)),(a=i.match(/^\\?(.*?)(?=(#|$))/i))&&(o.query=a[1],i=i.substr(a[0].length)),(a=i.match(/^#(.*?)$/i))&&(o.fragment=a[1]),o}(s);if(w.query){var x=w.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);x&&(w.query=w.query.substr(0,x[1].length),s=buildUrl(w))}if(s.length<=o)return s;if(w.host&&(w.host=w.host.replace(/^www\\./,\"\"),s=buildUrl(w)),s.length<=o)return s;var C=\"\";if(w.host&&(C+=w.host),C.length>=_)return w.host.length==o?(w.host.substr(0,o-u)+i).substr(0,_+a):buildSegment(C,_).substr(0,_+a);var j=\"\";if(w.path&&(j+=\"/\"+w.path),w.query&&(j+=\"?\"+w.query),j){if((C+j).length>=_)return(C+j).length==o?(C+j).substr(0,o):(C+buildSegment(j,_-C.length)).substr(0,_+a);C+=j}if(w.fragment){var L=\"#\"+w.fragment;if((C+L).length>=_)return(C+L).length==o?(C+L).substr(0,o):(C+buildSegment(L,_-C.length)).substr(0,_+a);C+=L}if(w.scheme&&w.host){var B=w.scheme+\"://\";if((C+B).length<_)return(B+C).substr(0,o)}if(C.length<=o)return C;var $=\"\";return _>0&&($=C.substr(-1*Math.floor(_/2))),(C.substr(0,Math.ceil(_/2))+i+$).substr(0,_+a)}(s,i):\"middle\"===a?function truncateMiddle(s,o,i){if(s.length<=o)return s;var a,u;null==i?(i=\"&hellip;\",a=8,u=3):(a=i.length,u=i.length);var _=o-u,w=\"\";return _>0&&(w=s.substr(-1*Math.floor(_/2))),(s.substr(0,Math.ceil(_/2))+i+w).substr(0,_+a)}(s,i):function truncateEnd(s,o,i){return function ellipsis(s,o,i){var a;return s.length>o&&(null==i?(i=\"&hellip;\",a=3):a=i.length,s=s.substring(0,o-a)+i),s}(s,o,i)}(s,i)},AnchorTagBuilder}(),KC=function(){function Match(s){this.__jsduckDummyDocProp=null,this.matchedText=\"\",this.offset=0,this.tagBuilder=s.tagBuilder,this.matchedText=s.matchedText,this.offset=s.offset}return Match.prototype.getMatchedText=function(){return this.matchedText},Match.prototype.setOffset=function(s){this.offset=s},Match.prototype.getOffset=function(){return this.offset},Match.prototype.getCssClassSuffixes=function(){return[this.getType()]},Match.prototype.buildTag=function(){return this.tagBuilder.build(this)},Match}(),extendStatics=function(s,o){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(s[i]=o[i])},extendStatics(s,o)};function tslib_es6_extends(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Class extends value \"+String(o)+\" is not a constructor or null\");function __(){this.constructor=s}extendStatics(s,o),s.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}var __assign=function(){return __assign=Object.assign||function __assign(s){for(var o,i=1,a=arguments.length;i<a;i++)for(var u in o=arguments[i])Object.prototype.hasOwnProperty.call(o,u)&&(s[u]=o[u]);return s},__assign.apply(this,arguments)};Object.create;Object.create;\"function\"==typeof SuppressedError&&SuppressedError;var GC,YC=function(s){function EmailMatch(o){var i=s.call(this,o)||this;return i.email=\"\",i.email=o.email,i}return tslib_es6_extends(EmailMatch,s),EmailMatch.prototype.getType=function(){return\"email\"},EmailMatch.prototype.getEmail=function(){return this.email},EmailMatch.prototype.getAnchorHref=function(){return\"mailto:\"+this.email},EmailMatch.prototype.getAnchorText=function(){return this.email},EmailMatch}(KC),XC=function(s){function HashtagMatch(o){var i=s.call(this,o)||this;return i.serviceName=\"\",i.hashtag=\"\",i.serviceName=o.serviceName,i.hashtag=o.hashtag,i}return tslib_es6_extends(HashtagMatch,s),HashtagMatch.prototype.getType=function(){return\"hashtag\"},HashtagMatch.prototype.getServiceName=function(){return this.serviceName},HashtagMatch.prototype.getHashtag=function(){return this.hashtag},HashtagMatch.prototype.getAnchorHref=function(){var s=this.serviceName,o=this.hashtag;switch(s){case\"twitter\":return\"https://twitter.com/hashtag/\"+o;case\"facebook\":return\"https://www.facebook.com/hashtag/\"+o;case\"instagram\":return\"https://instagram.com/explore/tags/\"+o;case\"tiktok\":return\"https://www.tiktok.com/tag/\"+o;default:throw new Error(\"Unknown service name to point hashtag to: \"+s)}},HashtagMatch.prototype.getAnchorText=function(){return\"#\"+this.hashtag},HashtagMatch}(KC),QC=function(s){function MentionMatch(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.mention=\"\",i.mention=o.mention,i.serviceName=o.serviceName,i}return tslib_es6_extends(MentionMatch,s),MentionMatch.prototype.getType=function(){return\"mention\"},MentionMatch.prototype.getMention=function(){return this.mention},MentionMatch.prototype.getServiceName=function(){return this.serviceName},MentionMatch.prototype.getAnchorHref=function(){switch(this.serviceName){case\"twitter\":return\"https://twitter.com/\"+this.mention;case\"instagram\":return\"https://instagram.com/\"+this.mention;case\"soundcloud\":return\"https://soundcloud.com/\"+this.mention;case\"tiktok\":return\"https://www.tiktok.com/@\"+this.mention;default:throw new Error(\"Unknown service name to point mention to: \"+this.serviceName)}},MentionMatch.prototype.getAnchorText=function(){return\"@\"+this.mention},MentionMatch.prototype.getCssClassSuffixes=function(){var o=s.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&o.push(i),o},MentionMatch}(KC),ZC=function(s){function PhoneMatch(o){var i=s.call(this,o)||this;return i.number=\"\",i.plusSign=!1,i.number=o.number,i.plusSign=o.plusSign,i}return tslib_es6_extends(PhoneMatch,s),PhoneMatch.prototype.getType=function(){return\"phone\"},PhoneMatch.prototype.getPhoneNumber=function(){return this.number},PhoneMatch.prototype.getNumber=function(){return this.getPhoneNumber()},PhoneMatch.prototype.getAnchorHref=function(){return\"tel:\"+(this.plusSign?\"+\":\"\")+this.number},PhoneMatch.prototype.getAnchorText=function(){return this.matchedText},PhoneMatch}(KC),eA=function(s){function UrlMatch(o){var i=s.call(this,o)||this;return i.url=\"\",i.urlMatchType=\"scheme\",i.protocolUrlMatch=!1,i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.schemePrefixRegex=/^(https?:\\/\\/)?/i,i.wwwPrefixRegex=/^(https?:\\/\\/)?(www\\.)?/i,i.protocolRelativeRegex=/^\\/\\//,i.protocolPrepended=!1,i.urlMatchType=o.urlMatchType,i.url=o.url,i.protocolUrlMatch=o.protocolUrlMatch,i.protocolRelativeMatch=o.protocolRelativeMatch,i.stripPrefix=o.stripPrefix,i.stripTrailingSlash=o.stripTrailingSlash,i.decodePercentEncoding=o.decodePercentEncoding,i}return tslib_es6_extends(UrlMatch,s),UrlMatch.prototype.getType=function(){return\"url\"},UrlMatch.prototype.getUrlMatchType=function(){return this.urlMatchType},UrlMatch.prototype.getUrl=function(){var s=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(s=this.url=\"http://\"+s,this.protocolPrepended=!0),s},UrlMatch.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,\"&\")},UrlMatch.prototype.getAnchorText=function(){var s=this.getMatchedText();return this.protocolRelativeMatch&&(s=this.stripProtocolRelativePrefix(s)),this.stripPrefix.scheme&&(s=this.stripSchemePrefix(s)),this.stripPrefix.www&&(s=this.stripWwwPrefix(s)),this.stripTrailingSlash&&(s=this.removeTrailingSlash(s)),this.decodePercentEncoding&&(s=this.removePercentEncoding(s)),s},UrlMatch.prototype.stripSchemePrefix=function(s){return s.replace(this.schemePrefixRegex,\"\")},UrlMatch.prototype.stripWwwPrefix=function(s){return s.replace(this.wwwPrefixRegex,\"$1\")},UrlMatch.prototype.stripProtocolRelativePrefix=function(s){return s.replace(this.protocolRelativeRegex,\"\")},UrlMatch.prototype.removeTrailingSlash=function(s){return\"/\"===s.charAt(s.length-1)&&(s=s.slice(0,-1)),s},UrlMatch.prototype.removePercentEncoding=function(s){var o=s.replace(/%22/gi,\"&quot;\").replace(/%26/gi,\"&amp;\").replace(/%27/gi,\"&#39;\").replace(/%3C/gi,\"&lt;\").replace(/%3E/gi,\"&gt;\");try{return decodeURIComponent(o)}catch(s){return o}},UrlMatch}(KC),tA=function tA(s){this.__jsduckDummyDocProp=null,this.tagBuilder=s.tagBuilder},rA=/[A-Za-z]/,nA=/[\\d]/,sA=/[\\D]/,oA=/\\s/,iA=/['\"]/,aA=/[\\x00-\\x1F\\x7F]/,cA=/A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/.source,lA=cA+/\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/.source+/\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/.source,uA=/0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/.source,pA=lA+uA,hA=lA+uA,dA=new RegExp(\"[\".concat(hA,\"]\")),fA=\"(?:[\"+uA+\"]{1,3}\\\\.){3}[\"+uA+\"]{1,3}\",mA=\"[\"+hA+\"](?:[\"+hA+\"\\\\-_]{0,61}[\"+hA+\"])?\",getDomainLabelStr=function(s){return\"(?=(\"+mA+\"))\\\\\"+s},getDomainNameStr=function(s){return\"(?:\"+getDomainLabelStr(s)+\"(?:\\\\.\"+getDomainLabelStr(s+1)+\"){0,126}|\"+fA+\")\"},gA=(new RegExp(\"[\"+hA+\".\\\\-]*[\"+hA+\"\\\\-]\"),dA),yA=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,vA=new RegExp(\"[\".concat(hA,\"!#$%&'*+/=?^_`{|}~-]\")),bA=new RegExp(\"^\".concat(yA.source,\"$\")),_A=function(s){function EmailMatcher(){var o=null!==s&&s.apply(this,arguments)||this;return o.localPartCharRegex=vA,o.strictTldRegex=bA,o}return tslib_es6_extends(EmailMatcher,s),EmailMatcher.prototype.parseMatches=function(s){for(var o=this.tagBuilder,i=this.localPartCharRegex,a=this.strictTldRegex,u=[],_=s.length,w=new SA,x={m:\"a\",a:\"i\",i:\"l\",l:\"t\",t:\"o\",o:\":\"},C=0,j=0,L=w;C<_;){var B=s.charAt(C);switch(j){case 0:stateNonEmailAddress(B);break;case 1:stateMailTo(s.charAt(C-1),B);break;case 2:stateLocalPart(B);break;case 3:stateLocalPartDot(B);break;case 4:stateAtSign(B);break;case 5:stateDomainChar(B);break;case 6:stateDomainHyphen(B);break;case 7:stateDomainDot(B);break;default:throwUnhandledCaseError(j)}C++}return captureMatchIfValidAndReset(),u;function stateNonEmailAddress(s){\"m\"===s?beginEmailMatch(1):i.test(s)&&beginEmailMatch()}function stateMailTo(s,o){\":\"===s?i.test(o)?(j=2,L=new SA(__assign(__assign({},L),{hasMailtoPrefix:!0}))):resetToNonEmailMatchState():x[s]===o||(i.test(o)?j=2:\".\"===o?j=3:\"@\"===o?j=4:resetToNonEmailMatchState())}function stateLocalPart(s){\".\"===s?j=3:\"@\"===s?j=4:i.test(s)||resetToNonEmailMatchState()}function stateLocalPartDot(s){\".\"===s||\"@\"===s?resetToNonEmailMatchState():i.test(s)?j=2:resetToNonEmailMatchState()}function stateAtSign(s){gA.test(s)?j=5:resetToNonEmailMatchState()}function stateDomainChar(s){\".\"===s?j=7:\"-\"===s?j=6:gA.test(s)||captureMatchIfValidAndReset()}function stateDomainHyphen(s){\"-\"===s||\".\"===s?captureMatchIfValidAndReset():gA.test(s)?j=5:captureMatchIfValidAndReset()}function stateDomainDot(s){\".\"===s||\"-\"===s?captureMatchIfValidAndReset():gA.test(s)?(j=5,L=new SA(__assign(__assign({},L),{hasDomainDot:!0}))):captureMatchIfValidAndReset()}function beginEmailMatch(s){void 0===s&&(s=2),j=s,L=new SA({idx:C})}function resetToNonEmailMatchState(){j=0,L=w}function captureMatchIfValidAndReset(){if(L.hasDomainDot){var i=s.slice(L.idx,C);/[-.]$/.test(i)&&(i=i.slice(0,-1));var _=L.hasMailtoPrefix?i.slice(7):i;(function doesEmailHaveValidTld(s){var o=s.split(\".\").pop()||\"\",i=o.toLowerCase();return a.test(i)})(_)&&u.push(new YC({tagBuilder:o,matchedText:i,offset:L.idx,email:_}))}resetToNonEmailMatchState()}},EmailMatcher}(tA),SA=function SA(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.hasMailtoPrefix=!!s.hasMailtoPrefix,this.hasDomainDot=!!s.hasDomainDot},EA=function(){function UrlMatchValidator(){}return UrlMatchValidator.isValid=function(s,o){return!(o&&!this.isValidUriScheme(o)||this.urlMatchDoesNotHaveProtocolOrDot(s,o)||this.urlMatchDoesNotHaveAtLeastOneWordChar(s,o)&&!this.isValidIpAddress(s)||this.containsMultipleDots(s))},UrlMatchValidator.isValidIpAddress=function(s){var o=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==s.match(o)},UrlMatchValidator.containsMultipleDots=function(s){var o=s;return this.hasFullProtocolRegex.test(s)&&(o=s.split(\"://\")[1]),o.split(\"/\")[0].indexOf(\"..\")>-1},UrlMatchValidator.isValidUriScheme=function(s){var o=s.match(this.uriSchemeRegex),i=o&&o[0].toLowerCase();return\"javascript:\"!==i&&\"vbscript:\"!==i},UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot=function(s,o){return!(!s||o&&this.hasFullProtocolRegex.test(o)||-1!==s.indexOf(\".\"))},UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar=function(s,o){return!(!s||!o)&&(!this.hasFullProtocolRegex.test(o)&&!this.hasWordCharAfterProtocolRegex.test(s))},UrlMatchValidator.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//,UrlMatchValidator.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,UrlMatchValidator.hasWordCharAfterProtocolRegex=new RegExp(\":[^\\\\s]*?[\"+cA+\"]\"),UrlMatchValidator.ipRegex=/[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/,UrlMatchValidator}(),wA=(GC=new RegExp(\"[/?#](?:[\"+hA+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]{}?!:,.;^✓]*[\"+hA+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]{}✓])?\"),new RegExp([\"(?:\",\"(\",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/.source,getDomainNameStr(2),\")\",\"|\",\"(\",\"(//)?\",/(?:www\\.)/.source,getDomainNameStr(6),\")\",\"|\",\"(\",\"(//)?\",getDomainNameStr(10)+\"\\\\.\",yA.source,\"(?![-\"+pA+\"])\",\")\",\")\",\"(?::[0-9]+)?\",\"(?:\"+GC.source+\")?\"].join(\"\"),\"gi\")),xA=new RegExp(\"[\"+hA+\"]\"),kA=function(s){function UrlMatcher(o){var i=s.call(this,o)||this;return i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.matcherRegex=wA,i.wordCharRegExp=xA,i.stripPrefix=o.stripPrefix,i.stripTrailingSlash=o.stripTrailingSlash,i.decodePercentEncoding=o.decodePercentEncoding,i}return tslib_es6_extends(UrlMatcher,s),UrlMatcher.prototype.parseMatches=function(s){for(var o,i=this.matcherRegex,a=this.stripPrefix,u=this.stripTrailingSlash,_=this.decodePercentEncoding,w=this.tagBuilder,x=[],_loop_1=function(){var i=o[0],j=o[1],L=o[4],B=o[5],$=o[9],V=o.index,U=B||$,z=s.charAt(V-1);if(!EA.isValid(i,j))return\"continue\";if(V>0&&\"@\"===z)return\"continue\";if(V>0&&U&&C.wordCharRegExp.test(z))return\"continue\";if(/\\?$/.test(i)&&(i=i.substr(0,i.length-1)),C.matchHasUnbalancedClosingParen(i))i=i.substr(0,i.length-1);else{var Y=C.matchHasInvalidCharAfterTld(i,j);Y>-1&&(i=i.substr(0,Y))}var Z=[\"http://\",\"https://\"].find((function(s){return!!j&&-1!==j.indexOf(s)}));if(Z){var ee=i.indexOf(Z);i=i.substr(ee),j=j.substr(ee),V+=ee}var ie=j?\"scheme\":L?\"www\":\"tld\",ae=!!j;x.push(new eA({tagBuilder:w,matchedText:i,offset:V,urlMatchType:ie,url:i,protocolUrlMatch:ae,protocolRelativeMatch:!!U,stripPrefix:a,stripTrailingSlash:u,decodePercentEncoding:_}))},C=this;null!==(o=i.exec(s));)_loop_1();return x},UrlMatcher.prototype.matchHasUnbalancedClosingParen=function(s){var o,i=s.charAt(s.length-1);if(\")\"===i)o=\"(\";else if(\"]\"===i)o=\"[\";else{if(\"}\"!==i)return!1;o=\"{\"}for(var a=0,u=0,_=s.length-1;u<_;u++){var w=s.charAt(u);w===o?a++:w===i&&(a=Math.max(a-1,0))}return 0===a},UrlMatcher.prototype.matchHasInvalidCharAfterTld=function(s,o){if(!s)return-1;var i=0;o&&(i=s.indexOf(\":\"),s=s.slice(i));var a=new RegExp(\"^((.?//)?[-.\"+hA+\"]*[-\"+hA+\"]\\\\.[-\"+hA+\"]+)\").exec(s);return null===a?-1:(i+=a[1].length,s=s.slice(a[1].length),/^[^-.A-Za-z0-9:\\/?#]/.test(s)?i:-1)},UrlMatcher}(tA),OA=new RegExp(\"[_\".concat(hA,\"]\")),CA=function(s){function HashtagMatcher(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.serviceName=o.serviceName,i}return tslib_es6_extends(HashtagMatcher,s),HashtagMatcher.prototype.parseMatches=function(s){for(var o=this.tagBuilder,i=this.serviceName,a=[],u=s.length,_=0,w=-1,x=0;_<u;){var C=s.charAt(_);switch(x){case 0:stateNone(C);break;case 1:stateNonHashtagWordChar(C);break;case 2:stateHashtagHashChar(C);break;case 3:stateHashtagTextChar(C);break;default:throwUnhandledCaseError(x)}_++}return captureMatchIfValid(),a;function stateNone(s){\"#\"===s?(x=2,w=_):dA.test(s)&&(x=1)}function stateNonHashtagWordChar(s){dA.test(s)||(x=0)}function stateHashtagHashChar(s){x=OA.test(s)?3:dA.test(s)?1:0}function stateHashtagTextChar(s){OA.test(s)||(captureMatchIfValid(),w=-1,x=dA.test(s)?1:0)}function captureMatchIfValid(){if(w>-1&&_-w<=140){var u=s.slice(w,_),x=new XC({tagBuilder:o,matchedText:u,offset:w,serviceName:i,hashtag:u.slice(1)});a.push(x)}}},HashtagMatcher}(tA),AA=[\"twitter\",\"facebook\",\"instagram\",\"tiktok\"],jA=new RegExp(\"\".concat(/(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/.source,\"|\").concat(/(0([1-9]{1}-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/.source),\"g\"),IA=function(s){function PhoneMatcher(){var o=null!==s&&s.apply(this,arguments)||this;return o.matcherRegex=jA,o}return tslib_es6_extends(PhoneMatcher,s),PhoneMatcher.prototype.parseMatches=function(s){for(var o,i=this.matcherRegex,a=this.tagBuilder,u=[];null!==(o=i.exec(s));){var _=o[0],w=_.replace(/[^0-9,;#]/g,\"\"),x=!(!o[1]&&!o[2]),C=0==o.index?\"\":s.substr(o.index-1,1),j=s.substr(o.index+_.length,1),L=!C.match(/\\d/)&&!j.match(/\\d/);this.testMatch(o[3])&&this.testMatch(_)&&L&&u.push(new ZC({tagBuilder:a,matchedText:_,offset:o.index,number:w,plusSign:x}))}return u},PhoneMatcher.prototype.testMatch=function(s){return sA.test(s)},PhoneMatcher}(tA),PA=new RegExp(\"@[_\".concat(hA,\"]{1,50}(?![_\").concat(hA,\"])\"),\"g\"),TA=new RegExp(\"@[_.\".concat(hA,\"]{1,30}(?![_\").concat(hA,\"])\"),\"g\"),NA=new RegExp(\"@[-_.\".concat(hA,\"]{1,50}(?![-_\").concat(hA,\"])\"),\"g\"),MA=new RegExp(\"@[_.\".concat(hA,\"]{1,23}[_\").concat(hA,\"](?![_\").concat(hA,\"])\"),\"g\"),RA=new RegExp(\"[^\"+hA+\"]\"),DA=function(s){function MentionMatcher(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.matcherRegexes={twitter:PA,instagram:TA,soundcloud:NA,tiktok:MA},i.nonWordCharRegex=RA,i.serviceName=o.serviceName,i}return tslib_es6_extends(MentionMatcher,s),MentionMatcher.prototype.parseMatches=function(s){var o,i=this.serviceName,a=this.matcherRegexes[this.serviceName],u=this.nonWordCharRegex,_=this.tagBuilder,w=[];if(!a)return w;for(;null!==(o=a.exec(s));){var x=o.index,C=s.charAt(x-1);if(0===x||u.test(C)){var j=o[0].replace(/\\.+$/g,\"\"),L=j.slice(1);w.push(new QC({tagBuilder:_,matchedText:j,offset:x,serviceName:i,mention:L}))}}return w},MentionMatcher}(tA);function parseHtml(s,o){for(var i=o.onOpenTag,a=o.onCloseTag,u=o.onText,_=o.onComment,w=o.onDoctype,x=new LA,C=0,j=s.length,L=0,B=0,$=x;C<j;){var V=s.charAt(C);switch(L){case 0:stateData(V);break;case 1:stateTagOpen(V);break;case 2:stateEndTagOpen(V);break;case 3:stateTagName(V);break;case 4:stateBeforeAttributeName(V);break;case 5:stateAttributeName(V);break;case 6:stateAfterAttributeName(V);break;case 7:stateBeforeAttributeValue(V);break;case 8:stateAttributeValueDoubleQuoted(V);break;case 9:stateAttributeValueSingleQuoted(V);break;case 10:stateAttributeValueUnquoted(V);break;case 11:stateAfterAttributeValueQuoted(V);break;case 12:stateSelfClosingStartTag(V);break;case 13:stateMarkupDeclarationOpen(V);break;case 14:stateCommentStart(V);break;case 15:stateCommentStartDash(V);break;case 16:stateComment(V);break;case 17:stateCommentEndDash(V);break;case 18:stateCommentEnd(V);break;case 19:stateCommentEndBang(V);break;case 20:stateDoctype(V);break;default:throwUnhandledCaseError(L)}C++}function stateData(s){\"<\"===s&&startNewTag()}function stateTagOpen(s){\"!\"===s?L=13:\"/\"===s?(L=2,$=new LA(__assign(__assign({},$),{isClosing:!0}))):\"<\"===s?startNewTag():rA.test(s)?(L=3,$=new LA(__assign(__assign({},$),{isOpening:!0}))):(L=0,$=x)}function stateTagName(s){oA.test(s)?($=new LA(__assign(__assign({},$),{name:captureTagName()})),L=4):\"<\"===s?startNewTag():\"/\"===s?($=new LA(__assign(__assign({},$),{name:captureTagName()})),L=12):\">\"===s?($=new LA(__assign(__assign({},$),{name:captureTagName()})),emitTagAndPreviousTextNode()):rA.test(s)||nA.test(s)||\":\"===s||resetToDataState()}function stateEndTagOpen(s){\">\"===s?resetToDataState():rA.test(s)?L=3:resetToDataState()}function stateBeforeAttributeName(s){oA.test(s)||(\"/\"===s?L=12:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():\"=\"===s||iA.test(s)||aA.test(s)?resetToDataState():L=5)}function stateAttributeName(s){oA.test(s)?L=6:\"/\"===s?L=12:\"=\"===s?L=7:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():iA.test(s)&&resetToDataState()}function stateAfterAttributeName(s){oA.test(s)||(\"/\"===s?L=12:\"=\"===s?L=7:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():iA.test(s)?resetToDataState():L=5)}function stateBeforeAttributeValue(s){oA.test(s)||('\"'===s?L=8:\"'\"===s?L=9:/[>=`]/.test(s)?resetToDataState():\"<\"===s?startNewTag():L=10)}function stateAttributeValueDoubleQuoted(s){'\"'===s&&(L=11)}function stateAttributeValueSingleQuoted(s){\"'\"===s&&(L=11)}function stateAttributeValueUnquoted(s){oA.test(s)?L=4:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s&&startNewTag()}function stateAfterAttributeValueQuoted(s){oA.test(s)?L=4:\"/\"===s?L=12:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():(L=4,function reconsumeCurrentCharacter(){C--}())}function stateSelfClosingStartTag(s){\">\"===s?($=new LA(__assign(__assign({},$),{isClosing:!0})),emitTagAndPreviousTextNode()):L=4}function stateMarkupDeclarationOpen(o){\"--\"===s.substr(C,2)?(C+=2,$=new LA(__assign(__assign({},$),{type:\"comment\"})),L=14):\"DOCTYPE\"===s.substr(C,7).toUpperCase()?(C+=7,$=new LA(__assign(__assign({},$),{type:\"doctype\"})),L=20):resetToDataState()}function stateCommentStart(s){\"-\"===s?L=15:\">\"===s?resetToDataState():L=16}function stateCommentStartDash(s){\"-\"===s?L=18:\">\"===s?resetToDataState():L=16}function stateComment(s){\"-\"===s&&(L=17)}function stateCommentEndDash(s){L=\"-\"===s?18:16}function stateCommentEnd(s){\">\"===s?emitTagAndPreviousTextNode():\"!\"===s?L=19:\"-\"===s||(L=16)}function stateCommentEndBang(s){\"-\"===s?L=17:\">\"===s?emitTagAndPreviousTextNode():L=16}function stateDoctype(s){\">\"===s?emitTagAndPreviousTextNode():\"<\"===s&&startNewTag()}function resetToDataState(){L=0,$=x}function startNewTag(){L=1,$=new LA({idx:C})}function emitTagAndPreviousTextNode(){var o=s.slice(B,$.idx);o&&u(o,B),\"comment\"===$.type?_($.idx):\"doctype\"===$.type?w($.idx):($.isOpening&&i($.name,$.idx),$.isClosing&&a($.name,$.idx)),resetToDataState(),B=C+1}function captureTagName(){var o=$.idx+($.isClosing?2:1);return s.slice(o,C).toLowerCase()}B<C&&function emitText(){var o=s.slice(B,C);u(o,B),B=C+1}()}var LA=function LA(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.type=s.type||\"tag\",this.name=s.name||\"\",this.isOpening=!!s.isOpening,this.isClosing=!!s.isClosing},FA=function(){function Autolinker(s){void 0===s&&(s={}),this.version=Autolinker.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:\"end\"},this.className=\"\",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(s.urls),this.email=\"boolean\"==typeof s.email?s.email:this.email,this.phone=\"boolean\"==typeof s.phone?s.phone:this.phone,this.hashtag=s.hashtag||this.hashtag,this.mention=s.mention||this.mention,this.newWindow=\"boolean\"==typeof s.newWindow?s.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(s.stripPrefix),this.stripTrailingSlash=\"boolean\"==typeof s.stripTrailingSlash?s.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=\"boolean\"==typeof s.decodePercentEncoding?s.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=s.sanitizeHtml||!1;var o=this.mention;if(!1!==o&&-1===[\"twitter\",\"instagram\",\"soundcloud\",\"tiktok\"].indexOf(o))throw new Error(\"invalid `mention` cfg '\".concat(o,\"' - see docs\"));var i=this.hashtag;if(!1!==i&&-1===AA.indexOf(i))throw new Error(\"invalid `hashtag` cfg '\".concat(i,\"' - see docs\"));this.truncate=this.normalizeTruncateCfg(s.truncate),this.className=s.className||this.className,this.replaceFn=s.replaceFn||this.replaceFn,this.context=s.context||this}return Autolinker.link=function(s,o){return new Autolinker(o).link(s)},Autolinker.parse=function(s,o){return new Autolinker(o).parse(s)},Autolinker.prototype.normalizeUrlsCfg=function(s){return null==s&&(s=!0),\"boolean\"==typeof s?{schemeMatches:s,wwwMatches:s,tldMatches:s}:{schemeMatches:\"boolean\"!=typeof s.schemeMatches||s.schemeMatches,wwwMatches:\"boolean\"!=typeof s.wwwMatches||s.wwwMatches,tldMatches:\"boolean\"!=typeof s.tldMatches||s.tldMatches}},Autolinker.prototype.normalizeStripPrefixCfg=function(s){return null==s&&(s=!0),\"boolean\"==typeof s?{scheme:s,www:s}:{scheme:\"boolean\"!=typeof s.scheme||s.scheme,www:\"boolean\"!=typeof s.www||s.www}},Autolinker.prototype.normalizeTruncateCfg=function(s){return\"number\"==typeof s?{length:s,location:\"end\"}:function defaults(s,o){for(var i in o)o.hasOwnProperty(i)&&void 0===s[i]&&(s[i]=o[i]);return s}(s||{},{length:Number.POSITIVE_INFINITY,location:\"end\"})},Autolinker.prototype.parse=function(s){var o=this,i=[\"a\",\"style\",\"script\"],a=0,u=[];return parseHtml(s,{onOpenTag:function(s){i.indexOf(s)>=0&&a++},onText:function(s,i){if(0===a){var _=function splitAndCapture(s,o){if(!o.global)throw new Error(\"`splitRegex` must have the 'g' flag set\");for(var i,a=[],u=0;i=o.exec(s);)a.push(s.substring(u,i.index)),a.push(i[0]),u=i.index+i[0].length;return a.push(s.substring(u)),a}(s,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),w=i;_.forEach((function(s,i){if(i%2==0){var a=o.parseText(s,w);u.push.apply(u,a)}w+=s.length}))}},onCloseTag:function(s){i.indexOf(s)>=0&&(a=Math.max(a-1,0))},onComment:function(s){},onDoctype:function(s){}}),u=this.compactMatches(u),u=this.removeUnwantedMatches(u)},Autolinker.prototype.compactMatches=function(s){s.sort((function(s,o){return s.getOffset()-o.getOffset()}));for(var o=0;o<s.length-1;){var i=s[o],a=i.getOffset(),u=i.getMatchedText().length,_=a+u;if(o+1<s.length){if(s[o+1].getOffset()===a){var w=s[o+1].getMatchedText().length>u?o:o+1;s.splice(w,1);continue}if(s[o+1].getOffset()<_){s.splice(o+1,1);continue}}o++}return s},Autolinker.prototype.removeUnwantedMatches=function(s){return this.hashtag||utils_remove(s,(function(s){return\"hashtag\"===s.getType()})),this.email||utils_remove(s,(function(s){return\"email\"===s.getType()})),this.phone||utils_remove(s,(function(s){return\"phone\"===s.getType()})),this.mention||utils_remove(s,(function(s){return\"mention\"===s.getType()})),this.urls.schemeMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"scheme\"===s.getUrlMatchType()})),this.urls.wwwMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"www\"===s.getUrlMatchType()})),this.urls.tldMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"tld\"===s.getUrlMatchType()})),s},Autolinker.prototype.parseText=function(s,o){void 0===o&&(o=0),o=o||0;for(var i=this.getMatchers(),a=[],u=0,_=i.length;u<_;u++){for(var w=i[u].parseMatches(s),x=0,C=w.length;x<C;x++)w[x].setOffset(o+w[x].getOffset());a.push.apply(a,w)}return a},Autolinker.prototype.link=function(s){if(!s)return\"\";this.sanitizeHtml&&(s=s.replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"));for(var o=this.parse(s),i=[],a=0,u=0,_=o.length;u<_;u++){var w=o[u];i.push(s.substring(a,w.getOffset())),i.push(this.createMatchReturnVal(w)),a=w.getOffset()+w.getMatchedText().length}return i.push(s.substring(a)),i.join(\"\")},Autolinker.prototype.createMatchReturnVal=function(s){var o;return this.replaceFn&&(o=this.replaceFn.call(this.context,s)),\"string\"==typeof o?o:!1===o?s.getMatchedText():o instanceof JC?o.toAnchorString():s.buildTag().toAnchorString()},Autolinker.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var s=this.getTagBuilder(),o=[new CA({tagBuilder:s,serviceName:this.hashtag}),new _A({tagBuilder:s}),new IA({tagBuilder:s}),new DA({tagBuilder:s,serviceName:this.mention}),new kA({tagBuilder:s,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=o},Autolinker.prototype.getTagBuilder=function(){var s=this.tagBuilder;return s||(s=this.tagBuilder=new HC({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),s},Autolinker.version=\"3.16.2\",Autolinker.AnchorTagBuilder=HC,Autolinker.HtmlTag=JC,Autolinker.matcher={Email:_A,Hashtag:CA,Matcher:tA,Mention:DA,Phone:IA,Url:kA},Autolinker.match={Email:YC,Hashtag:XC,Match:KC,Mention:QC,Phone:ZC,Url:eA},Autolinker}();const BA=FA;var $A=/www|@|\\:\\/\\//;function isLinkOpen(s){return/^<a[>\\s]/i.test(s)}function isLinkClose(s){return/^<\\/a\\s*>/i.test(s)}function createLinkifier(){var s=[],o=new BA({stripPrefix:!1,url:!0,email:!0,replaceFn:function(o){switch(o.getType()){case\"url\":s.push({text:o.matchedText,url:o.getUrl()});break;case\"email\":s.push({text:o.matchedText,url:\"mailto:\"+o.getEmail().replace(/^mailto:/i,\"\")})}return!1}});return{links:s,autolinker:o}}function parseTokens(s){var o,i,a,u,_,w,x,C,j,L,B,$,V,U=s.tokens,z=null;for(i=0,a=U.length;i<a;i++)if(\"inline\"===U[i].type)for(B=0,o=(u=U[i].children).length-1;o>=0;o--)if(\"link_close\"!==(_=u[o]).type){if(\"htmltag\"===_.type&&(isLinkOpen(_.content)&&B>0&&B--,isLinkClose(_.content)&&B++),!(B>0)&&\"text\"===_.type&&$A.test(_.content)){if(z||($=(z=createLinkifier()).links,V=z.autolinker),w=_.content,$.length=0,V.link(w),!$.length)continue;for(x=[],L=_.level,C=0;C<$.length;C++)s.inline.validateLink($[C].url)&&((j=w.indexOf($[C].text))&&x.push({type:\"text\",content:w.slice(0,j),level:L}),x.push({type:\"link_open\",href:$[C].url,title:\"\",level:L++}),x.push({type:\"text\",content:$[C].text,level:L}),x.push({type:\"link_close\",level:--L}),w=w.slice(j+$[C].text.length));w.length&&x.push({type:\"text\",content:w,level:L}),U[i].children=u=[].concat(u.slice(0,o),x,u.slice(o+1))}}else for(o--;u[o].level!==_.level&&\"link_open\"!==u[o].type;)o--}function linkify(s){s.core.ruler.push(\"linkify\",parseTokens)}const{entries:qA,setPrototypeOf:VA,isFrozen:UA,getPrototypeOf:zA,getOwnPropertyDescriptor:WA}=Object;let{freeze:JA,seal:HA,create:KA}=Object,{apply:GA,construct:YA}=\"undefined\"!=typeof Reflect&&Reflect;JA||(JA=function freeze(s){return s}),HA||(HA=function seal(s){return s}),GA||(GA=function apply(s,o,i){return s.apply(o,i)}),YA||(YA=function construct(s,o){return new s(...o)});const XA=unapply(Array.prototype.forEach),QA=unapply(Array.prototype.lastIndexOf),ZA=unapply(Array.prototype.pop),ej=unapply(Array.prototype.push),fj=unapply(Array.prototype.splice),mj=unapply(String.prototype.toLowerCase),_j=unapply(String.prototype.toString),Cj=unapply(String.prototype.match),Aj=unapply(String.prototype.replace),Nj=unapply(String.prototype.indexOf),Bj=unapply(String.prototype.trim),$j=unapply(Object.prototype.hasOwnProperty),zj=unapply(RegExp.prototype.test),Jj=function unconstruct(s){return function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return YA(s,i)}}(TypeError);function unapply(s){return function(o){for(var i=arguments.length,a=new Array(i>1?i-1:0),u=1;u<i;u++)a[u-1]=arguments[u];return GA(s,o,a)}}function addToSet(s,o){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:mj;VA&&VA(s,null);let a=o.length;for(;a--;){let u=o[a];if(\"string\"==typeof u){const s=i(u);s!==u&&(UA(o)||(o[a]=s),u=s)}s[u]=!0}return s}function purify_es_cleanArray(s){for(let o=0;o<s.length;o++){$j(s,o)||(s[o]=null)}return s}function clone(s){const o=KA(null);for(const[i,a]of qA(s)){$j(s,i)&&(Array.isArray(a)?o[i]=purify_es_cleanArray(a):a&&\"object\"==typeof a&&a.constructor===Object?o[i]=clone(a):o[i]=a)}return o}function lookupGetter(s,o){for(;null!==s;){const i=WA(s,o);if(i){if(i.get)return unapply(i.get);if(\"function\"==typeof i.value)return unapply(i.value)}s=zA(s)}return function fallbackValue(){return null}}const Kj=JA([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),Gj=JA([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),Xj=JA([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),eI=JA([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),tI=JA([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\",\"mprescripts\"]),rI=JA([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),nI=JA([\"#text\"]),sI=JA([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"nonce\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"popover\",\"popovertarget\",\"popovertargetaction\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"wrap\",\"xmlns\",\"slot\"]),oI=JA([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"amplitude\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"exponent\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"intercept\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"slope\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"tablevalues\",\"targetx\",\"targety\",\"transform\",\"transform-origin\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),iI=JA([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),aI=JA([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),cI=HA(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),lI=HA(/<%[\\w\\W]*|[\\w\\W]*%>/gm),uI=HA(/\\$\\{[\\w\\W]*/gm),pI=HA(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/),hI=HA(/^aria-[\\-\\w]+$/),dI=HA(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),fI=HA(/^(?:\\w+script|data):/i),mI=HA(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),gI=HA(/^html$/i),yI=HA(/^[a-z][.\\w]*(-[.\\w]+)+$/i);var vI=Object.freeze({__proto__:null,ARIA_ATTR:hI,ATTR_WHITESPACE:mI,CUSTOM_ELEMENT:yI,DATA_ATTR:pI,DOCTYPE_NAME:gI,ERB_EXPR:lI,IS_ALLOWED_URI:dI,IS_SCRIPT_OR_DATA:fI,MUSTACHE_EXPR:cI,TMPLIT_EXPR:uI});const bI=1,_I=3,SI=7,EI=8,wI=9,xI=function getGlobal(){return\"undefined\"==typeof window?null:window};var kI=function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xI();const DOMPurify=s=>createDOMPurify(s);if(DOMPurify.version=\"3.2.4\",DOMPurify.removed=[],!s||!s.document||s.document.nodeType!==wI||!s.Element)return DOMPurify.isSupported=!1,DOMPurify;let{document:o}=s;const i=o,a=i.currentScript,{DocumentFragment:u,HTMLTemplateElement:_,Node:w,Element:x,NodeFilter:C,NamedNodeMap:j=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:L,DOMParser:B,trustedTypes:$}=s,V=x.prototype,U=lookupGetter(V,\"cloneNode\"),z=lookupGetter(V,\"remove\"),Y=lookupGetter(V,\"nextSibling\"),Z=lookupGetter(V,\"childNodes\"),ee=lookupGetter(V,\"parentNode\");if(\"function\"==typeof _){const s=o.createElement(\"template\");s.content&&s.content.ownerDocument&&(o=s.content.ownerDocument)}let ie,ae=\"\";const{implementation:ce,createNodeIterator:le,createDocumentFragment:pe,getElementsByTagName:de}=o,{importNode:fe}=i;let ye={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};DOMPurify.isSupported=\"function\"==typeof qA&&\"function\"==typeof ee&&ce&&void 0!==ce.createHTMLDocument;const{MUSTACHE_EXPR:be,ERB_EXPR:_e,TMPLIT_EXPR:Se,DATA_ATTR:we,ARIA_ATTR:xe,IS_SCRIPT_OR_DATA:Pe,ATTR_WHITESPACE:Te,CUSTOM_ELEMENT:Re}=vI;let{IS_ALLOWED_URI:$e}=vI,qe=null;const ze=addToSet({},[...Kj,...Gj,...Xj,...tI,...nI]);let We=null;const He=addToSet({},[...sI,...oI,...iI,...aI]);let Ye=Object.seal(KA(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Xe=null,Qe=null,et=!0,tt=!0,rt=!1,nt=!0,st=!1,ot=!0,it=!1,at=!1,ct=!1,lt=!1,ut=!1,pt=!1,ht=!0,dt=!1,mt=!0,gt=!1,yt={},vt=null;const bt=addToSet({},[\"annotation-xml\",\"audio\",\"colgroup\",\"desc\",\"foreignobject\",\"head\",\"iframe\",\"math\",\"mi\",\"mn\",\"mo\",\"ms\",\"mtext\",\"noembed\",\"noframes\",\"noscript\",\"plaintext\",\"script\",\"style\",\"svg\",\"template\",\"thead\",\"title\",\"video\",\"xmp\"]);let _t=null;const St=addToSet({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]);let Et=null;const wt=addToSet({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"role\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),xt=\"http://www.w3.org/1998/Math/MathML\",kt=\"http://www.w3.org/2000/svg\",Ot=\"http://www.w3.org/1999/xhtml\";let Ct=Ot,At=!1,jt=null;const It=addToSet({},[xt,kt,Ot],_j);let Pt=addToSet({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),Tt=addToSet({},[\"annotation-xml\"]);const Nt=addToSet({},[\"title\",\"style\",\"font\",\"a\",\"script\"]);let Mt=null;const Rt=[\"application/xhtml+xml\",\"text/html\"];let Dt=null,Lt=null;const Ft=o.createElement(\"form\"),Bt=function isRegexOrFunction(s){return s instanceof RegExp||s instanceof Function},$t=function _parseConfig(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Lt||Lt!==s){if(s&&\"object\"==typeof s||(s={}),s=clone(s),Mt=-1===Rt.indexOf(s.PARSER_MEDIA_TYPE)?\"text/html\":s.PARSER_MEDIA_TYPE,Dt=\"application/xhtml+xml\"===Mt?_j:mj,qe=$j(s,\"ALLOWED_TAGS\")?addToSet({},s.ALLOWED_TAGS,Dt):ze,We=$j(s,\"ALLOWED_ATTR\")?addToSet({},s.ALLOWED_ATTR,Dt):He,jt=$j(s,\"ALLOWED_NAMESPACES\")?addToSet({},s.ALLOWED_NAMESPACES,_j):It,Et=$j(s,\"ADD_URI_SAFE_ATTR\")?addToSet(clone(wt),s.ADD_URI_SAFE_ATTR,Dt):wt,_t=$j(s,\"ADD_DATA_URI_TAGS\")?addToSet(clone(St),s.ADD_DATA_URI_TAGS,Dt):St,vt=$j(s,\"FORBID_CONTENTS\")?addToSet({},s.FORBID_CONTENTS,Dt):bt,Xe=$j(s,\"FORBID_TAGS\")?addToSet({},s.FORBID_TAGS,Dt):{},Qe=$j(s,\"FORBID_ATTR\")?addToSet({},s.FORBID_ATTR,Dt):{},yt=!!$j(s,\"USE_PROFILES\")&&s.USE_PROFILES,et=!1!==s.ALLOW_ARIA_ATTR,tt=!1!==s.ALLOW_DATA_ATTR,rt=s.ALLOW_UNKNOWN_PROTOCOLS||!1,nt=!1!==s.ALLOW_SELF_CLOSE_IN_ATTR,st=s.SAFE_FOR_TEMPLATES||!1,ot=!1!==s.SAFE_FOR_XML,it=s.WHOLE_DOCUMENT||!1,lt=s.RETURN_DOM||!1,ut=s.RETURN_DOM_FRAGMENT||!1,pt=s.RETURN_TRUSTED_TYPE||!1,ct=s.FORCE_BODY||!1,ht=!1!==s.SANITIZE_DOM,dt=s.SANITIZE_NAMED_PROPS||!1,mt=!1!==s.KEEP_CONTENT,gt=s.IN_PLACE||!1,$e=s.ALLOWED_URI_REGEXP||dI,Ct=s.NAMESPACE||Ot,Pt=s.MATHML_TEXT_INTEGRATION_POINTS||Pt,Tt=s.HTML_INTEGRATION_POINTS||Tt,Ye=s.CUSTOM_ELEMENT_HANDLING||{},s.CUSTOM_ELEMENT_HANDLING&&Bt(s.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ye.tagNameCheck=s.CUSTOM_ELEMENT_HANDLING.tagNameCheck),s.CUSTOM_ELEMENT_HANDLING&&Bt(s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ye.attributeNameCheck=s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),s.CUSTOM_ELEMENT_HANDLING&&\"boolean\"==typeof s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ye.allowCustomizedBuiltInElements=s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),st&&(tt=!1),ut&&(lt=!0),yt&&(qe=addToSet({},nI),We=[],!0===yt.html&&(addToSet(qe,Kj),addToSet(We,sI)),!0===yt.svg&&(addToSet(qe,Gj),addToSet(We,oI),addToSet(We,aI)),!0===yt.svgFilters&&(addToSet(qe,Xj),addToSet(We,oI),addToSet(We,aI)),!0===yt.mathMl&&(addToSet(qe,tI),addToSet(We,iI),addToSet(We,aI))),s.ADD_TAGS&&(qe===ze&&(qe=clone(qe)),addToSet(qe,s.ADD_TAGS,Dt)),s.ADD_ATTR&&(We===He&&(We=clone(We)),addToSet(We,s.ADD_ATTR,Dt)),s.ADD_URI_SAFE_ATTR&&addToSet(Et,s.ADD_URI_SAFE_ATTR,Dt),s.FORBID_CONTENTS&&(vt===bt&&(vt=clone(vt)),addToSet(vt,s.FORBID_CONTENTS,Dt)),mt&&(qe[\"#text\"]=!0),it&&addToSet(qe,[\"html\",\"head\",\"body\"]),qe.table&&(addToSet(qe,[\"tbody\"]),delete Xe.tbody),s.TRUSTED_TYPES_POLICY){if(\"function\"!=typeof s.TRUSTED_TYPES_POLICY.createHTML)throw Jj('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');if(\"function\"!=typeof s.TRUSTED_TYPES_POLICY.createScriptURL)throw Jj('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');ie=s.TRUSTED_TYPES_POLICY,ae=ie.createHTML(\"\")}else void 0===ie&&(ie=function _createTrustedTypesPolicy(s,o){if(\"object\"!=typeof s||\"function\"!=typeof s.createPolicy)return null;let i=null;const a=\"data-tt-policy-suffix\";o&&o.hasAttribute(a)&&(i=o.getAttribute(a));const u=\"dompurify\"+(i?\"#\"+i:\"\");try{return s.createPolicy(u,{createHTML:s=>s,createScriptURL:s=>s})}catch(s){return console.warn(\"TrustedTypes policy \"+u+\" could not be created.\"),null}}($,a)),null!==ie&&\"string\"==typeof ae&&(ae=ie.createHTML(\"\"));JA&&JA(s),Lt=s}},qt=addToSet({},[...Gj,...Xj,...eI]),Vt=addToSet({},[...tI,...rI]),Ut=function _forceRemove(s){ej(DOMPurify.removed,{element:s});try{ee(s).removeChild(s)}catch(o){z(s)}},zt=function _removeAttribute(s,o){try{ej(DOMPurify.removed,{attribute:o.getAttributeNode(s),from:o})}catch(s){ej(DOMPurify.removed,{attribute:null,from:o})}if(o.removeAttribute(s),\"is\"===s)if(lt||ut)try{Ut(o)}catch(s){}else try{o.setAttribute(s,\"\")}catch(s){}},Wt=function _initDocument(s){let i=null,a=null;if(ct)s=\"<remove></remove>\"+s;else{const o=Cj(s,/^[\\r\\n\\t ]+/);a=o&&o[0]}\"application/xhtml+xml\"===Mt&&Ct===Ot&&(s='<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>'+s+\"</body></html>\");const u=ie?ie.createHTML(s):s;if(Ct===Ot)try{i=(new B).parseFromString(u,Mt)}catch(s){}if(!i||!i.documentElement){i=ce.createDocument(Ct,\"template\",null);try{i.documentElement.innerHTML=At?ae:u}catch(s){}}const _=i.body||i.documentElement;return s&&a&&_.insertBefore(o.createTextNode(a),_.childNodes[0]||null),Ct===Ot?de.call(i,it?\"html\":\"body\")[0]:it?i.documentElement:_},Jt=function _createNodeIterator(s){return le.call(s.ownerDocument||s,s,C.SHOW_ELEMENT|C.SHOW_COMMENT|C.SHOW_TEXT|C.SHOW_PROCESSING_INSTRUCTION|C.SHOW_CDATA_SECTION,null)},Ht=function _isClobbered(s){return s instanceof L&&(\"string\"!=typeof s.nodeName||\"string\"!=typeof s.textContent||\"function\"!=typeof s.removeChild||!(s.attributes instanceof j)||\"function\"!=typeof s.removeAttribute||\"function\"!=typeof s.setAttribute||\"string\"!=typeof s.namespaceURI||\"function\"!=typeof s.insertBefore||\"function\"!=typeof s.hasChildNodes)},Kt=function _isNode(s){return\"function\"==typeof w&&s instanceof w};function _executeHooks(s,o,i){XA(s,(s=>{s.call(DOMPurify,o,i,Lt)}))}const Gt=function _sanitizeElements(s){let o=null;if(_executeHooks(ye.beforeSanitizeElements,s,null),Ht(s))return Ut(s),!0;const i=Dt(s.nodeName);if(_executeHooks(ye.uponSanitizeElement,s,{tagName:i,allowedTags:qe}),s.hasChildNodes()&&!Kt(s.firstElementChild)&&zj(/<[/\\w]/g,s.innerHTML)&&zj(/<[/\\w]/g,s.textContent))return Ut(s),!0;if(s.nodeType===SI)return Ut(s),!0;if(ot&&s.nodeType===EI&&zj(/<[/\\w]/g,s.data))return Ut(s),!0;if(!qe[i]||Xe[i]){if(!Xe[i]&&Xt(i)){if(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,i))return!1;if(Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(i))return!1}if(mt&&!vt[i]){const o=ee(s)||s.parentNode,i=Z(s)||s.childNodes;if(i&&o){for(let a=i.length-1;a>=0;--a){const u=U(i[a],!0);u.__removalCount=(s.__removalCount||0)+1,o.insertBefore(u,Y(s))}}}return Ut(s),!0}return s instanceof x&&!function _checkValidNamespace(s){let o=ee(s);o&&o.tagName||(o={namespaceURI:Ct,tagName:\"template\"});const i=mj(s.tagName),a=mj(o.tagName);return!!jt[s.namespaceURI]&&(s.namespaceURI===kt?o.namespaceURI===Ot?\"svg\"===i:o.namespaceURI===xt?\"svg\"===i&&(\"annotation-xml\"===a||Pt[a]):Boolean(qt[i]):s.namespaceURI===xt?o.namespaceURI===Ot?\"math\"===i:o.namespaceURI===kt?\"math\"===i&&Tt[a]:Boolean(Vt[i]):s.namespaceURI===Ot?!(o.namespaceURI===kt&&!Tt[a])&&!(o.namespaceURI===xt&&!Pt[a])&&!Vt[i]&&(Nt[i]||!qt[i]):!(\"application/xhtml+xml\"!==Mt||!jt[s.namespaceURI]))}(s)?(Ut(s),!0):\"noscript\"!==i&&\"noembed\"!==i&&\"noframes\"!==i||!zj(/<\\/no(script|embed|frames)/i,s.innerHTML)?(st&&s.nodeType===_I&&(o=s.textContent,XA([be,_e,Se],(s=>{o=Aj(o,s,\" \")})),s.textContent!==o&&(ej(DOMPurify.removed,{element:s.cloneNode()}),s.textContent=o)),_executeHooks(ye.afterSanitizeElements,s,null),!1):(Ut(s),!0)},Yt=function _isValidAttribute(s,i,a){if(ht&&(\"id\"===i||\"name\"===i)&&(a in o||a in Ft))return!1;if(tt&&!Qe[i]&&zj(we,i));else if(et&&zj(xe,i));else if(!We[i]||Qe[i]){if(!(Xt(s)&&(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,s)||Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(s))&&(Ye.attributeNameCheck instanceof RegExp&&zj(Ye.attributeNameCheck,i)||Ye.attributeNameCheck instanceof Function&&Ye.attributeNameCheck(i))||\"is\"===i&&Ye.allowCustomizedBuiltInElements&&(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,a)||Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(a))))return!1}else if(Et[i]);else if(zj($e,Aj(a,Te,\"\")));else if(\"src\"!==i&&\"xlink:href\"!==i&&\"href\"!==i||\"script\"===s||0!==Nj(a,\"data:\")||!_t[s]){if(rt&&!zj(Pe,Aj(a,Te,\"\")));else if(a)return!1}else;return!0},Xt=function _isBasicCustomElement(s){return\"annotation-xml\"!==s&&Cj(s,Re)},Qt=function _sanitizeAttributes(s){_executeHooks(ye.beforeSanitizeAttributes,s,null);const{attributes:o}=s;if(!o||Ht(s))return;const i={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:We,forceKeepAttr:void 0};let a=o.length;for(;a--;){const u=o[a],{name:_,namespaceURI:w,value:x}=u,C=Dt(_);let j=\"value\"===_?x:Bj(x);if(i.attrName=C,i.attrValue=j,i.keepAttr=!0,i.forceKeepAttr=void 0,_executeHooks(ye.uponSanitizeAttribute,s,i),j=i.attrValue,!dt||\"id\"!==C&&\"name\"!==C||(zt(_,s),j=\"user-content-\"+j),ot&&zj(/((--!?|])>)|<\\/(style|title)/i,j)){zt(_,s);continue}if(i.forceKeepAttr)continue;if(zt(_,s),!i.keepAttr)continue;if(!nt&&zj(/\\/>/i,j)){zt(_,s);continue}st&&XA([be,_e,Se],(s=>{j=Aj(j,s,\" \")}));const L=Dt(s.nodeName);if(Yt(L,C,j)){if(ie&&\"object\"==typeof $&&\"function\"==typeof $.getAttributeType)if(w);else switch($.getAttributeType(L,C)){case\"TrustedHTML\":j=ie.createHTML(j);break;case\"TrustedScriptURL\":j=ie.createScriptURL(j)}try{w?s.setAttributeNS(w,_,j):s.setAttribute(_,j),Ht(s)?Ut(s):ZA(DOMPurify.removed)}catch(s){}}}_executeHooks(ye.afterSanitizeAttributes,s,null)},Zt=function _sanitizeShadowDOM(s){let o=null;const i=Jt(s);for(_executeHooks(ye.beforeSanitizeShadowDOM,s,null);o=i.nextNode();)_executeHooks(ye.uponSanitizeShadowNode,o,null),Gt(o),Qt(o),o.content instanceof u&&_sanitizeShadowDOM(o.content);_executeHooks(ye.afterSanitizeShadowDOM,s,null)};return DOMPurify.sanitize=function(s){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=null,_=null,x=null,C=null;if(At=!s,At&&(s=\"\\x3c!--\\x3e\"),\"string\"!=typeof s&&!Kt(s)){if(\"function\"!=typeof s.toString)throw Jj(\"toString is not a function\");if(\"string\"!=typeof(s=s.toString()))throw Jj(\"dirty is not a string, aborting\")}if(!DOMPurify.isSupported)return s;if(at||$t(o),DOMPurify.removed=[],\"string\"==typeof s&&(gt=!1),gt){if(s.nodeName){const o=Dt(s.nodeName);if(!qe[o]||Xe[o])throw Jj(\"root node is forbidden and cannot be sanitized in-place\")}}else if(s instanceof w)a=Wt(\"\\x3c!----\\x3e\"),_=a.ownerDocument.importNode(s,!0),_.nodeType===bI&&\"BODY\"===_.nodeName||\"HTML\"===_.nodeName?a=_:a.appendChild(_);else{if(!lt&&!st&&!it&&-1===s.indexOf(\"<\"))return ie&&pt?ie.createHTML(s):s;if(a=Wt(s),!a)return lt?null:pt?ae:\"\"}a&&ct&&Ut(a.firstChild);const j=Jt(gt?s:a);for(;x=j.nextNode();)Gt(x),Qt(x),x.content instanceof u&&Zt(x.content);if(gt)return s;if(lt){if(ut)for(C=pe.call(a.ownerDocument);a.firstChild;)C.appendChild(a.firstChild);else C=a;return(We.shadowroot||We.shadowrootmode)&&(C=fe.call(i,C,!0)),C}let L=it?a.outerHTML:a.innerHTML;return it&&qe[\"!doctype\"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&zj(gI,a.ownerDocument.doctype.name)&&(L=\"<!DOCTYPE \"+a.ownerDocument.doctype.name+\">\\n\"+L),st&&XA([be,_e,Se],(s=>{L=Aj(L,s,\" \")})),ie&&pt?ie.createHTML(L):L},DOMPurify.setConfig=function(){$t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),at=!0},DOMPurify.clearConfig=function(){Lt=null,at=!1},DOMPurify.isValidAttribute=function(s,o,i){Lt||$t({});const a=Dt(s),u=Dt(o);return Yt(a,u,i)},DOMPurify.addHook=function(s,o){\"function\"==typeof o&&ej(ye[s],o)},DOMPurify.removeHook=function(s,o){if(void 0!==o){const i=QA(ye[s],o);return-1===i?void 0:fj(ye[s],i,1)[0]}return ZA(ye[s])},DOMPurify.removeHooks=function(s){ye[s]=[]},DOMPurify.removeAllHooks=function(){ye={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},DOMPurify}();kI.addHook&&kI.addHook(\"beforeSanitizeElements\",(function(s){return s.href&&s.setAttribute(\"rel\",\"noopener noreferrer\"),s}));const OI=function Markdown({source:s,className:o=\"\",getConfigs:i=()=>({useUnsafeMarkdown:!1})}){if(\"string\"!=typeof s)return null;const a=new Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:\"_blank\"}).use(linkify);a.core.ruler.disable([\"replacements\",\"smartquotes\"]);const{useUnsafeMarkdown:u}=i(),_=a.render(s),w=sanitizer(_,{useUnsafeMarkdown:u});return s&&_&&w?Re.createElement(\"div\",{className:Jn()(o,\"markdown\"),dangerouslySetInnerHTML:{__html:w}}):null};function sanitizer(s,{useUnsafeMarkdown:o=!1}={}){const i=o,a=o?[]:[\"style\",\"class\"];return o&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn(\"useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0.\"),sanitizer.hasWarnedAboutDeprecation=!0),kI.sanitize(s,{ADD_ATTR:[\"target\"],FORBID_TAGS:[\"style\",\"form\"],ALLOW_DATA_ATTR:i,FORBID_ATTR:a})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends Re.Component{render(){const{errSelectors:s,specSelectors:o,getComponent:i}=this.props,a=i(\"SvgAssets\"),u=i(\"InfoContainer\",!0),_=i(\"VersionPragmaFilter\"),w=i(\"operations\",!0),x=i(\"Models\",!0),C=i(\"Webhooks\",!0),j=i(\"Row\"),L=i(\"Col\"),B=i(\"errors\",!0),$=i(\"ServersContainer\",!0),V=i(\"SchemesContainer\",!0),U=i(\"AuthorizeBtnContainer\",!0),z=i(\"FilterContainer\",!0),Y=o.isSwagger2(),Z=o.isOAS3(),ee=o.isOAS31(),ie=!o.specStr(),ae=o.loadingStatus();let ce=null;if(\"loading\"===ae&&(ce=Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"div\",{className:\"loading\"})))),\"failed\"===ae&&(ce=Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"h4\",{className:\"title\"},\"Failed to load API definition.\"),Re.createElement(B,null)))),\"failedConfig\"===ae){const o=s.lastError(),i=o?o.get(\"message\"):\"\";ce=Re.createElement(\"div\",{className:\"info failed-config\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"h4\",{className:\"title\"},\"Failed to load remote configuration.\"),Re.createElement(\"p\",null,i)))}if(!ce&&ie&&(ce=Re.createElement(\"h4\",null,\"No API definition provided.\")),ce)return Re.createElement(\"div\",{className:\"swagger-ui\"},Re.createElement(\"div\",{className:\"loading-container\"},ce));const le=o.servers(),pe=o.schemes(),de=le&&le.size,fe=pe&&pe.size,ye=!!o.securityDefinitions();return Re.createElement(\"div\",{className:\"swagger-ui\"},Re.createElement(a,null),Re.createElement(_,{isSwagger2:Y,isOAS3:Z,alsoShow:Re.createElement(B,null)},Re.createElement(B,null),Re.createElement(j,{className:\"information-container\"},Re.createElement(L,{mobile:12},Re.createElement(u,null))),de||fe||ye?Re.createElement(\"div\",{className:\"scheme-container\"},Re.createElement(L,{className:\"schemes wrapper\",mobile:12},de||fe?Re.createElement(\"div\",{className:\"schemes-server-container\"},de?Re.createElement($,null):null,fe?Re.createElement(V,null):null):null,ye?Re.createElement(U,null):null)):null,Re.createElement(z,null),Re.createElement(j,null,Re.createElement(L,{mobile:12,desktop:12},Re.createElement(w,null))),ee&&Re.createElement(j,{className:\"webhooks-container\"},Re.createElement(L,{mobile:12,desktop:12},Re.createElement(C,null))),Re.createElement(j,null,Re.createElement(L,{mobile:12,desktop:12},Re.createElement(x,null)))))}}const core_components=()=>({components:{App:HO,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:rC,InfoContainer,InfoUrl,InfoBasePath,Contact:nC,License:sC,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:operation_Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,responses:responses_Responses,response:response_Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,Property:property,TryItOutButton,Markdown:OI,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example:example_Example,ExamplesSelect,ExamplesSelectValueRetainer}}),form_components=()=>({components:{..._e}}),base=()=>[configsPlugin,util,logs,view,view_legacy,plugins_spec,err,icons,plugins_layout,json_schema_5,json_schema_5_samples,core_components,form_components,swagger_client,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,syntax_highlighting,versions,safe_render()],CI=(0,ze.Map)();function onlyOAS3(s){return(o,i)=>(...a)=>{if(i.getSystem().specSelectors.isOAS3()){const o=s(...a);return\"function\"==typeof o?o(i):o}return o(...a)}}const AI=onlyOAS3(xs()(null)),jI=onlyOAS3(((s,o)=>s=>s.getSystem().specSelectors.findSchema(o))),II=onlyOAS3((()=>s=>{const o=s.getSystem().specSelectors.specJson().getIn([\"components\",\"schemas\"]);return ze.Map.isMap(o)?o:CI})),PI=onlyOAS3((()=>s=>s.getSystem().specSelectors.specJson().hasIn([\"servers\",0]))),TI=onlyOAS3(Vt(Ns,(s=>s.getIn([\"components\",\"securitySchemes\"])||null))),wrap_selectors_validOperationMethods=(s,o)=>(i,...a)=>o.specSelectors.isOAS3()?o.oas3Selectors.validOperationMethods():s(...a),NI=AI,MI=AI,RI=AI,DI=AI,LI=AI;const FI=function wrap_selectors_onlyOAS3(s){return(o,i)=>(...a)=>{if(i.getSystem().specSelectors.isOAS3()){let o=i.getState().getIn([\"spec\",\"resolvedSubtrees\",\"components\",\"securitySchemes\"]);return s(i,o,...a)}return o(...a)}}(Vt((s=>s),(({specSelectors:s})=>s.securityDefinitions()),((s,o)=>{let i=(0,ze.List)();return o?(o.entrySeq().forEach((([s,o])=>{const a=o?.get(\"type\");if(\"oauth2\"===a&&o.get(\"flows\").entrySeq().forEach((([a,u])=>{let _=(0,ze.fromJS)({flow:a,authorizationUrl:u.get(\"authorizationUrl\"),tokenUrl:u.get(\"tokenUrl\"),scopes:u.get(\"scopes\"),type:o.get(\"type\"),description:o.get(\"description\")});i=i.push(new ze.Map({[s]:_.filter((s=>void 0!==s))}))})),\"http\"!==a&&\"apiKey\"!==a||(i=i.push(new ze.Map({[s]:o}))),\"openIdConnect\"===a&&o.get(\"openIdConnectData\")){let a=o.get(\"openIdConnectData\");(a.get(\"grant_types_supported\")||[\"authorization_code\",\"implicit\"]).forEach((u=>{let _=a.get(\"scopes_supported\")&&a.get(\"scopes_supported\").reduce(((s,o)=>s.set(o,\"\")),new ze.Map),w=(0,ze.fromJS)({flow:u,authorizationUrl:a.get(\"authorization_endpoint\"),tokenUrl:a.get(\"token_endpoint\"),scopes:_,type:\"oauth2\",openIdConnectUrl:o.get(\"openIdConnectUrl\")});i=i.push(new ze.Map({[s]:w.filter((s=>void 0!==s))}))}))}})),i):i})));function OAS3ComponentWrapFactory(s){return(o,i)=>a=>\"function\"==typeof i.specSelectors?.isOAS3?i.specSelectors.isOAS3()?Re.createElement(s,Mn()({},a,i,{Ori:o})):Re.createElement(o,a):(console.warn(\"OAS3 wrapper: couldn't get spec\"),null)}const BI=(0,ze.Map)(),selectors_isSwagger2=()=>s=>function isSwagger2(s){const o=s.get(\"swagger\");return\"string\"==typeof o&&\"2.0\"===o}(s.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>s=>function isOAS30(s){const o=s.get(\"openapi\");return\"string\"==typeof o&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(o)}(s.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>s=>s.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(s){return(o,...i)=>a=>{if(a.specSelectors.isOAS3()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null}}const $I=selectors_onlyOAS3((()=>s=>s.specSelectors.specJson().get(\"servers\",BI))),findSchema=(s,o)=>{const i=s.getIn([\"resolvedSubtrees\",\"components\",\"schemas\",o],null),a=s.getIn([\"json\",\"components\",\"schemas\",o],null);return i||a||null},qI=selectors_onlyOAS3(((s,{callbacks:o,specPath:i})=>s=>{const a=s.specSelectors.validOperationMethods();return ze.Map.isMap(o)?o.reduce(((s,o,u)=>{if(!ze.Map.isMap(o))return s;const _=o.reduce(((s,o,_)=>{if(!ze.Map.isMap(o))return s;const w=o.entrySeq().filter((([s])=>a.includes(s))).map((([s,o])=>({operation:(0,ze.Map)({operation:o}),method:s,path:_,callbackName:u,specPath:i.concat([u,_,s])})));return s.concat(w)}),(0,ze.List)());return s.concat(_)}),(0,ze.List)()).groupBy((s=>s.callbackName)).map((s=>s.toArray())).toObject():{}})),callbacks=({callbacks:s,specPath:o,specSelectors:i,getComponent:a})=>{const u=i.callbacksOperations({callbacks:s,specPath:o}),_=Object.keys(u),w=a(\"OperationContainer\",!0);return 0===_.length?Re.createElement(\"span\",null,\"No callbacks\"):Re.createElement(\"div\",null,_.map((s=>Re.createElement(\"div\",{key:`${s}`},Re.createElement(\"h2\",null,s),u[s].map((o=>Re.createElement(w,{key:`${s}-${o.path}-${o.method}`,op:o.operation,tag:\"callbacks\",method:o.method,path:o.path,specPath:o.specPath,allowTryItOut:!1})))))))},getDefaultRequestBodyValue=(s,o,i,a)=>{const u=s.getIn([\"content\",o])??(0,ze.OrderedMap)(),_=u.get(\"schema\",(0,ze.OrderedMap)()).toJS(),w=void 0!==u.get(\"examples\"),x=u.get(\"example\"),C=w?u.getIn([\"examples\",i,\"value\"]):x;return stringify(a.getSampleSchema(_,o,{includeWriteOnly:!0},C))},components_request_body=({userHasEditedBody:s,requestBody:o,requestBodyValue:i,requestBodyInclusionSetting:a,requestBodyErrors:u,getComponent:_,getConfigs:w,specSelectors:x,fn:C,contentType:j,isExecute:L,specPath:B,onChange:$,onChangeIncludeEmpty:V,activeExamplesKey:U,updateActiveExamplesKey:z,setRetainRequestBodyValueFlag:Y})=>{const handleFile=s=>{$(s.target.files[0])},setIsIncludedOptions=s=>{let o={key:s,shouldDispatchInit:!1,defaultValue:!0};return\"no value\"===a.get(s,\"no value\")&&(o.shouldDispatchInit=!0),o},Z=_(\"Markdown\",!0),ee=_(\"modelExample\"),ie=_(\"RequestBodyEditor\"),ae=_(\"HighlightCode\",!0),ce=_(\"ExamplesSelectValueRetainer\"),le=_(\"Example\"),pe=_(\"ParameterIncludeEmpty\"),{showCommonExtensions:de}=w(),fe=o?.get(\"description\")??null,ye=o?.get(\"content\")??new ze.OrderedMap;j=j||ye.keySeq().first()||\"\";const be=ye.get(j)??(0,ze.OrderedMap)(),_e=be.get(\"schema\",(0,ze.OrderedMap)()),Se=be.get(\"examples\",null),we=Se?.map(((s,i)=>{const a=s?.get(\"value\",null);return a&&(s=s.set(\"value\",getDefaultRequestBodyValue(o,j,i,C),a)),s}));u=ze.List.isList(u)?u:(0,ze.List)();if(C.isFileUploadIntended(be?.get(\"schema\"),j)){const s=_(\"Input\");return L?Re.createElement(s,{type:\"file\",onChange:handleFile}):Re.createElement(\"i\",null,\"Example values are not available for \",Re.createElement(\"code\",null,j),\" media types.\")}if(!be.size)return null;if(C.hasSchemaType(be.get(\"schema\"),\"object\")&&(\"application/x-www-form-urlencoded\"===j||0===j.indexOf(\"multipart/\"))&&_e.get(\"properties\",(0,ze.OrderedMap)()).size>0){const s=_(\"JsonSchemaForm\"),o=_(\"ParameterExt\"),j=_e.get(\"properties\",(0,ze.OrderedMap)());return i=ze.Map.isMap(i)?i:(0,ze.OrderedMap)(),Re.createElement(\"div\",{className:\"table-container\"},fe&&Re.createElement(Z,{source:fe}),Re.createElement(\"table\",null,Re.createElement(\"tbody\",null,ze.Map.isMap(j)&&j.entrySeq().map((([j,U])=>{if(U.get(\"readOnly\"))return;const z=U.get(\"oneOf\")?.get(0)?.toJS(),Y=U.get(\"anyOf\")?.get(0)?.toJS();U=(0,ze.fromJS)(C.mergeJsonSchema(U.toJS(),z??Y??{}));let ie=de?getCommonExtensions(U):null;const ae=_e.get(\"required\",(0,ze.List)()).includes(j),ce=C.jsonSchema202012.getType(immutableToJS(U)),le=C.jsonSchema202012.foldType(immutableToJS(U?.get(\"type\"))),fe=C.jsonSchema202012.foldType(immutableToJS(U?.getIn([\"items\",\"type\"]))),ye=U.get(\"format\"),be=U.get(\"description\"),Se=i.getIn([j,\"value\"]),we=i.getIn([j,\"errors\"])||u,xe=a.get(j)||!1;let Pe=C.getSampleSchema(U,!1,{includeWriteOnly:!0});!1===Pe&&(Pe=\"false\"),0===Pe&&(Pe=\"0\"),\"string\"!=typeof Pe&&\"object\"===le&&(Pe=stringify(Pe)),\"string\"==typeof Pe&&\"array\"===le&&(Pe=JSON.parse(Pe));const Te=C.isFileUploadIntended(U),$e=Re.createElement(s,{fn:C,dispatchInitialValue:!Te,schema:U,description:j,getComponent:_,value:void 0===Se?Pe:Se,required:ae,errors:we,onChange:s=>{$(s,[j])}});return Re.createElement(\"tr\",{key:j,className:\"parameters\",\"data-property-name\":j},Re.createElement(\"td\",{className:\"parameters-col_name\"},Re.createElement(\"div\",{className:ae?\"parameter__name required\":\"parameter__name\"},j,ae?Re.createElement(\"span\",null,\" *\"):null),Re.createElement(\"div\",{className:\"parameter__type\"},ce,ye&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",ye,\")\"),de&&ie.size?ie.entrySeq().map((([s,i])=>Re.createElement(o,{key:`${s}-${i}`,xKey:s,xVal:i}))):null),Re.createElement(\"div\",{className:\"parameter__deprecated\"},U.get(\"deprecated\")?\"deprecated\":null)),Re.createElement(\"td\",{className:\"parameters-col_description\"},Re.createElement(Z,{source:be}),L?Re.createElement(\"div\",null,\"object\"===le||\"object\"===fe?Re.createElement(ee,{getComponent:_,specPath:B.push(\"schema\"),getConfigs:w,isExecute:L,specSelectors:x,schema:U,example:$e}):$e,ae?null:Re.createElement(pe,{onChange:s=>V(j,s),isIncluded:xe,isIncludedOptions:setIsIncludedOptions(j),isDisabled:Array.isArray(Se)?0!==Se.length:!isEmptyValue(Se)})):null))})))))}const xe=getDefaultRequestBodyValue(o,j,U,C);let Pe=null;return getKnownSyntaxHighlighterLanguage(xe)&&(Pe=\"json\"),Re.createElement(\"div\",null,fe&&Re.createElement(Z,{source:fe}),we?Re.createElement(ce,{userHasEditedBody:s,examples:we,currentKey:U,currentUserInputValue:i,onSelect:s=>{z(s)},updateValue:$,defaultToFirstExample:!0,getComponent:_,setRetainRequestBodyValueFlag:Y}):null,L?Re.createElement(\"div\",null,Re.createElement(ie,{value:i,errors:u,defaultValue:xe,onChange:$,getComponent:_})):Re.createElement(ee,{getComponent:_,getConfigs:w,specSelectors:x,expandDepth:1,isExecute:L,schema:be.get(\"schema\"),specPath:B.push(\"content\",j),example:Re.createElement(ae,{className:\"body-param__example\",language:Pe},stringify(i)||xe),includeWriteOnly:!0}),we?Re.createElement(le,{example:we.get(U),getComponent:_,getConfigs:w}):null)};class operation_link_OperationLink extends Re.Component{render(){const{link:s,name:o,getComponent:i}=this.props,a=i(\"Markdown\",!0);let u=s.get(\"operationId\")||s.get(\"operationRef\"),_=s.get(\"parameters\")&&s.get(\"parameters\").toJS(),w=s.get(\"description\");return Re.createElement(\"div\",{className:\"operation-link\"},Re.createElement(\"div\",{className:\"description\"},Re.createElement(\"b\",null,Re.createElement(\"code\",null,o)),w?Re.createElement(a,{source:w}):null),Re.createElement(\"pre\",null,\"Operation `\",u,\"`\",Re.createElement(\"br\",null),Re.createElement(\"br\",null),\"Parameters \",function padString(s,o){if(\"string\"!=typeof o)return\"\";return o.split(\"\\n\").map(((o,i)=>i>0?Array(s+1).join(\" \")+o:o)).join(\"\\n\")}(0,JSON.stringify(_,null,2))||\"{}\",Re.createElement(\"br\",null)))}}const VI=operation_link_OperationLink,components_servers=({servers:s,currentServer:o,setSelectedServer:i,setServerVariableValue:a,getServerVariable:u,getEffectiveServerValue:_})=>{const w=(s.find((s=>s.get(\"url\")===o))||(0,ze.OrderedMap)()).get(\"variables\")||(0,ze.OrderedMap)(),x=0!==w.size;(0,Re.useEffect)((()=>{o||i(s.first()?.get(\"url\"))}),[]),(0,Re.useEffect)((()=>{const u=s.find((s=>s.get(\"url\")===o));if(!u)return void i(s.first().get(\"url\"));(u.get(\"variables\")||(0,ze.OrderedMap)()).map(((s,i)=>{a({server:o,key:i,val:s.get(\"default\")||\"\"})}))}),[o,s]);const C=(0,Re.useCallback)((s=>{i(s.target.value)}),[i]),j=(0,Re.useCallback)((s=>{const i=s.target.getAttribute(\"data-variable\"),u=s.target.value;a({server:o,key:i,val:u})}),[a,o]);return Re.createElement(\"div\",{className:\"servers\"},Re.createElement(\"label\",{htmlFor:\"servers\"},Re.createElement(\"select\",{onChange:C,value:o,id:\"servers\"},s.valueSeq().map((s=>Re.createElement(\"option\",{value:s.get(\"url\"),key:s.get(\"url\")},s.get(\"url\"),s.get(\"description\")&&` - ${s.get(\"description\")}`))).toArray())),x&&Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"computed-url\"},\"Computed URL:\",Re.createElement(\"code\",null,_(o))),Re.createElement(\"h4\",null,\"Server variables\"),Re.createElement(\"table\",null,Re.createElement(\"tbody\",null,w.entrySeq().map((([s,i])=>Re.createElement(\"tr\",{key:s},Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,i.get(\"enum\")?Re.createElement(\"select\",{\"data-variable\":s,onChange:j},i.get(\"enum\").map((i=>Re.createElement(\"option\",{selected:i===u(o,s),key:i,value:i},i)))):Re.createElement(\"input\",{type:\"text\",value:u(o,s)||\"\",onChange:j,\"data-variable\":s})))))))))};class ServersContainer extends Re.Component{render(){const{specSelectors:s,oas3Selectors:o,oas3Actions:i,getComponent:a}=this.props,u=s.servers(),_=a(\"Servers\");return u&&u.size?Re.createElement(\"div\",null,Re.createElement(\"span\",{className:\"servers-title\"},\"Servers\"),Re.createElement(_,{servers:u,currentServer:o.selectedServer(),setSelectedServer:i.setSelectedServer,setServerVariableValue:i.setServerVariableValue,getServerVariable:o.serverVariableValue,getEffectiveServerValue:o.serverEffectiveValue})):null}}const UI=Function.prototype;class RequestBodyEditor extends Re.PureComponent{static defaultProps={onChange:UI,userHasEditedBody:!1};constructor(s,o){super(s,o),this.state={value:stringify(s.value)||s.defaultValue},s.onChange(s.value)}applyDefaultValue=s=>{const{onChange:o,defaultValue:i}=s||this.props;return this.setState({value:i}),o(i)};onChange=s=>{this.props.onChange(stringify(s))};onDomChange=s=>{const o=s.target.value;this.setState({value:o},(()=>this.onChange(o)))};UNSAFE_componentWillReceiveProps(s){this.props.value!==s.value&&s.value!==this.state.value&&this.setState({value:stringify(s.value)}),!s.value&&s.defaultValue&&this.state.value&&this.applyDefaultValue(s)}render(){let{getComponent:s,errors:o}=this.props,{value:i}=this.state,a=o.size>0;const u=s(\"TextArea\");return Re.createElement(\"div\",{className:\"body-param\"},Re.createElement(u,{className:Jn()(\"body-param__text\",{invalid:a}),title:o.size?o.join(\", \"):\"\",value:i,onChange:this.onDomChange}))}}class HttpAuth extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a}=this.props,u=this.getValue();this.state={name:i,schema:a,value:u}}getValue(){let{name:s,authorized:o}=this.props;return o&&o.getIn([s,\"value\"])}onChange=s=>{let{onChange:o}=this.props,{value:i,name:a}=s.target,u=Object.assign({},this.state.value);a?u[a]=i:u=i,this.setState({value:u},(()=>o(this.state)))};render(){let{schema:s,getComponent:o,errSelectors:i,name:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"Markdown\",!0),L=o(\"JumpToPath\",!0),B=(s.get(\"scheme\")||\"\").toLowerCase(),$=u.selectAuthPath(a);let V=this.getValue(),U=i.allErrors().filter((s=>s.get(\"authId\")===a));if(\"basic\"===B){let o=V?V.get(\"username\"):null;return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a),\"  (http, Basic)\",Re.createElement(L,{path:$})),o&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-basic-username\"},\"Username:\"),o?Re.createElement(\"code\",null,\" \",o,\" \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-basic-username\",type:\"text\",required:\"required\",name:\"username\",\"aria-label\":\"auth-basic-username\",onChange:this.onChange,autoFocus:!0}))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-basic-password\"},\"Password:\"),o?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-basic-password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",\"aria-label\":\"auth-basic-password\",onChange:this.onChange}))),U.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}return\"bearer\"===B?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a),\"  (http, Bearer)\",Re.createElement(L,{path:$})),V&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-bearer-value\"},\"Value:\"),V?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-bearer-value\",type:\"text\",\"aria-label\":\"auth-bearer-value\",onChange:this.onChange,autoFocus:!0}))),U.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o})))):Re.createElement(\"div\",null,Re.createElement(\"em\",null,Re.createElement(\"b\",null,a),\" HTTP authentication: unsupported scheme \",`'${B}'`))}}class operation_servers_OperationServers extends Re.Component{setSelectedServer=s=>{const{path:o,method:i}=this.props;return this.forceUpdate(),this.props.setSelectedServer(s,`${o}:${i}`)};setServerVariableValue=s=>{const{path:o,method:i}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...s,namespace:`${o}:${i}`})};getSelectedServer=()=>{const{path:s,method:o}=this.props;return this.props.getSelectedServer(`${s}:${o}`)};getServerVariable=(s,o)=>{const{path:i,method:a}=this.props;return this.props.getServerVariable({namespace:`${i}:${a}`,server:s},o)};getEffectiveServerValue=s=>{const{path:o,method:i}=this.props;return this.props.getEffectiveServerValue({server:s,namespace:`${o}:${i}`})};render(){const{operationServers:s,pathServers:o,getComponent:i}=this.props;if(!s&&!o)return null;const a=i(\"Servers\"),u=s||o,_=s?\"operation\":\"path\";return Re.createElement(\"div\",{className:\"opblock-section operation-servers\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"h4\",{className:\"opblock-title\"},\"Servers\"))),Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"h4\",{className:\"message\"},\"These \",_,\"-level options override the global server options.\"),Re.createElement(a,{servers:u,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}const zI={Callbacks:callbacks,HttpAuth,RequestBody:components_request_body,Servers:components_servers,ServersContainer,RequestBodyEditor,OperationServers:operation_servers_OperationServers,operationLink:VI},WI=new Remarkable(\"commonmark\");WI.block.ruler.enable([\"table\"]),WI.set({linkTarget:\"_blank\"});const JI=OAS3ComponentWrapFactory((({source:s,className:o=\"\",getConfigs:i=()=>({useUnsafeMarkdown:!1})})=>{if(\"string\"!=typeof s)return null;if(s){const{useUnsafeMarkdown:a}=i(),u=sanitizer(WI.render(s),{useUnsafeMarkdown:a});let _;return\"string\"==typeof u&&(_=u.trim()),Re.createElement(\"div\",{dangerouslySetInnerHTML:{__html:_},className:Jn()(o,\"renderedMarkdown\")})}return null})),HI=OAS3ComponentWrapFactory((({Ori:s,...o})=>{const{schema:i,getComponent:a,errSelectors:u,authorized:_,onAuthChange:w,name:x,authSelectors:C}=o,j=a(\"HttpAuth\");return\"http\"===i.get(\"type\")?Re.createElement(j,{key:x,schema:i,name:x,errSelectors:u,authorized:_,getComponent:a,onChange:w,authSelectors:C}):Re.createElement(s,o)})),KI=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends Re.Component{render(){let{getConfigs:s,schema:o,Ori:i}=this.props,a=[\"model-box\"],u=null;return!0===o.get(\"deprecated\")&&(a.push(\"deprecated\"),u=Re.createElement(\"span\",{className:\"model-deprecated-warning\"},\"Deprecated:\")),Re.createElement(\"div\",{className:a.join(\" \")},u,Re.createElement(i,Mn()({},this.props,{getConfigs:s,depth:1,expandDepth:this.props.expandDepth||0})))}}const GI=OAS3ComponentWrapFactory(ModelComponent),YI=OAS3ComponentWrapFactory((({Ori:s,...o})=>{const{schema:i,getComponent:a,errors:u,onChange:_,fn:w}=o,x=w.isFileUploadIntended(i),C=a(\"Input\");return x?Re.createElement(C,{type:\"file\",className:u.length?\"invalid\":\"\",title:u.length?u:\"\",onChange:s=>{_(s.target.files[0])},disabled:s.isDisabled}):Re.createElement(s,o)})),XI={Markdown:JI,AuthItem:HI,OpenAPIVersion:function OAS30ComponentWrapFactory(s){return(o,i)=>a=>\"function\"==typeof i.specSelectors?.isOAS30?i.specSelectors.isOAS30()?Re.createElement(s,Mn()({},a,i,{Ori:o})):Re.createElement(o,a):(console.warn(\"OAS30 wrapper: couldn't get spec\"),null)}((s=>{const{Ori:o}=s;return Re.createElement(o,{oasVersion:\"3.0\"})})),JsonSchema_string:YI,model:GI,onlineValidatorBadge:KI},QI=\"oas3_set_servers\",ZI=\"oas3_set_request_body_value\",eP=\"oas3_set_request_body_retain_flag\",tP=\"oas3_set_request_body_inclusion\",rP=\"oas3_set_active_examples_member\",nP=\"oas3_set_request_content_type\",sP=\"oas3_set_response_content_type\",oP=\"oas3_set_server_variable_value\",iP=\"oas3_set_request_body_validate_error\",aP=\"oas3_clear_request_body_validate_error\",cP=\"oas3_clear_request_body_value\";function setSelectedServer(s,o){return{type:QI,payload:{selectedServerUrl:s,namespace:o}}}function setRequestBodyValue({value:s,pathMethod:o}){return{type:ZI,payload:{value:s,pathMethod:o}}}const setRetainRequestBodyValueFlag=({value:s,pathMethod:o})=>({type:eP,payload:{value:s,pathMethod:o}});function setRequestBodyInclusion({value:s,pathMethod:o,name:i}){return{type:tP,payload:{value:s,pathMethod:o,name:i}}}function setActiveExamplesMember({name:s,pathMethod:o,contextType:i,contextName:a}){return{type:rP,payload:{name:s,pathMethod:o,contextType:i,contextName:a}}}function setRequestContentType({value:s,pathMethod:o}){return{type:nP,payload:{value:s,pathMethod:o}}}function setResponseContentType({value:s,path:o,method:i}){return{type:sP,payload:{value:s,path:o,method:i}}}function setServerVariableValue({server:s,namespace:o,key:i,val:a}){return{type:oP,payload:{server:s,namespace:o,key:i,val:a}}}const setRequestBodyValidateError=({path:s,method:o,validationErrors:i})=>({type:iP,payload:{path:s,method:o,validationErrors:i}}),clearRequestBodyValidateError=({path:s,method:o})=>({type:aP,payload:{path:s,method:o}}),initRequestBodyValidateError=({pathMethod:s})=>({type:aP,payload:{path:s[0],method:s[1]}}),clearRequestBodyValue=({pathMethod:s})=>({type:cP,payload:{pathMethod:s}});var lP=__webpack_require__(60680),uP=__webpack_require__.n(lP);const oas3_selectors_onlyOAS3=s=>(o,...i)=>a=>{if(a.getSystem().specSelectors.isOAS3()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null};const pP=oas3_selectors_onlyOAS3(((s,o)=>{const i=o?[o,\"selectedServer\"]:[\"selectedServer\"];return s.getIn(i)||\"\"})),hP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"bodyValue\"])||null)),dP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"retainBodyValue\"])||!1)),selectDefaultRequestBodyValue=(s,o,i)=>s=>{const{oas3Selectors:a,specSelectors:u,fn:_}=s.getSystem();if(u.isOAS3()){const s=a.requestContentType(o,i);if(s)return getDefaultRequestBodyValue(u.specResolvedSubtree([\"paths\",o,i,\"requestBody\"]),s,a.activeExamplesMember(o,i,\"requestBody\",\"requestBody\"),_)}return null},fP=oas3_selectors_onlyOAS3(((s,o,i)=>s=>{const{oas3Selectors:a,specSelectors:u,fn:_}=s;let w=!1;const x=a.requestContentType(o,i);let C=a.requestBodyValue(o,i);const j=u.specResolvedSubtree([\"paths\",o,i,\"requestBody\"]);if(!j)return!1;if(ze.Map.isMap(C)&&(C=stringify(C.mapEntries((s=>ze.Map.isMap(s[1])?[s[0],s[1].get(\"value\")]:s)).toJS())),ze.List.isList(C)&&(C=stringify(C)),x){const s=getDefaultRequestBodyValue(j,x,a.activeExamplesMember(o,i,\"requestBody\",\"requestBody\"),_);w=!!C&&C!==s}return w})),mP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"bodyInclusion\"])||(0,ze.Map)())),gP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"errors\"])||null)),yP=oas3_selectors_onlyOAS3(((s,o,i,a,u)=>s.getIn([\"examples\",o,i,a,u,\"activeExample\"])||null)),vP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"requestContentType\"])||null)),bP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"responseContentType\"])||null)),_P=oas3_selectors_onlyOAS3(((s,o,i)=>{let a;if(\"string\"!=typeof o){const{server:s,namespace:u}=o;a=u?[u,\"serverVariableValues\",s,i]:[\"serverVariableValues\",s,i]}else{a=[\"serverVariableValues\",o,i]}return s.getIn(a)||null})),SP=oas3_selectors_onlyOAS3(((s,o)=>{let i;if(\"string\"!=typeof o){const{server:s,namespace:a}=o;i=a?[a,\"serverVariableValues\",s]:[\"serverVariableValues\",s]}else{i=[\"serverVariableValues\",o]}return s.getIn(i)||(0,ze.OrderedMap)()})),EP=oas3_selectors_onlyOAS3(((s,o)=>{var i,a;if(\"string\"!=typeof o){const{server:u,namespace:_}=o;a=u,i=_?s.getIn([_,\"serverVariableValues\",a]):s.getIn([\"serverVariableValues\",a])}else a=o,i=s.getIn([\"serverVariableValues\",a]);i=i||(0,ze.OrderedMap)();let u=a;return i.map(((s,o)=>{u=u.replace(new RegExp(`{${uP()(o)}}`,\"g\"),s)})),u})),wP=function validateRequestBodyIsRequired(s){return(...o)=>i=>{const a=i.getSystem().specSelectors.specJson();let u=[...o][1]||[];return!a.getIn([\"paths\",...u,\"requestBody\",\"required\"])||s(...o)}}(((s,o)=>((s,o)=>(o=o||[],!!s.getIn([\"requestData\",...o,\"bodyValue\"])))(s,o))),validateShallowRequired=(s,{oas3RequiredRequestBodyContentType:o,oas3RequestContentType:i,oas3RequestBodyValue:a})=>{let u=[];if(!ze.Map.isMap(a))return u;let _=[];return Object.keys(o.requestContentType).forEach((s=>{if(s===i){o.requestContentType[s].forEach((s=>{_.indexOf(s)<0&&_.push(s)}))}})),_.forEach((s=>{a.getIn([s,\"value\"])||u.push(s)})),u},xP=xs()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"]),kP={[QI]:(s,{payload:{selectedServerUrl:o,namespace:i}})=>{const a=i?[i,\"selectedServer\"]:[\"selectedServer\"];return s.setIn(a,o)},[ZI]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;if(!ze.Map.isMap(o))return s.setIn([\"requestData\",a,u,\"bodyValue\"],o);let _,w=s.getIn([\"requestData\",a,u,\"bodyValue\"])||(0,ze.Map)();ze.Map.isMap(w)||(w=(0,ze.Map)());const[...x]=o.keys();return x.forEach((s=>{let i=o.getIn([s]);w.has(s)&&ze.Map.isMap(i)||(_=w.setIn([s,\"value\"],i))})),s.setIn([\"requestData\",a,u,\"bodyValue\"],_)},[eP]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;return s.setIn([\"requestData\",a,u,\"retainBodyValue\"],o)},[tP]:(s,{payload:{value:o,pathMethod:i,name:a}})=>{let[u,_]=i;return s.setIn([\"requestData\",u,_,\"bodyInclusion\",a],o)},[rP]:(s,{payload:{name:o,pathMethod:i,contextType:a,contextName:u}})=>{let[_,w]=i;return s.setIn([\"examples\",_,w,a,u,\"activeExample\"],o)},[nP]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;return s.setIn([\"requestData\",a,u,\"requestContentType\"],o)},[sP]:(s,{payload:{value:o,path:i,method:a}})=>s.setIn([\"requestData\",i,a,\"responseContentType\"],o),[oP]:(s,{payload:{server:o,namespace:i,key:a,val:u}})=>{const _=i?[i,\"serverVariableValues\",o,a]:[\"serverVariableValues\",o,a];return s.setIn(_,u)},[iP]:(s,{payload:{path:o,method:i,validationErrors:a}})=>{let u=[];if(u.push(\"Required field is not provided\"),a.missingBodyValue)return s.setIn([\"requestData\",o,i,\"errors\"],(0,ze.fromJS)(u));if(a.missingRequiredKeys&&a.missingRequiredKeys.length>0){const{missingRequiredKeys:_}=a;return s.updateIn([\"requestData\",o,i,\"bodyValue\"],(0,ze.fromJS)({}),(s=>_.reduce(((s,o)=>s.setIn([o,\"errors\"],(0,ze.fromJS)(u))),s)))}return console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\"),s},[aP]:(s,{payload:{path:o,method:i}})=>{const a=s.getIn([\"requestData\",o,i,\"bodyValue\"]);if(!ze.Map.isMap(a))return s.setIn([\"requestData\",o,i,\"errors\"],(0,ze.fromJS)([]));const[...u]=a.keys();return u?s.updateIn([\"requestData\",o,i,\"bodyValue\"],(0,ze.fromJS)({}),(s=>u.reduce(((s,o)=>s.setIn([o,\"errors\"],(0,ze.fromJS)([]))),s))):s},[cP]:(s,{payload:{pathMethod:o}})=>{let[i,a]=o;const u=s.getIn([\"requestData\",i,a,\"bodyValue\"]);return u?ze.Map.isMap(u)?s.setIn([\"requestData\",i,a,\"bodyValue\"],(0,ze.Map)()):s.setIn([\"requestData\",i,a,\"bodyValue\"],\"\"):s}};function oas3({getSystem:s}){const o=(s=>(o,i=null)=>{const{getConfigs:a,fn:u}=s(),{fileUploadMediaTypes:_}=a();if(\"string\"==typeof i&&_.some((s=>i.startsWith(s))))return!0;const w=ze.Map.isMap(o);if(!w&&!as()(o))return!1;const x=w?o.get(\"format\"):o.format;return u.hasSchemaType(o,\"string\")&&[\"binary\",\"byte\"].includes(x)})(s);return{components:zI,wrapComponents:XI,statePlugins:{spec:{wrapSelectors:Se,selectors:xe},auth:{wrapSelectors:we},oas3:{actions:{...Pe},reducers:kP,selectors:{...Te}}},fn:{isFileUploadIntended:o,isFileUploadIntendedOAS30:o}}}const webhooks=({specSelectors:s,getComponent:o})=>{const i=s.selectWebhooksOperations(),a=Object.keys(i),u=o(\"OperationContainer\",!0);return 0===a.length?null:Re.createElement(\"div\",{className:\"webhooks\"},Re.createElement(\"h2\",null,\"Webhooks\"),a.map((s=>Re.createElement(\"div\",{key:`${s}-webhook`},i[s].map((o=>Re.createElement(u,{key:`${s}-${o.method}-webhook`,op:o.operation,tag:\"webhooks\",method:o.method,path:s,specPath:(0,ze.List)(o.specPath),allowTryItOut:!1})))))))},oas31_components_license=({getComponent:s,specSelectors:o})=>{const i=o.selectLicenseNameField(),a=o.selectLicenseUrl(),u=s(\"Link\");return Re.createElement(\"div\",{className:\"info__license\"},a?Re.createElement(\"div\",{className:\"info__license__url\"},Re.createElement(u,{target:\"_blank\",href:sanitizeUrl(a)},i)):Re.createElement(\"span\",null,i))},oas31_components_contact=({getComponent:s,specSelectors:o})=>{const i=o.selectContactNameField(),a=o.selectContactUrl(),u=o.selectContactEmailField(),_=s(\"Link\");return Re.createElement(\"div\",{className:\"info__contact\"},a&&Re.createElement(\"div\",null,Re.createElement(_,{href:sanitizeUrl(a),target:\"_blank\"},i,\" - Website\")),u&&Re.createElement(_,{href:sanitizeUrl(`mailto:${u}`)},a?`Send email to ${i}`:`Contact ${i}`))},oas31_components_info=({getComponent:s,specSelectors:o})=>{const i=o.version(),a=o.url(),u=o.basePath(),_=o.host(),w=o.selectInfoSummaryField(),x=o.selectInfoDescriptionField(),C=o.selectInfoTitleField(),j=o.selectInfoTermsOfServiceUrl(),L=o.selectExternalDocsUrl(),B=o.selectExternalDocsDescriptionField(),$=o.contact(),V=o.license(),U=s(\"Markdown\",!0),z=s(\"Link\"),Y=s(\"VersionStamp\"),Z=s(\"OpenAPIVersion\"),ee=s(\"InfoUrl\"),ie=s(\"InfoBasePath\"),ae=s(\"License\",!0),ce=s(\"Contact\",!0),le=s(\"JsonSchemaDialect\",!0);return Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"hgroup\",{className:\"main\"},Re.createElement(\"h2\",{className:\"title\"},C,Re.createElement(\"span\",null,i&&Re.createElement(Y,{version:i}),Re.createElement(Z,{oasVersion:\"3.1\"}))),(_||u)&&Re.createElement(ie,{host:_,basePath:u}),a&&Re.createElement(ee,{getComponent:s,url:a})),w&&Re.createElement(\"p\",{className:\"info__summary\"},w),Re.createElement(\"div\",{className:\"info__description description\"},Re.createElement(U,{source:x})),j&&Re.createElement(\"div\",{className:\"info__tos\"},Re.createElement(z,{target:\"_blank\",href:sanitizeUrl(j)},\"Terms of service\")),$.size>0&&Re.createElement(ce,null),V.size>0&&Re.createElement(ae,null),L&&Re.createElement(z,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(L)},B||L),Re.createElement(le,null))},json_schema_dialect=({getComponent:s,specSelectors:o})=>{const i=o.selectJsonSchemaDialectField(),a=o.selectJsonSchemaDialectDefault(),u=s(\"Link\");return Re.createElement(Re.Fragment,null,i&&i===a&&Re.createElement(\"p\",{className:\"info__jsonschemadialect\"},\"JSON Schema dialect:\",\" \",Re.createElement(u,{target:\"_blank\",href:sanitizeUrl(i)},i)),i&&i!==a&&Re.createElement(\"div\",{className:\"error-wrapper\"},Re.createElement(\"div\",{className:\"no-margin\"},Re.createElement(\"div\",{className:\"errors\"},Re.createElement(\"div\",{className:\"errors-wrapper\"},Re.createElement(\"h4\",{className:\"center\"},\"Warning\"),Re.createElement(\"p\",{className:\"message\"},Re.createElement(\"strong\",null,\"OpenAPI.jsonSchemaDialect\"),\" field contains a value different from the default value of\",\" \",Re.createElement(u,{target:\"_blank\",href:a},a),\". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value.\"))))))},version_pragma_filter=({bypass:s,isSwagger2:o,isOAS3:i,isOAS31:a,alsoShow:u,children:_})=>s?Re.createElement(\"div\",null,_):o&&(i||a)?Re.createElement(\"div\",{className:\"version-pragma\"},u,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,Re.createElement(\"code\",null,\"swagger\"),\" and \",Re.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),Re.createElement(\"p\",null,\"Supported version fields are \",Re.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",Re.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))):o||i||a?Re.createElement(\"div\",null,_):Re.createElement(\"div\",{className:\"version-pragma\"},u,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),Re.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",Re.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",Re.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))),getModelName=s=>\"string\"==typeof s&&s.includes(\"#/components/schemas/\")?(s=>{const o=s.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(o)}catch{return o}})(s.replace(/^.*#\\/components\\/schemas\\//,\"\")):null,OP=(0,Re.forwardRef)((({schema:s,getComponent:o,onToggle:i=()=>{},specPath:a},u)=>{const _=o(\"JSONSchema202012\"),w=getModelName(s.get(\"$$ref\")),x=(0,Re.useCallback)(((s,o)=>{i(w,o)}),[w,i]);return Re.createElement(_,{name:w,schema:s.toJS(),ref:u,onExpand:x,identifier:a.toJS().join(\"_\")})})),CP=OP,models=({specActions:s,specSelectors:o,layoutSelectors:i,layoutActions:a,getComponent:u,getConfigs:_,fn:w})=>{const x=o.selectSchemas(),C=Object.keys(x).length>0,j=[\"components\",\"schemas\"],{docExpansion:L,defaultModelsExpandDepth:B}=_(),$=B>0&&\"none\"!==L,V=i.isShown(j,$),U=u(\"Collapse\"),z=u(\"JSONSchema202012\"),Y=u(\"ArrowUpIcon\"),Z=u(\"ArrowDownIcon\"),{getTitle:ee}=w.jsonSchema202012.useFn();(0,Re.useEffect)((()=>{const i=V&&B>1,a=null!=o.specResolvedSubtree(j);i&&!a&&s.requestResolvedSubtree(j)}),[V,B]);const ie=(0,Re.useCallback)((()=>{a.show(j,!V)}),[V]),ae=(0,Re.useCallback)((s=>{null!==s&&a.readyToScroll(j,s)}),[]),handleJSONSchema202012Ref=s=>o=>{null!==o&&a.readyToScroll([...j,s],o)},handleJSONSchema202012Expand=i=>(a,u)=>{if(u){const a=[...j,i];null!=o.specResolvedSubtree(a)||s.requestResolvedSubtree([...j,i])}};return!C||B<0?null:Re.createElement(\"section\",{className:Jn()(\"models\",{\"is-open\":V}),ref:ae},Re.createElement(\"h4\",null,Re.createElement(\"button\",{\"aria-expanded\":V,className:\"models-control\",onClick:ie},Re.createElement(\"span\",null,\"Schemas\"),V?Re.createElement(Y,null):Re.createElement(Z,null))),Re.createElement(U,{isOpened:V},Object.entries(x).map((([s,o])=>{const i=ee(o,{lookup:\"basic\"})||s;return Re.createElement(z,{key:s,ref:handleJSONSchema202012Ref(s),schema:o,name:i,onExpand:handleJSONSchema202012Expand(s)})}))))},mutual_tls_auth=({schema:s,getComponent:o,name:i,authSelectors:a})=>{const u=o(\"JumpToPath\",!0),_=a.selectAuthPath(i);return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,i,\" (mutualTLS) \",Re.createElement(u,{path:_})),Re.createElement(\"p\",null,\"Mutual TLS is required by this API/Operation. Certificates are managed via your Operating System and/or your browser.\"),Re.createElement(\"p\",null,s.get(\"description\")))};class auths_Auths extends Re.Component{constructor(s,o){super(s,o),this.state={}}onAuthChange=s=>{let{name:o}=s;this.setState({[o]:s})};submitAuth=s=>{s.preventDefault();let{authActions:o}=this.props;o.authorizeWithPersistOption(this.state)};logoutClick=s=>{s.preventDefault();let{authActions:o,definitions:i}=this.props,a=i.map(((s,o)=>o)).toArray();this.setState(a.reduce(((s,o)=>(s[o]=\"\",s)),{})),o.logoutWithPersistOption(a)};close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};render(){let{definitions:s,getComponent:o,authSelectors:i,errSelectors:a}=this.props;const u=o(\"AuthItem\"),_=o(\"oauth2\",!0),w=o(\"Button\"),x=i.authorized(),C=s.filter(((s,o)=>!!x.get(o))),j=s.filter((s=>\"oauth2\"!==s.get(\"type\")&&\"mutualTLS\"!==s.get(\"type\"))),L=s.filter((s=>\"oauth2\"===s.get(\"type\"))),B=s.filter((s=>\"mutualTLS\"===s.get(\"type\")));return Re.createElement(\"div\",{className:\"auth-container\"},j.size>0&&Re.createElement(\"form\",{onSubmit:this.submitAuth},j.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray(),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},j.size===C.size?Re.createElement(w,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(w,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),Re.createElement(w,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),L.size>0?Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"scope-def\"},Re.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),Re.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),s.filter((s=>\"oauth2\"===s.get(\"type\"))).map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(_,{authorized:x,schema:s,name:o})))).toArray()):null,B.size>0&&Re.createElement(\"div\",null,B.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray()))}}const AP=auths_Auths,isOAS31=s=>{const o=s.get(\"openapi\");return\"string\"==typeof o&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(o)},fn_createOnlyOAS31Selector=s=>(o,...i)=>a=>{if(a.getSystem().specSelectors.isOAS31()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null},createOnlyOAS31SelectorWrapper=s=>(o,i)=>(a,...u)=>{if(i.getSystem().specSelectors.isOAS31()){const _=s(a,...u);return\"function\"==typeof _?_(o,i):_}return o(...u)},fn_createSystemSelector=s=>(o,...i)=>a=>{const u=s(o,a,...i);return\"function\"==typeof u?u(a):u},createOnlyOAS31ComponentWrapper=s=>(o,i)=>a=>i.specSelectors.isOAS31()?Re.createElement(s,Mn()({},a,{originalComponent:o,getSystem:i.getSystem})):Re.createElement(o,a),wrapOAS31Fn=(s,o)=>{const{fn:i,specSelectors:a}=o;return Object.fromEntries(Object.entries(s).map((([s,o])=>{const u=i[s];return[s,(...s)=>a.isOAS31()?o(...s):\"function\"==typeof u?u(...s):void 0]})))},jP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31License\",!0);return Re.createElement(o,null)})),IP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31Contact\",!0);return Re.createElement(o,null)})),PP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31Info\",!0);return Re.createElement(o,null)})),getProperties=(s,{includeReadOnly:o,includeWriteOnly:i})=>{if(!s?.properties)return{};const a=Object.entries(s.properties).filter((([,s])=>(!(!0===s?.readOnly)||o)&&(!(!0===s?.writeOnly)||i)));return Object.fromEntries(a)},makeGetSchemaKeywords=s=>{if(\"function\"!=typeof s)return null;const o=s();return()=>[...o,\"discriminator\",\"xml\",\"externalDocs\",\"example\",\"$$ref\"]},TP=createOnlyOAS31ComponentWrapper((({getSystem:s,...o})=>{const i=s(),{getComponent:a,fn:u,getConfigs:_}=i,w=_(),x=a(\"OAS31Model\"),C=a(\"withJSONSchema202012SystemContext\");return TP.ModelWithJSONSchemaContext??=C(x,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:w.defaultModelExpandDepth,includeReadOnly:o.includeReadOnly,includeWriteOnly:o.includeWriteOnly},fn:{getProperties:u.jsonSchema202012.getProperties,isExpandable:u.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(u.jsonSchema202012.getSchemaKeywords)}}),Re.createElement(TP.ModelWithJSONSchemaContext,o)})),NP=TP,MP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const{getComponent:o,fn:i,getConfigs:a}=s(),u=a();if(MP.ModelsWithJSONSchemaContext)return Re.createElement(MP.ModelsWithJSONSchemaContext,null);const _=o(\"OAS31Models\",!0),w=o(\"withJSONSchema202012SystemContext\");return MP.ModelsWithJSONSchemaContext??=w(_,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:u.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},fn:{getProperties:i.jsonSchema202012.getProperties,isExpandable:i.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(i.jsonSchema202012.getSchemaKeywords)}}),Re.createElement(MP.ModelsWithJSONSchemaContext,null)}));MP.ModelsWithJSONSchemaContext=null;const RP=MP,wrap_components_version_pragma_filter=(s,o)=>s=>{const i=o.specSelectors.isOAS31(),a=o.getComponent(\"OAS31VersionPragmaFilter\");return Re.createElement(a,Mn()({isOAS31:i},s))},DP=createOnlyOAS31ComponentWrapper((({originalComponent:s,...o})=>{const{getComponent:i,schema:a,name:u}=o,_=i(\"MutualTLSAuth\",!0);return\"mutualTLS\"===a.get(\"type\")?Re.createElement(_,{schema:a,name:u}):Re.createElement(s,o)})),LP=DP,FP=createOnlyOAS31ComponentWrapper((({getSystem:s,...o})=>{const i=s().getComponent(\"OAS31Auths\",!0);return Re.createElement(i,o)})),BP=(0,ze.Map)(),$P=Vt(((s,o)=>o.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>s=>{const o=s.specSelectors.specJson().get(\"webhooks\");return ze.Map.isMap(o)?o:BP},qP=Vt([(s,o)=>o.specSelectors.webhooks(),(s,o)=>o.specSelectors.validOperationMethods(),(s,o)=>o.specSelectors.specResolvedSubtree([\"webhooks\"])],((s,o)=>s.reduce(((s,i,a)=>{if(!ze.Map.isMap(i))return s;const u=i.entrySeq().filter((([s])=>o.includes(s))).map((([s,o])=>({operation:(0,ze.Map)({operation:o}),method:s,path:a,specPath:[\"webhooks\",a,s]})));return s.concat(u)}),(0,ze.List)()).groupBy((s=>s.path)).map((s=>s.toArray())).toObject())),selectors_license=()=>s=>{const o=s.specSelectors.info().get(\"license\");return ze.Map.isMap(o)?o:BP},selectLicenseNameField=()=>s=>s.specSelectors.license().get(\"name\",\"License\"),selectLicenseUrlField=()=>s=>s.specSelectors.license().get(\"url\"),VP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectLicenseUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectLicenseIdentifierField=()=>s=>s.specSelectors.license().get(\"identifier\"),selectors_contact=()=>s=>{const o=s.specSelectors.info().get(\"contact\");return ze.Map.isMap(o)?o:BP},selectContactNameField=()=>s=>s.specSelectors.contact().get(\"name\",\"the developer\"),selectContactEmailField=()=>s=>s.specSelectors.contact().get(\"email\"),selectContactUrlField=()=>s=>s.specSelectors.contact().get(\"url\"),UP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectContactUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectInfoTitleField=()=>s=>s.specSelectors.info().get(\"title\"),selectInfoSummaryField=()=>s=>s.specSelectors.info().get(\"summary\"),selectInfoDescriptionField=()=>s=>s.specSelectors.info().get(\"description\"),selectInfoTermsOfServiceField=()=>s=>s.specSelectors.info().get(\"termsOfService\"),zP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectInfoTermsOfServiceField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectExternalDocsDescriptionField=()=>s=>s.specSelectors.externalDocs().get(\"description\"),selectExternalDocsUrlField=()=>s=>s.specSelectors.externalDocs().get(\"url\"),WP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectExternalDocsUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectJsonSchemaDialectField=()=>s=>s.specSelectors.specJson().get(\"jsonSchemaDialect\"),selectJsonSchemaDialectDefault=()=>\"https://spec.openapis.org/oas/3.1/dialect/base\",JP=Vt(((s,o)=>o.specSelectors.definitions()),((s,o)=>o.specSelectors.specResolvedSubtree([\"components\",\"schemas\"])),((s,o)=>ze.Map.isMap(s)?ze.Map.isMap(o)?Object.entries(s.toJS()).reduce(((s,[i,a])=>{const u=o.get(i);return s[i]=u?.toJS()||a,s}),{}):s.toJS():{})),wrap_selectors_isOAS3=(s,o)=>(i,...a)=>o.specSelectors.isOAS31()||s(...a),HP=createOnlyOAS31SelectorWrapper((()=>(s,o)=>o.oas31Selectors.selectLicenseUrl())),KP=createOnlyOAS31SelectorWrapper((()=>(s,o)=>{const i=o.specSelectors.securityDefinitions();let a=s();return i?(i.entrySeq().forEach((([s,o])=>{const i=o?.get(\"type\");\"mutualTLS\"===i&&(a=a.push(new ze.Map({[s]:o})))})),a):a})),GP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectLicenseUrlField(),(s,o)=>o.specSelectors.selectLicenseIdentifierField()],((s,o,i,a)=>i?safeBuildUrl(i,s,{selectedServer:o}):a?`https://spdx.org/licenses/${a}.html`:void 0)),keywords_Example=({schema:s,getSystem:o})=>{const{fn:i,getComponent:a}=o(),{hasKeyword:u}=i.jsonSchema202012.useFn(),_=a(\"JSONSchema202012JSONViewer\");return u(s,\"example\")?Re.createElement(_,{name:\"Example\",value:s.example,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--example\"}):null},keywords_Xml=({schema:s,getSystem:o})=>{const i=s?.xml||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,{path:B}=j(\"xml\"),{isExpanded:$,setExpanded:V,setCollapsed:U}=C(\"xml\"),[z,Y]=L(),Z=w?getExtensions(i):[],ee=!!(i.name||i.namespace||i.prefix||Z.length>0),ie=x(\"Accordion\"),ae=x(\"ExpandDeepButton\"),ce=u(\"OpenAPI31Extensions\"),le=u(\"JSONSchema202012PathContext\")(),pe=u(\"JSONSchema202012LevelContext\")(),de=(0,Re.useCallback)((()=>{$?U():V()}),[$,V,U]),fe=(0,Re.useCallback)(((s,o)=>{o?V({deep:!0}):U({deep:!0})}),[V,U]);return 0===Object.keys(i).length?null:Re.createElement(le.Provider,{value:B},Re.createElement(pe.Provider,{value:Y},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml\",\"data-json-schema-level\":z},ee?Re.createElement(Re.Fragment,null,Re.createElement(ie,{expanded:$,onChange:de},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\")),Re.createElement(ae,{expanded:$,onClick:fe})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\"),!0===i.attribute&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"attribute\"),!0===i.wrapped&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"wrapped\"),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!$})},$&&Re.createElement(Re.Fragment,null,i.name&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"name\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.name))),i.namespace&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"namespace\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.namespace))),i.prefix&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"prefix\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.prefix)))),Z.length>0&&Re.createElement(ce,{openAPISpecObj:i,openAPIExtensions:Z,getSystem:o})))))},Discriminator_DiscriminatorMapping=({discriminator:s})=>{const o=s?.mapping||{};return 0===Object.keys(o).length?null:Object.entries(o).map((([s,o])=>Re.createElement(\"div\",{key:`${s}-${o}`,className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},s),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},o))))},keywords_Discriminator_Discriminator=({schema:s,getSystem:o})=>{const i=s?.discriminator||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,B=\"discriminator\",{path:$}=j(B),{isExpanded:V,setExpanded:U,setCollapsed:z}=C(B),[Y,Z]=L(),ee=w?getExtensions(i):[],ie=!!(i.mapping||ee.length>0),ae=x(\"Accordion\"),ce=x(\"ExpandDeepButton\"),le=u(\"OpenAPI31Extensions\"),pe=u(\"JSONSchema202012PathContext\")(),de=u(\"JSONSchema202012LevelContext\")(),fe=(0,Re.useCallback)((()=>{V?z():U()}),[V,U,z]),ye=(0,Re.useCallback)(((s,o)=>{o?U({deep:!0}):z({deep:!0})}),[U,z]);return 0===Object.keys(i).length?null:Re.createElement(pe.Provider,{value:$},Re.createElement(de.Provider,{value:Z},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator\",\"data-json-schema-level\":Y},ie?Re.createElement(Re.Fragment,null,Re.createElement(ae,{expanded:V,onChange:fe},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\")),Re.createElement(ce,{expanded:V,onClick:ye})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\"),i.propertyName&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},i.propertyName),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!V})},V&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(Discriminator_DiscriminatorMapping,{discriminator:i})),ee.length>0&&Re.createElement(le,{openAPISpecObj:i,openAPIExtensions:ee,getSystem:o})))))},keywords_OpenAPIExtensions=({openAPISpecObj:s,getSystem:o,openAPIExtensions:i})=>{const{fn:a}=o(),{useComponent:u}=a.jsonSchema202012,_=u(\"JSONViewer\");return i.map((o=>Re.createElement(_,{key:o,name:o,value:s[o],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))},keywords_ExternalDocs=({schema:s,getSystem:o})=>{const i=s?.externalDocs||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,B=\"externalDocs\",{path:$}=j(B),{isExpanded:V,setExpanded:U,setCollapsed:z}=C(B),[Y,Z]=L(),ee=w?getExtensions(i):[],ie=!!(i.description||i.url||ee.length>0),ae=x(\"Accordion\"),ce=x(\"ExpandDeepButton\"),le=u(\"JSONSchema202012KeywordDescription\"),pe=u(\"Link\"),de=u(\"OpenAPI31Extensions\"),fe=u(\"JSONSchema202012PathContext\")(),ye=u(\"JSONSchema202012LevelContext\")(),be=(0,Re.useCallback)((()=>{V?z():U()}),[V,U,z]),_e=(0,Re.useCallback)(((s,o)=>{o?U({deep:!0}):z({deep:!0})}),[U,z]);return 0===Object.keys(i).length?null:Re.createElement(fe.Provider,{value:$},Re.createElement(ye.Provider,{value:Z},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs\",\"data-json-schema-level\":Y},ie?Re.createElement(Re.Fragment,null,Re.createElement(ae,{expanded:V,onChange:be},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\")),Re.createElement(ce,{expanded:V,onClick:_e})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\"),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!V})},V&&Re.createElement(Re.Fragment,null,i.description&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(le,{schema:i,getSystem:o})),i.url&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"url\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},Re.createElement(pe,{target:\"_blank\",href:sanitizeUrl(i.url)},i.url))))),ee.length>0&&Re.createElement(de,{openAPISpecObj:i,openAPIExtensions:ee,getSystem:o})))))},keywords_Description=({schema:s,getSystem:o})=>{if(!s?.description)return null;const{getComponent:i}=o(),a=i(\"Markdown\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},Re.createElement(a,{source:s.description})))},YP=createOnlyOAS31ComponentWrapper(keywords_Description),XP=createOnlyOAS31ComponentWrapper((({schema:s,getSystem:o,originalComponent:i})=>{const{getComponent:a}=o(),u=a(\"JSONSchema202012KeywordDiscriminator\"),_=a(\"JSONSchema202012KeywordXml\"),w=a(\"JSONSchema202012KeywordExample\"),x=a(\"JSONSchema202012KeywordExternalDocs\");return Re.createElement(Re.Fragment,null,Re.createElement(i,{schema:s}),Re.createElement(u,{schema:s,getSystem:o}),Re.createElement(_,{schema:s,getSystem:o}),Re.createElement(x,{schema:s,getSystem:o}),Re.createElement(w,{schema:s,getSystem:o}))})),QP=XP,keywords_Properties=({schema:s,getSystem:o})=>{const{fn:i,getComponent:a}=o(),{useComponent:u,usePath:_}=i.jsonSchema202012,{getDependentRequired:w,getProperties:x}=i.jsonSchema202012.useFn(),C=i.jsonSchema202012.useConfig(),j=Array.isArray(s?.required)?s.required:[],{path:L}=_(\"properties\"),B=u(\"JSONSchema\"),$=a(\"JSONSchema202012PathContext\")(),V=x(s,C);return 0===Object.keys(V).length?null:Re.createElement($.Provider,{value:L},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},Re.createElement(\"ul\",null,Object.entries(V).map((([o,i])=>{const a=j.includes(o),u=w(o,s);return Re.createElement(\"li\",{key:o,className:Jn()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":a})},Re.createElement(B,{name:o,schema:i,dependentRequired:u}))})))))},ZP=createOnlyOAS31ComponentWrapper(keywords_Properties);const eT=function oas31_after_load_afterLoad({fn:s,getSystem:o}){if(s.jsonSchema202012){const i=((s,o)=>{const{fn:i}=o();if(\"function\"!=typeof s)return null;const{hasKeyword:a}=i.jsonSchema202012;return o=>s(o)||a(o,\"example\")||o?.xml||o?.discriminator||o?.externalDocs})(s.jsonSchema202012.isExpandable,o);Object.assign(this.fn.jsonSchema202012,{isExpandable:i,getProperties})}if(\"function\"==typeof s.sampleFromSchema&&s.jsonSchema202012){const i=wrapOAS31Fn({sampleFromSchema:s.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:s.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:s.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:s.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:s.jsonSchema202012.memoizedCreateXMLExample,getJsonSampleSchema:s.jsonSchema202012.getJsonSampleSchema,getYamlSampleSchema:s.jsonSchema202012.getYamlSampleSchema,getXmlSampleSchema:s.jsonSchema202012.getXmlSampleSchema,getSampleSchema:s.jsonSchema202012.getSampleSchema,mergeJsonSchema:s.jsonSchema202012.mergeJsonSchema},o());Object.assign(this.fn,i)}const i=(s=>(o,i=null)=>{const{fn:a}=s();if(a.isFileUploadIntendedOAS30(o,i))return!0;const u=ze.Map.isMap(o);if(!u&&!as()(o))return!1;const _=u?o.get(\"contentMediaType\"):o.contentMediaType,w=u?o.get(\"contentEncoding\"):o.contentEncoding;return\"string\"==typeof _&&\"\"!==_||\"string\"==typeof w&&\"\"!==w})(o),{isFileUploadIntended:a}=wrapOAS31Fn({isFileUploadIntended:i},o());if(this.fn.isFileUploadIntended=a,this.fn.isFileUploadIntendedOAS31=i,s.jsonSchema202012){const{hasSchemaType:i}=wrapOAS31Fn({hasSchemaType:s.jsonSchema202012.hasSchemaType},o());this.fn.hasSchemaType=i}},oas31=({fn:s})=>{const o=s.createSystemSelector||fn_createSystemSelector,i=s.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:eT,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,MutualTLSAuth:mutual_tls_auth,OAS31Info:oas31_components_info,OAS31License:oas31_components_license,OAS31Contact:oas31_components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:CP,OAS31Models:models,OAS31Auths:AP,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:keywords_Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs,OpenAPI31Extensions:keywords_OpenAPIExtensions},wrapComponents:{InfoContainer:PP,License:jP,Contact:IP,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:NP,Models:RP,AuthItem:LP,auths:FP,JSONSchema202012KeywordDescription:YP,JSONSchema202012KeywordExamples:QP,JSONSchema202012KeywordProperties:ZP},statePlugins:{auth:{wrapSelectors:{definitionsToAuthorize:KP}},spec:{selectors:{isOAS31:o($P),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:i(selectLicenseIdentifierField),selectLicenseUrl:o(VP),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:o(UP),selectInfoTitleField,selectInfoSummaryField:i(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:o(zP),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:o(WP),webhooks:i(selectors_webhooks),selectWebhooksOperations:i(o(qP)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:o(JP)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:HP}},oas31:{selectors:{selectLicenseUrl:i(o(GP))}}}}},tT=es().object,rT=es().bool,nT=(es().oneOfType([tT,rT]),(0,Re.createContext)(null));nT.displayName=\"JSONSchemaContext\";const sT=(0,Re.createContext)(0);sT.displayName=\"JSONSchemaLevelContext\";const oT=(0,Re.createContext)(new Set),iT=(0,Re.createContext)([]);class JSONSchemaIsExpandedState{static Collapsed=\"collapsed\";static Expanded=\"expanded\";static DeeplyExpanded=\"deeply-expanded\"}const useConfig=()=>{const{config:s}=(0,Re.useContext)(nT);return s},useComponent=s=>{const{components:o}=(0,Re.useContext)(nT);return o[s]||null},useFn=(s=void 0)=>{const{fn:o}=(0,Re.useContext)(nT);return void 0!==s?o[s]:o},useJSONSchemaContextState=()=>{const[,s]=(0,Re.useState)(null),{state:o}=(0,Re.useContext)(nT);return{state:o,setState:i=>{i(o),s({})}}},useLevel=()=>{const s=(0,Re.useContext)(sT);return[s,s+1]},usePath=s=>{const o=(0,Re.useContext)(iT),{setState:i}=useJSONSchemaContextState(),a=\"string\"==typeof s?[...o,s]:o;return{path:a,pathMutator:(s,o={deep:!1})=>{const u=a.toString(),updateFn=o=>{o.paths[u]=s,s===JSONSchemaIsExpandedState.Collapsed&&Object.keys(o.paths).forEach((s=>{s.startsWith(u)&&o.paths[s]===JSONSchemaIsExpandedState.DeeplyExpanded&&(o.paths[s]=JSONSchemaIsExpandedState.Expanded)}))},updateDeepFn=o=>{Object.keys(o.paths).forEach((i=>{i.startsWith(u)&&(o.paths[i]=s)}))};o.deep?i(updateDeepFn):i(updateFn)}}},useIsExpanded=s=>{const[o]=useLevel(),{defaultExpandedLevels:i}=useConfig(),{path:a,pathMutator:u}=usePath(s),{path:_}=usePath(),{state:w}=useJSONSchemaContextState(),x=w.paths[a.toString()],C=w.paths[_.toString()]??w.paths[_.slice(0,-1).toString()],j=x??(i-o>0?JSONSchemaIsExpandedState.Expanded:JSONSchemaIsExpandedState.Collapsed),L=j!==JSONSchemaIsExpandedState.Collapsed;(0,Re.useEffect)((()=>{u(C===JSONSchemaIsExpandedState.DeeplyExpanded?JSONSchemaIsExpandedState.DeeplyExpanded:j)}),[C]);return{isExpanded:L,setExpanded:(0,Re.useCallback)(((s={deep:!1})=>{u(s.deep?JSONSchemaIsExpandedState.DeeplyExpanded:JSONSchemaIsExpandedState.Expanded)}),[]),setCollapsed:(0,Re.useCallback)(((s={deep:!1})=>{u(JSONSchemaIsExpandedState.Collapsed,s)}),[])}},useRenderedSchemas=(s=void 0)=>{if(void 0===s)return(0,Re.useContext)(oT);const o=(0,Re.useContext)(oT);return new Set([...o,s])},aT=(0,Re.forwardRef)((({schema:s,name:o=\"\",dependentRequired:i=[],onExpand:a=()=>{},identifier:u=\"\"},_)=>{const w=useFn(),x=u||s?.$id||o,{path:C}=usePath(x),{isExpanded:j,setExpanded:L,setCollapsed:B}=useIsExpanded(x),[$,V]=useLevel(),U=(()=>{const[s]=useLevel();return s>0})(),z=w.isExpandable(s)||i.length>0,Y=(s=>useRenderedSchemas().has(s))(s),Z=useRenderedSchemas(s),ee=w.stringifyConstraints(s),ie=useComponent(\"Accordion\"),ae=useComponent(\"Keyword$schema\"),ce=useComponent(\"Keyword$vocabulary\"),le=useComponent(\"Keyword$id\"),pe=useComponent(\"Keyword$anchor\"),de=useComponent(\"Keyword$dynamicAnchor\"),fe=useComponent(\"Keyword$ref\"),ye=useComponent(\"Keyword$dynamicRef\"),be=useComponent(\"Keyword$defs\"),_e=useComponent(\"Keyword$comment\"),Se=useComponent(\"KeywordAllOf\"),we=useComponent(\"KeywordAnyOf\"),xe=useComponent(\"KeywordOneOf\"),Pe=useComponent(\"KeywordNot\"),Te=useComponent(\"KeywordIf\"),$e=useComponent(\"KeywordThen\"),qe=useComponent(\"KeywordElse\"),ze=useComponent(\"KeywordDependentSchemas\"),We=useComponent(\"KeywordPrefixItems\"),He=useComponent(\"KeywordItems\"),Ye=useComponent(\"KeywordContains\"),Xe=useComponent(\"KeywordProperties\"),Qe=useComponent(\"KeywordPatternProperties\"),et=useComponent(\"KeywordAdditionalProperties\"),tt=useComponent(\"KeywordPropertyNames\"),rt=useComponent(\"KeywordUnevaluatedItems\"),nt=useComponent(\"KeywordUnevaluatedProperties\"),st=useComponent(\"KeywordType\"),ot=useComponent(\"KeywordEnum\"),it=useComponent(\"KeywordConst\"),at=useComponent(\"KeywordConstraint\"),ct=useComponent(\"KeywordDependentRequired\"),lt=useComponent(\"KeywordContentSchema\"),ut=useComponent(\"KeywordTitle\"),pt=useComponent(\"KeywordDescription\"),ht=useComponent(\"KeywordDefault\"),dt=useComponent(\"KeywordDeprecated\"),mt=useComponent(\"KeywordReadOnly\"),gt=useComponent(\"KeywordWriteOnly\"),yt=useComponent(\"KeywordExamples\"),vt=useComponent(\"ExtensionKeywords\"),bt=useComponent(\"ExpandDeepButton\"),_t=(0,Re.useCallback)(((s,o)=>{o?L():B(),a(s,o,!1)}),[a,L,B]),St=(0,Re.useCallback)(((s,o)=>{o?L({deep:!0}):B({deep:!0}),a(s,o,!0)}),[a,L,B]);return Re.createElement(iT.Provider,{value:C},Re.createElement(sT.Provider,{value:V},Re.createElement(oT.Provider,{value:Z},Re.createElement(\"article\",{ref:_,\"data-json-schema-level\":$,className:Jn()(\"json-schema-2020-12\",{\"json-schema-2020-12--embedded\":U,\"json-schema-2020-12--circular\":Y})},Re.createElement(\"div\",{className:\"json-schema-2020-12-head\"},z&&!Y?Re.createElement(Re.Fragment,null,Re.createElement(ie,{expanded:j,onChange:_t},Re.createElement(ut,{title:o,schema:s})),Re.createElement(bt,{expanded:j,onClick:St})):Re.createElement(ut,{title:o,schema:s}),Re.createElement(dt,{schema:s}),Re.createElement(mt,{schema:s}),Re.createElement(gt,{schema:s}),Re.createElement(st,{schema:s,isCircular:Y}),ee.length>0&&ee.map((s=>Re.createElement(at,{key:`${s.scope}-${s.value}`,constraint:s})))),Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-body\",{\"json-schema-2020-12-body--collapsed\":!j})},j&&Re.createElement(Re.Fragment,null,Re.createElement(pt,{schema:s}),!Y&&z&&Re.createElement(Re.Fragment,null,Re.createElement(Xe,{schema:s}),Re.createElement(Qe,{schema:s}),Re.createElement(et,{schema:s}),Re.createElement(nt,{schema:s}),Re.createElement(tt,{schema:s}),Re.createElement(Se,{schema:s}),Re.createElement(we,{schema:s}),Re.createElement(xe,{schema:s}),Re.createElement(Pe,{schema:s}),Re.createElement(Te,{schema:s}),Re.createElement($e,{schema:s}),Re.createElement(qe,{schema:s}),Re.createElement(ze,{schema:s}),Re.createElement(We,{schema:s}),Re.createElement(He,{schema:s}),Re.createElement(rt,{schema:s}),Re.createElement(Ye,{schema:s}),Re.createElement(lt,{schema:s})),Re.createElement(ot,{schema:s}),Re.createElement(it,{schema:s}),Re.createElement(ct,{schema:s,dependentRequired:i}),Re.createElement(ht,{schema:s}),Re.createElement(yt,{schema:s}),Re.createElement(ae,{schema:s}),Re.createElement(ce,{schema:s}),Re.createElement(le,{schema:s}),Re.createElement(pe,{schema:s}),Re.createElement(de,{schema:s}),Re.createElement(fe,{schema:s}),!Y&&z&&Re.createElement(be,{schema:s}),Re.createElement(ye,{schema:s}),Re.createElement(_e,{schema:s}),Re.createElement(vt,{schema:s})))))))})),cT=aT,keywords_$schema=({schema:s})=>s?.$schema?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$schema\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$schema)):null,$vocabulary_$vocabulary=({schema:s})=>{const o=\"$vocabulary\",{path:i}=usePath(o),{isExpanded:a,setExpanded:u,setCollapsed:_}=useIsExpanded(o),w=useComponent(\"Accordion\"),x=(0,Re.useCallback)((()=>{a?_():u()}),[a,u,_]);return s?.$vocabulary?\"object\"!=typeof s.$vocabulary?null:Re.createElement(iT.Provider,{value:i},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary\"},Re.createElement(w,{expanded:a,onChange:x},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$vocabulary\")),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",null,a&&Object.entries(s.$vocabulary).map((([s,o])=>Re.createElement(\"li\",{key:s,className:Jn()(\"json-schema-2020-12-$vocabulary-uri\",{\"json-schema-2020-12-$vocabulary-uri--disabled\":!o})},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s))))))):null},keywords_$id=({schema:s})=>s?.$id?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$id\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$id)):null,keywords_$anchor=({schema:s})=>s?.$anchor?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$anchor\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$anchor)):null,keywords_$dynamicAnchor=({schema:s})=>s?.$dynamicAnchor?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicAnchor\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$dynamicAnchor)):null,keywords_$ref=({schema:s})=>s?.$ref?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$ref\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$ref)):null,keywords_$dynamicRef=({schema:s})=>s?.$dynamicRef?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicRef\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$dynamicRef)):null,keywords_$defs=({schema:s})=>{const o=s?.$defs||{},i=\"$defs\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONSchema\"),$=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),V=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return 0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:$},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$defs\")),Re.createElement(L,{expanded:u,onClick:V}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(B,{name:s,schema:o})))))))))},keywords_$comment=({schema:s})=>s?.$comment?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$comment\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$comment)):null,keywords_AllOf=({schema:s})=>{const o=s?.allOf||[],i=useFn(),a=\"allOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"All of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{allOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_AnyOf=({schema:s})=>{const o=s?.anyOf||[],i=useFn(),a=\"anyOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Any of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{anyOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_OneOf=({schema:s})=>{const o=s?.oneOf||[],i=useFn(),a=\"oneOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"One of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{oneOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_Not=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"not\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Not\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--not\"},Re.createElement(i,{name:a,schema:s.not,identifier:\"not\"}))},keywords_If=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"if\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"If\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},Re.createElement(i,{name:a,schema:s.if,identifier:\"if\"}))},keywords_Then=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"then\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Then\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--then\"},Re.createElement(i,{name:a,schema:s.then,identifier:\"then\"}))},keywords_Else=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"else\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Else\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},Re.createElement(i,{name:a,schema:s.else,identifier:\"else\"}))},keywords_DependentSchemas=({schema:s})=>{const o=s?.dependentSchemas||[],i=\"dependentSchemas\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONSchema\"),$=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),V=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return\"object\"!=typeof o||0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:$},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Dependent schemas\")),Re.createElement(L,{expanded:u,onClick:V}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(B,{name:s,schema:o})))))))))},keywords_PrefixItems=({schema:s})=>{const o=s?.prefixItems||[],i=useFn(),a=\"prefixItems\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Prefix items\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{prefixItems:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_Items=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"items\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Items\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--items\"},Re.createElement(i,{name:a,schema:s.items,identifier:\"items\"}))},keywords_Contains=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"contains\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Contains\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains\"},Re.createElement(i,{name:a,schema:s.contains,identifier:\"contains\"}))},keywords_Properties_Properties=({schema:s})=>{const o=useFn(),i=s?.properties||{},a=Array.isArray(s?.required)?s.required:[],u=useComponent(\"JSONSchema\"),{path:_}=usePath(\"properties\");return 0===Object.keys(i).length?null:Re.createElement(iT.Provider,{value:_},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},Re.createElement(\"ul\",null,Object.entries(i).map((([i,_])=>{const w=a.includes(i),x=o.getDependentRequired(i,s);return Re.createElement(\"li\",{key:i,className:Jn()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":w})},Re.createElement(u,{name:i,schema:_,dependentRequired:x}))})))))},PatternProperties_PatternProperties=({schema:s})=>{const o=s?.patternProperties||{},i=useComponent(\"JSONSchema\"),{path:a}=usePath(\"patternProperties\");return 0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties\"},Re.createElement(\"ul\",null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(i,{name:s,schema:o})))))))},keywords_AdditionalProperties=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"additionalProperties\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Additional properties\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties\"},!0===s.additionalProperties?Re.createElement(Re.Fragment,null,a,Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"allowed\")):!1===s.additionalProperties?Re.createElement(Re.Fragment,null,a,Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"forbidden\")):Re.createElement(i,{name:a,schema:s.additionalProperties,identifier:\"additionalProperties\"}))},keywords_PropertyNames=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\"),a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Property names\");return o.hasKeyword(s,\"propertyNames\")?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames\"},Re.createElement(i,{name:a,schema:s.propertyNames,identifier:\"propertyNames\"})):null},keywords_UnevaluatedItems=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"unevaluatedItems\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated items\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems\"},Re.createElement(i,{name:a,schema:s.unevaluatedItems,identifier:\"unevaluatedItems\"}))},keywords_UnevaluatedProperties=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"unevaluatedProperties\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated properties\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties\"},Re.createElement(i,{name:a,schema:s.unevaluatedProperties,identifier:\"unevaluatedProperties\"}))},keywords_Type=({schema:s,isCircular:o=!1})=>{const i=useFn().getType(s),a=o?\" [circular]\":\"\";return Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},`${i}${a}`)},Enum_Enum=({schema:s})=>{const o=useComponent(\"JSONViewer\");return Array.isArray(s?.enum)?Re.createElement(o,{name:\"Enum\",value:s.enum,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum\"}):null},Const_Const=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONViewer\");return o.hasKeyword(s,\"const\")?Re.createElement(i,{name:\"Const\",value:s.const,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--const\"}):null},fn_upperFirst=s=>\"string\"==typeof s?`${s.charAt(0).toUpperCase()}${s.slice(1)}`:s,makeGetTitle=s=>(o,{lookup:i=\"extended\"}={})=>{const a=s();if(null!=o?.title)return a.upperFirst(String(o.title));if(\"extended\"===i){if(null!=o?.$anchor)return a.upperFirst(String(o.$anchor));if(null!=o?.$id)return String(o.$id)}return\"\"},makeGetType=s=>{const getType=(o,i=new WeakSet)=>{const a=s();if(null==o)return\"any\";if(a.isBooleanJSONSchema(o))return o?\"any\":\"never\";if(\"object\"!=typeof o)return\"any\";if(i.has(o))return\"any\";i.add(o);const{type:u,prefixItems:_,items:w}=o,getArrayType=()=>{if(Array.isArray(_)){const s=_.map((s=>getType(s,i))),o=w?getType(w,i):\"any\";return`array<[${s.join(\", \")}], ${o}>`}if(w){return`array<${getType(w,i)}>`}return\"array<any>\"};if(o.not&&\"any\"===getType(o.not))return\"never\";const handleCombiningKeywords=(s,a)=>{if(Array.isArray(o[s])){return`(${o[s].map((s=>getType(s,i))).join(a)})`}return null},x=[Array.isArray(u)?u.map((s=>\"array\"===s?getArrayType():s)).join(\" | \"):\"array\"===u?getArrayType():[\"null\",\"boolean\",\"object\",\"array\",\"number\",\"integer\",\"string\"].includes(u)?u:(()=>{if(Object.hasOwn(o,\"prefixItems\")||Object.hasOwn(o,\"items\")||Object.hasOwn(o,\"contains\"))return getArrayType();if(Object.hasOwn(o,\"properties\")||Object.hasOwn(o,\"additionalProperties\")||Object.hasOwn(o,\"patternProperties\"))return\"object\";if([\"int32\",\"int64\"].includes(o.format))return\"integer\";if([\"float\",\"double\"].includes(o.format))return\"number\";if(Object.hasOwn(o,\"minimum\")||Object.hasOwn(o,\"maximum\")||Object.hasOwn(o,\"exclusiveMinimum\")||Object.hasOwn(o,\"exclusiveMaximum\")||Object.hasOwn(o,\"multipleOf\"))return\"number | integer\";if(Object.hasOwn(o,\"pattern\")||Object.hasOwn(o,\"format\")||Object.hasOwn(o,\"minLength\")||Object.hasOwn(o,\"maxLength\")||Object.hasOwn(o,\"contentEncoding\")||Object.hasOwn(o,\"contentMediaType\"))return\"string\";if(void 0!==o.const){if(null===o.const)return\"null\";if(\"boolean\"==typeof o.const)return\"boolean\";if(\"number\"==typeof o.const)return Number.isInteger(o.const)?\"integer\":\"number\";if(\"string\"==typeof o.const)return\"string\";if(Array.isArray(o.const))return\"array<any>\";if(\"object\"==typeof o.const)return\"object\"}return null})(),handleCombiningKeywords(\"oneOf\",\" | \"),handleCombiningKeywords(\"anyOf\",\" | \"),handleCombiningKeywords(\"allOf\",\" & \")].filter(Boolean).join(\" | \");return i.delete(o),x||\"any\"};return getType},isBooleanJSONSchema=s=>\"boolean\"==typeof s,hasKeyword=(s,o)=>null!==s&&\"object\"==typeof s&&Object.hasOwn(s,o),fn_makeIsExpandable=s=>o=>{const i=s();return o?.$schema||o?.$vocabulary||o?.$id||o?.$anchor||o?.$dynamicAnchor||o?.$ref||o?.$dynamicRef||o?.$defs||o?.$comment||o?.allOf||o?.anyOf||o?.oneOf||i.hasKeyword(o,\"not\")||i.hasKeyword(o,\"if\")||i.hasKeyword(o,\"then\")||i.hasKeyword(o,\"else\")||o?.dependentSchemas||o?.prefixItems||i.hasKeyword(o,\"items\")||i.hasKeyword(o,\"contains\")||o?.properties||o?.patternProperties||i.hasKeyword(o,\"additionalProperties\")||i.hasKeyword(o,\"propertyNames\")||i.hasKeyword(o,\"unevaluatedItems\")||i.hasKeyword(o,\"unevaluatedProperties\")||o?.description||o?.enum||i.hasKeyword(o,\"const\")||i.hasKeyword(o,\"contentSchema\")||i.hasKeyword(o,\"default\")||o?.examples||i.getExtensionKeywords(o).length>0},fn_stringify=s=>null===s||[\"number\",\"bigint\",\"boolean\"].includes(typeof s)?String(s):Array.isArray(s)?`[${s.map(fn_stringify).join(\", \")}]`:JSON.stringify(s),stringifyConstraintRange=(s,o,i)=>{const a=\"number\"==typeof o,u=\"number\"==typeof i;return a&&u?o===i?`${o} ${s}`:`[${o}, ${i}] ${s}`:a?`≥ ${o} ${s}`:u?`≤ ${i} ${s}`:null},stringifyConstraints=s=>{const o=[],i=(s=>{if(\"number\"!=typeof s?.multipleOf)return null;if(s.multipleOf<=0)return null;if(1===s.multipleOf)return null;const{multipleOf:o}=s;if(Number.isInteger(o))return`multiple of ${o}`;const i=10**o.toString().split(\".\")[1].length;return`multiple of ${o*i}/${i}`})(s);null!==i&&o.push({scope:\"number\",value:i});const a=(s=>{const o=s?.minimum,i=s?.maximum,a=s?.exclusiveMinimum,u=s?.exclusiveMaximum,_=\"number\"==typeof o,w=\"number\"==typeof i,x=\"number\"==typeof a,C=\"number\"==typeof u,j=x&&(!_||o<a),L=C&&(!w||i>u);if((_||x)&&(w||C))return`${j?\"(\":\"[\"}${j?a:o}, ${L?u:i}${L?\")\":\"]\"}`;if(_||x)return`${j?\">\":\"≥\"} ${j?a:o}`;if(w||C)return`${L?\"<\":\"≤\"} ${L?u:i}`;return null})(s);null!==a&&o.push({scope:\"number\",value:a}),s?.format&&o.push({scope:\"string\",value:s.format});const u=stringifyConstraintRange(\"characters\",s?.minLength,s?.maxLength);null!==u&&o.push({scope:\"string\",value:u}),s?.pattern&&o.push({scope:\"string\",value:`matches ${s?.pattern}`}),s?.contentMediaType&&o.push({scope:\"string\",value:`media type: ${s.contentMediaType}`}),s?.contentEncoding&&o.push({scope:\"string\",value:`encoding: ${s.contentEncoding}`});const _=stringifyConstraintRange(s?.uniqueItems?\"unique items\":\"items\",s?.minItems,s?.maxItems);null!==_&&o.push({scope:\"array\",value:_}),s?.uniqueItems&&!_&&o.push({scope:\"array\",value:\"unique\"});const w=stringifyConstraintRange(\"contained items\",s?.minContains,s?.maxContains);null!==w&&o.push({scope:\"array\",value:w});const x=stringifyConstraintRange(\"properties\",s?.minProperties,s?.maxProperties);return null!==x&&o.push({scope:\"object\",value:x}),o},getDependentRequired=(s,o)=>o?.dependentRequired?Array.from(Object.entries(o.dependentRequired).reduce(((o,[i,a])=>Array.isArray(a)&&a.includes(s)?(o.add(i),o):o),new Set)):[],fn_isPlainObject=s=>\"object\"==typeof s&&null!==s&&!Array.isArray(s)&&(null===Object.getPrototypeOf(s)||Object.getPrototypeOf(s)===Object.prototype),getSchemaKeywords=()=>[\"$schema\",\"$vocabulary\",\"$id\",\"$anchor\",\"$dynamicAnchor\",\"$dynamicRef\",\"$ref\",\"$defs\",\"$comment\",\"allOf\",\"anyOf\",\"oneOf\",\"not\",\"if\",\"then\",\"else\",\"dependentSchemas\",\"prefixItems\",\"items\",\"contains\",\"properties\",\"patternProperties\",\"additionalProperties\",\"propertyNames\",\"unevaluatedItems\",\"unevaluatedProperties\",\"type\",\"enum\",\"const\",\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxContains\",\"minContains\",\"maxProperties\",\"minProperties\",\"required\",\"dependentRequired\",\"title\",\"description\",\"default\",\"deprecated\",\"readOnly\",\"writeOnly\",\"examples\",\"format\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],makeGetExtensionKeywords=s=>o=>{const i=s().getSchemaKeywords();return fn_isPlainObject(o)?((s,o)=>{const i=new Set(o);return s.filter((s=>!i.has(s)))})(Object.keys(o),i):[]},fn_hasSchemaType=(s,o)=>{const i=ze.Map.isMap(s);if(!i&&!fn_isPlainObject(s))return!1;const hasType=s=>o===s||Array.isArray(o)&&o.includes(s),a=i?s.get(\"type\"):s.type;return ze.List.isList(a)||Array.isArray(a)?a.some((s=>hasType(s))):hasType(a)},Constraint=({constraint:s})=>fn_isPlainObject(s)&&\"string\"==typeof s.scope&&\"string\"==typeof s.value?Re.createElement(\"span\",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${s.scope}`},s.value):null,lT=Re.memo(Constraint),DependentRequired_DependentRequired=({dependentRequired:s})=>Array.isArray(s)&&0!==s.length?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Required when defined\"),Re.createElement(\"ul\",null,s.map((s=>Re.createElement(\"li\",{key:s},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning\"},s)))))):null,keywords_ContentSchema=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"contentSchema\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Content schema\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema\"},Re.createElement(i,{name:a,schema:s.contentSchema,identifier:\"contentSchema\"}))},Title_Title=({title:s=\"\",schema:o})=>{const i=useFn(),a=s||i.getTitle(o);return a?Re.createElement(\"div\",{className:\"json-schema-2020-12__title\"},a):null},keywords_Description_Description=({schema:s})=>s?.description?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},s.description)):null,Default_Default=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONViewer\");return o.hasKeyword(s,\"default\")?Re.createElement(i,{name:\"Default\",value:s.default,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--default\"}):null},keywords_Deprecated=({schema:s})=>!0!==s?.deprecated?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning\"},\"deprecated\"),keywords_ReadOnly=({schema:s})=>!0!==s?.readOnly?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"read-only\"),keywords_WriteOnly=({schema:s})=>!0!==s?.writeOnly?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"write-only\"),keywords_Examples_Examples=({schema:s})=>{const o=s?.examples||[],i=useComponent(\"JSONViewer\");return Array.isArray(o)&&0!==o.length?Re.createElement(i,{name:\"Examples\",value:s.examples,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--examples\"}):null},ExtensionKeywords_ExtensionKeywords=({schema:s})=>{const o=useFn(),i=\"ExtensionKeywords\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONViewer\"),{showExtensionKeywords:$}=useConfig(),V=o.getExtensionKeywords(s),U=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),z=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return $&&0!==V.length?Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--extension-keywords\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--extension\"},\"Extension Keywords\")),Re.createElement(L,{expanded:u,onClick:z}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,V.map((o=>Re.createElement(B,{key:o,name:o,value:s[o],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))))))):null},JSONViewer=({name:s,value:o,className:i})=>{const a=useFn(),{path:u}=usePath(s),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(s),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||\"boolean\"==typeof o||\"symbol\"==typeof o||null==o,V=(s=>fn_isPlainObject(s)&&0===Object.keys(s).length)(o)||(s=>Array.isArray(s)&&0===s.length)(o),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return $?Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i)},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s),Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__value json-schema-2020-12-json-viewer__value--secondary\"},a.stringify(o))):V?Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i)},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(o)?\"empty array\":\"empty object\")):Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i),\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s)),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(o)?\"array\":\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-json-viewer__children\",{\"json-schema-2020-12-json-viewer__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,Array.isArray(o)?o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement(JSONViewer,{name:`#${o}`,value:s,className:i})))):Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(JSONViewer,{name:s,value:o,className:i})))))))))},uT=JSONViewer,Accordion_Accordion=({expanded:s=!1,children:o,onChange:i})=>{const a=useComponent(\"ChevronRightIcon\"),u=(0,Re.useCallback)((o=>{i(o,!s)}),[s,i]);return Re.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-accordion\",onClick:u},Re.createElement(\"div\",{className:\"json-schema-2020-12-accordion__children\"},o),Re.createElement(\"span\",{className:Jn()(\"json-schema-2020-12-accordion__icon\",{\"json-schema-2020-12-accordion__icon--expanded\":s,\"json-schema-2020-12-accordion__icon--collapsed\":!s})},Re.createElement(a,null)))},ExpandDeepButton_ExpandDeepButton=({expanded:s,onClick:o})=>{const i=(0,Re.useCallback)((i=>{o(i,!s)}),[s,o]);return Re.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-expand-deep-button\",onClick:i},s?\"Collapse all\":\"Expand all\")},icons_ChevronRight=()=>Re.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},Re.createElement(\"path\",{d:\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"})),withJSONSchemaContext=(s,o={})=>{const i={components:{JSONSchema:cT,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:keywords_Type,KeywordEnum:Enum_Enum,KeywordConst:Const_Const,KeywordConstraint:lT,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:Title_Title,KeywordDescription:keywords_Description_Description,KeywordDefault:Default_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,KeywordExamples:keywords_Examples_Examples,ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONViewer:uT,Accordion:Accordion_Accordion,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight,...o.components},config:{default$schema:\"https://json-schema.org/draft/2020-12/schema\",defaultExpandedLevels:0,showExtensionKeywords:!0,...o.config},fn:{upperFirst:fn_upperFirst,getTitle:makeGetTitle(useFn),getType:makeGetType(useFn),isBooleanJSONSchema,hasKeyword,isExpandable:fn_makeIsExpandable(useFn),stringify:fn_stringify,stringifyConstraints,getDependentRequired,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(useFn),...o.fn},state:{paths:{}}},HOC=o=>Re.createElement(nT.Provider,{value:i},Re.createElement(s,o));return HOC.contexts={JSONSchemaContext:nT},HOC.displayName=s.displayName,HOC},makeWithJSONSchemaSystemContext=({getSystem:s})=>(o,i={})=>{const{getComponent:a,getConfigs:u}=s(),_=u(),w=a(\"JSONSchema202012\"),x=a(\"JSONSchema202012Keyword$schema\"),C=a(\"JSONSchema202012Keyword$vocabulary\"),j=a(\"JSONSchema202012Keyword$id\"),L=a(\"JSONSchema202012Keyword$anchor\"),B=a(\"JSONSchema202012Keyword$dynamicAnchor\"),$=a(\"JSONSchema202012Keyword$ref\"),V=a(\"JSONSchema202012Keyword$dynamicRef\"),U=a(\"JSONSchema202012Keyword$defs\"),z=a(\"JSONSchema202012Keyword$comment\"),Y=a(\"JSONSchema202012KeywordAllOf\"),Z=a(\"JSONSchema202012KeywordAnyOf\"),ee=a(\"JSONSchema202012KeywordOneOf\"),ie=a(\"JSONSchema202012KeywordNot\"),ae=a(\"JSONSchema202012KeywordIf\"),ce=a(\"JSONSchema202012KeywordThen\"),le=a(\"JSONSchema202012KeywordElse\"),pe=a(\"JSONSchema202012KeywordDependentSchemas\"),de=a(\"JSONSchema202012KeywordPrefixItems\"),fe=a(\"JSONSchema202012KeywordItems\"),ye=a(\"JSONSchema202012KeywordContains\"),be=a(\"JSONSchema202012KeywordProperties\"),_e=a(\"JSONSchema202012KeywordPatternProperties\"),Se=a(\"JSONSchema202012KeywordAdditionalProperties\"),we=a(\"JSONSchema202012KeywordPropertyNames\"),xe=a(\"JSONSchema202012KeywordUnevaluatedItems\"),Pe=a(\"JSONSchema202012KeywordUnevaluatedProperties\"),Te=a(\"JSONSchema202012KeywordType\"),Re=a(\"JSONSchema202012KeywordEnum\"),$e=a(\"JSONSchema202012KeywordConst\"),qe=a(\"JSONSchema202012KeywordConstraint\"),ze=a(\"JSONSchema202012KeywordDependentRequired\"),We=a(\"JSONSchema202012KeywordContentSchema\"),He=a(\"JSONSchema202012KeywordTitle\"),Ye=a(\"JSONSchema202012KeywordDescription\"),Xe=a(\"JSONSchema202012KeywordDefault\"),Qe=a(\"JSONSchema202012KeywordDeprecated\"),et=a(\"JSONSchema202012KeywordReadOnly\"),tt=a(\"JSONSchema202012KeywordWriteOnly\"),rt=a(\"JSONSchema202012KeywordExamples\"),nt=a(\"JSONSchema202012ExtensionKeywords\"),st=a(\"JSONSchema202012JSONViewer\"),ot=a(\"JSONSchema202012Accordion\"),it=a(\"JSONSchema202012ExpandDeepButton\"),at=a(\"JSONSchema202012ChevronRightIcon\");return withJSONSchemaContext(o,{components:{JSONSchema:w,Keyword$schema:x,Keyword$vocabulary:C,Keyword$id:j,Keyword$anchor:L,Keyword$dynamicAnchor:B,Keyword$ref:$,Keyword$dynamicRef:V,Keyword$defs:U,Keyword$comment:z,KeywordAllOf:Y,KeywordAnyOf:Z,KeywordOneOf:ee,KeywordNot:ie,KeywordIf:ae,KeywordThen:ce,KeywordElse:le,KeywordDependentSchemas:pe,KeywordPrefixItems:de,KeywordItems:fe,KeywordContains:ye,KeywordProperties:be,KeywordPatternProperties:_e,KeywordAdditionalProperties:Se,KeywordPropertyNames:we,KeywordUnevaluatedItems:xe,KeywordUnevaluatedProperties:Pe,KeywordType:Te,KeywordEnum:Re,KeywordConst:$e,KeywordConstraint:qe,KeywordDependentRequired:ze,KeywordContentSchema:We,KeywordTitle:He,KeywordDescription:Ye,KeywordDefault:Xe,KeywordDeprecated:Qe,KeywordReadOnly:et,KeywordWriteOnly:tt,KeywordExamples:rt,ExtensionKeywords:nt,JSONViewer:st,Accordion:ot,ExpandDeepButton:it,ChevronRightIcon:at,...i.components},config:{showExtensionKeywords:_.showExtensions,...i.config},fn:{...i.fn}})},json_schema_2020_12=({getSystem:s,fn:o})=>{const fnAccessor=()=>({upperFirst:o.upperFirst,...o.jsonSchema202012});return{components:{JSONSchema202012:cT,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:keywords_Type,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:Const_Const,JSONSchema202012KeywordConstraint:lT,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:Title_Title,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:Default_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012KeywordExamples:keywords_Examples_Examples,JSONSchema202012ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONSchema202012JSONViewer:uT,JSONSchema202012Accordion:Accordion_Accordion,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,withJSONSchema202012SystemContext:makeWithJSONSchemaSystemContext(s()),JSONSchema202012PathContext:()=>iT,JSONSchema202012LevelContext:()=>sT},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{getTitle:makeGetTitle(fnAccessor),getType:makeGetType(fnAccessor),isExpandable:fn_makeIsExpandable(fnAccessor),isBooleanJSONSchema,hasKeyword,useFn,useConfig,useComponent,useIsExpanded,usePath,useLevel,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(fnAccessor),hasSchemaType:fn_hasSchemaType}}}},array=(s,{sample:o=[]}={})=>((s,o={})=>{const{minItems:i,maxItems:a,uniqueItems:u}=o,{contains:_,minContains:w,maxContains:x}=o;let C=[...s];if(null!=_&&\"object\"==typeof _){if(Number.isInteger(w)&&w>1){const s=C.at(0);for(let o=1;o<w;o+=1)C.unshift(s)}Number.isInteger(x)}if(Number.isInteger(a)&&a>0&&(C=s.slice(0,a)),Number.isInteger(i)&&i>0)for(let s=0;C.length<i;s+=1)C.push(C[s%C.length]);return!0===u&&(C=Array.from(new Set(C))),C})(o,s),object=()=>{throw new Error(\"Not implemented\")},bytes=s=>xt()(s),random_pick=s=>s.at(0),predicates_isBooleanJSONSchema=s=>\"boolean\"==typeof s,isJSONSchemaObject=s=>as()(s),isJSONSchema=s=>predicates_isBooleanJSONSchema(s)||isJSONSchemaObject(s);const pT=class Registry{data={};register(s,o){this.data[s]=o}unregister(s){void 0===s?this.data={}:delete this.data[s]}get(s){return this.data[s]}},int32=()=>0,int64=()=>0,generators_float=()=>.1,generators_double=()=>.1,email=()=>\"user@example.com\",idn_email=()=>\"실례@example.com\",hostname=()=>\"example.com\",idn_hostname=()=>\"실례.com\",ipv4=()=>\"198.51.100.42\",ipv6=()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",uri=()=>\"https://example.com/\",uri_reference=()=>\"path/index.html\",iri=()=>\"https://실례.com/\",iri_reference=()=>\"path/실례.html\",uuid=()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",uri_template=()=>\"https://example.com/dictionary/{term:1}/{term}\",generators_json_pointer=()=>\"/a/b/c\",relative_json_pointer=()=>\"1/0\",date_time=()=>(new Date).toISOString(),date=()=>(new Date).toISOString().substring(0,10),time=()=>(new Date).toISOString().substring(11),duration=()=>\"P3D\",generators_password=()=>\"********\",regex=()=>\"^[a-z]+$\";const hT=new class FormatRegistry extends pT{#s={int32,int64,float:generators_float,double:generators_double,email,\"idn-email\":idn_email,hostname,\"idn-hostname\":idn_hostname,ipv4,ipv6,uri,\"uri-reference\":uri_reference,iri,\"iri-reference\":iri_reference,uuid,\"uri-template\":uri_template,\"json-pointer\":generators_json_pointer,\"relative-json-pointer\":relative_json_pointer,\"date-time\":date_time,date,time,duration,password:generators_password,regex};data={...this.#s};get defaults(){return{...this.#s}}},formatAPI=(s,o)=>\"function\"==typeof o?hT.register(s,o):null===o?hT.unregister(s):hT.get(s);formatAPI.getDefaults=()=>hT.defaults;const dT=formatAPI;var fT=__webpack_require__(48287).Buffer;const _7bit=s=>fT.from(s).toString(\"ascii\");var mT=__webpack_require__(48287).Buffer;const _8bit=s=>mT.from(s).toString(\"utf8\");var gT=__webpack_require__(48287).Buffer;const encoders_binary=s=>gT.from(s).toString(\"binary\"),quoted_printable=s=>{let o=\"\";for(let i=0;i<s.length;i++){const a=s.charCodeAt(i);if(61===a)o+=\"=3D\";else if(a>=33&&a<=60||a>=62&&a<=126||9===a||32===a)o+=s.charAt(i);else if(13===a||10===a)o+=\"\\r\\n\";else if(a>126){const a=unescape(encodeURIComponent(s.charAt(i)));for(let s=0;s<a.length;s++)o+=\"=\"+(\"0\"+a.charCodeAt(s).toString(16)).slice(-2).toUpperCase()}else o+=\"=\"+(\"0\"+a.toString(16)).slice(-2).toUpperCase()}return o};var yT=__webpack_require__(48287).Buffer;const base16=s=>yT.from(s).toString(\"hex\");var vT=__webpack_require__(48287).Buffer;const base32=s=>{const o=vT.from(s).toString(\"utf8\"),i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";let a=0,u=\"\",_=0,w=0;for(let s=0;s<o.length;s++)for(_=_<<8|o.charCodeAt(s),w+=8;w>=5;)u+=i.charAt(_>>>w-5&31),w-=5;w>0&&(u+=i.charAt(_<<5-w&31),a=(8-8*o.length%5)%5);for(let s=0;s<a;s++)u+=\"=\";return u};var bT=__webpack_require__(48287).Buffer;const base64=s=>bT.from(s).toString(\"base64\");var _T=__webpack_require__(48287).Buffer;const base64url=s=>_T.from(s).toString(\"base64url\");const ST=new class EncoderRegistry extends pT{#s={\"7bit\":_7bit,\"8bit\":_8bit,binary:encoders_binary,\"quoted-printable\":quoted_printable,base16,base32,base64,base64url};data={...this.#s};get defaults(){return{...this.#s}}},encoderAPI=(s,o)=>\"function\"==typeof o?ST.register(s,o):null===o?ST.unregister(s):ST.get(s);encoderAPI.getDefaults=()=>ST.defaults;const ET=encoderAPI,wT={\"text/plain\":()=>\"string\",\"text/css\":()=>\".selector { border: 1px solid red }\",\"text/csv\":()=>\"value1,value2,value3\",\"text/html\":()=>\"<p>content</p>\",\"text/calendar\":()=>\"BEGIN:VCALENDAR\",\"text/javascript\":()=>\"console.dir('Hello world!');\",\"text/xml\":()=>'<person age=\"30\">John Doe</person>',\"text/*\":()=>\"string\"},xT={\"image/*\":()=>bytes(25).toString(\"binary\")},kT={\"audio/*\":()=>bytes(25).toString(\"binary\")},OT={\"video/*\":()=>bytes(25).toString(\"binary\")},CT={\"application/json\":()=>'{\"key\":\"value\"}',\"application/ld+json\":()=>'{\"name\": \"John Doe\"}',\"application/x-httpd-php\":()=>\"<?php echo '<p>Hello World!</p>'; ?>\",\"application/rtf\":()=>String.raw`{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1`,\"application/x-sh\":()=>'echo \"Hello World!\"',\"application/xhtml+xml\":()=>\"<p>content</p>\",\"application/*\":()=>bytes(25).toString(\"binary\")};const AT=new class MediaTypeRegistry extends pT{#s={...wT,...xT,...kT,...OT,...CT};data={...this.#s};get defaults(){return{...this.#s}}},mediaTypeAPI=(s,o)=>{if(\"function\"==typeof o)return AT.register(s,o);if(null===o)return AT.unregister(s);const i=s.split(\";\").at(0),a=`${i.split(\"/\").at(0)}/*`;return AT.get(s)||AT.get(i)||AT.get(a)};mediaTypeAPI.getDefaults=()=>AT.defaults;const jT=mediaTypeAPI,applyStringConstraints=(s,o={})=>{const{maxLength:i,minLength:a}=o;let u=s;if(Number.isInteger(i)&&i>0&&(u=u.slice(0,i)),Number.isInteger(a)&&a>0){let s=0;for(;u.length<a;)u+=u[s++%u.length]}return u},types_string=(s,{sample:o}={})=>{const{contentEncoding:i,contentMediaType:a,contentSchema:u}=s,{pattern:_,format:w}=s,x=ET(i)||yO();let C;return C=\"string\"==typeof _?applyStringConstraints((s=>{try{return new(ps())(s).gen()}catch{return\"string\"}})(_),s):\"string\"==typeof w?(s=>{const{format:o}=s,i=dT(o);return\"function\"==typeof i?i(s):\"string\"})(s):isJSONSchema(u)&&\"string\"==typeof a&&void 0!==o?Array.isArray(o)||\"object\"==typeof o?JSON.stringify(o):applyStringConstraints(String(o),s):\"string\"==typeof a?(s=>{const{contentMediaType:o}=s,i=jT(o);return\"function\"==typeof i?i(s):\"string\"})(s):applyStringConstraints(\"string\",s),x(C)},applyNumberConstraints=(s,o={})=>{const{minimum:i,maximum:a,exclusiveMinimum:u,exclusiveMaximum:_}=o,{multipleOf:w}=o,x=Number.isInteger(s)?1:Number.EPSILON;let C=\"number\"==typeof i?i:null,j=\"number\"==typeof a?a:null,L=s;if(\"number\"==typeof u&&(C=null!==C?Math.max(C,u+x):u+x),\"number\"==typeof _&&(j=null!==j?Math.min(j,_-x):_-x),L=C>j&&s||C||j||L,\"number\"==typeof w&&w>0){const s=L%w;L=0===s?L:L+w-s}return L},types_number=s=>{const{format:o}=s;let i;return i=\"string\"==typeof o?(s=>{const{format:o}=s,i=dT(o);return\"function\"==typeof i?i(s):0})(s):0,applyNumberConstraints(i,s)},types_integer=s=>{const{format:o}=s;let i;return i=\"string\"==typeof o?(s=>{const{format:o}=s,i=dT(o);if(\"function\"==typeof i)return i(s);switch(o){case\"int32\":return int32();case\"int64\":return int64()}return 0})(s):0,applyNumberConstraints(i,s)},types_boolean=s=>\"boolean\"!=typeof s.default||s.default,IT=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(s,o)=>\"string\"==typeof o&&Object.hasOwn(s,o)?s[o]:()=>`Unknown Type: ${o}`}),PT=[\"array\",\"object\",\"number\",\"integer\",\"string\",\"boolean\",\"null\"],hasExample=s=>{if(!isJSONSchemaObject(s))return!1;const{examples:o,example:i,default:a}=s;return!!(Array.isArray(o)&&o.length>=1)||(void 0!==a||void 0!==i)},extractExample=s=>{if(!isJSONSchemaObject(s))return null;const{examples:o,example:i,default:a}=s;return Array.isArray(o)&&o.length>=1?o.at(0):void 0!==a?a:void 0!==i?i:void 0},TT={array:[\"items\",\"prefixItems\",\"contains\",\"maxContains\",\"minContains\",\"maxItems\",\"minItems\",\"uniqueItems\",\"unevaluatedItems\"],object:[\"properties\",\"additionalProperties\",\"patternProperties\",\"propertyNames\",\"minProperties\",\"maxProperties\",\"required\",\"dependentSchemas\",\"dependentRequired\",\"unevaluatedProperties\"],string:[\"pattern\",\"format\",\"minLength\",\"maxLength\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],integer:[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\",\"multipleOf\"]};TT.number=TT.integer;const NT=\"string\",inferTypeFromValue=s=>void 0===s?null:null===s?\"null\":Array.isArray(s)?\"array\":Number.isInteger(s)?\"integer\":typeof s,foldType=s=>{if(Array.isArray(s)&&s.length>=1){if(s.includes(\"array\"))return\"array\";if(s.includes(\"object\"))return\"object\";{const o=s.filter((s=>\"null\"!==s)),i=random_pick(o.length>0?o:s);if(PT.includes(i))return i}}return PT.includes(s)?s:null},inferType=(s,o=new WeakSet)=>{if(!isJSONSchemaObject(s))return NT;if(o.has(s))return NT;o.add(s);let{type:i,const:a}=s;if(i=foldType(i),\"string\"!=typeof i){const o=Object.keys(TT);e:for(let a=0;a<o.length;a+=1){const u=o[a],_=TT[u];for(let o=0;o<_.length;o+=1){const a=_[o];if(Object.hasOwn(s,a)){i=u;break e}}}}if(\"string\"!=typeof i&&void 0!==a){const s=inferTypeFromValue(a);i=\"string\"==typeof s?s:i}if(\"string\"!=typeof i){const combineTypes=i=>{if(Array.isArray(s[i])){const a=s[i].map((s=>inferType(s,o)));return foldType(a)}return null},a=combineTypes(\"allOf\"),u=combineTypes(\"anyOf\"),_=combineTypes(\"oneOf\"),w=s.not?inferType(s.not,o):null;(a||u||_||w)&&(i=foldType([a,u,_,w].filter(Boolean)))}if(\"string\"!=typeof i&&hasExample(s)){const o=extractExample(s),a=inferTypeFromValue(o);i=\"string\"==typeof a?a:i}return o.delete(s),i||NT},getType=s=>inferType(s),typeCast=s=>predicates_isBooleanJSONSchema(s)?(s=>!1===s?{not:{}}:{})(s):isJSONSchemaObject(s)?s:{},merge_merge=(s,o,i={})=>{if(predicates_isBooleanJSONSchema(s)&&!0===s)return!0;if(predicates_isBooleanJSONSchema(s)&&!1===s)return!1;if(predicates_isBooleanJSONSchema(o)&&!0===o)return!0;if(predicates_isBooleanJSONSchema(o)&&!1===o)return!1;if(!isJSONSchema(s))return o;if(!isJSONSchema(o))return s;const a={...o,...s};if(o.type&&s.type&&Array.isArray(o.type)&&\"string\"==typeof o.type){const i=normalizeArray(o.type).concat(s.type);a.type=Array.from(new Set(i))}if(Array.isArray(o.required)&&Array.isArray(s.required)&&(a.required=[...new Set([...s.required,...o.required])]),o.properties&&s.properties){const u=new Set([...Object.keys(o.properties),...Object.keys(s.properties)]);a.properties={};for(const _ of u){const u=o.properties[_]||{},w=s.properties[_]||{};u.readOnly&&!i.includeReadOnly||u.writeOnly&&!i.includeWriteOnly?a.required=(a.required||[]).filter((s=>s!==_)):a.properties[_]=merge_merge(w,u,i)}}return isJSONSchema(o.items)&&isJSONSchema(s.items)&&(a.items=merge_merge(s.items,o.items,i)),isJSONSchema(o.contains)&&isJSONSchema(s.contains)&&(a.contains=merge_merge(s.contains,o.contains,i)),isJSONSchema(o.contentSchema)&&isJSONSchema(s.contentSchema)&&(a.contentSchema=merge_merge(s.contentSchema,o.contentSchema,i)),a},MT=merge_merge,main_sampleFromSchemaGeneric=(s,o={},i=void 0,a=!1)=>{if(null==s&&void 0===i)return;\"function\"==typeof s?.toJS&&(s=s.toJS()),s=typeCast(s);let u=void 0!==i||hasExample(s);const _=!u&&Array.isArray(s.oneOf)&&s.oneOf.length>0,w=!u&&Array.isArray(s.anyOf)&&s.anyOf.length>0;if(!u&&(_||w)){const i=typeCast(random_pick(_?s.oneOf:s.anyOf));!(s=MT(s,i,o)).xml&&i.xml&&(s.xml=i.xml),hasExample(s)&&hasExample(i)&&(u=!0)}const x={};let{xml:C,properties:j,additionalProperties:L,items:B,contains:$}=s||{},V=getType(s),{includeReadOnly:U,includeWriteOnly:z}=o;C=C||{};let Y,{name:Z,prefix:ee,namespace:ie}=C,ae={};if(Object.hasOwn(s,\"type\")||(s.type=V),a&&(Z=Z||\"notagname\",Y=(ee?`${ee}:`:\"\")+Z,ie)){x[ee?`xmlns:${ee}`:\"xmlns\"]=ie}a&&(ae[Y]=[]);const ce=objectify(j);let le,pe=0;const hasExceededMaxProperties=()=>Number.isInteger(s.maxProperties)&&s.maxProperties>0&&pe>=s.maxProperties,canAddProperty=o=>!(Number.isInteger(s.maxProperties)&&s.maxProperties>0)||!hasExceededMaxProperties()&&(!(o=>!Array.isArray(s.required)||0===s.required.length||!s.required.includes(o))(o)||s.maxProperties-pe-(()=>{if(!Array.isArray(s.required)||0===s.required.length)return 0;let o=0;return a?s.required.forEach((s=>o+=void 0===ae[s]?0:1)):s.required.forEach((s=>{o+=void 0===ae[Y]?.find((o=>void 0!==o[s]))?0:1})),s.required.length-o})()>0);if(le=a?(i,u=void 0)=>{if(s&&ce[i]){if(ce[i].xml=ce[i].xml||{},ce[i].xml.attribute){const s=Array.isArray(ce[i].enum)?random_pick(ce[i].enum):void 0;if(hasExample(ce[i]))x[ce[i].xml.name||i]=extractExample(ce[i]);else if(void 0!==s)x[ce[i].xml.name||i]=s;else{const s=typeCast(ce[i]),a=getType(s),_=ce[i].xml.name||i;if(\"array\"===a){const s=main_sampleFromSchemaGeneric(ce[i],o,u,!1);x[_]=s.map((s=>as()(s)?\"UnknownTypeObject\":Array.isArray(s)?\"UnknownTypeArray\":s)).join(\" \")}else x[_]=\"object\"===a?\"UnknownTypeObject\":IT[a](s)}return}ce[i].xml.name=ce[i].xml.name||i}else ce[i]||!1===L||(ce[i]={xml:{name:i}});let _=main_sampleFromSchemaGeneric(ce[i],o,u,a);canAddProperty(i)&&(pe++,Array.isArray(_)?ae[Y]=ae[Y].concat(_):ae[Y].push(_))}:(i,u)=>{if(canAddProperty(i)){if(as()(s.discriminator?.mapping)&&s.discriminator.propertyName===i&&\"string\"==typeof s.$$ref){for(const o in s.discriminator.mapping)if(-1!==s.$$ref.search(s.discriminator.mapping[o])){ae[i]=o;break}}else ae[i]=main_sampleFromSchemaGeneric(ce[i],o,u,a);pe++}},u){let u;if(u=void 0!==i?i:extractExample(s),!a){if(\"number\"==typeof u&&\"string\"===V)return`${u}`;if(\"string\"!=typeof u||\"string\"===V)return u;try{return JSON.parse(u)}catch{return u}}if(\"array\"===V){if(!Array.isArray(u)){if(\"string\"==typeof u)return u;u=[u]}let i=[];return isJSONSchemaObject(B)&&(B.xml=B.xml||C||{},B.xml.name=B.xml.name||C.name,i=u.map((s=>main_sampleFromSchemaGeneric(B,o,s,a)))),isJSONSchemaObject($)&&($.xml=$.xml||C||{},$.xml.name=$.xml.name||C.name,i=[main_sampleFromSchemaGeneric($,o,void 0,a),...i]),i=IT.array(s,{sample:i}),C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x})):ae=i,ae}if(\"object\"===V){if(\"string\"==typeof u)return u;for(const s in u)Object.hasOwn(u,s)&&(ce[s]?.readOnly&&!U||ce[s]?.writeOnly&&!z||(ce[s]?.xml?.attribute?x[ce[s].xml.name||s]=u[s]:le(s,u[s])));return ds()(x)||ae[Y].push({_attr:x}),ae}return ae[Y]=ds()(x)?u:[{_attr:x},u],ae}if(\"array\"===V){let i=[];if(isJSONSchemaObject($))if(a&&($.xml=$.xml||s.xml||{},$.xml.name=$.xml.name||C.name),Array.isArray($.anyOf)){const{anyOf:s,...u}=B;i.push(...$.anyOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else if(Array.isArray($.oneOf)){const{oneOf:s,...u}=B;i.push(...$.oneOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else{if(!(!a||a&&C.wrapped))return main_sampleFromSchemaGeneric($,o,void 0,a);i.push(main_sampleFromSchemaGeneric($,o,void 0,a))}if(isJSONSchemaObject(B))if(a&&(B.xml=B.xml||s.xml||{},B.xml.name=B.xml.name||C.name),Array.isArray(B.anyOf)){const{anyOf:s,...u}=B;i.push(...B.anyOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else if(Array.isArray(B.oneOf)){const{oneOf:s,...u}=B;i.push(...B.oneOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else{if(!(!a||a&&C.wrapped))return main_sampleFromSchemaGeneric(B,o,void 0,a);i.push(main_sampleFromSchemaGeneric(B,o,void 0,a))}return i=IT.array(s,{sample:i}),a&&C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x}),ae):i}if(\"object\"===V){for(let s in ce)Object.hasOwn(ce,s)&&(ce[s]?.deprecated||ce[s]?.readOnly&&!U||ce[s]?.writeOnly&&!z||le(s));if(a&&x&&ae[Y].push({_attr:x}),hasExceededMaxProperties())return ae;if(predicates_isBooleanJSONSchema(L)&&L)a?ae[Y].push({additionalProp:\"Anything can be here\"}):ae.additionalProp1={},pe++;else if(isJSONSchemaObject(L)){const i=L,u=main_sampleFromSchemaGeneric(i,o,void 0,a);if(a&&\"string\"==typeof i?.xml?.name&&\"notagname\"!==i?.xml?.name)ae[Y].push(u);else{const o=Number.isInteger(s.minProperties)&&s.minProperties>0&&pe<s.minProperties?s.minProperties-pe:3;for(let s=1;s<=o;s++){if(hasExceededMaxProperties())return ae;if(a){const o={};o[\"additionalProp\"+s]=u.notagname,ae[Y].push(o)}else ae[\"additionalProp\"+s]=u;pe++}}}return ae}let de;if(void 0!==s.const)de=s.const;else if(s&&Array.isArray(s.enum))de=random_pick(normalizeArray(s.enum));else{const i=isJSONSchemaObject(s.contentSchema)?main_sampleFromSchemaGeneric(s.contentSchema,o,void 0,a):void 0;de=IT[V](s,{sample:i})}return a?(ae[Y]=ds()(x)?de:[{_attr:x},de],ae):de},main_createXMLExample=(s,o,i)=>{const a=main_sampleFromSchemaGeneric(s,o,i,!0);if(a)return\"string\"==typeof a?a:ls()(a,{declaration:!0,indent:\"\\t\"})},main_sampleFromSchema=(s,o,i)=>main_sampleFromSchemaGeneric(s,o,i,!1),main_resolver=(s,o,i)=>[s,JSON.stringify(o),JSON.stringify(i)],RT=utils_memoizeN(main_createXMLExample,main_resolver),DT=utils_memoizeN(main_sampleFromSchema,main_resolver);const LT=new class OptionRegistry extends pT{#s={};data={...this.#s};get defaults(){return{...this.#s}}},api_optionAPI=(s,o)=>(void 0!==o&&LT.register(s,o),LT.get(s)),FT=[{when:/json/,shouldStringifyTypes:[\"string\"]}],BT=[\"object\"],fn_get_json_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.jsonSchema202012.memoizedSampleFromSchema(o,i,u),x=typeof w,C=FT.reduce(((s,o)=>o.when.test(a)?[...s,...o.shouldStringifyTypes]:s),BT);return gt()(C,(s=>s===x))?JSON.stringify(w,null,2):w},fn_get_yaml_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.jsonSchema202012.getJsonSampleSchema(o,i,a,u);let x;try{x=fn.dump(fn.load(w),{lineWidth:-1},{schema:rn}),\"\\n\"===x[x.length-1]&&(x=x.slice(0,x.length-1))}catch(s){return console.error(s),\"error: could not generate yaml example\"}return x.replace(/\\t/g,\"  \")},fn_get_xml_sample_schema=s=>(o,i,a)=>{const{fn:u}=s();if(o&&!o.xml&&(o.xml={}),o&&!o.xml.name){if(!o.$$ref&&(o.type||o.items||o.properties||o.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(o.$$ref){let s=o.$$ref.match(/\\S*\\/(\\S+)$/);o.xml.name=s[1]}}return u.jsonSchema202012.memoizedCreateXMLExample(o,i,a)},fn_get_sample_schema=s=>(o,i=\"\",a={},u=void 0)=>{const{fn:_}=s();return\"function\"==typeof o?.toJS&&(o=o.toJS()),\"function\"==typeof u?.toJS&&(u=u.toJS()),/xml/.test(i)?_.jsonSchema202012.getXmlSampleSchema(o,a,u):/(yaml|yml)/.test(i)?_.jsonSchema202012.getYamlSampleSchema(o,a,i,u):_.jsonSchema202012.getJsonSampleSchema(o,a,i,u)},json_schema_2020_12_samples=({getSystem:s})=>{const o=fn_get_json_sample_schema(s),i=fn_get_yaml_sample_schema(s),a=fn_get_xml_sample_schema(s),u=fn_get_sample_schema(s);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleOptionAPI:api_optionAPI,sampleEncoderAPI:ET,sampleFormatAPI:dT,sampleMediaTypeAPI:jT,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:DT,memoizedCreateXMLExample:RT,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema:MT,foldType}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}const inline_plugin=s=>()=>({fn:s.fn,components:s.components}),factorization_system=s=>{const o=Ye()({layout:{layout:s.layout,filter:s.filter},spec:{spec:\"\",url:s.url},requestSnippets:s.requestSnippets},s.initialState);if(s.initialState)for(const[i,a]of Object.entries(s.initialState))void 0===a&&delete o[i];return{system:{configs:s.configs},plugins:s.presets,state:o}},sources_query=()=>s=>{const o=s.queryConfigEnabled?(()=>{const s=new URLSearchParams(lt.location.search);return Object.fromEntries(s)})():{};return Object.entries(o).reduce(((s,[o,i])=>(\"config\"===o?s.configUrl=i:\"urls.primaryName\"===o?s[o]=i:s=co()(s,o,i),s)),{})},sources_url=({url:s,system:o})=>async i=>{if(!s)return{};if(\"function\"!=typeof o.configsActions?.getConfigByUrl)return{};const a=(()=>{const s={};return s.promise=new Promise(((o,i)=>{s.resolve=o,s.reject=i})),s})();return o.configsActions.getConfigByUrl({url:s,loadRemoteConfig:!0,requestInterceptor:i.requestInterceptor,responseInterceptor:i.responseInterceptor},(s=>{a.resolve(s)})),a.promise},runtime=()=>()=>{const s={};return globalThis.location&&(s.oauth2RedirectUrl=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0,globalThis.location.pathname.lastIndexOf(\"/\"))}/oauth2-redirect.html`),s},$T=Object.freeze({dom_id:null,domNode:null,spec:{},url:\"\",urls:null,configUrl:null,layout:\"BaseLayout\",docExpansion:\"list\",maxDisplayedTags:-1,filter:!1,validatorUrl:\"https://validator.swagger.io/validator\",oauth2RedirectUrl:void 0,persistAuthorization:!1,configs:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:s=>(s.curlOptions=[],s),responseInterceptor:s=>s,showMutatedRequest:!0,defaultModelRendering:\"example\",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:!1,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:\"cURL (bash)\",syntax:\"bash\"},curl_powershell:{title:\"cURL (PowerShell)\",syntax:\"powershell\"},curl_cmd:{title:\"cURL (CMD)\",syntax:\"bash\"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:\"agate\"},operationsSorter:null,tagsSorter:null,onComplete:null,modelPropertyMacro:null,parameterMacro:null,fileUploadMediaTypes:[\"application/octet-stream\",\"image/\",\"audio/\",\"video/\"],uncaughtExceptionHandler:null});var qT=__webpack_require__(61448),VT=__webpack_require__.n(qT),UT=__webpack_require__(77731),zT=__webpack_require__.n(UT);const type_casters_array=(s,o=[])=>Array.isArray(s)?s:o,type_casters_boolean=(s,o=!1)=>!0===s||\"true\"===s||1===s||\"1\"===s||!1!==s&&\"false\"!==s&&0!==s&&\"0\"!==s&&o,dom_node=s=>null===s||\"null\"===s?null:s,type_casters_filter=s=>{const o=String(s);return type_casters_boolean(s,o)},type_casters_function=(s,o)=>\"function\"==typeof s?s:o,nullable_array=s=>Array.isArray(s)?s:null,nullable_function=s=>\"function\"==typeof s?s:null,nullable_string=s=>null===s||\"null\"===s?null:String(s),type_casters_number=(s,o=-1)=>{const i=parseInt(s,10);return Number.isNaN(i)?o:i},type_casters_object=(s,o={})=>as()(s)?s:o,sorter=s=>\"function\"==typeof s||\"string\"==typeof s?s:null,type_casters_string=s=>String(s),syntax_highlight=(s,o)=>as()(s)?s:!1===s||\"false\"===s||0===s||\"0\"===s?{activated:!1}:o,undefined_string=s=>void 0===s||\"undefined\"===s?void 0:String(s),WT={components:{typeCaster:type_casters_object},configs:{typeCaster:type_casters_object},configUrl:{typeCaster:nullable_string},deepLinking:{typeCaster:type_casters_boolean,defaultValue:$T.deepLinking},defaultModelExpandDepth:{typeCaster:type_casters_number,defaultValue:$T.defaultModelExpandDepth},defaultModelRendering:{typeCaster:type_casters_string},defaultModelsExpandDepth:{typeCaster:type_casters_number,defaultValue:$T.defaultModelsExpandDepth},displayOperationId:{typeCaster:type_casters_boolean,defaultValue:$T.displayOperationId},displayRequestDuration:{typeCaster:type_casters_boolean,defaultValue:$T.displayRequestDuration},docExpansion:{typeCaster:type_casters_string},dom_id:{typeCaster:nullable_string},domNode:{typeCaster:dom_node},fileUploadMediaTypes:{typeCaster:type_casters_array,defaultValue:$T.fileUploadMediaTypes},filter:{typeCaster:type_casters_filter},fn:{typeCaster:type_casters_object},initialState:{typeCaster:type_casters_object},layout:{typeCaster:type_casters_string},maxDisplayedTags:{typeCaster:type_casters_number,defaultValue:$T.maxDisplayedTags},modelPropertyMacro:{typeCaster:nullable_function},oauth2RedirectUrl:{typeCaster:undefined_string},onComplete:{typeCaster:nullable_function},operationsSorter:{typeCaster:sorter},paramaterMacro:{typeCaster:nullable_function},persistAuthorization:{typeCaster:type_casters_boolean,defaultValue:$T.persistAuthorization},plugins:{typeCaster:type_casters_array,defaultValue:$T.plugins},presets:{typeCaster:type_casters_array,defaultValue:$T.presets},requestInterceptor:{typeCaster:type_casters_function,defaultValue:$T.requestInterceptor},requestSnippets:{typeCaster:type_casters_object,defaultValue:$T.requestSnippets},requestSnippetsEnabled:{typeCaster:type_casters_boolean,defaultValue:$T.requestSnippetsEnabled},responseInterceptor:{typeCaster:type_casters_function,defaultValue:$T.responseInterceptor},showCommonExtensions:{typeCaster:type_casters_boolean,defaultValue:$T.showCommonExtensions},showExtensions:{typeCaster:type_casters_boolean,defaultValue:$T.showExtensions},showMutatedRequest:{typeCaster:type_casters_boolean,defaultValue:$T.showMutatedRequest},spec:{typeCaster:type_casters_object,defaultValue:$T.spec},supportedSubmitMethods:{typeCaster:type_casters_array,defaultValue:$T.supportedSubmitMethods},syntaxHighlight:{typeCaster:syntax_highlight,defaultValue:$T.syntaxHighlight},\"syntaxHighlight.activated\":{typeCaster:type_casters_boolean,defaultValue:$T.syntaxHighlight.activated},\"syntaxHighlight.theme\":{typeCaster:type_casters_string},tagsSorter:{typeCaster:sorter},tryItOutEnabled:{typeCaster:type_casters_boolean,defaultValue:$T.tryItOutEnabled},url:{typeCaster:type_casters_string},urls:{typeCaster:nullable_array},\"urls.primaryName\":{typeCaster:type_casters_string},validatorUrl:{typeCaster:nullable_string},withCredentials:{typeCaster:type_casters_boolean,defaultValue:$T.withCredentials},uncaughtExceptionHandler:{typeCaster:nullable_function}},type_cast=s=>Object.entries(WT).reduce(((s,[o,{typeCaster:i,defaultValue:a}])=>{if(VT()(s,o)){const u=i(An()(s,o),a);s=zT()(o,u,s)}return s}),{...s}),config_merge=(s,...o)=>{let i=Symbol.for(\"domNode\"),a=Symbol.for(\"primaryName\");const u=[];for(const s of o){const o={...s};Object.hasOwn(o,\"domNode\")&&(i=o.domNode,delete o.domNode),Object.hasOwn(o,\"urls.primaryName\")?(a=o[\"urls.primaryName\"],delete o[\"urls.primaryName\"]):Array.isArray(o.urls)&&Object.hasOwn(o.urls,\"primaryName\")&&(a=o.urls.primaryName,delete o.urls.primaryName),u.push(o)}const _=Ye()(s,...u);return i!==Symbol.for(\"domNode\")&&(_.domNode=i),a!==Symbol.for(\"primaryName\")&&Array.isArray(_.urls)&&(_.urls.primaryName=a),type_cast(_)};function SwaggerUI(s){const o=sources_query()(s),i=runtime()(),a=SwaggerUI.config.merge({},SwaggerUI.config.defaults,i,s,o),u=factorization_system(a),_=inline_plugin(a),w=new Store(u);w.register([a.plugins,_]);const x=w.getSystem(),persistConfigs=s=>{w.setConfigs(s),x.configsActions.loaded()},updateSpec=s=>{!o.url&&\"object\"==typeof s.spec&&Object.keys(s.spec).length>0?(x.specActions.updateUrl(\"\"),x.specActions.updateLoadingStatus(\"success\"),x.specActions.updateSpec(JSON.stringify(s.spec))):\"function\"==typeof x.specActions.download&&s.url&&!s.urls&&(x.specActions.updateUrl(s.url),x.specActions.download(s.url))},render=s=>{if(s.domNode)x.render(s.domNode,\"App\");else if(s.dom_id){const o=document.querySelector(s.dom_id);x.render(o,\"App\")}else null===s.dom_id||null===s.domNode||console.error(\"Skipped rendering: no `dom_id` or `domNode` was specified\")};return a.configUrl?((async()=>{const{configUrl:s}=a,i=await sources_url({url:s,system:x})(a),u=SwaggerUI.config.merge({},a,i,o);persistConfigs(u),null!==i&&updateSpec(u),render(u)})(),x):(persistConfigs(a),updateSpec(a),render(a),x)}SwaggerUI.System=Store,SwaggerUI.config={defaults:$T,merge:config_merge,typeCast:type_cast,typeCastMappings:WT},SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5:json_schema_5,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,ViewLegacy:view_legacy,DownloadUrl:downloadUrlPlugin,SyntaxHighlighting:syntax_highlighting,Versions:versions,SafeRender:safe_render};const JT=SwaggerUI})(),i=i.default})()));"
  },
  {
    "path": "web/public/swagger/swagger-ui-es-bundle-core.js",
    "content": "/*! For license information please see swagger-ui-es-bundle-core.js.LICENSE.txt */\nimport*as e from\"ieee754\";import*as t from\"base64-js\";import*as r from\"react\";import*as n from\"redux\";import*as a from\"immutable\";import*as o from\"redux-immutable\";import*as s from\"serialize-error\";import*as l from\"lodash/merge\";import*as i from\"lodash/camelCase\";import*as c from\"lodash/upperFirst\";import*as u from\"lodash/memoize\";import*as d from\"lodash/find\";import*as p from\"lodash/some\";import*as m from\"lodash/eq\";import*as f from\"lodash/isFunction\";import*as h from\"css.escape\";import*as g from\"url-parse\";import*as y from\"reselect\";import*as S from\"prop-types\";import*as _ from\"lodash/omit\";import*as v from\"js-yaml\";import*as b from\"zenscroll\";import*as w from\"react-immutable-proptypes\";import*as C from\"lodash/reduce\";import*as x from\"lodash/get\";import*as O from\"@babel/runtime-corejs3/helpers/extends\";import*as k from\"classnames\";import*as N from\"react-copy-to-clipboard\";import*as A from\"react-immutable-pure-component\";import*as I from\"react-debounce-input\";import*as j from\"lodash/isPlainObject\";import*as R from\"randexp\";import*as T from\"lodash/isEmpty\";import*as P from\"lodash/constant\";import*as B from\"lodash/isString\";import*as M from\"lodash/debounce\";import*as q from\"lodash/set\";import*as L from\"lodash/fp/assocPath\";import*as U from\"swagger-client/es/resolver/strategies/generic\";import*as D from\"swagger-client/es/resolver/strategies/openapi-2\";import*as $ from\"swagger-client/es/resolver/strategies/openapi-3-0\";import*as V from\"swagger-client/es/resolver/strategies/openapi-3-1-apidom\";import*as J from\"swagger-client/es/resolver\";import*as F from\"swagger-client/es/execute\";import*as z from\"swagger-client/es/http\";import*as K from\"swagger-client/es/subtree-resolver\";import*as W from\"swagger-client/es/helpers\";import*as H from\"react-dom\";import*as G from\"react-redux\";import*as X from\"lodash/identity\";import*as Y from\"react-syntax-highlighter/dist/esm/light\";import*as Q from\"react-syntax-highlighter/dist/esm/languages/hljs/javascript\";import*as Z from\"react-syntax-highlighter/dist/esm/languages/hljs/json\";import*as ee from\"react-syntax-highlighter/dist/esm/languages/hljs/xml\";import*as te from\"react-syntax-highlighter/dist/esm/languages/hljs/bash\";import*as re from\"react-syntax-highlighter/dist/esm/languages/hljs/yaml\";import*as ne from\"react-syntax-highlighter/dist/esm/languages/hljs/http\";import*as ae from\"react-syntax-highlighter/dist/esm/languages/hljs/powershell\";import*as oe from\"react-syntax-highlighter/dist/esm/styles/hljs/agate\";import*as se from\"react-syntax-highlighter/dist/esm/styles/hljs/arta\";import*as le from\"react-syntax-highlighter/dist/esm/styles/hljs/monokai\";import*as ie from\"react-syntax-highlighter/dist/esm/styles/hljs/nord\";import*as ce from\"react-syntax-highlighter/dist/esm/styles/hljs/obsidian\";import*as ue from\"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night\";import*as de from\"react-syntax-highlighter/dist/esm/styles/hljs/idea\";import*as pe from\"js-file-download\";import*as me from\"lodash/zipObject\";import*as fe from\"lodash/toString\";import*as he from\"xml-but-prettier\";import*as ge from\"lodash/toLower\";import*as ye from\"remarkable\";import*as Ee from\"remarkable/linkify\";import*as Se from\"dompurify\";import*as _e from\"lodash/escapeRegExp\";import*as ve from\"lodash/has\";import*as be from\"lodash/fp/set\";var we={7:function(e){var t,r=\"object\"==typeof Reflect?Reflect:null,n=r&&\"function\"==typeof r.apply?r.apply:function ReflectApply(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&\"function\"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function ReflectOwnKeys(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function NumberIsNaN(e){return e!=e};function EventEmitter(){EventEmitter.init.call(this)}e.exports=EventEmitter,e.exports.once=function once(e,t){return new Promise((function(r,n){function errorListener(r){e.removeListener(t,resolver),n(r)}function resolver(){\"function\"==typeof e.removeListener&&e.removeListener(\"error\",errorListener),r([].slice.call(arguments))}eventTargetAgnosticAddListener(e,t,resolver,{once:!0}),\"error\"!==t&&function addErrorHandlerIfEventEmitter(e,t,r){\"function\"==typeof e.on&&eventTargetAgnosticAddListener(e,\"error\",t,r)}(e,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var o=10;function checkListener(e){if(\"function\"!=typeof e)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}function _getMaxListeners(e){return void 0===e._maxListeners?EventEmitter.defaultMaxListeners:e._maxListeners}function _addListener(e,t,r,n){var a,o,s;if(checkListener(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit(\"newListener\",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if(\"function\"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(a=_getMaxListeners(e))>0&&s.length>a&&!s.warned){s.warned=!0;var l=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");l.name=\"MaxListenersExceededWarning\",l.emitter=e,l.type=t,l.count=s.length,function ProcessEmitWarning(e){console&&console.warn&&console.warn(e)}(l)}return e}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},a=onceWrapper.bind(n);return a.listener=r,n.wrapFn=a,a}function _listeners(e,t,r){var n=e._events;if(void 0===n)return[];var a=n[t];return void 0===a?[]:\"function\"==typeof a?r?[a.listener||a]:[a]:r?function unwrapListeners(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(a):arrayClone(a,a.length)}function listenerCount(e){var t=this._events;if(void 0!==t){var r=t[e];if(\"function\"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function arrayClone(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function eventTargetAgnosticAddListener(e,t,r,n){if(\"function\"==typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if(\"function\"!=typeof e.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function wrapListener(a){n.once&&e.removeEventListener(t,wrapListener),r(a)}))}}Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:!0,get:function(){return o},set:function(e){if(\"number\"!=typeof e||e<0||a(e))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\");o=e}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function setMaxListeners(e){if(\"number\"!=typeof e||e<0||a(e))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=e,this},EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)},EventEmitter.prototype.emit=function emit(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var a=\"error\"===e,o=this._events;if(void 0!==o)a=a&&void 0===o.error;else if(!a)return!1;if(a){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var l=new Error(\"Unhandled error.\"+(s?\" (\"+s.message+\")\":\"\"));throw l.context=s,l}var i=o[e];if(void 0===i)return!1;if(\"function\"==typeof i)n(i,this,t);else{var c=i.length,u=arrayClone(i,c);for(r=0;r<c;++r)n(u[r],this,t)}return!0},EventEmitter.prototype.addListener=function addListener(e,t){return _addListener(this,e,t,!1)},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.prependListener=function prependListener(e,t){return _addListener(this,e,t,!0)},EventEmitter.prototype.once=function once(e,t){return checkListener(t),this.on(e,_onceWrap(this,e,t)),this},EventEmitter.prototype.prependOnceListener=function prependOnceListener(e,t){return checkListener(t),this.prependListener(e,_onceWrap(this,e,t)),this},EventEmitter.prototype.removeListener=function removeListener(e,t){var r,n,a,o,s;if(checkListener(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit(\"removeListener\",e,r.listener||t));else if(\"function\"!=typeof r){for(a=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,a=o;break}if(a<0)return this;0===a?r.shift():function spliceOne(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,a),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit(\"removeListener\",e,s||t)}return this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.removeAllListeners=function removeAllListeners(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var a,o=Object.keys(r);for(n=0;n<o.length;++n)\"removeListener\"!==(a=o[n])&&this.removeAllListeners(a);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},EventEmitter.prototype.listeners=function listeners(e){return _listeners(this,e,!0)},EventEmitter.prototype.rawListeners=function rawListeners(e){return _listeners(this,e,!1)},EventEmitter.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):listenerCount.call(e,t)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?t(this._events):[]}},48:function(e){var t={};function createErrorType(e,r,n){n||(n=Error);var a=function(e){function NodeError(t,n,a){return e.call(this,function getMessage(e,t,n){return\"string\"==typeof r?r:r(e,t,n)}(t,n,a))||this}return function _inheritsLoose(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}(NodeError,e),NodeError}(n);a.prototype.name=n.name,a.prototype.code=e,t[e]=a}function oneOf(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?\"one of \".concat(t,\" \").concat(e.slice(0,r-1).join(\", \"),\", or \")+e[r-1]:2===r?\"one of \".concat(t,\" \").concat(e[0],\" or \").concat(e[1]):\"of \".concat(t,\" \").concat(e[0])}return\"of \".concat(t,\" \").concat(String(e))}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError),createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){var n,a;if(\"string\"==typeof t&&function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}(t,\"not \")?(n=\"must not be\",t=t.replace(/^not /,\"\")):n=\"must be\",function endsWith(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e,\" argument\"))a=\"The \".concat(e,\" \").concat(n,\" \").concat(oneOf(t,\"type\"));else{var o=function includes(e,t,r){return\"number\"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,\".\")?\"property\":\"argument\";a='The \"'.concat(e,'\" ').concat(o,\" \").concat(n,\" \").concat(oneOf(t,\"type\"))}return a+=\". Received type \".concat(typeof r)}),TypeError),createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"})),createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),createErrorType(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"})),createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError),createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),e.exports.F=t},107:function(e,t,r){var n=r(698),a=r(392),o=r(861).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=new Array(64);function Sha256(){this.init(),this._w=l,a.call(this,64,56)}function ch(e,t,r){return r^e&(t^r)}function maj(e,t,r){return e&t|r&(e|t)}function sigma0(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function sigma1(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function gamma0(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function gamma1(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}n(Sha256,a),Sha256.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Sha256.prototype._update=function(e){for(var t=this._w,r=0|this._a,n=0|this._b,a=0|this._c,o=0|this._d,l=0|this._e,i=0|this._f,c=0|this._g,u=0|this._h,d=0;d<16;++d)t[d]=e.readInt32BE(4*d);for(;d<64;++d)t[d]=gamma1(t[d-2])+t[d-7]+gamma0(t[d-15])+t[d-16]|0;for(var p=0;p<64;++p){var m=u+sigma1(l)+ch(l,i,c)+s[p]+t[p]|0,f=sigma0(r)+maj(r,n,a)|0;u=c,c=i,i=l,l=o+m|0,o=a,a=n,n=r,r=m+f|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=a+this._c|0,this._d=o+this._d|0,this._e=l+this._e|0,this._f=i+this._f|0,this._g=c+this._g|0,this._h=u+this._h|0},Sha256.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=Sha256},123:function(e,t,r){var n=r(606),a=r(499),o=r(310).Stream;function resolve(e,t,r){var n,o=function create_indent(e,t){return new Array(t||0).join(e||\"\")}(t,r=r||0),s=e;if(\"object\"==typeof e&&((s=e[n=Object.keys(e)[0]])&&s._elem))return s._elem.name=n,s._elem.icount=r,s._elem.indent=t,s._elem.indents=o,s._elem.interrupt=s,s._elem;var l,i=[],c=[];function get_attributes(e){Object.keys(e).forEach((function(t){i.push(function attribute(e,t){return e+'=\"'+a(t)+'\"'}(t,e[t]))}))}switch(typeof s){case\"object\":if(null===s)break;s._attr&&get_attributes(s._attr),s._cdata&&c.push((\"<![CDATA[\"+s._cdata).replace(/\\]\\]>/g,\"]]]]><![CDATA[>\")+\"]]>\"),s.forEach&&(l=!1,c.push(\"\"),s.forEach((function(e){\"object\"==typeof e?\"_attr\"==Object.keys(e)[0]?get_attributes(e._attr):c.push(resolve(e,t,r+1)):(c.pop(),l=!0,c.push(a(e)))})),l||c.push(\"\"));break;default:c.push(a(s))}return{name:n,interrupt:!1,attributes:i,content:c,icount:r,indents:o,indent:t}}function format(e,t,r){if(\"object\"!=typeof t)return e(!1,t);var n=t.interrupt?1:t.content.length;function proceed(){for(;t.content.length;){var a=t.content.shift();if(void 0!==a){if(interrupt(a))return;format(e,a)}}e(!1,(n>1?t.indents:\"\")+(t.name?\"</\"+t.name+\">\":\"\")+(t.indent&&!r?\"\\n\":\"\")),r&&r()}function interrupt(t){return!!t.interrupt&&(t.interrupt.append=e,t.interrupt.end=proceed,t.interrupt=!1,e(!0),!0)}if(e(!1,t.indents+(t.name?\"<\"+t.name:\"\")+(t.attributes.length?\" \"+t.attributes.join(\" \"):\"\")+(n?t.name?\">\":\"\":t.name?\"/>\":\"\")+(t.indent&&n>1?\"\\n\":\"\")),!n)return e(!1,t.indent?\"\\n\":\"\");interrupt(t)||proceed()}e.exports=function xml(e,t){\"object\"!=typeof t&&(t={indent:t});var r=t.stream?new o:null,a=\"\",s=!1,l=t.indent?!0===t.indent?\"    \":t.indent:\"\",i=!0;function delay(e){i?n.nextTick(e):e()}function append(e,t){if(void 0!==t&&(a+=t),e&&!s&&(r=r||new o,s=!0),e&&s){var n=a;delay((function(){r.emit(\"data\",n)})),a=\"\"}}function add(e,t){format(append,resolve(e,l,l?1:0),t)}function end(){if(r){var e=a;delay((function(){r.emit(\"data\",e),r.emit(\"end\"),r.readable=!1,r.emit(\"close\")}))}}return delay((function(){i=!1})),t.declaration&&function addXmlDeclaration(e){var t={version:\"1.0\",encoding:e.encoding||\"UTF-8\"};e.standalone&&(t.standalone=e.standalone),add({\"?xml\":{_attr:t}}),a=a.replace(\"/>\",\"?>\")}(t.declaration),e&&e.forEach?e.forEach((function(t,r){var n;r+1===e.length&&(n=end),add(t,n)})):add(e,end),r?(r.readable=!0,r):a},e.exports.element=e.exports.Element=function element(){var e={_elem:resolve(Array.prototype.slice.call(arguments)),push:function(e){if(!this.append)throw new Error(\"not assigned to a parent!\");var t=this,r=this._elem.indent;format(this.append,resolve(e,r,this._elem.icount+(r?1:0)),(function(){t.append(!0)}))},close:function(e){void 0!==e&&this.push(e),this.end&&this.end()}};return e}},141:function(e,t,r){var n=r(861).Buffer,a=n.isEncoding||function(e){switch((e=\"\"+e)&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function StringDecoder(e){var t;switch(this.encoding=function normalizeEncoding(e){var t=function _normalizeEncoding(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}(e);if(\"string\"!=typeof t&&(n.isEncoding===a||!a(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}(e),this.encoding){case\"utf16le\":this.text=utf16Text,this.end=utf16End,t=4;break;case\"utf8\":this.fillLast=utf8FillLast,t=4;break;case\"base64\":this.text=base64Text,this.end=base64End,t=3;break;default:return this.write=simpleWrite,void(this.end=simpleEnd)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function utf8CheckByte(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed,r=function utf8CheckExtraBytes(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"�\";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"�\";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"�\"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function utf16Text(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function base64Text(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function base64End(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):\"\"}t.I=StringDecoder,StringDecoder.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r<e.length?t?t+this.text(e,r):this.text(e,r):t||\"\"},StringDecoder.prototype.end=function utf8End(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+\"�\":t},StringDecoder.prototype.text=function utf8Text(e,t){var r=function utf8CheckIncomplete(e,t,r){var n=t.length-1;if(n<r)return 0;var a=utf8CheckByte(t[n]);if(a>=0)return a>0&&(e.lastNeed=a-1),a;if(--n<r||-2===a)return 0;if(a=utf8CheckByte(t[n]),a>=0)return a>0&&(e.lastNeed=a-2),a;if(--n<r||-2===a)return 0;if(a=utf8CheckByte(t[n]),a>=0)return a>0&&(2===a?a=0:e.lastNeed=a-3),a;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},StringDecoder.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},157:function(e){e.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},209:function(e,t,r){var n=r(606),a=65536,o=4294967295;var s=r(861).Buffer,l=r.g.crypto||r.g.msCrypto;l&&l.getRandomValues?e.exports=function randomBytes(e,t){if(e>o)throw new RangeError(\"requested too many random bytes\");var r=s.allocUnsafe(e);if(e>0)if(e>a)for(var i=0;i<e;i+=a)l.getRandomValues(r.slice(i,i+a));else l.getRandomValues(r);if(\"function\"==typeof t)return n.nextTick((function(){t(null,r)}));return r}:e.exports=function oldBrowser(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}},238:function(e,t,r){var n=r(48).F.ERR_STREAM_PREMATURE_CLOSE;function noop(){}e.exports=function eos(e,t,r){if(\"function\"==typeof t)return eos(e,null,t);t||(t={}),r=function once(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];e.apply(this,n)}}}(r||noop);var a=t.readable||!1!==t.readable&&e.readable,o=t.writable||!1!==t.writable&&e.writable,s=function onlegacyfinish(){e.writable||i()},l=e._writableState&&e._writableState.finished,i=function onfinish(){o=!1,l=!0,a||r.call(e)},c=e._readableState&&e._readableState.endEmitted,u=function onend(){a=!1,c=!0,o||r.call(e)},d=function onerror(t){r.call(e,t)},p=function onclose(){var t;return a&&!c?(e._readableState&&e._readableState.ended||(t=new n),r.call(e,t)):o&&!l?(e._writableState&&e._writableState.ended||(t=new n),r.call(e,t)):void 0},m=function onrequest(){e.req.on(\"finish\",i)};return!function isRequest(e){return e.setHeader&&\"function\"==typeof e.abort}(e)?o&&!e._writableState&&(e.on(\"end\",s),e.on(\"close\",s)):(e.on(\"complete\",i),e.on(\"abort\",p),e.req?m():e.on(\"request\",m)),e.on(\"end\",u),e.on(\"finish\",i),!1!==t.error&&e.on(\"error\",d),e.on(\"close\",p),function(){e.removeListener(\"complete\",i),e.removeListener(\"abort\",p),e.removeListener(\"request\",m),e.req&&e.req.removeListener(\"finish\",i),e.removeListener(\"end\",s),e.removeListener(\"close\",s),e.removeListener(\"finish\",i),e.removeListener(\"end\",u),e.removeListener(\"error\",d),e.removeListener(\"close\",p)}}},287:function(e,t,r){const n=r(987),a=r(362),o=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;t.Buffer=Buffer,t.SlowBuffer=function SlowBuffer(e){+e!=e&&(e=0);return Buffer.alloc(+e)},t.INSPECT_MAX_BYTES=50;const s=2147483647;function createBuffer(e){if(e>s)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,Buffer.prototype),t}function Buffer(e,t,r){if(\"number\"==typeof e){if(\"string\"==typeof t)throw new TypeError('The \"string\" argument must be of type string. Received type number');return allocUnsafe(e)}return from(e,t,r)}function from(e,t,r){if(\"string\"==typeof e)return function fromString(e,t){\"string\"==typeof t&&\"\"!==t||(t=\"utf8\");if(!Buffer.isEncoding(t))throw new TypeError(\"Unknown encoding: \"+t);const r=0|byteLength(e,t);let n=createBuffer(r);const a=n.write(e,t);a!==r&&(n=n.slice(0,a));return n}(e,t);if(ArrayBuffer.isView(e))return function fromArrayView(e){if(isInstance(e,Uint8Array)){const t=new Uint8Array(e);return fromArrayBuffer(t.buffer,t.byteOffset,t.byteLength)}return fromArrayLike(e)}(e);if(null==e)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e);if(isInstance(e,ArrayBuffer)||e&&isInstance(e.buffer,ArrayBuffer))return fromArrayBuffer(e,t,r);if(\"undefined\"!=typeof SharedArrayBuffer&&(isInstance(e,SharedArrayBuffer)||e&&isInstance(e.buffer,SharedArrayBuffer)))return fromArrayBuffer(e,t,r);if(\"number\"==typeof e)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return Buffer.from(n,t,r);const a=function fromObject(e){if(Buffer.isBuffer(e)){const t=0|checked(e.length),r=createBuffer(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return\"number\"!=typeof e.length||numberIsNaN(e.length)?createBuffer(0):fromArrayLike(e);if(\"Buffer\"===e.type&&Array.isArray(e.data))return fromArrayLike(e.data)}(e);if(a)return a;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof e[Symbol.toPrimitive])return Buffer.from(e[Symbol.toPrimitive](\"string\"),t,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof e)}function assertSize(e){if(\"number\"!=typeof e)throw new TypeError('\"size\" argument must be of type number');if(e<0)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"')}function allocUnsafe(e){return assertSize(e),createBuffer(e<0?0:0|checked(e))}function fromArrayLike(e){const t=e.length<0?0:0|checked(e.length),r=createBuffer(t);for(let n=0;n<t;n+=1)r[n]=255&e[n];return r}function fromArrayBuffer(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('\"offset\" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');let n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Buffer.prototype),n}function checked(e){if(e>=s)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+s.toString(16)+\" bytes\");return 0|e}function byteLength(e,t){if(Buffer.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||isInstance(e,ArrayBuffer))return e.byteLength;if(\"string\"!=typeof e)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let a=!1;for(;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return utf8ToBytes(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return base64ToBytes(e).length;default:if(a)return n?-1:utf8ToBytes(e).length;t=(\"\"+t).toLowerCase(),a=!0}}function slowToString(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return hexSlice(this,t,r);case\"utf8\":case\"utf-8\":return utf8Slice(this,t,r);case\"ascii\":return asciiSlice(this,t,r);case\"latin1\":case\"binary\":return latin1Slice(this,t,r);case\"base64\":return base64Slice(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}function swap(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function bidirectionalIndexOf(e,t,r,n,a){if(0===e.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),numberIsNaN(r=+r)&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(a)return-1;r=e.length-1}else if(r<0){if(!a)return-1;r=0}if(\"string\"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,r,n,a);if(\"number\"==typeof t)return t&=255,\"function\"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):arrayIndexOf(e,[t],r,n,a);throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(e,t,r,n,a){let o,s=1,l=e.length,i=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;s=2,l/=2,i/=2,r/=2}function read(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(a){let n=-1;for(o=r;o<l;o++)if(read(e,o)===read(t,-1===n?0:o-n)){if(-1===n&&(n=o),o-n+1===i)return n*s}else-1!==n&&(o-=o-n),n=-1}else for(r+i>l&&(r=l-i),o=r;o>=0;o--){let r=!0;for(let n=0;n<i;n++)if(read(e,o+n)!==read(t,n)){r=!1;break}if(r)return o}return-1}function hexWrite(e,t,r,n){r=Number(r)||0;const a=e.length-r;n?(n=Number(n))>a&&(n=a):n=a;const o=t.length;let s;for(n>o/2&&(n=o/2),s=0;s<n;++s){const n=parseInt(t.substr(2*s,2),16);if(numberIsNaN(n))return s;e[r+s]=n}return s}function utf8Write(e,t,r,n){return blitBuffer(utf8ToBytes(t,e.length-r),e,r,n)}function asciiWrite(e,t,r,n){return blitBuffer(function asciiToBytes(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function base64Write(e,t,r,n){return blitBuffer(base64ToBytes(t),e,r,n)}function ucs2Write(e,t,r,n){return blitBuffer(function utf16leToBytes(e,t){let r,n,a;const o=[];for(let s=0;s<e.length&&!((t-=2)<0);++s)r=e.charCodeAt(s),n=r>>8,a=r%256,o.push(a),o.push(n);return o}(t,e.length-r),e,r,n)}function base64Slice(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function utf8Slice(e,t,r){r=Math.min(e.length,r);const n=[];let a=t;for(;a<r;){const t=e[a];let o=null,s=t>239?4:t>223?3:t>191?2:1;if(a+s<=r){let r,n,l,i;switch(s){case 1:t<128&&(o=t);break;case 2:r=e[a+1],128==(192&r)&&(i=(31&t)<<6|63&r,i>127&&(o=i));break;case 3:r=e[a+1],n=e[a+2],128==(192&r)&&128==(192&n)&&(i=(15&t)<<12|(63&r)<<6|63&n,i>2047&&(i<55296||i>57343)&&(o=i));break;case 4:r=e[a+1],n=e[a+2],l=e[a+3],128==(192&r)&&128==(192&n)&&128==(192&l)&&(i=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&l,i>65535&&i<1114112&&(o=i))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),a+=s}return function decodeCodePointsArray(e){const t=e.length;if(t<=l)return String.fromCharCode.apply(String,e);let r=\"\",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=l));return r}(n)}t.kMaxLength=s,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(e,t,r){return from(e,t,r)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(e,t,r){return function alloc(e,t,r){return assertSize(e),e<=0?createBuffer(e):void 0!==t?\"string\"==typeof r?createBuffer(e).fill(t,r):createBuffer(e).fill(t):createBuffer(e)}(e,t,r)},Buffer.allocUnsafe=function(e){return allocUnsafe(e)},Buffer.allocUnsafeSlow=function(e){return allocUnsafe(e)},Buffer.isBuffer=function isBuffer(e){return null!=e&&!0===e._isBuffer&&e!==Buffer.prototype},Buffer.compare=function compare(e,t){if(isInstance(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),isInstance(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let a=0,o=Math.min(r,n);a<o;++a)if(e[a]!==t[a]){r=e[a],n=t[a];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function isEncoding(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},Buffer.concat=function concat(e,t){if(!Array.isArray(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);let r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;const n=Buffer.allocUnsafe(t);let a=0;for(r=0;r<e.length;++r){let t=e[r];if(isInstance(t,Uint8Array))a+t.length>n.length?(Buffer.isBuffer(t)||(t=Buffer.from(t)),t.copy(n,a)):Uint8Array.prototype.set.call(n,t,a);else{if(!Buffer.isBuffer(t))throw new TypeError('\"list\" argument must be an Array of Buffers');t.copy(n,a)}a+=t.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const e=this.length;if(e%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let t=0;t<e;t+=2)swap(this,t,t+1);return this},Buffer.prototype.swap32=function swap32(){const e=this.length;if(e%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let t=0;t<e;t+=4)swap(this,t,t+3),swap(this,t+1,t+2);return this},Buffer.prototype.swap64=function swap64(){const e=this.length;if(e%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let t=0;t<e;t+=8)swap(this,t,t+7),swap(this,t+1,t+6),swap(this,t+2,t+5),swap(this,t+3,t+4);return this},Buffer.prototype.toString=function toString(){const e=this.length;return 0===e?\"\":0===arguments.length?utf8Slice(this,0,e):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(e){if(!Buffer.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function inspect(){let e=\"\";const r=t.INSPECT_MAX_BYTES;return e=this.toString(\"hex\",0,r).replace(/(.{2})/g,\"$1 \").trim(),this.length>r&&(e+=\" ... \"),\"<Buffer \"+e+\">\"},o&&(Buffer.prototype[o]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(e,t,r,n,a){if(isInstance(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(e))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===a&&(a=this.length),t<0||r>e.length||n<0||a>this.length)throw new RangeError(\"out of range index\");if(n>=a&&t>=r)return 0;if(n>=a)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(a>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const l=Math.min(o,s),i=this.slice(n,a),c=e.slice(t,r);for(let e=0;e<l;++e)if(i[e]!==c[e]){o=i[e],s=c[e];break}return o<s?-1:s<o?1:0},Buffer.prototype.includes=function includes(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function indexOf(e,t,r){return bidirectionalIndexOf(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(e,t,r){return bidirectionalIndexOf(this,e,t,r,!1)},Buffer.prototype.write=function write(e,t,r,n){if(void 0===t)n=\"utf8\",r=this.length,t=0;else if(void 0===r&&\"string\"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}const a=this.length-t;if((void 0===r||r>a)&&(r=a),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");let o=!1;for(;;)switch(n){case\"hex\":return hexWrite(this,e,t,r);case\"utf8\":case\"utf-8\":return utf8Write(this,e,t,r);case\"ascii\":case\"latin1\":case\"binary\":return asciiWrite(this,e,t,r);case\"base64\":return base64Write(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,e,t,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const l=4096;function asciiSlice(e,t,r){let n=\"\";r=Math.min(e.length,r);for(let a=t;a<r;++a)n+=String.fromCharCode(127&e[a]);return n}function latin1Slice(e,t,r){let n=\"\";r=Math.min(e.length,r);for(let a=t;a<r;++a)n+=String.fromCharCode(e[a]);return n}function hexSlice(e,t,r){const n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);let a=\"\";for(let n=t;n<r;++n)a+=u[e[n]];return a}function utf16leSlice(e,t,r){const n=e.slice(t,r);let a=\"\";for(let e=0;e<n.length-1;e+=2)a+=String.fromCharCode(n[e]+256*n[e+1]);return a}function checkOffset(e,t,r){if(e%1!=0||e<0)throw new RangeError(\"offset is not uint\");if(e+t>r)throw new RangeError(\"Trying to access beyond buffer length\")}function checkInt(e,t,r,n,a,o){if(!Buffer.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>a||t<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>e.length)throw new RangeError(\"Index out of range\")}function wrtBigUInt64LE(e,t,r,n,a){checkIntBI(t,n,a,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=s,s>>=8,e[r++]=s,s>>=8,e[r++]=s,s>>=8,e[r++]=s,r}function wrtBigUInt64BE(e,t,r,n,a){checkIntBI(t,n,a,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=s,s>>=8,e[r+2]=s,s>>=8,e[r+1]=s,s>>=8,e[r]=s,r+8}function checkIEEE754(e,t,r,n,a,o){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function writeFloat(e,t,r,n,o){return t=+t,r>>>=0,o||checkIEEE754(e,0,r,4),a.write(e,t,r,n,23,4),r+4}function writeDouble(e,t,r,n,o){return t=+t,r>>>=0,o||checkIEEE754(e,0,r,8),a.write(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function slice(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);const n=this.subarray(e,t);return Object.setPrototypeOf(n,Buffer.prototype),n},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);let n=this[e],a=1,o=0;for(;++o<t&&(a*=256);)n+=this[e+o]*a;return n},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);let n=this[e+--t],a=1;for(;t>0&&(a*=256);)n+=this[e+--t]*a;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(e,t){return e>>>=0,t||checkOffset(e,1,this.length),this[e]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(e,t){return e>>>=0,t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(e,t){return e>>>=0,t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(e){validateNumber(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||boundsError(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,a=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(a)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(e){validateNumber(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||boundsError(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],a=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<<BigInt(32))+BigInt(a)})),Buffer.prototype.readIntLE=function readIntLE(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);let n=this[e],a=1,o=0;for(;++o<t&&(a*=256);)n+=this[e+o]*a;return a*=128,n>=a&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function readIntBE(e,t,r){e>>>=0,t>>>=0,r||checkOffset(e,t,this.length);let n=t,a=1,o=this[e+--n];for(;n>0&&(a*=256);)o+=this[e+--n]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*t)),o},Buffer.prototype.readInt8=function readInt8(e,t){return e>>>=0,t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function readInt16LE(e,t){e>>>=0,t||checkOffset(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function readInt16BE(e,t){e>>>=0,t||checkOffset(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function readInt32LE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(e){validateNumber(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||boundsError(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(e){validateNumber(e>>>=0,\"offset\");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||boundsError(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<<BigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+r)})),Buffer.prototype.readFloatLE=function readFloatLE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),a.read(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(e,t){return e>>>=0,t||checkOffset(e,4,this.length),a.read(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(e,t){return e>>>=0,t||checkOffset(e,8,this.length),a.read(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(e,t){return e>>>=0,t||checkOffset(e,8,this.length),a.read(this,e,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){checkInt(this,e,t,r,Math.pow(2,8*r)-1,0)}let a=1,o=0;for(this[t]=255&e;++o<r&&(a*=256);)this[t+o]=e/a&255;return t+r},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){checkInt(this,e,t,r,Math.pow(2,8*r)-1,0)}let a=r-1,o=1;for(this[t+a]=255&e;--a>=0&&(o*=256);)this[t+a]=e/o&255;return t+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,1,255,0),this[t]=255&e,t+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(e,t=0){return wrtBigUInt64LE(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(e,t=0){return wrtBigUInt64BE(this,e,t,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeIntLE=function writeIntLE(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,e,t,r,n-1,-n)}let a=0,o=1,s=0;for(this[t]=255&e;++a<r&&(o*=256);)e<0&&0===s&&0!==this[t+a-1]&&(s=1),this[t+a]=(e/o|0)-s&255;return t+r},Buffer.prototype.writeIntBE=function writeIntBE(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,e,t,r,n-1,-n)}let a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o|0)-s&255;return t+r},Buffer.prototype.writeInt8=function writeInt8(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function writeInt16LE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeInt16BE=function writeInt16BE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeInt32LE=function writeInt32LE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Buffer.prototype.writeInt32BE=function writeInt32BE(e,t,r){return e=+e,t>>>=0,r||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(e,t=0){return wrtBigUInt64LE(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(e,t=0){return wrtBigUInt64BE(this,e,t,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(e,t,r){return writeFloat(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function writeFloatBE(e,t,r){return writeFloat(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(e,t,r){return writeDouble(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(e,t,r){return writeDouble(this,e,t,!1,r)},Buffer.prototype.copy=function copy(e,t,r,n){if(!Buffer.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);const a=n-r;return this===e&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),a},Buffer.prototype.fill=function fill(e,t,r,n){if(\"string\"==typeof e){if(\"string\"==typeof t?(n=t,t=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!Buffer.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===e.length){const t=e.charCodeAt(0);(\"utf8\"===n&&t<128||\"latin1\"===n)&&(e=t)}}else\"number\"==typeof e?e&=255:\"boolean\"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError(\"Out of range index\");if(r<=t)return this;let a;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),\"number\"==typeof e)for(a=t;a<r;++a)this[a]=e;else{const o=Buffer.isBuffer(e)?e:Buffer.from(e,n),s=o.length;if(0===s)throw new TypeError('The value \"'+e+'\" is invalid for argument \"value\"');for(a=0;a<r-t;++a)this[a+t]=o[a%s]}return this};const i={};function E(e,t,r){i[e]=class NodeError extends r{constructor(){super(),Object.defineProperty(this,\"message\",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function addNumericalSeparator(e){let t=\"\",r=e.length;const n=\"-\"===e[0]?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function checkIntBI(e,t,r,n,a,o){if(e>r||e<t){const n=\"bigint\"==typeof t?\"n\":\"\";let a;throw a=o>3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new i.ERR_OUT_OF_RANGE(\"value\",a,e)}!function checkBounds(e,t,r){validateNumber(t,\"offset\"),void 0!==e[t]&&void 0!==e[t+r]||boundsError(t,e.length-(r+1))}(n,a,o)}function validateNumber(e,t){if(\"number\"!=typeof e)throw new i.ERR_INVALID_ARG_TYPE(t,\"number\",e)}function boundsError(e,t,r){if(Math.floor(e)!==e)throw validateNumber(e,r),new i.ERR_OUT_OF_RANGE(r||\"offset\",\"an integer\",e);if(t<0)throw new i.ERR_BUFFER_OUT_OF_BOUNDS;throw new i.ERR_OUT_OF_RANGE(r||\"offset\",`>= ${r?1:0} and <= ${t}`,e)}E(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(e){return e?`${e} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),E(\"ERR_INVALID_ARG_TYPE\",(function(e,t){return`The \"${e}\" argument must be of type number. Received type ${typeof t}`}),TypeError),E(\"ERR_OUT_OF_RANGE\",(function(e,t,r){let n=`The value of \"${e}\" is out of range.`,a=r;return Number.isInteger(r)&&Math.abs(r)>2**32?a=addNumericalSeparator(String(r)):\"bigint\"==typeof r&&(a=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(a=addNumericalSeparator(a)),a+=\"n\"),n+=` It must be ${t}. Received ${a}`,n}),RangeError);const c=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(e,t){let r;t=t||1/0;const n=e.length;let a=null;const o=[];for(let s=0;s<n;++s){if(r=e.charCodeAt(s),r>55295&&r<57344){if(!a){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),a=r;continue}r=65536+(a-55296<<10|r-56320)}else a&&(t-=3)>-1&&o.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function base64ToBytes(e){return n.toByteArray(function base64clean(e){if((e=(e=e.split(\"=\")[0]).trim().replace(c,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function blitBuffer(e,t,r,n){let a;for(a=0;a<n&&!(a+r>=t.length||a>=e.length);++a)t[a+r]=e[a];return a}function isInstance(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function numberIsNaN(e){return e!=e}const u=function(){const e=\"0123456789abcdef\",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let a=0;a<16;++a)t[n+a]=e[r]+e[a]}return t}();function defineBigIntMethod(e){return\"undefined\"==typeof BigInt?BufferBigIntNotDefined:e}function BufferBigIntNotDefined(){throw new Error(\"BigInt not supported\")}},291:function(e,t,r){var n=r(48).F.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function getHighWaterMark(e,t,r,a){var o=function highWaterMarkFrom(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,a,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new n(a?r:\"highWaterMark\",o);return Math.floor(o)}return e.objectMode?16:16384}}},310:function(e,t,r){e.exports=Stream;var n=r(7).EventEmitter;function Stream(){n.call(this)}r(698)(Stream,n),Stream.Readable=r(412),Stream.Writable=r(708),Stream.Duplex=r(382),Stream.Transform=r(610),Stream.PassThrough=r(600),Stream.finished=r(238),Stream.pipeline=r(758),Stream.Stream=Stream,Stream.prototype.pipe=function(e,t){var r=this;function ondata(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function ondrain(){r.readable&&r.resume&&r.resume()}r.on(\"data\",ondata),e.on(\"drain\",ondrain),e._isStdio||t&&!1===t.end||(r.on(\"end\",onend),r.on(\"close\",onclose));var a=!1;function onend(){a||(a=!0,e.end())}function onclose(){a||(a=!0,\"function\"==typeof e.destroy&&e.destroy())}function onerror(e){if(cleanup(),0===n.listenerCount(this,\"error\"))throw e}function cleanup(){r.removeListener(\"data\",ondata),e.removeListener(\"drain\",ondrain),r.removeListener(\"end\",onend),r.removeListener(\"close\",onclose),r.removeListener(\"error\",onerror),e.removeListener(\"error\",onerror),r.removeListener(\"end\",cleanup),r.removeListener(\"close\",cleanup),e.removeListener(\"close\",cleanup)}return r.on(\"error\",onerror),e.on(\"error\",onerror),r.on(\"end\",cleanup),r.on(\"close\",cleanup),e.on(\"close\",cleanup),e.emit(\"pipe\",r),e}},340:function(){},345:function(e,t,r){e.exports=r(7).EventEmitter},362:function(t){t.exports=e},382:function(e,t,r){var n=r(606),a=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=Duplex;var o=r(412),s=r(708);r(698)(Duplex,o);for(var l=a(s.prototype),i=0;i<l.length;i++){var c=l[i];Duplex.prototype[c]||(Duplex.prototype[c]=s.prototype[c])}function Duplex(e){if(!(this instanceof Duplex))return new Duplex(e);o.call(this,e),s.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once(\"end\",onend)))}function onend(){this._writableState.ended||n.nextTick(onEndNT,this)}function onEndNT(e){e.end()}Object.defineProperty(Duplex.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Object.defineProperty(Duplex.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Duplex.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Duplex.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function set(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}})},392:function(e,t,r){var n=r(861).Buffer;function Hash(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}Hash.prototype.update=function(e,t){\"string\"==typeof e&&(t=t||\"utf8\",e=n.from(e,t));for(var r=this._block,a=this._blockSize,o=e.length,s=this._len,l=0;l<o;){for(var i=s%a,c=Math.min(o-l,a-i),u=0;u<c;u++)r[i+u]=e[l+u];l+=c,(s+=c)%a==0&&this._update(r)}return this._len+=o,this},Hash.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,a=(r-n)/4294967296;this._block.writeUInt32BE(a,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},Hash.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},e.exports=Hash},412:function(e,t,r){var n,a=r(606);e.exports=Readable,Readable.ReadableState=ReadableState;r(7).EventEmitter;var o=function EElistenerCount(e,t){return e.listeners(t).length},s=r(345),l=r(287).Buffer,i=(void 0!==r.g?r.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var c,u=r(838);c=u&&u.debuglog?u.debuglog(\"stream\"):function debug(){};var d,p,m,f=r(726),h=r(896),g=r(291).getHighWaterMark,y=r(48).F,S=y.ERR_INVALID_ARG_TYPE,_=y.ERR_STREAM_PUSH_AFTER_EOF,v=y.ERR_METHOD_NOT_IMPLEMENTED,b=y.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(698)(Readable,s);var w=h.errorOrDestroy,C=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function ReadableState(e,t,a){n=n||r(382),e=e||{},\"boolean\"!=typeof a&&(a=t instanceof n),this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,\"readableHighWaterMark\",a),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(d||(d=r(141).I),this.decoder=new d(e.encoding),this.encoding=e.encoding)}function Readable(e){if(n=n||r(382),!(this instanceof Readable))return new Readable(e);var t=this instanceof n;this._readableState=new ReadableState(e,this,t),this.readable=!0,e&&(\"function\"==typeof e.read&&(this._read=e.read),\"function\"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function readableAddChunk(e,t,r,n,a){c(\"readableAddChunk\",t);var o,s=e._readableState;if(null===t)s.reading=!1,function onEofChunk(e,t){if(c(\"onEofChunk\"),t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?emitReadable(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,emitReadable_(e)))}(e,s);else if(a||(o=function chunkInvalid(e,t){var r;(function _isUint8Array(e){return l.isBuffer(e)||e instanceof i})(t)||\"string\"==typeof t||void 0===t||e.objectMode||(r=new S(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],t));return r}(s,t)),o)w(e,o);else if(s.objectMode||t&&t.length>0)if(\"string\"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function _uint8ArrayToBuffer(e){return l.from(e)}(t)),n)s.endEmitted?w(e,new b):addChunk(e,s,t,!0);else if(s.ended)w(e,new _);else{if(s.destroyed)return!1;s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?addChunk(e,s,t,!1):maybeReadMore(e,s)):addChunk(e,s,t,!1)}else n||(s.reading=!1,maybeReadMore(e,s));return!s.ended&&(s.length<s.highWaterMark||0===s.length)}function addChunk(e,t,r,n){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit(\"data\",r)):(t.length+=t.objectMode?1:r.length,n?t.buffer.unshift(r):t.buffer.push(r),t.needReadable&&emitReadable(e)),maybeReadMore(e,t)}Object.defineProperty(Readable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&this._readableState.destroyed},set:function set(e){this._readableState&&(this._readableState.destroyed=e)}}),Readable.prototype.destroy=h.destroy,Readable.prototype._undestroy=h.undestroy,Readable.prototype._destroy=function(e,t){t(e)},Readable.prototype.push=function(e,t){var r,n=this._readableState;return n.objectMode?r=!0:\"string\"==typeof e&&((t=t||n.defaultEncoding)!==n.encoding&&(e=l.from(e,t),t=\"\"),r=!0),readableAddChunk(this,e,t,!1,r)},Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,!0,!1)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(e){d||(d=r(141).I);var t=new d(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;for(var n=this._readableState.buffer.head,a=\"\";null!==n;)a+=t.write(n.data),n=n.next;return this._readableState.buffer.clear(),\"\"!==a&&this._readableState.buffer.push(a),this._readableState.length=a.length,this};var x=1073741824;function howMuchToRead(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function computeNewHighWaterMark(e){return e>=x?e=x:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function emitReadable(e){var t=e._readableState;c(\"emitReadable\",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,a.nextTick(emitReadable_,e))}function emitReadable_(e){var t=e._readableState;c(\"emitReadable_\",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit(\"readable\"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,flow(e)}function maybeReadMore(e,t){t.readingMore||(t.readingMore=!0,a.nextTick(maybeReadMore_,e,t))}function maybeReadMore_(e,t){for(;!t.reading&&!t.ended&&(t.length<t.highWaterMark||t.flowing&&0===t.length);){var r=t.length;if(c(\"maybeReadMore read 0\"),e.read(0),r===t.length)break}t.readingMore=!1}function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount(\"readable\")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount(\"data\")>0&&e.resume()}function nReadingNextTick(e){c(\"readable nexttick read 0\"),e.read(0)}function resume_(e,t){c(\"resume\",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit(\"resume\"),flow(e),t.flowing&&!t.reading&&e.read(0)}function flow(e){var t=e._readableState;for(c(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function fromList(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function endReadable(e){var t=e._readableState;c(\"endReadable\",t.endEmitted),t.endEmitted||(t.ended=!0,a.nextTick(endReadableNT,t,e))}function endReadableNT(e,t){if(c(\"endReadableNT\",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function indexOf(e,t){for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}Readable.prototype.read=function(e){c(\"read\",e),e=parseInt(e,10);var t=this._readableState,r=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&((0!==t.highWaterMark?t.length>=t.highWaterMark:t.length>0)||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?endReadable(this):emitReadable(this),null;if(0===(e=howMuchToRead(e,t))&&t.ended)return 0===t.length&&endReadable(this),null;var n,a=t.needReadable;return c(\"need readable\",a),(0===t.length||t.length-e<t.highWaterMark)&&c(\"length less than watermark\",a=!0),t.ended||t.reading?c(\"reading or ended\",a=!1):a&&(c(\"do read\"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=howMuchToRead(r,t))),null===(n=e>0?fromList(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&endReadable(this)),null!==n&&this.emit(\"data\",n),n},Readable.prototype._read=function(e){w(this,new v(\"_read()\"))},Readable.prototype.pipe=function(e,t){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=e;break;case 1:n.pipes=[n.pipes,e];break;default:n.pipes.push(e)}n.pipesCount+=1,c(\"pipe count=%d opts=%j\",n.pipesCount,t);var s=(!t||!1!==t.end)&&e!==a.stdout&&e!==a.stderr?onend:unpipe;function onunpipe(t,a){c(\"onunpipe\"),t===r&&a&&!1===a.hasUnpiped&&(a.hasUnpiped=!0,function cleanup(){c(\"cleanup\"),e.removeListener(\"close\",onclose),e.removeListener(\"finish\",onfinish),e.removeListener(\"drain\",l),e.removeListener(\"error\",onerror),e.removeListener(\"unpipe\",onunpipe),r.removeListener(\"end\",onend),r.removeListener(\"end\",unpipe),r.removeListener(\"data\",ondata),i=!0,!n.awaitDrain||e._writableState&&!e._writableState.needDrain||l()}())}function onend(){c(\"onend\"),e.end()}n.endEmitted?a.nextTick(s):r.once(\"end\",s),e.on(\"unpipe\",onunpipe);var l=function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,\"data\")&&(t.flowing=!0,flow(e))}}(r);e.on(\"drain\",l);var i=!1;function ondata(t){c(\"ondata\");var a=e.write(t);c(\"dest.write\",a),!1===a&&((1===n.pipesCount&&n.pipes===e||n.pipesCount>1&&-1!==indexOf(n.pipes,e))&&!i&&(c(\"false write response, pause\",n.awaitDrain),n.awaitDrain++),r.pause())}function onerror(t){c(\"onerror\",t),unpipe(),e.removeListener(\"error\",onerror),0===o(e,\"error\")&&w(e,t)}function onclose(){e.removeListener(\"finish\",onfinish),unpipe()}function onfinish(){c(\"onfinish\"),e.removeListener(\"close\",onclose),unpipe()}function unpipe(){c(\"unpipe\"),r.unpipe(e)}return r.on(\"data\",ondata),function prependListener(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",onerror),e.once(\"close\",onclose),e.once(\"finish\",onfinish),e.emit(\"pipe\",r),n.flowing||(c(\"pipe resume\"),r.resume()),e},Readable.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<a;o++)n[o].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var s=indexOf(t.pipes,e);return-1===s||(t.pipes.splice(s,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit(\"unpipe\",this,r)),this},Readable.prototype.on=function(e,t){var r=s.prototype.on.call(this,e,t),n=this._readableState;return\"data\"===e?(n.readableListening=this.listenerCount(\"readable\")>0,!1!==n.flowing&&this.resume()):\"readable\"===e&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,c(\"on readable\",n.length,n.reading),n.length?emitReadable(this):n.reading||a.nextTick(nReadingNextTick,this))),r},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.removeListener=function(e,t){var r=s.prototype.removeListener.call(this,e,t);return\"readable\"===e&&a.nextTick(updateReadableListening,this),r},Readable.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==e&&void 0!==e||a.nextTick(updateReadableListening,this),t},Readable.prototype.resume=function(){var e=this._readableState;return e.flowing||(c(\"resume\"),e.flowing=!e.readableListening,function resume(e,t){t.resumeScheduled||(t.resumeScheduled=!0,a.nextTick(resume_,e,t))}(this,e)),e.paused=!1,this},Readable.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},Readable.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var a in e.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(a){(c(\"wrapped data\"),r.decoder&&(a=r.decoder.write(a)),r.objectMode&&null==a)||(r.objectMode||a&&a.length)&&(t.push(a)||(n=!0,e.pause()))})),e)void 0===this[a]&&\"function\"==typeof e[a]&&(this[a]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(a));for(var o=0;o<C.length;o++)e.on(C[o],this.emit.bind(this,C[o]));return this._read=function(t){c(\"wrapped _read\",t),n&&(n=!1,e.resume())},this},\"function\"==typeof Symbol&&(Readable.prototype[Symbol.asyncIterator]=function(){return void 0===p&&(p=r(955)),p(this)}),Object.defineProperty(Readable.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function get(){return this._readableState.highWaterMark}}),Object.defineProperty(Readable.prototype,\"readableBuffer\",{enumerable:!1,get:function get(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(Readable.prototype,\"readableFlowing\",{enumerable:!1,get:function get(){return this._readableState.flowing},set:function set(e){this._readableState&&(this._readableState.flowing=e)}}),Readable._fromList=fromList,Object.defineProperty(Readable.prototype,\"readableLength\",{enumerable:!1,get:function get(){return this._readableState.length}}),\"function\"==typeof Symbol&&(Readable.from=function(e,t){return void 0===m&&(m=r(157)),m(Readable,e,t)})},499:function(e){var t={\"&\":\"&amp;\",'\"':\"&quot;\",\"'\":\"&apos;\",\"<\":\"&lt;\",\">\":\"&gt;\"};e.exports=function escapeForXML(e){return e&&e.replace?e.replace(/([&\"<>'])/g,(function(e,r){return t[r]})):e}},600:function(e,t,r){e.exports=PassThrough;var n=r(610);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);n.call(this,e)}r(698)(PassThrough,n),PassThrough.prototype._transform=function(e,t,r){r(null,e)}},606:function(e){var t,r,n=e.exports={};function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(e){if(t===setTimeout)return setTimeout(e,0);if((t===defaultSetTimout||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){t=defaultSetTimout}try{r=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){r=defaultClearTimeout}}();var a,o=[],s=!1,l=-1;function cleanUpNextTick(){s&&a&&(s=!1,a.length?o=a.concat(o):l=-1,o.length&&drainQueue())}function drainQueue(){if(!s){var e=runTimeout(cleanUpNextTick);s=!0;for(var t=o.length;t;){for(a=o,o=[];++l<t;)a&&a[l].run();l=-1,t=o.length}a=null,s=!1,function runClearTimeout(e){if(r===clearTimeout)return clearTimeout(e);if((r===defaultClearTimeout||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];o.push(new Item(e,t)),1!==o.length||s||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},n.title=\"browser\",n.browser=!0,n.env={},n.argv=[],n.version=\"\",n.versions={},n.on=noop,n.addListener=noop,n.once=noop,n.off=noop,n.removeListener=noop,n.removeAllListeners=noop,n.emit=noop,n.prependListener=noop,n.prependOnceListener=noop,n.listeners=function(e){return[]},n.binding=function(e){throw new Error(\"process.binding is not supported\")},n.cwd=function(){return\"/\"},n.chdir=function(e){throw new Error(\"process.chdir is not supported\")},n.umask=function(){return 0}},610:function(e,t,r){e.exports=Transform;var n=r(48).F,a=n.ERR_METHOD_NOT_IMPLEMENTED,o=n.ERR_MULTIPLE_CALLBACK,s=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,l=n.ERR_TRANSFORM_WITH_LENGTH_0,i=r(382);function afterTransform(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(null===n)return this.emit(\"error\",new o);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),n(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function Transform(e){if(!(this instanceof Transform))return new Transform(e);i.call(this,e),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&(\"function\"==typeof e.transform&&(this._transform=e.transform),\"function\"==typeof e.flush&&(this._flush=e.flush)),this.on(\"prefinish\",prefinish)}function prefinish(){var e=this;\"function\"!=typeof this._flush||this._readableState.destroyed?done(this,null,null):this._flush((function(t,r){done(e,t,r)}))}function done(e,t,r){if(t)return e.emit(\"error\",t);if(null!=r&&e.push(r),e._writableState.length)throw new l;if(e._transformState.transforming)throw new s;return e.push(null)}r(698)(Transform,i),Transform.prototype.push=function(e,t){return this._transformState.needTransform=!1,i.prototype.push.call(this,e,t)},Transform.prototype._transform=function(e,t,r){r(new a(\"_transform()\"))},Transform.prototype._write=function(e,t,r){var n=this._transformState;if(n.writecb=r,n.writechunk=e,n.writeencoding=t,!n.transforming){var a=this._readableState;(n.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}},Transform.prototype._read=function(e){var t=this._transformState;null===t.writechunk||t.transforming?t.needTransform=!0:(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform))},Transform.prototype._destroy=function(e,t){i.prototype._destroy.call(this,e,(function(e){t(e)}))}},643:function(e,t,r){function config(e){try{if(!r.g.localStorage)return!1}catch(e){return!1}var t=r.g.localStorage[e];return null!=t&&\"true\"===String(t).toLowerCase()}e.exports=function deprecate(e,t){if(config(\"noDeprecation\"))return e;var r=!1;return function deprecated(){if(!r){if(config(\"throwDeprecation\"))throw new Error(t);config(\"traceDeprecation\")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}},698:function(e){\"function\"==typeof Object.create?e.exports=function inherits(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype,e.prototype=new TempCtor,e.prototype.constructor=e}}},708:function(e,t,r){var n,a=r(606);function CorkedRequest(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(e,t,r){var n=e.entry;e.entry=null;for(;n;){var a=n.callback;t.pendingcb--,a(r),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}e.exports=Writable,Writable.WritableState=WritableState;var o={deprecate:r(643)},s=r(345),l=r(287).Buffer,i=(void 0!==r.g?r.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var c,u=r(896),d=r(291).getHighWaterMark,p=r(48).F,m=p.ERR_INVALID_ARG_TYPE,f=p.ERR_METHOD_NOT_IMPLEMENTED,h=p.ERR_MULTIPLE_CALLBACK,g=p.ERR_STREAM_CANNOT_PIPE,y=p.ERR_STREAM_DESTROYED,S=p.ERR_STREAM_NULL_VALUES,_=p.ERR_STREAM_WRITE_AFTER_END,v=p.ERR_UNKNOWN_ENCODING,b=u.errorOrDestroy;function nop(){}function WritableState(e,t,o){n=n||r(382),e=e||{},\"boolean\"!=typeof o&&(o=t instanceof n),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=d(this,e,\"writableHighWaterMark\",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function onwrite(e,t){var r=e._writableState,n=r.sync,o=r.writecb;if(\"function\"!=typeof o)throw new h;if(function onwriteStateUpdate(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function onwriteError(e,t,r,n,o){--t.pendingcb,r?(a.nextTick(o,n),a.nextTick(finishMaybe,e,t),e._writableState.errorEmitted=!0,b(e,n)):(o(n),e._writableState.errorEmitted=!0,b(e,n),finishMaybe(e,t))}(e,r,n,t,o);else{var s=needFinish(r)||e.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||clearBuffer(e,r),n?a.nextTick(afterWrite,e,r,s,o):afterWrite(e,r,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(e){var t=this instanceof(n=n||r(382));if(!t&&!c.call(Writable,this))return new Writable(e);this._writableState=new WritableState(e,this,t),this.writable=!0,e&&(\"function\"==typeof e.write&&(this._write=e.write),\"function\"==typeof e.writev&&(this._writev=e.writev),\"function\"==typeof e.destroy&&(this._destroy=e.destroy),\"function\"==typeof e.final&&(this._final=e.final)),s.call(this)}function doWrite(e,t,r,n,a,o,s){t.writelen=n,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new y(\"write\")):r?e._writev(a,t.onwrite):e._write(a,o,t.onwrite),t.sync=!1}function afterWrite(e,t,r,n){r||function onwriteDrain(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),finishMaybe(e,t)}function clearBuffer(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,a=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var s=0,l=!0;r;)a[s]=r,r.isBuf||(l=!1),r=r.next,s+=1;a.allBuffers=l,doWrite(e,t,!0,t.length,a,\"\",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new CorkedRequest(t),t.bufferedRequestCount=0}else{for(;r;){var i=r.chunk,c=r.encoding,u=r.callback;if(doWrite(e,t,!1,t.objectMode?1:i.length,i,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function needFinish(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function callFinal(e,t){e._final((function(r){t.pendingcb--,r&&b(e,r),t.prefinished=!0,e.emit(\"prefinish\"),finishMaybe(e,t)}))}function finishMaybe(e,t){var r=needFinish(t);if(r&&(function prefinish(e,t){t.prefinished||t.finalCalled||(\"function\"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit(\"prefinish\")):(t.pendingcb++,t.finalCalled=!0,a.nextTick(callFinal,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"),t.autoDestroy))){var n=e._readableState;(!n||n.autoDestroy&&n.endEmitted)&&e.destroy()}return r}r(698)(Writable,s),WritableState.prototype.getBuffer=function getBuffer(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(WritableState.prototype,\"buffer\",{get:o.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(e){return!!c.call(this,e)||this===Writable&&(e&&e._writableState instanceof WritableState)}})):c=function realHasInstance(e){return e instanceof this},Writable.prototype.pipe=function(){b(this,new g)},Writable.prototype.write=function(e,t,r){var n=this._writableState,o=!1,s=!n.objectMode&&function _isUint8Array(e){return l.isBuffer(e)||e instanceof i}(e);return s&&!l.isBuffer(e)&&(e=function _uint8ArrayToBuffer(e){return l.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=n.defaultEncoding),\"function\"!=typeof r&&(r=nop),n.ending?function writeAfterEnd(e,t){var r=new _;b(e,r),a.nextTick(t,r)}(this,r):(s||function validChunk(e,t,r,n){var o;return null===r?o=new S:\"string\"==typeof r||t.objectMode||(o=new m(\"chunk\",[\"string\",\"Buffer\"],r)),!o||(b(e,o),a.nextTick(n,o),!1)}(this,n,e,r))&&(n.pendingcb++,o=function writeOrBuffer(e,t,r,n,a,o){if(!r){var s=function decodeChunk(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=l.from(t,r));return t}(t,n,a);n!==s&&(r=!0,a=\"buffer\",n=s)}var i=t.objectMode?1:n.length;t.length+=i;var c=t.length<t.highWaterMark;c||(t.needDrain=!0);if(t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:n,encoding:a,isBuf:r,callback:o,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else doWrite(e,t,!1,i,n,a,o);return c}(this,n,s,e,t,r)),o},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||clearBuffer(this,e))},Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(\"string\"==typeof e&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(e,t,r){r(new f(\"_write()\"))},Writable.prototype._writev=null,Writable.prototype.end=function(e,t,r){var n=this._writableState;return\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||function endWritable(e,t,r){t.ending=!0,finishMaybe(e,t),r&&(t.finished?a.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r),this},Object.defineProperty(Writable.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(e){this._writableState&&(this._writableState.destroyed=e)}}),Writable.prototype.destroy=u.destroy,Writable.prototype._undestroy=u.undestroy,Writable.prototype._destroy=function(e,t){t(e)}},710:function(e,t,r){var n=r(698),a=r(107),o=r(392),s=r(861).Buffer,l=new Array(64);function Sha224(){this.init(),this._w=l,o.call(this,64,56)}n(Sha224,a),Sha224.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},Sha224.prototype._hash=function(){var e=s.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=Sha224},726:function(e,t,r){function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,_toPropertyKey(n.key),n)}}function _toPropertyKey(e){var t=function _toPrimitive(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}var n=r(287).Buffer,a=r(340).inspect,o=a&&a.custom||\"inspect\";function copyBuffer(e,t,r){n.prototype.copy.call(e,t,r)}e.exports=function(){function BufferList(){!function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,BufferList),this.head=null,this.tail=null,this.length=0}return function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,\"prototype\",{writable:!1}),e}(BufferList,[{key:\"push\",value:function push(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:\"unshift\",value:function unshift(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:\"shift\",value:function shift(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:\"clear\",value:function clear(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function join(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r}},{key:\"concat\",value:function concat(e){if(0===this.length)return n.alloc(0);for(var t=n.allocUnsafe(e>>>0),r=this.head,a=0;r;)copyBuffer(r.data,t,a),a+=r.data.length,r=r.next;return t}},{key:\"consume\",value:function consume(e,t){var r;return e<this.head.data.length?(r=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):r=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),r}},{key:\"first\",value:function first(){return this.head.data}},{key:\"_getString\",value:function _getString(e){var t=this.head,r=1,n=t.data;for(e-=n.length;t=t.next;){var a=t.data,o=e>a.length?a.length:e;if(o===a.length?n+=a:n+=a.slice(0,e),0===(e-=o)){o===a.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=a.slice(o));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function _getBuffer(e){var t=n.allocUnsafe(e),r=this.head,a=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var o=r.data,s=e>o.length?o.length:e;if(o.copy(t,t.length-e,0,s),0===(e-=s)){s===o.length?(++a,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(s));break}++a}return this.length-=a,t}},{key:o,value:function value(e,t){return a(this,_objectSpread(_objectSpread({},t),{},{depth:0,customInspect:!1}))}}]),BufferList}()},737:function(e,t,r){var n=r(698),a=r(392),o=r(861).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],l=new Array(80);function Sha1(){this.init(),this._w=l,a.call(this,64,56)}function rotl5(e){return e<<5|e>>>27}function rotl30(e){return e<<30|e>>>2}function ft(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(Sha1,a),Sha1.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha1.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,a=0|this._b,o=0|this._c,l=0|this._d,i=0|this._e,c=0;c<16;++c)r[c]=e.readInt32BE(4*c);for(;c<80;++c)r[c]=(t=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|t>>>31;for(var u=0;u<80;++u){var d=~~(u/20),p=rotl5(n)+ft(d,a,o,l)+i+r[u]+s[d]|0;i=l,l=o,o=rotl30(a),a=n,n=p}this._a=n+this._a|0,this._b=a+this._b|0,this._c=o+this._c|0,this._d=l+this._d|0,this._e=i+this._e|0},Sha1.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=Sha1},758:function(e,t,r){var n;var a=r(48).F,o=a.ERR_MISSING_ARGS,s=a.ERR_STREAM_DESTROYED;function noop(e){if(e)throw e}function call(e){e()}function pipe(e,t){return e.pipe(t)}e.exports=function pipeline(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];var l,i=function popCallback(e){return e.length?\"function\"!=typeof e[e.length-1]?noop:e.pop():noop}(t);if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new o(\"streams\");var c=t.map((function(e,a){var o=a<t.length-1;return function destroyer(e,t,a,o){o=function once(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(o);var l=!1;e.on(\"close\",(function(){l=!0})),void 0===n&&(n=r(238)),n(e,{readable:t,writable:a},(function(e){if(e)return o(e);l=!0,o()}));var i=!1;return function(t){if(!l&&!i)return i=!0,function isRequest(e){return e.setHeader&&\"function\"==typeof e.abort}(e)?e.abort():\"function\"==typeof e.destroy?e.destroy():void o(t||new s(\"pipe\"))}}(e,o,a>0,(function(e){l||(l=e),e&&c.forEach(call),o||(c.forEach(call),i(l))}))}));return t.reduce(pipe)}},802:function(e,t,r){var n=e.exports=function SHA(e){e=e.toLowerCase();var t=n[e];if(!t)throw new Error(e+\" is not supported (we accept pull requests)\");return new t};n.sha=r(816),n.sha1=r(737),n.sha224=r(710),n.sha256=r(107),n.sha384=r(827),n.sha512=r(890)},816:function(e,t,r){var n=r(698),a=r(392),o=r(861).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],l=new Array(80);function Sha(){this.init(),this._w=l,a.call(this,64,56)}function rotl30(e){return e<<30|e>>>2}function ft(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(Sha,a),Sha.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,a=0|this._b,o=0|this._c,l=0|this._d,i=0|this._e,c=0;c<16;++c)r[c]=e.readInt32BE(4*c);for(;c<80;++c)r[c]=r[c-3]^r[c-8]^r[c-14]^r[c-16];for(var u=0;u<80;++u){var d=~~(u/20),p=0|((t=n)<<5|t>>>27)+ft(d,a,o,l)+i+r[u]+s[d];i=l,l=o,o=rotl30(a),a=n,n=p}this._a=n+this._a|0,this._b=a+this._b|0,this._c=o+this._c|0,this._d=l+this._d|0,this._e=i+this._e|0},Sha.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=Sha},827:function(e,t,r){var n=r(698),a=r(890),o=r(392),s=r(861).Buffer,l=new Array(160);function Sha384(){this.init(),this._w=l,o.call(this,128,112)}n(Sha384,a),Sha384.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},Sha384.prototype._hash=function(){var e=s.allocUnsafe(48);function writeInt64BE(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),e},e.exports=Sha384},838:function(){},861:function(e,t,r){var n=r(287),a=n.Buffer;function copyProps(e,t){for(var r in e)t[r]=e[r]}function SafeBuffer(e,t,r){return a(e,t,r)}a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?e.exports=n:(copyProps(n,t),t.Buffer=SafeBuffer),SafeBuffer.prototype=Object.create(a.prototype),copyProps(a,SafeBuffer),SafeBuffer.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return a(e,t,r)},SafeBuffer.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=a(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},SafeBuffer.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return a(e)},SafeBuffer.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},890:function(e,t,r){var n=r(698),a=r(392),o=r(861).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],l=new Array(160);function Sha512(){this.init(),this._w=l,a.call(this,128,112)}function Ch(e,t,r){return r^e&(t^r)}function maj(e,t,r){return e&t|r&(e|t)}function sigma0(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function sigma1(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function Gamma0(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function Gamma0l(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function Gamma1(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function Gamma1l(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function getCarry(e,t){return e>>>0<t>>>0?1:0}n(Sha512,a),Sha512.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},Sha512.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,a=0|this._ch,o=0|this._dh,l=0|this._eh,i=0|this._fh,c=0|this._gh,u=0|this._hh,d=0|this._al,p=0|this._bl,m=0|this._cl,f=0|this._dl,h=0|this._el,g=0|this._fl,y=0|this._gl,S=0|this._hl,_=0;_<32;_+=2)t[_]=e.readInt32BE(4*_),t[_+1]=e.readInt32BE(4*_+4);for(;_<160;_+=2){var v=t[_-30],b=t[_-30+1],w=Gamma0(v,b),C=Gamma0l(b,v),x=Gamma1(v=t[_-4],b=t[_-4+1]),O=Gamma1l(b,v),k=t[_-14],N=t[_-14+1],A=t[_-32],I=t[_-32+1],j=C+N|0,R=w+k+getCarry(j,C)|0;R=(R=R+x+getCarry(j=j+O|0,O)|0)+A+getCarry(j=j+I|0,I)|0,t[_]=R,t[_+1]=j}for(var T=0;T<160;T+=2){R=t[T],j=t[T+1];var P=maj(r,n,a),B=maj(d,p,m),M=sigma0(r,d),q=sigma0(d,r),L=sigma1(l,h),U=sigma1(h,l),D=s[T],$=s[T+1],V=Ch(l,i,c),J=Ch(h,g,y),F=S+U|0,z=u+L+getCarry(F,S)|0;z=(z=(z=z+V+getCarry(F=F+J|0,J)|0)+D+getCarry(F=F+$|0,$)|0)+R+getCarry(F=F+j|0,j)|0;var K=q+B|0,W=M+P+getCarry(K,q)|0;u=c,S=y,c=i,y=g,i=l,g=h,l=o+z+getCarry(h=f+F|0,f)|0,o=a,f=m,a=n,m=p,n=r,p=d,r=z+W+getCarry(d=F+K|0,F)|0}this._al=this._al+d|0,this._bl=this._bl+p|0,this._cl=this._cl+m|0,this._dl=this._dl+f|0,this._el=this._el+h|0,this._fl=this._fl+g|0,this._gl=this._gl+y|0,this._hl=this._hl+S|0,this._ah=this._ah+r+getCarry(this._al,d)|0,this._bh=this._bh+n+getCarry(this._bl,p)|0,this._ch=this._ch+a+getCarry(this._cl,m)|0,this._dh=this._dh+o+getCarry(this._dl,f)|0,this._eh=this._eh+l+getCarry(this._el,h)|0,this._fh=this._fh+i+getCarry(this._fl,g)|0,this._gh=this._gh+c+getCarry(this._gl,y)|0,this._hh=this._hh+u+getCarry(this._hl,S)|0},Sha512.prototype._hash=function(){var e=o.allocUnsafe(64);function writeInt64BE(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),writeInt64BE(this._gh,this._gl,48),writeInt64BE(this._hh,this._hl,56),e},e.exports=Sha512},896:function(e,t,r){var n=r(606);function emitErrorAndCloseNT(e,t){emitErrorNT(e,t),emitCloseNT(e)}function emitCloseNT(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit(\"close\")}function emitErrorNT(e,t){e.emit(\"error\",t)}e.exports={destroy:function destroy(e,t){var r=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(emitErrorNT,this,e)):n.nextTick(emitErrorNT,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?r._writableState?r._writableState.errorEmitted?n.nextTick(emitCloseNT,r):(r._writableState.errorEmitted=!0,n.nextTick(emitErrorAndCloseNT,r,e)):n.nextTick(emitErrorAndCloseNT,r,e):t?(n.nextTick(emitCloseNT,r),t(e)):n.nextTick(emitCloseNT,r)})),this)},undestroy:function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function errorOrDestroy(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit(\"error\",t)}}},919:function(e,t,r){var n=r(287).Buffer;function isSpecificValue(e){return e instanceof n||e instanceof Date||e instanceof RegExp}function cloneSpecificValue(e){if(e instanceof n){var t=n.alloc?n.alloc(e.length):new n(e.length);return e.copy(t),t}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);throw new Error(\"Unexpected situation\")}function deepCloneArray(e){var t=[];return e.forEach((function(e,r){\"object\"==typeof e&&null!==e?Array.isArray(e)?t[r]=deepCloneArray(e):isSpecificValue(e)?t[r]=cloneSpecificValue(e):t[r]=a({},e):t[r]=e})),t}function safeGetProperty(e,t){return\"__proto__\"===t?void 0:e[t]}var a=e.exports=function(){if(arguments.length<1||\"object\"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var e,t,r=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(n){\"object\"!=typeof n||null===n||Array.isArray(n)||Object.keys(n).forEach((function(o){return t=safeGetProperty(r,o),(e=safeGetProperty(n,o))===r?void 0:\"object\"!=typeof e||null===e?void(r[o]=e):Array.isArray(e)?void(r[o]=deepCloneArray(e)):isSpecificValue(e)?void(r[o]=cloneSpecificValue(e)):\"object\"!=typeof t||null===t||Array.isArray(t)?void(r[o]=a({},e)):void(r[o]=a(t,e))}))})),r}},955:function(e,t,r){var n,a=r(606);function _defineProperty(e,t,r){return(t=function _toPropertyKey(e){var t=function _toPrimitive(e,t){if(\"object\"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!=typeof n)return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=r(238),s=Symbol(\"lastResolve\"),l=Symbol(\"lastReject\"),i=Symbol(\"error\"),c=Symbol(\"ended\"),u=Symbol(\"lastPromise\"),d=Symbol(\"handlePromise\"),p=Symbol(\"stream\");function createIterResult(e,t){return{value:e,done:t}}function readAndResolve(e){var t=e[s];if(null!==t){var r=e[p].read();null!==r&&(e[u]=null,e[s]=null,e[l]=null,t(createIterResult(r,!1)))}}function onReadable(e){a.nextTick(readAndResolve,e)}var m=Object.getPrototypeOf((function(){})),f=Object.setPrototypeOf((_defineProperty(n={get stream(){return this[p]},next:function next(){var e=this,t=this[i];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(createIterResult(void 0,!0));if(this[p].destroyed)return new Promise((function(t,r){a.nextTick((function(){e[i]?r(e[i]):t(createIterResult(void 0,!0))}))}));var r,n=this[u];if(n)r=new Promise(function wrapForNext(e,t){return function(r,n){e.then((function(){t[c]?r(createIterResult(void 0,!0)):t[d](r,n)}),n)}}(n,this));else{var o=this[p].read();if(null!==o)return Promise.resolve(createIterResult(o,!1));r=new Promise(this[d])}return this[u]=r,r}},Symbol.asyncIterator,(function(){return this})),_defineProperty(n,\"return\",(function _return(){var e=this;return new Promise((function(t,r){e[p].destroy(null,(function(e){e?r(e):t(createIterResult(void 0,!0))}))}))})),n),m);e.exports=function createReadableStreamAsyncIterator(e){var t,r=Object.create(f,(_defineProperty(t={},p,{value:e,writable:!0}),_defineProperty(t,s,{value:null,writable:!0}),_defineProperty(t,l,{value:null,writable:!0}),_defineProperty(t,i,{value:null,writable:!0}),_defineProperty(t,c,{value:e._readableState.endEmitted,writable:!0}),_defineProperty(t,d,{value:function value(e,t){var n=r[p].read();n?(r[u]=null,r[s]=null,r[l]=null,e(createIterResult(n,!1))):(r[s]=e,r[l]=t)},writable:!0}),t));return r[u]=null,o(e,(function(e){if(e&&\"ERR_STREAM_PREMATURE_CLOSE\"!==e.code){var t=r[l];return null!==t&&(r[u]=null,r[s]=null,r[l]=null,t(e)),void(r[i]=e)}var n=r[s];null!==n&&(r[u]=null,r[s]=null,r[l]=null,n(createIterResult(void 0,!0))),r[c]=!0})),e.on(\"readable\",onReadable.bind(null,r)),r}},987:function(e){e.exports=t}},Ce={};function __webpack_require__(e){var t=Ce[e];if(void 0!==t)return t.exports;var r=Ce[e]={exports:{}};return we[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(e){if(\"object\"==typeof window)return window}}(),__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var xe={};__webpack_require__.d(xe,{A:function(){return Zs}});var Oe={};__webpack_require__.r(Oe),__webpack_require__.d(Oe,{CLEAR:function(){return lt},CLEAR_BY:function(){return it},NEW_AUTH_ERR:function(){return st},NEW_SPEC_ERR:function(){return at},NEW_SPEC_ERR_BATCH:function(){return ot},NEW_THROWN_ERR:function(){return rt},NEW_THROWN_ERR_BATCH:function(){return nt},clear:function(){return clear},clearBy:function(){return clearBy},newAuthErr:function(){return newAuthErr},newSpecErr:function(){return newSpecErr},newSpecErrBatch:function(){return newSpecErrBatch},newThrownErr:function(){return newThrownErr},newThrownErrBatch:function(){return newThrownErrBatch}});var ke={};__webpack_require__.r(ke),__webpack_require__.d(ke,{AUTHORIZE:function(){return Nt},AUTHORIZE_OAUTH2:function(){return It},CONFIGURE_AUTH:function(){return jt},LOGOUT:function(){return At},RESTORE_AUTHORIZATION:function(){return Rt},SHOW_AUTH_POPUP:function(){return kt},authPopup:function(){return authPopup},authorize:function(){return authorize},authorizeAccessCodeWithBasicAuthentication:function(){return authorizeAccessCodeWithBasicAuthentication},authorizeAccessCodeWithFormParams:function(){return authorizeAccessCodeWithFormParams},authorizeApplication:function(){return authorizeApplication},authorizeOauth2:function(){return authorizeOauth2},authorizeOauth2WithPersistOption:function(){return authorizeOauth2WithPersistOption},authorizePassword:function(){return authorizePassword},authorizeRequest:function(){return authorizeRequest},authorizeWithPersistOption:function(){return authorizeWithPersistOption},configureAuth:function(){return configureAuth},logout:function(){return logout},logoutWithPersistOption:function(){return logoutWithPersistOption},persistAuthorizationIfNeeded:function(){return persistAuthorizationIfNeeded},preAuthorizeImplicit:function(){return preAuthorizeImplicit},restoreAuthorization:function(){return restoreAuthorization},showDefinitions:function(){return showDefinitions}});var Ne={};__webpack_require__.r(Ne),__webpack_require__.d(Ne,{authorized:function(){return qt},definitionsForRequirements:function(){return definitionsForRequirements},definitionsToAuthorize:function(){return Mt},getConfigs:function(){return Lt},getDefinitionsByNames:function(){return getDefinitionsByNames},isAuthorized:function(){return isAuthorized},selectAuthPath:function(){return selectAuthPath},shownDefinitions:function(){return Bt}});var Ae={};__webpack_require__.r(Ae),__webpack_require__.d(Ae,{TOGGLE_CONFIGS:function(){return zt},UPDATE_CONFIGS:function(){return Ft},downloadConfig:function(){return downloadConfig},getConfigByUrl:function(){return getConfigByUrl},loaded:function(){return actions_loaded},toggle:function(){return toggle},update:function(){return update}});var Ie={};__webpack_require__.r(Ie),__webpack_require__.d(Ie,{get:function(){return get}});var je={};__webpack_require__.r(je),__webpack_require__.d(je,{transform:function(){return transform}});var Re={};__webpack_require__.r(Re),__webpack_require__.d(Re,{transform:function(){return parameter_oneof_transform}});var Te={};__webpack_require__.r(Te),__webpack_require__.d(Te,{allErrors:function(){return rr},lastError:function(){return nr}});var Pe={};__webpack_require__.r(Pe),__webpack_require__.d(Pe,{SHOW:function(){return ir},UPDATE_FILTER:function(){return sr},UPDATE_LAYOUT:function(){return or},UPDATE_MODE:function(){return lr},changeMode:function(){return changeMode},show:function(){return actions_show},updateFilter:function(){return updateFilter},updateLayout:function(){return updateLayout}});var Be={};__webpack_require__.r(Be),__webpack_require__.d(Be,{current:function(){return current},currentFilter:function(){return currentFilter},isShown:function(){return isShown},showSummary:function(){return ur},whatMode:function(){return whatMode}});var Me={};__webpack_require__.r(Me),__webpack_require__.d(Me,{taggedOperations:function(){return taggedOperations}});var qe={};__webpack_require__.r(qe),__webpack_require__.d(qe,{getActiveLanguage:function(){return mr},getDefaultExpanded:function(){return fr},getGenerators:function(){return pr},getSnippetGenerators:function(){return getSnippetGenerators}});var Le={};__webpack_require__.r(Le),__webpack_require__.d(Le,{JsonSchemaArrayItemFile:function(){return JsonSchemaArrayItemFile},JsonSchemaArrayItemText:function(){return JsonSchemaArrayItemText},JsonSchemaForm:function(){return JsonSchemaForm},JsonSchema_array:function(){return JsonSchema_array},JsonSchema_boolean:function(){return JsonSchema_boolean},JsonSchema_object:function(){return JsonSchema_object},JsonSchema_string:function(){return JsonSchema_string}});var Ue={};__webpack_require__.r(Ue),__webpack_require__.d(Ue,{allowTryItOutFor:function(){return allowTryItOutFor},basePath:function(){return ln},canExecuteScheme:function(){return canExecuteScheme},consumes:function(){return rn},consumesOptionsFor:function(){return consumesOptionsFor},contentTypeValues:function(){return contentTypeValues},currentProducesFor:function(){return currentProducesFor},definitions:function(){return sn},externalDocs:function(){return Xr},findDefinition:function(){return findDefinition},getOAS3RequiredRequestBodyContentType:function(){return getOAS3RequiredRequestBodyContentType},getParameter:function(){return getParameter},hasHost:function(){return yn},host:function(){return cn},info:function(){return Gr},isMediaTypeSchemaPropertiesEqual:function(){return isMediaTypeSchemaPropertiesEqual},isOAS3:function(){return Hr},lastError:function(){return Dr},mutatedRequestFor:function(){return mutatedRequestFor},mutatedRequests:function(){return gn},operationScheme:function(){return operationScheme},operationWithMeta:function(){return operationWithMeta},operations:function(){return tn},operationsWithRootInherited:function(){return dn},operationsWithTags:function(){return mn},parameterInclusionSettingFor:function(){return parameterInclusionSettingFor},parameterValues:function(){return parameterValues},parameterWithMeta:function(){return parameterWithMeta},parameterWithMetaByIdentity:function(){return parameterWithMetaByIdentity},parametersIncludeIn:function(){return parametersIncludeIn},parametersIncludeType:function(){return parametersIncludeType},paths:function(){return Zr},produces:function(){return nn},producesOptionsFor:function(){return producesOptionsFor},requestFor:function(){return requestFor},requests:function(){return hn},responseFor:function(){return responseFor},responses:function(){return fn},schemes:function(){return un},security:function(){return an},securityDefinitions:function(){return on},semver:function(){return Qr},spec:function(){return spec},specJS:function(){return zr},specJson:function(){return Fr},specJsonWithResolvedSubtrees:function(){return Wr},specResolved:function(){return Kr},specResolvedSubtree:function(){return specResolvedSubtree},specSource:function(){return Jr},specStr:function(){return Vr},tagDetails:function(){return tagDetails},taggedOperations:function(){return selectors_taggedOperations},tags:function(){return pn},url:function(){return $r},validOperationMethods:function(){return en},validateBeforeExecute:function(){return validateBeforeExecute},validationErrors:function(){return validationErrors},version:function(){return Yr}});var De={};__webpack_require__.r(De),__webpack_require__.d(De,{CLEAR_REQUEST:function(){return Tn},CLEAR_RESPONSE:function(){return Rn},CLEAR_VALIDATE_PARAMS:function(){return Pn},LOG_REQUEST:function(){return jn},SET_MUTATED_REQUEST:function(){return In},SET_REQUEST:function(){return An},SET_RESPONSE:function(){return Nn},SET_SCHEME:function(){return Ln},UPDATE_EMPTY_PARAM_INCLUSION:function(){return On},UPDATE_JSON:function(){return Cn},UPDATE_OPERATION_META_VALUE:function(){return Bn},UPDATE_PARAM:function(){return xn},UPDATE_RESOLVED:function(){return Mn},UPDATE_RESOLVED_SUBTREE:function(){return qn},UPDATE_SPEC:function(){return bn},UPDATE_URL:function(){return wn},VALIDATE_PARAMS:function(){return kn},changeConsumesValue:function(){return changeConsumesValue},changeParam:function(){return changeParam},changeParamByIdentity:function(){return changeParamByIdentity},changeProducesValue:function(){return changeProducesValue},clearRequest:function(){return clearRequest},clearResponse:function(){return clearResponse},clearValidateParams:function(){return clearValidateParams},execute:function(){return actions_execute},executeRequest:function(){return executeRequest},invalidateResolvedSubtreeCache:function(){return invalidateResolvedSubtreeCache},logRequest:function(){return logRequest},parseToJson:function(){return parseToJson},requestResolvedSubtree:function(){return requestResolvedSubtree},resolveSpec:function(){return resolveSpec},setMutatedRequest:function(){return setMutatedRequest},setRequest:function(){return setRequest},setResponse:function(){return setResponse},setScheme:function(){return setScheme},updateEmptyParamInclusion:function(){return updateEmptyParamInclusion},updateJsonSpec:function(){return updateJsonSpec},updateResolved:function(){return updateResolved},updateResolvedSubtree:function(){return updateResolvedSubtree},updateSpec:function(){return updateSpec},updateUrl:function(){return updateUrl},validateParams:function(){return validateParams}});var $e={};__webpack_require__.r($e),__webpack_require__.d($e,{executeRequest:function(){return wrap_actions_executeRequest},updateJsonSpec:function(){return wrap_actions_updateJsonSpec},updateSpec:function(){return wrap_actions_updateSpec},validateParams:function(){return wrap_actions_validateParams}});var Ve={};__webpack_require__.r(Ve),__webpack_require__.d(Ve,{Button:function(){return Button},Col:function(){return Col},Collapse:function(){return Collapse},Container:function(){return Container},Input:function(){return Input},Link:function(){return Link},Row:function(){return Row},Select:function(){return Select},TextArea:function(){return TextArea}});var Je={};__webpack_require__.r(Je),__webpack_require__.d(Je,{basePath:function(){return Ja},consumes:function(){return Fa},definitions:function(){return Ua},findDefinition:function(){return La},hasHost:function(){return Da},host:function(){return Va},produces:function(){return za},schemes:function(){return Ka},securityDefinitions:function(){return $a},validOperationMethods:function(){return wrap_selectors_validOperationMethods}});var Fe={};__webpack_require__.r(Fe),__webpack_require__.d(Fe,{definitionsToAuthorize:function(){return Wa}});var ze={};__webpack_require__.r(ze),__webpack_require__.d(ze,{callbacksOperations:function(){return Xa},findSchema:function(){return findSchema},isOAS3:function(){return selectors_isOAS3},isOAS30:function(){return selectors_isOAS30},isSwagger2:function(){return selectors_isSwagger2},servers:function(){return Ga}});var Ke={};__webpack_require__.r(Ke),__webpack_require__.d(Ke,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:function(){return yo},CLEAR_REQUEST_BODY_VALUE:function(){return Eo},SET_REQUEST_BODY_VALIDATE_ERROR:function(){return go},UPDATE_ACTIVE_EXAMPLES_MEMBER:function(){return po},UPDATE_REQUEST_BODY_INCLUSION:function(){return uo},UPDATE_REQUEST_BODY_VALUE:function(){return io},UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:function(){return co},UPDATE_REQUEST_CONTENT_TYPE:function(){return mo},UPDATE_RESPONSE_CONTENT_TYPE:function(){return fo},UPDATE_SELECTED_SERVER:function(){return lo},UPDATE_SERVER_VARIABLE_VALUE:function(){return ho},clearRequestBodyValidateError:function(){return clearRequestBodyValidateError},clearRequestBodyValue:function(){return clearRequestBodyValue},initRequestBodyValidateError:function(){return initRequestBodyValidateError},setActiveExamplesMember:function(){return setActiveExamplesMember},setRequestBodyInclusion:function(){return setRequestBodyInclusion},setRequestBodyValidateError:function(){return setRequestBodyValidateError},setRequestBodyValue:function(){return setRequestBodyValue},setRequestContentType:function(){return setRequestContentType},setResponseContentType:function(){return setResponseContentType},setRetainRequestBodyValueFlag:function(){return setRetainRequestBodyValueFlag},setSelectedServer:function(){return setSelectedServer},setServerVariableValue:function(){return setServerVariableValue}});var We={};__webpack_require__.r(We),__webpack_require__.d(We,{activeExamplesMember:function(){return Oo},hasUserEditedBody:function(){return wo},requestBodyErrors:function(){return xo},requestBodyInclusionSetting:function(){return Co},requestBodyValue:function(){return vo},requestContentType:function(){return ko},responseContentType:function(){return No},selectDefaultRequestBodyValue:function(){return selectDefaultRequestBodyValue},selectedServer:function(){return _o},serverEffectiveValue:function(){return jo},serverVariableValue:function(){return Ao},serverVariables:function(){return Io},shouldRetainRequestBodyValue:function(){return bo},validOperationMethods:function(){return To},validateBeforeExecute:function(){return Ro},validateShallowRequired:function(){return validateShallowRequired}});var He=function(e){var t={};return __webpack_require__.d(t,e),t}({Component:function(){return r.Component},PureComponent:function(){return r.PureComponent},createContext:function(){return r.createContext},createElement:function(){return r.createElement},default:function(){return r.default},forwardRef:function(){return r.forwardRef},useCallback:function(){return r.useCallback},useContext:function(){return r.useContext},useEffect:function(){return r.useEffect},useMemo:function(){return r.useMemo},useRef:function(){return r.useRef},useState:function(){return r.useState}}),Ge=function(e){var t={};return __webpack_require__.d(t,e),t}({applyMiddleware:function(){return n.applyMiddleware},bindActionCreators:function(){return n.bindActionCreators},compose:function(){return n.compose},createStore:function(){return n.createStore}}),Xe=function(e){var t={};return __webpack_require__.d(t,e),t}({List:function(){return a.List},Map:function(){return a.Map},OrderedMap:function(){return a.OrderedMap},Seq:function(){return a.Seq},Set:function(){return a.Set},default:function(){return a.default},fromJS:function(){return a.fromJS}}),Ye=__webpack_require__(919),Qe=__webpack_require__.n(Ye),Ze=function(e){var t={};return __webpack_require__.d(t,e),t}({combineReducers:function(){return o.combineReducers}}),et=function(e){var t={};return __webpack_require__.d(t,e),t}({serializeError:function(){return s.serializeError}}),tt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return l.default}});const rt=\"err_new_thrown_err\",nt=\"err_new_thrown_err_batch\",at=\"err_new_spec_err\",ot=\"err_new_spec_err_batch\",st=\"err_new_auth_err\",lt=\"err_clear\",it=\"err_clear_by\";function newThrownErr(e){return{type:rt,payload:(0,et.serializeError)(e)}}function newThrownErrBatch(e){return{type:nt,payload:e}}function newSpecErr(e){return{type:at,payload:e}}function newSpecErrBatch(e){return{type:ot,payload:e}}function newAuthErr(e){return{type:st,payload:e}}function clear(e={}){return{type:lt,payload:e}}function clearBy(e=()=>!0){return{type:it,payload:e}}var ct=function makeWindow(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if(\"undefined\"==typeof window)return e;try{e=window;for(var t of[\"File\",\"Blob\",\"FormData\"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}(),ut=(function(e){var t={};__webpack_require__.d(t,e)}({}),function(e){var t={};__webpack_require__.d(t,e)}({}),function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return u.default}})),dt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return d.default}}),pt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return p.default}}),mt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return m.default}}),ht=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return f.default}}),gt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return h.default}}),yt=__webpack_require__(209),Et=__webpack_require__.n(yt),St=__webpack_require__(802),_t=__webpack_require__.n(St);const vt=Xe.default.Set.of(\"type\",\"format\",\"items\",\"default\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"enum\",\"multipleOf\");function getParameterSchema(e,{isOAS3:t}={}){if(!Xe.default.Map.isMap(e))return{schema:Xe.default.Map(),parameterContentMediaType:null};if(!t)return\"body\"===e.get(\"in\")?{schema:e.get(\"schema\",Xe.default.Map()),parameterContentMediaType:null}:{schema:e.filter(((e,t)=>vt.includes(t))),parameterContentMediaType:null};if(e.get(\"content\")){const t=e.get(\"content\",Xe.default.Map({})).keySeq().first();return{schema:e.getIn([\"content\",t,\"schema\"],Xe.default.Map()),parameterContentMediaType:t}}return{schema:e.get(\"schema\")?e.get(\"schema\",Xe.default.Map()):Xe.default.Map(),parameterContentMediaType:null}}var bt=__webpack_require__(287).Buffer;const wt=\"default\",isImmutable=e=>Xe.default.Iterable.isIterable(e),immutableToJS=e=>isImmutable(e)?e.toJS():e;function objectify(e){return isObject(e)?immutableToJS(e):{}}function fromJSOrdered(e){if(isImmutable(e))return e;if(e instanceof ct.File)return e;if(!isObject(e))return e;if(Array.isArray(e))return Xe.default.Seq(e).map(fromJSOrdered).toList();if((0,ht.default)(e.entries)){const t=function createObjWithHashedKeys(e){if(!(0,ht.default)(e.entries))return e;const t={},r=\"_**[]\",n={};for(let a of e.entries())if(t[a[0]]||n[a[0]]&&n[a[0]].containsMultiple){if(!n[a[0]]){n[a[0]]={containsMultiple:!0,length:1},t[`${a[0]}${r}${n[a[0]].length}`]=t[a[0]],delete t[a[0]]}n[a[0]].length+=1,t[`${a[0]}${r}${n[a[0]].length}`]=a[1]}else t[a[0]]=a[1];return t}(e);return Xe.default.OrderedMap(t).map(fromJSOrdered)}return Xe.default.OrderedMap(e).map(fromJSOrdered)}function normalizeArray(e){return Array.isArray(e)?e:[e]}function isFn(e){return\"function\"==typeof e}function isObject(e){return!!e&&\"object\"==typeof e}function isFunc(e){return\"function\"==typeof e}function isArray(e){return Array.isArray(e)}const Ct=ut.default;function objMap(e,t){return Object.keys(e).reduce(((r,n)=>(r[n]=t(e[n],n),r)),{})}function objReduce(e,t){return Object.keys(e).reduce(((r,n)=>{let a=t(e[n],n);return a&&\"object\"==typeof a&&Object.assign(r,a),r}),{})}function systemThunkMiddleware(e){return({dispatch:t,getState:r})=>t=>r=>\"function\"==typeof r?r(e()):t(r)}function validateValueBySchema(e,t,r,n,a){if(!t)return[];let o=[],s=t.get(\"nullable\"),l=t.get(\"required\"),i=t.get(\"maximum\"),c=t.get(\"minimum\"),u=t.get(\"type\"),d=t.get(\"format\"),p=t.get(\"maxLength\"),m=t.get(\"minLength\"),f=t.get(\"uniqueItems\"),h=t.get(\"maxItems\"),g=t.get(\"minItems\"),y=t.get(\"pattern\");const S=r||!0===l,_=null!=e,v=S||_&&\"array\"===u||!(!S&&!_),b=s&&null===e;if(S&&!_&&!b&&!n&&!u)return o.push(\"Required field is not provided\"),o;if(b||!u||!v)return[];let w=\"string\"===u&&e,C=\"array\"===u&&Array.isArray(e)&&e.length,x=\"array\"===u&&Xe.default.List.isList(e)&&e.count();const O=[w,C,x,\"array\"===u&&\"string\"==typeof e&&e,\"file\"===u&&e instanceof ct.File,\"boolean\"===u&&(e||!1===e),\"number\"===u&&(e||0===e),\"integer\"===u&&(e||0===e),\"object\"===u&&\"object\"==typeof e&&null!==e,\"object\"===u&&\"string\"==typeof e&&e].some((e=>!!e));if(S&&!O&&!n)return o.push(\"Required field is not provided\"),o;if(\"object\"===u&&(null===a||\"application/json\"===a)){let r=e;if(\"string\"==typeof e)try{r=JSON.parse(e)}catch(e){return o.push(\"Parameter string value must be valid JSON\"),o}t&&t.has(\"required\")&&isFunc(l.isList)&&l.isList()&&l.forEach((e=>{void 0===r[e]&&o.push({propKey:e,error:\"Required property not found\"})})),t&&t.has(\"properties\")&&t.get(\"properties\").forEach(((e,t)=>{const s=validateValueBySchema(r[t],e,!1,n,a);o.push(...s.map((e=>({propKey:t,error:e}))))}))}if(y){let t=((e,t)=>{if(!new RegExp(t).test(e))return\"Value must follow pattern \"+t})(e,y);t&&o.push(t)}if(g&&\"array\"===u){let t=((e,t)=>{if(!e&&t>=1||e&&e.length<t)return`Array must contain at least ${t} item${1===t?\"\":\"s\"}`})(e,g);t&&o.push(t)}if(h&&\"array\"===u){let t=((e,t)=>{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?\"\":\"s\"}`})(e,h);t&&o.push({needRemove:!0,error:t})}if(f&&\"array\"===u){let t=((e,t)=>{if(e&&(\"true\"===t||!0===t)){const t=(0,Xe.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,Xe.Set)();if(t.forEach(((r,n)=>{t.filter((e=>isFunc(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(n))})),0!==e.size)return e.map((e=>({index:e,error:\"No duplicates allowed.\"}))).toArray()}}})(e,f);t&&o.push(...t)}if(p||0===p){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?\"s\":\"\"}`})(e,p);t&&o.push(t)}if(m){let t=((e,t)=>{if(e.length<t)return`Value must be at least ${t} character${1!==t?\"s\":\"\"}`})(e,m);t&&o.push(t)}if(i||0===i){let t=((e,t)=>{if(e>t)return`Value must be less than or equal to ${t}`})(e,i);t&&o.push(t)}if(c||0===c){let t=((e,t)=>{if(e<t)return`Value must be greater than or equal to ${t}`})(e,c);t&&o.push(t)}if(\"string\"===u){let t;if(t=\"date-time\"===d?(e=>{if(isNaN(Date.parse(e)))return\"Value must be a DateTime\"})(e):\"uuid\"===d?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return\"Value must be a Guid\"})(e):(e=>{if(e&&\"string\"!=typeof e)return\"Value must be a string\"})(e),!t)return o;o.push(t)}else if(\"boolean\"===u){let t=(e=>{if(\"true\"!==e&&\"false\"!==e&&!0!==e&&!1!==e)return\"Value must be a boolean\"})(e);if(!t)return o;o.push(t)}else if(\"number\"===u){let t=(e=>{if(!/^-?\\d+(\\.?\\d+)?$/.test(e))return\"Value must be a number\"})(e);if(!t)return o;o.push(t)}else if(\"integer\"===u){let t=(e=>{if(!/^-?\\d+$/.test(e))return\"Value must be an integer\"})(e);if(!t)return o;o.push(t)}else if(\"array\"===u){if(!C&&!x)return o;e&&e.forEach(((e,r)=>{const s=validateValueBySchema(e,t.get(\"items\"),!1,n,a);o.push(...s.map((e=>({index:r,error:e}))))}))}else if(\"file\"===u){let t=(e=>{if(e&&!(e instanceof ct.File))return\"Value must be a file\"})(e);if(!t)return o;o.push(t)}return o}const btoa=e=>{let t;return t=e instanceof bt?e:bt.from(e.toString(),\"utf-8\"),t.toString(\"base64\")},xt={operationsSorter:{alpha:(e,t)=>e.get(\"path\").localeCompare(t.get(\"path\")),method:(e,t)=>e.get(\"method\").localeCompare(t.get(\"method\"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},buildFormData=e=>{let t=[];for(let r in e){let n=e[r];void 0!==n&&\"\"!==n&&t.push([r,\"=\",encodeURIComponent(n).replace(/%20/g,\"+\")].join(\"\"))}return t.join(\"&\")},shallowEqualKeys=(e,t,r)=>!!(0,dt.default)(r,(r=>(0,mt.default)(e[r],t[r])));function requiresValidationURL(e){return!(!e||e.indexOf(\"localhost\")>=0||e.indexOf(\"127.0.0.1\")>=0||\"none\"===e)}const createDeepLinkPath=e=>\"string\"==typeof e||e instanceof String?e.trim().replace(/\\s/g,\"%20\"):\"\",escapeDeepLinkPath=e=>(0,gt.default)(createDeepLinkPath(e).replace(/%20/g,\"_\")),getExtensions=e=>{const t=/^x-/;return Xe.Map.isMap(e)?e.filter(((e,r)=>t.test(r))):Object.keys(e).filter((e=>t.test(e)))},getCommonExtensions=e=>e.filter(((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function deeplyStripKey(e,t,r=()=>!0){if(\"object\"!=typeof e||Array.isArray(e)||null===e||!t)return e;const n=Object.assign({},e);return Object.keys(n).forEach((e=>{e===t&&r(n[e],e)?delete n[e]:n[e]=deeplyStripKey(n[e],t,r)})),n}function stringify(e){if(\"string\"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),\"object\"==typeof e&&null!==e)try{return JSON.stringify(e,null,2)}catch(t){return String(e)}return null==e?\"\":e.toString()}function paramToIdentifier(e,{returnAll:t=!1,allowHashes:r=!0}={}){if(!Xe.default.Map.isMap(e))throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\");const n=e.get(\"name\"),a=e.get(\"in\");let o=[];return e&&e.hashCode&&a&&n&&r&&o.push(`${a}.${n}.hash-${e.hashCode()}`),a&&n&&o.push(`${a}.${n}`),o.push(n),t?o:o[0]||\"\"}function paramToValue(e,t){return paramToIdentifier(e,{returnAll:!0}).map((e=>t[e])).filter((e=>void 0!==e))[0]}function b64toB64UrlEncoded(e){return e.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=/g,\"\")}const isEmptyValue=e=>!e||!(!isImmutable(e)||!e.isEmpty()),idFn=e=>e;class Store{constructor(e={}){Qe()(this,{state:{},plugins:[],system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},e),this.getSystem=this._getSystem.bind(this),this.store=function configureStore(e,t,r){return function createStoreWithMiddleware(e,t,r){let n=[systemThunkMiddleware(r)];const a=ct.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||Ge.compose;return(0,Ge.createStore)(e,t,a((0,Ge.applyMiddleware)(...n)))}(e,t,r)}(idFn,(0,Xe.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}getStore(){return this.store}register(e,t=!0){var r=combinePlugins(e,this.getSystem());systemExtend(this.system,r),t&&this.buildSystem();callAfterLoad.call(this.system,e,this.getSystem())&&this.buildSystem()}buildSystem(e=!0){let t=this.getStore().dispatch,r=this.getStore().getState;this.boundSystem=Object.assign({},this.getRootInjects(),this.getWrappedAndBoundActions(t),this.getWrappedAndBoundSelectors(r,this.getSystem),this.getStateThunks(r),this.getFn(),this.getConfigs()),e&&this.rebuildReducer()}_getSystem(){return this.boundSystem}getRootInjects(){return Object.assign({getSystem:this.getSystem,getStore:this.getStore.bind(this),getComponents:this.getComponents.bind(this),getState:this.getStore().getState,getConfigs:this._getConfigs.bind(this),Im:Xe.default,React:He.default},this.system.rootInjects||{})}_getConfigs(){return this.system.configs}getConfigs(){return{configs:this.system.configs}}setConfigs(e){this.system.configs=e}rebuildReducer(){this.store.replaceReducer(function buildReducer(e,t){return function allReducers(e,t){let r=Object.keys(e).reduce(((r,n)=>(r[n]=function makeReducer(e,t){return(r=new Xe.Map,n)=>{if(!e)return r;let a=e[n.type];if(a){const e=wrapWithTryCatch(a,t)(r,n);return null===e?r:e}return r}}(e[n],t),r)),{});if(!Object.keys(r).length)return idFn;return(0,Ze.combineReducers)(r)}(objMap(e,(e=>e.reducers)),t)}(this.system.statePlugins,this.getSystem))}getType(e){let t=e[0].toUpperCase()+e.slice(1);return objReduce(this.system.statePlugins,((r,n)=>{let a=r[e];if(a)return{[n+t]:a}}))}getSelectors(){return this.getType(\"selectors\")}getActions(){return objMap(this.getType(\"actions\"),(e=>objReduce(e,((e,t)=>{if(isFn(e))return{[t]:e}}))))}getWrappedAndBoundActions(e){return objMap(this.getBoundActions(e),((e,t)=>{let r=this.system.statePlugins[t.slice(0,-7)].wrapActions;return r?objMap(e,((e,t)=>{let n=r[t];return n?(Array.isArray(n)||(n=[n]),n.reduce(((e,t)=>{let newAction=(...r)=>t(e,this.getSystem())(...r);if(!isFn(newAction))throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\");return wrapWithTryCatch(newAction,this.getSystem)}),e||Function.prototype)):e})):e}))}getWrappedAndBoundSelectors(e,t){return objMap(this.getBoundSelectors(e,t),((t,r)=>{let n=[r.slice(0,-9)],a=this.system.statePlugins[n].wrapSelectors;return a?objMap(t,((t,r)=>{let o=a[r];return o?(Array.isArray(o)||(o=[o]),o.reduce(((t,r)=>{let wrappedSelector=(...a)=>r(t,this.getSystem())(e().getIn(n),...a);if(!isFn(wrappedSelector))throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\");return wrappedSelector}),t||Function.prototype)):t})):t}))}getStates(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=e.get(r),t)),{})}getStateThunks(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=()=>e().get(r),t)),{})}getFn(){return{fn:this.system.fn}}getComponents(e){const t=this.system.components[e];return Array.isArray(t)?t.reduce(((e,t)=>t(e,this.getSystem()))):void 0!==e?this.system.components[e]:this.system.components}getBoundSelectors(e,t){return objMap(this.getSelectors(),((r,n)=>{let a=[n.slice(0,-9)];return objMap(r,(r=>(...n)=>{let o=wrapWithTryCatch(r,this.getSystem).apply(null,[e().getIn(a),...n]);return\"function\"==typeof o&&(o=wrapWithTryCatch(o,this.getSystem)(t())),o}))}))}getBoundActions(e){e=e||this.getStore().dispatch;const t=this.getActions(),process=e=>\"function\"!=typeof e?objMap(e,(e=>process(e))):(...t)=>{var r=null;try{r=e(...t)}catch(e){r={type:rt,error:!0,payload:(0,et.serializeError)(e)}}finally{return r}};return objMap(t,(t=>(0,Ge.bindActionCreators)(process(t),e)))}getMapStateToProps(){return()=>Object.assign({},this.getSystem())}getMapDispatchToProps(e){return t=>Qe()({},this.getWrappedAndBoundActions(t),this.getFn(),e)}}function combinePlugins(e,t){return isObject(e)&&!isArray(e)?(0,tt.default)({},e):isFunc(e)?combinePlugins(e(t),t):isArray(e)?e.map((e=>combinePlugins(e,t))).reduce(systemExtend,{components:t.getComponents()}):{}}function callAfterLoad(e,t,{hasLoaded:r}={}){let n=r;return isObject(e)&&!isArray(e)&&\"function\"==typeof e.afterLoad&&(n=!0,wrapWithTryCatch(e.afterLoad,t.getSystem).call(this,t)),isFunc(e)?callAfterLoad.call(this,e(t),t,{hasLoaded:n}):isArray(e)?e.map((e=>callAfterLoad.call(this,e,t,{hasLoaded:n}))):n}function systemExtend(e={},t={}){if(!isObject(e))return{};if(!isObject(t))return e;t.wrapComponents&&(objMap(t.wrapComponents,((r,n)=>{const a=e.components&&e.components[n];a&&Array.isArray(a)?(e.components[n]=a.concat([r]),delete t.wrapComponents[n]):a&&(e.components[n]=[a,r],delete t.wrapComponents[n])})),Object.keys(t.wrapComponents).length||delete t.wrapComponents);const{statePlugins:r}=e;if(isObject(r))for(let e in r){const n=r[e];if(!isObject(n))continue;const{wrapActions:a,wrapSelectors:o}=n;if(isObject(a))for(let r in a){let n=a[r];Array.isArray(n)||(n=[n],a[r]=n),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapActions&&t.statePlugins[e].wrapActions[r]&&(t.statePlugins[e].wrapActions[r]=a[r].concat(t.statePlugins[e].wrapActions[r]))}if(isObject(o))for(let r in o){let n=o[r];Array.isArray(n)||(n=[n],o[r]=n),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapSelectors&&t.statePlugins[e].wrapSelectors[r]&&(t.statePlugins[e].wrapSelectors[r]=o[r].concat(t.statePlugins[e].wrapSelectors[r]))}}return Qe()(e,t)}function wrapWithTryCatch(e,t,{logErrors:r=!0}={}){return\"function\"!=typeof e?e:function(...n){try{return e.call(this,...n)}catch(e){if(r){const{uncaughtExceptionHandler:r}=t().getConfigs();\"function\"==typeof r?r(e):console.error(e)}return null}}}var Ot=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return g.default}});const kt=\"show_popup\",Nt=\"authorize\",At=\"logout\",It=\"authorize_oauth2\",jt=\"configure_auth\",Rt=\"restore_authorization\";function showDefinitions(e){return{type:kt,payload:e}}function authorize(e){return{type:Nt,payload:e}}const authorizeWithPersistOption=e=>({authActions:t})=>{t.authorize(e),t.persistAuthorizationIfNeeded()};function logout(e){return{type:At,payload:e}}const logoutWithPersistOption=e=>({authActions:t})=>{t.logout(e),t.persistAuthorizationIfNeeded()},preAuthorizeImplicit=e=>({authActions:t,errActions:r})=>{let{auth:n,token:a,isValid:o}=e,{schema:s,name:l}=n,i=s.get(\"flow\");delete ct.swaggerUIRedirectOauth2,\"accessCode\"===i||o||r.newAuthErr({authId:l,source:\"auth\",level:\"warning\",message:\"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"}),a.error?r.newAuthErr({authId:l,source:\"auth\",level:\"error\",message:JSON.stringify(a)}):t.authorizeOauth2WithPersistOption({auth:n,token:a})};function authorizeOauth2(e){return{type:It,payload:e}}const authorizeOauth2WithPersistOption=e=>({authActions:t})=>{t.authorizeOauth2(e),t.persistAuthorizationIfNeeded()},authorizePassword=e=>({authActions:t})=>{let{schema:r,name:n,username:a,password:o,passwordType:s,clientId:l,clientSecret:i}=e,c={grant_type:\"password\",scope:e.scopes.join(\" \"),username:a,password:o},u={};switch(s){case\"request-body\":!function setClientIdAndSecret(e,t,r){t&&Object.assign(e,{client_id:t});r&&Object.assign(e,{client_secret:r})}(c,l,i);break;case\"basic\":u.Authorization=\"Basic \"+btoa(l+\":\"+i);break;default:console.warn(`Warning: invalid passwordType ${s} was passed, not including client id and secret`)}return t.authorizeRequest({body:buildFormData(c),url:r.get(\"tokenUrl\"),name:n,headers:u,query:{},auth:e})};const authorizeApplication=e=>({authActions:t})=>{let{schema:r,scopes:n,name:a,clientId:o,clientSecret:s}=e,l={Authorization:\"Basic \"+btoa(o+\":\"+s)},i={grant_type:\"client_credentials\",scope:n.join(\" \")};return t.authorizeRequest({body:buildFormData(i),name:a,url:r.get(\"tokenUrl\"),auth:e,headers:l})},authorizeAccessCodeWithFormParams=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:n,name:a,clientId:o,clientSecret:s,codeVerifier:l}=e,i={grant_type:\"authorization_code\",code:e.code,client_id:o,client_secret:s,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(i),name:a,url:n.get(\"tokenUrl\"),auth:e})},authorizeAccessCodeWithBasicAuthentication=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:n,name:a,clientId:o,clientSecret:s,codeVerifier:l}=e,i={Authorization:\"Basic \"+btoa(o+\":\"+s)},c={grant_type:\"authorization_code\",code:e.code,client_id:o,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(c),name:a,url:n.get(\"tokenUrl\"),auth:e,headers:i})},authorizeRequest=e=>({fn:t,getConfigs:r,authActions:n,errActions:a,oas3Selectors:o,specSelectors:s,authSelectors:l})=>{let i,{body:c,query:u={},headers:d={},name:p,url:m,auth:f}=e,{additionalQueryStringParams:h}=l.getConfigs()||{};if(s.isOAS3()){let e=o.serverEffectiveValue(o.selectedServer());i=(0,Ot.default)(m,e,!0)}else i=(0,Ot.default)(m,s.url(),!0);\"object\"==typeof h&&(i.query=Object.assign({},i.query,h));const g=i.toString();let y=Object.assign({Accept:\"application/json, text/plain, */*\",\"Content-Type\":\"application/x-www-form-urlencoded\",\"X-Requested-With\":\"XMLHttpRequest\"},d);t.fetch({url:g,method:\"post\",headers:y,query:u,body:c,requestInterceptor:r().requestInterceptor,responseInterceptor:r().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||\"\"),o=t&&(t.parseError||\"\");e.ok?r||o?a.newAuthErr({authId:p,level:\"error\",source:\"auth\",message:JSON.stringify(t)}):n.authorizeOauth2WithPersistOption({auth:f,token:t}):a.newAuthErr({authId:p,level:\"error\",source:\"auth\",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e=\"string\"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}a.newAuthErr({authId:p,level:\"error\",source:\"auth\",message:t})}))};function configureAuth(e){return{type:jt,payload:e}}function restoreAuthorization(e){return{type:Rt,payload:e}}const persistAuthorizationIfNeeded=()=>({authSelectors:e,getConfigs:t})=>{if(!t().persistAuthorization)return;const r=e.authorized().toJS();localStorage.setItem(\"authorized\",JSON.stringify(r))},authPopup=(e,t)=>()=>{ct.swaggerUIRedirectOauth2=t,ct.open(e)};var Tt={[kt]:(e,{payload:t})=>e.set(\"showDefinitions\",t),[Nt]:(e,{payload:t})=>{let r=(0,Xe.fromJS)(t),n=e.get(\"authorized\")||(0,Xe.Map)();return r.entrySeq().forEach((([t,r])=>{if(!isFunc(r.getIn))return e.set(\"authorized\",n);let a=r.getIn([\"schema\",\"type\"]);if(\"apiKey\"===a||\"http\"===a)n=n.set(t,r);else if(\"basic\"===a){let e=r.getIn([\"value\",\"username\"]),a=r.getIn([\"value\",\"password\"]);n=n.setIn([t,\"value\"],{username:e,header:\"Basic \"+btoa(e+\":\"+a)}),n=n.setIn([t,\"schema\"],r.get(\"schema\"))}})),e.set(\"authorized\",n)},[It]:(e,{payload:t})=>{let r,{auth:n,token:a}=t;n.token=Object.assign({},a),r=(0,Xe.fromJS)(n);let o=e.get(\"authorized\")||(0,Xe.Map)();return o=o.set(r.get(\"name\"),r),e.set(\"authorized\",o)},[At]:(e,{payload:t})=>{let r=e.get(\"authorized\").withMutations((e=>{t.forEach((t=>{e.delete(t)}))}));return e.set(\"authorized\",r)},[jt]:(e,{payload:t})=>e.set(\"configs\",t),[Rt]:(e,{payload:t})=>e.set(\"authorized\",(0,Xe.fromJS)(t.authorized))},Pt=function(e){var t={};return __webpack_require__.d(t,e),t}({createSelector:function(){return y.createSelector}});const state=e=>e,Bt=(0,Pt.createSelector)(state,(e=>e.get(\"showDefinitions\"))),Mt=(0,Pt.createSelector)(state,(()=>({specSelectors:e})=>{let t=e.securityDefinitions()||(0,Xe.Map)({}),r=(0,Xe.List)();return t.entrySeq().forEach((([e,t])=>{let n=(0,Xe.Map)();n=n.set(e,t),r=r.push(n)})),r})),selectAuthPath=(e,t)=>({specSelectors:e})=>(0,Xe.List)(e.isOAS3()?[\"components\",\"securitySchemes\",t]:[\"securityDefinitions\",t]),getDefinitionsByNames=(e,t)=>({specSelectors:e})=>{console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\");let r=e.securityDefinitions(),n=(0,Xe.List)();return t.valueSeq().forEach((e=>{let t=(0,Xe.Map)();e.entrySeq().forEach((([e,n])=>{let a,o=r.get(e);\"oauth2\"===o.get(\"type\")&&n.size&&(a=o.get(\"scopes\"),a.keySeq().forEach((e=>{n.contains(e)||(a=a.delete(e))})),o=o.set(\"allowedScopes\",a)),t=t.set(e,o)})),n=n.push(t)})),n},definitionsForRequirements=(e,t=(0,Xe.List)())=>({authSelectors:e})=>{const r=e.definitionsToAuthorize()||(0,Xe.List)();let n=(0,Xe.List)();return r.forEach((e=>{let r=t.find((t=>t.get(e.keySeq().first())));r&&(e.forEach(((t,n)=>{if(\"oauth2\"===t.get(\"type\")){const a=r.get(n);let o=t.get(\"scopes\");Xe.List.isList(a)&&Xe.Map.isMap(o)&&(o.keySeq().forEach((e=>{a.contains(e)||(o=o.delete(e))})),e=e.set(n,t.set(\"scopes\",o)))}})),n=n.push(e))})),n},qt=(0,Pt.createSelector)(state,(e=>e.get(\"authorized\")||(0,Xe.Map)())),isAuthorized=(e,t)=>({authSelectors:e})=>{let r=e.authorized();return Xe.List.isList(t)?!!t.toJS().filter((e=>-1===Object.keys(e).map((e=>!!r.get(e))).indexOf(!1))).length:null},Lt=(0,Pt.createSelector)(state,(e=>e.get(\"configs\"))),execute=(e,{authSelectors:t,specSelectors:r})=>({path:n,method:a,operation:o,extras:s})=>{let l={authorized:t.authorized()&&t.authorized().toJS(),definitions:r.securityDefinitions()&&r.securityDefinitions().toJS(),specSecurity:r.security()&&r.security().toJS()};return e({path:n,method:a,operation:o,securities:l,...s})},loaded=(e,t)=>r=>{const{getConfigs:n,authActions:a}=t,o=n();if(e(r),o.persistAuthorization){const e=localStorage.getItem(\"authorized\");e&&a.restoreAuthorization({authorized:JSON.parse(e)})}},wrap_actions_authorize=(e,t)=>r=>{e(r);if(t.getConfigs().persistAuthorization)try{const[{schema:e,value:t}]=Object.values(r),n=\"apiKey\"===e.get(\"type\"),a=\"cookie\"===e.get(\"in\");n&&a&&(document.cookie=`${e.get(\"name\")}=${t}; SameSite=None; Secure`)}catch(e){console.error(\"Error persisting cookie based apiKey in document.cookie.\",e)}},wrap_actions_logout=(e,t)=>r=>{const n=t.getConfigs(),a=t.authSelectors.authorized();try{n.persistAuthorization&&Array.isArray(r)&&r.forEach((e=>{const t=a.get(e,{}),r=\"apiKey\"===t.getIn([\"schema\",\"type\"]),n=\"cookie\"===t.getIn([\"schema\",\"in\"]);if(r&&n){const e=t.getIn([\"schema\",\"name\"]);document.cookie=`${e}=; Max-Age=-99999999`}}))}catch(e){console.error(\"Error deleting cookie based apiKey from document.cookie.\",e)}e(r)};var Ut=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return S.default}}),Dt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return _.default}});class LockAuthIcon extends He.default.Component{mapStateToProps(e,t){return{state:e,ownProps:(0,Dt.default)(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e(\"LockIcon\");return He.default.createElement(r,t)}}var $t=LockAuthIcon;class UnlockAuthIcon extends He.default.Component{mapStateToProps(e,t){return{state:e,ownProps:(0,Dt.default)(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e(\"UnlockIcon\");return He.default.createElement(r,t)}}var Vt=UnlockAuthIcon;function auth(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=preauthorizeApiKey.bind(null,e),this.rootInjects.preauthorizeBasic=preauthorizeBasic.bind(null,e)},components:{LockAuthIcon:$t,UnlockAuthIcon:Vt,LockAuthOperationIcon:$t,UnlockAuthOperationIcon:Vt},statePlugins:{auth:{reducers:Tt,actions:ke,selectors:Ne,wrapActions:{authorize:wrap_actions_authorize,logout:wrap_actions_logout}},configs:{wrapActions:{loaded}},spec:{wrapActions:{execute}}}}}function preauthorizeBasic(e,t,r,n){const{authActions:{authorize:a},specSelectors:{specJson:o,isOAS3:s}}=e,l=s()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],i=o().getIn([...l,t]);return i?a({[t]:{value:{username:r,password:n},schema:i.toJS()}}):null}function preauthorizeApiKey(e,t,r){const{authActions:{authorize:n},specSelectors:{specJson:a,isOAS3:o}}=e,s=o()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],l=a().getIn([...s,t]);return l?n({[t]:{value:r,schema:l.toJS()}}):null}var Jt=function(e){var t={};return __webpack_require__.d(t,e),t}({JSON_SCHEMA:function(){return v.JSON_SCHEMA},default:function(){return v.default}});const Ft=\"configs_update\",zt=\"configs_toggle\";function update(e,t){return{type:Ft,payload:{[e]:t}}}function toggle(e){return{type:zt,payload:e}}const actions_loaded=()=>()=>{},downloadConfig=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},getConfigByUrl=(e,t)=>r=>{const{specActions:n,configsActions:a}=r;if(e)return a.downloadConfig(e).then(next,next);function next(a){a instanceof Error||a.status>=400?(n.updateLoadingStatus(\"failedConfig\"),n.updateLoadingStatus(\"failedConfig\"),n.updateUrl(\"\"),console.error(a.statusText+\" \"+e.url),t(null)):t(((e,t)=>{try{return Jt.default.load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}})(a.text,r))}},get=(e,t)=>e.getIn(Array.isArray(t)?t:[t]);var Kt={[Ft]:(e,t)=>e.merge((0,Xe.fromJS)(t.payload)),[zt]:(e,t)=>{const r=t.payload,n=e.get(r);return e.set(r,!n)}};function configsPlugin(){return{statePlugins:{configs:{reducers:Kt,actions:Ae,selectors:Ie}}}}const setHash=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=\"\";var Wt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return b.default}});const Ht=\"layout_scroll_to\",Gt=\"layout_clear_scroll\";var Xt={fn:{getScrollParent:function getScrollParent(e,t){const r=document.documentElement;let n=getComputedStyle(e);const a=\"absolute\"===n.position,o=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===n.position)return r;for(let t=e;t=t.parentElement;)if(n=getComputedStyle(t),(!a||\"static\"!==n.position)&&o.test(n.overflow+n.overflowY+n.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),Wt.default.createScroller(t).to(e)}catch(e){console.error(e)}},scrollTo:e=>({type:Ht,payload:Array.isArray(e)?e:[e]}),clearScrollTo:()=>({type:Gt}),readyToScroll:(e,t)=>r=>{const n=r.layoutSelectors.getScrollToKey();Xe.default.is(n,(0,Xe.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},parseDeepLinkHash:e=>({layoutActions:t,layoutSelectors:r,getConfigs:n})=>{if(n().deepLinking&&e){let n=e.slice(1);\"!\"===n[0]&&(n=n.slice(1)),\"/\"===n[0]&&(n=n.slice(1));const a=n.split(\"/\").map((e=>e||\"\")),o=r.isShownKeyFromUrlHashArray(a),[s,l=\"\",i=\"\"]=o;if(\"operations\"===s){const e=r.isShownKeyFromUrlHashArray([l]);l.indexOf(\"_\")>-1&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),t.show(e.map((e=>e.replace(/_/g,\" \"))),!0)),t.show(e,!0)}(l.indexOf(\"_\")>-1||i.indexOf(\"_\")>-1)&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),t.show(o.map((e=>e.replace(/_/g,\" \"))),!0)),t.show(o,!0),t.scrollTo(o)}}},selectors:{getScrollToKey:e=>e.get(\"scrollToKey\"),isShownKeyFromUrlHashArray(e,t){const[r,n]=t;return n?[\"operations\",r,n]:r?[\"operations-tag\",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,n,a]=t;return\"operations\"==r?[n,a]:\"operations-tag\"==r?[n]:[]}},reducers:{[Ht]:(e,t)=>e.set(\"scrollToKey\",Xe.default.fromJS(t.payload)),[Gt]:e=>e.delete(\"scrollToKey\")},wrapActions:{show:(e,{getConfigs:t,layoutSelectors:r})=>(...n)=>{if(e(...n),t().deepLinking)try{let[e,t]=n;e=Array.isArray(e)?e:[e];const a=r.urlHashArrayFromIsShownKey(e);if(!a.length)return;const[o,s]=a;if(!t)return setHash(\"/\");2===a.length?setHash(createDeepLinkPath(`/${encodeURIComponent(o)}/${encodeURIComponent(s)}`)):1===a.length&&setHash(createDeepLinkPath(`/${encodeURIComponent(o)}`))}catch(e){console.error(e)}}}}}},Yt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return w.default}});var operation_wrapper=(e,t)=>class OperationWrapper extends He.default.Component{onLoad=e=>{const{operation:r}=this.props,{tag:n,operationId:a}=r.toObject();let{isShownKey:o}=r.toObject();o=o||[\"operations\",n,a],t.layoutActions.readyToScroll(o,e)};render(){return He.default.createElement(\"span\",{ref:this.onLoad},He.default.createElement(e,this.props))}};var operation_tag_wrapper=(e,t)=>class OperationTagWrapper extends He.default.Component{onLoad=e=>{const{tag:r}=this.props,n=[\"operations-tag\",r];t.layoutActions.readyToScroll(n,e)};render(){return He.default.createElement(\"span\",{ref:this.onLoad},He.default.createElement(e,this.props))}};function deep_linking(){return[Xt,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>(...r)=>{e(...r);const n=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(n)}}}},wrapComponents:{operation:operation_wrapper,OperationTag:operation_tag_wrapper}}]}var Qt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return C.default}});function transform(e){return e.map((e=>{let t=\"is not of a type(s)\",r=e.get(\"message\").indexOf(t);if(r>-1){let t=e.get(\"message\").slice(r+19).split(\",\");return e.set(\"message\",e.get(\"message\").slice(0,r)+function makeNewMessage(e){return e.reduce(((e,t,r,n)=>r===n.length-1&&n.length>1?e+\"or \"+t:n[r+1]&&n.length>2?e+t+\", \":n[r+1]?e+t+\" \":e+t),\"should be a\")}(t))}return e}))}var Zt=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return x.default}});function parameter_oneof_transform(e,{jsSpec:t}){return e}const er=[je,Re];function transformErrors(e){let t={jsSpec:{}},r=(0,Qt.default)(er,((e,r)=>{try{return r.transform(e,t).filter((e=>!!e))}catch(t){return console.error(\"Transformer error:\",t),e}}),e);return r.filter((e=>!!e)).map((e=>(!e.get(\"line\")&&e.get(\"path\"),e)))}let tr={line:0,level:\"error\",message:\"Unknown error\"};const rr=(0,Pt.createSelector)((e=>e),(e=>e.get(\"errors\",(0,Xe.List)()))),nr=(0,Pt.createSelector)(rr,(e=>e.last()));function err(e){return{statePlugins:{err:{reducers:{[rt]:(e,{payload:t})=>{let r=Object.assign(tr,t,{type:\"thrown\"});return e.update(\"errors\",(e=>(e||(0,Xe.List)()).push((0,Xe.fromJS)(r)))).update(\"errors\",(e=>transformErrors(e)))},[nt]:(e,{payload:t})=>(t=t.map((e=>(0,Xe.fromJS)(Object.assign(tr,e,{type:\"thrown\"})))),e.update(\"errors\",(e=>(e||(0,Xe.List)()).concat((0,Xe.fromJS)(t)))).update(\"errors\",(e=>transformErrors(e)))),[at]:(e,{payload:t})=>{let r=(0,Xe.fromJS)(t);return r=r.set(\"type\",\"spec\"),e.update(\"errors\",(e=>(e||(0,Xe.List)()).push((0,Xe.fromJS)(r)).sortBy((e=>e.get(\"line\"))))).update(\"errors\",(e=>transformErrors(e)))},[ot]:(e,{payload:t})=>(t=t.map((e=>(0,Xe.fromJS)(Object.assign(tr,e,{type:\"spec\"})))),e.update(\"errors\",(e=>(e||(0,Xe.List)()).concat((0,Xe.fromJS)(t)))).update(\"errors\",(e=>transformErrors(e)))),[st]:(e,{payload:t})=>{let r=(0,Xe.fromJS)(Object.assign({},t));return r=r.set(\"type\",\"auth\"),e.update(\"errors\",(e=>(e||(0,Xe.List)()).push((0,Xe.fromJS)(r)))).update(\"errors\",(e=>transformErrors(e)))},[lt]:(e,{payload:t})=>{if(!t||!e.get(\"errors\"))return e;let r=e.get(\"errors\").filter((e=>e.keySeq().every((r=>{const n=e.get(r),a=t[r];return!a||n!==a}))));return e.merge({errors:r})},[it]:(e,{payload:t})=>{if(!t||\"function\"!=typeof t)return e;let r=e.get(\"errors\").filter((e=>t(e)));return e.merge({errors:r})}},actions:Oe,selectors:Te}}}}function opsFilter(e,t){return e.filter(((e,r)=>-1!==r.indexOf(t)))}function filter(){return{fn:{opsFilter}}}var ar=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return O.default}});var arrow_up=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"}));var arrow_down=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"}));var arrow=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"}));var components_close=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"}));var copy=({className:e=null,width:t=15,height:r=16,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 15 16\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"g\",{transform:\"translate(2, -1)\"},He.default.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"})));var lock=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"}));var unlock=({className:e=null,width:t=20,height:r=20,...n})=>He.default.createElement(\"svg\",(0,ar.default)({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},n),He.default.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"}));var icons=()=>({components:{ArrowUpIcon:arrow_up,ArrowDownIcon:arrow_down,ArrowIcon:arrow,CloseIcon:components_close,CopyIcon:copy,LockIcon:lock,UnlockIcon:unlock}});const or=\"layout_update_layout\",sr=\"layout_update_filter\",lr=\"layout_update_mode\",ir=\"layout_show\";function updateLayout(e){return{type:or,payload:e}}function updateFilter(e){return{type:sr,payload:e}}function actions_show(e,t=!0){return e=normalizeArray(e),{type:ir,payload:{thing:e,shown:t}}}function changeMode(e,t=\"\"){return e=normalizeArray(e),{type:lr,payload:{thing:e,mode:t}}}var cr={[or]:(e,t)=>e.set(\"layout\",t.payload),[sr]:(e,t)=>e.set(\"filter\",t.payload),[ir]:(e,t)=>{const r=t.payload.shown,n=(0,Xe.fromJS)(t.payload.thing);return e.update(\"shown\",(0,Xe.fromJS)({}),(e=>e.set(n,r)))},[lr]:(e,t)=>{let r=t.payload.thing,n=t.payload.mode;return e.setIn([\"modes\"].concat(r),(n||\"\")+\"\")}};const current=e=>e.get(\"layout\"),currentFilter=e=>e.get(\"filter\"),isShown=(e,t,r)=>(t=normalizeArray(t),e.get(\"shown\",(0,Xe.fromJS)({})).get((0,Xe.fromJS)(t),r)),whatMode=(e,t,r=\"\")=>(t=normalizeArray(t),e.getIn([\"modes\",...t],r)),ur=(0,Pt.createSelector)((e=>e),(e=>!isShown(e,\"editor\"))),taggedOperations=(e,t)=>(r,...n)=>{let a=e(r,...n);const{fn:o,layoutSelectors:s,getConfigs:l}=t.getSystem(),i=l(),{maxDisplayedTags:c}=i;let u=s.currentFilter();return u&&!0!==u&&(a=o.opsFilter(a,u)),c>=0&&(a=a.slice(0,c)),a};function plugins_layout(){return{statePlugins:{layout:{reducers:cr,actions:Pe,selectors:Be},spec:{wrapSelectors:Me}}}}function logs({configs:e}){const t={debug:0,info:1,log:2,warn:3,error:4},getLevel=e=>t[e]||-1;let{logLevel:r}=e,n=getLevel(r);function log(e,...t){getLevel(e)>=n&&console[e](...t)}return log.warn=log.bind(null,\"warn\"),log.error=log.bind(null,\"error\"),log.info=log.bind(null,\"info\"),log.debug=log.bind(null,\"debug\"),{rootInjects:{log}}}let dr=!1;function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>(...t)=>(dr=!0,e(...t)),updateJsonSpec:(e,t)=>(...r)=>{const n=t.getConfigs().onComplete;return dr&&\"function\"==typeof n&&(setTimeout(n,0),dr=!1),e(...r)}}}}}}const extractKey=e=>{const t=\"_**[]\";return e.indexOf(t)<0?e:e.split(t)[0].trim()},escapeShell=e=>\"-d \"===e||/^[_\\/-]/g.test(e)?e:\"'\"+e.replace(/'/g,\"'\\\\''\")+\"'\",escapeCMD=e=>\"-d \"===(e=e.replace(/\\^/g,\"^^\").replace(/\\\\\"/g,'\\\\\\\\\"').replace(/\"/g,'\"\"').replace(/\\n/g,\"^\\n\"))?e.replace(/-d /g,\"-d ^\\n\"):/^[_\\/-]/g.test(e)?e:'\"'+e+'\"',escapePowershell=e=>{if(\"-d \"===e)return e;if(/\\n/.test(e)){return`@\"\\n${e.replace(/`/g,\"``\").replace(/\\$/g,\"`$\")}\\n\"@`}if(!/^[_\\/-]/.test(e)){return`'${e.replace(/'/g,\"''\")}'`}return e};const curlify=(e,t,r,n=\"\")=>{let a=!1,o=\"\";const addWords=(...e)=>o+=\" \"+e.map(t).join(\" \"),addWordsWithoutLeadingSpace=(...e)=>o+=e.map(t).join(\" \"),addNewLine=()=>o+=` ${r}`,addIndent=(e=1)=>o+=\"  \".repeat(e);let s=e.get(\"headers\");o+=\"curl\"+n;const l=e.get(\"curlOptions\");if(Xe.List.isList(l)&&!l.isEmpty()&&addWords(...e.get(\"curlOptions\")),addWords(\"-X\",e.get(\"method\")),addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`${e.get(\"url\")}`),s&&s.size)for(let t of e.get(\"headers\").entries()){addNewLine(),addIndent();let[e,r]=t;addWordsWithoutLeadingSpace(\"-H\",`${e}: ${r}`),a=a||/^content-type$/i.test(e)&&/^multipart\\/form-data$/i.test(r)}const i=e.get(\"body\");if(i)if(a&&[\"POST\",\"PUT\",\"PATCH\"].includes(e.get(\"method\")))for(let[e,t]of i.entrySeq()){let r=extractKey(e);addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-F\"),t instanceof ct.File&&\"string\"==typeof t.valueOf()?addWords(`${r}=${t.data}${t.type?`;type=${t.type}`:\"\"}`):t instanceof ct.File?addWords(`${r}=@${t.name}${t.type?`;type=${t.type}`:\"\"}`):addWords(`${r}=${t}`)}else if(i instanceof ct.File)addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`--data-binary '@${i.name}'`);else{addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d \");let t=i;Xe.Map.isMap(t)?addWordsWithoutLeadingSpace(function getStringBodyOfMap(e){let t=[];for(let[r,n]of e.get(\"body\").entrySeq()){let e=extractKey(r);n instanceof ct.File?t.push(`  \"${e}\": {\\n    \"name\": \"${n.name}\"${n.type?`,\\n    \"type\": \"${n.type}\"`:\"\"}\\n  }`):t.push(`  \"${e}\": ${JSON.stringify(n,null,2).replace(/(\\r\\n|\\r|\\n)/g,\"\\n  \")}`)}return`{\\n${t.join(\",\\n\")}\\n}`}(e)):(\"string\"!=typeof t&&(t=JSON.stringify(t)),addWordsWithoutLeadingSpace(t))}else i||\"POST\"!==e.get(\"method\")||(addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d ''\"));return o},requestSnippetGenerator_curl_powershell=e=>curlify(e,escapePowershell,\"`\\n\",\".exe\"),requestSnippetGenerator_curl_bash=e=>curlify(e,escapeShell,\"\\\\\\n\"),requestSnippetGenerator_curl_cmd=e=>curlify(e,escapeCMD,\"^\\n\"),request_snippets_selectors_state=e=>e||(0,Xe.Map)(),pr=(0,Pt.createSelector)(request_snippets_selectors_state,(e=>{const t=e.get(\"languages\"),r=e.get(\"generators\",(0,Xe.Map)());return!t||t.isEmpty()?r:r.filter(((e,r)=>t.includes(r)))})),getSnippetGenerators=e=>({fn:t})=>pr(e).map(((e,r)=>{const n=(e=>t[`requestSnippetGenerator_${e}`])(r);return\"function\"!=typeof n?null:e.set(\"fn\",n)})).filter((e=>e)),mr=(0,Pt.createSelector)(request_snippets_selectors_state,(e=>e.get(\"activeLanguage\"))),fr=(0,Pt.createSelector)(request_snippets_selectors_state,(e=>e.get(\"defaultExpanded\")));var hr=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return k.default}}),gr=function(e){var t={};return __webpack_require__.d(t,e),t}({CopyToClipboard:function(){return N.CopyToClipboard}});const yr={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(250, 250, 250)\",paddingBottom:\"0\",paddingTop:\"0\",border:\"1px solid rgb(51, 51, 51)\",borderRadius:\"4px 4px 0 0\",boxShadow:\"none\",borderBottom:\"none\"},Er={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(51, 51, 51)\",boxShadow:\"none\",border:\"1px solid rgb(51, 51, 51)\",paddingBottom:\"0\",paddingTop:\"0\",borderRadius:\"4px 4px 0 0\",marginTop:\"-5px\",marginRight:\"-5px\",marginLeft:\"-5px\",zIndex:\"9999\",borderBottom:\"none\"};var request_snippets=({request:e,requestSnippetsSelectors:t,getComponent:r})=>{const n=(0,He.useRef)(null),a=r(\"ArrowUpIcon\"),o=r(\"ArrowDownIcon\"),s=r(\"SyntaxHighlighter\",!0),[l,i]=(0,He.useState)(t.getSnippetGenerators()?.keySeq().first()),[c,u]=(0,He.useState)(t?.getDefaultExpanded()),d=t.getSnippetGenerators(),p=d.get(l),m=p.get(\"fn\")(e),handleSetIsExpanded=()=>{u(!c)},handleGetBtnStyle=e=>e===l?Er:yr,handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:n,offsetHeight:a,scrollTop:o}=t;n>a&&(0===o&&r<0||a+o>=n&&r>0)&&e.preventDefault()};return(0,He.useEffect)((()=>{}),[]),(0,He.useEffect)((()=>{const e=Array.from(n.current.childNodes).filter((e=>!!e.nodeType&&e.classList?.contains(\"curl-command\")));return e.forEach((e=>e.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[e]),He.default.createElement(\"div\",{className:\"request-snippets\",ref:n},He.default.createElement(\"div\",{style:{width:\"100%\",display:\"flex\",justifyContent:\"flex-start\",alignItems:\"center\",marginBottom:\"15px\"}},He.default.createElement(\"h4\",{onClick:()=>handleSetIsExpanded(),style:{cursor:\"pointer\"}},\"Snippets\"),He.default.createElement(\"button\",{onClick:()=>handleSetIsExpanded(),style:{border:\"none\",background:\"none\"},title:c?\"Collapse operation\":\"Expand operation\"},c?He.default.createElement(o,{className:\"arrow\",width:\"10\",height:\"10\"}):He.default.createElement(a,{className:\"arrow\",width:\"10\",height:\"10\"}))),c&&He.default.createElement(\"div\",{className:\"curl-command\"},He.default.createElement(\"div\",{style:{paddingLeft:\"15px\",paddingRight:\"10px\",width:\"100%\",display:\"flex\"}},d.entrySeq().map((([e,t])=>He.default.createElement(\"div\",{className:(0,hr.default)(\"btn\",{active:e===l}),style:handleGetBtnStyle(e),key:e,onClick:()=>(e=>{l!==e&&i(e)})(e)},He.default.createElement(\"h4\",{style:e===l?{color:\"white\"}:{}},t.get(\"title\")))))),He.default.createElement(\"div\",{className:\"copy-to-clipboard\"},He.default.createElement(gr.CopyToClipboard,{text:m},He.default.createElement(\"button\",null))),He.default.createElement(\"div\",null,He.default.createElement(s,{language:p.get(\"syntax\"),className:\"curl microlight\",renderPlainText:({children:e,PlainTextViewer:t})=>He.default.createElement(t,{className:\"curl\"},e)},m))))},plugins_request_snippets=()=>({components:{RequestSnippets:request_snippets},fn:{requestSnippetGenerator_curl_bash,requestSnippetGenerator_curl_cmd,requestSnippetGenerator_curl_powershell},statePlugins:{requestSnippets:{selectors:qe}}});class ModelCollapse extends He.Component{static defaultProps={collapsedContent:\"{...}\",expanded:!1,title:null,onToggle:()=>{},hideSelfOnExpand:!1,specPath:Xe.default.List([])};constructor(e,t){super(e,t);let{expanded:r,collapsedContent:n}=this.props;this.state={expanded:r,collapsedContent:n||ModelCollapse.defaultProps.collapsedContent}}componentDidMount(){const{hideSelfOnExpand:e,expanded:t,modelName:r}=this.props;e&&t&&this.props.onToggle(r,t)}UNSAFE_componentWillReceiveProps(e){this.props.expanded!==e.expanded&&this.setState({expanded:e.expanded})}toggleCollapsed=()=>{this.props.onToggle&&this.props.onToggle(this.props.modelName,!this.state.expanded),this.setState({expanded:!this.state.expanded})};onLoad=e=>{if(e&&this.props.layoutSelectors){const t=this.props.layoutSelectors.getScrollToKey();Xe.default.is(t,this.props.specPath)&&this.toggleCollapsed(),this.props.layoutActions.readyToScroll(this.props.specPath,e.parentElement)}};render(){const{title:e,classes:t}=this.props;return this.state.expanded&&this.props.hideSelfOnExpand?He.default.createElement(\"span\",{className:t||\"\"},this.props.children):He.default.createElement(\"span\",{className:t||\"\",ref:this.onLoad},He.default.createElement(\"button\",{\"aria-expanded\":this.state.expanded,className:\"model-box-control\",onClick:this.toggleCollapsed},e&&He.default.createElement(\"span\",{className:\"pointer\"},e),He.default.createElement(\"span\",{className:\"model-toggle\"+(this.state.expanded?\"\":\" collapsed\")}),!this.state.expanded&&He.default.createElement(\"span\",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}const useTabs=({initialTab:e,isExecute:t,schema:r,example:n})=>{const a=(0,He.useMemo)((()=>({example:\"example\",model:\"model\"})),[]),o=(0,He.useMemo)((()=>Object.keys(a)),[a]).includes(e)&&r&&!t?e:a.example,s=(e=>{const t=(0,He.useRef)();return(0,He.useEffect)((()=>{t.current=e})),t.current})(t),[l,i]=(0,He.useState)(o),c=(0,He.useCallback)((e=>{i(e.target.dataset.name)}),[]);return(0,He.useEffect)((()=>{s&&!t&&n&&i(a.example)}),[s,t,n]),{activeTab:l,onTabChange:c,tabs:a}};var model_example=({schema:e,example:t,isExecute:r=!1,specPath:n,includeWriteOnly:a=!1,includeReadOnly:o=!1,getComponent:s,getConfigs:l,specSelectors:i})=>{const{defaultModelRendering:c,defaultModelExpandDepth:u}=l(),d=s(\"ModelWrapper\"),p=s(\"HighlightCode\",!0),m=Et()(5).toString(\"base64\"),f=Et()(5).toString(\"base64\"),h=Et()(5).toString(\"base64\"),g=Et()(5).toString(\"base64\"),y=i.isOAS3(),{activeTab:S,tabs:_,onTabChange:v}=useTabs({initialTab:c,isExecute:r,schema:e,example:t});return He.default.createElement(\"div\",{className:\"model-example\"},He.default.createElement(\"ul\",{className:\"tab\",role:\"tablist\"},He.default.createElement(\"li\",{className:(0,hr.default)(\"tabitem\",{active:S===_.example}),role:\"presentation\"},He.default.createElement(\"button\",{\"aria-controls\":f,\"aria-selected\":S===_.example,className:\"tablinks\",\"data-name\":\"example\",id:m,onClick:v,role:\"tab\"},r?\"Edit Value\":\"Example Value\")),e&&He.default.createElement(\"li\",{className:(0,hr.default)(\"tabitem\",{active:S===_.model}),role:\"presentation\"},He.default.createElement(\"button\",{\"aria-controls\":g,\"aria-selected\":S===_.model,className:(0,hr.default)(\"tablinks\",{inactive:r}),\"data-name\":\"model\",id:h,onClick:v,role:\"tab\"},y?\"Schema\":\"Model\"))),S===_.example&&He.default.createElement(\"div\",{\"aria-hidden\":S!==_.example,\"aria-labelledby\":m,\"data-name\":\"examplePanel\",id:f,role:\"tabpanel\",tabIndex:\"0\"},t||He.default.createElement(p,null,\"(no example available\")),S===_.model&&He.default.createElement(\"div\",{className:\"model-container\",\"aria-hidden\":S===_.example,\"aria-labelledby\":h,\"data-name\":\"modelPanel\",id:g,role:\"tabpanel\",tabIndex:\"0\"},He.default.createElement(d,{schema:e,getComponent:s,getConfigs:l,specSelectors:i,expandDepth:u,specPath:n,includeReadOnly:o,includeWriteOnly:a})))};class ModelWrapper extends He.Component{onToggle=(e,t)=>{this.props.layoutActions&&this.props.layoutActions.show(this.props.fullPath,t)};render(){let{getComponent:e,getConfigs:t}=this.props;const r=e(\"Model\");let n;return this.props.layoutSelectors&&(n=this.props.layoutSelectors.isShown(this.props.fullPath)),He.default.createElement(\"div\",{className:\"model-box\"},He.default.createElement(r,(0,ar.default)({},this.props,{getConfigs:t,expanded:n,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}var Sr,_r=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return A.default}});function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},_extends.apply(null,arguments)}var rolling_load=e=>He.createElement(\"svg\",_extends({xmlns:\"http://www.w3.org/2000/svg\",width:200,height:200,className:\"rolling-load_svg__lds-rolling\",preserveAspectRatio:\"xMidYMid\",style:{backgroundImage:\"none\",backgroundPosition:\"initial initial\",backgroundRepeat:\"initial initial\"},viewBox:\"0 0 100 100\"},e),Sr||(Sr=He.createElement(\"circle\",{cx:50,cy:50,r:35,fill:\"none\",stroke:\"#555\",strokeDasharray:\"164.93361431346415 56.97787143782138\",strokeWidth:10},He.createElement(\"animateTransform\",{attributeName:\"transform\",begin:\"0s\",calcMode:\"linear\",dur:\"1s\",keyTimes:\"0;1\",repeatCount:\"indefinite\",type:\"rotate\",values:\"0 50 50;360 50 50\"}))));const decodeRefName=e=>{const t=e.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(t)}catch{return t}};class Model extends _r.default{static propTypes={schema:Yt.default.map.isRequired,getComponent:Ut.default.func.isRequired,getConfigs:Ut.default.func.isRequired,specSelectors:Ut.default.object.isRequired,name:Ut.default.string,displayName:Ut.default.string,isRef:Ut.default.bool,required:Ut.default.bool,expandDepth:Ut.default.number,depth:Ut.default.number,specPath:Yt.default.list.isRequired,includeReadOnly:Ut.default.bool,includeWriteOnly:Ut.default.bool};getModelName=e=>-1!==e.indexOf(\"#/definitions/\")?decodeRefName(e.replace(/^.*#\\/definitions\\//,\"\")):-1!==e.indexOf(\"#/components/schemas/\")?decodeRefName(e.replace(/^.*#\\/components\\/schemas\\//,\"\")):void 0;getRefSchema=e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)};render(){let{getComponent:e,getConfigs:t,specSelectors:r,schema:n,required:a,name:o,isRef:s,specPath:l,displayName:i,includeReadOnly:c,includeWriteOnly:u}=this.props;const d=e(\"ObjectModel\"),p=e(\"ArrayModel\"),m=e(\"PrimitiveModel\");let f=\"object\",h=n&&n.get(\"$$ref\"),g=n&&n.get(\"$ref\");if(!o&&h&&(o=this.getModelName(h)),g){const e=this.getModelName(g),t=this.getRefSchema(e);Xe.Map.isMap(t)?(n=t.mergeDeep(n),h||(n=n.set(\"$$ref\",g),h=g)):Xe.Map.isMap(n)&&1===n.size&&(n=null,o=g)}if(!n)return He.default.createElement(\"span\",{className:\"model model-title\"},He.default.createElement(\"span\",{className:\"model-title__text\"},i||o),!g&&He.default.createElement(rolling_load,{height:\"20px\",width:\"20px\"}));const y=r.isOAS3()&&n.get(\"deprecated\");switch(s=void 0!==s?s:!!h,f=n&&n.get(\"type\")||f,f){case\"object\":return He.default.createElement(d,(0,ar.default)({className:\"object\"},this.props,{specPath:l,getConfigs:t,schema:n,name:o,deprecated:y,isRef:s,includeReadOnly:c,includeWriteOnly:u}));case\"array\":return He.default.createElement(p,(0,ar.default)({className:\"array\"},this.props,{getConfigs:t,schema:n,name:o,deprecated:y,required:a,includeReadOnly:c,includeWriteOnly:u}));default:return He.default.createElement(m,(0,ar.default)({},this.props,{getComponent:e,getConfigs:t,schema:n,name:o,deprecated:y,required:a}))}}}class Models extends He.Component{getSchemaBasePath=()=>this.props.specSelectors.isOAS3()?[\"components\",\"schemas\"]:[\"definitions\"];getCollapsedContent=()=>\" \";handleToggle=(e,t)=>{const{layoutActions:r}=this.props;r.show([...this.getSchemaBasePath(),e],t),t&&this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(),e])};onLoadModels=e=>{e&&this.props.layoutActions.readyToScroll(this.getSchemaBasePath(),e)};onLoadModel=e=>{if(e){const t=e.getAttribute(\"data-name\");this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(),t],e)}};render(){let{specSelectors:e,getComponent:t,layoutSelectors:r,layoutActions:n,getConfigs:a}=this.props,o=e.definitions(),{docExpansion:s,defaultModelsExpandDepth:l}=a();if(!o.size||l<0)return null;const i=this.getSchemaBasePath();let c=r.isShown(i,l>0&&\"none\"!==s);const u=e.isOAS3(),d=t(\"ModelWrapper\"),p=t(\"Collapse\"),m=t(\"ModelCollapse\"),f=t(\"JumpToPath\",!0),h=t(\"ArrowUpIcon\"),g=t(\"ArrowDownIcon\");return He.default.createElement(\"section\",{className:c?\"models is-open\":\"models\",ref:this.onLoadModels},He.default.createElement(\"h4\",null,He.default.createElement(\"button\",{\"aria-expanded\":c,className:\"models-control\",onClick:()=>n.show(i,!c)},He.default.createElement(\"span\",null,u?\"Schemas\":\"Models\"),c?He.default.createElement(h,null):He.default.createElement(g,null))),He.default.createElement(p,{isOpened:c},o.entrySeq().map((([o])=>{const s=[...i,o],c=Xe.default.List(s),u=e.specResolvedSubtree(s),p=e.specJson().getIn(s),h=Xe.Map.isMap(u)?u:Xe.default.Map(),g=Xe.Map.isMap(p)?p:Xe.default.Map(),y=h.get(\"title\")||g.get(\"title\")||o,S=r.isShown(s,!1);S&&0===h.size&&g.size>0&&this.props.specActions.requestResolvedSubtree(s);const _=He.default.createElement(d,{name:o,expandDepth:l,schema:h||Xe.default.Map(),displayName:y,fullPath:s,specPath:c,getComponent:t,specSelectors:e,getConfigs:a,layoutSelectors:r,layoutActions:n,includeReadOnly:!0,includeWriteOnly:!0}),v=He.default.createElement(\"span\",{className:\"model-box\"},He.default.createElement(\"span\",{className:\"model model-title\"},y));return He.default.createElement(\"div\",{id:`model-${o}`,className:\"model-container\",key:`models-section-${o}`,\"data-name\":o,ref:this.onLoadModel},He.default.createElement(\"span\",{className:\"models-jump-to-path\"},He.default.createElement(f,{path:c})),He.default.createElement(m,{classes:\"model-box\",collapsedContent:this.getCollapsedContent(o),onToggle:this.handleToggle,title:v,displayName:y,modelName:o,specPath:c,layoutSelectors:r,layoutActions:n,hideSelfOnExpand:!0,expanded:l>0&&S},_))})).toArray()))}}var enum_model=({value:e,getComponent:t})=>{let r=t(\"ModelCollapse\"),n=He.default.createElement(\"span\",null,\"Array [ \",e.count(),\" ]\");return He.default.createElement(\"span\",{className:\"prop-enum\"},\"Enum:\",He.default.createElement(\"br\",null),He.default.createElement(r,{collapsedContent:n},\"[ \",e.map(String).join(\", \"),\" ]\"))};function isAbsoluteUrl(e){return e.match(/^(?:[a-z]+:)?\\/\\//i)}function buildBaseUrl(e,t){return e?isAbsoluteUrl(e)?function addProtocol(e){return e.match(/^\\/\\//i)?`${window.location.protocol}${e}`:e}(e):new URL(e,t).href:t}function safeBuildUrl(e,t,{selectedServer:r=\"\"}={}){try{return function buildUrl(e,t,{selectedServer:r=\"\"}={}){if(!e)return;if(isAbsoluteUrl(e))return e;const n=buildBaseUrl(r,t);return isAbsoluteUrl(n)?new URL(e,n).href:new URL(e,window.location.href).href}(e,t,{selectedServer:r})}catch{return}}function sanitizeUrl(e){if(\"string\"!=typeof e||\"\"===e.trim())return\"\";const t=e.trim(),r=\"about:blank\";try{const e=`https://base${String(Math.random()).slice(2)}`,n=new URL(t,e),a=n.protocol.slice(0,-1);return[\"javascript\",\"data\",\"vbscript\"].includes(a.toLowerCase())?r:n.origin===e?t.startsWith(\"/\")?`${n.pathname}${n.search}${n.hash}`:t.startsWith(\".\")?`.${n.pathname}${n.search}${n.hash}`:`${n.pathname.substring(1)}${n.search}${n.hash}`:String(n)}catch{return r}}class ObjectModel extends He.Component{render(){let{schema:e,name:t,displayName:r,isRef:n,getComponent:a,getConfigs:o,depth:s,onToggle:l,expanded:i,specPath:c,...u}=this.props,{specSelectors:d,expandDepth:p,includeReadOnly:m,includeWriteOnly:f}=u;const{isOAS3:h}=d,g=s>2||2===s&&\"items\"!==c.last();if(!e)return null;const{showExtensions:y}=o(),S=y?getExtensions(e):(0,Xe.List)();let _=e.get(\"description\"),v=e.get(\"properties\"),b=e.get(\"additionalProperties\"),w=e.get(\"title\")||r||t,C=e.get(\"required\"),x=e.filter(((e,t)=>-1!==[\"maxProperties\",\"minProperties\",\"nullable\",\"example\"].indexOf(t))),O=e.get(\"deprecated\"),k=e.getIn([\"externalDocs\",\"url\"]),N=e.getIn([\"externalDocs\",\"description\"]);const A=a(\"JumpToPath\",!0),I=a(\"Markdown\",!0),j=a(\"Model\"),R=a(\"ModelCollapse\"),T=a(\"Property\"),P=a(\"Link\"),B=a(\"ModelExtensions\"),JumpToPathSection=()=>He.default.createElement(\"span\",{className:\"model-jump-to-path\"},He.default.createElement(A,{path:c})),M=He.default.createElement(\"span\",null,He.default.createElement(\"span\",null,\"{\"),\"...\",He.default.createElement(\"span\",null,\"}\"),n?He.default.createElement(JumpToPathSection,null):\"\"),q=d.isOAS3()?e.get(\"allOf\"):null,L=d.isOAS3()?e.get(\"anyOf\"):null,U=d.isOAS3()?e.get(\"oneOf\"):null,D=d.isOAS3()?e.get(\"not\"):null,$=w&&He.default.createElement(\"span\",{className:\"model-title\"},n&&e.get(\"$$ref\")&&He.default.createElement(\"span\",{className:(0,hr.default)(\"model-hint\",{\"model-hint--embedded\":g})},e.get(\"$$ref\")),He.default.createElement(\"span\",{className:\"model-title__text\"},w));return He.default.createElement(\"span\",{className:\"model\"},He.default.createElement(R,{modelName:t,title:$,onToggle:l,expanded:!!i||s<=p,collapsedContent:M},He.default.createElement(\"span\",{className:\"brace-open object\"},\"{\"),n?He.default.createElement(JumpToPathSection,null):null,He.default.createElement(\"span\",{className:\"inner-object\"},He.default.createElement(\"table\",{className:\"model\"},He.default.createElement(\"tbody\",null,_?He.default.createElement(\"tr\",{className:\"description\"},He.default.createElement(\"td\",null,\"description:\"),He.default.createElement(\"td\",null,He.default.createElement(I,{source:_}))):null,k&&He.default.createElement(\"tr\",{className:\"external-docs\"},He.default.createElement(\"td\",null,\"externalDocs:\"),He.default.createElement(\"td\",null,He.default.createElement(P,{target:\"_blank\",href:sanitizeUrl(k)},N||k))),O?He.default.createElement(\"tr\",{className:\"property\"},He.default.createElement(\"td\",null,\"deprecated:\"),He.default.createElement(\"td\",null,\"true\")):null,v&&v.size?v.entrySeq().filter((([,e])=>(!e.get(\"readOnly\")||m)&&(!e.get(\"writeOnly\")||f))).map((([e,r])=>{let n=h()&&r.get(\"deprecated\"),l=Xe.List.isList(C)&&C.contains(e),i=[\"property-row\"];return n&&i.push(\"deprecated\"),l&&i.push(\"required\"),He.default.createElement(\"tr\",{key:e,className:i.join(\" \")},He.default.createElement(\"td\",null,e,l&&He.default.createElement(\"span\",{className:\"star\"},\"*\")),He.default.createElement(\"td\",null,He.default.createElement(j,(0,ar.default)({key:`object-${t}-${e}_${r}`},u,{required:l,getComponent:a,specPath:c.push(\"properties\",e),getConfigs:o,schema:r,depth:s+1}))))})).toArray():null,0===S.size?null:He.default.createElement(He.default.Fragment,null,He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\" \")),He.default.createElement(B,{extensions:S,propClass:\"extension\"})),b&&b.size?He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\"< * >:\"),He.default.createElement(\"td\",null,He.default.createElement(j,(0,ar.default)({},u,{required:!1,getComponent:a,specPath:c.push(\"additionalProperties\"),getConfigs:o,schema:b,depth:s+1})))):null,q?He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\"allOf ->\"),He.default.createElement(\"td\",null,q.map(((e,t)=>He.default.createElement(\"div\",{key:t},He.default.createElement(j,(0,ar.default)({},u,{required:!1,getComponent:a,specPath:c.push(\"allOf\",t),getConfigs:o,schema:e,depth:s+1}))))))):null,L?He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\"anyOf ->\"),He.default.createElement(\"td\",null,L.map(((e,t)=>He.default.createElement(\"div\",{key:t},He.default.createElement(j,(0,ar.default)({},u,{required:!1,getComponent:a,specPath:c.push(\"anyOf\",t),getConfigs:o,schema:e,depth:s+1}))))))):null,U?He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\"oneOf ->\"),He.default.createElement(\"td\",null,U.map(((e,t)=>He.default.createElement(\"div\",{key:t},He.default.createElement(j,(0,ar.default)({},u,{required:!1,getComponent:a,specPath:c.push(\"oneOf\",t),getConfigs:o,schema:e,depth:s+1}))))))):null,D?He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,\"not ->\"),He.default.createElement(\"td\",null,He.default.createElement(\"div\",null,He.default.createElement(j,(0,ar.default)({},u,{required:!1,getComponent:a,specPath:c.push(\"not\"),getConfigs:o,schema:D,depth:s+1}))))):null))),He.default.createElement(\"span\",{className:\"brace-close\"},\"}\")),x.size?x.entrySeq().map((([e,t])=>He.default.createElement(T,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:\"property\"}))):null)}}class ArrayModel extends He.Component{render(){let{getComponent:e,getConfigs:t,schema:r,depth:n,expandDepth:a,name:o,displayName:s,specPath:l}=this.props,i=r.get(\"description\"),c=r.get(\"items\"),u=r.get(\"title\")||s||o,d=r.filter(((e,t)=>-1===[\"type\",\"items\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(t))),p=r.getIn([\"externalDocs\",\"url\"]),m=r.getIn([\"externalDocs\",\"description\"]);const f=e(\"Markdown\",!0),h=e(\"ModelCollapse\"),g=e(\"Model\"),y=e(\"Property\"),S=e(\"Link\"),_=u&&He.default.createElement(\"span\",{className:\"model-title\"},He.default.createElement(\"span\",{className:\"model-title__text\"},u));return He.default.createElement(\"span\",{className:\"model\"},He.default.createElement(h,{title:_,expanded:n<=a,collapsedContent:\"[...]\"},\"[\",d.size?d.entrySeq().map((([e,t])=>He.default.createElement(y,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:\"property\"}))):null,i?He.default.createElement(f,{source:i}):d.size?He.default.createElement(\"div\",{className:\"markdown\"}):null,p&&He.default.createElement(\"div\",{className:\"external-docs\"},He.default.createElement(S,{target:\"_blank\",href:sanitizeUrl(p)},m||p)),He.default.createElement(\"span\",null,He.default.createElement(g,(0,ar.default)({},this.props,{getConfigs:t,specPath:l.push(\"items\"),name:null,schema:c,required:!1,depth:n+1}))),\"]\"))}}const vr=\"property primitive\";class Primitive extends He.Component{render(){let{schema:e,getComponent:t,getConfigs:r,name:n,displayName:a,depth:o,expandDepth:s}=this.props;const{showExtensions:l}=r();if(!e||!e.get)return He.default.createElement(\"div\",null);let i=e.get(\"type\"),c=e.get(\"format\"),u=e.get(\"xml\"),d=e.get(\"enum\"),p=e.get(\"title\")||a||n,m=e.get(\"description\");const f=getExtensions(e);let h=e.filter(((e,t)=>-1===[\"enum\",\"type\",\"format\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(t))).filterNot(((e,t)=>f.has(t))),g=e.getIn([\"externalDocs\",\"url\"]),y=e.getIn([\"externalDocs\",\"description\"]);const S=t(\"Markdown\",!0),_=t(\"EnumModel\"),v=t(\"Property\"),b=t(\"ModelCollapse\"),w=t(\"Link\"),C=t(\"ModelExtensions\"),x=p&&He.default.createElement(\"span\",{className:\"model-title\"},He.default.createElement(\"span\",{className:\"model-title__text\"},p));return He.default.createElement(\"span\",{className:\"model\"},He.default.createElement(b,{title:x,expanded:o<=s,collapsedContent:\"[...]\"},He.default.createElement(\"span\",{className:\"prop\"},n&&o>1&&He.default.createElement(\"span\",{className:\"prop-name\"},p),He.default.createElement(\"span\",{className:\"prop-type\"},i),c&&He.default.createElement(\"span\",{className:\"prop-format\"},\"($\",c,\")\"),h.size?h.entrySeq().map((([e,t])=>He.default.createElement(v,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:vr}))):null,l&&f.size>0?He.default.createElement(C,{extensions:f,propClass:`${vr} extension`}):null,m?He.default.createElement(S,{source:m}):null,g&&He.default.createElement(\"div\",{className:\"external-docs\"},He.default.createElement(w,{target:\"_blank\",href:sanitizeUrl(g)},y||g)),u&&u.size?He.default.createElement(\"span\",null,He.default.createElement(\"br\",null),He.default.createElement(\"span\",{className:vr},\"xml:\"),u.entrySeq().map((([e,t])=>He.default.createElement(\"span\",{key:`${e}-${t}`,className:vr},He.default.createElement(\"br\",null),\"   \",e,\": \",String(t)))).toArray()):null,d&&He.default.createElement(_,{value:d,getComponent:t}))))}}class Schemes extends He.default.Component{UNSAFE_componentWillMount(){let{schemes:e}=this.props;this.setScheme(e.first())}UNSAFE_componentWillReceiveProps(e){this.props.currentScheme&&e.schemes.includes(this.props.currentScheme)||this.setScheme(e.schemes.first())}onChange=e=>{this.setScheme(e.target.value)};setScheme=e=>{let{path:t,method:r,specActions:n}=this.props;n.setScheme(e,t,r)};render(){let{schemes:e,currentScheme:t}=this.props;return He.default.createElement(\"label\",{htmlFor:\"schemes\"},He.default.createElement(\"span\",{className:\"schemes-title\"},\"Schemes\"),He.default.createElement(\"select\",{onChange:this.onChange,value:t,id:\"schemes\"},e.valueSeq().map((e=>He.default.createElement(\"option\",{value:e,key:e},e))).toArray()))}}class SchemesContainer extends He.default.Component{render(){const{specActions:e,specSelectors:t,getComponent:r}=this.props,n=t.operationScheme(),a=t.schemes(),o=r(\"schemes\");return a&&a.size?He.default.createElement(o,{currentScheme:n,schemes:a,specActions:e}):null}}var br=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return I.default}});const wr={value:\"\",onChange:()=>{},schema:{},keyName:\"\",required:!1,errors:(0,Xe.List)()};class JsonSchemaForm extends He.Component{static defaultProps=wr;componentDidMount(){const{dispatchInitialValue:e,value:t,onChange:r}=this.props;e?r(t):!1===e&&r(\"\")}render(){let{schema:e,errors:t,value:r,onChange:n,getComponent:a,fn:o,disabled:s}=this.props;const l=e&&e.get?e.get(\"format\"):null,i=e&&e.get?e.get(\"type\"):null,c=o.jsonSchema202012.foldType(immutableToJS(i)),u=o.isFileUploadIntended(e);let getComponentSilently=e=>a(e,!1,{failSilently:!0}),d=i?getComponentSilently(l?`JsonSchema_${i}_${l}`:`JsonSchema_${i}`):a(\"JsonSchema_string\");return u||!Xe.List.isList(i)||\"array\"!==c&&\"object\"!==c||(d=a(\"JsonSchema_object\")),d||(d=a(\"JsonSchema_string\")),He.default.createElement(d,(0,ar.default)({},this.props,{errors:t,fn:o,getComponent:a,value:r,onChange:n,schema:e,disabled:s}))}}class JsonSchema_string extends He.Component{static defaultProps=wr;onChange=e=>{const t=this.props.schema&&\"file\"===this.props.schema.get(\"type\")?e.target.files[0]:e.target.value;this.props.onChange(t,this.props.keyName)};onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,schema:r,errors:n,required:a,description:o,disabled:s}=this.props;const l=r&&r.get?r.get(\"enum\"):null,i=r&&r.get?r.get(\"format\"):null,c=r&&r.get?r.get(\"type\"):null,u=r&&r.get?r.get(\"in\"):null;if(t?(isImmutable(t)||\"object\"==typeof t)&&(t=stringify(t)):t=\"\",n=n.toJS?n.toJS():[],l){const r=e(\"Select\");return He.default.createElement(r,{className:n.length?\"invalid\":\"\",title:n.length?n:\"\",allowedValues:[...l],value:t,allowEmptyValue:!a,disabled:s,onChange:this.onEnumChange})}const d=s||u&&\"formData\"===u&&!(\"FormData\"in window),p=e(\"Input\");return c&&\"file\"===c?He.default.createElement(p,{type:\"file\",className:n.length?\"invalid\":\"\",title:n.length?n:\"\",onChange:this.onChange,disabled:d}):He.default.createElement(br.default,{type:i&&\"password\"===i?\"password\":\"text\",className:n.length?\"invalid\":\"\",title:n.length?n:\"\",value:t,minLength:0,debounceTimeout:350,placeholder:o,onChange:this.onChange,disabled:d})}}class JsonSchema_array extends He.PureComponent{static defaultProps=wr;constructor(e,t){super(e,t),this.state={value:valueOrEmptyList(e.value),schema:e.schema}}UNSAFE_componentWillReceiveProps(e){const t=valueOrEmptyList(e.value);t!==this.state.value&&this.setState({value:t}),e.schema!==this.state.schema&&this.setState({schema:e.schema})}onChange=()=>{this.props.onChange(this.state.value)};onItemChange=(e,t)=>{this.setState((({value:r})=>({value:r.set(t,e)})),this.onChange)};removeItem=e=>{this.setState((({value:t})=>({value:t.delete(e)})),this.onChange)};addItem=()=>{const{fn:e}=this.props;let t=valueOrEmptyList(this.state.value);this.setState((()=>({value:t.push(e.getSampleSchema(this.state.schema.get(\"items\"),!1,{includeWriteOnly:!0}))})),this.onChange)};onEnumChange=e=>{this.setState((()=>({value:e})),this.onChange)};render(){let{getComponent:e,required:t,schema:r,errors:n,fn:a,disabled:o}=this.props;n=n.toJS?n.toJS():Array.isArray(n)?n:[];const s=n.filter((e=>\"string\"==typeof e)),l=n.filter((e=>void 0!==e.needRemove)).map((e=>e.error)),i=this.state.value,c=!!(i&&i.count&&i.count()>0),u=r.getIn([\"items\",\"enum\"]),d=r.getIn([\"items\",\"type\"]),p=a.jsonSchema202012.foldType(immutableToJS(d)),m=a.jsonSchema202012.getType(immutableToJS(r.get(\"items\"))),f=r.getIn([\"items\",\"format\"]),h=r.get(\"items\");let g,y=!1,S=\"file\"===d||\"string\"===d&&\"binary\"===f;if(d&&f?g=e(`JsonSchema_${d}_${f}`):\"boolean\"!==d&&\"array\"!==d&&\"object\"!==d||(g=e(`JsonSchema_${d}`)),!Xe.List.isList(d)||\"array\"!==p&&\"object\"!==p||(g=e(\"JsonSchema_object\")),g||S||(y=!0),u){const r=e(\"Select\");return He.default.createElement(r,{className:n.length?\"invalid\":\"\",title:n.length?n:\"\",multiple:!0,value:i,disabled:o,allowedValues:u,allowEmptyValue:!t,onChange:this.onEnumChange})}const _=e(\"Button\");return He.default.createElement(\"div\",{className:\"json-schema-array\"},c?i.map(((t,r)=>{const s=(0,Xe.fromJS)([...n.filter((e=>e.index===r)).map((e=>e.error))]);return He.default.createElement(\"div\",{key:r,className:\"json-schema-form-item\"},S?He.default.createElement(JsonSchemaArrayItemFile,{value:t,onChange:e=>this.onItemChange(e,r),disabled:o,errors:s,getComponent:e}):y?He.default.createElement(JsonSchemaArrayItemText,{value:t,onChange:e=>this.onItemChange(e,r),disabled:o,errors:s}):He.default.createElement(g,(0,ar.default)({},this.props,{value:t,onChange:e=>this.onItemChange(e,r),disabled:o,errors:s,schema:h,getComponent:e,fn:a})),o?null:He.default.createElement(_,{className:`btn btn-sm json-schema-form-item-remove ${l.length?\"invalid\":null}`,title:l.length?l:\"\",onClick:()=>this.removeItem(r)},\" - \"))})):null,o?null:He.default.createElement(_,{className:`btn btn-sm json-schema-form-item-add ${s.length?\"invalid\":null}`,title:s.length?s:\"\",onClick:this.addItem},\"Add \",m,\" item\"))}}class JsonSchemaArrayItemText extends He.Component{static defaultProps=wr;onChange=e=>{const t=e.target.value;this.props.onChange(t,this.props.keyName)};render(){let{value:e,errors:t,description:r,disabled:n}=this.props;return e?(isImmutable(e)||\"object\"==typeof e)&&(e=stringify(e)):e=\"\",t=t.toJS?t.toJS():[],He.default.createElement(br.default,{type:\"text\",className:t.length?\"invalid\":\"\",title:t.length?t:\"\",value:e,minLength:0,debounceTimeout:350,placeholder:r,onChange:this.onChange,disabled:n})}}class JsonSchemaArrayItemFile extends He.Component{static defaultProps=wr;onFileChange=e=>{const t=e.target.files[0];this.props.onChange(t,this.props.keyName)};render(){let{getComponent:e,errors:t,disabled:r}=this.props;const n=e(\"Input\"),a=r||!(\"FormData\"in window);return He.default.createElement(n,{type:\"file\",className:t.length?\"invalid\":\"\",title:t.length?t:\"\",onChange:this.onFileChange,disabled:a})}}class JsonSchema_boolean extends He.Component{static defaultProps=wr;onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,errors:r,schema:n,required:a,disabled:o}=this.props;r=r.toJS?r.toJS():[];let s=n&&n.get?n.get(\"enum\"):null,l=!s||!a,i=!s&&[\"true\",\"false\"];const c=e(\"Select\");return He.default.createElement(c,{className:r.length?\"invalid\":\"\",title:r.length?r:\"\",value:String(t),disabled:o,allowedValues:s?[...s]:i,allowEmptyValue:l,onChange:this.onEnumChange})}}const stringifyObjectErrors=e=>e.map((e=>{const t=void 0!==e.propKey?e.propKey:e.index;let r=\"string\"==typeof e?e:\"string\"==typeof e.error?e.error:null;if(!t&&r)return r;let n=e.error,a=`/${e.propKey}`;for(;\"object\"==typeof n;){const e=void 0!==n.propKey?n.propKey:n.index;if(void 0===e)break;if(a+=`/${e}`,!n.error)break;n=n.error}return`${a}: ${n}`}));class JsonSchema_object extends He.PureComponent{constructor(){super()}static defaultProps=wr;onChange=e=>{this.props.onChange(e)};handleOnChange=e=>{const t=e.target.value;this.onChange(t)};render(){let{getComponent:e,value:t,errors:r,disabled:n}=this.props;const a=e(\"TextArea\");return r=r.toJS?r.toJS():Array.isArray(r)?r:[],He.default.createElement(\"div\",null,He.default.createElement(a,{className:(0,hr.default)({invalid:r.length}),title:r.length?stringifyObjectErrors(r).join(\", \"):\"\",value:stringify(t),disabled:n,onChange:this.handleOnChange}))}}function valueOrEmptyList(e){return Xe.List.isList(e)?e:Array.isArray(e)?(0,Xe.fromJS)(e):(0,Xe.List)()}const ModelExtensions=({extensions:e,propClass:t=\"\"})=>e.entrySeq().map((([e,r])=>{const n=immutableToJS(r)??null;return He.default.createElement(\"tr\",{key:e,className:t},He.default.createElement(\"td\",null,e),He.default.createElement(\"td\",null,JSON.stringify(n)))})).toArray();var Cr=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return j.default}});const hasSchemaType=(e,t)=>{const r=Xe.Map.isMap(e);if(!r&&!(0,Cr.default)(e))return!1;const n=r?e.get(\"type\"):e.type;return t===n||Array.isArray(t)&&t.includes(n)};var json_schema_5=()=>({components:{modelExample:model_example,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,ModelExtensions,schemes:Schemes,SchemesContainer,...Le},fn:{hasSchemaType}}),xr=__webpack_require__(123),Or=__webpack_require__.n(xr),kr=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return R.default}}),Nr=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return T.default}});const shallowArrayEquals=e=>t=>Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every(((e,r)=>e===t[r])),list=(...e)=>e;class Cache extends Map{delete(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.delete(t)}get(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.get(t)}has(e){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals(e))}}var utils_memoizeN=(e,t=list)=>{const{Cache:r}=ut.default;ut.default.Cache=Cache;const n=(0,ut.default)(e,t);return ut.default.Cache=r,n};const Ar={string:e=>e.pattern?(e=>{try{return new kr.default(e).gen()}catch(e){return\"string\"}})(e.pattern):\"string\",string_email:()=>\"user@example.com\",\"string_date-time\":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",string_hostname:()=>\"example.com\",string_ipv4:()=>\"198.51.100.42\",string_ipv6:()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>\"boolean\"!=typeof e.default||e.default},primitive=e=>{e=objectify(e);let{type:t,format:r}=e,n=Ar[`${t}_${r}`]||Ar[t];return isFunc(n)?n(e):\"Unknown Type: \"+e.type},sanitizeRef=e=>deeplyStripKey(e,\"$$ref\",(e=>\"string\"==typeof e&&e.indexOf(\"#\")>-1)),Ir=[\"maxProperties\",\"minProperties\"],jr=[\"minItems\",\"maxItems\"],Rr=[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\"],Tr=[\"minLength\",\"maxLength\"],mergeJsonSchema=(e,t,r={})=>{const n={...e};if([\"example\",\"default\",\"enum\",\"xml\",\"type\",...Ir,...jr,...Rr,...Tr].forEach((e=>(e=>{void 0===n[e]&&void 0!==t[e]&&(n[e]=t[e])})(e))),void 0!==t.required&&Array.isArray(t.required)&&(void 0!==n.required&&n.required.length||(n.required=[]),t.required.forEach((e=>{n.required.includes(e)||n.required.push(e)}))),t.properties){n.properties||(n.properties={});let e=objectify(t.properties);for(let a in e)Object.prototype.hasOwnProperty.call(e,a)&&(e[a]&&e[a].deprecated||e[a]&&e[a].readOnly&&!r.includeReadOnly||e[a]&&e[a].writeOnly&&!r.includeWriteOnly||n.properties[a]||(n.properties[a]=e[a],!t.required&&Array.isArray(t.required)&&-1!==t.required.indexOf(a)&&(n.required?n.required.push(a):n.required=[a])))}return t.items&&(n.items||(n.items={}),n.items=mergeJsonSchema(n.items,t.items,r)),n},sampleFromSchemaGeneric=(e,t={},r=void 0,n=!1)=>{e&&isFunc(e.toJS)&&(e=e.toJS());let a=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const o=!a&&e&&e.oneOf&&e.oneOf.length>0,s=!a&&e&&e.anyOf&&e.anyOf.length>0;if(!a&&(o||s)){const r=objectify(o?e.oneOf[0]:e.anyOf[0]);if(!(e=mergeJsonSchema(e,r,t)).xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)a=!0;else if(r.properties){e.properties||(e.properties={});let n=objectify(r.properties);for(let a in n)Object.prototype.hasOwnProperty.call(n,a)&&(n[a]&&n[a].deprecated||n[a]&&n[a].readOnly&&!t.includeReadOnly||n[a]&&n[a].writeOnly&&!t.includeWriteOnly||e.properties[a]||(e.properties[a]=n[a],!r.required&&Array.isArray(r.required)&&-1!==r.required.indexOf(a)&&(e.required?e.required.push(a):e.required=[a])))}}const l={};let{xml:i,type:c,example:u,properties:d,additionalProperties:p,items:m}=e||{},{includeReadOnly:f,includeWriteOnly:h}=t;i=i||{};let g,{name:y,prefix:S,namespace:_}=i,v={};if(n&&(y=y||\"notagname\",g=(S?S+\":\":\"\")+y,_)){l[S?\"xmlns:\"+S:\"xmlns\"]=_}n&&(v[g]=[]);const schemaHasAny=t=>t.some((t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!c&&(d||p||schemaHasAny(Ir)?c=\"object\":m||schemaHasAny(jr)?c=\"array\":schemaHasAny(Rr)?(c=\"number\",e.type=\"number\"):a||e.enum||(c=\"string\",e.type=\"string\"));const handleMinMaxItems=t=>{if(null!=e?.maxItems&&(t=t.slice(0,e?.maxItems)),null!=e?.minItems){let r=0;for(;t.length<e?.minItems;)t.push(t[r++%t.length])}return t},b=objectify(d);let w,C=0;const hasExceededMaxProperties=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&C>=e.maxProperties,canAddProperty=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!hasExceededMaxProperties()&&(!(t=>!(e&&e.required&&e.required.length&&e.required.includes(t)))(t)||e.maxProperties-C-(()=>{if(!e||!e.required)return 0;let t=0;return n?e.required.forEach((e=>t+=void 0===v[e]?0:1)):e.required.forEach((e=>t+=void 0===v[g]?.find((t=>void 0!==t[e]))?0:1)),e.required.length-t})()>0);if(w=n?(r,a=void 0)=>{if(e&&b[r]){if(b[r].xml=b[r].xml||{},b[r].xml.attribute){const e=Array.isArray(b[r].enum)?b[r].enum[0]:void 0,t=b[r].example,n=b[r].default;return void(l[b[r].xml.name||r]=void 0!==t?t:void 0!==n?n:void 0!==e?e:primitive(b[r]))}b[r].xml.name=b[r].xml.name||r}else b[r]||!1===p||(b[r]={xml:{name:r}});let o=sampleFromSchemaGeneric(e&&b[r]||void 0,t,a,n);canAddProperty(r)&&(C++,Array.isArray(o)?v[g]=v[g].concat(o):v[g].push(o))}:(r,a)=>{if(canAddProperty(r)){if(Object.prototype.hasOwnProperty.call(e,\"discriminator\")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,\"mapping\")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,\"$$ref\")&&e.$$ref&&e.discriminator.propertyName===r){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){v[r]=t;break}}else v[r]=sampleFromSchemaGeneric(b[r],t,a,n);C++}},a){let a;if(a=sanitizeRef(void 0!==r?r:void 0!==u?u:e.default),!n){if(\"number\"==typeof a&&\"string\"===c)return`${a}`;if(\"string\"!=typeof a||\"string\"===c)return a;try{return JSON.parse(a)}catch(e){return a}}if(e||(c=Array.isArray(a)?\"array\":typeof a),\"array\"===c){if(!Array.isArray(a)){if(\"string\"==typeof a)return a;a=[a]}const r=e?e.items:void 0;r&&(r.xml=r.xml||i||{},r.xml.name=r.xml.name||i.name);let o=a.map((e=>sampleFromSchemaGeneric(r,t,e,n)));return o=handleMinMaxItems(o),i.wrapped?(v[g]=o,(0,Nr.default)(l)||v[g].push({_attr:l})):v=o,v}if(\"object\"===c){if(\"string\"==typeof a)return a;for(let t in a)Object.prototype.hasOwnProperty.call(a,t)&&(e&&b[t]&&b[t].readOnly&&!f||e&&b[t]&&b[t].writeOnly&&!h||(e&&b[t]&&b[t].xml&&b[t].xml.attribute?l[b[t].xml.name||t]=a[t]:w(t,a[t])));return(0,Nr.default)(l)||v[g].push({_attr:l}),v}return v[g]=(0,Nr.default)(l)?a:[{_attr:l},a],v}if(\"object\"===c){for(let e in b)Object.prototype.hasOwnProperty.call(b,e)&&(b[e]&&b[e].deprecated||b[e]&&b[e].readOnly&&!f||b[e]&&b[e].writeOnly&&!h||w(e));if(n&&l&&v[g].push({_attr:l}),hasExceededMaxProperties())return v;if(!0===p)n?v[g].push({additionalProp:\"Anything can be here\"}):v.additionalProp1={},C++;else if(p){const r=objectify(p),a=sampleFromSchemaGeneric(r,t,void 0,n);if(n&&r.xml&&r.xml.name&&\"notagname\"!==r.xml.name)v[g].push(a);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&C<e.minProperties?e.minProperties-C:3;for(let e=1;e<=t;e++){if(hasExceededMaxProperties())return v;if(n){const t={};t[\"additionalProp\"+e]=a.notagname,v[g].push(t)}else v[\"additionalProp\"+e]=a;C++}}}return v}if(\"array\"===c){if(!m)return;let r;if(n&&(m.xml=m.xml||e?.xml||{},m.xml.name=m.xml.name||i.name),Array.isArray(m.anyOf))r=m.anyOf.map((e=>sampleFromSchemaGeneric(mergeJsonSchema(e,m,t),t,void 0,n)));else if(Array.isArray(m.oneOf))r=m.oneOf.map((e=>sampleFromSchemaGeneric(mergeJsonSchema(e,m,t),t,void 0,n)));else{if(!(!n||n&&i.wrapped))return sampleFromSchemaGeneric(m,t,void 0,n);r=[sampleFromSchemaGeneric(m,t,void 0,n)]}return r=handleMinMaxItems(r),n&&i.wrapped?(v[g]=r,(0,Nr.default)(l)||v[g].push({_attr:l}),v):r}let x;if(e&&Array.isArray(e.enum))x=normalizeArray(e.enum)[0];else{if(!e)return;if(x=primitive(e),\"number\"==typeof x){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,x=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,x=r)}if(\"string\"==typeof x&&(null!==e.maxLength&&void 0!==e.maxLength&&(x=x.slice(0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;x.length<e.minLength;)x+=x[t++%x.length]}}if(\"file\"!==c)return n?(v[g]=(0,Nr.default)(l)?x:[{_attr:l},x],v):x},inferSchema=e=>(e.schema&&(e=e.schema),e.properties&&(e.type=\"object\"),e),createXMLExample=(e,t,r)=>{const n=sampleFromSchemaGeneric(e,t,r,!0);if(n)return\"string\"==typeof n?n:Or()(n,{declaration:!0,indent:\"\\t\"})},sampleFromSchema=(e,t,r)=>sampleFromSchemaGeneric(e,t,r,!1),resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],Pr=utils_memoizeN(createXMLExample,resolver),Br=utils_memoizeN(sampleFromSchema,resolver),Mr=[{when:/json/,shouldStringifyTypes:[\"string\"]}],qr=[\"object\"];var get_json_sample_schema=e=>(t,r,n,a)=>{const{fn:o}=e(),s=o.memoizedSampleFromSchema(t,r,a),l=typeof s,i=Mr.reduce(((e,t)=>t.when.test(n)?[...e,...t.shouldStringifyTypes]:e),qr);return(0,pt.default)(i,(e=>e===l))?JSON.stringify(s,null,2):s};var get_yaml_sample_schema=e=>(t,r,n,a)=>{const{fn:o}=e(),s=o.getJsonSampleSchema(t,r,n,a);let l;try{l=Jt.default.dump(Jt.default.load(s),{lineWidth:-1},{schema:Jt.JSON_SCHEMA}),\"\\n\"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),\"error: could not generate yaml example\"}return l.replace(/\\t/g,\"  \")};var get_xml_sample_schema=e=>(t,r,n)=>{const{fn:a}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(t.$$ref){let e=t.$$ref.match(/\\S*\\/(\\S+)$/);t.xml.name=e[1]}}return a.memoizedCreateXMLExample(t,r,n)};var get_sample_schema=e=>(t,r=\"\",n={},a=void 0)=>{const{fn:o}=e();return\"function\"==typeof t?.toJS&&(t=t.toJS()),\"function\"==typeof a?.toJS&&(a=a.toJS()),/xml/.test(r)?o.getXmlSampleSchema(t,n,a):/(yaml|yml)/.test(r)?o.getYamlSampleSchema(t,n,r,a):o.getJsonSampleSchema(t,n,r,a)};var json_schema_5_samples=({getSystem:e})=>{const t=get_json_sample_schema(e),r=get_yaml_sample_schema(e),n=get_xml_sample_schema(e),a=get_sample_schema(e);return{fn:{jsonSchema5:{inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Br,memoizedCreateXMLExample:Pr,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:n,getSampleSchema:a,mergeJsonSchema},inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Br,memoizedCreateXMLExample:Pr,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:n,getSampleSchema:a,mergeJsonSchema}}},Lr=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return P.default}});const Ur=[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],spec_selectors_state=e=>e||(0,Xe.Map)(),Dr=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"lastError\"))),$r=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"url\"))),Vr=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"spec\")||\"\")),Jr=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"specSource\")||\"not-editor\")),Fr=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"json\",(0,Xe.Map)()))),zr=(0,Pt.createSelector)(Fr,(e=>e.toJS())),Kr=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"resolved\",(0,Xe.Map)()))),specResolvedSubtree=(e,t)=>e.getIn([\"resolvedSubtrees\",...t],void 0),mergerFn=(e,t)=>Xe.Map.isMap(e)&&Xe.Map.isMap(t)?t.get(\"$$ref\")?t:(0,Xe.OrderedMap)().mergeWith(mergerFn,e,t):t,Wr=(0,Pt.createSelector)(spec_selectors_state,(e=>(0,Xe.OrderedMap)().mergeWith(mergerFn,e.get(\"json\"),e.get(\"resolvedSubtrees\")))),spec=e=>Fr(e),Hr=(0,Pt.createSelector)(spec,(()=>!1)),Gr=(0,Pt.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get(\"info\")))),Xr=(0,Pt.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get(\"externalDocs\")))),Yr=(0,Pt.createSelector)(Gr,(e=>e&&e.get(\"version\"))),Qr=(0,Pt.createSelector)(Yr,(e=>/v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(e).slice(1))),Zr=(0,Pt.createSelector)(Wr,(e=>e.get(\"paths\"))),en=(0,Lr.default)([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\"]),tn=(0,Pt.createSelector)(Zr,(e=>{let t=(0,Xe.List)();return!Xe.Map.isMap(e)||e.isEmpty()||e.forEach(((e,r)=>{if(!e||!e.forEach)return{};e.forEach(((e,n)=>{Ur.indexOf(n)<0||(t=t.push((0,Xe.fromJS)({path:r,method:n,operation:e,id:`${n}-${r}`})))}))})),t})),rn=(0,Pt.createSelector)(spec,(e=>(0,Xe.Set)(e.get(\"consumes\")))),nn=(0,Pt.createSelector)(spec,(e=>(0,Xe.Set)(e.get(\"produces\")))),an=(0,Pt.createSelector)(spec,(e=>e.get(\"security\",(0,Xe.List)()))),on=(0,Pt.createSelector)(spec,(e=>e.get(\"securityDefinitions\"))),findDefinition=(e,t)=>{const r=e.getIn([\"resolvedSubtrees\",\"definitions\",t],null),n=e.getIn([\"json\",\"definitions\",t],null);return r||n||null},sn=(0,Pt.createSelector)(spec,(e=>{const t=e.get(\"definitions\");return Xe.Map.isMap(t)?t:(0,Xe.Map)()})),ln=(0,Pt.createSelector)(spec,(e=>e.get(\"basePath\"))),cn=(0,Pt.createSelector)(spec,(e=>e.get(\"host\"))),un=(0,Pt.createSelector)(spec,(e=>e.get(\"schemes\",(0,Xe.Map)()))),dn=(0,Pt.createSelector)([tn,rn,nn],((e,t,r)=>e.map((e=>e.update(\"operation\",(e=>Xe.Map.isMap(e)?e.withMutations((e=>(e.get(\"consumes\")||e.update(\"consumes\",(e=>(0,Xe.Set)(e).merge(t))),e.get(\"produces\")||e.update(\"produces\",(e=>(0,Xe.Set)(e).merge(r))),e))):(0,Xe.Map)())))))),pn=(0,Pt.createSelector)(spec,(e=>{const t=e.get(\"tags\",(0,Xe.List)());return Xe.List.isList(t)?t.filter((e=>Xe.Map.isMap(e))):(0,Xe.List)()})),tagDetails=(e,t)=>(pn(e)||(0,Xe.List)()).filter(Xe.Map.isMap).find((e=>e.get(\"name\")===t),(0,Xe.Map)()),mn=(0,Pt.createSelector)(dn,pn,((e,t)=>e.reduce(((e,t)=>{let r=(0,Xe.Set)(t.getIn([\"operation\",\"tags\"]));return r.count()<1?e.update(\"default\",(0,Xe.List)(),(e=>e.push(t))):r.reduce(((e,r)=>e.update(r,(0,Xe.List)(),(e=>e.push(t)))),e)}),t.reduce(((e,t)=>e.set(t.get(\"name\"),(0,Xe.List)())),(0,Xe.OrderedMap)())))),selectors_taggedOperations=e=>({getConfigs:t})=>{let{tagsSorter:r,operationsSorter:n}=t();return mn(e).sortBy(((e,t)=>t),((e,t)=>{let n=\"function\"==typeof r?r:xt.tagsSorter[r];return n?n(e,t):null})).map(((t,r)=>{let a=\"function\"==typeof n?n:xt.operationsSorter[n],o=a?t.sort(a):t;return(0,Xe.Map)({tagDetails:tagDetails(e,r),operations:o})}))},fn=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"responses\",(0,Xe.Map)()))),hn=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"requests\",(0,Xe.Map)()))),gn=(0,Pt.createSelector)(spec_selectors_state,(e=>e.get(\"mutatedRequests\",(0,Xe.Map)()))),responseFor=(e,t,r)=>fn(e).getIn([t,r],null),requestFor=(e,t,r)=>hn(e).getIn([t,r],null),mutatedRequestFor=(e,t,r)=>gn(e).getIn([t,r],null),allowTryItOutFor=()=>!0,parameterWithMetaByIdentity=(e,t,r)=>{const n=Wr(e).getIn([\"paths\",...t,\"parameters\"],(0,Xe.OrderedMap)()),a=e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,Xe.OrderedMap)());return n.map((e=>{const t=a.get(`${r.get(\"in\")}.${r.get(\"name\")}`),n=a.get(`${r.get(\"in\")}.${r.get(\"name\")}.hash-${r.hashCode()}`);return(0,Xe.OrderedMap)().merge(e,t,n)})).find((e=>e.get(\"in\")===r.get(\"in\")&&e.get(\"name\")===r.get(\"name\")),(0,Xe.OrderedMap)())},parameterInclusionSettingFor=(e,t,r,n)=>{const a=`${n}.${r}`;return e.getIn([\"meta\",\"paths\",...t,\"parameter_inclusions\",a],!1)},parameterWithMeta=(e,t,r,n)=>{const a=Wr(e).getIn([\"paths\",...t,\"parameters\"],(0,Xe.OrderedMap)()).find((e=>e.get(\"in\")===n&&e.get(\"name\")===r),(0,Xe.OrderedMap)());return parameterWithMetaByIdentity(e,t,a)},operationWithMeta=(e,t,r)=>{const n=Wr(e).getIn([\"paths\",t,r],(0,Xe.OrderedMap)()),a=e.getIn([\"meta\",\"paths\",t,r],(0,Xe.OrderedMap)()),o=n.get(\"parameters\",(0,Xe.List)()).map((n=>parameterWithMetaByIdentity(e,[t,r],n)));return(0,Xe.OrderedMap)().merge(n,a).set(\"parameters\",o)};function getParameter(e,t,r,n){return t=t||[],e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,Xe.fromJS)([])).find((e=>Xe.Map.isMap(e)&&e.get(\"name\")===r&&e.get(\"in\")===n))||(0,Xe.Map)()}const yn=(0,Pt.createSelector)(spec,(e=>{const t=e.get(\"host\");return\"string\"==typeof t&&t.length>0&&\"/\"!==t[0]}));function parameterValues(e,t,r){return t=t||[],operationWithMeta(e,...t).get(\"parameters\",(0,Xe.List)()).reduce(((e,t)=>{let n=r&&\"body\"===t.get(\"in\")?t.get(\"value_xml\"):t.get(\"value\");return Xe.List.isList(n)&&(n=n.filter((e=>\"\"!==e))),e.set(paramToIdentifier(t,{allowHashes:!1}),n)}),(0,Xe.fromJS)({}))}function parametersIncludeIn(e,t=\"\"){if(Xe.List.isList(e))return e.some((e=>Xe.Map.isMap(e)&&e.get(\"in\")===t))}function parametersIncludeType(e,t=\"\"){if(Xe.List.isList(e))return e.some((e=>Xe.Map.isMap(e)&&e.get(\"type\")===t))}function contentTypeValues(e,t){t=t||[];let r=Wr(e).getIn([\"paths\",...t],(0,Xe.fromJS)({})),n=e.getIn([\"meta\",\"paths\",...t],(0,Xe.fromJS)({})),a=currentProducesFor(e,t);const o=r.get(\"parameters\")||new Xe.List,s=n.get(\"consumes_value\")?n.get(\"consumes_value\"):parametersIncludeType(o,\"file\")?\"multipart/form-data\":parametersIncludeType(o,\"formData\")?\"application/x-www-form-urlencoded\":void 0;return(0,Xe.fromJS)({requestContentType:s,responseContentType:a})}function currentProducesFor(e,t){t=t||[];const r=Wr(e).getIn([\"paths\",...t],null);if(null===r)return;const n=e.getIn([\"meta\",\"paths\",...t,\"produces_value\"],null),a=r.getIn([\"produces\",0],null);return n||a||\"application/json\"}function producesOptionsFor(e,t){t=t||[];const r=Wr(e),n=r.getIn([\"paths\",...t],null);if(null===n)return;const[a]=t,o=n.get(\"produces\",null),s=r.getIn([\"paths\",a,\"produces\"],null),l=r.getIn([\"produces\"],null);return o||s||l}function consumesOptionsFor(e,t){t=t||[];const r=Wr(e),n=r.getIn([\"paths\",...t],null);if(null===n)return;const[a]=t,o=n.get(\"consumes\",null),s=r.getIn([\"paths\",a,\"consumes\"],null),l=r.getIn([\"consumes\"],null);return o||s||l}const operationScheme=(e,t,r)=>{let n=e.get(\"url\").match(/^([a-z][a-z0-9+\\-.]*):/),a=Array.isArray(n)?n[1]:null;return e.getIn([\"scheme\",t,r])||e.getIn([\"scheme\",\"_defaultScheme\"])||a||\"\"},canExecuteScheme=(e,t,r)=>[\"http\",\"https\"].indexOf(operationScheme(e,t,r))>-1,validationErrors=(e,t)=>{t=t||[];const r=e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,Xe.fromJS)([])),n=[];if(0===r.length)return n;const getErrorsWithPaths=(e,t=[])=>{const getNestedErrorsWithPaths=(e,t)=>{const r=[...t,e.get(\"propKey\")||e.get(\"index\")];return Xe.Map.isMap(e.get(\"error\"))?getErrorsWithPaths(e.get(\"error\"),r):{error:e.get(\"error\"),path:r}};return Xe.List.isList(e)?e.map((e=>Xe.Map.isMap(e)?getNestedErrorsWithPaths(e,t):{error:e,path:t})):getNestedErrorsWithPaths(e,t)};return r.forEach(((e,t)=>{const r=t.split(\".\").slice(1,-1).join(\".\"),a=e.get(\"errors\");if(a&&a.count()){getErrorsWithPaths(a).forEach((({error:e,path:t})=>{n.push(((e,t,r)=>`For '${r}'${(t=t.reduce(((e,t)=>\"number\"==typeof t?`${e}[${t}]`:e?`${e}.${t}`:t),\"\"))?` at path '${t}'`:\"\"}: ${e}.`)(e,t,r))}))}})),n},validateBeforeExecute=(e,t)=>0===validationErrors(e,t).length,getOAS3RequiredRequestBodyContentType=(e,t)=>{let r={requestBody:!1,requestContentType:{}},n=e.getIn([\"resolvedSubtrees\",\"paths\",...t,\"requestBody\"],(0,Xe.fromJS)([]));return n.size<1||(n.getIn([\"required\"])&&(r.requestBody=n.getIn([\"required\"])),n.getIn([\"content\"]).entrySeq().forEach((e=>{const t=e[0];if(e[1].getIn([\"schema\",\"required\"])){const n=e[1].getIn([\"schema\",\"required\"]).toJS();r.requestContentType[t]=n}}))),r},isMediaTypeSchemaPropertiesEqual=(e,t,r,n)=>{if((r||n)&&r===n)return!0;let a=e.getIn([\"resolvedSubtrees\",\"paths\",...t,\"requestBody\",\"content\"],(0,Xe.fromJS)([]));if(a.size<2||!r||!n)return!1;let o=a.getIn([r,\"schema\",\"properties\"],(0,Xe.fromJS)([])),s=a.getIn([n,\"schema\",\"properties\"],(0,Xe.fromJS)([]));return!!o.equals(s)};function returnSelfOrNewMap(e){return Xe.Map.isMap(e)?e:new Xe.Map}var En=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return B.default}}),Sn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return M.default}}),_n=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return q.default}}),vn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return L.default}});const bn=\"spec_update_spec\",wn=\"spec_update_url\",Cn=\"spec_update_json\",xn=\"spec_update_param\",On=\"spec_update_empty_param_inclusion\",kn=\"spec_validate_param\",Nn=\"spec_set_response\",An=\"spec_set_request\",In=\"spec_set_mutated_request\",jn=\"spec_log_request\",Rn=\"spec_clear_response\",Tn=\"spec_clear_request\",Pn=\"spec_clear_validate_param\",Bn=\"spec_update_operation_meta_value\",Mn=\"spec_update_resolved\",qn=\"spec_update_resolved_subtree\",Ln=\"set_scheme\",toStr=e=>(0,En.default)(e)?e:\"\";function updateSpec(e){const t=toStr(e).replace(/\\t/g,\"  \");if(\"string\"==typeof e)return{type:bn,payload:t}}function updateResolved(e){return{type:Mn,payload:e}}function updateUrl(e){return{type:wn,payload:e}}function updateJsonSpec(e){return{type:Cn,payload:e}}const parseToJson=e=>({specActions:t,specSelectors:r,errActions:n})=>{let{specStr:a}=r,o=null;try{e=e||a(),n.clear({source:\"parser\"}),o=Jt.default.load(e,{schema:Jt.JSON_SCHEMA})}catch(e){return console.error(e),n.newSpecErr({source:\"parser\",level:\"error\",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return o&&\"object\"==typeof o?t.updateJsonSpec(o):t.updateJsonSpec({})};let Un=!1;const resolveSpec=(e,t)=>({specActions:r,specSelectors:n,errActions:a,fn:{fetch:o,resolve:s,AST:l={}},getConfigs:i})=>{Un||(console.warn(\"specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!\"),Un=!0);const{modelPropertyMacro:c,parameterMacro:u,requestInterceptor:d,responseInterceptor:p}=i();void 0===e&&(e=n.specJson()),void 0===t&&(t=n.url());let m=l.getLineNumberForPath?l.getLineNumberForPath:()=>{},f=n.specStr();return s({fetch:o,spec:e,baseDoc:String(new URL(t,document.baseURI)),modelPropertyMacro:c,parameterMacro:u,requestInterceptor:d,responseInterceptor:p}).then((({spec:e,errors:t})=>{if(a.clear({type:\"thrown\"}),Array.isArray(t)&&t.length>0){let e=t.map((e=>(console.error(e),e.line=e.fullPath?m(f,e.fullPath):null,e.path=e.fullPath?e.fullPath.join(\".\"):null,e.level=\"error\",e.type=\"thrown\",e.source=\"resolver\",Object.defineProperty(e,\"message\",{enumerable:!0,value:e.message}),e)));a.newThrownErrBatch(e)}return r.updateResolved(e)}))};let Dn=[];const $n=(0,Sn.default)((()=>{const e=Dn.reduce(((e,{path:t,system:r})=>(e.has(r)||e.set(r,[]),e.get(r).push(t),e)),new Map);Dn=[],e.forEach((async(e,t)=>{if(!t)return void console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\");if(!t.fn.resolveSubtree)return void console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\");const{errActions:r,errSelectors:n,fn:{resolveSubtree:a,fetch:o,AST:s={}},specSelectors:l,specActions:i}=t,c=s.getLineNumberForPath??(0,Lr.default)(void 0),u=l.specStr(),{modelPropertyMacro:d,parameterMacro:p,requestInterceptor:m,responseInterceptor:f}=t.getConfigs();try{const t=await e.reduce((async(e,t)=>{let{resultMap:s,specWithCurrentSubtrees:i}=await e;const{errors:h,spec:g}=await a(i,t,{baseDoc:String(new URL(l.url(),document.baseURI)),modelPropertyMacro:d,parameterMacro:p,requestInterceptor:m,responseInterceptor:f});if(n.allErrors().size&&r.clearBy((e=>\"thrown\"!==e.get(\"type\")||\"resolver\"!==e.get(\"source\")||!e.get(\"fullPath\")?.every(((e,r)=>e===t[r]||void 0===t[r])))),Array.isArray(h)&&h.length>0){let e=h.map((e=>(e.line=e.fullPath?c(u,e.fullPath):null,e.path=e.fullPath?e.fullPath.join(\".\"):null,e.level=\"error\",e.type=\"thrown\",e.source=\"resolver\",Object.defineProperty(e,\"message\",{enumerable:!0,value:e.message}),e)));r.newThrownErrBatch(e)}return g&&l.isOAS3()&&\"components\"===t[0]&&\"securitySchemes\"===t[1]&&await Promise.all(Object.values(g).filter((e=>\"openIdConnect\"===e?.type)).map((async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:m,responseInterceptor:f};try{const r=await o(t);r instanceof Error||r.status>=400?console.error(r.statusText+\" \"+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}}))),(0,_n.default)(s,t,g),i=(0,vn.default)(t,g,i),{resultMap:s,specWithCurrentSubtrees:i}}),Promise.resolve({resultMap:(l.specResolvedSubtree([])||(0,Xe.Map)()).toJS(),specWithCurrentSubtrees:l.specJS()}));i.updateResolvedSubtree([],t.resultMap)}catch(e){console.error(e)}}))}),35),requestResolvedSubtree=e=>t=>{Dn.find((({path:r,system:n})=>n===t&&r.toString()===e.toString()))||(Dn.push({path:e,system:t}),$n())};function changeParam(e,t,r,n,a){return{type:xn,payload:{path:e,value:n,paramName:t,paramIn:r,isXml:a}}}function changeParamByIdentity(e,t,r,n){return{type:xn,payload:{path:e,param:t,value:r,isXml:n}}}const updateResolvedSubtree=(e,t)=>({type:qn,payload:{path:e,value:t}}),invalidateResolvedSubtreeCache=()=>({type:qn,payload:{path:[],value:(0,Xe.Map)()}}),validateParams=(e,t)=>({type:kn,payload:{pathMethod:e,isOAS3:t}}),updateEmptyParamInclusion=(e,t,r,n)=>({type:On,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:n}});function clearValidateParams(e){return{type:Pn,payload:{pathMethod:e}}}function changeConsumesValue(e,t){return{type:Bn,payload:{path:e,value:t,key:\"consumes_value\"}}}function changeProducesValue(e,t){return{type:Bn,payload:{path:e,value:t,key:\"produces_value\"}}}const setResponse=(e,t,r)=>({payload:{path:e,method:t,res:r},type:Nn}),setRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:An}),setMutatedRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:In}),logRequest=e=>({payload:e,type:jn}),executeRequest=e=>({fn:t,specActions:r,specSelectors:n,getConfigs:a,oas3Selectors:o})=>{let{pathName:s,method:l,operation:i}=e,{requestInterceptor:c,responseInterceptor:u}=a(),d=i.toJS();if(i&&i.get(\"parameters\")&&i.get(\"parameters\").filter((e=>e&&!0===e.get(\"allowEmptyValue\"))).forEach((t=>{if(n.parameterInclusionSettingFor([s,l],t.get(\"name\"),t.get(\"in\"))){e.parameters=e.parameters||{};const r=paramToValue(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get(\"name\")]=\"\")}})),e.contextUrl=(0,Ot.default)(n.url()).toString(),d&&d.operationId?e.operationId=d.operationId:d&&s&&l&&(e.operationId=t.opId(d,s,l)),n.isOAS3()){const t=`${s}:${l}`;e.server=o.selectedServer(t)||o.selectedServer();const r=o.serverVariables({server:e.server,namespace:t}).toJS(),n=o.serverVariables({server:e.server}).toJS();e.serverVariables=Object.keys(r).length?r:n,e.requestContentType=o.requestContentType(s,l),e.responseContentType=o.responseContentType(s,l)||\"*/*\";const a=o.requestBodyValue(s,l),i=o.requestBodyInclusionSetting(s,l);a&&a.toJS?e.requestBody=a.map((e=>Xe.Map.isMap(e)?e.get(\"value\"):e)).filter(((e,t)=>(Array.isArray(e)?0!==e.length:!isEmptyValue(e))||i.get(t))).toJS():e.requestBody=a}let p=Object.assign({},e);p=t.buildRequest(p),r.setRequest(e.pathName,e.method,p);e.requestInterceptor=async t=>{let n=await c.apply(void 0,[t]),a=Object.assign({},n);return r.setMutatedRequest(e.pathName,e.method,a),n},e.responseInterceptor=u;const m=Date.now();return t.execute(e).then((t=>{t.duration=Date.now()-m,r.setResponse(e.pathName,e.method,t)})).catch((t=>{\"Failed to fetch\"===t.message&&(t.name=\"\",t.message='**Failed to fetch.**  \\n**Possible Reasons:** \\n  - CORS \\n  - Network Failure \\n  - URL scheme must be \"http\" or \"https\" for CORS request.'),r.setResponse(e.pathName,e.method,{error:!0,err:t})}))},actions_execute=({path:e,method:t,...r}={})=>n=>{let{fn:{fetch:a},specSelectors:o,specActions:s}=n,l=o.specJsonWithResolvedSubtrees().toJS(),i=o.operationScheme(e,t),{requestContentType:c,responseContentType:u}=o.contentTypeValues([e,t]).toJS(),d=/xml/i.test(c),p=o.parameterValues([e,t],d).toJS();return s.executeRequest({...r,fetch:a,spec:l,pathName:e,method:t,parameters:p,requestContentType:c,scheme:i,responseContentType:u})};function clearResponse(e,t){return{type:Rn,payload:{path:e,method:t}}}function clearRequest(e,t){return{type:Tn,payload:{path:e,method:t}}}function setScheme(e,t,r){return{type:Ln,payload:{scheme:e,path:t,method:r}}}var Vn={[bn]:(e,t)=>\"string\"==typeof t.payload?e.set(\"spec\",t.payload):e,[wn]:(e,t)=>e.set(\"url\",t.payload+\"\"),[Cn]:(e,t)=>e.set(\"json\",fromJSOrdered(t.payload)),[Mn]:(e,t)=>e.setIn([\"resolved\"],fromJSOrdered(t.payload)),[qn]:(e,t)=>{const{value:r,path:n}=t.payload;return e.setIn([\"resolvedSubtrees\",...n],fromJSOrdered(r))},[xn]:(e,{payload:t})=>{let{path:r,paramName:n,paramIn:a,param:o,value:s,isXml:l}=t,i=o?paramToIdentifier(o):`${a}.${n}`;const c=l?\"value_xml\":\"value\";return e.setIn([\"meta\",\"paths\",...r,\"parameters\",i,c],(0,Xe.fromJS)(s))},[On]:(e,{payload:t})=>{let{pathMethod:r,paramName:n,paramIn:a,includeEmptyValue:o}=t;if(!n||!a)return console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\"),e;const s=`${a}.${n}`;return e.setIn([\"meta\",\"paths\",...r,\"parameter_inclusions\",s],o)},[kn]:(e,{payload:{pathMethod:t,isOAS3:r}})=>{const n=Wr(e).getIn([\"paths\",...t]),a=parameterValues(e,t).toJS();return e.updateIn([\"meta\",\"paths\",...t,\"parameters\"],(0,Xe.fromJS)({}),(o=>n.get(\"parameters\",(0,Xe.List)()).reduce(((n,o)=>{const s=paramToValue(o,a),l=parameterInclusionSettingFor(e,t,o.get(\"name\"),o.get(\"in\")),i=((e,t,{isOAS3:r=!1,bypassRequiredCheck:n=!1}={})=>{let a=e.get(\"required\"),{schema:o,parameterContentMediaType:s}=getParameterSchema(e,{isOAS3:r});return validateValueBySchema(t,o,a,n,s)})(o,s,{bypassRequiredCheck:l,isOAS3:r});return n.setIn([paramToIdentifier(o),\"errors\"],(0,Xe.fromJS)(i))}),o)))},[Pn]:(e,{payload:{pathMethod:t}})=>e.updateIn([\"meta\",\"paths\",...t,\"parameters\"],(0,Xe.fromJS)([]),(e=>e.map((e=>e.set(\"errors\",(0,Xe.fromJS)([])))))),[Nn]:(e,{payload:{res:t,path:r,method:n}})=>{let a;a=t.error?Object.assign({error:!0,name:t.err.name,message:t.err.message,statusCode:t.err.statusCode},t.err.response):t,a.headers=a.headers||{};let o=e.setIn([\"responses\",r,n],fromJSOrdered(a));return ct.Blob&&a.data instanceof ct.Blob&&(o=o.setIn([\"responses\",r,n,\"text\"],a.data)),o},[An]:(e,{payload:{req:t,path:r,method:n}})=>e.setIn([\"requests\",r,n],fromJSOrdered(t)),[In]:(e,{payload:{req:t,path:r,method:n}})=>e.setIn([\"mutatedRequests\",r,n],fromJSOrdered(t)),[Bn]:(e,{payload:{path:t,value:r,key:n}})=>{let a=[\"paths\",...t],o=[\"meta\",\"paths\",...t];return e.getIn([\"json\",...a])||e.getIn([\"resolved\",...a])||e.getIn([\"resolvedSubtrees\",...a])?e.setIn([...o,n],(0,Xe.fromJS)(r)):e},[Rn]:(e,{payload:{path:t,method:r}})=>e.deleteIn([\"responses\",t,r]),[Tn]:(e,{payload:{path:t,method:r}})=>e.deleteIn([\"requests\",t,r]),[Ln]:(e,{payload:{scheme:t,path:r,method:n}})=>r&&n?e.setIn([\"scheme\",r,n],t):r||n?void 0:e.setIn([\"scheme\",\"_defaultScheme\"],t)};const wrap_actions_updateSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.parseToJson(...r)},wrap_actions_updateJsonSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.invalidateResolvedSubtreeCache();const[n]=r,a=(0,Zt.default)(n,[\"paths\"])||{};Object.keys(a).forEach((e=>{const r=(0,Zt.default)(a,[e]);(0,Cr.default)(r)&&r.$ref&&t.requestResolvedSubtree([\"paths\",e])})),t.requestResolvedSubtree([\"components\",\"securitySchemes\"])},wrap_actions_executeRequest=(e,{specActions:t})=>r=>(t.logRequest(r),e(r)),wrap_actions_validateParams=(e,{specSelectors:t})=>r=>e(r,t.isOAS3());var plugins_spec=()=>({statePlugins:{spec:{wrapActions:{...$e},reducers:{...Vn},actions:{...De},selectors:{...Ue}}}}),Jn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return U.default}}),Fn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return D.default}}),zn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return $.default}}),Kn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return V.default}}),Wn=function(e){var t={};return __webpack_require__.d(t,e),t}({makeResolve:function(){return J.makeResolve}}),Hn=function(e){var t={};return __webpack_require__.d(t,e),t}({buildRequest:function(){return F.buildRequest},execute:function(){return F.execute}}),Gn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return z.default},makeHttp:function(){return z.makeHttp},serializeRes:function(){return z.serializeRes}}),Xn=function(e){var t={};return __webpack_require__.d(t,e),t}({makeResolveSubtree:function(){return K.makeResolveSubtree}}),Yn=function(e){var t={};return __webpack_require__.d(t,e),t}({opId:function(){return W.opId}});const configs_wrap_actions_loaded=(e,t)=>(...r)=>{e(...r);const n=t.getConfigs().withCredentials;t.fn.fetch.withCredentials=n};function swagger_client({configs:e,getConfigs:t}){return{fn:{fetch:(0,Gn.makeHttp)(Gn.default,e.preFetch,e.postFetch),buildRequest:Hn.buildRequest,execute:Hn.execute,resolve:(0,Wn.makeResolve)({strategies:[Kn.default,zn.default,Fn.default,Jn.default]}),resolveSubtree:async(e,r,n={})=>{const a=t(),o={modelPropertyMacro:a.modelPropertyMacro,parameterMacro:a.parameterMacro,requestInterceptor:a.requestInterceptor,responseInterceptor:a.responseInterceptor,strategies:[Kn.default,zn.default,Fn.default,Jn.default]};return(0,Xn.makeResolveSubtree)(o)(e,r,n)},serializeRes:Gn.serializeRes,opId:Yn.opId},statePlugins:{configs:{wrapActions:{loaded:configs_wrap_actions_loaded}}}}}function util(){return{fn:{shallowEqualKeys,sanitizeUrl}}}var Qn=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return H.default}}),Zn=function(e){var t={};return __webpack_require__.d(t,e),t}({Provider:function(){return G.Provider},connect:function(){return G.connect}}),ea=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return X.default}});const withSystem=e=>t=>{const{fn:r}=e();class WithSystem extends He.Component{render(){return He.default.createElement(t,(0,ar.default)({},e(),this.props,this.context))}}return WithSystem.displayName=`WithSystem(${r.getDisplayName(t)})`,WithSystem},withRoot=(e,t)=>r=>{const{fn:n}=e();class WithRoot extends He.Component{render(){return He.default.createElement(Zn.Provider,{store:t},He.default.createElement(r,(0,ar.default)({},this.props,this.context)))}}return WithRoot.displayName=`WithRoot(${n.getDisplayName(r)})`,WithRoot},withConnect=(e,t,r)=>(0,Ge.compose)(r?withRoot(e,r):ea.default,(0,Zn.connect)(((r,n)=>{const a={...n,...e()},o=t.prototype?.mapStateToProps||(e=>({state:e}));return o(r,a)})),withSystem(e))(t),handleProps=(e,t,r,n)=>{for(const a in t){const o=t[a];\"function\"==typeof o&&o(r[a],n[a],e())}},withMappedContainer=(e,t,r)=>(t,n)=>{const{fn:a}=e(),o=r(t,\"root\");class WithMappedContainer extends He.Component{constructor(t,r){super(t,r),handleProps(e,n,t,{})}UNSAFE_componentWillReceiveProps(t){handleProps(e,n,t,this.props)}render(){const e=(0,Dt.default)(this.props,n?Object.keys(n):[]);return He.default.createElement(o,e)}}return WithMappedContainer.displayName=`WithMappedContainer(${a.getDisplayName(o)})`,WithMappedContainer},render=(e,t,r,n)=>a=>{const o=r(e,t,n)(\"App\",\"root\"),{createRoot:s}=Qn.default;s(a).render(He.default.createElement(o,null))},getComponent=(e,t,r)=>(n,a,o={})=>{if(\"string\"!=typeof n)throw new TypeError(\"Need a string, to fetch a component. Was given a \"+typeof n);const s=r(n);return s?a?\"root\"===a?withConnect(e,s,t()):withConnect(e,s):s:(o.failSilently||e().log.warn(\"Could not find component:\",n),null)},getDisplayName=e=>e.displayName||e.name||\"Component\";var view=({getComponents:e,getStore:t,getSystem:r})=>{const n=(a=getComponent(r,t,e),Ct(a,((...e)=>JSON.stringify(e))));var a;const o=(e=>utils_memoizeN(e,((...e)=>e)))(withMappedContainer(r,0,n));return{rootInjects:{getComponent:n,makeMappedContainer:o,render:render(r,t,getComponent,e)},fn:{getDisplayName}}};var view_legacy=({React:e,getSystem:t,getStore:r,getComponents:n})=>{const a={},o=parseInt(e?.version,10);return o>=16&&o<18&&(a.render=((e,t,r,n)=>a=>{const o=r(e,t,n)(\"App\",\"root\");Qn.default.render(He.default.createElement(o,null),a)})(t,r,getComponent,n)),{rootInjects:a}};function downloadUrlPlugin(e){let{fn:t}=e;const r={download:e=>({errActions:r,specSelectors:n,specActions:a,getConfigs:o})=>{let{fetch:s}=t;const l=o();function next(t){if(t instanceof Error||t.status>=400)return a.updateLoadingStatus(\"failed\"),r.newThrownErr(Object.assign(new Error((t.message||t.statusText)+\" \"+e),{source:\"fetch\"})),void(!t.status&&t instanceof Error&&function checkPossibleFailReasons(){try{let t;if(\"URL\"in ct?t=new URL(e):(t=document.createElement(\"a\"),t.href=e),\"https:\"!==t.protocol&&\"https:\"===ct.location.protocol){const e=Object.assign(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:\"fetch\"});return void r.newThrownErr(e)}if(t.origin!==ct.location.origin){const e=Object.assign(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${ct.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:\"fetch\"});r.newThrownErr(e)}}catch(e){return}}());a.updateLoadingStatus(\"success\"),a.updateSpec(t.text),n.url()!==e&&a.updateUrl(e)}e=e||n.url(),a.updateLoadingStatus(\"loading\"),r.clear({source:\"fetch\"}),s({url:e,loadSpec:!0,requestInterceptor:l.requestInterceptor||(e=>e),responseInterceptor:l.responseInterceptor||(e=>e),credentials:\"same-origin\",headers:{Accept:\"application/json,*/*\"}}).then(next,next)},updateLoadingStatus:e=>{let t=[null,\"loading\",\"failed\",\"success\",\"failedConfig\"];return-1===t.indexOf(e)&&console.error(`Error: ${e} is not one of ${JSON.stringify(t)}`),{type:\"spec_update_loading_status\",payload:e}}};let n={loadingStatus:(0,Pt.createSelector)((e=>e||(0,Xe.Map)()),(e=>e.get(\"loadingStatus\")||null))};return{statePlugins:{spec:{actions:r,reducers:{spec_update_loading_status:(e,t)=>\"string\"==typeof t.payload?e.set(\"loadingStatus\",t.payload):e},selectors:n}}}}var ta=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return Y.default}}),ra=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return Q.default}}),na=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return Z.default}}),aa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ee.default}}),oa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return te.default}}),sa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return re.default}}),la=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ne.default}}),ia=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ae.default}});var after_load=()=>{ta.default.registerLanguage(\"json\",na.default),ta.default.registerLanguage(\"js\",ra.default),ta.default.registerLanguage(\"xml\",aa.default),ta.default.registerLanguage(\"yaml\",sa.default),ta.default.registerLanguage(\"http\",la.default),ta.default.registerLanguage(\"bash\",oa.default),ta.default.registerLanguage(\"powershell\",ia.default),ta.default.registerLanguage(\"javascript\",ra.default)},ca=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return oe.default}}),ua=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return se.default}}),da=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return le.default}}),pa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ie.default}}),ma=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ce.default}}),fa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ue.default}}),ha=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return de.default}});const ga={agate:ca.default,arta:ua.default,monokai:da.default,nord:pa.default,obsidian:ma.default,\"tomorrow-night\":fa.default,idea:ha.default},ya=ca.default;var components_SyntaxHighlighter=({language:e,className:t=\"\",getConfigs:r,syntaxHighlighting:n={},children:a=\"\"})=>{const o=r().syntaxHighlight.theme,{styles:s,defaultStyle:l}=n,i=s?.[o]??l;return He.default.createElement(ta.default,{language:e,className:t,style:i},a)},Ea=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return pe.default}});var components_HighlightCode=({fileName:e=\"response.txt\",className:t,downloadable:r,getComponent:n,canCopy:a,language:o,children:s})=>{const l=(0,He.useRef)(null),i=n(\"SyntaxHighlighter\",!0),handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:n,offsetHeight:a,scrollTop:o}=t;n>a&&(0===o&&r<0||a+o>=n&&r>0)&&e.preventDefault()};return(0,He.useEffect)((()=>{const e=Array.from(l.current.childNodes).filter((e=>!!e.nodeType&&e.classList.contains(\"microlight\")));return e.forEach((e=>e.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[s,t,o]),He.default.createElement(\"div\",{className:\"highlight-code\",ref:l},a&&He.default.createElement(\"div\",{className:\"copy-to-clipboard\"},He.default.createElement(gr.CopyToClipboard,{text:s},He.default.createElement(\"button\",null))),r?He.default.createElement(\"button\",{className:\"download-contents\",onClick:()=>{(0,Ea.default)(s,e)}},\"Download\"):null,He.default.createElement(i,{language:o,className:(0,hr.default)(t,\"microlight\"),renderPlainText:({children:e,PlainTextViewer:r})=>He.default.createElement(r,{className:t},e)},s))};var components_PlainTextViewer=({className:e=\"\",children:t})=>He.default.createElement(\"pre\",{className:(0,hr.default)(\"microlight\",e)},t);var wrap_components_SyntaxHighlighter=(e,t)=>({renderPlainText:r,children:n,...a})=>{const o=t.getConfigs().syntaxHighlight.activated,s=t.getComponent(\"PlainTextViewer\");return o||\"function\"!=typeof r?o?He.default.createElement(e,a,n):He.default.createElement(s,null,n):r({children:n,PlainTextViewer:s})};const SyntaxHighlightingPlugin1=()=>({afterLoad:after_load,rootInjects:{syntaxHighlighting:{styles:ga,defaultStyle:ya}},components:{SyntaxHighlighter:components_SyntaxHighlighter,HighlightCode:components_HighlightCode,PlainTextViewer:components_PlainTextViewer}}),SyntaxHighlightingPlugin2=()=>({wrapComponents:{SyntaxHighlighter:wrap_components_SyntaxHighlighter}});var syntax_highlighting=()=>[SyntaxHighlightingPlugin1,SyntaxHighlightingPlugin2];var versions_after_load=()=>{const{GIT_DIRTY:e,GIT_COMMIT:t,PACKAGE_VERSION:r,BUILD_TIME:n}={PACKAGE_VERSION:\"5.22.0\",GIT_COMMIT:\"g0a438f23\",GIT_DIRTY:!0,BUILD_TIME:\"Wed, 21 May 2025 12:43:50 GMT\"};ct.versions=ct.versions||{},ct.versions.swaggerUI={version:r,gitRevision:t,gitDirty:e,buildTimestamp:n}};var versions=()=>({afterLoad:versions_after_load}),Sa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return me.default}});const _a=console.error,withErrorBoundary=e=>t=>{const{getComponent:r,fn:n}=e(),a=r(\"ErrorBoundary\"),o=n.getDisplayName(t);class WithErrorBoundary extends He.Component{render(){return He.default.createElement(a,{targetName:o,getComponent:r,fn:n},He.default.createElement(t,(0,ar.default)({},this.props,this.context)))}}var s;return WithErrorBoundary.displayName=`WithErrorBoundary(${o})`,(s=t).prototype&&s.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=t.prototype.mapStateToProps),WithErrorBoundary};var fallback=({name:e})=>He.default.createElement(\"div\",{className:\"fallback\"},\"😱 \",He.default.createElement(\"i\",null,\"Could not render \",\"t\"===e?\"this component\":e,\", see the console.\"));class ErrorBoundary extends He.Component{static defaultProps={targetName:\"this component\",getComponent:()=>fallback,fn:{componentDidCatch:_a},children:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(...e){super(...e),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e(\"Fallback\");return He.default.createElement(r,{name:t})}return r}}var va=ErrorBoundary;var safe_render=({componentList:e=[],fullOverride:t=!1}={})=>({getSystem:r})=>{const n=t?e:[\"App\",\"BaseLayout\",\"VersionPragmaFilter\",\"InfoContainer\",\"ServersContainer\",\"SchemesContainer\",\"AuthorizeBtnContainer\",\"FilterContainer\",\"Operations\",\"OperationContainer\",\"parameters\",\"responses\",\"OperationServers\",\"Models\",\"ModelWrapper\",...e],a=(0,Sa.default)(n,Array(n.length).fill(((e,{fn:t})=>t.withErrorBoundary(e))));return{fn:{componentDidCatch:_a,withErrorBoundary:withErrorBoundary(r)},components:{ErrorBoundary:va,Fallback:fallback},wrapComponents:a}};class App extends He.default.Component{getLayout(){const{getComponent:e,layoutSelectors:t}=this.props,r=t.current(),n=e(r,!0);return n||(()=>He.default.createElement(\"h1\",null,' No layout defined for \"',r,'\" '))}render(){const e=this.getLayout();return He.default.createElement(e,null)}}var ba=App;class AuthorizationPopup extends He.default.Component{close=()=>{let{authActions:e}=this.props;e.showDefinitions(!1)};render(){let{authSelectors:e,authActions:t,getComponent:r,errSelectors:n,specSelectors:a,fn:{AST:o={}}}=this.props,s=e.shownDefinitions();const l=r(\"auths\"),i=r(\"CloseIcon\");return He.default.createElement(\"div\",{className:\"dialog-ux\"},He.default.createElement(\"div\",{className:\"backdrop-ux\"}),He.default.createElement(\"div\",{className:\"modal-ux\"},He.default.createElement(\"div\",{className:\"modal-dialog-ux\"},He.default.createElement(\"div\",{className:\"modal-ux-inner\"},He.default.createElement(\"div\",{className:\"modal-ux-header\"},He.default.createElement(\"h3\",null,\"Available authorizations\"),He.default.createElement(\"button\",{type:\"button\",className:\"close-modal\",onClick:this.close},He.default.createElement(i,null))),He.default.createElement(\"div\",{className:\"modal-ux-content\"},s.valueSeq().map(((s,i)=>He.default.createElement(l,{key:i,AST:o,definitions:s,getComponent:r,errSelectors:n,authSelectors:e,authActions:t,specSelectors:a}))))))))}}class AuthorizeBtn extends He.default.Component{render(){let{isAuthorized:e,showPopup:t,onClick:r,getComponent:n}=this.props;const a=n(\"authorizationPopup\",!0),o=n(\"LockAuthIcon\",!0),s=n(\"UnlockAuthIcon\",!0);return He.default.createElement(\"div\",{className:\"auth-wrapper\"},He.default.createElement(\"button\",{className:e?\"btn authorize locked\":\"btn authorize unlocked\",onClick:r},He.default.createElement(\"span\",null,\"Authorize\"),e?He.default.createElement(o,null):He.default.createElement(s,null)),t&&He.default.createElement(a,null))}}class AuthorizeBtnContainer extends He.default.Component{render(){const{authActions:e,authSelectors:t,specSelectors:r,getComponent:n}=this.props,a=r.securityDefinitions(),o=t.definitionsToAuthorize(),s=n(\"authorizeBtn\");return a?He.default.createElement(s,{onClick:()=>e.showDefinitions(o),isAuthorized:!!t.authorized().size,showPopup:!!t.shownDefinitions(),getComponent:n}):null}}class AuthorizeOperationBtn extends He.default.Component{onClick=e=>{e.stopPropagation();let{onClick:t}=this.props;t&&t()};render(){let{isAuthorized:e,getComponent:t}=this.props;const r=t(\"LockAuthOperationIcon\",!0),n=t(\"UnlockAuthOperationIcon\",!0);return He.default.createElement(\"button\",{className:\"authorization__btn\",\"aria-label\":e?\"authorization button locked\":\"authorization button unlocked\",onClick:this.onClick},e?He.default.createElement(r,{className:\"locked\"}):He.default.createElement(n,{className:\"unlocked\"}))}}class Auths extends He.default.Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,n=r.map(((e,t)=>t)).toArray();this.setState(n.reduce(((e,t)=>(e[t]=\"\",e)),{})),t.logoutWithPersistOption(n)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:n}=this.props;const a=t(\"AuthItem\"),o=t(\"oauth2\",!0),s=t(\"Button\");let l=r.authorized(),i=e.filter(((e,t)=>!!l.get(t))),c=e.filter((e=>\"oauth2\"!==e.get(\"type\"))),u=e.filter((e=>\"oauth2\"===e.get(\"type\")));return He.default.createElement(\"div\",{className:\"auth-container\"},!!c.size&&He.default.createElement(\"form\",{onSubmit:this.submitAuth},c.map(((e,o)=>He.default.createElement(a,{key:o,schema:e,name:o,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:n,authSelectors:r}))).toArray(),He.default.createElement(\"div\",{className:\"auth-btn-wrapper\"},c.size===i.size?He.default.createElement(s,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):He.default.createElement(s,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),He.default.createElement(s,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),u&&u.size?He.default.createElement(\"div\",null,He.default.createElement(\"div\",{className:\"scope-def\"},He.default.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),He.default.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),e.filter((e=>\"oauth2\"===e.get(\"type\"))).map(((e,t)=>He.default.createElement(\"div\",{key:t},He.default.createElement(o,{authorized:l,schema:e,name:t})))).toArray()):null)}}class auth_item_Auths extends He.default.Component{render(){let{schema:e,name:t,getComponent:r,onAuthChange:n,authorized:a,errSelectors:o,authSelectors:s}=this.props;const l=r(\"apiKeyAuth\"),i=r(\"basicAuth\");let c;const u=e.get(\"type\");switch(u){case\"apiKey\":c=He.default.createElement(l,{key:t,schema:e,name:t,errSelectors:o,authorized:a,getComponent:r,onChange:n,authSelectors:s});break;case\"basic\":c=He.default.createElement(i,{key:t,schema:e,name:t,errSelectors:o,authorized:a,getComponent:r,onChange:n,authSelectors:s});break;default:c=He.default.createElement(\"div\",{key:t},\"Unknown security definition type \",u)}return He.default.createElement(\"div\",{key:`${t}-jump`},c)}}class AuthError extends He.default.Component{render(){let{error:e}=this.props,t=e.get(\"level\"),r=e.get(\"message\"),n=e.get(\"source\");return He.default.createElement(\"div\",{className:\"errors\"},He.default.createElement(\"b\",null,n,\" \",t),He.default.createElement(\"span\",null,r))}}class ApiKeyAuth extends He.default.Component{constructor(e,t){super(e,t);let{name:r,schema:n}=this.props,a=this.getValue();this.state={name:r,schema:n,value:a}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,\"value\"])}onChange=e=>{let{onChange:t}=this.props,r=e.target.value,n=Object.assign({},this.state,{value:r});this.setState(n),t(n)};render(){let{schema:e,getComponent:t,errSelectors:r,name:n,authSelectors:a}=this.props;const o=t(\"Input\"),s=t(\"Row\"),l=t(\"Col\"),i=t(\"authError\"),c=t(\"Markdown\",!0),u=t(\"JumpToPath\",!0),d=a.selectAuthPath(n);let p=this.getValue(),m=r.allErrors().filter((e=>e.get(\"authId\")===n));return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,He.default.createElement(\"code\",null,n||e.get(\"name\")),\" (apiKey)\",He.default.createElement(u,{path:d})),p&&He.default.createElement(\"h6\",null,\"Authorized\"),He.default.createElement(s,null,He.default.createElement(c,{source:e.get(\"description\")})),He.default.createElement(s,null,He.default.createElement(\"p\",null,\"Name: \",He.default.createElement(\"code\",null,e.get(\"name\")))),He.default.createElement(s,null,He.default.createElement(\"p\",null,\"In: \",He.default.createElement(\"code\",null,e.get(\"in\")))),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"api_key_value\"},\"Value:\"),p?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"api_key_value\",type:\"text\",onChange:this.onChange,autoFocus:!0}))),m.valueSeq().map(((e,t)=>He.default.createElement(i,{error:e,key:t}))))}}class BasicAuth extends He.default.Component{constructor(e,t){super(e,t);let{schema:r,name:n}=this.props,a=this.getValue().username;this.state={name:n,schema:r,value:a?{username:a}:{}}}getValue(){let{authorized:e,name:t}=this.props;return e&&e.getIn([t,\"value\"])||{}}onChange=e=>{let{onChange:t}=this.props,{value:r,name:n}=e.target,a=this.state.value;a[n]=r,this.setState({value:a}),t(this.state)};render(){let{schema:e,getComponent:t,name:r,errSelectors:n,authSelectors:a}=this.props;const o=t(\"Input\"),s=t(\"Row\"),l=t(\"Col\"),i=t(\"authError\"),c=t(\"JumpToPath\",!0),u=t(\"Markdown\",!0),d=a.selectAuthPath(r);let p=this.getValue().username,m=n.allErrors().filter((e=>e.get(\"authId\")===r));return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,\"Basic authorization\",He.default.createElement(c,{path:d})),p&&He.default.createElement(\"h6\",null,\"Authorized\"),He.default.createElement(s,null,He.default.createElement(u,{source:e.get(\"description\")})),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"auth_username\"},\"Username:\"),p?He.default.createElement(\"code\",null,\" \",p,\" \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"auth_username\",type:\"text\",required:\"required\",name:\"username\",onChange:this.onChange,autoFocus:!0}))),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"auth_password\"},\"Password:\"),p?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"auth_password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",onChange:this.onChange}))),m.valueSeq().map(((e,t)=>He.default.createElement(i,{error:e,key:t}))))}}function Example(e){const{example:t,showValue:r,getComponent:n}=e,a=n(\"Markdown\",!0),o=n(\"HighlightCode\",!0);return t&&Xe.Map.isMap(t)?He.default.createElement(\"div\",{className:\"example\"},t.get(\"description\")?He.default.createElement(\"section\",{className:\"example__section\"},He.default.createElement(\"div\",{className:\"example__section-header\"},\"Example Description\"),He.default.createElement(\"p\",null,He.default.createElement(a,{source:t.get(\"description\")}))):null,r&&t.has(\"value\")?He.default.createElement(\"section\",{className:\"example__section\"},He.default.createElement(\"div\",{className:\"example__section-header\"},\"Example Value\"),He.default.createElement(o,null,stringify(t.get(\"value\")))):null):null}class ExamplesSelect extends He.default.PureComponent{static defaultProps={examples:(0,Xe.Map)({}),onSelect:(...e)=>console.log(\"DEBUG: ExamplesSelect was not given an onSelect callback\",...e),currentExampleKey:null,showLabels:!0};_onSelect=(e,{isSyntheticChange:t=!1}={})=>{\"function\"==typeof this.props.onSelect&&this.props.onSelect(e,{isSyntheticChange:t})};_onDomSelect=e=>{if(\"function\"==typeof this.props.onSelect){const t=e.target.selectedOptions[0].getAttribute(\"value\");this._onSelect(t,{isSyntheticChange:!1})}};getCurrentExample=()=>{const{examples:e,currentExampleKey:t}=this.props,r=e.get(t),n=e.keySeq().first(),a=e.get(n);return r||a||(0,Xe.Map)({})};componentDidMount(){const{onSelect:e,examples:t}=this.props;if(\"function\"==typeof e){const e=t.first(),r=t.keyOf(e);this._onSelect(r,{isSyntheticChange:!0})}}UNSAFE_componentWillReceiveProps(e){const{currentExampleKey:t,examples:r}=e;if(r!==this.props.examples&&!r.has(t)){const e=r.first(),t=r.keyOf(e);this._onSelect(t,{isSyntheticChange:!0})}}render(){const{examples:e,currentExampleKey:t,isValueModified:r,isModifiedValueAvailable:n,showLabels:a}=this.props;return He.default.createElement(\"div\",{className:\"examples-select\"},a?He.default.createElement(\"span\",{className:\"examples-select__section-label\"},\"Examples: \"):null,He.default.createElement(\"select\",{className:\"examples-select-element\",onChange:this._onDomSelect,value:n&&r?\"__MODIFIED__VALUE__\":t||\"\"},n?He.default.createElement(\"option\",{value:\"__MODIFIED__VALUE__\"},\"[Modified value]\"):null,e.map(((e,t)=>He.default.createElement(\"option\",{key:t,value:t},Xe.Map.isMap(e)&&e.get(\"summary\")||t))).valueSeq()))}}const stringifyUnlessList=e=>Xe.List.isList(e)?e:stringify(e);class ExamplesSelectValueRetainer extends He.default.PureComponent{static defaultProps={userHasEditedBody:!1,examples:(0,Xe.Map)({}),currentNamespace:\"__DEFAULT__NAMESPACE__\",setRetainRequestBodyValueFlag:()=>{},onSelect:(...e)=>console.log(\"ExamplesSelectValueRetainer: no `onSelect` function was provided\",...e),updateValue:(...e)=>console.log(\"ExamplesSelectValueRetainer: no `updateValue` function was provided\",...e)};constructor(e){super(e);const t=this._getCurrentExampleValue();this.state={[e.currentNamespace]:(0,Xe.Map)({lastUserEditedValue:this.props.currentUserInputValue,lastDownstreamValue:t,isModifiedValueSelected:this.props.userHasEditedBody||this.props.currentUserInputValue!==t})}}componentWillUnmount(){this.props.setRetainRequestBodyValueFlag(!1)}_getStateForCurrentNamespace=()=>{const{currentNamespace:e}=this.props;return(this.state[e]||(0,Xe.Map)()).toObject()};_setStateForCurrentNamespace=e=>{const{currentNamespace:t}=this.props;return this._setStateForNamespace(t,e)};_setStateForNamespace=(e,t)=>{const r=(this.state[e]||(0,Xe.Map)()).mergeDeep(t);return this.setState({[e]:r})};_isCurrentUserInputSameAsExampleValue=()=>{const{currentUserInputValue:e}=this.props;return this._getCurrentExampleValue()===e};_getValueForExample=(e,t)=>{const{examples:r}=t||this.props;return stringifyUnlessList((r||(0,Xe.Map)({})).getIn([e,\"value\"]))};_getCurrentExampleValue=e=>{const{currentKey:t}=e||this.props;return this._getValueForExample(t,e||this.props)};_onExamplesSelect=(e,{isSyntheticChange:t}={},...r)=>{const{onSelect:n,updateValue:a,currentUserInputValue:o,userHasEditedBody:s}=this.props,{lastUserEditedValue:l}=this._getStateForCurrentNamespace(),i=this._getValueForExample(e);if(\"__MODIFIED__VALUE__\"===e)return a(stringifyUnlessList(l)),this._setStateForCurrentNamespace({isModifiedValueSelected:!0});\"function\"==typeof n&&n(e,{isSyntheticChange:t},...r),this._setStateForCurrentNamespace({lastDownstreamValue:i,isModifiedValueSelected:t&&s||!!o&&o!==i}),t||\"function\"==typeof a&&a(stringifyUnlessList(i))};UNSAFE_componentWillReceiveProps(e){const{currentUserInputValue:t,examples:r,onSelect:n,userHasEditedBody:a}=e,{lastUserEditedValue:o,lastDownstreamValue:s}=this._getStateForCurrentNamespace(),l=this._getValueForExample(e.currentKey,e),i=r.filter((e=>Xe.Map.isMap(e)&&(e.get(\"value\")===t||stringify(e.get(\"value\"))===t)));if(i.size){let t;t=i.has(e.currentKey)?e.currentKey:i.keySeq().first(),n(t,{isSyntheticChange:!0})}else t!==this.props.currentUserInputValue&&t!==o&&t!==s&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(e.currentNamespace,{lastUserEditedValue:e.currentUserInputValue,isModifiedValueSelected:a||t!==l}))}render(){const{currentUserInputValue:e,examples:t,currentKey:r,getComponent:n,userHasEditedBody:a}=this.props,{lastDownstreamValue:o,lastUserEditedValue:s,isModifiedValueSelected:l}=this._getStateForCurrentNamespace(),i=n(\"ExamplesSelect\");return He.default.createElement(i,{examples:t,currentExampleKey:r,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!s&&s!==o,isValueModified:void 0!==e&&l&&e!==this._getCurrentExampleValue()||a})}}function oauth2_authorize_authorize({auth:e,authActions:t,errActions:r,configs:n,authConfigs:a={},currentServer:o}){let{schema:s,scopes:l,name:i,clientId:c}=e,u=s.get(\"flow\"),d=[];switch(u){case\"password\":return void t.authorizePassword(e);case\"application\":case\"clientCredentials\":case\"client_credentials\":return void t.authorizeApplication(e);case\"accessCode\":case\"authorizationCode\":case\"authorization_code\":d.push(\"response_type=code\");break;case\"implicit\":d.push(\"response_type=token\")}\"string\"==typeof c&&d.push(\"client_id=\"+encodeURIComponent(c));let p=n.oauth2RedirectUrl;if(void 0===p)return void r.newAuthErr({authId:i,source:\"validation\",level:\"error\",message:\"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"});d.push(\"redirect_uri=\"+encodeURIComponent(p));let m=[];if(Array.isArray(l)?m=l:Xe.default.List.isList(l)&&(m=l.toArray()),m.length>0){let e=a.scopeSeparator||\" \";d.push(\"scope=\"+encodeURIComponent(m.join(e)))}let f=btoa(new Date);if(d.push(\"state=\"+encodeURIComponent(f)),void 0!==a.realm&&d.push(\"realm=\"+encodeURIComponent(a.realm)),(\"authorizationCode\"===u||\"authorization_code\"===u||\"accessCode\"===u)&&a.usePkceWithAuthorizationCodeGrant){const t=function generateCodeVerifier(){return b64toB64UrlEncoded(Et()(32).toString(\"base64\"))}(),r=function createCodeChallenge(e){return b64toB64UrlEncoded(_t()(\"sha256\").update(e).digest(\"base64\"))}(t);d.push(\"code_challenge=\"+r),d.push(\"code_challenge_method=S256\"),e.codeVerifier=t}let{additionalQueryStringParams:h}=a;for(let e in h)void 0!==h[e]&&d.push([e,h[e]].map(encodeURIComponent).join(\"=\"));const g=s.get(\"authorizationUrl\");let y;y=o?(0,Ot.default)(sanitizeUrl(g),o,!0).toString():sanitizeUrl(g);let S,_=[y,d.join(\"&\")].join(\"string\"!=typeof g||g.includes(\"?\")?\"&\":\"?\");S=\"implicit\"===u?t.preAuthorizeImplicit:a.useBasicAuthenticationWithAccessCodeGrant?t.authorizeAccessCodeWithBasicAuthentication:t.authorizeAccessCodeWithFormParams,t.authPopup(_,{auth:e,state:f,redirectUrl:p,callback:S,errCb:r.newAuthErr})}class Oauth2 extends He.default.Component{constructor(e,t){super(e,t);let{name:r,schema:n,authorized:a,authSelectors:o}=this.props,s=a&&a.get(r),l=o.getConfigs()||{},i=s&&s.get(\"username\")||\"\",c=s&&s.get(\"clientId\")||l.clientId||\"\",u=s&&s.get(\"clientSecret\")||l.clientSecret||\"\",d=s&&s.get(\"passwordType\")||\"basic\",p=s&&s.get(\"scopes\")||l.scopes||[];\"string\"==typeof p&&(p=p.split(l.scopeSeparator||\" \")),this.state={appName:l.appName,name:r,schema:n,scopes:p,clientId:c,clientSecret:u,username:i,password:\"\",passwordType:d}}close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};authorize=()=>{let{authActions:e,errActions:t,getConfigs:r,authSelectors:n,oas3Selectors:a}=this.props,o=r(),s=n.getConfigs();t.clear({authId:name,type:\"auth\",source:\"auth\"}),oauth2_authorize_authorize({auth:this.state,currentServer:a.serverEffectiveValue(a.selectedServer()),authActions:e,errActions:t,configs:o,authConfigs:s})};onScopeChange=e=>{let{target:t}=e,{checked:r}=t,n=t.dataset.value;if(r&&-1===this.state.scopes.indexOf(n)){let e=this.state.scopes.concat([n]);this.setState({scopes:e})}else!r&&this.state.scopes.indexOf(n)>-1&&this.setState({scopes:this.state.scopes.filter((e=>e!==n))})};onInputChange=e=>{let{target:{dataset:{name:t},value:r}}=e,n={[t]:r};this.setState(n)};selectScopes=e=>{e.target.dataset.all?this.setState({scopes:Array.from((this.props.schema.get(\"allowedScopes\")||this.props.schema.get(\"scopes\")).keys())}):this.setState({scopes:[]})};logout=e=>{e.preventDefault();let{authActions:t,errActions:r,name:n}=this.props;r.clear({authId:n,type:\"auth\",source:\"auth\"}),t.logoutWithPersistOption([n])};render(){let{schema:e,getComponent:t,authSelectors:r,errSelectors:n,name:a,specSelectors:o}=this.props;const s=t(\"Input\"),l=t(\"Row\"),i=t(\"Col\"),c=t(\"Button\"),u=t(\"authError\"),d=t(\"JumpToPath\",!0),p=t(\"Markdown\",!0),m=t(\"InitializedInput\"),{isOAS3:f}=o;let h=f()?e.get(\"openIdConnectUrl\"):null;const g=\"implicit\",y=\"password\",S=f()?h?\"authorization_code\":\"authorizationCode\":\"accessCode\",_=f()?h?\"client_credentials\":\"clientCredentials\":\"application\",v=r.selectAuthPath(a);let b=!!(r.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,w=e.get(\"flow\"),C=w===S&&b?w+\" with PKCE\":w,x=e.get(\"allowedScopes\")||e.get(\"scopes\"),O=!!r.authorized().get(a),k=n.allErrors().filter((e=>e.get(\"authId\")===a)),N=!k.filter((e=>\"validation\"===e.get(\"source\"))).size,A=e.get(\"description\");return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,a,\" (OAuth2, \",C,\") \",He.default.createElement(d,{path:v})),this.state.appName?He.default.createElement(\"h5\",null,\"Application: \",this.state.appName,\" \"):null,A&&He.default.createElement(p,{source:e.get(\"description\")}),O&&He.default.createElement(\"h6\",null,\"Authorized\"),h&&He.default.createElement(\"p\",null,\"OpenID Connect URL: \",He.default.createElement(\"code\",null,h)),(w===g||w===S)&&He.default.createElement(\"p\",null,\"Authorization URL: \",He.default.createElement(\"code\",null,e.get(\"authorizationUrl\"))),(w===y||w===S||w===_)&&He.default.createElement(\"p\",null,\"Token URL:\",He.default.createElement(\"code\",null,\" \",e.get(\"tokenUrl\"))),He.default.createElement(\"p\",{className:\"flow\"},\"Flow: \",He.default.createElement(\"code\",null,C)),w!==y?null:He.default.createElement(l,null,He.default.createElement(l,null,He.default.createElement(\"label\",{htmlFor:\"oauth_username\"},\"username:\"),O?He.default.createElement(\"code\",null,\" \",this.state.username,\" \"):He.default.createElement(i,{tablet:10,desktop:10},He.default.createElement(\"input\",{id:\"oauth_username\",type:\"text\",\"data-name\":\"username\",onChange:this.onInputChange,autoFocus:!0}))),He.default.createElement(l,null,He.default.createElement(\"label\",{htmlFor:\"oauth_password\"},\"password:\"),O?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(i,{tablet:10,desktop:10},He.default.createElement(\"input\",{id:\"oauth_password\",type:\"password\",\"data-name\":\"password\",onChange:this.onInputChange}))),He.default.createElement(l,null,He.default.createElement(\"label\",{htmlFor:\"password_type\"},\"Client credentials location:\"),O?He.default.createElement(\"code\",null,\" \",this.state.passwordType,\" \"):He.default.createElement(i,{tablet:10,desktop:10},He.default.createElement(\"select\",{id:\"password_type\",\"data-name\":\"passwordType\",onChange:this.onInputChange},He.default.createElement(\"option\",{value:\"basic\"},\"Authorization header\"),He.default.createElement(\"option\",{value:\"request-body\"},\"Request body\"))))),(w===_||w===g||w===S||w===y)&&(!O||O&&this.state.clientId)&&He.default.createElement(l,null,He.default.createElement(\"label\",{htmlFor:`client_id_${w}`},\"client_id:\"),O?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(i,{tablet:10,desktop:10},He.default.createElement(m,{id:`client_id_${w}`,type:\"text\",required:w===y,initialValue:this.state.clientId,\"data-name\":\"clientId\",onChange:this.onInputChange}))),(w===_||w===S||w===y)&&He.default.createElement(l,null,He.default.createElement(\"label\",{htmlFor:`client_secret_${w}`},\"client_secret:\"),O?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(i,{tablet:10,desktop:10},He.default.createElement(m,{id:`client_secret_${w}`,initialValue:this.state.clientSecret,type:\"password\",\"data-name\":\"clientSecret\",onChange:this.onInputChange}))),!O&&x&&x.size?He.default.createElement(\"div\",{className:\"scopes\"},He.default.createElement(\"h2\",null,\"Scopes:\",He.default.createElement(\"a\",{onClick:this.selectScopes,\"data-all\":!0},\"select all\"),He.default.createElement(\"a\",{onClick:this.selectScopes},\"select none\")),x.map(((e,t)=>He.default.createElement(l,{key:t},He.default.createElement(\"div\",{className:\"checkbox\"},He.default.createElement(s,{\"data-value\":t,id:`${t}-${w}-checkbox-${this.state.name}`,disabled:O,checked:this.state.scopes.includes(t),type:\"checkbox\",onChange:this.onScopeChange}),He.default.createElement(\"label\",{htmlFor:`${t}-${w}-checkbox-${this.state.name}`},He.default.createElement(\"span\",{className:\"item\"}),He.default.createElement(\"div\",{className:\"text\"},He.default.createElement(\"p\",{className:\"name\"},t),He.default.createElement(\"p\",{className:\"description\"},e))))))).toArray()):null,k.valueSeq().map(((e,t)=>He.default.createElement(u,{error:e,key:t}))),He.default.createElement(\"div\",{className:\"auth-btn-wrapper\"},N&&(O?He.default.createElement(c,{className:\"btn modal-btn auth authorize\",onClick:this.logout,\"aria-label\":\"Remove authorization\"},\"Logout\"):He.default.createElement(c,{className:\"btn modal-btn auth authorize\",onClick:this.authorize,\"aria-label\":\"Apply given OAuth2 credentials\"},\"Authorize\")),He.default.createElement(c,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\")))}}class Clear extends He.Component{onClick=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearResponse(t,r),e.clearRequest(t,r)};render(){return He.default.createElement(\"button\",{className:\"btn btn-clear opblock-control__btn\",onClick:this.onClick},\"Clear\")}}const Headers=({headers:e})=>He.default.createElement(\"div\",null,He.default.createElement(\"h5\",null,\"Response headers\"),He.default.createElement(\"pre\",{className:\"microlight\"},e)),Duration=({duration:e})=>He.default.createElement(\"div\",null,He.default.createElement(\"h5\",null,\"Request duration\"),He.default.createElement(\"pre\",{className:\"microlight\"},e,\" ms\"));class LiveResponse extends He.default.Component{shouldComponentUpdate(e){return this.props.response!==e.response||this.props.path!==e.path||this.props.method!==e.method||this.props.displayRequestDuration!==e.displayRequestDuration}render(){const{response:e,getComponent:t,getConfigs:r,displayRequestDuration:n,specSelectors:a,path:o,method:s}=this.props,{showMutatedRequest:l,requestSnippetsEnabled:i}=r(),c=l?a.mutatedRequestFor(o,s):a.requestFor(o,s),u=e.get(\"status\"),d=c.get(\"url\"),p=e.get(\"headers\").toJS(),m=e.get(\"notDocumented\"),f=e.get(\"error\"),h=e.get(\"text\"),g=e.get(\"duration\"),y=Object.keys(p),S=p[\"content-type\"]||p[\"Content-Type\"],_=t(\"responseBody\"),v=y.map((e=>{var t=Array.isArray(p[e])?p[e].join():p[e];return He.default.createElement(\"span\",{className:\"headerline\",key:e},\" \",e,\": \",t,\" \")})),b=0!==v.length,w=t(\"Markdown\",!0),C=t(\"RequestSnippets\",!0),x=t(\"curl\",!0);return He.default.createElement(\"div\",null,c&&i?He.default.createElement(C,{request:c}):He.default.createElement(x,{request:c}),d&&He.default.createElement(\"div\",null,He.default.createElement(\"div\",{className:\"request-url\"},He.default.createElement(\"h4\",null,\"Request URL\"),He.default.createElement(\"pre\",{className:\"microlight\"},d))),He.default.createElement(\"h4\",null,\"Server response\"),He.default.createElement(\"table\",{className:\"responses-table live-responses-table\"},He.default.createElement(\"thead\",null,He.default.createElement(\"tr\",{className:\"responses-header\"},He.default.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),He.default.createElement(\"td\",{className:\"col_header response-col_description\"},\"Details\"))),He.default.createElement(\"tbody\",null,He.default.createElement(\"tr\",{className:\"response\"},He.default.createElement(\"td\",{className:\"response-col_status\"},u,m?He.default.createElement(\"div\",{className:\"response-undocumented\"},He.default.createElement(\"i\",null,\" Undocumented \")):null),He.default.createElement(\"td\",{className:\"response-col_description\"},f?He.default.createElement(w,{source:`${\"\"!==e.get(\"name\")?`${e.get(\"name\")}: `:\"\"}${e.get(\"message\")}`}):null,h?He.default.createElement(_,{content:h,contentType:S,url:d,headers:p,getConfigs:r,getComponent:t}):null,b?He.default.createElement(Headers,{headers:v}):null,n&&g?He.default.createElement(Duration,{duration:g}):null)))))}}class OnlineValidatorBadge extends He.default.Component{constructor(e,t){super(e,t);let{getConfigs:r}=e,{validatorUrl:n}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===n?\"https://validator.swagger.io/validator\":n}}getDefinitionUrl=()=>{let{specSelectors:e}=this.props;return new Ot.default(e.url(),ct.location).toString()};UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?\"https://validator.swagger.io/validator\":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=sanitizeUrl(this.state.validatorUrl);return\"object\"==typeof t&&Object.keys(t).length?null:this.state.url&&requiresValidationURL(this.state.validatorUrl)&&requiresValidationURL(this.state.url)?He.default.createElement(\"span\",{className:\"float-right\"},He.default.createElement(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},He.default.createElement(ValidatorImage,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:\"Online validator badge\"}))):null}}class ValidatorImage extends He.default.Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?He.default.createElement(\"img\",{alt:\"Error\"}):this.state.loaded?He.default.createElement(\"img\",{src:this.props.src,alt:this.props.alt}):null}}class Operations extends He.default.Component{render(){let{specSelectors:e}=this.props;const t=e.taggedOperations();return 0===t.size?He.default.createElement(\"h3\",null,\" No operations defined in spec!\"):He.default.createElement(\"div\",null,t.map(this.renderOperationTag).toArray(),t.size<1?He.default.createElement(\"h3\",null,\" No operations defined in spec! \"):null)}renderOperationTag=(e,t)=>{const{specSelectors:r,getComponent:n,oas3Selectors:a,layoutSelectors:o,layoutActions:s,getConfigs:l}=this.props,i=r.validOperationMethods(),c=n(\"OperationContainer\",!0),u=n(\"OperationTag\"),d=e.get(\"operations\");return He.default.createElement(u,{key:\"operation-\"+t,tagObj:e,tag:t,oas3Selectors:a,layoutSelectors:o,layoutActions:s,getConfigs:l,getComponent:n,specUrl:r.url()},He.default.createElement(\"div\",{className:\"operation-tag-content\"},d.map((e=>{const r=e.get(\"path\"),n=e.get(\"method\"),a=Xe.default.List([\"paths\",r,n]);return-1===i.indexOf(n)?null:He.default.createElement(c,{key:`${r}-${n}`,specPath:a,op:e,path:r,method:n,tag:t})})).toArray()))}}class OperationTag extends He.default.Component{static defaultProps={tagObj:Xe.default.fromJS({}),tag:\"\"};render(){const{tagObj:e,tag:t,children:r,oas3Selectors:n,layoutSelectors:a,layoutActions:o,getConfigs:s,getComponent:l,specUrl:i}=this.props;let{docExpansion:c,deepLinking:u}=s();const d=l(\"Collapse\"),p=l(\"Markdown\",!0),m=l(\"DeepLink\"),f=l(\"Link\"),h=l(\"ArrowUpIcon\"),g=l(\"ArrowDownIcon\");let y,S=e.getIn([\"tagDetails\",\"description\"],null),_=e.getIn([\"tagDetails\",\"externalDocs\",\"description\"]),v=e.getIn([\"tagDetails\",\"externalDocs\",\"url\"]);y=isFunc(n)&&isFunc(n.selectedServer)?safeBuildUrl(v,i,{selectedServer:n.selectedServer()}):v;let b=[\"operations-tag\",t],w=a.isShown(b,\"full\"===c||\"list\"===c);return He.default.createElement(\"div\",{className:w?\"opblock-tag-section is-open\":\"opblock-tag-section\"},He.default.createElement(\"h3\",{onClick:()=>o.show(b,!w),className:S?\"opblock-tag\":\"opblock-tag no-desc\",id:b.map((e=>escapeDeepLinkPath(e))).join(\"-\"),\"data-tag\":t,\"data-is-open\":w},He.default.createElement(m,{enabled:u,isShown:w,path:createDeepLinkPath(t),text:t}),S?He.default.createElement(\"small\",null,He.default.createElement(p,{source:S})):He.default.createElement(\"small\",null),y?He.default.createElement(\"div\",{className:\"info__externaldocs\"},He.default.createElement(\"small\",null,He.default.createElement(f,{href:sanitizeUrl(y),onClick:e=>e.stopPropagation(),target:\"_blank\"},_||y))):null,He.default.createElement(\"button\",{\"aria-expanded\":w,className:\"expand-operation\",title:w?\"Collapse operation\":\"Expand operation\",onClick:()=>o.show(b,!w)},w?He.default.createElement(h,{className:\"arrow\"}):He.default.createElement(g,{className:\"arrow\"}))),He.default.createElement(d,{isOpened:w},r))}}class Operation extends He.PureComponent{static defaultProps={operation:null,response:null,request:null,specPath:(0,Xe.List)(),summary:\"\"};render(){let{specPath:e,response:t,request:r,toggleShown:n,onTryoutClick:a,onResetClick:o,onCancelClick:s,onExecute:l,fn:i,getComponent:c,getConfigs:u,specActions:d,specSelectors:p,authActions:m,authSelectors:f,oas3Actions:h,oas3Selectors:g}=this.props,y=this.props.operation,{deprecated:S,isShown:_,path:v,method:b,op:w,tag:C,operationId:x,allowTryItOut:O,displayRequestDuration:k,tryItOutEnabled:N,executeInProgress:A}=y.toJS(),{description:I,externalDocs:j,schemes:R}=w;const T=j?safeBuildUrl(j.url,p.url(),{selectedServer:g.selectedServer()}):\"\";let P=y.getIn([\"op\"]),B=P.get(\"responses\"),M=function getList(e,t){if(!Xe.default.Iterable.isIterable(e))return Xe.default.List();let r=e.getIn(Array.isArray(t)?t:[t]);return Xe.default.List.isList(r)?r:Xe.default.List()}(P,[\"parameters\"]),q=p.operationScheme(v,b),L=[\"operations\",C,x],U=getExtensions(P);const D=c(\"responses\"),$=c(\"parameters\"),V=c(\"execute\"),J=c(\"clear\"),F=c(\"Collapse\"),z=c(\"Markdown\",!0),K=c(\"schemes\"),W=c(\"OperationServers\"),H=c(\"OperationExt\"),G=c(\"OperationSummary\"),X=c(\"Link\"),{showExtensions:Y}=u();if(B&&t&&t.size>0){let e=!B.get(String(t.get(\"status\")))&&!B.get(\"default\");t=t.set(\"notDocumented\",e)}let Q=[v,b];const Z=p.validationErrors([v,b]);return He.default.createElement(\"div\",{className:S?\"opblock opblock-deprecated\":_?`opblock opblock-${b} is-open`:`opblock opblock-${b}`,id:escapeDeepLinkPath(L.join(\"-\"))},He.default.createElement(G,{operationProps:y,isShown:_,toggleShown:n,getComponent:c,authActions:m,authSelectors:f,specPath:e}),He.default.createElement(F,{isOpened:_},He.default.createElement(\"div\",{className:\"opblock-body\"},P&&P.size||null===P?null:He.default.createElement(rolling_load,{height:\"32px\",width:\"32px\",className:\"opblock-loading-animation\"}),S&&He.default.createElement(\"h4\",{className:\"opblock-title_normal\"},\" Warning: Deprecated\"),I&&He.default.createElement(\"div\",{className:\"opblock-description-wrapper\"},He.default.createElement(\"div\",{className:\"opblock-description\"},He.default.createElement(z,{source:I}))),T?He.default.createElement(\"div\",{className:\"opblock-external-docs-wrapper\"},He.default.createElement(\"h4\",{className:\"opblock-title_normal\"},\"Find more details\"),He.default.createElement(\"div\",{className:\"opblock-external-docs\"},j.description&&He.default.createElement(\"span\",{className:\"opblock-external-docs__description\"},He.default.createElement(z,{source:j.description})),He.default.createElement(X,{target:\"_blank\",className:\"opblock-external-docs__link\",href:sanitizeUrl(T)},T))):null,P&&P.size?He.default.createElement($,{parameters:M,specPath:e.push(\"parameters\"),operation:P,onChangeKey:Q,onTryoutClick:a,onResetClick:o,onCancelClick:s,tryItOutEnabled:N,allowTryItOut:O,fn:i,getComponent:c,specActions:d,specSelectors:p,pathMethod:[v,b],getConfigs:u,oas3Actions:h,oas3Selectors:g}):null,N?He.default.createElement(W,{getComponent:c,path:v,method:b,operationServers:P.get(\"servers\"),pathServers:p.paths().getIn([v,\"servers\"]),getSelectedServer:g.selectedServer,setSelectedServer:h.setSelectedServer,setServerVariableValue:h.setServerVariableValue,getServerVariable:g.serverVariableValue,getEffectiveServerValue:g.serverEffectiveValue}):null,N&&O&&R&&R.size?He.default.createElement(\"div\",{className:\"opblock-schemes\"},He.default.createElement(K,{schemes:R,path:v,method:b,specActions:d,currentScheme:q})):null,!N||!O||Z.length<=0?null:He.default.createElement(\"div\",{className:\"validation-errors errors-wrapper\"},\"Please correct the following validation errors and try again.\",He.default.createElement(\"ul\",null,Z.map(((e,t)=>He.default.createElement(\"li\",{key:t},\" \",e,\" \"))))),He.default.createElement(\"div\",{className:N&&t&&O?\"btn-group\":\"execute-wrapper\"},N&&O?He.default.createElement(V,{operation:P,specActions:d,specSelectors:p,oas3Selectors:g,oas3Actions:h,path:v,method:b,onExecute:l,disabled:A}):null,N&&t&&O?He.default.createElement(J,{specActions:d,path:v,method:b}):null),A?He.default.createElement(\"div\",{className:\"loading-container\"},He.default.createElement(\"div\",{className:\"loading\"})):null,B?He.default.createElement(D,{responses:B,request:r,tryItOutResponse:t,getComponent:c,getConfigs:u,specSelectors:p,oas3Actions:h,oas3Selectors:g,specActions:d,produces:p.producesOptionsFor([v,b]),producesValue:p.currentProducesFor([v,b]),specPath:e.push(\"responses\"),path:v,method:b,displayRequestDuration:k,fn:i}):null,Y&&U.size?He.default.createElement(H,{extensions:U,getComponent:c}):null)))}}class OperationContainer extends He.PureComponent{constructor(e,t){super(e,t);const{tryItOutEnabled:r}=e.getConfigs();this.state={tryItOutEnabled:r,executeInProgress:!1}}static defaultProps={showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1};mapStateToProps(e,t){const{op:r,layoutSelectors:n,getConfigs:a}=t,{docExpansion:o,deepLinking:s,displayOperationId:l,displayRequestDuration:i,supportedSubmitMethods:c}=a(),u=n.showSummary(),d=r.getIn([\"operation\",\"__originalOperationId\"])||r.getIn([\"operation\",\"operationId\"])||(0,Yn.opId)(r.get(\"operation\"),t.path,t.method)||r.get(\"id\"),p=[\"operations\",t.tag,d],m=c.indexOf(t.method)>=0&&(void 0===t.allowTryItOut?t.specSelectors.allowTryItOutFor(t.path,t.method):t.allowTryItOut),f=r.getIn([\"operation\",\"security\"])||t.specSelectors.security();return{operationId:d,isDeepLinkingEnabled:s,showSummary:u,displayOperationId:l,displayRequestDuration:i,allowTryItOut:m,security:f,isAuthorized:t.authSelectors.isAuthorized(f),isShown:n.isShown(p,\"full\"===o),jumpToKey:`paths.${t.path}.${t.method}`,response:t.specSelectors.responseFor(t.path,t.method),request:t.specSelectors.requestFor(t.path,t.method)}}componentDidMount(){const{isShown:e}=this.props,t=this.getResolvedSubtree();e&&void 0===t&&this.requestResolvedSubtree()}UNSAFE_componentWillReceiveProps(e){const{response:t,isShown:r}=e,n=this.getResolvedSubtree();t!==this.props.response&&this.setState({executeInProgress:!1}),r&&void 0===n&&this.requestResolvedSubtree()}toggleShown=()=>{let{layoutActions:e,tag:t,operationId:r,isShown:n}=this.props;const a=this.getResolvedSubtree();n||void 0!==a||this.requestResolvedSubtree(),e.show([\"operations\",t,r],!n)};onCancelClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onTryoutClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onResetClick=e=>{const t=this.props.oas3Selectors.selectDefaultRequestBodyValue(...e);this.props.oas3Actions.setRequestBodyValue({value:t,pathMethod:e})};onExecute=()=>{this.setState({executeInProgress:!0})};getResolvedSubtree=()=>{const{specSelectors:e,path:t,method:r,specPath:n}=this.props;return n?e.specResolvedSubtree(n.toJS()):e.specResolvedSubtree([\"paths\",t,r])};requestResolvedSubtree=()=>{const{specActions:e,path:t,method:r,specPath:n}=this.props;return n?e.requestResolvedSubtree(n.toJS()):e.requestResolvedSubtree([\"paths\",t,r])};render(){let{op:e,tag:t,path:r,method:n,security:a,isAuthorized:o,operationId:s,showSummary:l,isShown:i,jumpToKey:c,allowTryItOut:u,response:d,request:p,displayOperationId:m,displayRequestDuration:f,isDeepLinkingEnabled:h,specPath:g,specSelectors:y,specActions:S,getComponent:_,getConfigs:v,layoutSelectors:b,layoutActions:w,authActions:C,authSelectors:x,oas3Actions:O,oas3Selectors:k,fn:N}=this.props;const A=_(\"operation\"),I=this.getResolvedSubtree()||(0,Xe.Map)(),j=(0,Xe.fromJS)({op:I,tag:t,path:r,summary:e.getIn([\"operation\",\"summary\"])||\"\",deprecated:I.get(\"deprecated\")||e.getIn([\"operation\",\"deprecated\"])||!1,method:n,security:a,isAuthorized:o,operationId:s,originalOperationId:I.getIn([\"operation\",\"__originalOperationId\"]),showSummary:l,isShown:i,jumpToKey:c,allowTryItOut:u,request:p,displayOperationId:m,displayRequestDuration:f,isDeepLinkingEnabled:h,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return He.default.createElement(A,{operation:j,response:d,request:p,isShown:i,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onResetClick:this.onResetClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:g,specActions:S,specSelectors:y,oas3Actions:O,oas3Selectors:k,layoutActions:w,layoutSelectors:b,authActions:C,authSelectors:x,getComponent:_,getConfigs:v,fn:N})}}var wa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return fe.default}});class OperationSummary extends He.PureComponent{static defaultProps={operationProps:null,specPath:(0,Xe.List)(),summary:\"\"};render(){let{isShown:e,toggleShown:t,getComponent:r,authActions:n,authSelectors:a,operationProps:o,specPath:s}=this.props,{summary:l,isAuthorized:i,method:c,op:u,showSummary:d,path:p,operationId:m,originalOperationId:f,displayOperationId:h}=o.toJS(),{summary:g}=u,y=o.get(\"security\");const S=r(\"authorizeOperationBtn\",!0),_=r(\"OperationSummaryMethod\"),v=r(\"OperationSummaryPath\"),b=r(\"JumpToPath\",!0),w=r(\"CopyToClipboardBtn\",!0),C=r(\"ArrowUpIcon\"),x=r(\"ArrowDownIcon\"),O=y&&!!y.count(),k=O&&1===y.size&&y.first().isEmpty(),N=!O||k;return He.default.createElement(\"div\",{className:`opblock-summary opblock-summary-${c}`},He.default.createElement(\"button\",{\"aria-expanded\":e,className:\"opblock-summary-control\",onClick:t},He.default.createElement(_,{method:c}),He.default.createElement(\"div\",{className:\"opblock-summary-path-description-wrapper\"},He.default.createElement(v,{getComponent:r,operationProps:o,specPath:s}),d?He.default.createElement(\"div\",{className:\"opblock-summary-description\"},(0,wa.default)(g||l)):null),h&&(f||m)?He.default.createElement(\"span\",{className:\"opblock-summary-operation-id\"},f||m):null),He.default.createElement(w,{textToCopy:`${s.get(1)}`}),N?null:He.default.createElement(S,{isAuthorized:i,onClick:()=>{const e=a.definitionsForRequirements(y);n.showDefinitions(e)}}),He.default.createElement(b,{path:s}),He.default.createElement(\"button\",{\"aria-label\":`${c} ${p.replace(/\\//g,\"​/\")}`,className:\"opblock-control-arrow\",\"aria-expanded\":e,tabIndex:\"-1\",onClick:t},e?He.default.createElement(C,{className:\"arrow\"}):He.default.createElement(x,{className:\"arrow\"})))}}class OperationSummaryMethod extends He.PureComponent{static defaultProps={operationProps:null};render(){let{method:e}=this.props;return He.default.createElement(\"span\",{className:\"opblock-summary-method\"},e.toUpperCase())}}class OperationSummaryPath extends He.PureComponent{render(){let{getComponent:e,operationProps:t}=this.props,{deprecated:r,isShown:n,path:a,tag:o,operationId:s,isDeepLinkingEnabled:l}=t.toJS();const i=a.split(/(?=\\/)/g);for(let e=1;e<i.length;e+=2)i.splice(e,0,He.default.createElement(\"wbr\",{key:e}));const c=e(\"DeepLink\");return He.default.createElement(\"span\",{className:r?\"opblock-summary-path__deprecated\":\"opblock-summary-path\",\"data-path\":a},He.default.createElement(c,{enabled:l,isShown:n,path:createDeepLinkPath(`${o}/${s}`),text:i}))}}var operation_extensions=({extensions:e,getComponent:t})=>{let r=t(\"OperationExtRow\");return He.default.createElement(\"div\",{className:\"opblock-section\"},He.default.createElement(\"div\",{className:\"opblock-section-header\"},He.default.createElement(\"h4\",null,\"Extensions\")),He.default.createElement(\"div\",{className:\"table-container\"},He.default.createElement(\"table\",null,He.default.createElement(\"thead\",null,He.default.createElement(\"tr\",null,He.default.createElement(\"td\",{className:\"col_header\"},\"Field\"),He.default.createElement(\"td\",{className:\"col_header\"},\"Value\"))),He.default.createElement(\"tbody\",null,e.entrySeq().map((([e,t])=>He.default.createElement(r,{key:`${e}-${t}`,xKey:e,xVal:t})))))))};var operation_extension_row=({xKey:e,xVal:t})=>{const r=t?t.toJS?t.toJS():t:null;return He.default.createElement(\"tr\",null,He.default.createElement(\"td\",null,e),He.default.createElement(\"td\",null,JSON.stringify(r)))};function createHtmlReadyId(e,t=\"_\"){return e.replace(/[^\\w-]/g,t)}class Responses extends He.default.Component{static defaultProps={tryItOutResponse:null,produces:(0,Xe.fromJS)([\"application/json\"]),displayRequestDuration:!1};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);onResponseContentTypeChange=({controlsAcceptHeader:e,value:t})=>{const{oas3Actions:r,path:n,method:a}=this.props;e&&r.setResponseContentType({value:t,path:n,method:a})};render(){let{responses:e,tryItOutResponse:t,getComponent:r,getConfigs:n,specSelectors:a,fn:o,producesValue:s,displayRequestDuration:l,specPath:i,path:c,method:u,oas3Selectors:d,oas3Actions:p}=this.props,m=function defaultStatusCode(e){let t=e.keySeq();return t.contains(wt)?wt:t.filter((e=>\"2\"===(e+\"\")[0])).sort().first()}(e);const f=r(\"contentType\"),h=r(\"liveResponse\"),g=r(\"response\");let y=this.props.produces&&this.props.produces.size?this.props.produces:Responses.defaultProps.produces;const S=a.isOAS3()?function getAcceptControllingResponse(e){if(!Xe.default.OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=e.find(((e,t)=>t.startsWith(\"2\")&&Object.keys(e.get(\"content\")||{}).length>0)),r=e.get(\"default\")||Xe.default.OrderedMap(),n=(r.get(\"content\")||Xe.default.OrderedMap()).keySeq().toJS().length?r:null;return t||n}(e):null,_=createHtmlReadyId(`${u}${c}_responses`),v=`${_}_select`;return He.default.createElement(\"div\",{className:\"responses-wrapper\"},He.default.createElement(\"div\",{className:\"opblock-section-header\"},He.default.createElement(\"h4\",null,\"Responses\"),a.isOAS3()?null:He.default.createElement(\"label\",{htmlFor:v},He.default.createElement(\"span\",null,\"Response content type\"),He.default.createElement(f,{value:s,ariaControls:_,ariaLabel:\"Response content type\",className:\"execute-content-type\",contentTypes:y,controlId:v,onChange:this.onChangeProducesWrapper}))),He.default.createElement(\"div\",{className:\"responses-inner\"},t?He.default.createElement(\"div\",null,He.default.createElement(h,{response:t,getComponent:r,getConfigs:n,specSelectors:a,path:this.props.path,method:this.props.method,displayRequestDuration:l}),He.default.createElement(\"h4\",null,\"Responses\")):null,He.default.createElement(\"table\",{\"aria-live\":\"polite\",className:\"responses-table\",id:_,role:\"region\"},He.default.createElement(\"thead\",null,He.default.createElement(\"tr\",{className:\"responses-header\"},He.default.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),He.default.createElement(\"td\",{className:\"col_header response-col_description\"},\"Description\"),a.isOAS3()?He.default.createElement(\"td\",{className:\"col col_header response-col_links\"},\"Links\"):null)),He.default.createElement(\"tbody\",null,e.entrySeq().map((([e,l])=>{let f=t&&t.get(\"status\")==e?\"response_current\":\"\";return He.default.createElement(g,{key:e,path:c,method:u,specPath:i.push(e),isDefault:m===e,fn:o,className:f,code:e,response:l,specSelectors:a,controlsAcceptHeader:l===S,onContentTypeChange:this.onResponseContentTypeChange,contentType:s,getConfigs:n,activeExamplesKey:d.activeExamplesMember(c,u,\"responses\",e),oas3Actions:p,getComponent:r})})).toArray()))))}}function getKnownSyntaxHighlighterLanguage(e){return function canJsonParse(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?\"json\":null}class Response extends He.default.Component{constructor(e,t){super(e,t),this.state={responseContentType:\"\"}}static defaultProps={response:(0,Xe.fromJS)({}),onContentTypeChange:()=>{}};_onContentTypeChange=e=>{const{onContentTypeChange:t,controlsAcceptHeader:r}=this.props;this.setState({responseContentType:e}),t({value:e,controlsAcceptHeader:r})};getTargetExamplesKey=()=>{const{response:e,contentType:t,activeExamplesKey:r}=this.props,n=this.state.responseContentType||t,a=e.getIn([\"content\",n],(0,Xe.Map)({})).get(\"examples\",null).keySeq().first();return r||a};render(){let{path:e,method:t,code:r,response:n,className:a,specPath:o,fn:s,getComponent:l,getConfigs:i,specSelectors:c,contentType:u,controlsAcceptHeader:d,oas3Actions:p}=this.props,{inferSchema:m,getSampleSchema:f}=s,h=c.isOAS3();const{showExtensions:g}=i();let y=g?getExtensions(n):null,S=n.get(\"headers\"),_=n.get(\"links\");const v=l(\"ResponseExtension\"),b=l(\"headers\"),w=l(\"HighlightCode\",!0),C=l(\"modelExample\"),x=l(\"Markdown\",!0),O=l(\"operationLink\"),k=l(\"contentType\"),N=l(\"ExamplesSelect\"),A=l(\"Example\");var I,j;const R=this.state.responseContentType||u,T=n.getIn([\"content\",R],(0,Xe.Map)({})),P=T.get(\"examples\",null);if(h){const e=T.get(\"schema\");I=e?m(e.toJS()):null,j=e?(0,Xe.List)([\"content\",this.state.responseContentType,\"schema\"]):o}else I=n.get(\"schema\"),j=n.has(\"schema\")?o.push(\"schema\"):o;let B,M,q=!1,L={includeReadOnly:!0};if(h)if(M=T.get(\"schema\")?.toJS(),Xe.Map.isMap(P)&&!P.isEmpty()){const e=this.getTargetExamplesKey(),getMediaTypeExample=e=>Xe.Map.isMap(e)?e.get(\"value\"):void 0;B=getMediaTypeExample(P.get(e,(0,Xe.Map)({}))),void 0===B&&(B=getMediaTypeExample(P.values().next().value)),q=!0}else void 0!==T.get(\"example\")&&(B=T.get(\"example\"),q=!0);else{M=I,L={...L,includeWriteOnly:!0};const e=n.getIn([\"examples\",R]);e&&(B=e,q=!0)}const U=((e,t)=>{if(null==e)return null;const r=getKnownSyntaxHighlighterLanguage(e)?\"json\":null;return He.default.createElement(\"div\",null,He.default.createElement(t,{className:\"example\",language:r},stringify(e)))})(f(M,R,L,q?B:void 0),w);return He.default.createElement(\"tr\",{className:\"response \"+(a||\"\"),\"data-code\":r},He.default.createElement(\"td\",{className:\"response-col_status\"},r),He.default.createElement(\"td\",{className:\"response-col_description\"},He.default.createElement(\"div\",{className:\"response-col_description__inner\"},He.default.createElement(x,{source:n.get(\"description\")})),g&&y.size?y.entrySeq().map((([e,t])=>He.default.createElement(v,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,h&&n.get(\"content\")?He.default.createElement(\"section\",{className:\"response-controls\"},He.default.createElement(\"div\",{className:(0,hr.default)(\"response-control-media-type\",{\"response-control-media-type--accept-controller\":d})},He.default.createElement(\"small\",{className:\"response-control-media-type__title\"},\"Media type\"),He.default.createElement(k,{value:this.state.responseContentType,contentTypes:n.get(\"content\")?n.get(\"content\").keySeq():(0,Xe.Seq)(),onChange:this._onContentTypeChange,ariaLabel:\"Media Type\"}),d?He.default.createElement(\"small\",{className:\"response-control-media-type__accept-message\"},\"Controls \",He.default.createElement(\"code\",null,\"Accept\"),\" header.\"):null),Xe.Map.isMap(P)&&!P.isEmpty()?He.default.createElement(\"div\",{className:\"response-control-examples\"},He.default.createElement(\"small\",{className:\"response-control-examples__title\"},\"Examples\"),He.default.createElement(N,{examples:P,currentExampleKey:this.getTargetExamplesKey(),onSelect:n=>p.setActiveExamplesMember({name:n,pathMethod:[e,t],contextType:\"responses\",contextName:r}),showLabels:!1})):null):null,U||I?He.default.createElement(C,{specPath:j,getComponent:l,getConfigs:i,specSelectors:c,schema:fromJSOrdered(I),example:U,includeReadOnly:!0}):null,h&&P?He.default.createElement(A,{example:P.get(this.getTargetExamplesKey(),(0,Xe.Map)({})),getComponent:l,getConfigs:i,omitValue:!0}):null,S?He.default.createElement(b,{headers:S,getComponent:l}):null),h?He.default.createElement(\"td\",{className:\"response-col_links\"},_?_.toSeq().entrySeq().map((([e,t])=>He.default.createElement(O,{key:e,name:e,link:t,getComponent:l}))):He.default.createElement(\"i\",null,\"No links\")):null)}}var response_extension=({xKey:e,xVal:t})=>He.default.createElement(\"div\",{className:\"response__extension\"},e,\": \",String(t)),Ca=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return he.default}}),xa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ge.default}});class ResponseBody extends He.default.PureComponent{state={parsedContent:null};updateParsedContent=e=>{const{content:t}=this.props;if(e!==t)if(t&&t instanceof Blob){var r=new FileReader;r.onload=()=>{this.setState({parsedContent:r.result})},r.readAsText(t)}else this.setState({parsedContent:t.toString()})};componentDidMount(){this.updateParsedContent(null)}componentDidUpdate(e){this.updateParsedContent(e.content)}render(){let{content:e,contentType:t,url:r,headers:n={},getComponent:a}=this.props;const{parsedContent:o}=this.state,s=a(\"HighlightCode\",!0),l=\"response_\"+(new Date).getTime();let i,c;if(r=r||\"\",(/^application\\/octet-stream/i.test(t)||n[\"Content-Disposition\"]&&/attachment/i.test(n[\"Content-Disposition\"])||n[\"content-disposition\"]&&/attachment/i.test(n[\"content-disposition\"])||n[\"Content-Description\"]&&/File Transfer/i.test(n[\"Content-Description\"])||n[\"content-description\"]&&/File Transfer/i.test(n[\"content-description\"]))&&(e.size>0||e.length>0))if(\"Blob\"in window){let a=t||\"text/html\",o=e instanceof Blob?e:new Blob([e],{type:a}),s=window.URL.createObjectURL(o),l=[a,r.substr(r.lastIndexOf(\"/\")+1),s].join(\":\"),i=n[\"content-disposition\"]||n[\"Content-Disposition\"];if(void 0!==i){let e=function extractFileNameFromContentDispositionHeader(e){let t;if([/filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,/filename\\*=[^']+'\\w*'([^;]+);?/i,/filename=\"([^;]*);?\"/i,/filename=([^;]*);?/i].some((r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}(i);null!==e&&(l=e)}c=ct.navigator&&ct.navigator.msSaveOrOpenBlob?He.default.createElement(\"div\",null,He.default.createElement(\"a\",{href:s,onClick:()=>ct.navigator.msSaveOrOpenBlob(o,l)},\"Download file\")):He.default.createElement(\"div\",null,He.default.createElement(\"a\",{href:s,download:l},\"Download file\"))}else c=He.default.createElement(\"pre\",{className:\"microlight\"},\"Download headers detected but your browser does not support downloading binary via XHR (Blob).\");else if(/json/i.test(t)){let t=null;getKnownSyntaxHighlighterLanguage(e)&&(t=\"json\");try{i=JSON.stringify(JSON.parse(e),null,\"  \")}catch(t){i=\"can't parse JSON.  Raw result:\\n\\n\"+e}c=He.default.createElement(s,{language:t,downloadable:!0,fileName:`${l}.json`,canCopy:!0},i)}else/xml/i.test(t)?(i=(0,Ca.default)(e,{textNodesOnSameLine:!0,indentor:\"  \"}),c=He.default.createElement(s,{downloadable:!0,fileName:`${l}.xml`,canCopy:!0},i)):c=\"text/html\"===(0,xa.default)(t)||/text\\/plain/.test(t)?He.default.createElement(s,{downloadable:!0,fileName:`${l}.html`,canCopy:!0},e):\"text/csv\"===(0,xa.default)(t)||/text\\/csv/.test(t)?He.default.createElement(s,{downloadable:!0,fileName:`${l}.csv`,canCopy:!0},e):/^image\\//i.test(t)?t.includes(\"svg\")?He.default.createElement(\"div\",null,\" \",e,\" \"):He.default.createElement(\"img\",{src:window.URL.createObjectURL(e)}):/^audio\\//i.test(t)?He.default.createElement(\"pre\",{className:\"microlight\"},He.default.createElement(\"audio\",{controls:!0,key:r},He.default.createElement(\"source\",{src:r,type:t}))):\"string\"==typeof e?He.default.createElement(s,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},e):e.size>0?o?He.default.createElement(\"div\",null,He.default.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; displaying content as text.\"),He.default.createElement(s,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},o)):He.default.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; unable to display.\"):null;return c?He.default.createElement(\"div\",null,He.default.createElement(\"h5\",null,\"Response body\"),c):null}}class Parameters extends He.Component{constructor(e){super(e),this.state={callbackVisible:!1,parametersVisible:!0}}static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]};onChange=(e,t,r)=>{let{specActions:{changeParamByIdentity:n},onChangeKey:a}=this.props;n(a,e,t,r)};onChangeConsumesWrapper=e=>{let{specActions:{changeConsumesValue:t},onChangeKey:r}=this.props;t(r,e)};toggleTab=e=>\"parameters\"===e?this.setState({parametersVisible:!0,callbackVisible:!1}):\"callbacks\"===e?this.setState({callbackVisible:!0,parametersVisible:!1}):void 0;onChangeMediaType=({value:e,pathMethod:t})=>{let{specActions:r,oas3Selectors:n,oas3Actions:a}=this.props;const o=n.hasUserEditedBody(...t),s=n.shouldRetainRequestBodyValue(...t);a.setRequestContentType({value:e,pathMethod:t}),a.initRequestBodyValidateError({pathMethod:t}),o||(s||a.setRequestBodyValue({value:void 0,pathMethod:t}),r.clearResponse(...t),r.clearRequest(...t),r.clearValidateParams(t))};render(){let{onTryoutClick:e,onResetClick:t,parameters:r,allowTryItOut:n,tryItOutEnabled:a,specPath:o,fn:s,getComponent:l,getConfigs:i,specSelectors:c,specActions:u,pathMethod:d,oas3Actions:p,oas3Selectors:m,operation:f}=this.props;const h=l(\"parameterRow\"),g=l(\"TryItOutButton\"),y=l(\"contentType\"),S=l(\"Callbacks\",!0),_=l(\"RequestBody\",!0),v=a&&n,b=c.isOAS3(),w=`${createHtmlReadyId(`${d[1]}${d[0]}_requests`)}_select`,C=f.get(\"requestBody\"),x=Object.values(r.reduce(((e,t)=>{if(Xe.Map.isMap(t)){const r=t.get(\"in\");e[r]??=[],e[r].push(t)}return e}),{})).reduce(((e,t)=>e.concat(t)),[]);return He.default.createElement(\"div\",{className:\"opblock-section\"},He.default.createElement(\"div\",{className:\"opblock-section-header\"},b?He.default.createElement(\"div\",{className:\"tab-header\"},He.default.createElement(\"div\",{onClick:()=>this.toggleTab(\"parameters\"),className:`tab-item ${this.state.parametersVisible&&\"active\"}`},He.default.createElement(\"h4\",{className:\"opblock-title\"},He.default.createElement(\"span\",null,\"Parameters\"))),f.get(\"callbacks\")?He.default.createElement(\"div\",{onClick:()=>this.toggleTab(\"callbacks\"),className:`tab-item ${this.state.callbackVisible&&\"active\"}`},He.default.createElement(\"h4\",{className:\"opblock-title\"},He.default.createElement(\"span\",null,\"Callbacks\"))):null):He.default.createElement(\"div\",{className:\"tab-header\"},He.default.createElement(\"h4\",{className:\"opblock-title\"},\"Parameters\")),n?He.default.createElement(g,{isOAS3:c.isOAS3(),hasUserEditedBody:m.hasUserEditedBody(...d),enabled:a,onCancelClick:this.props.onCancelClick,onTryoutClick:e,onResetClick:()=>t(d)}):null),this.state.parametersVisible?He.default.createElement(\"div\",{className:\"parameters-container\"},x.length?He.default.createElement(\"div\",{className:\"table-container\"},He.default.createElement(\"table\",{className:\"parameters\"},He.default.createElement(\"thead\",null,He.default.createElement(\"tr\",null,He.default.createElement(\"th\",{className:\"col_header parameters-col_name\"},\"Name\"),He.default.createElement(\"th\",{className:\"col_header parameters-col_description\"},\"Description\"))),He.default.createElement(\"tbody\",null,x.map(((e,t)=>He.default.createElement(h,{fn:s,specPath:o.push(t.toString()),getComponent:l,getConfigs:i,rawParam:e,param:c.parameterWithMetaByIdentity(d,e),key:`${e.get(\"in\")}.${e.get(\"name\")}`,onChange:this.onChange,onChangeConsumes:this.onChangeConsumesWrapper,specSelectors:c,specActions:u,oas3Actions:p,oas3Selectors:m,pathMethod:d,isExecute:v})))))):He.default.createElement(\"div\",{className:\"opblock-description-wrapper\"},He.default.createElement(\"p\",null,\"No parameters\"))):null,this.state.callbackVisible?He.default.createElement(\"div\",{className:\"callbacks-container opblock-description-wrapper\"},He.default.createElement(S,{callbacks:(0,Xe.Map)(f.get(\"callbacks\")),specPath:o.slice(0,-1).push(\"callbacks\")})):null,b&&C&&this.state.parametersVisible&&He.default.createElement(\"div\",{className:\"opblock-section opblock-section-request-body\"},He.default.createElement(\"div\",{className:\"opblock-section-header\"},He.default.createElement(\"h4\",{className:`opblock-title parameter__name ${C.get(\"required\")&&\"required\"}`},\"Request body\"),He.default.createElement(\"label\",{id:w},He.default.createElement(y,{value:m.requestContentType(...d),contentTypes:C.get(\"content\",(0,Xe.List)()).keySeq(),onChange:e=>{this.onChangeMediaType({value:e,pathMethod:d})},className:\"body-param-content-type\",ariaLabel:\"Request content type\",controlId:w}))),He.default.createElement(\"div\",{className:\"opblock-description-wrapper\"},He.default.createElement(_,{setRetainRequestBodyValueFlag:e=>p.setRetainRequestBodyValueFlag({value:e,pathMethod:d}),userHasEditedBody:m.hasUserEditedBody(...d),specPath:o.slice(0,-1).push(\"requestBody\"),requestBody:C,requestBodyValue:m.requestBodyValue(...d),requestBodyInclusionSetting:m.requestBodyInclusionSetting(...d),requestBodyErrors:m.requestBodyErrors(...d),isExecute:v,getConfigs:i,activeExamplesKey:m.activeExamplesMember(...d,\"requestBody\",\"requestBody\"),updateActiveExamplesKey:e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:\"requestBody\",contextName:\"requestBody\"})},onChange:(e,t)=>{if(t){const r=m.requestBodyValue(...d),n=Xe.Map.isMap(r)?r:(0,Xe.Map)();return p.setRequestBodyValue({pathMethod:d,value:n.setIn(t,e)})}p.setRequestBodyValue({value:e,pathMethod:d})},onChangeIncludeEmpty:(e,t)=>{p.setRequestBodyInclusion({pathMethod:d,value:t,name:e})},contentType:m.requestContentType(...d)}))))}}var parameter_extension=({xKey:e,xVal:t})=>He.default.createElement(\"div\",{className:\"parameter__extension\"},e,\": \",String(t));const Oa={onChange:()=>{},isIncludedOptions:{}};class ParameterIncludeEmpty extends He.Component{static defaultProps=Oa;componentDidMount(){const{isIncludedOptions:e,onChange:t}=this.props,{shouldDispatchInit:r,defaultValue:n}=e;r&&t(n)}onCheckboxChange=e=>{const{onChange:t}=this.props;t(e.target.checked)};render(){let{isIncluded:e,isDisabled:t}=this.props;return He.default.createElement(\"div\",null,He.default.createElement(\"label\",{htmlFor:\"include_empty_value\",className:(0,hr.default)(\"parameter__empty_value_toggle\",{disabled:t})},He.default.createElement(\"input\",{id:\"include_empty_value\",type:\"checkbox\",disabled:t,checked:!t&&e,onChange:this.onCheckboxChange}),\"Send empty value\"))}}class ParameterRow extends He.Component{constructor(e,t){super(e,t),this.setDefaultValue()}UNSAFE_componentWillReceiveProps(e){let t,{specSelectors:r,pathMethod:n,rawParam:a}=e,o=r.isOAS3(),s=r.parameterWithMetaByIdentity(n,a)||new Xe.Map;if(s=s.isEmpty()?a:s,o){let{schema:e}=getParameterSchema(s,{isOAS3:o});t=e?e.get(\"enum\"):void 0}else t=s?s.get(\"enum\"):void 0;let l,i=s?s.get(\"value\"):void 0;void 0!==i?l=i:a.get(\"required\")&&t&&t.size&&(l=t.first()),void 0!==l&&l!==i&&this.onChangeWrapper(function numberToString(e){return\"number\"==typeof e?e.toString():e}(l)),this.setDefaultValue()}onChangeWrapper=(e,t=!1)=>{let r,{onChange:n,rawParam:a}=this.props;return r=\"\"===e||e&&0===e.size?null:e,n(a,r,t)};_onExampleSelect=e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:\"parameters\",contextName:this.getParamKey()})};onChangeIncludeEmpty=e=>{let{specActions:t,param:r,pathMethod:n}=this.props;const a=r.get(\"name\"),o=r.get(\"in\");return t.updateEmptyParamInclusion(n,a,o,e)};setDefaultValue=()=>{let{specSelectors:e,pathMethod:t,rawParam:r,oas3Selectors:n,fn:a}=this.props;const o=e.parameterWithMetaByIdentity(t,r)||(0,Xe.Map)();let{schema:s}=getParameterSchema(o,{isOAS3:e.isOAS3()});const l=o.get(\"content\",(0,Xe.Map)()).keySeq().first(),i=s?a.getSampleSchema(s.toJS(),l,{includeWriteOnly:!0}):null;if(o&&void 0===o.get(\"value\")&&\"body\"!==o.get(\"in\")){let r;if(e.isSwagger2())r=void 0!==o.get(\"x-example\")?o.get(\"x-example\"):void 0!==o.getIn([\"schema\",\"example\"])?o.getIn([\"schema\",\"example\"]):s&&s.getIn([\"default\"]);else if(e.isOAS3()){s=this.composeJsonSchema(s);const e=n.activeExamplesMember(...t,\"parameters\",this.getParamKey());r=void 0!==o.getIn([\"examples\",e,\"value\"])?o.getIn([\"examples\",e,\"value\"]):void 0!==o.getIn([\"content\",l,\"example\"])?o.getIn([\"content\",l,\"example\"]):void 0!==o.get(\"example\")?o.get(\"example\"):void 0!==(s&&s.get(\"example\"))?s&&s.get(\"example\"):void 0!==(s&&s.get(\"default\"))?s&&s.get(\"default\"):o.get(\"default\")}void 0===r||Xe.List.isList(r)||(r=stringify(r));const c=a.jsonSchema202012.foldType(immutableToJS(s?.get(\"type\"))),u=a.jsonSchema202012.foldType(immutableToJS(s?.getIn([\"items\",\"type\"])));void 0!==r?this.onChangeWrapper(r):\"object\"===c&&i&&!o.get(\"examples\")?this.onChangeWrapper(Xe.List.isList(i)?i:stringify(i)):\"array\"===c&&\"object\"===u&&i&&!o.get(\"examples\")&&this.onChangeWrapper(Xe.List.isList(i)?i:(0,Xe.List)(JSON.parse(i)))}};getParamKey(){const{param:e}=this.props;return e?`${e.get(\"name\")}-${e.get(\"in\")}`:null}composeJsonSchema(e){const{fn:t}=this.props,r=e.get(\"oneOf\")?.get(0)?.toJS(),n=e.get(\"anyOf\")?.get(0)?.toJS();return(0,Xe.fromJS)(t.mergeJsonSchema(e.toJS(),r??n??{}))}render(){let{param:e,rawParam:t,getComponent:r,getConfigs:n,isExecute:a,fn:o,onChangeConsumes:s,specSelectors:l,pathMethod:i,specPath:c,oas3Selectors:u}=this.props,d=l.isOAS3();const{showExtensions:p,showCommonExtensions:m}=n();if(e||(e=t),!t)return null;const f=r(\"JsonSchemaForm\"),h=r(\"ParamBody\");let g=e.get(\"in\"),y=\"body\"!==g?null:He.default.createElement(h,{getComponent:r,getConfigs:n,fn:o,param:e,consumes:l.consumesOptionsFor(i),consumesValue:l.contentTypeValues(i).get(\"requestContentType\"),onChange:this.onChangeWrapper,onChangeConsumes:s,isExecute:a,specSelectors:l,pathMethod:i});const S=r(\"modelExample\"),_=r(\"Markdown\",!0),v=r(\"ParameterExt\"),b=r(\"ParameterIncludeEmpty\"),w=r(\"ExamplesSelectValueRetainer\"),C=r(\"Example\");let{schema:x}=getParameterSchema(e,{isOAS3:d}),O=l.parameterWithMetaByIdentity(i,t)||(0,Xe.Map)();d&&(x=this.composeJsonSchema(x));let k=x?x.get(\"format\"):null,N=\"formData\"===g,A=\"FormData\"in ct,I=e.get(\"required\");const j=o.jsonSchema202012.getType(immutableToJS(x)),R=o.jsonSchema202012.foldType(immutableToJS(x?.get(\"type\"))),T=o.jsonSchema202012.foldType(immutableToJS(x?.getIn([\"items\",\"type\"]))),P=!y&&\"object\"===R,B=!y&&\"object\"===T;let M,q,L,U,D=O?O.get(\"value\"):\"\",$=m?getCommonExtensions(x):null,V=p?getExtensions(e):null,J=!1;void 0!==e&&x&&(M=x.get(\"items\")),void 0!==M?(q=M.get(\"enum\"),L=M.get(\"default\")):x&&(q=x.get(\"enum\")),q&&q.size&&q.size>0&&(J=!0),void 0!==e&&(x&&(L=x.get(\"default\")),void 0===L&&(L=e.get(\"default\")),U=e.get(\"example\"),void 0===U&&(U=e.get(\"x-example\")));const F=y?null:He.default.createElement(f,{fn:o,getComponent:r,value:D,required:I,disabled:!a,description:e.get(\"name\"),onChange:this.onChangeWrapper,errors:O.get(\"errors\"),schema:x});return He.default.createElement(\"tr\",{\"data-param-name\":e.get(\"name\"),\"data-param-in\":e.get(\"in\")},He.default.createElement(\"td\",{className:\"parameters-col_name\"},He.default.createElement(\"div\",{className:I?\"parameter__name required\":\"parameter__name\"},e.get(\"name\"),I?He.default.createElement(\"span\",null,\" *\"):null),He.default.createElement(\"div\",{className:\"parameter__type\"},j,k&&He.default.createElement(\"span\",{className:\"prop-format\"},\"($\",k,\")\")),He.default.createElement(\"div\",{className:\"parameter__deprecated\"},d&&e.get(\"deprecated\")?\"deprecated\":null),He.default.createElement(\"div\",{className:\"parameter__in\"},\"(\",e.get(\"in\"),\")\")),He.default.createElement(\"td\",{className:\"parameters-col_description\"},e.get(\"description\")?He.default.createElement(_,{source:e.get(\"description\")}):null,!y&&a||!J?null:He.default.createElement(_,{className:\"parameter__enum\",source:\"<i>Available values</i> : \"+q.map((function(e){return e})).toArray().map(String).join(\", \")}),!y&&a||void 0===L?null:He.default.createElement(_,{className:\"parameter__default\",source:\"<i>Default value</i> : \"+L}),!y&&a||void 0===U?null:He.default.createElement(_,{source:\"<i>Example</i> : \"+U}),N&&!A&&He.default.createElement(\"div\",null,\"Error: your browser does not support FormData\"),d&&e.get(\"examples\")?He.default.createElement(\"section\",{className:\"parameter-controls\"},He.default.createElement(w,{examples:e.get(\"examples\"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:r,defaultToFirstExample:!0,currentKey:u.activeExamplesMember(...i,\"parameters\",this.getParamKey()),currentUserInputValue:D})):null,P||B?He.default.createElement(S,{getComponent:r,specPath:c.push(\"schema\"),getConfigs:n,isExecute:a,specSelectors:l,schema:x,example:F}):F,y&&x?He.default.createElement(S,{getComponent:r,specPath:c.push(\"schema\"),getConfigs:n,isExecute:a,specSelectors:l,schema:x,example:y,includeWriteOnly:!0}):null,!y&&a&&e.get(\"allowEmptyValue\")?He.default.createElement(b,{onChange:this.onChangeIncludeEmpty,isIncluded:l.parameterInclusionSettingFor(i,e.get(\"name\"),e.get(\"in\")),isDisabled:!isEmptyValue(D)}):null,d&&e.get(\"examples\")?He.default.createElement(C,{example:e.getIn([\"examples\",u.activeExamplesMember(...i,\"parameters\",this.getParamKey())]),getComponent:r,getConfigs:n}):null,m&&$.size?$.entrySeq().map((([e,t])=>He.default.createElement(v,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,p&&V.size?V.entrySeq().map((([e,t])=>He.default.createElement(v,{key:`${e}-${t}`,xKey:e,xVal:t}))):null))}}class Execute extends He.Component{handleValidateParameters=()=>{let{specSelectors:e,specActions:t,path:r,method:n}=this.props;return t.validateParams([r,n]),e.validateBeforeExecute([r,n])};handleValidateRequestBody=()=>{let{path:e,method:t,specSelectors:r,oas3Selectors:n,oas3Actions:a}=this.props,o={missingBodyValue:!1,missingRequiredKeys:[]};a.clearRequestBodyValidateError({path:e,method:t});let s=r.getOAS3RequiredRequestBodyContentType([e,t]),l=n.requestBodyValue(e,t),i=n.validateBeforeExecute([e,t]),c=n.requestContentType(e,t);if(!i)return o.missingBodyValue=!0,a.setRequestBodyValidateError({path:e,method:t,validationErrors:o}),!1;if(!s)return!0;let u=n.validateShallowRequired({oas3RequiredRequestBodyContentType:s,oas3RequestContentType:c,oas3RequestBodyValue:l});return!u||u.length<1||(u.forEach((e=>{o.missingRequiredKeys.push(e)})),a.setRequestBodyValidateError({path:e,method:t,validationErrors:o}),!1)};handleValidationResultPass=()=>{let{specActions:e,operation:t,path:r,method:n}=this.props;this.props.onExecute&&this.props.onExecute(),e.execute({operation:t,path:r,method:n})};handleValidationResultFail=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearValidateParams([t,r]),setTimeout((()=>{e.validateParams([t,r])}),40)};handleValidationResult=e=>{e?this.handleValidationResultPass():this.handleValidationResultFail()};onClick=()=>{let e=this.handleValidateParameters(),t=this.handleValidateRequestBody(),r=e&&t;this.handleValidationResult(r)};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);render(){const{disabled:e}=this.props;return He.default.createElement(\"button\",{className:\"btn execute opblock-control__btn\",onClick:this.onClick,disabled:e},\"Execute\")}}class headers_Headers extends He.default.Component{render(){let{headers:e,getComponent:t}=this.props;const r=t(\"Property\"),n=t(\"Markdown\",!0);return e&&e.size?He.default.createElement(\"div\",{className:\"headers-wrapper\"},He.default.createElement(\"h4\",{className:\"headers__title\"},\"Headers:\"),He.default.createElement(\"table\",{className:\"headers\"},He.default.createElement(\"thead\",null,He.default.createElement(\"tr\",{className:\"header-row\"},He.default.createElement(\"th\",{className:\"header-col\"},\"Name\"),He.default.createElement(\"th\",{className:\"header-col\"},\"Description\"),He.default.createElement(\"th\",{className:\"header-col\"},\"Type\"))),He.default.createElement(\"tbody\",null,e.entrySeq().map((([e,t])=>{if(!Xe.default.Map.isMap(t))return null;const a=t.get(\"description\"),o=t.getIn([\"schema\"])?t.getIn([\"schema\",\"type\"]):t.getIn([\"type\"]),s=t.getIn([\"schema\",\"example\"]);return He.default.createElement(\"tr\",{key:e},He.default.createElement(\"td\",{className:\"header-col\"},e),He.default.createElement(\"td\",{className:\"header-col\"},a?He.default.createElement(n,{source:a}):null),He.default.createElement(\"td\",{className:\"header-col\"},o,\" \",s?He.default.createElement(r,{propKey:\"Example\",propVal:s,propClass:\"header-example\"}):null))})).toArray()))):null}}class Errors extends He.default.Component{render(){let{editorActions:e,errSelectors:t,layoutSelectors:r,layoutActions:n,getComponent:a}=this.props;const o=a(\"Collapse\");if(e&&e.jumpToLine)var s=e.jumpToLine;let l=t.allErrors().filter((e=>\"thrown\"===e.get(\"type\")||\"error\"===e.get(\"level\")));if(!l||l.count()<1)return null;let i=r.isShown([\"errorPane\"],!0),c=l.sortBy((e=>e.get(\"line\")));return He.default.createElement(\"pre\",{className:\"errors-wrapper\"},He.default.createElement(\"hgroup\",{className:\"error\"},He.default.createElement(\"h4\",{className:\"errors__title\"},\"Errors\"),He.default.createElement(\"button\",{className:\"btn errors__clear-btn\",onClick:()=>n.show([\"errorPane\"],!i)},i?\"Hide\":\"Show\")),He.default.createElement(o,{isOpened:i,animated:!0},He.default.createElement(\"div\",{className:\"errors\"},c.map(((e,t)=>{let r=e.get(\"type\");return\"thrown\"===r||\"auth\"===r?He.default.createElement(ThrownErrorItem,{key:t,error:e.get(\"error\")||e,jumpToLine:s}):\"spec\"===r?He.default.createElement(SpecErrorItem,{key:t,error:e,jumpToLine:s}):void 0})))))}}const ThrownErrorItem=({error:e,jumpToLine:t})=>{if(!e)return null;let r=e.get(\"line\");return He.default.createElement(\"div\",{className:\"error-wrapper\"},e?He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,e.get(\"source\")&&e.get(\"level\")?toTitleCase(e.get(\"source\"))+\" \"+e.get(\"level\"):\"\",e.get(\"path\")?He.default.createElement(\"small\",null,\" at \",e.get(\"path\")):null),He.default.createElement(\"span\",{className:\"message thrown\"},e.get(\"message\")),He.default.createElement(\"div\",{className:\"error-line\"},r&&t?He.default.createElement(\"a\",{onClick:t.bind(null,r)},\"Jump to line \",r):null)):null)},SpecErrorItem=({error:e,jumpToLine:t=null})=>{let r=null;return e.get(\"path\")?r=Xe.List.isList(e.get(\"path\"))?He.default.createElement(\"small\",null,\"at \",e.get(\"path\").join(\".\")):He.default.createElement(\"small\",null,\"at \",e.get(\"path\")):e.get(\"line\")&&!t&&(r=He.default.createElement(\"small\",null,\"on line \",e.get(\"line\"))),He.default.createElement(\"div\",{className:\"error-wrapper\"},e?He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,toTitleCase(e.get(\"source\"))+\" \"+e.get(\"level\"),\" \",r),He.default.createElement(\"span\",{className:\"message\"},e.get(\"message\")),He.default.createElement(\"div\",{className:\"error-line\"},t?He.default.createElement(\"a\",{onClick:t.bind(null,e.get(\"line\"))},\"Jump to line \",e.get(\"line\")):null)):null)};function toTitleCase(e){return(e||\"\").split(\" \").map((e=>e[0].toUpperCase()+e.slice(1))).join(\" \")}const content_type_noop=()=>{};class ContentType extends He.default.Component{static defaultProps={onChange:content_type_noop,value:null,contentTypes:(0,Xe.fromJS)([\"application/json\"])};componentDidMount(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}UNSAFE_componentWillReceiveProps(e){e.contentTypes&&e.contentTypes.size&&(e.contentTypes.includes(e.value)||e.onChange(e.contentTypes.first()))}onChangeWrapper=e=>this.props.onChange(e.target.value);render(){let{ariaControls:e,ariaLabel:t,className:r,contentTypes:n,controlId:a,value:o}=this.props;return n&&n.size?He.default.createElement(\"div\",{className:\"content-type-wrapper \"+(r||\"\")},He.default.createElement(\"select\",{\"aria-controls\":e,\"aria-label\":t,className:\"content-type\",id:a,onChange:this.onChangeWrapper,value:o||\"\"},n.map((e=>He.default.createElement(\"option\",{key:e,value:e},e))).toArray())):null}}function xclass(...e){return e.filter((e=>!!e)).join(\" \").trim()}class Container extends He.default.Component{render(){let{fullscreen:e,full:t,...r}=this.props;if(e)return He.default.createElement(\"section\",r);let n=\"swagger-container\"+(t?\"-full\":\"\");return He.default.createElement(\"section\",(0,ar.default)({},r,{className:xclass(r.className,n)}))}}const ka={mobile:\"\",tablet:\"-tablet\",desktop:\"-desktop\",large:\"-hd\"};class Col extends He.default.Component{render(){const{hide:e,keepContents:t,mobile:r,tablet:n,desktop:a,large:o,...s}=this.props;if(e&&!t)return He.default.createElement(\"span\",null);let l=[];for(let e in ka){if(!Object.prototype.hasOwnProperty.call(ka,e))continue;let t=ka[e];if(e in this.props){let r=this.props[e];if(r<1){l.push(\"none\"+t);continue}l.push(\"block\"+t),l.push(\"col-\"+r+t)}}e&&l.push(\"hidden\");let i=xclass(s.className,...l);return He.default.createElement(\"section\",(0,ar.default)({},s,{className:i}))}}class Row extends He.default.Component{render(){return He.default.createElement(\"div\",(0,ar.default)({},this.props,{className:xclass(this.props.className,\"wrapper\")}))}}class Button extends He.default.Component{static defaultProps={className:\"\"};render(){return He.default.createElement(\"button\",(0,ar.default)({},this.props,{className:xclass(this.props.className,\"button\")}))}}const TextArea=e=>He.default.createElement(\"textarea\",e),Input=e=>He.default.createElement(\"input\",e);class Select extends He.default.Component{static defaultProps={multiple:!1,allowEmptyValue:!0};constructor(e,t){let r;super(e,t),r=e.value?e.value:e.multiple?[\"\"]:\"\",this.state={value:r}}onChange=e=>{let t,{onChange:r,multiple:n}=this.props,a=[].slice.call(e.target.options);t=n?a.filter((function(e){return e.selected})).map((function(e){return e.value})):e.target.value,this.setState({value:t}),r&&r(t)};UNSAFE_componentWillReceiveProps(e){e.value!==this.props.value&&this.setState({value:e.value})}render(){let{allowedValues:e,multiple:t,allowEmptyValue:r,disabled:n}=this.props,a=this.state.value?.toJS?.()||this.state.value;return He.default.createElement(\"select\",{className:this.props.className,multiple:t,value:a,onChange:this.onChange,disabled:n},r?He.default.createElement(\"option\",{value:\"\"},\"--\"):null,e.map((function(e,t){return He.default.createElement(\"option\",{key:t,value:String(e)},String(e))})))}}class Link extends He.default.Component{render(){return He.default.createElement(\"a\",(0,ar.default)({},this.props,{rel:\"noopener noreferrer\",className:xclass(this.props.className,\"link\")}))}}const NoMargin=({children:e})=>He.default.createElement(\"div\",{className:\"no-margin\"},\" \",e,\" \");class Collapse extends He.default.Component{static defaultProps={isOpened:!1,animated:!1};renderNotAnimated(){return this.props.isOpened?He.default.createElement(NoMargin,null,this.props.children):He.default.createElement(\"noscript\",null)}render(){let{animated:e,isOpened:t,children:r}=this.props;return e?(r=t?r:null,He.default.createElement(NoMargin,null,r)):this.renderNotAnimated()}}class Overview extends He.default.Component{constructor(...e){super(...e),this.setTagShown=this._setTagShown.bind(this)}_setTagShown(e,t){this.props.layoutActions.show(e,t)}showOp(e,t){let{layoutActions:r}=this.props;r.show(e,t)}render(){let{specSelectors:e,layoutSelectors:t,layoutActions:r,getComponent:n}=this.props,a=e.taggedOperations();const o=n(\"Collapse\");return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",{className:\"overview-title\"},\"Overview\"),a.map(((e,n)=>{let a=e.get(\"operations\"),s=[\"overview-tags\",n],l=t.isShown(s,!0);return He.default.createElement(\"div\",{key:\"overview-\"+n},He.default.createElement(\"h4\",{onClick:()=>r.show(s,!l),className:\"link overview-tag\"},\" \",l?\"-\":\"+\",n),He.default.createElement(o,{isOpened:l,animated:!0},a.map((e=>{let{path:n,method:a,id:o}=e.toObject(),s=\"operations\",l=o,i=t.isShown([s,l]);return He.default.createElement(OperationLink,{key:o,path:n,method:a,id:n+\"-\"+a,shown:i,showOpId:l,showOpIdPrefix:s,href:`#operation-${l}`,onClick:r.show})})).toArray()))})).toArray(),a.size<1&&He.default.createElement(\"h3\",null,\" No operations defined in spec! \"))}}class OperationLink extends He.default.Component{constructor(e){super(e),this.onClick=this._onClick.bind(this)}_onClick(){let{showOpId:e,showOpIdPrefix:t,onClick:r,shown:n}=this.props;r([t,e],!n)}render(){let{id:e,method:t,shown:r,href:n}=this.props;return He.default.createElement(Link,{href:n,onClick:this.onClick,className:\"block opblock-link \"+(r?\"shown\":\"\")},He.default.createElement(\"div\",null,He.default.createElement(\"small\",{className:`bold-label-${t}`},t.toUpperCase()),He.default.createElement(\"span\",{className:\"bold-label\"},e)))}}class InitializedInput extends He.default.Component{componentDidMount(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}render(){const{value:e,defaultValue:t,initialValue:r,...n}=this.props;return He.default.createElement(\"input\",(0,ar.default)({},n,{ref:e=>this.inputRef=e}))}}class InfoBasePath extends He.default.Component{render(){const{host:e,basePath:t}=this.props;return He.default.createElement(\"pre\",{className:\"base-url\"},\"[ Base URL: \",e,t,\" ]\")}}class InfoUrl extends He.default.PureComponent{render(){const{url:e,getComponent:t}=this.props,r=t(\"Link\");return He.default.createElement(r,{target:\"_blank\",href:sanitizeUrl(e)},He.default.createElement(\"span\",{className:\"url\"},\" \",e))}}class Info extends He.default.Component{render(){const{info:e,url:t,host:r,basePath:n,getComponent:a,externalDocs:o,selectedServer:s,url:l}=this.props,i=e.get(\"version\"),c=e.get(\"description\"),u=e.get(\"title\"),d=safeBuildUrl(e.get(\"termsOfService\"),l,{selectedServer:s}),p=e.get(\"contact\"),m=e.get(\"license\"),f=safeBuildUrl(o&&o.get(\"url\"),l,{selectedServer:s}),h=o&&o.get(\"description\"),g=a(\"Markdown\",!0),y=a(\"Link\"),S=a(\"VersionStamp\"),_=a(\"OpenAPIVersion\"),v=a(\"InfoUrl\"),b=a(\"InfoBasePath\"),w=a(\"License\"),C=a(\"Contact\");return He.default.createElement(\"div\",{className:\"info\"},He.default.createElement(\"hgroup\",{className:\"main\"},He.default.createElement(\"h2\",{className:\"title\"},u,He.default.createElement(\"span\",null,i&&He.default.createElement(S,{version:i}),He.default.createElement(_,{oasVersion:\"2.0\"}))),r||n?He.default.createElement(b,{host:r,basePath:n}):null,t&&He.default.createElement(v,{getComponent:a,url:t})),He.default.createElement(\"div\",{className:\"description\"},He.default.createElement(g,{source:c})),d&&He.default.createElement(\"div\",{className:\"info__tos\"},He.default.createElement(y,{target:\"_blank\",href:sanitizeUrl(d)},\"Terms of service\")),p?.size>0&&He.default.createElement(C,{getComponent:a,data:p,selectedServer:s,url:t}),m?.size>0&&He.default.createElement(w,{getComponent:a,license:m,selectedServer:s,url:t}),f?He.default.createElement(y,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(f)},h||f):null)}}var Na=Info;class InfoContainer extends He.default.Component{render(){const{specSelectors:e,getComponent:t,oas3Selectors:r}=this.props,n=e.info(),a=e.url(),o=e.basePath(),s=e.host(),l=e.externalDocs(),i=r.selectedServer(),c=t(\"info\");return He.default.createElement(\"div\",null,n&&n.count()?He.default.createElement(c,{info:n,url:a,host:s,basePath:o,externalDocs:l,getComponent:t,selectedServer:i}):null)}}class Contact extends He.default.Component{render(){const{data:e,getComponent:t,selectedServer:r,url:n}=this.props,a=e.get(\"name\",\"the developer\"),o=safeBuildUrl(e.get(\"url\"),n,{selectedServer:r}),s=e.get(\"email\"),l=t(\"Link\");return He.default.createElement(\"div\",{className:\"info__contact\"},o&&He.default.createElement(\"div\",null,He.default.createElement(l,{href:sanitizeUrl(o),target:\"_blank\"},a,\" - Website\")),s&&He.default.createElement(l,{href:sanitizeUrl(`mailto:${s}`)},o?`Send email to ${a}`:`Contact ${a}`))}}var Aa=Contact;class License extends He.default.Component{render(){const{license:e,getComponent:t,selectedServer:r,url:n}=this.props,a=e.get(\"name\",\"License\"),o=safeBuildUrl(e.get(\"url\"),n,{selectedServer:r}),s=t(\"Link\");return He.default.createElement(\"div\",{className:\"info__license\"},o?He.default.createElement(\"div\",{className:\"info__license__url\"},He.default.createElement(s,{target:\"_blank\",href:sanitizeUrl(o)},a)):He.default.createElement(\"span\",null,a))}}var Ia=License;class JumpToPath extends He.default.Component{render(){return null}}class CopyToClipboardBtn extends He.default.Component{render(){let{getComponent:e}=this.props;const t=e(\"CopyIcon\");return He.default.createElement(\"div\",{className:\"view-line-link copy-to-clipboard\",title:\"Copy to clipboard\"},He.default.createElement(gr.CopyToClipboard,{text:this.props.textToCopy},He.default.createElement(t,null)))}}class Footer extends He.default.Component{render(){return He.default.createElement(\"div\",{className:\"footer\"})}}class FilterContainer extends He.default.Component{onFilterChange=e=>{const{target:{value:t}}=e;this.props.layoutActions.updateFilter(t)};render(){const{specSelectors:e,layoutSelectors:t,getComponent:r}=this.props,n=r(\"Col\"),a=\"loading\"===e.loadingStatus(),o=\"failed\"===e.loadingStatus(),s=t.currentFilter(),l=[\"operation-filter-input\"];return o&&l.push(\"failed\"),a&&l.push(\"loading\"),He.default.createElement(\"div\",null,!1===s?null:He.default.createElement(\"div\",{className:\"filter-container\"},He.default.createElement(n,{className:\"filter wrapper\",mobile:12},He.default.createElement(\"input\",{className:l.join(\" \"),placeholder:\"Filter by tag\",type:\"text\",onChange:this.onFilterChange,value:\"string\"==typeof s?s:\"\",disabled:a}))))}}const ja=Function.prototype;class ParamBody extends He.PureComponent{static defaultProp={consumes:(0,Xe.fromJS)([\"application/json\"]),param:(0,Xe.fromJS)({}),onChange:ja,onChangeConsumes:ja};constructor(e,t){super(e,t),this.state={isEditBox:!1,value:\"\"}}componentDidMount(){this.updateValues.call(this,this.props)}UNSAFE_componentWillReceiveProps(e){this.updateValues.call(this,e)}updateValues=e=>{let{param:t,isExecute:r,consumesValue:n=\"\"}=e,a=/xml/i.test(n),o=/json/i.test(n),s=a?t.get(\"value_xml\"):t.get(\"value\");if(void 0!==s){let e=!s&&o?\"{}\":s;this.setState({value:e}),this.onChange(e,{isXml:a,isEditBox:r})}else a?this.onChange(this.sample(\"xml\"),{isXml:a,isEditBox:r}):this.onChange(this.sample(),{isEditBox:r})};sample=e=>{let{param:t,fn:r}=this.props,n=r.inferSchema(t.toJS());return r.getSampleSchema(n,e,{includeWriteOnly:!0})};onChange=(e,{isEditBox:t,isXml:r})=>{this.setState({value:e,isEditBox:t}),this._onChange(e,r)};_onChange=(e,t)=>{(this.props.onChange||ja)(e,t)};handleOnChange=e=>{const{consumesValue:t}=this.props,r=/xml/i.test(t),n=e.target.value;this.onChange(n,{isXml:r,isEditBox:this.state.isEditBox})};toggleIsEditBox=()=>this.setState((e=>({isEditBox:!e.isEditBox})));render(){let{onChangeConsumes:e,param:t,isExecute:r,specSelectors:n,pathMethod:a,getComponent:o}=this.props;const s=o(\"Button\"),l=o(\"TextArea\"),i=o(\"HighlightCode\",!0),c=o(\"contentType\");let u=(n?n.parameterWithMetaByIdentity(a,t):t).get(\"errors\",(0,Xe.List)()),d=n.contentTypeValues(a).get(\"requestContentType\"),p=this.props.consumes&&this.props.consumes.size?this.props.consumes:ParamBody.defaultProp.consumes,{value:m,isEditBox:f}=this.state,h=null;getKnownSyntaxHighlighterLanguage(m)&&(h=\"json\");const g=`${createHtmlReadyId(`${a[1]}${a[0]}_parameters`)}_select`;return He.default.createElement(\"div\",{className:\"body-param\",\"data-param-name\":t.get(\"name\"),\"data-param-in\":t.get(\"in\")},f&&r?He.default.createElement(l,{className:\"body-param__text\"+(u.count()?\" invalid\":\"\"),value:m,onChange:this.handleOnChange}):m&&He.default.createElement(i,{className:\"body-param__example\",language:h},m),He.default.createElement(\"div\",{className:\"body-param-options\"},r?He.default.createElement(\"div\",{className:\"body-param-edit\"},He.default.createElement(s,{className:f?\"btn cancel body-param__example-edit\":\"btn edit body-param__example-edit\",onClick:this.toggleIsEditBox},f?\"Cancel\":\"Edit\")):null,He.default.createElement(\"label\",{htmlFor:g},He.default.createElement(\"span\",null,\"Parameter content type\"),He.default.createElement(c,{value:d,contentTypes:p,onChange:e,className:\"body-param-content-type\",ariaLabel:\"Parameter content type\",controlId:g}))))}}class Curl extends He.default.Component{render(){const{request:e,getComponent:t}=this.props,r=requestSnippetGenerator_curl_bash(e),n=t(\"SyntaxHighlighter\",!0);return He.default.createElement(\"div\",{className:\"curl-command\"},He.default.createElement(\"h4\",null,\"Curl\"),He.default.createElement(\"div\",{className:\"copy-to-clipboard\"},He.default.createElement(gr.CopyToClipboard,{text:r},He.default.createElement(\"button\",null))),He.default.createElement(\"div\",null,He.default.createElement(n,{language:\"bash\",className:\"curl microlight\",renderPlainText:({children:e,PlainTextViewer:t})=>He.default.createElement(t,{className:\"curl\"},e)},r)))}}var property=({propKey:e,propVal:t,propClass:r})=>He.default.createElement(\"span\",{className:r},He.default.createElement(\"br\",null),e,\": \",String(t));class TryItOutButton extends He.default.Component{static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1};render(){const{onTryoutClick:e,onCancelClick:t,onResetClick:r,enabled:n,hasUserEditedBody:a,isOAS3:o}=this.props,s=o&&a;return He.default.createElement(\"div\",{className:s?\"try-out btn-group\":\"try-out\"},n?He.default.createElement(\"button\",{className:\"btn try-out__btn cancel\",onClick:t},\"Cancel\"):He.default.createElement(\"button\",{className:\"btn try-out__btn\",onClick:e},\"Try it out \"),s&&He.default.createElement(\"button\",{className:\"btn try-out__btn reset\",onClick:r},\"Reset\"))}}class VersionPragmaFilter extends He.default.PureComponent{static defaultProps={alsoShow:null,children:null,bypass:!1};render(){const{bypass:e,isSwagger2:t,isOAS3:r,alsoShow:n}=this.props;return e?He.default.createElement(\"div\",null,this.props.children):t&&r?He.default.createElement(\"div\",{className:\"version-pragma\"},n,He.default.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},He.default.createElement(\"div\",null,He.default.createElement(\"h3\",null,\"Unable to render this definition\"),He.default.createElement(\"p\",null,He.default.createElement(\"code\",null,\"swagger\"),\" and \",He.default.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),He.default.createElement(\"p\",null,\"Supported version fields are \",He.default.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",He.default.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",He.default.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\")))):t||r?He.default.createElement(\"div\",null,this.props.children):He.default.createElement(\"div\",{className:\"version-pragma\"},n,He.default.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},He.default.createElement(\"div\",null,He.default.createElement(\"h3\",null,\"Unable to render this definition\"),He.default.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),He.default.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",He.default.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",He.default.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",He.default.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\"))))}}var version_stamp=({version:e})=>He.default.createElement(\"small\",null,He.default.createElement(\"pre\",{className:\"version\"},\" \",e,\" \"));var openapi_version=({oasVersion:e})=>He.default.createElement(\"small\",{className:\"version-stamp\"},He.default.createElement(\"pre\",{className:\"version\"},\"OAS \",e));var deep_link=({enabled:e,path:t,text:r})=>He.default.createElement(\"a\",{className:\"nostyle\",onClick:e?e=>e.preventDefault():null,href:e?`#/${t}`:null},He.default.createElement(\"span\",null,r));var svg_assets=()=>He.default.createElement(\"div\",null,He.default.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",className:\"svg-assets\"},He.default.createElement(\"defs\",null,He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"unlocked\"},He.default.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"locked\"},He.default.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"close\"},He.default.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow\"},He.default.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-down\"},He.default.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-up\"},He.default.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"jump-to\"},He.default.createElement(\"path\",{d:\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"expand\"},He.default.createElement(\"path\",{d:\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"})),He.default.createElement(\"symbol\",{viewBox:\"0 0 15 16\",id:\"copy\"},He.default.createElement(\"g\",{transform:\"translate(2, -1)\"},He.default.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"})))))),Ra=function(e){var t={};return __webpack_require__.d(t,e),t}({Remarkable:function(){return ye.Remarkable}}),Ta=function(e){var t={};return __webpack_require__.d(t,e),t}({linkify:function(){return Ee.linkify}}),Pa=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return Se.default}});Pa.default.addHook&&Pa.default.addHook(\"beforeSanitizeElements\",(function(e){return e.href&&e.setAttribute(\"rel\",\"noopener noreferrer\"),e}));var Ba=function Markdown({source:e,className:t=\"\",getConfigs:r=()=>({useUnsafeMarkdown:!1})}){if(\"string\"!=typeof e)return null;const n=new Ra.Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:\"_blank\"}).use(Ta.linkify);n.core.ruler.disable([\"replacements\",\"smartquotes\"]);const{useUnsafeMarkdown:a}=r(),o=n.render(e),s=sanitizer(o,{useUnsafeMarkdown:a});return e&&o&&s?He.default.createElement(\"div\",{className:(0,hr.default)(t,\"markdown\"),dangerouslySetInnerHTML:{__html:s}}):null};function sanitizer(e,{useUnsafeMarkdown:t=!1}={}){const r=t,n=t?[]:[\"style\",\"class\"];return t&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn(\"useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0.\"),sanitizer.hasWarnedAboutDeprecation=!0),Pa.default.sanitize(e,{ADD_ATTR:[\"target\"],FORBID_TAGS:[\"style\",\"form\"],ALLOW_DATA_ATTR:r,FORBID_ATTR:n})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends He.default.Component{render(){const{errSelectors:e,specSelectors:t,getComponent:r}=this.props,n=r(\"SvgAssets\"),a=r(\"InfoContainer\",!0),o=r(\"VersionPragmaFilter\"),s=r(\"operations\",!0),l=r(\"Models\",!0),i=r(\"Webhooks\",!0),c=r(\"Row\"),u=r(\"Col\"),d=r(\"errors\",!0),p=r(\"ServersContainer\",!0),m=r(\"SchemesContainer\",!0),f=r(\"AuthorizeBtnContainer\",!0),h=r(\"FilterContainer\",!0),g=t.isSwagger2(),y=t.isOAS3(),S=t.isOAS31(),_=!t.specStr(),v=t.loadingStatus();let b=null;if(\"loading\"===v&&(b=He.default.createElement(\"div\",{className:\"info\"},He.default.createElement(\"div\",{className:\"loading-container\"},He.default.createElement(\"div\",{className:\"loading\"})))),\"failed\"===v&&(b=He.default.createElement(\"div\",{className:\"info\"},He.default.createElement(\"div\",{className:\"loading-container\"},He.default.createElement(\"h4\",{className:\"title\"},\"Failed to load API definition.\"),He.default.createElement(d,null)))),\"failedConfig\"===v){const t=e.lastError(),r=t?t.get(\"message\"):\"\";b=He.default.createElement(\"div\",{className:\"info failed-config\"},He.default.createElement(\"div\",{className:\"loading-container\"},He.default.createElement(\"h4\",{className:\"title\"},\"Failed to load remote configuration.\"),He.default.createElement(\"p\",null,r)))}if(!b&&_&&(b=He.default.createElement(\"h4\",null,\"No API definition provided.\")),b)return He.default.createElement(\"div\",{className:\"swagger-ui\"},He.default.createElement(\"div\",{className:\"loading-container\"},b));const w=t.servers(),C=t.schemes(),x=w&&w.size,O=C&&C.size,k=!!t.securityDefinitions();return He.default.createElement(\"div\",{className:\"swagger-ui\"},He.default.createElement(n,null),He.default.createElement(o,{isSwagger2:g,isOAS3:y,alsoShow:He.default.createElement(d,null)},He.default.createElement(d,null),He.default.createElement(c,{className:\"information-container\"},He.default.createElement(u,{mobile:12},He.default.createElement(a,null))),x||O||k?He.default.createElement(\"div\",{className:\"scheme-container\"},He.default.createElement(u,{className:\"schemes wrapper\",mobile:12},x||O?He.default.createElement(\"div\",{className:\"schemes-server-container\"},x?He.default.createElement(p,null):null,O?He.default.createElement(m,null):null):null,k?He.default.createElement(f,null):null)):null,He.default.createElement(h,null),He.default.createElement(c,null,He.default.createElement(u,{mobile:12,desktop:12},He.default.createElement(s,null))),S&&He.default.createElement(c,{className:\"webhooks-container\"},He.default.createElement(u,{mobile:12,desktop:12},He.default.createElement(i,null))),He.default.createElement(c,null,He.default.createElement(u,{mobile:12,desktop:12},He.default.createElement(l,null)))))}}var core_components=()=>({components:{App:ba,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:Na,InfoContainer,InfoUrl,InfoBasePath,Contact:Aa,License:Ia,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,responses:Responses,response:Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,Property:property,TryItOutButton,Markdown:Ba,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example,ExamplesSelect,ExamplesSelectValueRetainer}});var form_components=()=>({components:{...Ve}});var base=()=>[configsPlugin,util,logs,view,view_legacy,plugins_spec,err,icons,plugins_layout,json_schema_5,json_schema_5_samples,core_components,form_components,swagger_client,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,syntax_highlighting,versions,safe_render()];const Ma=(0,Xe.Map)();function onlyOAS3(e){return(t,r)=>(...n)=>{if(r.getSystem().specSelectors.isOAS3()){const t=e(...n);return\"function\"==typeof t?t(r):t}return t(...n)}}const qa=onlyOAS3((0,Lr.default)(null)),La=onlyOAS3(((e,t)=>e=>e.getSystem().specSelectors.findSchema(t))),Ua=onlyOAS3((()=>e=>{const t=e.getSystem().specSelectors.specJson().getIn([\"components\",\"schemas\"]);return Xe.Map.isMap(t)?t:Ma})),Da=onlyOAS3((()=>e=>e.getSystem().specSelectors.specJson().hasIn([\"servers\",0]))),$a=onlyOAS3((0,Pt.createSelector)(Wr,(e=>e.getIn([\"components\",\"securitySchemes\"])||null))),wrap_selectors_validOperationMethods=(e,t)=>(r,...n)=>t.specSelectors.isOAS3()?t.oas3Selectors.validOperationMethods():e(...n),Va=qa,Ja=qa,Fa=qa,za=qa,Ka=qa;const Wa=function wrap_selectors_onlyOAS3(e){return(t,r)=>(...n)=>{if(r.getSystem().specSelectors.isOAS3()){let t=r.getState().getIn([\"spec\",\"resolvedSubtrees\",\"components\",\"securitySchemes\"]);return e(r,t,...n)}return t(...n)}}((0,Pt.createSelector)((e=>e),(({specSelectors:e})=>e.securityDefinitions()),((e,t)=>{let r=(0,Xe.List)();return t?(t.entrySeq().forEach((([e,t])=>{const n=t?.get(\"type\");if(\"oauth2\"===n&&t.get(\"flows\").entrySeq().forEach((([n,a])=>{let o=(0,Xe.fromJS)({flow:n,authorizationUrl:a.get(\"authorizationUrl\"),tokenUrl:a.get(\"tokenUrl\"),scopes:a.get(\"scopes\"),type:t.get(\"type\"),description:t.get(\"description\")});r=r.push(new Xe.Map({[e]:o.filter((e=>void 0!==e))}))})),\"http\"!==n&&\"apiKey\"!==n||(r=r.push(new Xe.Map({[e]:t}))),\"openIdConnect\"===n&&t.get(\"openIdConnectData\")){let n=t.get(\"openIdConnectData\");(n.get(\"grant_types_supported\")||[\"authorization_code\",\"implicit\"]).forEach((a=>{let o=n.get(\"scopes_supported\")&&n.get(\"scopes_supported\").reduce(((e,t)=>e.set(t,\"\")),new Xe.Map),s=(0,Xe.fromJS)({flow:a,authorizationUrl:n.get(\"authorization_endpoint\"),tokenUrl:n.get(\"token_endpoint\"),scopes:o,type:\"oauth2\",openIdConnectUrl:t.get(\"openIdConnectUrl\")});r=r.push(new Xe.Map({[e]:s.filter((e=>void 0!==e))}))}))}})),r):r})));function OAS3ComponentWrapFactory(e){return(t,r)=>n=>\"function\"==typeof r.specSelectors?.isOAS3?r.specSelectors.isOAS3()?He.default.createElement(e,(0,ar.default)({},n,r,{Ori:t})):He.default.createElement(t,n):(console.warn(\"OAS3 wrapper: couldn't get spec\"),null)}const Ha=(0,Xe.Map)(),selectors_isSwagger2=()=>e=>function isSwagger2(e){const t=e.get(\"swagger\");return\"string\"==typeof t&&\"2.0\"===t}(e.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>e=>function isOAS30(e){const t=e.get(\"openapi\");return\"string\"==typeof t&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(t)}(e.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>e=>e.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(e){return(t,...r)=>n=>{if(n.specSelectors.isOAS3()){const a=e(t,...r);return\"function\"==typeof a?a(n):a}return null}}const Ga=selectors_onlyOAS3((()=>e=>e.specSelectors.specJson().get(\"servers\",Ha))),findSchema=(e,t)=>{const r=e.getIn([\"resolvedSubtrees\",\"components\",\"schemas\",t],null),n=e.getIn([\"json\",\"components\",\"schemas\",t],null);return r||n||null},Xa=selectors_onlyOAS3(((e,{callbacks:t,specPath:r})=>e=>{const n=e.specSelectors.validOperationMethods();return Xe.Map.isMap(t)?t.reduce(((e,t,a)=>{if(!Xe.Map.isMap(t))return e;const o=t.reduce(((e,t,o)=>{if(!Xe.Map.isMap(t))return e;const s=t.entrySeq().filter((([e])=>n.includes(e))).map((([e,t])=>({operation:(0,Xe.Map)({operation:t}),method:e,path:o,callbackName:a,specPath:r.concat([a,o,e])})));return e.concat(s)}),(0,Xe.List)());return e.concat(o)}),(0,Xe.List)()).groupBy((e=>e.callbackName)).map((e=>e.toArray())).toObject():{}}));var callbacks=({callbacks:e,specPath:t,specSelectors:r,getComponent:n})=>{const a=r.callbacksOperations({callbacks:e,specPath:t}),o=Object.keys(a),s=n(\"OperationContainer\",!0);return 0===o.length?He.default.createElement(\"span\",null,\"No callbacks\"):He.default.createElement(\"div\",null,o.map((e=>He.default.createElement(\"div\",{key:`${e}`},He.default.createElement(\"h2\",null,e),a[e].map((t=>He.default.createElement(s,{key:`${e}-${t.path}-${t.method}`,op:t.operation,tag:\"callbacks\",method:t.method,path:t.path,specPath:t.specPath,allowTryItOut:!1})))))))};const getDefaultRequestBodyValue=(e,t,r,n)=>{const a=e.getIn([\"content\",t])??(0,Xe.OrderedMap)(),o=a.get(\"schema\",(0,Xe.OrderedMap)()).toJS(),s=void 0!==a.get(\"examples\"),l=a.get(\"example\"),i=s?a.getIn([\"examples\",r,\"value\"]):l;return stringify(n.getSampleSchema(o,t,{includeWriteOnly:!0},i))};var request_body=({userHasEditedBody:e,requestBody:t,requestBodyValue:r,requestBodyInclusionSetting:n,requestBodyErrors:a,getComponent:o,getConfigs:s,specSelectors:l,fn:i,contentType:c,isExecute:u,specPath:d,onChange:p,onChangeIncludeEmpty:m,activeExamplesKey:f,updateActiveExamplesKey:h,setRetainRequestBodyValueFlag:g})=>{const handleFile=e=>{p(e.target.files[0])},setIsIncludedOptions=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return\"no value\"===n.get(e,\"no value\")&&(t.shouldDispatchInit=!0),t},y=o(\"Markdown\",!0),S=o(\"modelExample\"),_=o(\"RequestBodyEditor\"),v=o(\"HighlightCode\",!0),b=o(\"ExamplesSelectValueRetainer\"),w=o(\"Example\"),C=o(\"ParameterIncludeEmpty\"),{showCommonExtensions:x}=s(),O=t?.get(\"description\")??null,k=t?.get(\"content\")??new Xe.OrderedMap;c=c||k.keySeq().first()||\"\";const N=k.get(c)??(0,Xe.OrderedMap)(),A=N.get(\"schema\",(0,Xe.OrderedMap)()),I=N.get(\"examples\",null),j=I?.map(((e,r)=>{const n=e?.get(\"value\",null);return n&&(e=e.set(\"value\",getDefaultRequestBodyValue(t,c,r,i),n)),e}));a=Xe.List.isList(a)?a:(0,Xe.List)();if(i.isFileUploadIntended(N?.get(\"schema\"),c)){const e=o(\"Input\");return u?He.default.createElement(e,{type:\"file\",onChange:handleFile}):He.default.createElement(\"i\",null,\"Example values are not available for \",He.default.createElement(\"code\",null,c),\" media types.\")}if(!N.size)return null;if(i.hasSchemaType(N.get(\"schema\"),\"object\")&&(\"application/x-www-form-urlencoded\"===c||0===c.indexOf(\"multipart/\"))&&A.get(\"properties\",(0,Xe.OrderedMap)()).size>0){const e=o(\"JsonSchemaForm\"),t=o(\"ParameterExt\"),c=A.get(\"properties\",(0,Xe.OrderedMap)());return r=Xe.Map.isMap(r)?r:(0,Xe.OrderedMap)(),He.default.createElement(\"div\",{className:\"table-container\"},O&&He.default.createElement(y,{source:O}),He.default.createElement(\"table\",null,He.default.createElement(\"tbody\",null,Xe.Map.isMap(c)&&c.entrySeq().map((([c,f])=>{if(f.get(\"readOnly\"))return;const h=f.get(\"oneOf\")?.get(0)?.toJS(),g=f.get(\"anyOf\")?.get(0)?.toJS();f=(0,Xe.fromJS)(i.mergeJsonSchema(f.toJS(),h??g??{}));let _=x?getCommonExtensions(f):null;const v=A.get(\"required\",(0,Xe.List)()).includes(c),b=i.jsonSchema202012.getType(immutableToJS(f)),w=i.jsonSchema202012.foldType(immutableToJS(f?.get(\"type\"))),O=i.jsonSchema202012.foldType(immutableToJS(f?.getIn([\"items\",\"type\"]))),k=f.get(\"format\"),N=f.get(\"description\"),I=r.getIn([c,\"value\"]),j=r.getIn([c,\"errors\"])||a,R=n.get(c)||!1;let T=i.getSampleSchema(f,!1,{includeWriteOnly:!0});!1===T&&(T=\"false\"),0===T&&(T=\"0\"),\"string\"!=typeof T&&\"object\"===w&&(T=stringify(T)),\"string\"==typeof T&&\"array\"===w&&(T=JSON.parse(T));const P=i.isFileUploadIntended(f),B=He.default.createElement(e,{fn:i,dispatchInitialValue:!P,schema:f,description:c,getComponent:o,value:void 0===I?T:I,required:v,errors:j,onChange:e=>{p(e,[c])}});return He.default.createElement(\"tr\",{key:c,className:\"parameters\",\"data-property-name\":c},He.default.createElement(\"td\",{className:\"parameters-col_name\"},He.default.createElement(\"div\",{className:v?\"parameter__name required\":\"parameter__name\"},c,v?He.default.createElement(\"span\",null,\" *\"):null),He.default.createElement(\"div\",{className:\"parameter__type\"},b,k&&He.default.createElement(\"span\",{className:\"prop-format\"},\"($\",k,\")\"),x&&_.size?_.entrySeq().map((([e,r])=>He.default.createElement(t,{key:`${e}-${r}`,xKey:e,xVal:r}))):null),He.default.createElement(\"div\",{className:\"parameter__deprecated\"},f.get(\"deprecated\")?\"deprecated\":null)),He.default.createElement(\"td\",{className:\"parameters-col_description\"},He.default.createElement(y,{source:N}),u?He.default.createElement(\"div\",null,\"object\"===w||\"object\"===O?He.default.createElement(S,{getComponent:o,specPath:d.push(\"schema\"),getConfigs:s,isExecute:u,specSelectors:l,schema:f,example:B}):B,v?null:He.default.createElement(C,{onChange:e=>m(c,e),isIncluded:R,isIncludedOptions:setIsIncludedOptions(c),isDisabled:Array.isArray(I)?0!==I.length:!isEmptyValue(I)})):null))})))))}const R=getDefaultRequestBodyValue(t,c,f,i);let T=null;return getKnownSyntaxHighlighterLanguage(R)&&(T=\"json\"),He.default.createElement(\"div\",null,O&&He.default.createElement(y,{source:O}),j?He.default.createElement(b,{userHasEditedBody:e,examples:j,currentKey:f,currentUserInputValue:r,onSelect:e=>{h(e)},updateValue:p,defaultToFirstExample:!0,getComponent:o,setRetainRequestBodyValueFlag:g}):null,u?He.default.createElement(\"div\",null,He.default.createElement(_,{value:r,errors:a,defaultValue:R,onChange:p,getComponent:o})):He.default.createElement(S,{getComponent:o,getConfigs:s,specSelectors:l,expandDepth:1,isExecute:u,schema:N.get(\"schema\"),specPath:d.push(\"content\",c),example:He.default.createElement(v,{className:\"body-param__example\",language:T},stringify(r)||R),includeWriteOnly:!0}),j?He.default.createElement(w,{example:j.get(f),getComponent:o,getConfigs:s}):null)};class operation_link_OperationLink extends He.Component{render(){const{link:e,name:t,getComponent:r}=this.props,n=r(\"Markdown\",!0);let a=e.get(\"operationId\")||e.get(\"operationRef\"),o=e.get(\"parameters\")&&e.get(\"parameters\").toJS(),s=e.get(\"description\");return He.default.createElement(\"div\",{className:\"operation-link\"},He.default.createElement(\"div\",{className:\"description\"},He.default.createElement(\"b\",null,He.default.createElement(\"code\",null,t)),s?He.default.createElement(n,{source:s}):null),He.default.createElement(\"pre\",null,\"Operation `\",a,\"`\",He.default.createElement(\"br\",null),He.default.createElement(\"br\",null),\"Parameters \",function padString(e,t){if(\"string\"!=typeof t)return\"\";return t.split(\"\\n\").map(((t,r)=>r>0?Array(e+1).join(\" \")+t:t)).join(\"\\n\")}(0,JSON.stringify(o,null,2))||\"{}\",He.default.createElement(\"br\",null)))}}var Ya=operation_link_OperationLink;var components_servers=({servers:e,currentServer:t,setSelectedServer:r,setServerVariableValue:n,getServerVariable:a,getEffectiveServerValue:o})=>{const s=(e.find((e=>e.get(\"url\")===t))||(0,Xe.OrderedMap)()).get(\"variables\")||(0,Xe.OrderedMap)(),l=0!==s.size;(0,He.useEffect)((()=>{t||r(e.first()?.get(\"url\"))}),[]),(0,He.useEffect)((()=>{const a=e.find((e=>e.get(\"url\")===t));if(!a)return void r(e.first().get(\"url\"));(a.get(\"variables\")||(0,Xe.OrderedMap)()).map(((e,r)=>{n({server:t,key:r,val:e.get(\"default\")||\"\"})}))}),[t,e]);const i=(0,He.useCallback)((e=>{r(e.target.value)}),[r]),c=(0,He.useCallback)((e=>{const r=e.target.getAttribute(\"data-variable\"),a=e.target.value;n({server:t,key:r,val:a})}),[n,t]);return He.default.createElement(\"div\",{className:\"servers\"},He.default.createElement(\"label\",{htmlFor:\"servers\"},He.default.createElement(\"select\",{onChange:i,value:t,id:\"servers\"},e.valueSeq().map((e=>He.default.createElement(\"option\",{value:e.get(\"url\"),key:e.get(\"url\")},e.get(\"url\"),e.get(\"description\")&&` - ${e.get(\"description\")}`))).toArray())),l&&He.default.createElement(\"div\",null,He.default.createElement(\"div\",{className:\"computed-url\"},\"Computed URL:\",He.default.createElement(\"code\",null,o(t))),He.default.createElement(\"h4\",null,\"Server variables\"),He.default.createElement(\"table\",null,He.default.createElement(\"tbody\",null,s.entrySeq().map((([e,r])=>He.default.createElement(\"tr\",{key:e},He.default.createElement(\"td\",null,e),He.default.createElement(\"td\",null,r.get(\"enum\")?He.default.createElement(\"select\",{\"data-variable\":e,onChange:c},r.get(\"enum\").map((r=>He.default.createElement(\"option\",{selected:r===a(t,e),key:r,value:r},r)))):He.default.createElement(\"input\",{type:\"text\",value:a(t,e)||\"\",onChange:c,\"data-variable\":e})))))))))};class ServersContainer extends He.default.Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:n}=this.props,a=e.servers(),o=n(\"Servers\");return a&&a.size?He.default.createElement(\"div\",null,He.default.createElement(\"span\",{className:\"servers-title\"},\"Servers\"),He.default.createElement(o,{servers:a,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}const Qa=Function.prototype;class RequestBodyEditor extends He.PureComponent{static defaultProps={onChange:Qa,userHasEditedBody:!1};constructor(e,t){super(e,t),this.state={value:stringify(e.value)||e.defaultValue},e.onChange(e.value)}applyDefaultValue=e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)};onChange=e=>{this.props.onChange(stringify(e))};onDomChange=e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))};UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:stringify(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,n=t.size>0;const a=e(\"TextArea\");return He.default.createElement(\"div\",{className:\"body-param\"},He.default.createElement(a,{className:(0,hr.default)(\"body-param__text\",{invalid:n}),title:t.size?t.join(\", \"):\"\",value:r,onChange:this.onDomChange}))}}class HttpAuth extends He.default.Component{constructor(e,t){super(e,t);let{name:r,schema:n}=this.props,a=this.getValue();this.state={name:r,schema:n,value:a}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,\"value\"])}onChange=e=>{let{onChange:t}=this.props,{value:r,name:n}=e.target,a=Object.assign({},this.state.value);n?a[n]=r:a=r,this.setState({value:a},(()=>t(this.state)))};render(){let{schema:e,getComponent:t,errSelectors:r,name:n,authSelectors:a}=this.props;const o=t(\"Input\"),s=t(\"Row\"),l=t(\"Col\"),i=t(\"authError\"),c=t(\"Markdown\",!0),u=t(\"JumpToPath\",!0),d=(e.get(\"scheme\")||\"\").toLowerCase(),p=a.selectAuthPath(n);let m=this.getValue(),f=r.allErrors().filter((e=>e.get(\"authId\")===n));if(\"basic\"===d){let t=m?m.get(\"username\"):null;return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,He.default.createElement(\"code\",null,n),\"  (http, Basic)\",He.default.createElement(u,{path:p})),t&&He.default.createElement(\"h6\",null,\"Authorized\"),He.default.createElement(s,null,He.default.createElement(c,{source:e.get(\"description\")})),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"auth-basic-username\"},\"Username:\"),t?He.default.createElement(\"code\",null,\" \",t,\" \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"auth-basic-username\",type:\"text\",required:\"required\",name:\"username\",\"aria-label\":\"auth-basic-username\",onChange:this.onChange,autoFocus:!0}))),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"auth-basic-password\"},\"Password:\"),t?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"auth-basic-password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",\"aria-label\":\"auth-basic-password\",onChange:this.onChange}))),f.valueSeq().map(((e,t)=>He.default.createElement(i,{error:e,key:t}))))}return\"bearer\"===d?He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,He.default.createElement(\"code\",null,n),\"  (http, Bearer)\",He.default.createElement(u,{path:p})),m&&He.default.createElement(\"h6\",null,\"Authorized\"),He.default.createElement(s,null,He.default.createElement(c,{source:e.get(\"description\")})),He.default.createElement(s,null,He.default.createElement(\"label\",{htmlFor:\"auth-bearer-value\"},\"Value:\"),m?He.default.createElement(\"code\",null,\" ****** \"):He.default.createElement(l,null,He.default.createElement(o,{id:\"auth-bearer-value\",type:\"text\",\"aria-label\":\"auth-bearer-value\",onChange:this.onChange,autoFocus:!0}))),f.valueSeq().map(((e,t)=>He.default.createElement(i,{error:e,key:t})))):He.default.createElement(\"div\",null,He.default.createElement(\"em\",null,He.default.createElement(\"b\",null,n),\" HTTP authentication: unsupported scheme \",`'${d}'`))}}class OperationServers extends He.default.Component{setSelectedServer=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)};setServerVariableValue=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})};getSelectedServer=()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)};getServerVariable=(e,t)=>{const{path:r,method:n}=this.props;return this.props.getServerVariable({namespace:`${r}:${n}`,server:e},t)};getEffectiveServerValue=e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})};render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const n=r(\"Servers\"),a=e||t,o=e?\"operation\":\"path\";return He.default.createElement(\"div\",{className:\"opblock-section operation-servers\"},He.default.createElement(\"div\",{className:\"opblock-section-header\"},He.default.createElement(\"div\",{className:\"tab-header\"},He.default.createElement(\"h4\",{className:\"opblock-title\"},\"Servers\"))),He.default.createElement(\"div\",{className:\"opblock-description-wrapper\"},He.default.createElement(\"h4\",{className:\"message\"},\"These \",o,\"-level options override the global server options.\"),He.default.createElement(n,{servers:a,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}var Za={Callbacks:callbacks,HttpAuth,RequestBody:request_body,Servers:components_servers,ServersContainer,RequestBodyEditor,OperationServers,operationLink:Ya};const eo=new Ra.Remarkable(\"commonmark\");eo.block.ruler.enable([\"table\"]),eo.set({linkTarget:\"_blank\"});var to=OAS3ComponentWrapFactory((({source:e,className:t=\"\",getConfigs:r=()=>({useUnsafeMarkdown:!1})})=>{if(\"string\"!=typeof e)return null;if(e){const{useUnsafeMarkdown:n}=r(),a=sanitizer(eo.render(e),{useUnsafeMarkdown:n});let o;return\"string\"==typeof a&&(o=a.trim()),He.default.createElement(\"div\",{dangerouslySetInnerHTML:{__html:o},className:(0,hr.default)(t,\"renderedMarkdown\")})}return null})),ro=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:n,errSelectors:a,authorized:o,onAuthChange:s,name:l,authSelectors:i}=t,c=n(\"HttpAuth\");return\"http\"===r.get(\"type\")?He.default.createElement(c,{key:l,schema:r,name:l,errSelectors:a,authorized:o,getComponent:n,onChange:s,authSelectors:i}):He.default.createElement(e,t)})),no=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends He.Component{render(){let{getConfigs:e,schema:t,Ori:r}=this.props,n=[\"model-box\"],a=null;return!0===t.get(\"deprecated\")&&(n.push(\"deprecated\"),a=He.default.createElement(\"span\",{className:\"model-deprecated-warning\"},\"Deprecated:\")),He.default.createElement(\"div\",{className:n.join(\" \")},a,He.default.createElement(r,(0,ar.default)({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}var ao=OAS3ComponentWrapFactory(ModelComponent),oo=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:n,errors:a,onChange:o,fn:s}=t,l=s.isFileUploadIntended(r),i=n(\"Input\");return l?He.default.createElement(i,{type:\"file\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",onChange:e=>{o(e.target.files[0])},disabled:e.isDisabled}):He.default.createElement(e,t)})),so={Markdown:to,AuthItem:ro,OpenAPIVersion:function OAS30ComponentWrapFactory(e){return(t,r)=>n=>\"function\"==typeof r.specSelectors?.isOAS30?r.specSelectors.isOAS30()?He.default.createElement(e,(0,ar.default)({},n,r,{Ori:t})):He.default.createElement(t,n):(console.warn(\"OAS30 wrapper: couldn't get spec\"),null)}((e=>{const{Ori:t}=e;return He.default.createElement(t,{oasVersion:\"3.0\"})})),JsonSchema_string:oo,model:ao,onlineValidatorBadge:no};const lo=\"oas3_set_servers\",io=\"oas3_set_request_body_value\",co=\"oas3_set_request_body_retain_flag\",uo=\"oas3_set_request_body_inclusion\",po=\"oas3_set_active_examples_member\",mo=\"oas3_set_request_content_type\",fo=\"oas3_set_response_content_type\",ho=\"oas3_set_server_variable_value\",go=\"oas3_set_request_body_validate_error\",yo=\"oas3_clear_request_body_validate_error\",Eo=\"oas3_clear_request_body_value\";function setSelectedServer(e,t){return{type:lo,payload:{selectedServerUrl:e,namespace:t}}}function setRequestBodyValue({value:e,pathMethod:t}){return{type:io,payload:{value:e,pathMethod:t}}}const setRetainRequestBodyValueFlag=({value:e,pathMethod:t})=>({type:co,payload:{value:e,pathMethod:t}});function setRequestBodyInclusion({value:e,pathMethod:t,name:r}){return{type:uo,payload:{value:e,pathMethod:t,name:r}}}function setActiveExamplesMember({name:e,pathMethod:t,contextType:r,contextName:n}){return{type:po,payload:{name:e,pathMethod:t,contextType:r,contextName:n}}}function setRequestContentType({value:e,pathMethod:t}){return{type:mo,payload:{value:e,pathMethod:t}}}function setResponseContentType({value:e,path:t,method:r}){return{type:fo,payload:{value:e,path:t,method:r}}}function setServerVariableValue({server:e,namespace:t,key:r,val:n}){return{type:ho,payload:{server:e,namespace:t,key:r,val:n}}}const setRequestBodyValidateError=({path:e,method:t,validationErrors:r})=>({type:go,payload:{path:e,method:t,validationErrors:r}}),clearRequestBodyValidateError=({path:e,method:t})=>({type:yo,payload:{path:e,method:t}}),initRequestBodyValidateError=({pathMethod:e})=>({type:yo,payload:{path:e[0],method:e[1]}}),clearRequestBodyValue=({pathMethod:e})=>({type:Eo,payload:{pathMethod:e}});var So=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return _e.default}});const oas3_selectors_onlyOAS3=e=>(t,...r)=>n=>{if(n.getSystem().specSelectors.isOAS3()){const a=e(t,...r);return\"function\"==typeof a?a(n):a}return null};const _o=oas3_selectors_onlyOAS3(((e,t)=>{const r=t?[t,\"selectedServer\"]:[\"selectedServer\"];return e.getIn(r)||\"\"})),vo=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"bodyValue\"])||null)),bo=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"retainBodyValue\"])||!1)),selectDefaultRequestBodyValue=(e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:a,fn:o}=e.getSystem();if(a.isOAS3()){const e=n.requestContentType(t,r);if(e)return getDefaultRequestBodyValue(a.specResolvedSubtree([\"paths\",t,r,\"requestBody\"]),e,n.activeExamplesMember(t,r,\"requestBody\",\"requestBody\"),o)}return null},wo=oas3_selectors_onlyOAS3(((e,t,r)=>e=>{const{oas3Selectors:n,specSelectors:a,fn:o}=e;let s=!1;const l=n.requestContentType(t,r);let i=n.requestBodyValue(t,r);const c=a.specResolvedSubtree([\"paths\",t,r,\"requestBody\"]);if(!c)return!1;if(Xe.Map.isMap(i)&&(i=stringify(i.mapEntries((e=>Xe.Map.isMap(e[1])?[e[0],e[1].get(\"value\")]:e)).toJS())),Xe.List.isList(i)&&(i=stringify(i)),l){const e=getDefaultRequestBodyValue(c,l,n.activeExamplesMember(t,r,\"requestBody\",\"requestBody\"),o);s=!!i&&i!==e}return s})),Co=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"bodyInclusion\"])||(0,Xe.Map)())),xo=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"errors\"])||null)),Oo=oas3_selectors_onlyOAS3(((e,t,r,n,a)=>e.getIn([\"examples\",t,r,n,a,\"activeExample\"])||null)),ko=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"requestContentType\"])||null)),No=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"responseContentType\"])||null)),Ao=oas3_selectors_onlyOAS3(((e,t,r)=>{let n;if(\"string\"!=typeof t){const{server:e,namespace:a}=t;n=a?[a,\"serverVariableValues\",e,r]:[\"serverVariableValues\",e,r]}else{n=[\"serverVariableValues\",t,r]}return e.getIn(n)||null})),Io=oas3_selectors_onlyOAS3(((e,t)=>{let r;if(\"string\"!=typeof t){const{server:e,namespace:n}=t;r=n?[n,\"serverVariableValues\",e]:[\"serverVariableValues\",e]}else{r=[\"serverVariableValues\",t]}return e.getIn(r)||(0,Xe.OrderedMap)()})),jo=oas3_selectors_onlyOAS3(((e,t)=>{var r,n;if(\"string\"!=typeof t){const{server:a,namespace:o}=t;n=a,r=o?e.getIn([o,\"serverVariableValues\",n]):e.getIn([\"serverVariableValues\",n])}else n=t,r=e.getIn([\"serverVariableValues\",n]);r=r||(0,Xe.OrderedMap)();let a=n;return r.map(((e,t)=>{a=a.replace(new RegExp(`{${(0,So.default)(t)}}`,\"g\"),e)})),a})),Ro=function validateRequestBodyIsRequired(e){return(...t)=>r=>{const n=r.getSystem().specSelectors.specJson();let a=[...t][1]||[];return!n.getIn([\"paths\",...a,\"requestBody\",\"required\"])||e(...t)}}(((e,t)=>((e,t)=>(t=t||[],!!e.getIn([\"requestData\",...t,\"bodyValue\"])))(e,t))),validateShallowRequired=(e,{oas3RequiredRequestBodyContentType:t,oas3RequestContentType:r,oas3RequestBodyValue:n})=>{let a=[];if(!Xe.Map.isMap(n))return a;let o=[];return Object.keys(t.requestContentType).forEach((e=>{if(e===r){t.requestContentType[e].forEach((e=>{o.indexOf(e)<0&&o.push(e)}))}})),o.forEach((e=>{n.getIn([e,\"value\"])||a.push(e)})),a},To=(0,Lr.default)([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"]);var Po={[lo]:(e,{payload:{selectedServerUrl:t,namespace:r}})=>{const n=r?[r,\"selectedServer\"]:[\"selectedServer\"];return e.setIn(n,t)},[io]:(e,{payload:{value:t,pathMethod:r}})=>{let[n,a]=r;if(!Xe.Map.isMap(t))return e.setIn([\"requestData\",n,a,\"bodyValue\"],t);let o,s=e.getIn([\"requestData\",n,a,\"bodyValue\"])||(0,Xe.Map)();Xe.Map.isMap(s)||(s=(0,Xe.Map)());const[...l]=t.keys();return l.forEach((e=>{let r=t.getIn([e]);s.has(e)&&Xe.Map.isMap(r)||(o=s.setIn([e,\"value\"],r))})),e.setIn([\"requestData\",n,a,\"bodyValue\"],o)},[co]:(e,{payload:{value:t,pathMethod:r}})=>{let[n,a]=r;return e.setIn([\"requestData\",n,a,\"retainBodyValue\"],t)},[uo]:(e,{payload:{value:t,pathMethod:r,name:n}})=>{let[a,o]=r;return e.setIn([\"requestData\",a,o,\"bodyInclusion\",n],t)},[po]:(e,{payload:{name:t,pathMethod:r,contextType:n,contextName:a}})=>{let[o,s]=r;return e.setIn([\"examples\",o,s,n,a,\"activeExample\"],t)},[mo]:(e,{payload:{value:t,pathMethod:r}})=>{let[n,a]=r;return e.setIn([\"requestData\",n,a,\"requestContentType\"],t)},[fo]:(e,{payload:{value:t,path:r,method:n}})=>e.setIn([\"requestData\",r,n,\"responseContentType\"],t),[ho]:(e,{payload:{server:t,namespace:r,key:n,val:a}})=>{const o=r?[r,\"serverVariableValues\",t,n]:[\"serverVariableValues\",t,n];return e.setIn(o,a)},[go]:(e,{payload:{path:t,method:r,validationErrors:n}})=>{let a=[];if(a.push(\"Required field is not provided\"),n.missingBodyValue)return e.setIn([\"requestData\",t,r,\"errors\"],(0,Xe.fromJS)(a));if(n.missingRequiredKeys&&n.missingRequiredKeys.length>0){const{missingRequiredKeys:o}=n;return e.updateIn([\"requestData\",t,r,\"bodyValue\"],(0,Xe.fromJS)({}),(e=>o.reduce(((e,t)=>e.setIn([t,\"errors\"],(0,Xe.fromJS)(a))),e)))}return console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\"),e},[yo]:(e,{payload:{path:t,method:r}})=>{const n=e.getIn([\"requestData\",t,r,\"bodyValue\"]);if(!Xe.Map.isMap(n))return e.setIn([\"requestData\",t,r,\"errors\"],(0,Xe.fromJS)([]));const[...a]=n.keys();return a?e.updateIn([\"requestData\",t,r,\"bodyValue\"],(0,Xe.fromJS)({}),(e=>a.reduce(((e,t)=>e.setIn([t,\"errors\"],(0,Xe.fromJS)([]))),e))):e},[Eo]:(e,{payload:{pathMethod:t}})=>{let[r,n]=t;const a=e.getIn([\"requestData\",r,n,\"bodyValue\"]);return a?Xe.Map.isMap(a)?e.setIn([\"requestData\",r,n,\"bodyValue\"],(0,Xe.Map)()):e.setIn([\"requestData\",r,n,\"bodyValue\"],\"\"):e}};function oas3({getSystem:e}){const t=(e=>(t,r=null)=>{const{getConfigs:n,fn:a}=e(),{fileUploadMediaTypes:o}=n();if(\"string\"==typeof r&&o.some((e=>r.startsWith(e))))return!0;const s=Xe.Map.isMap(t);if(!s&&!(0,Cr.default)(t))return!1;const l=s?t.get(\"format\"):t.format;return a.hasSchemaType(t,\"string\")&&[\"binary\",\"byte\"].includes(l)})(e);return{components:Za,wrapComponents:so,statePlugins:{spec:{wrapSelectors:Je,selectors:ze},auth:{wrapSelectors:Fe},oas3:{actions:{...Ke},reducers:Po,selectors:{...We}}},fn:{isFileUploadIntended:t,isFileUploadIntendedOAS30:t}}}var webhooks=({specSelectors:e,getComponent:t})=>{const r=e.selectWebhooksOperations(),n=Object.keys(r),a=t(\"OperationContainer\",!0);return 0===n.length?null:He.default.createElement(\"div\",{className:\"webhooks\"},He.default.createElement(\"h2\",null,\"Webhooks\"),n.map((e=>He.default.createElement(\"div\",{key:`${e}-webhook`},r[e].map((t=>He.default.createElement(a,{key:`${e}-${t.method}-webhook`,op:t.operation,tag:\"webhooks\",method:t.method,path:e,specPath:(0,Xe.List)(t.specPath),allowTryItOut:!1})))))))};var components_license=({getComponent:e,specSelectors:t})=>{const r=t.selectLicenseNameField(),n=t.selectLicenseUrl(),a=e(\"Link\");return He.default.createElement(\"div\",{className:\"info__license\"},n?He.default.createElement(\"div\",{className:\"info__license__url\"},He.default.createElement(a,{target:\"_blank\",href:sanitizeUrl(n)},r)):He.default.createElement(\"span\",null,r))};var components_contact=({getComponent:e,specSelectors:t})=>{const r=t.selectContactNameField(),n=t.selectContactUrl(),a=t.selectContactEmailField(),o=e(\"Link\");return He.default.createElement(\"div\",{className:\"info__contact\"},n&&He.default.createElement(\"div\",null,He.default.createElement(o,{href:sanitizeUrl(n),target:\"_blank\"},r,\" - Website\")),a&&He.default.createElement(o,{href:sanitizeUrl(`mailto:${a}`)},n?`Send email to ${r}`:`Contact ${r}`))};var oas31_components_info=({getComponent:e,specSelectors:t})=>{const r=t.version(),n=t.url(),a=t.basePath(),o=t.host(),s=t.selectInfoSummaryField(),l=t.selectInfoDescriptionField(),i=t.selectInfoTitleField(),c=t.selectInfoTermsOfServiceUrl(),u=t.selectExternalDocsUrl(),d=t.selectExternalDocsDescriptionField(),p=t.contact(),m=t.license(),f=e(\"Markdown\",!0),h=e(\"Link\"),g=e(\"VersionStamp\"),y=e(\"OpenAPIVersion\"),S=e(\"InfoUrl\"),_=e(\"InfoBasePath\"),v=e(\"License\",!0),b=e(\"Contact\",!0),w=e(\"JsonSchemaDialect\",!0);return He.default.createElement(\"div\",{className:\"info\"},He.default.createElement(\"hgroup\",{className:\"main\"},He.default.createElement(\"h2\",{className:\"title\"},i,He.default.createElement(\"span\",null,r&&He.default.createElement(g,{version:r}),He.default.createElement(y,{oasVersion:\"3.1\"}))),(o||a)&&He.default.createElement(_,{host:o,basePath:a}),n&&He.default.createElement(S,{getComponent:e,url:n})),s&&He.default.createElement(\"p\",{className:\"info__summary\"},s),He.default.createElement(\"div\",{className:\"info__description description\"},He.default.createElement(f,{source:l})),c&&He.default.createElement(\"div\",{className:\"info__tos\"},He.default.createElement(h,{target:\"_blank\",href:sanitizeUrl(c)},\"Terms of service\")),p.size>0&&He.default.createElement(b,null),m.size>0&&He.default.createElement(v,null),u&&He.default.createElement(h,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(u)},d||u),He.default.createElement(w,null))};var json_schema_dialect=({getComponent:e,specSelectors:t})=>{const r=t.selectJsonSchemaDialectField(),n=t.selectJsonSchemaDialectDefault(),a=e(\"Link\");return He.default.createElement(He.default.Fragment,null,r&&r===n&&He.default.createElement(\"p\",{className:\"info__jsonschemadialect\"},\"JSON Schema dialect:\",\" \",He.default.createElement(a,{target:\"_blank\",href:sanitizeUrl(r)},r)),r&&r!==n&&He.default.createElement(\"div\",{className:\"error-wrapper\"},He.default.createElement(\"div\",{className:\"no-margin\"},He.default.createElement(\"div\",{className:\"errors\"},He.default.createElement(\"div\",{className:\"errors-wrapper\"},He.default.createElement(\"h4\",{className:\"center\"},\"Warning\"),He.default.createElement(\"p\",{className:\"message\"},He.default.createElement(\"strong\",null,\"OpenAPI.jsonSchemaDialect\"),\" field contains a value different from the default value of\",\" \",He.default.createElement(a,{target:\"_blank\",href:n},n),\". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value.\"))))))};var version_pragma_filter=({bypass:e,isSwagger2:t,isOAS3:r,isOAS31:n,alsoShow:a,children:o})=>e?He.default.createElement(\"div\",null,o):t&&(r||n)?He.default.createElement(\"div\",{className:\"version-pragma\"},a,He.default.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},He.default.createElement(\"div\",null,He.default.createElement(\"h3\",null,\"Unable to render this definition\"),He.default.createElement(\"p\",null,He.default.createElement(\"code\",null,\"swagger\"),\" and \",He.default.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),He.default.createElement(\"p\",null,\"Supported version fields are \",He.default.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",He.default.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",He.default.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))):t||r||n?He.default.createElement(\"div\",null,o):He.default.createElement(\"div\",{className:\"version-pragma\"},a,He.default.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},He.default.createElement(\"div\",null,He.default.createElement(\"h3\",null,\"Unable to render this definition\"),He.default.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),He.default.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",He.default.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",He.default.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",He.default.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\"))));const getModelName=e=>\"string\"==typeof e&&e.includes(\"#/components/schemas/\")?(e=>{const t=e.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(t)}catch{return t}})(e.replace(/^.*#\\/components\\/schemas\\//,\"\")):null,Bo=(0,He.forwardRef)((({schema:e,getComponent:t,onToggle:r=()=>{},specPath:n},a)=>{const o=t(\"JSONSchema202012\"),s=getModelName(e.get(\"$$ref\")),l=(0,He.useCallback)(((e,t)=>{r(s,t)}),[s,r]);return He.default.createElement(o,{name:s,schema:e.toJS(),ref:a,onExpand:l,identifier:n.toJS().join(\"_\")})}));var Mo=Bo;var models=({specActions:e,specSelectors:t,layoutSelectors:r,layoutActions:n,getComponent:a,getConfigs:o,fn:s})=>{const l=t.selectSchemas(),i=Object.keys(l).length>0,c=[\"components\",\"schemas\"],{docExpansion:u,defaultModelsExpandDepth:d}=o(),p=d>0&&\"none\"!==u,m=r.isShown(c,p),f=a(\"Collapse\"),h=a(\"JSONSchema202012\"),g=a(\"ArrowUpIcon\"),y=a(\"ArrowDownIcon\"),{getTitle:S}=s.jsonSchema202012.useFn();(0,He.useEffect)((()=>{const r=m&&d>1,n=null!=t.specResolvedSubtree(c);r&&!n&&e.requestResolvedSubtree(c)}),[m,d]);const _=(0,He.useCallback)((()=>{n.show(c,!m)}),[m]),v=(0,He.useCallback)((e=>{null!==e&&n.readyToScroll(c,e)}),[]),handleJSONSchema202012Ref=e=>t=>{null!==t&&n.readyToScroll([...c,e],t)},handleJSONSchema202012Expand=r=>(n,a)=>{if(a){const n=[...c,r];null!=t.specResolvedSubtree(n)||e.requestResolvedSubtree([...c,r])}};return!i||d<0?null:He.default.createElement(\"section\",{className:(0,hr.default)(\"models\",{\"is-open\":m}),ref:v},He.default.createElement(\"h4\",null,He.default.createElement(\"button\",{\"aria-expanded\":m,className:\"models-control\",onClick:_},He.default.createElement(\"span\",null,\"Schemas\"),m?He.default.createElement(g,null):He.default.createElement(y,null))),He.default.createElement(f,{isOpened:m},Object.entries(l).map((([e,t])=>{const r=S(t,{lookup:\"basic\"})||e;return He.default.createElement(h,{key:e,ref:handleJSONSchema202012Ref(e),schema:t,name:r,onExpand:handleJSONSchema202012Expand(e)})}))))};var mutual_tls_auth=({schema:e,getComponent:t,name:r,authSelectors:n})=>{const a=t(\"JumpToPath\",!0),o=n.selectAuthPath(r);return He.default.createElement(\"div\",null,He.default.createElement(\"h4\",null,r,\" (mutualTLS) \",He.default.createElement(a,{path:o})),He.default.createElement(\"p\",null,\"Mutual TLS is required by this API/Operation. Certificates are managed via your Operating System and/or your browser.\"),He.default.createElement(\"p\",null,e.get(\"description\")))};class auths_Auths extends He.default.Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,n=r.map(((e,t)=>t)).toArray();this.setState(n.reduce(((e,t)=>(e[t]=\"\",e)),{})),t.logoutWithPersistOption(n)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:n}=this.props;const a=t(\"AuthItem\"),o=t(\"oauth2\",!0),s=t(\"Button\"),l=r.authorized(),i=e.filter(((e,t)=>!!l.get(t))),c=e.filter((e=>\"oauth2\"!==e.get(\"type\")&&\"mutualTLS\"!==e.get(\"type\"))),u=e.filter((e=>\"oauth2\"===e.get(\"type\"))),d=e.filter((e=>\"mutualTLS\"===e.get(\"type\")));return He.default.createElement(\"div\",{className:\"auth-container\"},c.size>0&&He.default.createElement(\"form\",{onSubmit:this.submitAuth},c.map(((e,o)=>He.default.createElement(a,{key:o,schema:e,name:o,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:n,authSelectors:r}))).toArray(),He.default.createElement(\"div\",{className:\"auth-btn-wrapper\"},c.size===i.size?He.default.createElement(s,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):He.default.createElement(s,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),He.default.createElement(s,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),u.size>0?He.default.createElement(\"div\",null,He.default.createElement(\"div\",{className:\"scope-def\"},He.default.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),He.default.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),e.filter((e=>\"oauth2\"===e.get(\"type\"))).map(((e,t)=>He.default.createElement(\"div\",{key:t},He.default.createElement(o,{authorized:l,schema:e,name:t})))).toArray()):null,d.size>0&&He.default.createElement(\"div\",null,d.map(((e,o)=>He.default.createElement(a,{key:o,schema:e,name:o,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:n,authSelectors:r}))).toArray()))}}var qo=auths_Auths;const isOAS31=e=>{const t=e.get(\"openapi\");return\"string\"==typeof t&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(t)},fn_createOnlyOAS31Selector=e=>(t,...r)=>n=>{if(n.getSystem().specSelectors.isOAS31()){const a=e(t,...r);return\"function\"==typeof a?a(n):a}return null},createOnlyOAS31SelectorWrapper=e=>(t,r)=>(n,...a)=>{if(r.getSystem().specSelectors.isOAS31()){const o=e(n,...a);return\"function\"==typeof o?o(t,r):o}return t(...a)},fn_createSystemSelector=e=>(t,...r)=>n=>{const a=e(t,n,...r);return\"function\"==typeof a?a(n):a},createOnlyOAS31ComponentWrapper=e=>(t,r)=>n=>r.specSelectors.isOAS31()?He.default.createElement(e,(0,ar.default)({},n,{originalComponent:t,getSystem:r.getSystem})):He.default.createElement(t,n),wrapOAS31Fn=(e,t)=>{const{fn:r,specSelectors:n}=t;return Object.fromEntries(Object.entries(e).map((([e,t])=>{const a=r[e];return[e,(...e)=>n.isOAS31()?t(...e):\"function\"==typeof a?a(...e):void 0]})))};var Lo=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31License\",!0);return He.default.createElement(t,null)}));var Uo=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31Contact\",!0);return He.default.createElement(t,null)}));var Do=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31Info\",!0);return He.default.createElement(t,null)}));const getProperties=(e,{includeReadOnly:t,includeWriteOnly:r})=>{if(!e?.properties)return{};const n=Object.entries(e.properties).filter((([,e])=>(!(!0===e?.readOnly)||t)&&(!(!0===e?.writeOnly)||r)));return Object.fromEntries(n)},makeGetSchemaKeywords=e=>{if(\"function\"!=typeof e)return null;const t=e();return()=>[...t,\"discriminator\",\"xml\",\"externalDocs\",\"example\",\"$$ref\"]},$o=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e(),{getComponent:n,fn:a,getConfigs:o}=r,s=o(),l=n(\"OAS31Model\"),i=n(\"withJSONSchema202012SystemContext\");return $o.ModelWithJSONSchemaContext??=i(l,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:s.defaultModelExpandDepth,includeReadOnly:t.includeReadOnly,includeWriteOnly:t.includeWriteOnly},fn:{getProperties:a.jsonSchema202012.getProperties,isExpandable:a.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(a.jsonSchema202012.getSchemaKeywords)}}),He.default.createElement($o.ModelWithJSONSchemaContext,t)}));var Vo=$o;const Jo=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const{getComponent:t,fn:r,getConfigs:n}=e(),a=n();if(Jo.ModelsWithJSONSchemaContext)return He.default.createElement(Jo.ModelsWithJSONSchemaContext,null);const o=t(\"OAS31Models\",!0),s=t(\"withJSONSchema202012SystemContext\");return Jo.ModelsWithJSONSchemaContext??=s(o,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:a.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},fn:{getProperties:r.jsonSchema202012.getProperties,isExpandable:r.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(r.jsonSchema202012.getSchemaKeywords)}}),He.default.createElement(Jo.ModelsWithJSONSchemaContext,null)}));Jo.ModelsWithJSONSchemaContext=null;var Fo=Jo;var wrap_components_version_pragma_filter=(e,t)=>e=>{const r=t.specSelectors.isOAS31(),n=t.getComponent(\"OAS31VersionPragmaFilter\");return He.default.createElement(n,(0,ar.default)({isOAS31:r},e))};const zo=createOnlyOAS31ComponentWrapper((({originalComponent:e,...t})=>{const{getComponent:r,schema:n,name:a}=t,o=r(\"MutualTLSAuth\",!0);return\"mutualTLS\"===n.get(\"type\")?He.default.createElement(o,{schema:n,name:a}):He.default.createElement(e,t)}));var Ko=zo;var Wo=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e().getComponent(\"OAS31Auths\",!0);return He.default.createElement(r,t)}));const Ho=(0,Xe.Map)(),Go=(0,Pt.createSelector)(((e,t)=>t.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>e=>{const t=e.specSelectors.specJson().get(\"webhooks\");return Xe.Map.isMap(t)?t:Ho},Xo=(0,Pt.createSelector)([(e,t)=>t.specSelectors.webhooks(),(e,t)=>t.specSelectors.validOperationMethods(),(e,t)=>t.specSelectors.specResolvedSubtree([\"webhooks\"])],((e,t)=>e.reduce(((e,r,n)=>{if(!Xe.Map.isMap(r))return e;const a=r.entrySeq().filter((([e])=>t.includes(e))).map((([e,t])=>({operation:(0,Xe.Map)({operation:t}),method:e,path:n,specPath:[\"webhooks\",n,e]})));return e.concat(a)}),(0,Xe.List)()).groupBy((e=>e.path)).map((e=>e.toArray())).toObject())),selectors_license=()=>e=>{const t=e.specSelectors.info().get(\"license\");return Xe.Map.isMap(t)?t:Ho},selectLicenseNameField=()=>e=>e.specSelectors.license().get(\"name\",\"License\"),selectLicenseUrlField=()=>e=>e.specSelectors.license().get(\"url\"),Yo=(0,Pt.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectLicenseIdentifierField=()=>e=>e.specSelectors.license().get(\"identifier\"),selectors_contact=()=>e=>{const t=e.specSelectors.info().get(\"contact\");return Xe.Map.isMap(t)?t:Ho},selectContactNameField=()=>e=>e.specSelectors.contact().get(\"name\",\"the developer\"),selectContactEmailField=()=>e=>e.specSelectors.contact().get(\"email\"),selectContactUrlField=()=>e=>e.specSelectors.contact().get(\"url\"),Qo=(0,Pt.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectContactUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectInfoTitleField=()=>e=>e.specSelectors.info().get(\"title\"),selectInfoSummaryField=()=>e=>e.specSelectors.info().get(\"summary\"),selectInfoDescriptionField=()=>e=>e.specSelectors.info().get(\"description\"),selectInfoTermsOfServiceField=()=>e=>e.specSelectors.info().get(\"termsOfService\"),Zo=(0,Pt.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectInfoTermsOfServiceField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectExternalDocsDescriptionField=()=>e=>e.specSelectors.externalDocs().get(\"description\"),selectExternalDocsUrlField=()=>e=>e.specSelectors.externalDocs().get(\"url\"),es=(0,Pt.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectExternalDocsUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectJsonSchemaDialectField=()=>e=>e.specSelectors.specJson().get(\"jsonSchemaDialect\"),selectJsonSchemaDialectDefault=()=>\"https://spec.openapis.org/oas/3.1/dialect/base\",ts=(0,Pt.createSelector)(((e,t)=>t.specSelectors.definitions()),((e,t)=>t.specSelectors.specResolvedSubtree([\"components\",\"schemas\"])),((e,t)=>Xe.Map.isMap(e)?Xe.Map.isMap(t)?Object.entries(e.toJS()).reduce(((e,[r,n])=>{const a=t.get(r);return e[r]=a?.toJS()||n,e}),{}):e.toJS():{})),wrap_selectors_isOAS3=(e,t)=>(r,...n)=>t.specSelectors.isOAS31()||e(...n),rs=createOnlyOAS31SelectorWrapper((()=>(e,t)=>t.oas31Selectors.selectLicenseUrl())),ns=createOnlyOAS31SelectorWrapper((()=>(e,t)=>{const r=t.specSelectors.securityDefinitions();let n=e();return r?(r.entrySeq().forEach((([e,t])=>{const r=t?.get(\"type\");\"mutualTLS\"===r&&(n=n.push(new Xe.Map({[e]:t})))})),n):n})),as=(0,Pt.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField(),(e,t)=>t.specSelectors.selectLicenseIdentifierField()],((e,t,r,n)=>r?safeBuildUrl(r,e,{selectedServer:t}):n?`https://spdx.org/licenses/${n}.html`:void 0));var keywords_Example=({schema:e,getSystem:t})=>{const{fn:r,getComponent:n}=t(),{hasKeyword:a}=r.jsonSchema202012.useFn(),o=n(\"JSONSchema202012JSONViewer\");return a(e,\"example\")?He.default.createElement(o,{name:\"Example\",value:e.example,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--example\"}):null};var keywords_Xml=({schema:e,getSystem:t})=>{const r=e?.xml||{},{fn:n,getComponent:a,getConfigs:o}=t(),{showExtensions:s}=o(),{useComponent:l,useIsExpanded:i,usePath:c,useLevel:u}=n.jsonSchema202012,{path:d}=c(\"xml\"),{isExpanded:p,setExpanded:m,setCollapsed:f}=i(\"xml\"),[h,g]=u(),y=s?getExtensions(r):[],S=!!(r.name||r.namespace||r.prefix||y.length>0),_=l(\"Accordion\"),v=l(\"ExpandDeepButton\"),b=a(\"OpenAPI31Extensions\"),w=a(\"JSONSchema202012PathContext\")(),C=a(\"JSONSchema202012LevelContext\")(),x=(0,He.useCallback)((()=>{p?f():m()}),[p,m,f]),O=(0,He.useCallback)(((e,t)=>{t?m({deep:!0}):f({deep:!0})}),[m,f]);return 0===Object.keys(r).length?null:He.default.createElement(w.Provider,{value:d},He.default.createElement(C.Provider,{value:g},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml\",\"data-json-schema-level\":h},S?He.default.createElement(He.default.Fragment,null,He.default.createElement(_,{expanded:p,onChange:x},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\")),He.default.createElement(v,{expanded:p,onClick:O})):He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\"),!0===r.attribute&&He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"attribute\"),!0===r.wrapped&&He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"wrapped\"),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!p})},p&&He.default.createElement(He.default.Fragment,null,r.name&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"name\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.name))),r.namespace&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"namespace\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.namespace))),r.prefix&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"prefix\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.prefix)))),y.length>0&&He.default.createElement(b,{openAPISpecObj:r,openAPIExtensions:y,getSystem:t})))))};var Discriminator_DiscriminatorMapping=({discriminator:e})=>{const t=e?.mapping||{};return 0===Object.keys(t).length?null:Object.entries(t).map((([e,t])=>He.default.createElement(\"div\",{key:`${e}-${t}`,className:\"json-schema-2020-12-keyword\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},e),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},t))))};var Discriminator_Discriminator=({schema:e,getSystem:t})=>{const r=e?.discriminator||{},{fn:n,getComponent:a,getConfigs:o}=t(),{showExtensions:s}=o(),{useComponent:l,useIsExpanded:i,usePath:c,useLevel:u}=n.jsonSchema202012,d=\"discriminator\",{path:p}=c(d),{isExpanded:m,setExpanded:f,setCollapsed:h}=i(d),[g,y]=u(),S=s?getExtensions(r):[],_=!!(r.mapping||S.length>0),v=l(\"Accordion\"),b=l(\"ExpandDeepButton\"),w=a(\"OpenAPI31Extensions\"),C=a(\"JSONSchema202012PathContext\")(),x=a(\"JSONSchema202012LevelContext\")(),O=(0,He.useCallback)((()=>{m?h():f()}),[m,f,h]),k=(0,He.useCallback)(((e,t)=>{t?f({deep:!0}):h({deep:!0})}),[f,h]);return 0===Object.keys(r).length?null:He.default.createElement(C.Provider,{value:p},He.default.createElement(x.Provider,{value:y},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator\",\"data-json-schema-level\":g},_?He.default.createElement(He.default.Fragment,null,He.default.createElement(v,{expanded:m,onChange:O},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\")),He.default.createElement(b,{expanded:m,onClick:k})):He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\"),r.propertyName&&He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},r.propertyName),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!m})},m&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(Discriminator_DiscriminatorMapping,{discriminator:r})),S.length>0&&He.default.createElement(w,{openAPISpecObj:r,openAPIExtensions:S,getSystem:t})))))};var keywords_OpenAPIExtensions=({openAPISpecObj:e,getSystem:t,openAPIExtensions:r})=>{const{fn:n}=t(),{useComponent:a}=n.jsonSchema202012,o=a(\"JSONViewer\");return r.map((t=>He.default.createElement(o,{key:t,name:t,value:e[t],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))};var keywords_ExternalDocs=({schema:e,getSystem:t})=>{const r=e?.externalDocs||{},{fn:n,getComponent:a,getConfigs:o}=t(),{showExtensions:s}=o(),{useComponent:l,useIsExpanded:i,usePath:c,useLevel:u}=n.jsonSchema202012,d=\"externalDocs\",{path:p}=c(d),{isExpanded:m,setExpanded:f,setCollapsed:h}=i(d),[g,y]=u(),S=s?getExtensions(r):[],_=!!(r.description||r.url||S.length>0),v=l(\"Accordion\"),b=l(\"ExpandDeepButton\"),w=a(\"JSONSchema202012KeywordDescription\"),C=a(\"Link\"),x=a(\"OpenAPI31Extensions\"),O=a(\"JSONSchema202012PathContext\")(),k=a(\"JSONSchema202012LevelContext\")(),N=(0,He.useCallback)((()=>{m?h():f()}),[m,f,h]),A=(0,He.useCallback)(((e,t)=>{t?f({deep:!0}):h({deep:!0})}),[f,h]);return 0===Object.keys(r).length?null:He.default.createElement(O.Provider,{value:p},He.default.createElement(k.Provider,{value:y},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs\",\"data-json-schema-level\":g},_?He.default.createElement(He.default.Fragment,null,He.default.createElement(v,{expanded:m,onChange:N},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\")),He.default.createElement(b,{expanded:m,onClick:A})):He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\"),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!m})},m&&He.default.createElement(He.default.Fragment,null,r.description&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(w,{schema:r,getSystem:t})),r.url&&He.default.createElement(\"li\",{className:\"json-schema-2020-12-property\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"url\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},He.default.createElement(C,{target:\"_blank\",href:sanitizeUrl(r.url)},r.url))))),S.length>0&&He.default.createElement(x,{openAPISpecObj:r,openAPIExtensions:S,getSystem:t})))))};var keywords_Description=({schema:e,getSystem:t})=>{if(!e?.description)return null;const{getComponent:r}=t(),n=r(\"Markdown\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},He.default.createElement(n,{source:e.description})))};var os=createOnlyOAS31ComponentWrapper(keywords_Description);const ss=createOnlyOAS31ComponentWrapper((({schema:e,getSystem:t,originalComponent:r})=>{const{getComponent:n}=t(),a=n(\"JSONSchema202012KeywordDiscriminator\"),o=n(\"JSONSchema202012KeywordXml\"),s=n(\"JSONSchema202012KeywordExample\"),l=n(\"JSONSchema202012KeywordExternalDocs\");return He.default.createElement(He.default.Fragment,null,He.default.createElement(r,{schema:e}),He.default.createElement(a,{schema:e,getSystem:t}),He.default.createElement(o,{schema:e,getSystem:t}),He.default.createElement(l,{schema:e,getSystem:t}),He.default.createElement(s,{schema:e,getSystem:t}))}));var ls=ss;var keywords_Properties=({schema:e,getSystem:t})=>{const{fn:r,getComponent:n}=t(),{useComponent:a,usePath:o}=r.jsonSchema202012,{getDependentRequired:s,getProperties:l}=r.jsonSchema202012.useFn(),i=r.jsonSchema202012.useConfig(),c=Array.isArray(e?.required)?e.required:[],{path:u}=o(\"properties\"),d=a(\"JSONSchema\"),p=n(\"JSONSchema202012PathContext\")(),m=l(e,i);return 0===Object.keys(m).length?null:He.default.createElement(p.Provider,{value:u},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},He.default.createElement(\"ul\",null,Object.entries(m).map((([t,r])=>{const n=c.includes(t),a=s(t,e);return He.default.createElement(\"li\",{key:t,className:(0,hr.default)(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":n})},He.default.createElement(d,{name:t,schema:r,dependentRequired:a}))})))))};var is=createOnlyOAS31ComponentWrapper(keywords_Properties);var cs=function oas31_after_load_afterLoad({fn:e,getSystem:t}){if(e.jsonSchema202012){const r=((e,t)=>{const{fn:r}=t();if(\"function\"!=typeof e)return null;const{hasKeyword:n}=r.jsonSchema202012;return t=>e(t)||n(t,\"example\")||t?.xml||t?.discriminator||t?.externalDocs})(e.jsonSchema202012.isExpandable,t);Object.assign(this.fn.jsonSchema202012,{isExpandable:r,getProperties})}if(\"function\"==typeof e.sampleFromSchema&&e.jsonSchema202012){const r=wrapOAS31Fn({sampleFromSchema:e.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:e.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:e.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:e.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:e.jsonSchema202012.memoizedCreateXMLExample,getJsonSampleSchema:e.jsonSchema202012.getJsonSampleSchema,getYamlSampleSchema:e.jsonSchema202012.getYamlSampleSchema,getXmlSampleSchema:e.jsonSchema202012.getXmlSampleSchema,getSampleSchema:e.jsonSchema202012.getSampleSchema,mergeJsonSchema:e.jsonSchema202012.mergeJsonSchema},t());Object.assign(this.fn,r)}const r=(e=>(t,r=null)=>{const{fn:n}=e();if(n.isFileUploadIntendedOAS30(t,r))return!0;const a=Xe.Map.isMap(t);if(!a&&!(0,Cr.default)(t))return!1;const o=a?t.get(\"contentMediaType\"):t.contentMediaType,s=a?t.get(\"contentEncoding\"):t.contentEncoding;return\"string\"==typeof o&&\"\"!==o||\"string\"==typeof s&&\"\"!==s})(t),{isFileUploadIntended:n}=wrapOAS31Fn({isFileUploadIntended:r},t());if(this.fn.isFileUploadIntended=n,this.fn.isFileUploadIntendedOAS31=r,e.jsonSchema202012){const{hasSchemaType:r}=wrapOAS31Fn({hasSchemaType:e.jsonSchema202012.hasSchemaType},t());this.fn.hasSchemaType=r}};var oas31=({fn:e})=>{const t=e.createSystemSelector||fn_createSystemSelector,r=e.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:cs,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,MutualTLSAuth:mutual_tls_auth,OAS31Info:oas31_components_info,OAS31License:components_license,OAS31Contact:components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:Mo,OAS31Models:models,OAS31Auths:qo,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs,OpenAPI31Extensions:keywords_OpenAPIExtensions},wrapComponents:{InfoContainer:Do,License:Lo,Contact:Uo,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:Vo,Models:Fo,AuthItem:Ko,auths:Wo,JSONSchema202012KeywordDescription:os,JSONSchema202012KeywordExamples:ls,JSONSchema202012KeywordProperties:is},statePlugins:{auth:{wrapSelectors:{definitionsToAuthorize:ns}},spec:{selectors:{isOAS31:t(Go),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:r(selectLicenseIdentifierField),selectLicenseUrl:t(Yo),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:t(Qo),selectInfoTitleField,selectInfoSummaryField:r(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:t(Zo),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:t(es),webhooks:r(selectors_webhooks),selectWebhooksOperations:r(t(Xo)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:t(ts)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:rs}},oas31:{selectors:{selectLicenseUrl:r(t(as))}}}}};const us=Ut.default.object,ds=Ut.default.bool,ps=(Ut.default.oneOfType([us,ds]),(0,He.createContext)(null));ps.displayName=\"JSONSchemaContext\";const ms=(0,He.createContext)(0);ms.displayName=\"JSONSchemaLevelContext\";const fs=(0,He.createContext)(new Set),hs=(0,He.createContext)([]);class JSONSchemaIsExpandedState{static Collapsed=\"collapsed\";static Expanded=\"expanded\";static DeeplyExpanded=\"deeply-expanded\"}const useConfig=()=>{const{config:e}=(0,He.useContext)(ps);return e},useComponent=e=>{const{components:t}=(0,He.useContext)(ps);return t[e]||null},useFn=(e=void 0)=>{const{fn:t}=(0,He.useContext)(ps);return void 0!==e?t[e]:t},useJSONSchemaContextState=()=>{const[,e]=(0,He.useState)(null),{state:t}=(0,He.useContext)(ps);return{state:t,setState:r=>{r(t),e({})}}},useLevel=()=>{const e=(0,He.useContext)(ms);return[e,e+1]},usePath=e=>{const t=(0,He.useContext)(hs),{setState:r}=useJSONSchemaContextState(),n=\"string\"==typeof e?[...t,e]:t;return{path:n,pathMutator:(e,t={deep:!1})=>{const a=n.toString(),updateFn=t=>{t.paths[a]=e,e===JSONSchemaIsExpandedState.Collapsed&&Object.keys(t.paths).forEach((e=>{e.startsWith(a)&&t.paths[e]===JSONSchemaIsExpandedState.DeeplyExpanded&&(t.paths[e]=JSONSchemaIsExpandedState.Expanded)}))},updateDeepFn=t=>{Object.keys(t.paths).forEach((r=>{r.startsWith(a)&&(t.paths[r]=e)}))};t.deep?r(updateDeepFn):r(updateFn)}}},useIsExpanded=e=>{const[t]=useLevel(),{defaultExpandedLevels:r}=useConfig(),{path:n,pathMutator:a}=usePath(e),{path:o}=usePath(),{state:s}=useJSONSchemaContextState(),l=s.paths[n.toString()],i=s.paths[o.toString()]??s.paths[o.slice(0,-1).toString()],c=l??(r-t>0?JSONSchemaIsExpandedState.Expanded:JSONSchemaIsExpandedState.Collapsed),u=c!==JSONSchemaIsExpandedState.Collapsed;(0,He.useEffect)((()=>{a(i===JSONSchemaIsExpandedState.DeeplyExpanded?JSONSchemaIsExpandedState.DeeplyExpanded:c)}),[i]);return{isExpanded:u,setExpanded:(0,He.useCallback)(((e={deep:!1})=>{a(e.deep?JSONSchemaIsExpandedState.DeeplyExpanded:JSONSchemaIsExpandedState.Expanded)}),[]),setCollapsed:(0,He.useCallback)(((e={deep:!1})=>{a(JSONSchemaIsExpandedState.Collapsed,e)}),[])}},useRenderedSchemas=(e=void 0)=>{if(void 0===e)return(0,He.useContext)(fs);const t=(0,He.useContext)(fs);return new Set([...t,e])},gs=(0,He.forwardRef)((({schema:e,name:t=\"\",dependentRequired:r=[],onExpand:n=()=>{},identifier:a=\"\"},o)=>{const s=useFn(),l=a||e?.$id||t,{path:i}=usePath(l),{isExpanded:c,setExpanded:u,setCollapsed:d}=useIsExpanded(l),[p,m]=useLevel(),f=(()=>{const[e]=useLevel();return e>0})(),h=s.isExpandable(e)||r.length>0,g=(e=>useRenderedSchemas().has(e))(e),y=useRenderedSchemas(e),S=s.stringifyConstraints(e),_=useComponent(\"Accordion\"),v=useComponent(\"Keyword$schema\"),b=useComponent(\"Keyword$vocabulary\"),w=useComponent(\"Keyword$id\"),C=useComponent(\"Keyword$anchor\"),x=useComponent(\"Keyword$dynamicAnchor\"),O=useComponent(\"Keyword$ref\"),k=useComponent(\"Keyword$dynamicRef\"),N=useComponent(\"Keyword$defs\"),A=useComponent(\"Keyword$comment\"),I=useComponent(\"KeywordAllOf\"),j=useComponent(\"KeywordAnyOf\"),R=useComponent(\"KeywordOneOf\"),T=useComponent(\"KeywordNot\"),P=useComponent(\"KeywordIf\"),B=useComponent(\"KeywordThen\"),M=useComponent(\"KeywordElse\"),q=useComponent(\"KeywordDependentSchemas\"),L=useComponent(\"KeywordPrefixItems\"),U=useComponent(\"KeywordItems\"),D=useComponent(\"KeywordContains\"),$=useComponent(\"KeywordProperties\"),V=useComponent(\"KeywordPatternProperties\"),J=useComponent(\"KeywordAdditionalProperties\"),F=useComponent(\"KeywordPropertyNames\"),z=useComponent(\"KeywordUnevaluatedItems\"),K=useComponent(\"KeywordUnevaluatedProperties\"),W=useComponent(\"KeywordType\"),H=useComponent(\"KeywordEnum\"),G=useComponent(\"KeywordConst\"),X=useComponent(\"KeywordConstraint\"),Y=useComponent(\"KeywordDependentRequired\"),Q=useComponent(\"KeywordContentSchema\"),Z=useComponent(\"KeywordTitle\"),ee=useComponent(\"KeywordDescription\"),te=useComponent(\"KeywordDefault\"),re=useComponent(\"KeywordDeprecated\"),ne=useComponent(\"KeywordReadOnly\"),ae=useComponent(\"KeywordWriteOnly\"),oe=useComponent(\"KeywordExamples\"),se=useComponent(\"ExtensionKeywords\"),le=useComponent(\"ExpandDeepButton\"),ie=(0,He.useCallback)(((e,t)=>{t?u():d(),n(e,t,!1)}),[n,u,d]),ce=(0,He.useCallback)(((e,t)=>{t?u({deep:!0}):d({deep:!0}),n(e,t,!0)}),[n,u,d]);return He.default.createElement(hs.Provider,{value:i},He.default.createElement(ms.Provider,{value:m},He.default.createElement(fs.Provider,{value:y},He.default.createElement(\"article\",{ref:o,\"data-json-schema-level\":p,className:(0,hr.default)(\"json-schema-2020-12\",{\"json-schema-2020-12--embedded\":f,\"json-schema-2020-12--circular\":g})},He.default.createElement(\"div\",{className:\"json-schema-2020-12-head\"},h&&!g?He.default.createElement(He.default.Fragment,null,He.default.createElement(_,{expanded:c,onChange:ie},He.default.createElement(Z,{title:t,schema:e})),He.default.createElement(le,{expanded:c,onClick:ce})):He.default.createElement(Z,{title:t,schema:e}),He.default.createElement(re,{schema:e}),He.default.createElement(ne,{schema:e}),He.default.createElement(ae,{schema:e}),He.default.createElement(W,{schema:e,isCircular:g}),S.length>0&&S.map((e=>He.default.createElement(X,{key:`${e.scope}-${e.value}`,constraint:e})))),He.default.createElement(\"div\",{className:(0,hr.default)(\"json-schema-2020-12-body\",{\"json-schema-2020-12-body--collapsed\":!c})},c&&He.default.createElement(He.default.Fragment,null,He.default.createElement(ee,{schema:e}),!g&&h&&He.default.createElement(He.default.Fragment,null,He.default.createElement($,{schema:e}),He.default.createElement(V,{schema:e}),He.default.createElement(J,{schema:e}),He.default.createElement(K,{schema:e}),He.default.createElement(F,{schema:e}),He.default.createElement(I,{schema:e}),He.default.createElement(j,{schema:e}),He.default.createElement(R,{schema:e}),He.default.createElement(T,{schema:e}),He.default.createElement(P,{schema:e}),He.default.createElement(B,{schema:e}),He.default.createElement(M,{schema:e}),He.default.createElement(q,{schema:e}),He.default.createElement(L,{schema:e}),He.default.createElement(U,{schema:e}),He.default.createElement(z,{schema:e}),He.default.createElement(D,{schema:e}),He.default.createElement(Q,{schema:e})),He.default.createElement(H,{schema:e}),He.default.createElement(G,{schema:e}),He.default.createElement(Y,{schema:e,dependentRequired:r}),He.default.createElement(te,{schema:e}),He.default.createElement(oe,{schema:e}),He.default.createElement(v,{schema:e}),He.default.createElement(b,{schema:e}),He.default.createElement(w,{schema:e}),He.default.createElement(C,{schema:e}),He.default.createElement(x,{schema:e}),He.default.createElement(O,{schema:e}),!g&&h&&He.default.createElement(N,{schema:e}),He.default.createElement(k,{schema:e}),He.default.createElement(A,{schema:e}),He.default.createElement(se,{schema:e})))))))}));var ys=gs;var keywords_$schema=({schema:e})=>e?.$schema?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$schema\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$schema)):null;var $vocabulary_$vocabulary=({schema:e})=>{const t=\"$vocabulary\",{path:r}=usePath(t),{isExpanded:n,setExpanded:a,setCollapsed:o}=useIsExpanded(t),s=useComponent(\"Accordion\"),l=(0,He.useCallback)((()=>{n?o():a()}),[n,a,o]);return e?.$vocabulary?\"object\"!=typeof e.$vocabulary?null:He.default.createElement(hs.Provider,{value:r},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary\"},He.default.createElement(s,{expanded:n,onChange:l},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$vocabulary\")),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",null,n&&Object.entries(e.$vocabulary).map((([e,t])=>He.default.createElement(\"li\",{key:e,className:(0,hr.default)(\"json-schema-2020-12-$vocabulary-uri\",{\"json-schema-2020-12-$vocabulary-uri--disabled\":!t})},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e))))))):null};var keywords_$id=({schema:e})=>e?.$id?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$id\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$id)):null;var keywords_$anchor=({schema:e})=>e?.$anchor?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$anchor\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$anchor)):null;var keywords_$dynamicAnchor=({schema:e})=>e?.$dynamicAnchor?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicAnchor\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$dynamicAnchor)):null;var keywords_$ref=({schema:e})=>e?.$ref?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$ref\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$ref)):null;var keywords_$dynamicRef=({schema:e})=>e?.$dynamicRef?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicRef\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$dynamicRef)):null;var keywords_$defs=({schema:e})=>{const t=e?.$defs||{},r=\"$defs\",{path:n}=usePath(r),{isExpanded:a,setExpanded:o,setCollapsed:s}=useIsExpanded(r),[l,i]=useLevel(),c=useComponent(\"Accordion\"),u=useComponent(\"ExpandDeepButton\"),d=useComponent(\"JSONSchema\"),p=(0,He.useCallback)((()=>{a?s():o()}),[a,o,s]),m=(0,He.useCallback)(((e,t)=>{t?o({deep:!0}):s({deep:!0})}),[o,s]);return 0===Object.keys(t).length?null:He.default.createElement(hs.Provider,{value:n},He.default.createElement(ms.Provider,{value:i},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs\",\"data-json-schema-level\":l},He.default.createElement(c,{expanded:a,onChange:p},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$defs\")),He.default.createElement(u,{expanded:a,onClick:m}),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!a})},a&&He.default.createElement(He.default.Fragment,null,Object.entries(t).map((([e,t])=>He.default.createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},He.default.createElement(d,{name:e,schema:t})))))))))};var keywords_$comment=({schema:e})=>e?.$comment?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$comment\"),He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$comment)):null;var keywords_AllOf=({schema:e})=>{const t=e?.allOf||[],r=useFn(),n=\"allOf\",{path:a}=usePath(n),{isExpanded:o,setExpanded:s,setCollapsed:l}=useIsExpanded(n),[i,c]=useLevel(),u=useComponent(\"Accordion\"),d=useComponent(\"ExpandDeepButton\"),p=useComponent(\"JSONSchema\"),m=useComponent(\"KeywordType\"),f=(0,He.useCallback)((()=>{o?l():s()}),[o,s,l]),h=(0,He.useCallback)(((e,t)=>{t?s({deep:!0}):l({deep:!0})}),[s,l]);return Array.isArray(t)&&0!==t.length?He.default.createElement(hs.Provider,{value:a},He.default.createElement(ms.Provider,{value:c},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf\",\"data-json-schema-level\":i},He.default.createElement(u,{expanded:o,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"All of\")),He.default.createElement(d,{expanded:o,onClick:h}),He.default.createElement(m,{schema:{allOf:t}}),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!o})},o&&He.default.createElement(He.default.Fragment,null,t.map(((e,t)=>He.default.createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},He.default.createElement(p,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null};var keywords_AnyOf=({schema:e})=>{const t=e?.anyOf||[],r=useFn(),n=\"anyOf\",{path:a}=usePath(n),{isExpanded:o,setExpanded:s,setCollapsed:l}=useIsExpanded(n),[i,c]=useLevel(),u=useComponent(\"Accordion\"),d=useComponent(\"ExpandDeepButton\"),p=useComponent(\"JSONSchema\"),m=useComponent(\"KeywordType\"),f=(0,He.useCallback)((()=>{o?l():s()}),[o,s,l]),h=(0,He.useCallback)(((e,t)=>{t?s({deep:!0}):l({deep:!0})}),[s,l]);return Array.isArray(t)&&0!==t.length?He.default.createElement(hs.Provider,{value:a},He.default.createElement(ms.Provider,{value:c},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf\",\"data-json-schema-level\":i},He.default.createElement(u,{expanded:o,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Any of\")),He.default.createElement(d,{expanded:o,onClick:h}),He.default.createElement(m,{schema:{anyOf:t}}),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!o})},o&&He.default.createElement(He.default.Fragment,null,t.map(((e,t)=>He.default.createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},He.default.createElement(p,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null};var keywords_OneOf=({schema:e})=>{const t=e?.oneOf||[],r=useFn(),n=\"oneOf\",{path:a}=usePath(n),{isExpanded:o,setExpanded:s,setCollapsed:l}=useIsExpanded(n),[i,c]=useLevel(),u=useComponent(\"Accordion\"),d=useComponent(\"ExpandDeepButton\"),p=useComponent(\"JSONSchema\"),m=useComponent(\"KeywordType\"),f=(0,He.useCallback)((()=>{o?l():s()}),[o,s,l]),h=(0,He.useCallback)(((e,t)=>{t?s({deep:!0}):l({deep:!0})}),[s,l]);return Array.isArray(t)&&0!==t.length?He.default.createElement(hs.Provider,{value:a},He.default.createElement(ms.Provider,{value:c},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf\",\"data-json-schema-level\":i},He.default.createElement(u,{expanded:o,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"One of\")),He.default.createElement(d,{expanded:o,onClick:h}),He.default.createElement(m,{schema:{oneOf:t}}),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!o})},o&&He.default.createElement(He.default.Fragment,null,t.map(((e,t)=>He.default.createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},He.default.createElement(p,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null};var keywords_Not=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"not\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Not\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--not\"},He.default.createElement(r,{name:n,schema:e.not,identifier:\"not\"}))};var keywords_If=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"if\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"If\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},He.default.createElement(r,{name:n,schema:e.if,identifier:\"if\"}))};var keywords_Then=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"then\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Then\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--then\"},He.default.createElement(r,{name:n,schema:e.then,identifier:\"then\"}))};var keywords_Else=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"else\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Else\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},He.default.createElement(r,{name:n,schema:e.else,identifier:\"else\"}))};var keywords_DependentSchemas=({schema:e})=>{const t=e?.dependentSchemas||[],r=\"dependentSchemas\",{path:n}=usePath(r),{isExpanded:a,setExpanded:o,setCollapsed:s}=useIsExpanded(r),[l,i]=useLevel(),c=useComponent(\"Accordion\"),u=useComponent(\"ExpandDeepButton\"),d=useComponent(\"JSONSchema\"),p=(0,He.useCallback)((()=>{a?s():o()}),[a,o,s]),m=(0,He.useCallback)(((e,t)=>{t?o({deep:!0}):s({deep:!0})}),[o,s]);return\"object\"!=typeof t||0===Object.keys(t).length?null:He.default.createElement(hs.Provider,{value:n},He.default.createElement(ms.Provider,{value:i},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas\",\"data-json-schema-level\":l},He.default.createElement(c,{expanded:a,onChange:p},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Dependent schemas\")),He.default.createElement(u,{expanded:a,onClick:m}),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!a})},a&&He.default.createElement(He.default.Fragment,null,Object.entries(t).map((([e,t])=>He.default.createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},He.default.createElement(d,{name:e,schema:t})))))))))};var keywords_PrefixItems=({schema:e})=>{const t=e?.prefixItems||[],r=useFn(),n=\"prefixItems\",{path:a}=usePath(n),{isExpanded:o,setExpanded:s,setCollapsed:l}=useIsExpanded(n),[i,c]=useLevel(),u=useComponent(\"Accordion\"),d=useComponent(\"ExpandDeepButton\"),p=useComponent(\"JSONSchema\"),m=useComponent(\"KeywordType\"),f=(0,He.useCallback)((()=>{o?l():s()}),[o,s,l]),h=(0,He.useCallback)(((e,t)=>{t?s({deep:!0}):l({deep:!0})}),[s,l]);return Array.isArray(t)&&0!==t.length?He.default.createElement(hs.Provider,{value:a},He.default.createElement(ms.Provider,{value:c},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems\",\"data-json-schema-level\":i},He.default.createElement(u,{expanded:o,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Prefix items\")),He.default.createElement(d,{expanded:o,onClick:h}),He.default.createElement(m,{schema:{prefixItems:t}}),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!o})},o&&He.default.createElement(He.default.Fragment,null,t.map(((e,t)=>He.default.createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},He.default.createElement(p,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null};var keywords_Items=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"items\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Items\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--items\"},He.default.createElement(r,{name:n,schema:e.items,identifier:\"items\"}))};var keywords_Contains=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"contains\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Contains\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains\"},He.default.createElement(r,{name:n,schema:e.contains,identifier:\"contains\"}))};var keywords_Properties_Properties=({schema:e})=>{const t=useFn(),r=e?.properties||{},n=Array.isArray(e?.required)?e.required:[],a=useComponent(\"JSONSchema\"),{path:o}=usePath(\"properties\");return 0===Object.keys(r).length?null:He.default.createElement(hs.Provider,{value:o},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},He.default.createElement(\"ul\",null,Object.entries(r).map((([r,o])=>{const s=n.includes(r),l=t.getDependentRequired(r,e);return He.default.createElement(\"li\",{key:r,className:(0,hr.default)(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":s})},He.default.createElement(a,{name:r,schema:o,dependentRequired:l}))})))))};var PatternProperties_PatternProperties=({schema:e})=>{const t=e?.patternProperties||{},r=useComponent(\"JSONSchema\"),{path:n}=usePath(\"patternProperties\");return 0===Object.keys(t).length?null:He.default.createElement(hs.Provider,{value:n},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties\"},He.default.createElement(\"ul\",null,Object.entries(t).map((([e,t])=>He.default.createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},He.default.createElement(r,{name:e,schema:t})))))))};var keywords_AdditionalProperties=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"additionalProperties\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Additional properties\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties\"},!0===e.additionalProperties?He.default.createElement(He.default.Fragment,null,n,He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"allowed\")):!1===e.additionalProperties?He.default.createElement(He.default.Fragment,null,n,He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"forbidden\")):He.default.createElement(r,{name:n,schema:e.additionalProperties,identifier:\"additionalProperties\"}))};var keywords_PropertyNames=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\"),n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Property names\");return t.hasKeyword(e,\"propertyNames\")?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames\"},He.default.createElement(r,{name:n,schema:e.propertyNames,identifier:\"propertyNames\"})):null};var keywords_UnevaluatedItems=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"unevaluatedItems\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated items\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems\"},He.default.createElement(r,{name:n,schema:e.unevaluatedItems,identifier:\"unevaluatedItems\"}))};var keywords_UnevaluatedProperties=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"unevaluatedProperties\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated properties\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties\"},He.default.createElement(r,{name:n,schema:e.unevaluatedProperties,identifier:\"unevaluatedProperties\"}))};var keywords_Type=({schema:e,isCircular:t=!1})=>{const r=useFn().getType(e),n=t?\" [circular]\":\"\";return He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},`${r}${n}`)};var Enum_Enum=({schema:e})=>{const t=useComponent(\"JSONViewer\");return Array.isArray(e?.enum)?He.default.createElement(t,{name:\"Enum\",value:e.enum,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum\"}):null};var Const_Const=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONViewer\");return t.hasKeyword(e,\"const\")?He.default.createElement(r,{name:\"Const\",value:e.const,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--const\"}):null};const fn_upperFirst=e=>\"string\"==typeof e?`${e.charAt(0).toUpperCase()}${e.slice(1)}`:e,makeGetTitle=e=>(t,{lookup:r=\"extended\"}={})=>{const n=e();if(null!=t?.title)return n.upperFirst(String(t.title));if(\"extended\"===r){if(null!=t?.$anchor)return n.upperFirst(String(t.$anchor));if(null!=t?.$id)return String(t.$id)}return\"\"},makeGetType=e=>{const getType=(t,r=new WeakSet)=>{const n=e();if(null==t)return\"any\";if(n.isBooleanJSONSchema(t))return t?\"any\":\"never\";if(\"object\"!=typeof t)return\"any\";if(r.has(t))return\"any\";r.add(t);const{type:a,prefixItems:o,items:s}=t,getArrayType=()=>{if(Array.isArray(o)){const e=o.map((e=>getType(e,r))),t=s?getType(s,r):\"any\";return`array<[${e.join(\", \")}], ${t}>`}if(s){return`array<${getType(s,r)}>`}return\"array<any>\"};if(t.not&&\"any\"===getType(t.not))return\"never\";const handleCombiningKeywords=(e,n)=>{if(Array.isArray(t[e])){return`(${t[e].map((e=>getType(e,r))).join(n)})`}return null},l=[Array.isArray(a)?a.map((e=>\"array\"===e?getArrayType():e)).join(\" | \"):\"array\"===a?getArrayType():[\"null\",\"boolean\",\"object\",\"array\",\"number\",\"integer\",\"string\"].includes(a)?a:(()=>{if(Object.hasOwn(t,\"prefixItems\")||Object.hasOwn(t,\"items\")||Object.hasOwn(t,\"contains\"))return getArrayType();if(Object.hasOwn(t,\"properties\")||Object.hasOwn(t,\"additionalProperties\")||Object.hasOwn(t,\"patternProperties\"))return\"object\";if([\"int32\",\"int64\"].includes(t.format))return\"integer\";if([\"float\",\"double\"].includes(t.format))return\"number\";if(Object.hasOwn(t,\"minimum\")||Object.hasOwn(t,\"maximum\")||Object.hasOwn(t,\"exclusiveMinimum\")||Object.hasOwn(t,\"exclusiveMaximum\")||Object.hasOwn(t,\"multipleOf\"))return\"number | integer\";if(Object.hasOwn(t,\"pattern\")||Object.hasOwn(t,\"format\")||Object.hasOwn(t,\"minLength\")||Object.hasOwn(t,\"maxLength\")||Object.hasOwn(t,\"contentEncoding\")||Object.hasOwn(t,\"contentMediaType\"))return\"string\";if(void 0!==t.const){if(null===t.const)return\"null\";if(\"boolean\"==typeof t.const)return\"boolean\";if(\"number\"==typeof t.const)return Number.isInteger(t.const)?\"integer\":\"number\";if(\"string\"==typeof t.const)return\"string\";if(Array.isArray(t.const))return\"array<any>\";if(\"object\"==typeof t.const)return\"object\"}return null})(),handleCombiningKeywords(\"oneOf\",\" | \"),handleCombiningKeywords(\"anyOf\",\" | \"),handleCombiningKeywords(\"allOf\",\" & \")].filter(Boolean).join(\" | \");return r.delete(t),l||\"any\"};return getType},isBooleanJSONSchema=e=>\"boolean\"==typeof e,hasKeyword=(e,t)=>null!==e&&\"object\"==typeof e&&Object.hasOwn(e,t),fn_makeIsExpandable=e=>t=>{const r=e();return t?.$schema||t?.$vocabulary||t?.$id||t?.$anchor||t?.$dynamicAnchor||t?.$ref||t?.$dynamicRef||t?.$defs||t?.$comment||t?.allOf||t?.anyOf||t?.oneOf||r.hasKeyword(t,\"not\")||r.hasKeyword(t,\"if\")||r.hasKeyword(t,\"then\")||r.hasKeyword(t,\"else\")||t?.dependentSchemas||t?.prefixItems||r.hasKeyword(t,\"items\")||r.hasKeyword(t,\"contains\")||t?.properties||t?.patternProperties||r.hasKeyword(t,\"additionalProperties\")||r.hasKeyword(t,\"propertyNames\")||r.hasKeyword(t,\"unevaluatedItems\")||r.hasKeyword(t,\"unevaluatedProperties\")||t?.description||t?.enum||r.hasKeyword(t,\"const\")||r.hasKeyword(t,\"contentSchema\")||r.hasKeyword(t,\"default\")||t?.examples||r.getExtensionKeywords(t).length>0},fn_stringify=e=>null===e||[\"number\",\"bigint\",\"boolean\"].includes(typeof e)?String(e):Array.isArray(e)?`[${e.map(fn_stringify).join(\", \")}]`:JSON.stringify(e),stringifyConstraintRange=(e,t,r)=>{const n=\"number\"==typeof t,a=\"number\"==typeof r;return n&&a?t===r?`${t} ${e}`:`[${t}, ${r}] ${e}`:n?`≥ ${t} ${e}`:a?`≤ ${r} ${e}`:null},stringifyConstraints=e=>{const t=[],r=(e=>{if(\"number\"!=typeof e?.multipleOf)return null;if(e.multipleOf<=0)return null;if(1===e.multipleOf)return null;const{multipleOf:t}=e;if(Number.isInteger(t))return`multiple of ${t}`;const r=10**t.toString().split(\".\")[1].length;return`multiple of ${t*r}/${r}`})(e);null!==r&&t.push({scope:\"number\",value:r});const n=(e=>{const t=e?.minimum,r=e?.maximum,n=e?.exclusiveMinimum,a=e?.exclusiveMaximum,o=\"number\"==typeof t,s=\"number\"==typeof r,l=\"number\"==typeof n,i=\"number\"==typeof a,c=l&&(!o||t<n),u=i&&(!s||r>a);if((o||l)&&(s||i))return`${c?\"(\":\"[\"}${c?n:t}, ${u?a:r}${u?\")\":\"]\"}`;if(o||l)return`${c?\">\":\"≥\"} ${c?n:t}`;if(s||i)return`${u?\"<\":\"≤\"} ${u?a:r}`;return null})(e);null!==n&&t.push({scope:\"number\",value:n}),e?.format&&t.push({scope:\"string\",value:e.format});const a=stringifyConstraintRange(\"characters\",e?.minLength,e?.maxLength);null!==a&&t.push({scope:\"string\",value:a}),e?.pattern&&t.push({scope:\"string\",value:`matches ${e?.pattern}`}),e?.contentMediaType&&t.push({scope:\"string\",value:`media type: ${e.contentMediaType}`}),e?.contentEncoding&&t.push({scope:\"string\",value:`encoding: ${e.contentEncoding}`});const o=stringifyConstraintRange(e?.uniqueItems?\"unique items\":\"items\",e?.minItems,e?.maxItems);null!==o&&t.push({scope:\"array\",value:o}),e?.uniqueItems&&!o&&t.push({scope:\"array\",value:\"unique\"});const s=stringifyConstraintRange(\"contained items\",e?.minContains,e?.maxContains);null!==s&&t.push({scope:\"array\",value:s});const l=stringifyConstraintRange(\"properties\",e?.minProperties,e?.maxProperties);return null!==l&&t.push({scope:\"object\",value:l}),t},getDependentRequired=(e,t)=>t?.dependentRequired?Array.from(Object.entries(t.dependentRequired).reduce(((t,[r,n])=>Array.isArray(n)&&n.includes(e)?(t.add(r),t):t),new Set)):[],isPlainObject=e=>\"object\"==typeof e&&null!==e&&!Array.isArray(e)&&(null===Object.getPrototypeOf(e)||Object.getPrototypeOf(e)===Object.prototype),getSchemaKeywords=()=>[\"$schema\",\"$vocabulary\",\"$id\",\"$anchor\",\"$dynamicAnchor\",\"$dynamicRef\",\"$ref\",\"$defs\",\"$comment\",\"allOf\",\"anyOf\",\"oneOf\",\"not\",\"if\",\"then\",\"else\",\"dependentSchemas\",\"prefixItems\",\"items\",\"contains\",\"properties\",\"patternProperties\",\"additionalProperties\",\"propertyNames\",\"unevaluatedItems\",\"unevaluatedProperties\",\"type\",\"enum\",\"const\",\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxContains\",\"minContains\",\"maxProperties\",\"minProperties\",\"required\",\"dependentRequired\",\"title\",\"description\",\"default\",\"deprecated\",\"readOnly\",\"writeOnly\",\"examples\",\"format\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],makeGetExtensionKeywords=e=>t=>{const r=e().getSchemaKeywords();return isPlainObject(t)?((e,t)=>{const r=new Set(t);return e.filter((e=>!r.has(e)))})(Object.keys(t),r):[]},fn_hasSchemaType=(e,t)=>{const r=Xe.Map.isMap(e);if(!r&&!isPlainObject(e))return!1;const hasType=e=>t===e||Array.isArray(t)&&t.includes(e),n=r?e.get(\"type\"):e.type;return Xe.List.isList(n)||Array.isArray(n)?n.some((e=>hasType(e))):hasType(n)},Constraint=({constraint:e})=>isPlainObject(e)&&\"string\"==typeof e.scope&&\"string\"==typeof e.value?He.default.createElement(\"span\",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${e.scope}`},e.value):null;var Es=He.default.memo(Constraint);var DependentRequired_DependentRequired=({dependentRequired:e})=>Array.isArray(e)&&0!==e.length?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired\"},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Required when defined\"),He.default.createElement(\"ul\",null,e.map((e=>He.default.createElement(\"li\",{key:e},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning\"},e)))))):null;var keywords_ContentSchema=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"contentSchema\"))return null;const n=He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Content schema\");return He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema\"},He.default.createElement(r,{name:n,schema:e.contentSchema,identifier:\"contentSchema\"}))};var Title_Title=({title:e=\"\",schema:t})=>{const r=useFn(),n=e||r.getTitle(t);return n?He.default.createElement(\"div\",{className:\"json-schema-2020-12__title\"},n):null};var keywords_Description_Description=({schema:e})=>e?.description?He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},He.default.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},e.description)):null;var Default_Default=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONViewer\");return t.hasKeyword(e,\"default\")?He.default.createElement(r,{name:\"Default\",value:e.default,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--default\"}):null};var keywords_Deprecated=({schema:e})=>!0!==e?.deprecated?null:He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning\"},\"deprecated\");var keywords_ReadOnly=({schema:e})=>!0!==e?.readOnly?null:He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"read-only\");var keywords_WriteOnly=({schema:e})=>!0!==e?.writeOnly?null:He.default.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"write-only\");var keywords_Examples_Examples=({schema:e})=>{const t=e?.examples||[],r=useComponent(\"JSONViewer\");return Array.isArray(t)&&0!==t.length?He.default.createElement(r,{name:\"Examples\",value:e.examples,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--examples\"}):null};var ExtensionKeywords_ExtensionKeywords=({schema:e})=>{const t=useFn(),r=\"ExtensionKeywords\",{path:n}=usePath(r),{isExpanded:a,setExpanded:o,setCollapsed:s}=useIsExpanded(r),[l,i]=useLevel(),c=useComponent(\"Accordion\"),u=useComponent(\"ExpandDeepButton\"),d=useComponent(\"JSONViewer\"),{showExtensionKeywords:p}=useConfig(),m=t.getExtensionKeywords(e),f=(0,He.useCallback)((()=>{a?s():o()}),[a,o,s]),h=(0,He.useCallback)(((e,t)=>{t?o({deep:!0}):s({deep:!0})}),[o,s]);return p&&0!==m.length?He.default.createElement(hs.Provider,{value:n},He.default.createElement(ms.Provider,{value:i},He.default.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--extension-keywords\",\"data-json-schema-level\":l},He.default.createElement(c,{expanded:a,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--extension\"},\"Extension Keywords\")),He.default.createElement(u,{expanded:a,onClick:h}),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!a})},a&&He.default.createElement(He.default.Fragment,null,m.map((t=>He.default.createElement(d,{key:t,name:t,value:e[t],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))))))):null};const JSONViewer=({name:e,value:t,className:r})=>{const n=useFn(),{path:a}=usePath(e),{isExpanded:o,setExpanded:s,setCollapsed:l}=useIsExpanded(e),[i,c]=useLevel(),u=useComponent(\"Accordion\"),d=useComponent(\"ExpandDeepButton\"),p=\"string\"==typeof t||\"number\"==typeof t||\"bigint\"==typeof t||\"boolean\"==typeof t||\"symbol\"==typeof t||null==t,m=(e=>isPlainObject(e)&&0===Object.keys(e).length)(t)||(e=>Array.isArray(e)&&0===e.length)(t),f=(0,He.useCallback)((()=>{o?l():s()}),[o,s,l]),h=(0,He.useCallback)(((e,t)=>{t?s({deep:!0}):l({deep:!0})}),[s,l]);return p?He.default.createElement(\"div\",{className:(0,hr.default)(\"json-schema-2020-12-json-viewer\",r)},He.default.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e),He.default.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__value json-schema-2020-12-json-viewer__value--secondary\"},n.stringify(t))):m?He.default.createElement(\"div\",{className:(0,hr.default)(\"json-schema-2020-12-json-viewer\",r)},He.default.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(t)?\"empty array\":\"empty object\")):He.default.createElement(hs.Provider,{value:a},He.default.createElement(ms.Provider,{value:c},He.default.createElement(\"div\",{className:(0,hr.default)(\"json-schema-2020-12-json-viewer\",r),\"data-json-schema-level\":i},He.default.createElement(u,{expanded:o,onChange:f},He.default.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e)),He.default.createElement(d,{expanded:o,onClick:h}),He.default.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(t)?\"array\":\"object\"),He.default.createElement(\"ul\",{className:(0,hr.default)(\"json-schema-2020-12-json-viewer__children\",{\"json-schema-2020-12-json-viewer__children--collapsed\":!o})},o&&He.default.createElement(He.default.Fragment,null,Array.isArray(t)?t.map(((e,t)=>He.default.createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},He.default.createElement(JSONViewer,{name:`#${t}`,value:e,className:r})))):Object.entries(t).map((([e,t])=>He.default.createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},He.default.createElement(JSONViewer,{name:e,value:t,className:r})))))))))};var Ss=JSONViewer;var Accordion_Accordion=({expanded:e=!1,children:t,onChange:r})=>{const n=useComponent(\"ChevronRightIcon\"),a=(0,He.useCallback)((t=>{r(t,!e)}),[e,r]);return He.default.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-accordion\",onClick:a},He.default.createElement(\"div\",{className:\"json-schema-2020-12-accordion__children\"},t),He.default.createElement(\"span\",{className:(0,hr.default)(\"json-schema-2020-12-accordion__icon\",{\"json-schema-2020-12-accordion__icon--expanded\":e,\"json-schema-2020-12-accordion__icon--collapsed\":!e})},He.default.createElement(n,null)))};var ExpandDeepButton_ExpandDeepButton=({expanded:e,onClick:t})=>{const r=(0,He.useCallback)((r=>{t(r,!e)}),[e,t]);return He.default.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-expand-deep-button\",onClick:r},e?\"Collapse all\":\"Expand all\")};var icons_ChevronRight=()=>He.default.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},He.default.createElement(\"path\",{d:\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"}));const withJSONSchemaContext=(e,t={})=>{const r={components:{JSONSchema:ys,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:keywords_Type,KeywordEnum:Enum_Enum,KeywordConst:Const_Const,KeywordConstraint:Es,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:Title_Title,KeywordDescription:keywords_Description_Description,KeywordDefault:Default_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,KeywordExamples:keywords_Examples_Examples,ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONViewer:Ss,Accordion:Accordion_Accordion,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight,...t.components},config:{default$schema:\"https://json-schema.org/draft/2020-12/schema\",defaultExpandedLevels:0,showExtensionKeywords:!0,...t.config},fn:{upperFirst:fn_upperFirst,getTitle:makeGetTitle(useFn),getType:makeGetType(useFn),isBooleanJSONSchema,hasKeyword,isExpandable:fn_makeIsExpandable(useFn),stringify:fn_stringify,stringifyConstraints,getDependentRequired,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(useFn),...t.fn},state:{paths:{}}},HOC=t=>He.default.createElement(ps.Provider,{value:r},He.default.createElement(e,t));return HOC.contexts={JSONSchemaContext:ps},HOC.displayName=e.displayName,HOC},makeWithJSONSchemaSystemContext=({getSystem:e})=>(t,r={})=>{const{getComponent:n,getConfigs:a}=e(),o=a(),s=n(\"JSONSchema202012\"),l=n(\"JSONSchema202012Keyword$schema\"),i=n(\"JSONSchema202012Keyword$vocabulary\"),c=n(\"JSONSchema202012Keyword$id\"),u=n(\"JSONSchema202012Keyword$anchor\"),d=n(\"JSONSchema202012Keyword$dynamicAnchor\"),p=n(\"JSONSchema202012Keyword$ref\"),m=n(\"JSONSchema202012Keyword$dynamicRef\"),f=n(\"JSONSchema202012Keyword$defs\"),h=n(\"JSONSchema202012Keyword$comment\"),g=n(\"JSONSchema202012KeywordAllOf\"),y=n(\"JSONSchema202012KeywordAnyOf\"),S=n(\"JSONSchema202012KeywordOneOf\"),_=n(\"JSONSchema202012KeywordNot\"),v=n(\"JSONSchema202012KeywordIf\"),b=n(\"JSONSchema202012KeywordThen\"),w=n(\"JSONSchema202012KeywordElse\"),C=n(\"JSONSchema202012KeywordDependentSchemas\"),x=n(\"JSONSchema202012KeywordPrefixItems\"),O=n(\"JSONSchema202012KeywordItems\"),k=n(\"JSONSchema202012KeywordContains\"),N=n(\"JSONSchema202012KeywordProperties\"),A=n(\"JSONSchema202012KeywordPatternProperties\"),I=n(\"JSONSchema202012KeywordAdditionalProperties\"),j=n(\"JSONSchema202012KeywordPropertyNames\"),R=n(\"JSONSchema202012KeywordUnevaluatedItems\"),T=n(\"JSONSchema202012KeywordUnevaluatedProperties\"),P=n(\"JSONSchema202012KeywordType\"),B=n(\"JSONSchema202012KeywordEnum\"),M=n(\"JSONSchema202012KeywordConst\"),q=n(\"JSONSchema202012KeywordConstraint\"),L=n(\"JSONSchema202012KeywordDependentRequired\"),U=n(\"JSONSchema202012KeywordContentSchema\"),D=n(\"JSONSchema202012KeywordTitle\"),$=n(\"JSONSchema202012KeywordDescription\"),V=n(\"JSONSchema202012KeywordDefault\"),J=n(\"JSONSchema202012KeywordDeprecated\"),F=n(\"JSONSchema202012KeywordReadOnly\"),z=n(\"JSONSchema202012KeywordWriteOnly\"),K=n(\"JSONSchema202012KeywordExamples\"),W=n(\"JSONSchema202012ExtensionKeywords\"),H=n(\"JSONSchema202012JSONViewer\"),G=n(\"JSONSchema202012Accordion\"),X=n(\"JSONSchema202012ExpandDeepButton\"),Y=n(\"JSONSchema202012ChevronRightIcon\");return withJSONSchemaContext(t,{components:{JSONSchema:s,Keyword$schema:l,Keyword$vocabulary:i,Keyword$id:c,Keyword$anchor:u,Keyword$dynamicAnchor:d,Keyword$ref:p,Keyword$dynamicRef:m,Keyword$defs:f,Keyword$comment:h,KeywordAllOf:g,KeywordAnyOf:y,KeywordOneOf:S,KeywordNot:_,KeywordIf:v,KeywordThen:b,KeywordElse:w,KeywordDependentSchemas:C,KeywordPrefixItems:x,KeywordItems:O,KeywordContains:k,KeywordProperties:N,KeywordPatternProperties:A,KeywordAdditionalProperties:I,KeywordPropertyNames:j,KeywordUnevaluatedItems:R,KeywordUnevaluatedProperties:T,KeywordType:P,KeywordEnum:B,KeywordConst:M,KeywordConstraint:q,KeywordDependentRequired:L,KeywordContentSchema:U,KeywordTitle:D,KeywordDescription:$,KeywordDefault:V,KeywordDeprecated:J,KeywordReadOnly:F,KeywordWriteOnly:z,KeywordExamples:K,ExtensionKeywords:W,JSONViewer:H,Accordion:G,ExpandDeepButton:X,ChevronRightIcon:Y,...r.components},config:{showExtensionKeywords:o.showExtensions,...r.config},fn:{...r.fn}})};var json_schema_2020_12=({getSystem:e,fn:t})=>{const fnAccessor=()=>({upperFirst:t.upperFirst,...t.jsonSchema202012});return{components:{JSONSchema202012:ys,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:keywords_Type,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:Const_Const,JSONSchema202012KeywordConstraint:Es,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:Title_Title,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:Default_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012KeywordExamples:keywords_Examples_Examples,JSONSchema202012ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONSchema202012JSONViewer:Ss,JSONSchema202012Accordion:Accordion_Accordion,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,withJSONSchema202012SystemContext:makeWithJSONSchemaSystemContext(e()),JSONSchema202012PathContext:()=>hs,JSONSchema202012LevelContext:()=>ms},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{getTitle:makeGetTitle(fnAccessor),getType:makeGetType(fnAccessor),isExpandable:fn_makeIsExpandable(fnAccessor),isBooleanJSONSchema,hasKeyword,useFn,useConfig,useComponent,useIsExpanded,usePath,useLevel,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(fnAccessor),hasSchemaType:fn_hasSchemaType}}}};var array=(e,{sample:t=[]}={})=>((e,t={})=>{const{minItems:r,maxItems:n,uniqueItems:a}=t,{contains:o,minContains:s,maxContains:l}=t;let i=[...e];if(null!=o&&\"object\"==typeof o){if(Number.isInteger(s)&&s>1){const e=i.at(0);for(let t=1;t<s;t+=1)i.unshift(e)}Number.isInteger(l)}if(Number.isInteger(n)&&n>0&&(i=e.slice(0,n)),Number.isInteger(r)&&r>0)for(let e=0;i.length<r;e+=1)i.push(i[e%i.length]);return!0===a&&(i=Array.from(new Set(i))),i})(t,e);var object=()=>{throw new Error(\"Not implemented\")};const bytes=e=>Et()(e),pick=e=>e.at(0),predicates_isBooleanJSONSchema=e=>\"boolean\"==typeof e,isJSONSchemaObject=e=>(0,Cr.default)(e),isJSONSchema=e=>predicates_isBooleanJSONSchema(e)||isJSONSchemaObject(e);var _s=class Registry{data={};register(e,t){this.data[e]=t}unregister(e){void 0===e?this.data={}:delete this.data[e]}get(e){return this.data[e]}};var int32=()=>0;var int64=()=>0;var generators_float=()=>.1;var generators_double=()=>.1;var email=()=>\"user@example.com\";var idn_email=()=>\"실례@example.com\";var hostname=()=>\"example.com\";var idn_hostname=()=>\"실례.com\";var ipv4=()=>\"198.51.100.42\";var ipv6=()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\";var uri=()=>\"https://example.com/\";var uri_reference=()=>\"path/index.html\";var iri=()=>\"https://실례.com/\";var iri_reference=()=>\"path/실례.html\";var uuid=()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\";var uri_template=()=>\"https://example.com/dictionary/{term:1}/{term}\";var json_pointer=()=>\"/a/b/c\";var relative_json_pointer=()=>\"1/0\";var date_time=()=>(new Date).toISOString();var date=()=>(new Date).toISOString().substring(0,10);var time=()=>(new Date).toISOString().substring(11);var duration=()=>\"P3D\";var generators_password=()=>\"********\";var regex=()=>\"^[a-z]+$\";const vs=new class FormatRegistry extends _s{#e={int32,int64,float:generators_float,double:generators_double,email,\"idn-email\":idn_email,hostname,\"idn-hostname\":idn_hostname,ipv4,ipv6,uri,\"uri-reference\":uri_reference,iri,\"iri-reference\":iri_reference,uuid,\"uri-template\":uri_template,\"json-pointer\":json_pointer,\"relative-json-pointer\":relative_json_pointer,\"date-time\":date_time,date,time,duration,password:generators_password,regex};data={...this.#e};get defaults(){return{...this.#e}}},formatAPI=(e,t)=>\"function\"==typeof t?vs.register(e,t):null===t?vs.unregister(e):vs.get(e);formatAPI.getDefaults=()=>vs.defaults;var bs=formatAPI,ws=__webpack_require__(287).Buffer;var _7bit=e=>ws.from(e).toString(\"ascii\"),Cs=__webpack_require__(287).Buffer;var _8bit=e=>Cs.from(e).toString(\"utf8\"),xs=__webpack_require__(287).Buffer;var binary=e=>xs.from(e).toString(\"binary\");var quoted_printable=e=>{let t=\"\";for(let r=0;r<e.length;r++){const n=e.charCodeAt(r);if(61===n)t+=\"=3D\";else if(n>=33&&n<=60||n>=62&&n<=126||9===n||32===n)t+=e.charAt(r);else if(13===n||10===n)t+=\"\\r\\n\";else if(n>126){const n=unescape(encodeURIComponent(e.charAt(r)));for(let e=0;e<n.length;e++)t+=\"=\"+(\"0\"+n.charCodeAt(e).toString(16)).slice(-2).toUpperCase()}else t+=\"=\"+(\"0\"+n.toString(16)).slice(-2).toUpperCase()}return t},Os=__webpack_require__(287).Buffer;var base16=e=>Os.from(e).toString(\"hex\"),ks=__webpack_require__(287).Buffer;var base32=e=>{const t=ks.from(e).toString(\"utf8\"),r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";let n=0,a=\"\",o=0,s=0;for(let e=0;e<t.length;e++)for(o=o<<8|t.charCodeAt(e),s+=8;s>=5;)a+=r.charAt(o>>>s-5&31),s-=5;s>0&&(a+=r.charAt(o<<5-s&31),n=(8-8*t.length%5)%5);for(let e=0;e<n;e++)a+=\"=\";return a},Ns=__webpack_require__(287).Buffer;var base64=e=>Ns.from(e).toString(\"base64\"),As=__webpack_require__(287).Buffer;var base64url=e=>As.from(e).toString(\"base64url\");const Is=new class EncoderRegistry extends _s{#e={\"7bit\":_7bit,\"8bit\":_8bit,binary,\"quoted-printable\":quoted_printable,base16,base32,base64,base64url};data={...this.#e};get defaults(){return{...this.#e}}},encoderAPI=(e,t)=>\"function\"==typeof t?Is.register(e,t):null===t?Is.unregister(e):Is.get(e);encoderAPI.getDefaults=()=>Is.defaults;var js=encoderAPI;var Rs={\"text/plain\":()=>\"string\",\"text/css\":()=>\".selector { border: 1px solid red }\",\"text/csv\":()=>\"value1,value2,value3\",\"text/html\":()=>\"<p>content</p>\",\"text/calendar\":()=>\"BEGIN:VCALENDAR\",\"text/javascript\":()=>\"console.dir('Hello world!');\",\"text/xml\":()=>'<person age=\"30\">John Doe</person>',\"text/*\":()=>\"string\"};var Ts={\"image/*\":()=>bytes(25).toString(\"binary\")};var Ps={\"audio/*\":()=>bytes(25).toString(\"binary\")};var Bs={\"video/*\":()=>bytes(25).toString(\"binary\")};var Ms={\"application/json\":()=>'{\"key\":\"value\"}',\"application/ld+json\":()=>'{\"name\": \"John Doe\"}',\"application/x-httpd-php\":()=>\"<?php echo '<p>Hello World!</p>'; ?>\",\"application/rtf\":()=>String.raw`{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1`,\"application/x-sh\":()=>'echo \"Hello World!\"',\"application/xhtml+xml\":()=>\"<p>content</p>\",\"application/*\":()=>bytes(25).toString(\"binary\")};const qs=new class MediaTypeRegistry extends _s{#e={...Rs,...Ts,...Ps,...Bs,...Ms};data={...this.#e};get defaults(){return{...this.#e}}},mediaTypeAPI=(e,t)=>{if(\"function\"==typeof t)return qs.register(e,t);if(null===t)return qs.unregister(e);const r=e.split(\";\").at(0),n=`${r.split(\"/\").at(0)}/*`;return qs.get(e)||qs.get(r)||qs.get(n)};mediaTypeAPI.getDefaults=()=>qs.defaults;var Ls=mediaTypeAPI;const applyStringConstraints=(e,t={})=>{const{maxLength:r,minLength:n}=t;let a=e;if(Number.isInteger(r)&&r>0&&(a=a.slice(0,r)),Number.isInteger(n)&&n>0){let e=0;for(;a.length<n;)a+=a[e++%a.length]}return a};var types_string=(e,{sample:t}={})=>{const{contentEncoding:r,contentMediaType:n,contentSchema:a}=e,{pattern:o,format:s}=e,l=js(r)||ea.default;let i;return i=\"string\"==typeof o?applyStringConstraints((e=>{try{return new kr.default(e).gen()}catch{return\"string\"}})(o),e):\"string\"==typeof s?(e=>{const{format:t}=e,r=bs(t);return\"function\"==typeof r?r(e):\"string\"})(e):isJSONSchema(a)&&\"string\"==typeof n&&void 0!==t?Array.isArray(t)||\"object\"==typeof t?JSON.stringify(t):applyStringConstraints(String(t),e):\"string\"==typeof n?(e=>{const{contentMediaType:t}=e,r=Ls(t);return\"function\"==typeof r?r(e):\"string\"})(e):applyStringConstraints(\"string\",e),l(i)};const applyNumberConstraints=(e,t={})=>{const{minimum:r,maximum:n,exclusiveMinimum:a,exclusiveMaximum:o}=t,{multipleOf:s}=t,l=Number.isInteger(e)?1:Number.EPSILON;let i=\"number\"==typeof r?r:null,c=\"number\"==typeof n?n:null,u=e;if(\"number\"==typeof a&&(i=null!==i?Math.max(i,a+l):a+l),\"number\"==typeof o&&(c=null!==c?Math.min(c,o-l):o-l),u=i>c&&e||i||c||u,\"number\"==typeof s&&s>0){const e=u%s;u=0===e?u:u+s-e}return u};var types_number=e=>{const{format:t}=e;let r;return r=\"string\"==typeof t?(e=>{const{format:t}=e,r=bs(t);return\"function\"==typeof r?r(e):0})(e):0,applyNumberConstraints(r,e)};var types_integer=e=>{const{format:t}=e;let r;return r=\"string\"==typeof t?(e=>{const{format:t}=e,r=bs(t);if(\"function\"==typeof r)return r(e);switch(t){case\"int32\":return int32();case\"int64\":return int64()}return 0})(e):0,applyNumberConstraints(r,e)};var types_boolean=e=>\"boolean\"!=typeof e.default||e.default;var Us=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(e,t)=>\"string\"==typeof t&&Object.hasOwn(e,t)?e[t]:()=>`Unknown Type: ${t}`});const Ds=[\"array\",\"object\",\"number\",\"integer\",\"string\",\"boolean\",\"null\"],hasExample=e=>{if(!isJSONSchemaObject(e))return!1;const{examples:t,example:r,default:n}=e;return!!(Array.isArray(t)&&t.length>=1)||(void 0!==n||void 0!==r)},extractExample=e=>{if(!isJSONSchemaObject(e))return null;const{examples:t,example:r,default:n}=e;return Array.isArray(t)&&t.length>=1?t.at(0):void 0!==n?n:void 0!==r?r:void 0},$s={array:[\"items\",\"prefixItems\",\"contains\",\"maxContains\",\"minContains\",\"maxItems\",\"minItems\",\"uniqueItems\",\"unevaluatedItems\"],object:[\"properties\",\"additionalProperties\",\"patternProperties\",\"propertyNames\",\"minProperties\",\"maxProperties\",\"required\",\"dependentSchemas\",\"dependentRequired\",\"unevaluatedProperties\"],string:[\"pattern\",\"format\",\"minLength\",\"maxLength\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],integer:[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\",\"multipleOf\"]};$s.number=$s.integer;const Vs=\"string\",inferTypeFromValue=e=>void 0===e?null:null===e?\"null\":Array.isArray(e)?\"array\":Number.isInteger(e)?\"integer\":typeof e,foldType=e=>{if(Array.isArray(e)&&e.length>=1){if(e.includes(\"array\"))return\"array\";if(e.includes(\"object\"))return\"object\";{const t=e.filter((e=>\"null\"!==e)),r=pick(t.length>0?t:e);if(Ds.includes(r))return r}}return Ds.includes(e)?e:null},inferType=(e,t=new WeakSet)=>{if(!isJSONSchemaObject(e))return Vs;if(t.has(e))return Vs;t.add(e);let{type:r,const:n}=e;if(r=foldType(r),\"string\"!=typeof r){const t=Object.keys($s);e:for(let n=0;n<t.length;n+=1){const a=t[n],o=$s[a];for(let t=0;t<o.length;t+=1){const n=o[t];if(Object.hasOwn(e,n)){r=a;break e}}}}if(\"string\"!=typeof r&&void 0!==n){const e=inferTypeFromValue(n);r=\"string\"==typeof e?e:r}if(\"string\"!=typeof r){const combineTypes=r=>{if(Array.isArray(e[r])){const n=e[r].map((e=>inferType(e,t)));return foldType(n)}return null},n=combineTypes(\"allOf\"),a=combineTypes(\"anyOf\"),o=combineTypes(\"oneOf\"),s=e.not?inferType(e.not,t):null;(n||a||o||s)&&(r=foldType([n,a,o,s].filter(Boolean)))}if(\"string\"!=typeof r&&hasExample(e)){const t=extractExample(e),n=inferTypeFromValue(t);r=\"string\"==typeof n?n:r}return t.delete(e),r||Vs},getType=e=>inferType(e),typeCast=e=>predicates_isBooleanJSONSchema(e)?(e=>!1===e?{not:{}}:{})(e):isJSONSchemaObject(e)?e:{},merge=(e,t,r={})=>{if(predicates_isBooleanJSONSchema(e)&&!0===e)return!0;if(predicates_isBooleanJSONSchema(e)&&!1===e)return!1;if(predicates_isBooleanJSONSchema(t)&&!0===t)return!0;if(predicates_isBooleanJSONSchema(t)&&!1===t)return!1;if(!isJSONSchema(e))return t;if(!isJSONSchema(t))return e;const n={...t,...e};if(t.type&&e.type&&Array.isArray(t.type)&&\"string\"==typeof t.type){const r=normalizeArray(t.type).concat(e.type);n.type=Array.from(new Set(r))}if(Array.isArray(t.required)&&Array.isArray(e.required)&&(n.required=[...new Set([...e.required,...t.required])]),t.properties&&e.properties){const a=new Set([...Object.keys(t.properties),...Object.keys(e.properties)]);n.properties={};for(const o of a){const a=t.properties[o]||{},s=e.properties[o]||{};a.readOnly&&!r.includeReadOnly||a.writeOnly&&!r.includeWriteOnly?n.required=(n.required||[]).filter((e=>e!==o)):n.properties[o]=merge(s,a,r)}}return isJSONSchema(t.items)&&isJSONSchema(e.items)&&(n.items=merge(e.items,t.items,r)),isJSONSchema(t.contains)&&isJSONSchema(e.contains)&&(n.contains=merge(e.contains,t.contains,r)),isJSONSchema(t.contentSchema)&&isJSONSchema(e.contentSchema)&&(n.contentSchema=merge(e.contentSchema,t.contentSchema,r)),n};var Js=merge;const main_sampleFromSchemaGeneric=(e,t={},r=void 0,n=!1)=>{if(null==e&&void 0===r)return;\"function\"==typeof e?.toJS&&(e=e.toJS()),e=typeCast(e);let a=void 0!==r||hasExample(e);const o=!a&&Array.isArray(e.oneOf)&&e.oneOf.length>0,s=!a&&Array.isArray(e.anyOf)&&e.anyOf.length>0;if(!a&&(o||s)){const r=typeCast(pick(o?e.oneOf:e.anyOf));!(e=Js(e,r,t)).xml&&r.xml&&(e.xml=r.xml),hasExample(e)&&hasExample(r)&&(a=!0)}const l={};let{xml:i,properties:c,additionalProperties:u,items:d,contains:p}=e||{},m=getType(e),{includeReadOnly:f,includeWriteOnly:h}=t;i=i||{};let g,{name:y,prefix:S,namespace:_}=i,v={};if(Object.hasOwn(e,\"type\")||(e.type=m),n&&(y=y||\"notagname\",g=(S?`${S}:`:\"\")+y,_)){l[S?`xmlns:${S}`:\"xmlns\"]=_}n&&(v[g]=[]);const b=objectify(c);let w,C=0;const hasExceededMaxProperties=()=>Number.isInteger(e.maxProperties)&&e.maxProperties>0&&C>=e.maxProperties,canAddProperty=t=>!(Number.isInteger(e.maxProperties)&&e.maxProperties>0)||!hasExceededMaxProperties()&&(!(t=>!Array.isArray(e.required)||0===e.required.length||!e.required.includes(t))(t)||e.maxProperties-C-(()=>{if(!Array.isArray(e.required)||0===e.required.length)return 0;let t=0;return n?e.required.forEach((e=>t+=void 0===v[e]?0:1)):e.required.forEach((e=>{t+=void 0===v[g]?.find((t=>void 0!==t[e]))?0:1})),e.required.length-t})()>0);if(w=n?(r,a=void 0)=>{if(e&&b[r]){if(b[r].xml=b[r].xml||{},b[r].xml.attribute){const e=Array.isArray(b[r].enum)?pick(b[r].enum):void 0;if(hasExample(b[r]))l[b[r].xml.name||r]=extractExample(b[r]);else if(void 0!==e)l[b[r].xml.name||r]=e;else{const e=typeCast(b[r]),n=getType(e),o=b[r].xml.name||r;if(\"array\"===n){const e=main_sampleFromSchemaGeneric(b[r],t,a,!1);l[o]=e.map((e=>(0,Cr.default)(e)?\"UnknownTypeObject\":Array.isArray(e)?\"UnknownTypeArray\":e)).join(\" \")}else l[o]=\"object\"===n?\"UnknownTypeObject\":Us[n](e)}return}b[r].xml.name=b[r].xml.name||r}else b[r]||!1===u||(b[r]={xml:{name:r}});let o=main_sampleFromSchemaGeneric(b[r],t,a,n);canAddProperty(r)&&(C++,Array.isArray(o)?v[g]=v[g].concat(o):v[g].push(o))}:(r,a)=>{if(canAddProperty(r)){if((0,Cr.default)(e.discriminator?.mapping)&&e.discriminator.propertyName===r&&\"string\"==typeof e.$$ref){for(const t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){v[r]=t;break}}else v[r]=main_sampleFromSchemaGeneric(b[r],t,a,n);C++}},a){let a;if(a=void 0!==r?r:extractExample(e),!n){if(\"number\"==typeof a&&\"string\"===m)return`${a}`;if(\"string\"!=typeof a||\"string\"===m)return a;try{return JSON.parse(a)}catch{return a}}if(\"array\"===m){if(!Array.isArray(a)){if(\"string\"==typeof a)return a;a=[a]}let r=[];return isJSONSchemaObject(d)&&(d.xml=d.xml||i||{},d.xml.name=d.xml.name||i.name,r=a.map((e=>main_sampleFromSchemaGeneric(d,t,e,n)))),isJSONSchemaObject(p)&&(p.xml=p.xml||i||{},p.xml.name=p.xml.name||i.name,r=[main_sampleFromSchemaGeneric(p,t,void 0,n),...r]),r=Us.array(e,{sample:r}),i.wrapped?(v[g]=r,(0,Nr.default)(l)||v[g].push({_attr:l})):v=r,v}if(\"object\"===m){if(\"string\"==typeof a)return a;for(const e in a)Object.hasOwn(a,e)&&(b[e]?.readOnly&&!f||b[e]?.writeOnly&&!h||(b[e]?.xml?.attribute?l[b[e].xml.name||e]=a[e]:w(e,a[e])));return(0,Nr.default)(l)||v[g].push({_attr:l}),v}return v[g]=(0,Nr.default)(l)?a:[{_attr:l},a],v}if(\"array\"===m){let r=[];if(isJSONSchemaObject(p))if(n&&(p.xml=p.xml||e.xml||{},p.xml.name=p.xml.name||i.name),Array.isArray(p.anyOf)){const{anyOf:e,...a}=d;r.push(...p.anyOf.map((e=>main_sampleFromSchemaGeneric(Js(e,a,t),t,void 0,n))))}else if(Array.isArray(p.oneOf)){const{oneOf:e,...a}=d;r.push(...p.oneOf.map((e=>main_sampleFromSchemaGeneric(Js(e,a,t),t,void 0,n))))}else{if(!(!n||n&&i.wrapped))return main_sampleFromSchemaGeneric(p,t,void 0,n);r.push(main_sampleFromSchemaGeneric(p,t,void 0,n))}if(isJSONSchemaObject(d))if(n&&(d.xml=d.xml||e.xml||{},d.xml.name=d.xml.name||i.name),Array.isArray(d.anyOf)){const{anyOf:e,...a}=d;r.push(...d.anyOf.map((e=>main_sampleFromSchemaGeneric(Js(e,a,t),t,void 0,n))))}else if(Array.isArray(d.oneOf)){const{oneOf:e,...a}=d;r.push(...d.oneOf.map((e=>main_sampleFromSchemaGeneric(Js(e,a,t),t,void 0,n))))}else{if(!(!n||n&&i.wrapped))return main_sampleFromSchemaGeneric(d,t,void 0,n);r.push(main_sampleFromSchemaGeneric(d,t,void 0,n))}return r=Us.array(e,{sample:r}),n&&i.wrapped?(v[g]=r,(0,Nr.default)(l)||v[g].push({_attr:l}),v):r}if(\"object\"===m){for(let e in b)Object.hasOwn(b,e)&&(b[e]?.deprecated||b[e]?.readOnly&&!f||b[e]?.writeOnly&&!h||w(e));if(n&&l&&v[g].push({_attr:l}),hasExceededMaxProperties())return v;if(predicates_isBooleanJSONSchema(u)&&u)n?v[g].push({additionalProp:\"Anything can be here\"}):v.additionalProp1={},C++;else if(isJSONSchemaObject(u)){const r=u,a=main_sampleFromSchemaGeneric(r,t,void 0,n);if(n&&\"string\"==typeof r?.xml?.name&&\"notagname\"!==r?.xml?.name)v[g].push(a);else{const t=Number.isInteger(e.minProperties)&&e.minProperties>0&&C<e.minProperties?e.minProperties-C:3;for(let e=1;e<=t;e++){if(hasExceededMaxProperties())return v;if(n){const t={};t[\"additionalProp\"+e]=a.notagname,v[g].push(t)}else v[\"additionalProp\"+e]=a;C++}}}return v}let x;if(void 0!==e.const)x=e.const;else if(e&&Array.isArray(e.enum))x=pick(normalizeArray(e.enum));else{const r=isJSONSchemaObject(e.contentSchema)?main_sampleFromSchemaGeneric(e.contentSchema,t,void 0,n):void 0;x=Us[m](e,{sample:r})}return n?(v[g]=(0,Nr.default)(l)?x:[{_attr:l},x],v):x},main_createXMLExample=(e,t,r)=>{const n=main_sampleFromSchemaGeneric(e,t,r,!0);if(n)return\"string\"==typeof n?n:Or()(n,{declaration:!0,indent:\"\\t\"})},main_sampleFromSchema=(e,t,r)=>main_sampleFromSchemaGeneric(e,t,r,!1),main_resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],Fs=utils_memoizeN(main_createXMLExample,main_resolver),zs=utils_memoizeN(main_sampleFromSchema,main_resolver);const Ks=new class OptionRegistry extends _s{#e={};data={...this.#e};get defaults(){return{...this.#e}}};var api_optionAPI=(e,t)=>(void 0!==t&&Ks.register(e,t),Ks.get(e));const Ws=[{when:/json/,shouldStringifyTypes:[\"string\"]}],Hs=[\"object\"];var fn_get_json_sample_schema=e=>(t,r,n,a)=>{const{fn:o}=e(),s=o.jsonSchema202012.memoizedSampleFromSchema(t,r,a),l=typeof s,i=Ws.reduce(((e,t)=>t.when.test(n)?[...e,...t.shouldStringifyTypes]:e),Hs);return(0,pt.default)(i,(e=>e===l))?JSON.stringify(s,null,2):s};var fn_get_yaml_sample_schema=e=>(t,r,n,a)=>{const{fn:o}=e(),s=o.jsonSchema202012.getJsonSampleSchema(t,r,n,a);let l;try{l=Jt.default.dump(Jt.default.load(s),{lineWidth:-1},{schema:Jt.JSON_SCHEMA}),\"\\n\"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),\"error: could not generate yaml example\"}return l.replace(/\\t/g,\"  \")};var fn_get_xml_sample_schema=e=>(t,r,n)=>{const{fn:a}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(t.$$ref){let e=t.$$ref.match(/\\S*\\/(\\S+)$/);t.xml.name=e[1]}}return a.jsonSchema202012.memoizedCreateXMLExample(t,r,n)};var fn_get_sample_schema=e=>(t,r=\"\",n={},a=void 0)=>{const{fn:o}=e();return\"function\"==typeof t?.toJS&&(t=t.toJS()),\"function\"==typeof a?.toJS&&(a=a.toJS()),/xml/.test(r)?o.jsonSchema202012.getXmlSampleSchema(t,n,a):/(yaml|yml)/.test(r)?o.jsonSchema202012.getYamlSampleSchema(t,n,r,a):o.jsonSchema202012.getJsonSampleSchema(t,n,r,a)};var json_schema_2020_12_samples=({getSystem:e})=>{const t=fn_get_json_sample_schema(e),r=fn_get_yaml_sample_schema(e),n=fn_get_xml_sample_schema(e),a=fn_get_sample_schema(e);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleOptionAPI:api_optionAPI,sampleEncoderAPI:js,sampleFormatAPI:bs,sampleMediaTypeAPI:Ls,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:zs,memoizedCreateXMLExample:Fs,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:n,getSampleSchema:a,mergeJsonSchema:Js,foldType}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}var inline_plugin=e=>()=>({fn:e.fn,components:e.components});var factorization_system=e=>{const t=Qe()({layout:{layout:e.layout,filter:e.filter},spec:{spec:\"\",url:e.url},requestSnippets:e.requestSnippets},e.initialState);if(e.initialState)for(const[r,n]of Object.entries(e.initialState))void 0===n&&delete t[r];return{system:{configs:e.configs},plugins:e.presets,state:t}};var query=()=>e=>{const t=e.queryConfigEnabled?(()=>{const e=new URLSearchParams(ct.location.search);return Object.fromEntries(e)})():{};return Object.entries(t).reduce(((e,[t,r])=>(\"config\"===t?e.configUrl=r:\"urls.primaryName\"===t?e[t]=r:e=(0,_n.default)(e,t,r),e)),{})};var sources_url=({url:e,system:t})=>async r=>{if(!e)return{};if(\"function\"!=typeof t.configsActions?.getConfigByUrl)return{};const n=(()=>{const e={};return e.promise=new Promise(((t,r)=>{e.resolve=t,e.reject=r})),e})();return t.configsActions.getConfigByUrl({url:e,loadRemoteConfig:!0,requestInterceptor:r.requestInterceptor,responseInterceptor:r.responseInterceptor},(e=>{n.resolve(e)})),n.promise};var runtime=()=>()=>{const e={};return globalThis.location&&(e.oauth2RedirectUrl=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0,globalThis.location.pathname.lastIndexOf(\"/\"))}/oauth2-redirect.html`),e};var Gs=Object.freeze({dom_id:null,domNode:null,spec:{},url:\"\",urls:null,configUrl:null,layout:\"BaseLayout\",docExpansion:\"list\",maxDisplayedTags:-1,filter:!1,validatorUrl:\"https://validator.swagger.io/validator\",oauth2RedirectUrl:void 0,persistAuthorization:!1,configs:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:e=>(e.curlOptions=[],e),responseInterceptor:e=>e,showMutatedRequest:!0,defaultModelRendering:\"example\",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:!1,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:\"cURL (bash)\",syntax:\"bash\"},curl_powershell:{title:\"cURL (PowerShell)\",syntax:\"powershell\"},curl_cmd:{title:\"cURL (CMD)\",syntax:\"bash\"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:\"agate\"},operationsSorter:null,tagsSorter:null,onComplete:null,modelPropertyMacro:null,parameterMacro:null,fileUploadMediaTypes:[\"application/octet-stream\",\"image/\",\"audio/\",\"video/\"],uncaughtExceptionHandler:null}),Xs=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return ve.default}}),Ys=function(e){var t={};return __webpack_require__.d(t,e),t}({default:function(){return be.default}});var type_casters_array=(e,t=[])=>Array.isArray(e)?e:t;var type_casters_boolean=(e,t=!1)=>!0===e||\"true\"===e||1===e||\"1\"===e||!1!==e&&\"false\"!==e&&0!==e&&\"0\"!==e&&t;var dom_node=e=>null===e||\"null\"===e?null:e;var type_casters_filter=e=>{const t=String(e);return type_casters_boolean(e,t)};var type_casters_function=(e,t)=>\"function\"==typeof e?e:t;var nullable_array=e=>Array.isArray(e)?e:null;var nullable_function=e=>\"function\"==typeof e?e:null;var nullable_string=e=>null===e||\"null\"===e?null:String(e);var type_casters_number=(e,t=-1)=>{const r=parseInt(e,10);return Number.isNaN(r)?t:r};var type_casters_object=(e,t={})=>(0,Cr.default)(e)?e:t;var sorter=e=>\"function\"==typeof e||\"string\"==typeof e?e:null;var type_casters_string=e=>String(e);var syntax_highlight=(e,t)=>(0,Cr.default)(e)?e:!1===e||\"false\"===e||0===e||\"0\"===e?{activated:!1}:t;var undefined_string=e=>void 0===e||\"undefined\"===e?void 0:String(e);var Qs={components:{typeCaster:type_casters_object},configs:{typeCaster:type_casters_object},configUrl:{typeCaster:nullable_string},deepLinking:{typeCaster:type_casters_boolean,defaultValue:Gs.deepLinking},defaultModelExpandDepth:{typeCaster:type_casters_number,defaultValue:Gs.defaultModelExpandDepth},defaultModelRendering:{typeCaster:type_casters_string},defaultModelsExpandDepth:{typeCaster:type_casters_number,defaultValue:Gs.defaultModelsExpandDepth},displayOperationId:{typeCaster:type_casters_boolean,defaultValue:Gs.displayOperationId},displayRequestDuration:{typeCaster:type_casters_boolean,defaultValue:Gs.displayRequestDuration},docExpansion:{typeCaster:type_casters_string},dom_id:{typeCaster:nullable_string},domNode:{typeCaster:dom_node},fileUploadMediaTypes:{typeCaster:type_casters_array,defaultValue:Gs.fileUploadMediaTypes},filter:{typeCaster:type_casters_filter},fn:{typeCaster:type_casters_object},initialState:{typeCaster:type_casters_object},layout:{typeCaster:type_casters_string},maxDisplayedTags:{typeCaster:type_casters_number,defaultValue:Gs.maxDisplayedTags},modelPropertyMacro:{typeCaster:nullable_function},oauth2RedirectUrl:{typeCaster:undefined_string},onComplete:{typeCaster:nullable_function},operationsSorter:{typeCaster:sorter},paramaterMacro:{typeCaster:nullable_function},persistAuthorization:{typeCaster:type_casters_boolean,defaultValue:Gs.persistAuthorization},plugins:{typeCaster:type_casters_array,defaultValue:Gs.plugins},presets:{typeCaster:type_casters_array,defaultValue:Gs.presets},requestInterceptor:{typeCaster:type_casters_function,defaultValue:Gs.requestInterceptor},requestSnippets:{typeCaster:type_casters_object,defaultValue:Gs.requestSnippets},requestSnippetsEnabled:{typeCaster:type_casters_boolean,defaultValue:Gs.requestSnippetsEnabled},responseInterceptor:{typeCaster:type_casters_function,defaultValue:Gs.responseInterceptor},showCommonExtensions:{typeCaster:type_casters_boolean,defaultValue:Gs.showCommonExtensions},showExtensions:{typeCaster:type_casters_boolean,defaultValue:Gs.showExtensions},showMutatedRequest:{typeCaster:type_casters_boolean,defaultValue:Gs.showMutatedRequest},spec:{typeCaster:type_casters_object,defaultValue:Gs.spec},supportedSubmitMethods:{typeCaster:type_casters_array,defaultValue:Gs.supportedSubmitMethods},syntaxHighlight:{typeCaster:syntax_highlight,defaultValue:Gs.syntaxHighlight},\"syntaxHighlight.activated\":{typeCaster:type_casters_boolean,defaultValue:Gs.syntaxHighlight.activated},\"syntaxHighlight.theme\":{typeCaster:type_casters_string},tagsSorter:{typeCaster:sorter},tryItOutEnabled:{typeCaster:type_casters_boolean,defaultValue:Gs.tryItOutEnabled},url:{typeCaster:type_casters_string},urls:{typeCaster:nullable_array},\"urls.primaryName\":{typeCaster:type_casters_string},validatorUrl:{typeCaster:nullable_string},withCredentials:{typeCaster:type_casters_boolean,defaultValue:Gs.withCredentials},uncaughtExceptionHandler:{typeCaster:nullable_function}};var type_cast=e=>Object.entries(Qs).reduce(((e,[t,{typeCaster:r,defaultValue:n}])=>{if((0,Xs.default)(e,t)){const a=r((0,Zt.default)(e,t),n);e=(0,Ys.default)(t,a,e)}return e}),{...e});var config_merge=(e,...t)=>{let r=Symbol.for(\"domNode\"),n=Symbol.for(\"primaryName\");const a=[];for(const e of t){const t={...e};Object.hasOwn(t,\"domNode\")&&(r=t.domNode,delete t.domNode),Object.hasOwn(t,\"urls.primaryName\")?(n=t[\"urls.primaryName\"],delete t[\"urls.primaryName\"]):Array.isArray(t.urls)&&Object.hasOwn(t.urls,\"primaryName\")&&(n=t.urls.primaryName,delete t.urls.primaryName),a.push(t)}const o=Qe()(e,...a);return r!==Symbol.for(\"domNode\")&&(o.domNode=r),n!==Symbol.for(\"primaryName\")&&Array.isArray(o.urls)&&(o.urls.primaryName=n),type_cast(o)};function SwaggerUI(e){const t=query()(e),r=runtime()(),n=SwaggerUI.config.merge({},SwaggerUI.config.defaults,r,e,t),a=factorization_system(n),o=inline_plugin(n),s=new Store(a);s.register([n.plugins,o]);const l=s.getSystem(),persistConfigs=e=>{s.setConfigs(e),l.configsActions.loaded()},updateSpec=e=>{!t.url&&\"object\"==typeof e.spec&&Object.keys(e.spec).length>0?(l.specActions.updateUrl(\"\"),l.specActions.updateLoadingStatus(\"success\"),l.specActions.updateSpec(JSON.stringify(e.spec))):\"function\"==typeof l.specActions.download&&e.url&&!e.urls&&(l.specActions.updateUrl(e.url),l.specActions.download(e.url))},render=e=>{if(e.domNode)l.render(e.domNode,\"App\");else if(e.dom_id){const t=document.querySelector(e.dom_id);l.render(t,\"App\")}else null===e.dom_id||null===e.domNode||console.error(\"Skipped rendering: no `dom_id` or `domNode` was specified\")};return n.configUrl?((async()=>{const{configUrl:e}=n,r=await sources_url({url:e,system:l})(n),a=SwaggerUI.config.merge({},n,r,t);persistConfigs(a),null!==r&&updateSpec(a),render(a)})(),l):(persistConfigs(n),updateSpec(n),render(n),l)}SwaggerUI.System=Store,SwaggerUI.config={defaults:Gs,merge:config_merge,typeCast:type_cast,typeCastMappings:Qs},SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5:json_schema_5,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,ViewLegacy:view_legacy,DownloadUrl:downloadUrlPlugin,SyntaxHighlighting:syntax_highlighting,Versions:versions,SafeRender:safe_render};var Zs=SwaggerUI,el=xe.A;export{el as default};\n//# sourceMappingURL=swagger-ui-es-bundle-core.js.map"
  },
  {
    "path": "web/public/swagger/swagger-ui-es-bundle.js",
    "content": "/*! For license information please see swagger-ui-es-bundle.js.LICENSE.txt */\n(()=>{var s={251:(s,o)=>{o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<<x)-1,j=C>>1,L=-7,B=i?u-1:0,$=i?-1:1,V=s[o+B];for(B+=$,_=V&(1<<-L)-1,V>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(V?-1:1);w+=Math.pow(2,a),_-=j}return(V?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<<j)-1,B=L>>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,V=a?0:_-1,U=a?1:-1,z=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+V]=255&x,V+=U,x/=256,u-=8);for(w=w<<u|x,j+=u;j>0;s[i+V]=255&w,V+=U,w/=256,j-=8);s[i+V-U]|=128*z}},462:(s,o,i)=>{\"use strict\";var a=i(40975);s.exports=a},659:(s,o,i)=>{var a=i(51873),u=Object.prototype,_=u.hasOwnProperty,w=u.toString,x=a?a.toStringTag:void 0;s.exports=function getRawTag(s){var o=_.call(s,x),i=s[x];try{s[x]=void 0;var a=!0}catch(s){}var u=w.call(s);return a&&(o?s[x]=i:delete s[x]),u}},694:(s,o,i)=>{\"use strict\";i(91599);var a=i(37257);i(12560),s.exports=a},953:(s,o,i)=>{\"use strict\";s.exports=i(53375)},1733:s=>{var o=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;s.exports=function asciiWords(s){return s.match(o)||[]}},1882:(s,o,i)=>{var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return\"[object Function]\"==o||\"[object GeneratorFunction]\"==o||\"[object AsyncFunction]\"==o||\"[object Proxy]\"==o}},1907:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype,_=u.call,w=a&&u.bind.bind(_,_);s.exports=a?w:function(s){return function(){return _.apply(s,arguments)}}},2205:function(s,o,i){var a;a=void 0!==i.g?i.g:this,s.exports=function(s){if(s.CSS&&s.CSS.escape)return s.CSS.escape;var cssEscape=function(s){if(0==arguments.length)throw new TypeError(\"`CSS.escape` requires an argument.\");for(var o,i=String(s),a=i.length,u=-1,_=\"\",w=i.charCodeAt(0);++u<a;)0!=(o=i.charCodeAt(u))?_+=o>=1&&o<=31||127==o||0==u&&o>=48&&o<=57||1==u&&o>=48&&o<=57&&45==w?\"\\\\\"+o.toString(16)+\" \":0==u&&1==a&&45==o||!(o>=128||45==o||95==o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?\"\\\\\"+i.charAt(u):i.charAt(u):_+=\"�\";return _};return s.CSS||(s.CSS={}),s.CSS.escape=cssEscape,cssEscape}(a)},2209:(s,o,i)=>{\"use strict\";var a,u=i(9404),_=function productionTypeChecker(){invariant(!1,\"ImmutablePropTypes type checking code is stripped in production.\")};_.isRequired=_;var w=function getProductionTypeChecker(){return _};function getPropType(s){var o=typeof s;return Array.isArray(s)?\"array\":s instanceof RegExp?\"object\":s instanceof u.Iterable?\"Immutable.\"+s.toSource().split(\" \")[0]:o}function createChainableTypeChecker(s){function checkType(o,i,a,u,_,w){for(var x=arguments.length,C=Array(x>6?x-6:0),j=6;j<x;j++)C[j-6]=arguments[j];return w=w||a,u=u||\"<<anonymous>>\",null!=i[a]?s.apply(void 0,[i,a,u,_,w].concat(C)):o?new Error(\"Required \"+_+\" `\"+w+\"` was not specified in `\"+u+\"`.\"):void 0}var o=checkType.bind(null,!1);return o.isRequired=checkType.bind(null,!0),o}function createIterableSubclassTypeChecker(s,o){return function createImmutableTypeChecker(s,o){return createChainableTypeChecker((function validate(i,a,u,_,w){var x=i[a];if(!o(x)){var C=getPropType(x);return new Error(\"Invalid \"+_+\" `\"+w+\"` of type `\"+C+\"` supplied to `\"+u+\"`, expected `\"+s+\"`.\")}return null}))}(\"Iterable.\"+s,(function(s){return u.Iterable.isIterable(s)&&o(s)}))}(a={listOf:w,mapOf:w,orderedMapOf:w,setOf:w,orderedSetOf:w,stackOf:w,iterableOf:w,recordOf:w,shape:w,contains:w,mapContains:w,orderedMapContains:w,list:_,map:_,orderedMap:_,set:_,orderedSet:_,stack:_,seq:_,record:_,iterable:_}).iterable.indexed=createIterableSubclassTypeChecker(\"Indexed\",u.Iterable.isIndexed),a.iterable.keyed=createIterableSubclassTypeChecker(\"Keyed\",u.Iterable.isKeyed),s.exports=a},2404:(s,o,i)=>{var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},2523:s=>{s.exports=function baseFindIndex(s,o,i,a){for(var u=s.length,_=i+(a?1:-1);a?_--:++_<u;)if(o(s[_],_,s))return _;return-1}},2532:(s,o,i)=>{\"use strict\";var a=i(45951),u=Object.defineProperty;s.exports=function(s,o){try{u(a,s,{value:o,configurable:!0,writable:!0})}catch(i){a[s]=o}return o}},2694:(s,o,i)=>{\"use strict\";var a=i(6925);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,s.exports=function(){function shim(s,o,i,u,_,w){if(w!==a){var x=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw x.name=\"Invariant Violation\",x}}function getShim(){return shim}shim.isRequired=shim;var s={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return s.PropTypes=s,s}},2874:s=>{s.exports={}},2875:(s,o,i)=>{\"use strict\";var a=i(23045),u=i(80376);s.exports=Object.keys||function keys(s){return a(s,u)}},2955:(s,o,i)=>{\"use strict\";var a,u=i(65606);function _defineProperty(s,o,i){return(o=function _toPropertyKey(s){var o=function _toPrimitive(s,o){if(\"object\"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof o?o:String(o)}(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var _=i(86238),w=Symbol(\"lastResolve\"),x=Symbol(\"lastReject\"),C=Symbol(\"error\"),j=Symbol(\"ended\"),L=Symbol(\"lastPromise\"),B=Symbol(\"handlePromise\"),$=Symbol(\"stream\");function createIterResult(s,o){return{value:s,done:o}}function readAndResolve(s){var o=s[w];if(null!==o){var i=s[$].read();null!==i&&(s[L]=null,s[w]=null,s[x]=null,o(createIterResult(i,!1)))}}function onReadable(s){u.nextTick(readAndResolve,s)}var V=Object.getPrototypeOf((function(){})),U=Object.setPrototypeOf((_defineProperty(a={get stream(){return this[$]},next:function next(){var s=this,o=this[C];if(null!==o)return Promise.reject(o);if(this[j])return Promise.resolve(createIterResult(void 0,!0));if(this[$].destroyed)return new Promise((function(o,i){u.nextTick((function(){s[C]?i(s[C]):o(createIterResult(void 0,!0))}))}));var i,a=this[L];if(a)i=new Promise(function wrapForNext(s,o){return function(i,a){s.then((function(){o[j]?i(createIterResult(void 0,!0)):o[B](i,a)}),a)}}(a,this));else{var _=this[$].read();if(null!==_)return Promise.resolve(createIterResult(_,!1));i=new Promise(this[B])}return this[L]=i,i}},Symbol.asyncIterator,(function(){return this})),_defineProperty(a,\"return\",(function _return(){var s=this;return new Promise((function(o,i){s[$].destroy(null,(function(s){s?i(s):o(createIterResult(void 0,!0))}))}))})),a),V);s.exports=function createReadableStreamAsyncIterator(s){var o,i=Object.create(U,(_defineProperty(o={},$,{value:s,writable:!0}),_defineProperty(o,w,{value:null,writable:!0}),_defineProperty(o,x,{value:null,writable:!0}),_defineProperty(o,C,{value:null,writable:!0}),_defineProperty(o,j,{value:s._readableState.endEmitted,writable:!0}),_defineProperty(o,B,{value:function value(s,o){var a=i[$].read();a?(i[L]=null,i[w]=null,i[x]=null,s(createIterResult(a,!1))):(i[w]=s,i[x]=o)},writable:!0}),o));return i[L]=null,_(s,(function(s){if(s&&\"ERR_STREAM_PREMATURE_CLOSE\"!==s.code){var o=i[x];return null!==o&&(i[L]=null,i[w]=null,i[x]=null,o(s)),void(i[C]=s)}var a=i[w];null!==a&&(i[L]=null,i[w]=null,i[x]=null,a(createIterResult(void 0,!0))),i[j]=!0})),s.on(\"readable\",onReadable.bind(null,i)),i}},3110:(s,o,i)=>{const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register(\"null\",j.NullElement).register(\"string\",j.StringElement).register(\"number\",j.NumberElement).register(\"boolean\",j.BooleanElement).register(\"array\",j.ArrayElement).register(\"object\",j.ObjectElement).register(\"member\",j.MemberElement).register(\"ref\",j.RefElement).register(\"link\",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i<this.elementDetection.length;i+=1){const a=this.elementDetection[i][0],u=this.elementDetection[i][1];if(a(s)){o=new u(s);break}}return o}getElementClass(s){const o=this.elementMap[s];return void 0===o?this.Element:o}fromRefract(s){return this.serialiser.deserialise(s)}toRefract(s){return this.serialiser.serialise(s)}get elements(){return void 0===this._elements&&(this._elements={Element:this.Element},Object.keys(this.elementMap).forEach((s=>{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},3121:(s,o,i)=>{\"use strict\";var a=i(65482),u=Math.min;s.exports=function(s){var o=a(s);return o>0?u(o,9007199254740991):0}},3209:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(36306),w=\"__lodash_placeholder__\",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var V=o[3];if(V){var U=s[3];s[3]=U?a(U,V,o[4]):V,s[4]=U?_(s[3],w):o[4]}return(V=o[5])&&(U=s[5],s[5]=U?u(U,V,o[6]):V,s[6]=U?_(s[5],w):o[6]),(V=o[7])&&(s[7]=V),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},3650:(s,o,i)=>{var a=i(74335)(Object.keys,Object);s.exports=a},3656:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},4509:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},4640:s=>{\"use strict\";var o=String;s.exports=function(s){try{return o(s)}catch(s){return\"Object\"}}},4664:(s,o,i)=>{var a=i(79770),u=i(63345),_=Object.prototype.propertyIsEnumerable,w=Object.getOwnPropertySymbols,x=w?function(s){return null==s?[]:(s=Object(s),a(w(s),(function(o){return _.call(s,o)})))}:u;s.exports=x},4901:(s,o,i)=>{var a=i(72552),u=i(30294),_=i(40346),w={};w[\"[object Float32Array]\"]=w[\"[object Float64Array]\"]=w[\"[object Int8Array]\"]=w[\"[object Int16Array]\"]=w[\"[object Int32Array]\"]=w[\"[object Uint8Array]\"]=w[\"[object Uint8ClampedArray]\"]=w[\"[object Uint16Array]\"]=w[\"[object Uint32Array]\"]=!0,w[\"[object Arguments]\"]=w[\"[object Array]\"]=w[\"[object ArrayBuffer]\"]=w[\"[object Boolean]\"]=w[\"[object DataView]\"]=w[\"[object Date]\"]=w[\"[object Error]\"]=w[\"[object Function]\"]=w[\"[object Map]\"]=w[\"[object Number]\"]=w[\"[object Object]\"]=w[\"[object RegExp]\"]=w[\"[object Set]\"]=w[\"[object String]\"]=w[\"[object WeakMap]\"]=!1,s.exports=function baseIsTypedArray(s){return _(s)&&u(s.length)&&!!w[a(s)]}},4993:(s,o,i)=>{\"use strict\";var a=i(16946),u=i(74239);s.exports=function(s){return a(u(s))}},5187:s=>{s.exports=function isNull(s){return null===s}},5419:s=>{s.exports=function(s,o,i,a){var u=new Blob(void 0!==a?[a,s]:[s],{type:i||\"application/octet-stream\"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(u,o);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(u):window.webkitURL.createObjectURL(u),w=document.createElement(\"a\");w.style.display=\"none\",w.href=_,w.setAttribute(\"download\",o),void 0===w.download&&w.setAttribute(\"target\",\"_blank\"),document.body.appendChild(w),w.click(),setTimeout((function(){document.body.removeChild(w),window.URL.revokeObjectURL(_)}),200)}}},5556:(s,o,i)=>{s.exports=i(2694)()},5861:(s,o,i)=>{var a=i(55580),u=i(68223),_=i(32804),w=i(76545),x=i(28303),C=i(72552),j=i(47473),L=\"[object Map]\",B=\"[object Promise]\",$=\"[object Set]\",V=\"[object WeakMap]\",U=\"[object DataView]\",z=j(a),Y=j(u),Z=j(_),ee=j(w),ie=j(x),ae=C;(a&&ae(new a(new ArrayBuffer(1)))!=U||u&&ae(new u)!=L||_&&ae(_.resolve())!=B||w&&ae(new w)!=$||x&&ae(new x)!=V)&&(ae=function(s){var o=C(s),i=\"[object Object]\"==o?s.constructor:void 0,a=i?j(i):\"\";if(a)switch(a){case z:return U;case Y:return L;case Z:return B;case ee:return $;case ie:return V}return o}),s.exports=ae},6048:s=>{s.exports=function negate(s){if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},6205:s=>{s.exports={ROOT:0,GROUP:1,POSITION:2,SET:3,RANGE:4,REPETITION:5,REFERENCE:6,CHAR:7}},6233:(s,o,i)=>{const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element=\"array\"}primitive(){return\"array\"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a=\"object\"===this.primitive()?this.first.value:this.first);for(let o=i;o<this.length;o+=1){const i=this.content[o];a=\"object\"===this.primitive()?this.refract(s(a,i.value,i.key,i,this)):this.refract(s(a,i,o,this))}return a}forEach(s,o){this.content.forEach(((i,a)=>{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}\"fantasy-land/empty\"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}\"fantasy-land/concat\"(s){return this.concat(s)}\"fantasy-land/map\"(s){return new this.constructor(this.map(s))}\"fantasy-land/chain\"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}\"fantasy-land/filter\"(s){return new this.constructor(this.content.filter(s))}\"fantasy-land/reduce\"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement[\"fantasy-land/empty\"]=ArrayElement.empty,\"undefined\"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},6499:(s,o,i)=>{\"use strict\";var a=i(1907),u=0,_=Math.random(),w=a(1..toString);s.exports=function(s){return\"Symbol(\"+(void 0===s?\"\":s)+\")_\"+w(++u+_,36)}},6925:s=>{\"use strict\";s.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},7057:(s,o,i)=>{\"use strict\";var a=i(11470).charAt,u=i(90160),_=i(64932),w=i(60183),x=i(59550),C=\"String Iterator\",j=_.set,L=_.getterFor(C);w(String,\"String\",(function(s){j(this,{type:C,string:u(s),index:0})}),(function next(){var s,o=L(this),i=o.string,u=o.index;return u>=i.length?x(void 0,!0):(s=a(i,u),o.index+=s.length,x(s,!1))}))},7309:(s,o,i)=>{var a=i(62006)(i(24713));s.exports=a},7376:s=>{\"use strict\";s.exports=!0},7463:(s,o,i)=>{\"use strict\";var a=i(98828),u=i(62250),_=/#|\\.prototype\\./,isForced=function(s,o){var i=x[w(s)];return i===j||i!==C&&(u(o)?a(o):!!o)},w=isForced.normalize=function(s){return String(s).replace(_,\".\").toLowerCase()},x=isForced.data={},C=isForced.NATIVE=\"N\",j=isForced.POLYFILL=\"P\";s.exports=isForced},7666:(s,o,i)=>{var a=i(84851),u=i(953);function _extends(){var o;return s.exports=_extends=a?u(o=a).call(o):function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},s.exports.__esModule=!0,s.exports.default=s.exports,_extends.apply(null,arguments)}s.exports=_extends,s.exports.__esModule=!0,s.exports.default=s.exports},8048:(s,o,i)=>{const a=i(6205);o.wordBoundary=()=>({type:a.POSITION,value:\"b\"}),o.nonWordBoundary=()=>({type:a.POSITION,value:\"B\"}),o.begin=()=>({type:a.POSITION,value:\"^\"}),o.end=()=>({type:a.POSITION,value:\"$\"})},8068:s=>{\"use strict\";var o=(()=>{var s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable,__defNormalProp=(o,i,a)=>i in o?s(o,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[i]=a,__spreadValues=(s,o)=>{for(var i in o||(o={}))u.call(o,i)&&__defNormalProp(s,i,o[i]);if(a)for(var i of a(o))_.call(o,i)&&__defNormalProp(s,i,o[i]);return s},__publicField=(s,o,i)=>__defNormalProp(s,\"symbol\"!=typeof o?o+\"\":o,i),w={};((o,i)=>{for(var a in i)s(o,a,{get:i[a],enumerable:!0})})(w,{DEFAULT_OPTIONS:()=>C,DEFAULT_UUID_LENGTH:()=>x,default:()=>B});var x=6,C={dictionary:\"alphanum\",shuffle:!0,debug:!1,length:x,counter:0},j=class _ShortUniqueId{constructor(s={}){__publicField(this,\"counter\"),__publicField(this,\"debug\"),__publicField(this,\"dict\"),__publicField(this,\"version\"),__publicField(this,\"dictIndex\",0),__publicField(this,\"dictRange\",[]),__publicField(this,\"lowerBound\",0),__publicField(this,\"upperBound\",0),__publicField(this,\"dictLength\",0),__publicField(this,\"uuidLength\"),__publicField(this,\"_digit_first_ascii\",48),__publicField(this,\"_digit_last_ascii\",58),__publicField(this,\"_alpha_lower_first_ascii\",97),__publicField(this,\"_alpha_lower_last_ascii\",123),__publicField(this,\"_hex_last_ascii\",103),__publicField(this,\"_alpha_upper_first_ascii\",65),__publicField(this,\"_alpha_upper_last_ascii\",91),__publicField(this,\"_number_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii]}),__publicField(this,\"_alpha_dict_ranges\",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alpha_lower_dict_ranges\",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,\"_alpha_upper_dict_ranges\",{upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alphanum_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_alphanum_lower_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,\"_alphanum_upper_dict_ranges\",{digits:[this._digit_first_ascii,this._digit_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,\"_hex_dict_ranges\",{decDigits:[this._digit_first_ascii,this._digit_last_ascii],alphaDigits:[this._alpha_lower_first_ascii,this._hex_last_ascii]}),__publicField(this,\"_dict_ranges\",{_number_dict_ranges:this._number_dict_ranges,_alpha_dict_ranges:this._alpha_dict_ranges,_alpha_lower_dict_ranges:this._alpha_lower_dict_ranges,_alpha_upper_dict_ranges:this._alpha_upper_dict_ranges,_alphanum_dict_ranges:this._alphanum_dict_ranges,_alphanum_lower_dict_ranges:this._alphanum_lower_dict_ranges,_alphanum_upper_dict_ranges:this._alphanum_upper_dict_ranges,_hex_dict_ranges:this._hex_dict_ranges}),__publicField(this,\"log\",((...s)=>{const o=[...s];o[0]=\"[short-unique-id] \".concat(s[0]),!0!==this.debug||\"undefined\"==typeof console||null===console||console.log(...o)})),__publicField(this,\"_normalizeDictionary\",((s,o)=>{let i;if(s&&Array.isArray(s)&&s.length>1)i=s;else{i=[],this.dictIndex=0;const o=\"_\".concat(s,\"_dict_ranges\"),a=this._dict_ranges[o];let u=0;for(const[,s]of Object.entries(a)){const[o,i]=s;u+=Math.abs(i-o)}i=new Array(u);let _=0;for(const[,s]of Object.entries(a)){this.dictRange=s,this.lowerBound=this.dictRange[0],this.upperBound=this.dictRange[1];const o=this.lowerBound<=this.upperBound,a=this.lowerBound,u=this.upperBound;if(o)for(let s=a;s<u;s++)i[_++]=String.fromCharCode(s),this.dictIndex=s;else for(let s=a;s>u;s--)i[_++]=String.fromCharCode(s),this.dictIndex=s}i.length=_}if(o){for(let s=i.length-1;s>0;s--){const o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}}return i})),__publicField(this,\"setDictionary\",((s,o)=>{this.dict=this._normalizeDictionary(s,o),this.dictLength=this.dict.length,this.setCounter(0)})),__publicField(this,\"seq\",(()=>this.sequentialUUID())),__publicField(this,\"sequentialUUID\",(()=>{const s=this.dictLength,o=this.dict;let i=this.counter;const a=[];do{const u=i%s;i=Math.trunc(i/s),a.push(o[u])}while(0!==i);const u=a.join(\"\");return this.counter+=1,u})),__publicField(this,\"rnd\",((s=this.uuidLength||x)=>this.randomUUID(s))),__publicField(this,\"randomUUID\",((s=this.uuidLength||x)=>{if(null==s||s<1)throw new Error(\"Invalid UUID Length Provided\");const o=new Array(s),i=this.dictLength,a=this.dict;for(let u=0;u<s;u++){const s=Math.floor(Math.random()*i);o[u]=a[s]}return o.join(\"\")})),__publicField(this,\"fmt\",((s,o)=>this.formattedUUID(s,o))),__publicField(this,\"formattedUUID\",((s,o)=>{const i={$r:this.randomUUID,$s:this.sequentialUUID,$t:this.stamp};return s.replace(/\\$[rs]\\d{0,}|\\$t0|\\$t[1-9]\\d{1,}/g,(s=>{const a=s.slice(0,2),u=Number.parseInt(s.slice(2),10);return\"$s\"===a?i[a]().padStart(u,\"0\"):\"$t\"===a&&o?i[a](u,o):i[a](u)}))})),__publicField(this,\"availableUUIDs\",((s=this.uuidLength)=>Number.parseFloat(([...new Set(this.dict)].length**s).toFixed(0)))),__publicField(this,\"_collisionCache\",new Map),__publicField(this,\"approxMaxBeforeCollision\",((s=this.availableUUIDs(this.uuidLength))=>{const o=s,i=this._collisionCache.get(o);if(void 0!==i)return i;const a=Number.parseFloat(Math.sqrt(Math.PI/2*s).toFixed(20));return this._collisionCache.set(o,a),a})),__publicField(this,\"collisionProbability\",((s=this.availableUUIDs(this.uuidLength),o=this.uuidLength)=>Number.parseFloat((this.approxMaxBeforeCollision(s)/this.availableUUIDs(o)).toFixed(20)))),__publicField(this,\"uniqueness\",((s=this.availableUUIDs(this.uuidLength))=>{const o=Number.parseFloat((1-this.approxMaxBeforeCollision(s)/s).toFixed(20));return o>1?1:o<0?0:o})),__publicField(this,\"getVersion\",(()=>this.version)),__publicField(this,\"stamp\",((s,o)=>{const i=Math.floor(+(o||new Date)/1e3).toString(16);if(\"number\"==typeof s&&0===s)return i;if(\"number\"!=typeof s||s<10)throw new Error([\"Param finalLength must be a number greater than or equal to 10,\",\"or 0 if you want the raw hexadecimal timestamp\"].join(\"\\n\"));const a=s-9,u=Math.round(Math.random()*(a>15?15:a)),_=this.randomUUID(a);return\"\".concat(_.substring(0,u)).concat(i).concat(_.substring(u)).concat(u.toString(16))})),__publicField(this,\"parseStamp\",((s,o)=>{if(o&&!/t0|t[1-9]\\d{1,}/.test(o))throw new Error(\"Cannot extract date from a formated UUID with no timestamp in the format\");const i=o?o.replace(/\\$[rs]\\d{0,}|\\$t0|\\$t[1-9]\\d{1,}/g,(s=>{const o={$r:s=>[...Array(s)].map((()=>\"r\")).join(\"\"),$s:s=>[...Array(s)].map((()=>\"s\")).join(\"\"),$t:s=>[...Array(s)].map((()=>\"t\")).join(\"\")},i=s.slice(0,2),a=Number.parseInt(s.slice(2),10);return o[i](a)})).replace(/^(.*?)(t{8,})(.*)$/g,((o,i,a)=>s.substring(i.length,i.length+a.length))):s;if(8===i.length)return new Date(1e3*Number.parseInt(i,16));if(i.length<10)throw new Error(\"Stamp length invalid\");const a=Number.parseInt(i.substring(i.length-1),16);return new Date(1e3*Number.parseInt(i.substring(a,a+8),16))})),__publicField(this,\"setCounter\",(s=>{this.counter=s})),__publicField(this,\"validate\",((s,o)=>{const i=o?this._normalizeDictionary(o):this.dict;return s.split(\"\").every((s=>i.includes(s)))}));const o=__spreadValues(__spreadValues({},C),s);this.counter=0,this.debug=!1,this.dict=[],this.version=\"5.3.2\";const{dictionary:i,shuffle:a,length:u,counter:_}=o;this.uuidLength=u,this.setDictionary(i,a),this.setCounter(_),this.debug=o.debug,this.log(this.dict),this.log(\"Generator instantiated with Dictionary Size \".concat(this.dictLength,\" and counter set to \").concat(this.counter)),this.log=this.log.bind(this),this.setDictionary=this.setDictionary.bind(this),this.setCounter=this.setCounter.bind(this),this.seq=this.seq.bind(this),this.sequentialUUID=this.sequentialUUID.bind(this),this.rnd=this.rnd.bind(this),this.randomUUID=this.randomUUID.bind(this),this.fmt=this.fmt.bind(this),this.formattedUUID=this.formattedUUID.bind(this),this.availableUUIDs=this.availableUUIDs.bind(this),this.approxMaxBeforeCollision=this.approxMaxBeforeCollision.bind(this),this.collisionProbability=this.collisionProbability.bind(this),this.uniqueness=this.uniqueness.bind(this),this.getVersion=this.getVersion.bind(this),this.stamp=this.stamp.bind(this),this.parseStamp=this.parseStamp.bind(this)}};__publicField(j,\"default\",j);var L,B=j;return L=w,((a,_,w,x)=>{if(_&&\"object\"==typeof _||\"function\"==typeof _)for(let C of i(_))u.call(a,C)||C===w||s(a,C,{get:()=>_[C],enumerable:!(x=o(_,C))||x.enumerable});return a})(s({},\"__esModule\",{value:!0}),L)})();s.exports=o.default,\"undefined\"!=typeof window&&(o=o.default)},9325:(s,o,i)=>{var a=i(34840),u=\"object\"==typeof self&&self&&self.Object===Object&&self,_=a||u||Function(\"return this\")();s.exports=_},9404:function(s){s.exports=function(){\"use strict\";var s=Array.prototype.slice;function createClass(s,o){o&&(s.prototype=Object.create(o.prototype)),s.prototype.constructor=s}function Iterable(s){return isIterable(s)?s:Seq(s)}function KeyedIterable(s){return isKeyed(s)?s:KeyedSeq(s)}function IndexedIterable(s){return isIndexed(s)?s:IndexedSeq(s)}function SetIterable(s){return isIterable(s)&&!isAssociative(s)?s:SetSeq(s)}function isIterable(s){return!(!s||!s[o])}function isKeyed(s){return!(!s||!s[i])}function isIndexed(s){return!(!s||!s[a])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}function isOrdered(s){return!(!s||!s[u])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var o=\"@@__IMMUTABLE_ITERABLE__@@\",i=\"@@__IMMUTABLE_KEYED__@@\",a=\"@@__IMMUTABLE_INDEXED__@@\",u=\"@@__IMMUTABLE_ORDERED__@@\",_=\"delete\",w=5,x=1<<w,C=x-1,j={},L={value:!1},B={value:!1};function MakeRef(s){return s.value=!1,s}function SetRef(s){s&&(s.value=!0)}function OwnerID(){}function arrCopy(s,o){o=o||0;for(var i=Math.max(0,s.length-o),a=new Array(i),u=0;u<i;u++)a[u]=s[u+o];return a}function ensureSize(s){return void 0===s.size&&(s.size=s.__iterate(returnTrue)),s.size}function wrapIndex(s,o){if(\"number\"!=typeof o){var i=o>>>0;if(\"\"+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:s<0?Math.max(0,o+s):void 0===o?s:Math.min(o,s)}var $=0,V=1,U=2,z=\"function\"==typeof Symbol&&Symbol.iterator,Y=\"@@iterator\",Z=z||Y;function Iterator(s){this.next=s}function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!getIteratorFn(s)}function isIterator(s){return s&&\"function\"==typeof s.next}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(z&&s[z]||s[Y]);if(\"function\"==typeof o)return o}function isArrayLike(s){return s&&\"number\"==typeof s.length}function Seq(s){return null==s?emptySequence():isIterable(s)?s.toSeq():seqFromValue(s)}function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isIterable(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():keyedSeqFromValue(s)}function IndexedSeq(s){return null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():indexedSeqFromValue(s)}function SetSeq(s){return(null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s:indexedSeqFromValue(s)).toSetSeq()}Iterator.prototype.toString=function(){return\"[Iterator]\"},Iterator.KEYS=$,Iterator.VALUES=V,Iterator.ENTRIES=U,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[Z]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString(\"Seq {\",\"}\")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!0)},Seq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString(\"Seq [\",\"]\")},IndexedSeq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!1)},IndexedSeq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var ee,ie,ae,ce=\"@@__IMMUTABLE_SEQ__@@\";function ArraySeq(s){this._array=s,this.size=s.length}function ObjectSeq(s){var o=Object.keys(s);this._object=s,this._keys=o,this.size=o.length}function IterableSeq(s){this._iterable=s,this.size=s.length||s.size}function IteratorSeq(s){this._iterator=s,this._iteratorCache=[]}function isSeq(s){return!(!s||!s[ce])}function emptySequence(){return ee||(ee=new ArraySeq([]))}function keyedSeqFromValue(s){var o=Array.isArray(s)?new ArraySeq(s).fromEntrySeq():isIterator(s)?new IteratorSeq(s).fromEntrySeq():hasIterator(s)?new IterableSeq(s).fromEntrySeq():\"object\"==typeof s?new ObjectSeq(s):void 0;if(!o)throw new TypeError(\"Expected Array or iterable object of [k, v] entries, or keyed object: \"+s);return o}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(!o)throw new TypeError(\"Expected Array or iterable object of values: \"+s);return o}function seqFromValue(s){var o=maybeIndexedSeqFromValue(s)||\"object\"==typeof s&&new ObjectSeq(s);if(!o)throw new TypeError(\"Expected Array or iterable object of values, or keyed object: \"+s);return o}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ArraySeq(s):isIterator(s)?new IteratorSeq(s):hasIterator(s)?new IterableSeq(s):void 0}function seqIterate(s,o,i,a){var u=s._cache;if(u){for(var _=u.length-1,w=0;w<=_;w++){var x=u[i?_-w:w];if(!1===o(x[1],a?x[0]:w,s))return w+1}return w}return s.__iterateUncached(o,i)}function seqIterator(s,o,i,a){var u=s._cache;if(u){var _=u.length-1,w=0;return new Iterator((function(){var s=u[i?_-w:w];return w++>_?iteratorDone():iteratorValue(o,a?s[0]:w-1,s[1])}))}return s.__iteratorUncached(o,i)}function fromJS(s,o){return o?fromJSWith(o,s,\"\",{\"\":s}):fromJSDefault(s)}function fromJSWith(s,o,i,a){return Array.isArray(o)?s.call(a,i,IndexedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):isPlainObj(o)?s.call(a,i,KeyedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):o}function fromJSDefault(s){return Array.isArray(s)?IndexedSeq(s).map(fromJSDefault).toList():isPlainObj(s)?KeyedSeq(s).map(fromJSDefault).toMap():s}function isPlainObj(s){return s&&(s.constructor===Object||void 0===s.constructor)}function is(s,o){if(s===o||s!=s&&o!=o)return!0;if(!s||!o)return!1;if(\"function\"==typeof s.valueOf&&\"function\"==typeof o.valueOf){if((s=s.valueOf())===(o=o.valueOf())||s!=s&&o!=o)return!0;if(!s||!o)return!1}return!(\"function\"!=typeof s.equals||\"function\"!=typeof o.equals||!s.equals(o))}function deepEqual(s,o){if(s===o)return!0;if(!isIterable(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)\"function\"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,j)):!is(s.get(a,j),o))return w=!1,!1}));return w&&s.size===x}function Repeat(s,o){if(!(this instanceof Repeat))return new Repeat(s,o);if(this._value=s,this.size=void 0===o?1/0:Math.max(0,o),0===this.size){if(ie)return ie;ie=this}}function invariant(s,o){if(!s)throw new Error(o)}function Range(s,o,i){if(!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,\"Cannot step a Range by 0\"),s=s||0,void 0===o&&(o=1/0),i=void 0===i?1:Math.abs(i),o<s&&(i=-i),this._start=s,this._end=o,this._step=i,this.size=Math.max(0,Math.ceil((o-s)/i-1)+1),0===this.size){if(ae)return ae;ae=this}}function Collection(){throw TypeError(\"Abstract\")}function KeyedCollection(){}function IndexedCollection(){}function SetCollection(){}Seq.prototype[ce]=!0,createClass(ArraySeq,IndexedSeq),ArraySeq.prototype.get=function(s,o){return this.has(s)?this._array[wrapIndex(this,s)]:o},ArraySeq.prototype.__iterate=function(s,o){for(var i=this._array,a=i.length-1,u=0;u<=a;u++)if(!1===s(i[o?a-u:u],u,this))return u+1;return u},ArraySeq.prototype.__iterator=function(s,o){var i=this._array,a=i.length-1,u=0;return new Iterator((function(){return u>a?iteratorDone():iteratorValue(s,u,i[o?a-u++:u++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function(s){return this._object.hasOwnProperty(s)},ObjectSeq.prototype.__iterate=function(s,o){for(var i=this._object,a=this._keys,u=a.length-1,_=0;_<=u;_++){var w=a[o?u-_:_];if(!1===s(i[w],w,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(s,o){var i=this._object,a=this._keys,u=a.length-1,_=0;return new Iterator((function(){var w=a[o?u-_:_];return _++>u?iteratorDone():iteratorValue(s,w,i[w])}))},ObjectSeq.prototype[u]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._iterable),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},IterableSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._iterable);if(!isIterator(i))return new Iterator(iteratorDone);var a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);for(var i,a=this._iterator,u=this._iteratorCache,_=0;_<u.length;)if(!1===s(u[_],_++,this))return _;for(;!(i=a.next()).done;){var w=i.value;if(u[_]=w,!1===s(w,_++,this))break}return _},IteratorSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=this._iterator,a=this._iteratorCache,u=0;return new Iterator((function(){if(u>=a.length){var o=i.next();if(o.done)return o;a[u]=o.value}return iteratorValue(s,u,a[u++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?\"Repeat []\":\"Repeat [ \"+this._value+\" \"+this.size+\" times ]\"},Repeat.prototype.get=function(s,o){return this.has(s)?this._value:o},Repeat.prototype.includes=function(s){return is(this._value,s)},Repeat.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:new Repeat(this._value,resolveEnd(o,i)-resolveBegin(s,i))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(s){return is(this._value,s)?0:-1},Repeat.prototype.lastIndexOf=function(s){return is(this._value,s)?this.size:-1},Repeat.prototype.__iterate=function(s,o){for(var i=0;i<this.size;i++)if(!1===s(this._value,i,this))return i+1;return i},Repeat.prototype.__iterator=function(s,o){var i=this,a=0;return new Iterator((function(){return a<i.size?iteratorValue(s,a++,i._value):iteratorDone()}))},Repeat.prototype.equals=function(s){return s instanceof Repeat?is(this._value,s._value):deepEqual(s)},createClass(Range,IndexedSeq),Range.prototype.toString=function(){return 0===this.size?\"Range []\":\"Range [ \"+this._start+\"...\"+this._end+(1!==this._step?\" by \"+this._step:\"\")+\" ]\"},Range.prototype.get=function(s,o){return this.has(s)?this._start+wrapIndex(this,s)*this._step:o},Range.prototype.includes=function(s){var o=(s-this._start)/this._step;return o>=0&&o<this.size&&o===Math.floor(o)},Range.prototype.slice=function(s,o){return wholeSlice(s,o,this.size)?this:(s=resolveBegin(s,this.size),(o=resolveEnd(o,this.size))<=s?new Range(0,0):new Range(this.get(s,this._end),this.get(o,this._end),this._step))},Range.prototype.indexOf=function(s){var o=s-this._start;if(o%this._step==0){var i=o/this._step;if(i>=0&&i<this.size)return i}return-1},Range.prototype.lastIndexOf=function(s){return this.indexOf(s)},Range.prototype.__iterate=function(s,o){for(var i=this.size-1,a=this._step,u=o?this._start+i*a:this._start,_=0;_<=i;_++){if(!1===s(u,_,this))return _+1;u+=o?-a:a}return _},Range.prototype.__iterator=function(s,o){var i=this.size-1,a=this._step,u=o?this._start+i*a:this._start,_=0;return new Iterator((function(){var w=u;return u+=o?-a:a,_>i?iteratorDone():iteratorValue(s,_++,w)}))},Range.prototype.equals=function(s){return s instanceof Range?this._start===s._start&&this._end===s._end&&this._step===s._step:deepEqual(this,s)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var le=\"function\"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}function hash(s){if(!1===s||null==s)return 0;if(\"function\"==typeof s.valueOf&&(!1===(s=s.valueOf())||null==s))return 0;if(!0===s)return 1;var o=typeof s;if(\"number\"===o){if(s!=s||s===1/0)return 0;var i=0|s;for(i!==s&&(i^=4294967295*s);s>4294967295;)i^=s/=4294967295;return smi(i)}if(\"string\"===o)return s.length>Se?cachedHashString(s):hashString(s);if(\"function\"==typeof s.hashCode)return s.hashCode();if(\"object\"===o)return hashJSObj(s);if(\"function\"==typeof s.toString)return hashString(s.toString());throw new Error(\"Value type \"+o+\" cannot be hashed.\")}function cachedHashString(s){var o=Pe[s];return void 0===o&&(o=hashString(s),xe===we&&(xe=0,Pe={}),xe++,Pe[s]=o),o}function hashString(s){for(var o=0,i=0;i<s.length;i++)o=31*o+s.charCodeAt(i)|0;return smi(o)}function hashJSObj(s){var o;if(ye&&void 0!==(o=fe.get(s)))return o;if(void 0!==(o=s[_e]))return o;if(!de){if(void 0!==(o=s.propertyIsEnumerable&&s.propertyIsEnumerable[_e]))return o;if(void 0!==(o=getIENodeHash(s)))return o}if(o=++be,1073741824&be&&(be=0),ye)fe.set(s,o);else{if(void 0!==pe&&!1===pe(s))throw new Error(\"Non-extensible objects are not allowed as keys.\");if(de)Object.defineProperty(s,_e,{enumerable:!1,configurable:!1,writable:!1,value:o});else if(void 0!==s.propertyIsEnumerable&&s.propertyIsEnumerable===s.constructor.prototype.propertyIsEnumerable)s.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},s.propertyIsEnumerable[_e]=o;else{if(void 0===s.nodeType)throw new Error(\"Unable to set a non-enumerable property on object.\");s[_e]=o}}return o}var pe=Object.isExtensible,de=function(){try{return Object.defineProperty({},\"@\",{}),!0}catch(s){return!1}}();function getIENodeHash(s){if(s&&s.nodeType>0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}var fe,ye=\"function\"==typeof WeakMap;ye&&(fe=new WeakMap);var be=0,_e=\"__immutablehash__\";\"function\"==typeof Symbol&&(_e=Symbol(_e));var Se=16,we=255,xe=0,Pe={};function assertNotInfinite(s){invariant(s!==1/0,\"Cannot perform this action with an infinite size.\")}function Map(s){return null==s?emptyMap():isMap(s)&&!isOrdered(s)?s:emptyMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isMap(s){return!(!s||!s[Re])}createClass(Map,KeyedCollection),Map.of=function(){var o=s.call(arguments,0);return emptyMap().withMutations((function(s){for(var i=0;i<o.length;i+=2){if(i+1>=o.length)throw new Error(\"Missing value for key: \"+o[i]);s.set(o[i],o[i+1])}}))},Map.prototype.toString=function(){return this.__toString(\"Map {\",\"}\")},Map.prototype.get=function(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function(s,o){return updateMap(this,s,o)},Map.prototype.setIn=function(s,o){return this.updateIn(s,j,(function(){return o}))},Map.prototype.remove=function(s){return updateMap(this,s,j)},Map.prototype.deleteIn=function(s){return this.updateIn(s,(function(){return j}))},Map.prototype.update=function(s,o,i){return 1===arguments.length?s(this):this.updateIn([s],o,i)},Map.prototype.updateIn=function(s,o,i){i||(i=o,o=void 0);var a=updateInDeepMap(this,forceIterator(s),o,i);return a===j?void 0:a},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(o){return mergeIntoMapWith(this,o,s.call(arguments,1))},Map.prototype.mergeIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return\"function\"==typeof s.merge?s.merge.apply(s,i):i[i.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(o),i)},Map.prototype.mergeDeepIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return\"function\"==typeof s.mergeDeep?s.mergeDeep.apply(s,i):i[i.length-1]}))},Map.prototype.sort=function(s){return OrderedMap(sortFactory(this,s))},Map.prototype.sortBy=function(s,o){return OrderedMap(sortFactory(this,o,s))},Map.prototype.withMutations=function(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(s,o){return new MapIterator(this,s,o)},Map.prototype.__iterate=function(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Map.isMap=isMap;var Te,Re=\"@@__IMMUTABLE_MAP__@@\",$e=Map.prototype;function ArrayMapNode(s,o){this.ownerID=s,this.entries=o}function BitmapIndexedNode(s,o,i){this.ownerID=s,this.bitmap=o,this.nodes=i}function HashArrayMapNode(s,o,i){this.ownerID=s,this.count=o,this.nodes=i}function HashCollisionNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entries=i}function ValueNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entry=i}function MapIterator(s,o,i){this._type=o,this._reverse=i,this._stack=s._root&&mapIteratorFrame(s._root)}function mapIteratorValue(s,o){return iteratorValue(s,o[0],o[1])}function mapIteratorFrame(s,o){return{node:s,index:0,__prev:o}}function makeMap(s,o,i,a){var u=Object.create($e);return u.size=s,u._root=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyMap(){return Te||(Te=makeMap(0))}function updateMap(s,o,i){var a,u;if(s._root){var _=MakeRef(L),w=MakeRef(B);if(a=updateNode(s._root,s.__ownerID,0,void 0,o,i,_,w),!w.value)return s;u=s.size+(_.value?i===j?-1:1:0)}else{if(i===j)return s;u=1,a=new ArrayMapNode(s.__ownerID,[[o,i]])}return s.__ownerID?(s.size=u,s._root=a,s.__hash=void 0,s.__altered=!0,s):a?makeMap(u,a):emptyMap()}function updateNode(s,o,i,a,u,_,w,x){return s?s.update(o,i,a,u,_,w,x):_===j?s:(SetRef(x),SetRef(w),new ValueNode(o,a,[u,_]))}function isLeafNode(s){return s.constructor===ValueNode||s.constructor===HashCollisionNode}function mergeIntoNode(s,o,i,a,u){if(s.keyHash===a)return new HashCollisionNode(o,a,[s.entry,u]);var _,x=(0===i?s.keyHash:s.keyHash>>>i)&C,j=(0===i?a:a>>>i)&C;return new BitmapIndexedNode(o,1<<x|1<<j,x===j?[mergeIntoNode(s,o,i+w,a,u)]:(_=new ValueNode(o,a,u),x<j?[s,_]:[_,s]))}function createNodes(s,o,i,a){s||(s=new OwnerID);for(var u=new ValueNode(s,hash(i),[i,a]),_=0;_<o.length;_++){var w=o[_];u=u.update(s,0,void 0,w[0],w[1])}return u}function packNodes(s,o,i,a){for(var u=0,_=0,w=new Array(i),x=0,C=1,j=o.length;x<j;x++,C<<=1){var L=o[x];void 0!==L&&x!==a&&(u|=C,w[_++]=L)}return new BitmapIndexedNode(s,u,w)}function expandNodes(s,o,i,a,u){for(var _=0,w=new Array(x),C=0;0!==i;C++,i>>>=1)w[C]=1&i?o[_++]:void 0;return w[a]=u,new HashArrayMapNode(s,_+1,w)}function mergeIntoMapWith(s,o,i){for(var a=[],u=0;u<i.length;u++){var _=i[u],w=KeyedIterable(_);isIterable(_)||(w=w.map((function(s){return fromJS(s)}))),a.push(w)}return mergeIntoCollectionWith(s,o,a)}function deepMerger(s,o,i){return s&&s.mergeDeep&&isIterable(o)?s.mergeDeep(o):is(s,o)?s:o}function deepMergerWith(s){return function(o,i,a){if(o&&o.mergeDeepWith&&isIterable(i))return o.mergeDeepWith(s,i);var u=s(o,i,a);return is(o,u)?o:u}}function mergeIntoCollectionWith(s,o,i){return 0===(i=i.filter((function(s){return 0!==s.size}))).length?s:0!==s.size||s.__ownerID||1!==i.length?s.withMutations((function(s){for(var a=o?function(i,a){s.update(a,j,(function(s){return s===j?i:o(s,i,a)}))}:function(o,i){s.set(i,o)},u=0;u<i.length;u++)i[u].forEach(a)})):s.constructor(i[0])}function updateInDeepMap(s,o,i,a){var u=s===j,_=o.next();if(_.done){var w=u?i:s,x=a(w);return x===w?s:x}invariant(u||s&&s.set,\"invalid keyPath\");var C=_.value,L=u?j:s.get(C,j),B=updateInDeepMap(L,o,i,a);return B===L?s:B===j?s.remove(C):(u?emptyMap():s).set(C,B)}function popCount(s){return s=(s=(858993459&(s-=s>>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setIn(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}function spliceIn(s,o,i,a){var u=s.length+1;if(a&&o+1===u)return s[o]=i,s;for(var _=new Array(u),w=0,x=0;x<u;x++)x===o?(_[x]=i,w=-1):_[x]=s[x+w];return _}function spliceOut(s,o,i){var a=s.length-1;if(i&&o===a)return s.pop(),s;for(var u=new Array(a),_=0,w=0;w<a;w++)w===o&&(_=1),u[w]=s[w+_];return u}$e[Re]=!0,$e[_]=$e.remove,$e.removeIn=$e.deleteIn,ArrayMapNode.prototype.get=function(s,o,i,a){for(var u=this.entries,_=0,w=u.length;_<w;_++)if(is(i,u[_][0]))return u[_][1];return a},ArrayMapNode.prototype.update=function(s,o,i,a,u,_,w){for(var x=u===j,C=this.entries,L=0,B=C.length;L<B&&!is(a,C[L][0]);L++);var $=L<B;if($?C[L][1]===u:x)return this;if(SetRef(w),(x||!$)&&SetRef(_),!x||1!==C.length){if(!$&&!x&&C.length>=qe)return createNodes(s,C,a,u);var V=s&&s===this.ownerID,U=V?C:arrCopy(C);return $?x?L===B-1?U.pop():U[L]=U.pop():U[L]=[a,u]:U.push([a,u]),V?(this.entries=U,this):new ArrayMapNode(s,U)}},BitmapIndexedNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=1<<((0===s?o:o>>>s)&C),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+w,o,i,a):a},BitmapIndexedNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=1<<L,$=this.bitmap,V=!!($&B);if(!V&&u===j)return this;var U=popCount($&B-1),z=this.nodes,Y=V?z[U]:void 0,Z=updateNode(Y,s,o+w,i,a,u,_,x);if(Z===Y)return this;if(!V&&Z&&z.length>=ze)return expandNodes(s,z,$,L,Z);if(V&&!Z&&2===z.length&&isLeafNode(z[1^U]))return z[1^U];if(V&&Z&&1===z.length&&isLeafNode(Z))return Z;var ee=s&&s===this.ownerID,ie=V?Z?$:$^B:$|B,ae=V?Z?setIn(z,U,Z,ee):spliceOut(z,U,ee):spliceIn(z,U,Z,ee);return ee?(this.bitmap=ie,this.nodes=ae,this):new BitmapIndexedNode(s,ie,ae)},HashArrayMapNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=(0===s?o:o>>>s)&C,_=this.nodes[u];return _?_.get(s+w,o,i,a):a},HashArrayMapNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=u===j,$=this.nodes,V=$[L];if(B&&!V)return this;var U=updateNode(V,s,o+w,i,a,u,_,x);if(U===V)return this;var z=this.count;if(V){if(!U&&--z<We)return packNodes(s,$,z,L)}else z++;var Y=s&&s===this.ownerID,Z=setIn($,L,U,Y);return Y?(this.count=z,this.nodes=Z,this):new HashArrayMapNode(s,z,Z)},HashCollisionNode.prototype.get=function(s,o,i,a){for(var u=this.entries,_=0,w=u.length;_<w;_++)if(is(i,u[_][0]))return u[_][1];return a},HashCollisionNode.prototype.update=function(s,o,i,a,u,_,w){void 0===i&&(i=hash(a));var x=u===j;if(i!==this.keyHash)return x?this:(SetRef(w),SetRef(_),mergeIntoNode(this,s,o,i,[a,u]));for(var C=this.entries,L=0,B=C.length;L<B&&!is(a,C[L][0]);L++);var $=L<B;if($?C[L][1]===u:x)return this;if(SetRef(w),(x||!$)&&SetRef(_),x&&2===B)return new ValueNode(s,this.keyHash,C[1^L]);var V=s&&s===this.ownerID,U=V?C:arrCopy(C);return $?x?L===B-1?U.pop():U[L]=U.pop():U[L]=[a,u]:U.push([a,u]),V?(this.entries=U,this):new HashCollisionNode(s,this.keyHash,U)},ValueNode.prototype.get=function(s,o,i,a){return is(i,this.entry[0])?this.entry[1]:a},ValueNode.prototype.update=function(s,o,i,a,u,_,w){var x=u===j,C=is(a,this.entry[0]);return(C?u===this.entry[1]:x)?this:(SetRef(w),x?void SetRef(_):C?s&&s===this.ownerID?(this.entry[1]=u,this):new ValueNode(s,this.keyHash,[a,u]):(SetRef(_),mergeIntoNode(this,s,o,hash(a),[a,u])))},ArrayMapNode.prototype.iterate=HashCollisionNode.prototype.iterate=function(s,o){for(var i=this.entries,a=0,u=i.length-1;a<=u;a++)if(!1===s(i[o?u-a:a]))return!1},BitmapIndexedNode.prototype.iterate=HashArrayMapNode.prototype.iterate=function(s,o){for(var i=this.nodes,a=0,u=i.length-1;a<=u;a++){var _=i[o?u-a:a];if(_&&!1===_.iterate(s,o))return!1}},ValueNode.prototype.iterate=function(s,o){return s(this.entry)},createClass(MapIterator,Iterator),MapIterator.prototype.next=function(){for(var s=this._type,o=this._stack;o;){var i,a=o.node,u=o.index++;if(a.entry){if(0===u)return mapIteratorValue(s,a.entry)}else if(a.entries){if(u<=(i=a.entries.length-1))return mapIteratorValue(s,a.entries[this._reverse?i-u:u])}else if(u<=(i=a.nodes.length-1)){var _=a.nodes[this._reverse?i-u:u];if(_){if(_.entry)return mapIteratorValue(s,_.entry);o=this._stack=mapIteratorFrame(_,o)}continue}o=this._stack=this._stack.__prev}return iteratorDone()};var qe=x/4,ze=x/2,We=x/4;function List(s){var o=emptyList();if(null==s)return o;if(isList(s))return s;var i=IndexedIterable(s),a=i.size;return 0===a?o:(assertNotInfinite(a),a>0&&a<x?makeList(0,a,w,null,new VNode(i.toArray())):o.withMutations((function(s){s.setSize(a),i.forEach((function(o,i){return s.set(i,o)}))})))}function isList(s){return!(!s||!s[He])}createClass(List,IndexedCollection),List.of=function(){return this(arguments)},List.prototype.toString=function(){return this.__toString(\"List [\",\"]\")},List.prototype.get=function(s,o){if((s=wrapIndex(this,s))>=0&&s<this.size){var i=listNodeFor(this,s+=this._origin);return i&&i.array[s&C]}return o},List.prototype.set=function(s,o){return updateList(this,s,o)},List.prototype.remove=function(s){return this.has(s)?0===s?this.shift():s===this.size-1?this.pop():this.splice(s,1):this},List.prototype.insert=function(s,o){return this.splice(s,0,o)},List.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=w,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):emptyList()},List.prototype.push=function(){var s=arguments,o=this.size;return this.withMutations((function(i){setListBounds(i,0,o+s.length);for(var a=0;a<s.length;a++)i.set(o+a,s[a])}))},List.prototype.pop=function(){return setListBounds(this,0,-1)},List.prototype.unshift=function(){var s=arguments;return this.withMutations((function(o){setListBounds(o,-s.length);for(var i=0;i<s.length;i++)o.set(i,s[i])}))},List.prototype.shift=function(){return setListBounds(this,1)},List.prototype.merge=function(){return mergeIntoListWith(this,void 0,arguments)},List.prototype.mergeWith=function(o){return mergeIntoListWith(this,o,s.call(arguments,1))},List.prototype.mergeDeep=function(){return mergeIntoListWith(this,deepMerger,arguments)},List.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoListWith(this,deepMergerWith(o),i)},List.prototype.setSize=function(s){return setListBounds(this,0,s)},List.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:setListBounds(this,resolveBegin(s,i),resolveEnd(o,i))},List.prototype.__iterator=function(s,o){var i=0,a=iterateList(this,o);return new Iterator((function(){var o=a();return o===et?iteratorDone():iteratorValue(s,i++,o)}))},List.prototype.__iterate=function(s,o){for(var i,a=0,u=iterateList(this,o);(i=u())!==et&&!1!==s(i,a++,this););return a},List.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeList(this._origin,this._capacity,this._level,this._root,this._tail,s,this.__hash):(this.__ownerID=s,this)},List.isList=isList;var He=\"@@__IMMUTABLE_LIST__@@\",Ye=List.prototype;function VNode(s,o){this.array=s,this.ownerID=o}Ye[He]=!0,Ye[_]=Ye.remove,Ye.setIn=$e.setIn,Ye.deleteIn=Ye.removeIn=$e.removeIn,Ye.update=$e.update,Ye.updateIn=$e.updateIn,Ye.mergeIn=$e.mergeIn,Ye.mergeDeepIn=$e.mergeDeepIn,Ye.withMutations=$e.withMutations,Ye.asMutable=$e.asMutable,Ye.asImmutable=$e.asImmutable,Ye.wasAltered=$e.wasAltered,VNode.prototype.removeBefore=function(s,o,i){if(i===o?1<<o:0===this.array.length)return this;var a=i>>>o&C;if(a>=this.array.length)return new VNode([],s);var u,_=0===a;if(o>0){var x=this.array[a];if((u=x&&x.removeBefore(s,o-w,i))===x&&_)return this}if(_&&!u)return this;var j=editableVNode(this,s);if(!_)for(var L=0;L<a;L++)j.array[L]=void 0;return u&&(j.array[a]=u),j},VNode.prototype.removeAfter=function(s,o,i){if(i===(o?1<<o:0)||0===this.array.length)return this;var a,u=i-1>>>o&C;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-w,i))===_&&u===this.array.length-1)return this}var x=editableVNode(this,s);return x.array.splice(u+1),a&&(x.array[u]=a),x};var Xe,Qe,et={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,o,i){return 0===o?iterateLeaf(s,i):iterateNode(s,o,i)}function iterateLeaf(s,w){var C=w===u?_&&_.array:s&&s.array,j=w>i?0:i-w,L=a-w;return L>x&&(L=x),function(){if(j===L)return et;var s=o?--L:j++;return C&&C[s]}}function iterateNode(s,u,_){var C,j=s&&s.array,L=_>i?0:i-_>>u,B=1+(a-_>>u);return B>x&&(B=x),function(){for(;;){if(C){var s=C();if(s!==et)return s;C=null}if(L===B)return et;var i=o?--B:L++;C=iterateNodeOrLeaf(j&&j[i],u-w,_+(i<<u))}}}}function makeList(s,o,i,a,u,_,w){var x=Object.create(Ye);return x.size=o-s,x._origin=s,x._capacity=o,x._level=i,x._root=a,x._tail=u,x.__ownerID=_,x.__hash=w,x.__altered=!1,x}function emptyList(){return Xe||(Xe=makeList(0,0,w))}function updateList(s,o,i){if((o=wrapIndex(s,o))!=o)return s;if(o>=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_=MakeRef(B);return o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_),_.value?s.__ownerID?(s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s):makeList(s._origin,s._capacity,s._level,u,a):s}function updateVNode(s,o,i,a,u,_){var x,j=a>>>i&C,L=s&&j<s.array.length;if(!L&&void 0===u)return s;if(i>0){var B=s&&s.array[j],$=updateVNode(B,o,i-w,a,u,_);return $===B?s:((x=editableVNode(s,o)).array[j]=$,x)}return L&&s.array[j]===u?s:(SetRef(_),x=editableVNode(s,o),void 0===u&&j===x.array.length-1?x.array.pop():x.array[j]=u,x)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new VNode(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<<s._level+w){for(var i=s._root,a=s._level;i&&a>0;)i=i.array[o>>>a&C],a-=w;return i}}function setListBounds(s,o,i){void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,x=u+o,j=void 0===i?_:i<0?_+i:u+i;if(x===u&&j===_)return s;if(x>=j)return s.clear();for(var L=s._level,B=s._root,$=0;x+$<0;)B=new VNode(B&&B.array.length?[void 0,B]:[],a),$+=1<<(L+=w);$&&(x+=$,u+=$,j+=$,_+=$);for(var V=getTailOffset(_),U=getTailOffset(j);U>=1<<L+w;)B=new VNode(B&&B.array.length?[B]:[],a),L+=w;var z=s._tail,Y=U<V?listNodeFor(s,j-1):U>V?new VNode([],a):z;if(z&&U>V&&x<_&&z.array.length){for(var Z=B=editableVNode(B,a),ee=L;ee>w;ee-=w){var ie=V>>>ee&C;Z=Z.array[ie]=editableVNode(Z.array[ie],a)}Z.array[V>>>w&C]=z}if(j<_&&(Y=Y&&Y.removeAfter(a,0,j)),x>=U)x-=U,j-=U,L=w,B=null,Y=Y&&Y.removeBefore(a,0,x);else if(x>u||U<V){for($=0;B;){var ae=x>>>L&C;if(ae!==U>>>L&C)break;ae&&($+=(1<<L)*ae),L-=w,B=B.array[ae]}B&&x>u&&(B=B.removeBefore(a,L,x-$)),B&&U<V&&(B=B.removeAfter(a,L,U-$)),$&&(x-=$,j-=$)}return s.__ownerID?(s.size=j-x,s._origin=x,s._capacity=j,s._level=L,s._root=B,s._tail=Y,s.__hash=void 0,s.__altered=!0,s):makeList(x,j,L,B,Y)}function mergeIntoListWith(s,o,i){for(var a=[],u=0,_=0;_<i.length;_++){var w=i[_],x=IndexedIterable(w);x.size>u&&(u=x.size),isIterable(w)||(x=x.map((function(s){return fromJS(s)}))),a.push(x)}return u>s.size&&(s=s.setSize(u)),mergeIntoCollectionWith(s,o,a)}function getTailOffset(s){return s<x?0:s-1>>>w<<w}function OrderedMap(s){return null==s?emptyOrderedMap():isOrderedMap(s)?s:emptyOrderedMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isOrderedMap(s){return isMap(s)&&isOrdered(s)}function makeOrderedMap(s,o,i,a){var u=Object.create(OrderedMap.prototype);return u.size=s?s.size:0,u._map=s,u._list=o,u.__ownerID=i,u.__hash=a,u}function emptyOrderedMap(){return Qe||(Qe=makeOrderedMap(emptyMap(),emptyList()))}function updateOrderedMap(s,o,i){var a,u,_=s._map,w=s._list,C=_.get(o),L=void 0!==C;if(i===j){if(!L)return s;w.size>=x&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&C!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=C===w.size-1?w.pop():w.set(C,void 0))}else if(L){if(i===w.get(C)[1])return s;a=_,u=w.set(C,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s):makeOrderedMap(a,u)}function ToKeyedSequence(s,o){this._iter=s,this._useKeys=o,this.size=s.size}function ToIndexedSequence(s){this._iter=s,this.size=s.size}function ToSetSequence(s){this._iter=s,this.size=s.size}function FromEntriesSequence(s){this._iter=s,this.size=s.size}function flipFactory(s){var o=makeSequence(s);return o._iter=s,o.size=s.size,o.flip=function(){return s},o.reverse=function(){var o=s.reverse.apply(this);return o.flip=function(){return s.reverse()},o},o.has=function(o){return s.includes(o)},o.includes=function(o){return s.has(o)},o.cacheResult=cacheResultThrough,o.__iterateUncached=function(o,i){var a=this;return s.__iterate((function(s,i){return!1!==o(i,s,a)}),i)},o.__iteratorUncached=function(o,i){if(o===U){var a=s.__iterator(o,i);return new Iterator((function(){var s=a.next();if(!s.done){var o=s.value[0];s.value[0]=s.value[1],s.value[1]=o}return s}))}return s.__iterator(o===V?$:V,i)},o}function mapFactory(s,o,i){var a=makeSequence(s);return a.size=s.size,a.has=function(o){return s.has(o)},a.get=function(a,u){var _=s.get(a,j);return _===j?u:o.call(i,_,a,s)},a.__iterateUncached=function(a,u){var _=this;return s.__iterate((function(s,u,w){return!1!==a(o.call(i,s,u,w),u,_)}),u)},a.__iteratorUncached=function(a,u){var _=s.__iterator(U,u);return new Iterator((function(){var u=_.next();if(u.done)return u;var w=u.value,x=w[0];return iteratorValue(a,x,o.call(i,w[1],x,s),u)}))},a}function reverseFactory(s,o){var i=makeSequence(s);return i._iter=s,i.size=s.size,i.reverse=function(){return s},s.flip&&(i.flip=function(){var o=flipFactory(s);return o.reverse=function(){return s.flip()},o}),i.get=function(i,a){return s.get(o?i:-1-i,a)},i.has=function(i){return s.has(o?i:-1-i)},i.includes=function(o){return s.includes(o)},i.cacheResult=cacheResultThrough,i.__iterate=function(o,i){var a=this;return s.__iterate((function(s,i){return o(s,i,a)}),!i)},i.__iterator=function(o,i){return s.__iterator(o,!i)},i}function filterFactory(s,o,i,a){var u=makeSequence(s);return a&&(u.has=function(a){var u=s.get(a,j);return u!==j&&!!o.call(i,u,a,s)},u.get=function(a,u){var _=s.get(a,j);return _!==j&&o.call(i,_,a,s)?_:u}),u.__iterateUncached=function(u,_){var w=this,x=0;return s.__iterate((function(s,_,C){if(o.call(i,s,_,C))return x++,u(s,a?_:x-1,w)}),_),x},u.__iteratorUncached=function(u,_){var w=s.__iterator(U,_),x=0;return new Iterator((function(){for(;;){var _=w.next();if(_.done)return _;var C=_.value,j=C[0],L=C[1];if(o.call(i,L,j,s))return iteratorValue(u,a?j:x++,L,_)}}))},u}function countByFactory(s,o,i){var a=Map().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?OrderedMap():Map()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=iterableClass(s);return u.map((function(o){return reify(s,_(o))}))}function sliceFactory(s,o,i,a){var u=s.size;if(void 0!==o&&(o|=0),void 0!==i&&(i===1/0?i=u:i|=0),wholeSlice(o,i,u))return s;var _=resolveBegin(o,u),w=resolveEnd(i,u);if(_!=_||w!=w)return sliceFactory(s.toSeq().cacheResult(),o,i,a);var x,C=w-_;C==C&&(x=C<0?0:C);var j=makeSequence(s);return j.size=0===x?x:s.size&&x||void 0,!a&&isSeq(s)&&x>=0&&(j.get=function(o,i){return(o=wrapIndex(this,o))>=0&&o<x?s.get(o+_,i):i}),j.__iterateUncached=function(o,i){var u=this;if(0===x)return 0;if(i)return this.cacheResult().__iterate(o,i);var w=0,C=!0,j=0;return s.__iterate((function(s,i){if(!C||!(C=w++<_))return j++,!1!==o(s,a?i:j-1,u)&&j!==x})),j},j.__iteratorUncached=function(o,i){if(0!==x&&i)return this.cacheResult().__iterator(o,i);var u=0!==x&&s.__iterator(o,i),w=0,C=0;return new Iterator((function(){for(;w++<_;)u.next();if(++C>x)return iteratorDone();var s=u.next();return a||o===V?s:iteratorValue(o,C-1,o===$?void 0:s.value[1],s)}))},j}function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(U,u),x=!0;return new Iterator((function(){if(!x)return iteratorDone();var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?a===U?s:iteratorValue(a,C,j,s):(x=!1,iteratorDone())}))},a}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(U,_),C=!0,j=0;return new Iterator((function(){var s,_,L;do{if((s=x.next()).done)return a||u===V?s:iteratorValue(u,j++,u===$?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return u===U?s:iteratorValue(u,_,L,s)}))},u}function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isIterable(s)?i&&(s=KeyedIterable(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}var _=new ArraySeq(a);return i?_=_.toKeyedSeq():isIndexed(s)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=a.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),_}function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=0,w=!1;function flatDeep(s,x){var C=this;s.__iterate((function(s,u){return(!o||x<o)&&isIterable(s)?flatDeep(s,x+1):!1===a(s,i?u:_++,C)&&(w=!0),!w}),u)}return flatDeep(s,0),_},a.__iteratorUncached=function(a,u){var _=s.__iterator(a,u),w=[],x=0;return new Iterator((function(){for(;_;){var s=_.next();if(!1===s.done){var C=s.value;if(a===U&&(C=C[1]),o&&!(w.length<o)||!isIterable(C))return i?s:iteratorValue(a,x++,C,s);w.push(_),_=C.__iterator(a,u)}else _=w.pop()}return iteratorDone()}))},a}function flatMapFactory(s,o,i){var a=iterableClass(s);return s.toSeq().map((function(u,_){return a(o.call(i,u,_,s))})).flatten(!0)}function interposeFactory(s,o){var i=makeSequence(s);return i.size=s.size&&2*s.size-1,i.__iterateUncached=function(i,a){var u=this,_=0;return s.__iterate((function(s,a){return(!_||!1!==i(o,_++,u))&&!1!==i(s,_++,u)}),a),_},i.__iteratorUncached=function(i,a){var u,_=s.__iterator(V,a),w=0;return new Iterator((function(){return(!u||w%2)&&(u=_.next()).done?u:w%2?iteratorValue(i,w++,o):iteratorValue(i,w++,u.value,u)}))},i}function sortFactory(s,o,i){o||(o=defaultComparator);var a=isKeyed(s),u=0,_=s.toSeq().map((function(o,a){return[a,o,u++,i?i(o,a,s):o]})).toArray();return _.sort((function(s,i){return o(s[3],i[3])||s[2]-i[2]})).forEach(a?function(s,o){_[o].length=2}:function(s,o){_[o]=s[1]}),a?KeyedSeq(_):isIndexed(s)?IndexedSeq(_):SetSeq(_)}function maxFactory(s,o,i){if(o||(o=defaultComparator),i){var a=s.toSeq().map((function(o,a){return[o,i(o,a,s)]})).reduce((function(s,i){return maxCompare(o,s[1],i[1])?i:s}));return a&&a[0]}return s.reduce((function(s,i){return maxCompare(o,s,i)?i:s}))}function maxCompare(s,o,i){var a=s(i,o);return 0===a&&i!==o&&(null==i||i!=i)||a>0}function zipWithFactory(s,o,i){var a=makeSequence(s);return a.size=new ArraySeq(i).map((function(s){return s.size})).min(),a.__iterate=function(s,o){for(var i,a=this.__iterator(V,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},a.__iteratorUncached=function(s,a){var u=i.map((function(s){return s=Iterable(s),getIterator(a?s.reverse():s)})),_=0,w=!1;return new Iterator((function(){var i;return w||(i=u.map((function(s){return s.next()})),w=i.some((function(s){return s.done}))),w?iteratorDone():iteratorValue(s,_++,o.apply(null,i.map((function(s){return s.value}))))}))},a}function reify(s,o){return isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError(\"Expected [K, V] tuple: \"+s)}function resolveSize(s){return assertNotInfinite(s.size),ensureSize(s)}function iterableClass(s){return isKeyed(s)?KeyedIterable:isIndexed(s)?IndexedIterable:SetIterable}function makeSequence(s){return Object.create((isKeyed(s)?KeyedSeq:isIndexed(s)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(s,o){return s>o?1:s<o?-1:0}function forceIterator(s){var o=getIterator(s);if(!o){if(!isArrayLike(s))throw new TypeError(\"Expected iterable or array-like: \"+s);o=getIterator(Iterable(s))}return o}function Record(s,o){var i,a=function Record(_){if(_ instanceof a)return _;if(!(this instanceof a))return new a(_);if(!i){i=!0;var w=Object.keys(s);setProps(u,w),u.size=w.length,u._name=o,u._keys=w,u._defaultValues=s}this._map=Map(_)},u=a.prototype=Object.create(tt);return u.constructor=a,a}createClass(OrderedMap,Map),OrderedMap.of=function(){return this(arguments)},OrderedMap.prototype.toString=function(){return this.__toString(\"OrderedMap {\",\"}\")},OrderedMap.prototype.get=function(s,o){var i=this._map.get(s);return void 0!==i?this._list.get(i)[1]:o},OrderedMap.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):emptyOrderedMap()},OrderedMap.prototype.set=function(s,o){return updateOrderedMap(this,s,o)},OrderedMap.prototype.remove=function(s){return updateOrderedMap(this,s,j)},OrderedMap.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},OrderedMap.prototype.__iterate=function(s,o){var i=this;return this._list.__iterate((function(o){return o&&s(o[1],o[0],i)}),o)},OrderedMap.prototype.__iterator=function(s,o){return this._list.fromEntrySeq().__iterator(s,o)},OrderedMap.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map.__ensureOwner(s),i=this._list.__ensureOwner(s);return s?makeOrderedMap(o,i,s,this.__hash):(this.__ownerID=s,this._map=o,this._list=i,this)},OrderedMap.isOrderedMap=isOrderedMap,OrderedMap.prototype[u]=!0,OrderedMap.prototype[_]=OrderedMap.prototype.remove,createClass(ToKeyedSequence,KeyedSeq),ToKeyedSequence.prototype.get=function(s,o){return this._iter.get(s,o)},ToKeyedSequence.prototype.has=function(s){return this._iter.has(s)},ToKeyedSequence.prototype.valueSeq=function(){return this._iter.valueSeq()},ToKeyedSequence.prototype.reverse=function(){var s=this,o=reverseFactory(this,!0);return this._useKeys||(o.valueSeq=function(){return s._iter.toSeq().reverse()}),o},ToKeyedSequence.prototype.map=function(s,o){var i=this,a=mapFactory(this,s,o);return this._useKeys||(a.valueSeq=function(){return i._iter.toSeq().map(s,o)}),a},ToKeyedSequence.prototype.__iterate=function(s,o){var i,a=this;return this._iter.__iterate(this._useKeys?function(o,i){return s(o,i,a)}:(i=o?resolveSize(this):0,function(u){return s(u,o?--i:i++,a)}),o)},ToKeyedSequence.prototype.__iterator=function(s,o){if(this._useKeys)return this._iter.__iterator(s,o);var i=this._iter.__iterator(V,o),a=o?resolveSize(this):0;return new Iterator((function(){var u=i.next();return u.done?u:iteratorValue(s,o?--a:a++,u.value,u)}))},ToKeyedSequence.prototype[u]=!0,createClass(ToIndexedSequence,IndexedSeq),ToIndexedSequence.prototype.includes=function(s){return this._iter.includes(s)},ToIndexedSequence.prototype.__iterate=function(s,o){var i=this,a=0;return this._iter.__iterate((function(o){return s(o,a++,i)}),o)},ToIndexedSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o),a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value,o)}))},createClass(ToSetSequence,SetSeq),ToSetSequence.prototype.has=function(s){return this._iter.includes(s)},ToSetSequence.prototype.__iterate=function(s,o){var i=this;return this._iter.__iterate((function(o){return s(o,o,i)}),o)},ToSetSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o);return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,o.value,o.value,o)}))},createClass(FromEntriesSequence,KeyedSeq),FromEntriesSequence.prototype.entrySeq=function(){return this._iter.toSeq()},FromEntriesSequence.prototype.__iterate=function(s,o){var i=this;return this._iter.__iterate((function(o){if(o){validateEntry(o);var a=isIterable(o);return s(a?o.get(1):o[1],a?o.get(0):o[0],i)}}),o)},FromEntriesSequence.prototype.__iterator=function(s,o){var i=this._iter.__iterator(V,o);return new Iterator((function(){for(;;){var o=i.next();if(o.done)return o;var a=o.value;if(a){validateEntry(a);var u=isIterable(a);return iteratorValue(s,u?a.get(0):a[0],u?a.get(1):a[1],o)}}}))},ToIndexedSequence.prototype.cacheResult=ToKeyedSequence.prototype.cacheResult=ToSetSequence.prototype.cacheResult=FromEntriesSequence.prototype.cacheResult=cacheResultThrough,createClass(Record,KeyedCollection),Record.prototype.toString=function(){return this.__toString(recordName(this)+\" {\",\"}\")},Record.prototype.has=function(s){return this._defaultValues.hasOwnProperty(s)},Record.prototype.get=function(s,o){if(!this.has(s))return o;var i=this._defaultValues[s];return this._map?this._map.get(s,i):i},Record.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var s=this.constructor;return s._empty||(s._empty=makeRecord(this,emptyMap()))},Record.prototype.set=function(s,o){if(!this.has(s))throw new Error('Cannot set unknown key \"'+s+'\" on '+recordName(this));if(this._map&&!this._map.has(s)&&o===this._defaultValues[s])return this;var i=this._map&&this._map.set(s,o);return this.__ownerID||i===this._map?this:makeRecord(this,i)},Record.prototype.remove=function(s){if(!this.has(s))return this;var o=this._map&&this._map.remove(s);return this.__ownerID||o===this._map?this:makeRecord(this,o)},Record.prototype.wasAltered=function(){return this._map.wasAltered()},Record.prototype.__iterator=function(s,o){var i=this;return KeyedIterable(this._defaultValues).map((function(s,o){return i.get(o)})).__iterator(s,o)},Record.prototype.__iterate=function(s,o){var i=this;return KeyedIterable(this._defaultValues).map((function(s,o){return i.get(o)})).__iterate(s,o)},Record.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map&&this._map.__ensureOwner(s);return s?makeRecord(this,o,s):(this.__ownerID=s,this._map=o,this)};var tt=Record.prototype;function makeRecord(s,o,i){var a=Object.create(Object.getPrototypeOf(s));return a._map=o,a.__ownerID=i,a}function recordName(s){return s._name||s.constructor.name||\"Record\"}function setProps(s,o){try{o.forEach(setProp.bind(void 0,s))}catch(s){}}function setProp(s,o){Object.defineProperty(s,o,{get:function(){return this.get(o)},set:function(s){invariant(this.__ownerID,\"Cannot set on an immutable record.\"),this.set(o,s)}})}function Set(s){return null==s?emptySet():isSet(s)&&!isOrdered(s)?s:emptySet().withMutations((function(o){var i=SetIterable(s);assertNotInfinite(i.size),i.forEach((function(s){return o.add(s)}))}))}function isSet(s){return!(!s||!s[nt])}tt[_]=tt.remove,tt.deleteIn=tt.removeIn=$e.removeIn,tt.merge=$e.merge,tt.mergeWith=$e.mergeWith,tt.mergeIn=$e.mergeIn,tt.mergeDeep=$e.mergeDeep,tt.mergeDeepWith=$e.mergeDeepWith,tt.mergeDeepIn=$e.mergeDeepIn,tt.setIn=$e.setIn,tt.update=$e.update,tt.updateIn=$e.updateIn,tt.withMutations=$e.withMutations,tt.asMutable=$e.asMutable,tt.asImmutable=$e.asImmutable,createClass(Set,SetCollection),Set.of=function(){return this(arguments)},Set.fromKeys=function(s){return this(KeyedIterable(s).keySeq())},Set.prototype.toString=function(){return this.__toString(\"Set {\",\"}\")},Set.prototype.has=function(s){return this._map.has(s)},Set.prototype.add=function(s){return updateSet(this,this._map.set(s,!0))},Set.prototype.remove=function(s){return updateSet(this,this._map.remove(s))},Set.prototype.clear=function(){return updateSet(this,this._map.clear())},Set.prototype.union=function(){var o=s.call(arguments,0);return 0===(o=o.filter((function(s){return 0!==s.size}))).length?this:0!==this.size||this.__ownerID||1!==o.length?this.withMutations((function(s){for(var i=0;i<o.length;i++)SetIterable(o[i]).forEach((function(o){return s.add(o)}))})):this.constructor(o[0])},Set.prototype.intersect=function(){var o=s.call(arguments,0);if(0===o.length)return this;o=o.map((function(s){return SetIterable(s)}));var i=this;return this.withMutations((function(s){i.forEach((function(i){o.every((function(s){return s.includes(i)}))||s.remove(i)}))}))},Set.prototype.subtract=function(){var o=s.call(arguments,0);if(0===o.length)return this;o=o.map((function(s){return SetIterable(s)}));var i=this;return this.withMutations((function(s){i.forEach((function(i){o.some((function(s){return s.includes(i)}))&&s.remove(i)}))}))},Set.prototype.merge=function(){return this.union.apply(this,arguments)},Set.prototype.mergeWith=function(o){var i=s.call(arguments,1);return this.union.apply(this,i)},Set.prototype.sort=function(s){return OrderedSet(sortFactory(this,s))},Set.prototype.sortBy=function(s,o){return OrderedSet(sortFactory(this,o,s))},Set.prototype.wasAltered=function(){return this._map.wasAltered()},Set.prototype.__iterate=function(s,o){var i=this;return this._map.__iterate((function(o,a){return s(a,a,i)}),o)},Set.prototype.__iterator=function(s,o){return this._map.map((function(s,o){return o})).__iterator(s,o)},Set.prototype.__ensureOwner=function(s){if(s===this.__ownerID)return this;var o=this._map.__ensureOwner(s);return s?this.__make(o,s):(this.__ownerID=s,this._map=o,this)},Set.isSet=isSet;var rt,nt=\"@@__IMMUTABLE_SET__@@\",st=Set.prototype;function updateSet(s,o){return s.__ownerID?(s.size=o.size,s._map=o,s):o===s._map?s:0===o.size?s.__empty():s.__make(o)}function makeSet(s,o){var i=Object.create(st);return i.size=s?s.size:0,i._map=s,i.__ownerID=o,i}function emptySet(){return rt||(rt=makeSet(emptyMap()))}function OrderedSet(s){return null==s?emptyOrderedSet():isOrderedSet(s)?s:emptyOrderedSet().withMutations((function(o){var i=SetIterable(s);assertNotInfinite(i.size),i.forEach((function(s){return o.add(s)}))}))}function isOrderedSet(s){return isSet(s)&&isOrdered(s)}st[nt]=!0,st[_]=st.remove,st.mergeDeep=st.merge,st.mergeDeepWith=st.mergeWith,st.withMutations=$e.withMutations,st.asMutable=$e.asMutable,st.asImmutable=$e.asImmutable,st.__empty=emptySet,st.__make=makeSet,createClass(OrderedSet,Set),OrderedSet.of=function(){return this(arguments)},OrderedSet.fromKeys=function(s){return this(KeyedIterable(s).keySeq())},OrderedSet.prototype.toString=function(){return this.__toString(\"OrderedSet {\",\"}\")},OrderedSet.isOrderedSet=isOrderedSet;var ot,it=OrderedSet.prototype;function makeOrderedSet(s,o){var i=Object.create(it);return i.size=s?s.size:0,i._map=s,i.__ownerID=o,i}function emptyOrderedSet(){return ot||(ot=makeOrderedSet(emptyOrderedMap()))}function Stack(s){return null==s?emptyStack():isStack(s)?s:emptyStack().unshiftAll(s)}function isStack(s){return!(!s||!s[ct])}it[u]=!0,it.__empty=emptyOrderedSet,it.__make=makeOrderedSet,createClass(Stack,IndexedCollection),Stack.of=function(){return this(arguments)},Stack.prototype.toString=function(){return this.__toString(\"Stack [\",\"]\")},Stack.prototype.get=function(s,o){var i=this._head;for(s=wrapIndex(this,s);i&&s--;)i=i.next;return i?i.value:o},Stack.prototype.peek=function(){return this._head&&this._head.value},Stack.prototype.push=function(){if(0===arguments.length)return this;for(var s=this.size+arguments.length,o=this._head,i=arguments.length-1;i>=0;i--)o={value:arguments[i],next:o};return this.__ownerID?(this.size=s,this._head=o,this.__hash=void 0,this.__altered=!0,this):makeStack(s,o)},Stack.prototype.pushAll=function(s){if(0===(s=IndexedIterable(s)).size)return this;assertNotInfinite(s.size);var o=this.size,i=this._head;return s.reverse().forEach((function(s){o++,i={value:s,next:i}})),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(s){return this.pushAll(s)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(s,o){if(wholeSlice(s,o,this.size))return this;var i=resolveBegin(s,this.size);if(resolveEnd(o,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,s,o);for(var a=this.size-i,u=this._head;i--;)u=u.next;return this.__ownerID?(this.size=a,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(a,u)},Stack.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function(s,o){if(o)return this.reverse().__iterate(s);for(var i=0,a=this._head;a&&!1!==s(a.value,i++,this);)a=a.next;return i},Stack.prototype.__iterator=function(s,o){if(o)return this.reverse().__iterator(s);var i=0,a=this._head;return new Iterator((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return iteratorDone()}))},Stack.isStack=isStack;var at,ct=\"@@__IMMUTABLE_STACK__@@\",lt=Stack.prototype;function makeStack(s,o,i,a){var u=Object.create(lt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return at||(at=makeStack(0))}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}lt[ct]=!0,lt.withMutations=$e.withMutations,lt.asMutable=$e.asMutable,lt.asImmutable=$e.asImmutable,lt.wasAltered=$e.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var s=new Array(this.size||0);return this.valueSeq().__iterate((function(o,i){s[i]=o})),s},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(s){return s&&\"function\"==typeof s.toJS?s.toJS():s})).__toJS()},toJSON:function(){return this.toSeq().map((function(s){return s&&\"function\"==typeof s.toJSON?s.toJSON():s})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var s={};return this.__iterate((function(o,i){s[i]=o})),s},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return\"[Iterable]\"},__toString:function(s,o){return 0===this.size?s+o:s+\" \"+this.toSeq().map(this.__toStringMapper).join(\", \")+\" \"+o},concat:function(){return reify(this,concatFactory(this,s.call(arguments,0)))},includes:function(s){return this.some((function(o){return is(o,s)}))},entries:function(){return this.__iterator(U)},every:function(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function(s,o){return reify(this,filterFactory(this,s,o,!0))},find:function(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function(s){assertNotInfinite(this.size),s=void 0!==s?\"\"+s:\",\";var o=\"\",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():\"\"})),o},keys:function(){return this.__iterator($)},map:function(s,o){return reify(this,mapFactory(this,s,o))},reduce:function(s,o,i){var a,u;return assertNotInfinite(this.size),arguments.length<2?u=!0:a=o,this.__iterate((function(o,_,w){u?(u=!1,a=o):a=s.call(i,a,o,_,w)})),a},reduceRight:function(s,o,i){var a=this.toKeyedSeq().reverse();return a.reduce.apply(a,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function(s,o){return!this.every(not(s),o)},sort:function(s){return reify(this,sortFactory(this,s))},values:function(){return this.__iterator(V)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function(s,o){return countByFactory(this,s,o)},equals:function(s){return deepEqual(this,s)},entrySeq:function(){var s=this;if(s._cache)return new ArraySeq(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function(s,o){return this.filter(not(s),o)},findEntry:function(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function(){return this.find(returnTrue)},flatMap:function(s,o){return reify(this,flatMapFactory(this,s,o))},flatten:function(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn:function(s,o){for(var i,a=this,u=forceIterator(s);!(i=u.next()).done;){var _=i.value;if((a=a&&a.get?a.get(_,j):j)===j)return o}return a},groupBy:function(s,o){return groupByFactory(this,s,o)},has:function(s){return this.get(s,j)!==j},hasIn:function(s){return this.getIn(s,j)!==j},isSubset:function(s){return s=\"function\"==typeof s.includes?s:Iterable(s),this.every((function(o){return s.includes(o)}))},isSuperset:function(s){return(s=\"function\"==typeof s.isSubset?s:Iterable(s)).isSubset(this)},keyOf:function(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function(s){return maxFactory(this,s)},maxBy:function(s,o){return maxFactory(this,o,s)},min:function(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function(){return this.slice(1)},skip:function(s){return this.slice(Math.max(0,s))},skipLast:function(s){return reify(this,this.toSeq().reverse().skip(s).reverse())},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function(s,o){return this.skipWhile(not(s),o)},sortBy:function(s,o){return reify(this,sortFactory(this,o,s))},take:function(s){return this.slice(0,Math.max(0,s))},takeLast:function(s){return reify(this,this.toSeq().reverse().take(s).reverse())},takeWhile:function(s,o){return reify(this,takeWhileFactory(this,s,o))},takeUntil:function(s,o){return this.takeWhile(not(s),o)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ut=Iterable.prototype;ut[o]=!0,ut[Z]=ut.values,ut.__toJS=ut.toArray,ut.__toStringMapper=quoteString,ut.inspect=ut.toSource=function(){return this.toString()},ut.chain=ut.flatMap,ut.contains=ut.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){return!s.apply(this,arguments)}}function neg(s){return function(){return-s.apply(this,arguments)}}function quoteString(s){return\"string\"==typeof s?JSON.stringify(s):String(s)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(s,o){return s<o?1:s>o?-1:0}function hashIterable(s){if(s.size===1/0)return 0;var o=isOrdered(s),i=isKeyed(s),a=o?1:0;return murmurHashOfSize(s.__iterate(i?o?function(s,o){a=31*a+hashMerge(hash(s),hash(o))|0}:function(s,o){a=a+hashMerge(hash(s),hash(o))|0}:o?function(s){a=31*a+hash(s)|0}:function(s){a=a+hash(s)|0}),a)}function murmurHashOfSize(s,o){return o=le(o,3432918353),o=le(o<<15|o>>>-15,461845907),o=le(o<<13|o>>>-13,5),o=le((o=o+3864292196^s)^o>>>16,2246822507),o=smi((o=le(o^o>>>13,3266489909))^o>>>16)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}return pt[i]=!0,pt[Z]=ut.entries,pt.__toJS=ut.toObject,pt.__toStringMapper=function(s,o){return JSON.stringify(o)+\": \"+quoteString(s)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function(s,o){var i=arguments.length;if(o=Math.max(0|o,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function(){return this.get(0)},flatten:function(s){return reify(this,flattenFactory(this,s,!1))},get:function(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s<this.size:-1!==this.indexOf(s))},interpose:function(s){return reify(this,interposeFactory(this,s))},interleave:function(){var s=[this].concat(arrCopy(arguments)),o=zipWithFactory(this.toSeq(),IndexedSeq.of,s),i=o.flatten(!0);return o.size&&(i.size=o.size*s.length),reify(this,i)},keySeq:function(){return Range(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!1))},zip:function(){return reify(this,zipWithFactory(this,defaultZipper,[this].concat(arrCopy(arguments))))},zipWith:function(s){var o=arrCopy(arguments);return o[0]=this,reify(this,zipWithFactory(this,s,o))}}),IndexedIterable.prototype[a]=!0,IndexedIterable.prototype[u]=!0,mixin(SetIterable,{get:function(s,o){return this.has(s)?s:o},includes:function(s){return this.has(s)},keySeq:function(){return this.valueSeq()}}),SetIterable.prototype.has=ut.includes,SetIterable.prototype.contains=SetIterable.prototype.includes,mixin(KeyedSeq,KeyedIterable.prototype),mixin(IndexedSeq,IndexedIterable.prototype),mixin(SetSeq,SetIterable.prototype),mixin(KeyedCollection,KeyedIterable.prototype),mixin(IndexedCollection,IndexedIterable.prototype),mixin(SetCollection,SetIterable.prototype),{Iterable,Seq,Collection,Map,OrderedMap,List,Stack,Set,OrderedSet,Record,Range,Repeat,is,fromJS}}()},9748:(s,o,i)=>{\"use strict\";i(71340);var a=i(92046);s.exports=a.Object.assign},9999:(s,o,i)=>{var a=i(37217),u=i(83729),_=i(16547),w=i(74733),x=i(43838),C=i(93290),j=i(23007),L=i(92271),B=i(48948),$=i(50002),V=i(83349),U=i(5861),z=i(76189),Y=i(77199),Z=i(35529),ee=i(56449),ie=i(3656),ae=i(87730),ce=i(23805),le=i(38440),pe=i(95950),de=i(37241),fe=\"[object Arguments]\",ye=\"[object Function]\",be=\"[object Object]\",_e={};_e[fe]=_e[\"[object Array]\"]=_e[\"[object ArrayBuffer]\"]=_e[\"[object DataView]\"]=_e[\"[object Boolean]\"]=_e[\"[object Date]\"]=_e[\"[object Float32Array]\"]=_e[\"[object Float64Array]\"]=_e[\"[object Int8Array]\"]=_e[\"[object Int16Array]\"]=_e[\"[object Int32Array]\"]=_e[\"[object Map]\"]=_e[\"[object Number]\"]=_e[be]=_e[\"[object RegExp]\"]=_e[\"[object Set]\"]=_e[\"[object String]\"]=_e[\"[object Symbol]\"]=_e[\"[object Uint8Array]\"]=_e[\"[object Uint8ClampedArray]\"]=_e[\"[object Uint16Array]\"]=_e[\"[object Uint32Array]\"]=!0,_e[\"[object Error]\"]=_e[ye]=_e[\"[object WeakMap]\"]=!1,s.exports=function baseClone(s,o,i,Se,we,xe){var Pe,Te=1&o,Re=2&o,$e=4&o;if(i&&(Pe=we?i(s,Se,we,xe):i(s)),void 0!==Pe)return Pe;if(!ce(s))return s;var qe=ee(s);if(qe){if(Pe=z(s),!Te)return j(s,Pe)}else{var ze=U(s),We=ze==ye||\"[object GeneratorFunction]\"==ze;if(ie(s))return C(s,Te);if(ze==be||ze==fe||We&&!we){if(Pe=Re||We?{}:Z(s),!Te)return Re?B(s,x(Pe,s)):L(s,w(Pe,s))}else{if(!_e[ze])return we?s:{};Pe=Y(s,ze,Te)}}xe||(xe=new a);var He=xe.get(s);if(He)return He;xe.set(s,Pe),le(s)?s.forEach((function(a){Pe.add(baseClone(a,o,i,a,s,xe))})):ae(s)&&s.forEach((function(a,u){Pe.set(u,baseClone(a,o,i,u,s,xe))}));var Ye=qe?void 0:($e?Re?V:$:Re?de:pe)(s);return u(Ye||s,(function(a,u){Ye&&(a=s[u=a]),_(Pe,u,baseClone(a,o,i,u,s,xe))})),Pe}},10023:(s,o,i)=>{const a=i(6205),INTS=()=>[{type:a.RANGE,from:48,to:57}],WORDS=()=>[{type:a.CHAR,value:95},{type:a.RANGE,from:97,to:122},{type:a.RANGE,from:65,to:90}].concat(INTS()),WHITESPACE=()=>[{type:a.CHAR,value:9},{type:a.CHAR,value:10},{type:a.CHAR,value:11},{type:a.CHAR,value:12},{type:a.CHAR,value:13},{type:a.CHAR,value:32},{type:a.CHAR,value:160},{type:a.CHAR,value:5760},{type:a.RANGE,from:8192,to:8202},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233},{type:a.CHAR,value:8239},{type:a.CHAR,value:8287},{type:a.CHAR,value:12288},{type:a.CHAR,value:65279}];o.words=()=>({type:a.SET,set:WORDS(),not:!1}),o.notWords=()=>({type:a.SET,set:WORDS(),not:!0}),o.ints=()=>({type:a.SET,set:INTS(),not:!1}),o.notInts=()=>({type:a.SET,set:INTS(),not:!0}),o.whitespace=()=>({type:a.SET,set:WHITESPACE(),not:!1}),o.notWhitespace=()=>({type:a.SET,set:WHITESPACE(),not:!0}),o.anyChar=()=>({type:a.SET,set:[{type:a.CHAR,value:10},{type:a.CHAR,value:13},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233}],not:!0})},10043:(s,o,i)=>{\"use strict\";var a=i(54018),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(\"Can't set \"+u(s)+\" as a prototype\")}},10124:(s,o,i)=>{var a=i(9325);s.exports=function(){return a.Date.now()}},10300:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(82159),_=i(36624),w=i(4640),x=i(73448),C=TypeError;s.exports=function(s,o){var i=arguments.length<2?x(s):o;if(u(i))return _(a(i,s));throw new C(w(s)+\" is not iterable\")}},10316:(s,o,i)=>{const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(\"\"===this.id.toValue())throw Error(\"Cannot create reference to an element that does not contain an ID\");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error(\"Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`\");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||\"element\"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if(\"string\"==typeof s||\"number\"==typeof s||\"boolean\"==typeof s||\"null\"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if(\"object\"!=typeof s)throw new Error(\"Cannot set content to given value\");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty(\"id\",\"\")}set id(s){this.setMetaProperty(\"id\",s)}get classes(){return this.getMetaProperty(\"classes\",[])}set classes(s){this.setMetaProperty(\"classes\",s)}get title(){return this.getMetaProperty(\"title\",\"\")}set title(s){this.setMetaProperty(\"title\",s)}get description(){return this.getMetaProperty(\"description\",\"\")}set description(s){this.setMetaProperty(\"description\",s)}get links(){return this.getMetaProperty(\"links\",[])}set links(s){this.setMetaProperty(\"links\",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},10392:s=>{s.exports=function getValue(s,o){return null==s?void 0:s[o]}},10776:(s,o,i)=>{var a=i(30756),u=i(95950);s.exports=function getMatchData(s){for(var o=u(s),i=o.length;i--;){var _=o[i],w=s[_];o[i]=[_,w,a(w)]}return o}},10866:(s,o,i)=>{const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},11042:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(1907),_=i(24443),w=i(87170),x=i(36624),C=u([].concat);s.exports=a(\"Reflect\",\"ownKeys\")||function ownKeys(s){var o=_.f(x(s)),i=w.f;return i?C(o,i(s)):o}},11091:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(76024),_=i(92361),w=i(62250),x=i(13846).f,C=i(7463),j=i(92046),L=i(28311),B=i(61626),$=i(49724);i(36128);var wrapConstructor=function(s){var Wrapper=function(o,i,a){if(this instanceof Wrapper){switch(arguments.length){case 0:return new s;case 1:return new s(o);case 2:return new s(o,i)}return new s(o,i,a)}return u(s,this,arguments)};return Wrapper.prototype=s.prototype,Wrapper};s.exports=function(s,o){var i,u,V,U,z,Y,Z,ee,ie,ae=s.target,ce=s.global,le=s.stat,pe=s.proto,de=ce?a:le?a[ae]:a[ae]&&a[ae].prototype,fe=ce?j:j[ae]||B(j,ae,{})[ae],ye=fe.prototype;for(U in o)u=!(i=C(ce?U:ae+(le?\".\":\"#\")+U,s.forced))&&de&&$(de,U),Y=fe[U],u&&(Z=s.dontCallGetSet?(ie=x(de,U))&&ie.value:de[U]),z=u&&Z?Z:o[U],(i||pe||typeof Y!=typeof z)&&(ee=s.bind&&u?L(z,a):s.wrap&&u?wrapConstructor(z):pe&&w(z)?_(z):z,(s.sham||z&&z.sham||Y&&Y.sham)&&B(ee,\"sham\",!0),B(fe,U,ee),pe&&($(j,V=ae+\"Prototype\")||B(j,V,{}),B(j[V],U,z),s.real&&ye&&(i||!ye[U])&&B(ye,U,z)))}},11287:s=>{s.exports=function getHolder(s){return s.placeholder}},11331:(s,o,i)=>{var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||\"[object Object]\"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,\"constructor\")&&o.constructor;return\"function\"==typeof i&&i instanceof i&&C.call(i)==L}},11470:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(65482),_=i(90160),w=i(74239),x=a(\"\".charAt),C=a(\"\".charCodeAt),j=a(\"\".slice),createMethod=function(s){return function(o,i){var a,L,B=_(w(o)),$=u(i),V=B.length;return $<0||$>=V?s?\"\":void 0:(a=C(B,$))<55296||a>56319||$+1===V||(L=C(B,$+1))<56320||L>57343?s?x(B,$):a:s?j(B,$,$+2):L-56320+(a-55296<<10)+65536}};s.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},11842:(s,o,i)=>{var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12242:(s,o,i)=>{const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"boolean\"}primitive(){return\"boolean\"}}},12507:(s,o,i)=>{var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(\"\"):o.slice(1);return x[s]()+C}}},12560:(s,o,i)=>{\"use strict\";i(99363);var a=i(19287),u=i(45951),_=i(14840),w=i(93742);for(var x in a)_(u[x],x),w[x]=w.Array},12651:(s,o,i)=>{var a=i(74218);s.exports=function getMapData(s,o){var i=s.__data__;return a(o)?i[\"string\"==typeof o?\"string\":\"hash\"]:i.map}},12749:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashHas(s){var o=this.__data__;return a?void 0!==o[s]:u.call(o,s)}},13222:(s,o,i)=>{var a=i(77556);s.exports=function toString(s){return null==s?\"\":a(s)}},13846:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(13930),_=i(22574),w=i(75817),x=i(4993),C=i(70470),j=i(49724),L=i(73648),B=Object.getOwnPropertyDescriptor;o.f=a?B:function getOwnPropertyDescriptor(s,o){if(s=x(s),o=C(o),L)try{return B(s,o)}catch(s){}if(j(s,o))return w(!u(_.f,s,o),s[o])}},13930:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype.call;s.exports=a?u.bind(u):function(){return u.apply(u,arguments)}},14248:s=>{s.exports=function arraySome(s,o){for(var i=-1,a=null==s?0:s.length;++i<a;)if(o(s[i],i,s))return!0;return!1}},14528:s=>{s.exports=function arrayPush(s,o){for(var i=-1,a=o.length,u=s.length;++i<a;)s[u+i]=o[i];return s}},14540:(s,o,i)=>{const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element=\"ref\",this.path||(this.path=\"element\")}get path(){return this.attributes.get(\"path\")}set path(s){this.attributes.set(\"path\",s)}}},14744:s=>{\"use strict\";var o=function isMergeableObject(s){return function isNonNullObject(s){return!!s&&\"object\"==typeof s}(s)&&!function isSpecial(s){var o=Object.prototype.toString.call(s);return\"[object RegExp]\"===o||\"[object Date]\"===o||function isReactElement(s){return s.$$typeof===i}(s)}(s)};var i=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function cloneUnlessOtherwiseSpecified(s,o){return!1!==o.clone&&o.isMergeableObject(s)?deepmerge(function emptyTarget(s){return Array.isArray(s)?[]:{}}(s),s,o):s}function defaultArrayMerge(s,o,i){return s.concat(o).map((function(s){return cloneUnlessOtherwiseSpecified(s,i)}))}function getKeys(s){return Object.keys(s).concat(function getEnumerableOwnPropertySymbols(s){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s).filter((function(o){return Object.propertyIsEnumerable.call(s,o)})):[]}(s))}function propertyIsOnObject(s,o){try{return o in s}catch(s){return!1}}function mergeObject(s,o,i){var a={};return i.isMergeableObject(s)&&getKeys(s).forEach((function(o){a[o]=cloneUnlessOtherwiseSpecified(s[o],i)})),getKeys(o).forEach((function(u){(function propertyIsUnsafe(s,o){return propertyIsOnObject(s,o)&&!(Object.hasOwnProperty.call(s,o)&&Object.propertyIsEnumerable.call(s,o))})(s,u)||(propertyIsOnObject(s,u)&&i.isMergeableObject(o[u])?a[u]=function getMergeFunction(s,o){if(!o.customMerge)return deepmerge;var i=o.customMerge(s);return\"function\"==typeof i?i:deepmerge}(u,i)(s[u],o[u],i):a[u]=cloneUnlessOtherwiseSpecified(o[u],i))})),a}function deepmerge(s,i,a){(a=a||{}).arrayMerge=a.arrayMerge||defaultArrayMerge,a.isMergeableObject=a.isMergeableObject||o,a.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var u=Array.isArray(i);return u===Array.isArray(s)?u?a.arrayMerge(s,i,a):mergeObject(s,i,a):cloneUnlessOtherwiseSpecified(i,a)}deepmerge.all=function deepmergeAll(s,o){if(!Array.isArray(s))throw new Error(\"first argument should be an array\");return s.reduce((function(s,i){return deepmerge(s,i,o)}),{})};var a=deepmerge;s.exports=a},14792:(s,o,i)=>{var a=i(13222),u=i(55808);s.exports=function capitalize(s){return u(a(s).toLowerCase())}},14840:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(74284).f,_=i(61626),w=i(49724),x=i(54878),C=i(76264)(\"toStringTag\");s.exports=function(s,o,i,j){var L=i?s:s&&s.prototype;L&&(w(L,C)||u(L,C,{configurable:!0,value:o}),j&&!a&&_(L,\"toString\",x))}},14974:s=>{s.exports=function safeGet(s,o){if((\"constructor\"!==o||\"function\"!=typeof s[o])&&\"__proto__\"!=o)return s[o]}},15287:(s,o)=>{\"use strict\";var i=Symbol.for(\"react.element\"),a=Symbol.for(\"react.portal\"),u=Symbol.for(\"react.fragment\"),_=Symbol.for(\"react.strict_mode\"),w=Symbol.for(\"react.profiler\"),x=Symbol.for(\"react.provider\"),C=Symbol.for(\"react.context\"),j=Symbol.for(\"react.forward_ref\"),L=Symbol.for(\"react.suspense\"),B=Symbol.for(\"react.memo\"),$=Symbol.for(\"react.lazy\"),V=Symbol.iterator;var U={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},z=Object.assign,Y={};function E(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||U}function F(){}function G(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||U}E.prototype.isReactComponent={},E.prototype.setState=function(s,o){if(\"object\"!=typeof s&&\"function\"!=typeof s&&null!=s)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,s,o,\"setState\")},E.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,\"forceUpdate\")},F.prototype=E.prototype;var Z=G.prototype=new F;Z.constructor=G,z(Z,E.prototype),Z.isPureReactComponent=!0;var ee=Array.isArray,ie=Object.prototype.hasOwnProperty,ae={current:null},ce={key:!0,ref:!0,__self:!0,__source:!0};function M(s,o,a){var u,_={},w=null,x=null;if(null!=o)for(u in void 0!==o.ref&&(x=o.ref),void 0!==o.key&&(w=\"\"+o.key),o)ie.call(o,u)&&!ce.hasOwnProperty(u)&&(_[u]=o[u]);var C=arguments.length-2;if(1===C)_.children=a;else if(1<C){for(var j=Array(C),L=0;L<C;L++)j[L]=arguments[L+2];_.children=j}if(s&&s.defaultProps)for(u in C=s.defaultProps)void 0===_[u]&&(_[u]=C[u]);return{$$typeof:i,type:s,key:w,ref:x,props:_,_owner:ae.current}}function O(s){return\"object\"==typeof s&&null!==s&&s.$$typeof===i}var le=/\\/+/g;function Q(s,o){return\"object\"==typeof s&&null!==s&&null!=s.key?function escape(s){var o={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+s.replace(/[=:]/g,(function(s){return o[s]}))}(\"\"+s.key):o.toString(36)}function R(s,o,u,_,w){var x=typeof s;\"undefined\"!==x&&\"boolean\"!==x||(s=null);var C=!1;if(null===s)C=!0;else switch(x){case\"string\":case\"number\":C=!0;break;case\"object\":switch(s.$$typeof){case i:case a:C=!0}}if(C)return w=w(C=s),s=\"\"===_?\".\"+Q(C,0):_,ee(w)?(u=\"\",null!=s&&(u=s.replace(le,\"$&/\")+\"/\"),R(w,o,u,\"\",(function(s){return s}))):null!=w&&(O(w)&&(w=function N(s,o){return{$$typeof:i,type:s.type,key:o,ref:s.ref,props:s.props,_owner:s._owner}}(w,u+(!w.key||C&&C.key===w.key?\"\":(\"\"+w.key).replace(le,\"$&/\")+\"/\")+s)),o.push(w)),1;if(C=0,_=\"\"===_?\".\":_+\":\",ee(s))for(var j=0;j<s.length;j++){var L=_+Q(x=s[j],j);C+=R(x,o,u,L,w)}else if(L=function A(s){return null===s||\"object\"!=typeof s?null:\"function\"==typeof(s=V&&s[V]||s[\"@@iterator\"])?s:null}(s),\"function\"==typeof L)for(s=L.call(s),j=0;!(x=s.next()).done;)C+=R(x=x.value,o,u,L=_+Q(x,j++),w);else if(\"object\"===x)throw o=String(s),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===o?\"object with keys {\"+Object.keys(s).join(\", \")+\"}\":o)+\"). If you meant to render a collection of children, use an array instead.\");return C}function S(s,o,i){if(null==s)return s;var a=[],u=0;return R(s,a,\"\",\"\",(function(s){return o.call(i,s,u++)})),a}function T(s){if(-1===s._status){var o=s._result;(o=o()).then((function(o){0!==s._status&&-1!==s._status||(s._status=1,s._result=o)}),(function(o){0!==s._status&&-1!==s._status||(s._status=2,s._result=o)})),-1===s._status&&(s._status=0,s._result=o)}if(1===s._status)return s._result.default;throw s._result}var pe={current:null},de={transition:null},fe={ReactCurrentDispatcher:pe,ReactCurrentBatchConfig:de,ReactCurrentOwner:ae};function X(){throw Error(\"act(...) is not supported in production builds of React.\")}o.Children={map:S,forEach:function(s,o,i){S(s,(function(){o.apply(this,arguments)}),i)},count:function(s){var o=0;return S(s,(function(){o++})),o},toArray:function(s){return S(s,(function(s){return s}))||[]},only:function(s){if(!O(s))throw Error(\"React.Children.only expected to receive a single React element child.\");return s}},o.Component=E,o.Fragment=u,o.Profiler=w,o.PureComponent=G,o.StrictMode=_,o.Suspense=L,o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=fe,o.act=X,o.cloneElement=function(s,o,a){if(null==s)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+s+\".\");var u=z({},s.props),_=s.key,w=s.ref,x=s._owner;if(null!=o){if(void 0!==o.ref&&(w=o.ref,x=ae.current),void 0!==o.key&&(_=\"\"+o.key),s.type&&s.type.defaultProps)var C=s.type.defaultProps;for(j in o)ie.call(o,j)&&!ce.hasOwnProperty(j)&&(u[j]=void 0===o[j]&&void 0!==C?C[j]:o[j])}var j=arguments.length-2;if(1===j)u.children=a;else if(1<j){C=Array(j);for(var L=0;L<j;L++)C[L]=arguments[L+2];u.children=C}return{$$typeof:i,type:s.type,key:_,ref:w,props:u,_owner:x}},o.createContext=function(s){return(s={$$typeof:C,_currentValue:s,_currentValue2:s,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:x,_context:s},s.Consumer=s},o.createElement=M,o.createFactory=function(s){var o=M.bind(null,s);return o.type=s,o},o.createRef=function(){return{current:null}},o.forwardRef=function(s){return{$$typeof:j,render:s}},o.isValidElement=O,o.lazy=function(s){return{$$typeof:$,_payload:{_status:-1,_result:s},_init:T}},o.memo=function(s,o){return{$$typeof:B,type:s,compare:void 0===o?null:o}},o.startTransition=function(s){var o=de.transition;de.transition={};try{s()}finally{de.transition=o}},o.unstable_act=X,o.useCallback=function(s,o){return pe.current.useCallback(s,o)},o.useContext=function(s){return pe.current.useContext(s)},o.useDebugValue=function(){},o.useDeferredValue=function(s){return pe.current.useDeferredValue(s)},o.useEffect=function(s,o){return pe.current.useEffect(s,o)},o.useId=function(){return pe.current.useId()},o.useImperativeHandle=function(s,o,i){return pe.current.useImperativeHandle(s,o,i)},o.useInsertionEffect=function(s,o){return pe.current.useInsertionEffect(s,o)},o.useLayoutEffect=function(s,o){return pe.current.useLayoutEffect(s,o)},o.useMemo=function(s,o){return pe.current.useMemo(s,o)},o.useReducer=function(s,o,i){return pe.current.useReducer(s,o,i)},o.useRef=function(s){return pe.current.useRef(s)},o.useState=function(s){return pe.current.useState(s)},o.useSyncExternalStore=function(s,o,i){return pe.current.useSyncExternalStore(s,o,i)},o.useTransition=function(){return pe.current.useTransition()},o.version=\"18.3.1\"},15325:(s,o,i)=>{var a=i(96131);s.exports=function arrayIncludes(s,o){return!!(null==s?0:s.length)&&a(s,o,0)>-1}},15340:()=>{},15389:(s,o,i)=>{var a=i(93663),u=i(87978),_=i(83488),w=i(56449),x=i(50583);s.exports=function baseIteratee(s){return\"function\"==typeof s?s:null==s?_:\"object\"==typeof s?w(s)?u(s[0],s[1]):a(s):x(s)}},15972:(s,o,i)=>{\"use strict\";var a=i(49724),u=i(62250),_=i(39298),w=i(92522),x=i(57382),C=w(\"IE_PROTO\"),j=Object,L=j.prototype;s.exports=x?j.getPrototypeOf:function(s){var o=_(s);if(a(o,C))return o[C];var i=o.constructor;return u(i)&&o instanceof i?i.prototype:o instanceof j?L:null}},16038:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsSet(s){return u(s)&&\"[object Set]\"==a(s)}},16426:s=>{s.exports=function(){var s=document.getSelection();if(!s.rangeCount)return function(){};for(var o=document.activeElement,i=[],a=0;a<s.rangeCount;a++)i.push(s.getRangeAt(a));switch(o.tagName.toUpperCase()){case\"INPUT\":case\"TEXTAREA\":o.blur();break;default:o=null}return s.removeAllRanges(),function(){\"Caret\"===s.type&&s.removeAllRanges(),s.rangeCount||i.forEach((function(o){s.addRange(o)})),o&&o.focus()}}},16547:(s,o,i)=>{var a=i(43360),u=i(75288),_=Object.prototype.hasOwnProperty;s.exports=function assignValue(s,o,i){var w=s[o];_.call(s,o)&&u(w,i)&&(void 0!==i||o in s)||a(s,o,i)}},16708:(s,o,i)=>{\"use strict\";var a,u=i(65606);function CorkedRequest(s){var o=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(s,o,i){var a=s.entry;s.entry=null;for(;a;){var u=a.callback;o.pendingcb--,u(i),a=a.next}o.corkedRequestsFree.next=s}(o,s)}}s.exports=Writable,Writable.WritableState=WritableState;var _={deprecate:i(94643)},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(75896),B=i(65291).getHighWaterMark,$=i(86048).F,V=$.ERR_INVALID_ARG_TYPE,U=$.ERR_METHOD_NOT_IMPLEMENTED,z=$.ERR_MULTIPLE_CALLBACK,Y=$.ERR_STREAM_CANNOT_PIPE,Z=$.ERR_STREAM_DESTROYED,ee=$.ERR_STREAM_NULL_VALUES,ie=$.ERR_STREAM_WRITE_AFTER_END,ae=$.ERR_UNKNOWN_ENCODING,ce=L.errorOrDestroy;function nop(){}function WritableState(s,o,_){a=a||i(25382),s=s||{},\"boolean\"!=typeof _&&(_=o instanceof a),this.objectMode=!!s.objectMode,_&&(this.objectMode=this.objectMode||!!s.writableObjectMode),this.highWaterMark=B(this,s,\"writableHighWaterMark\",_),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var w=!1===s.decodeStrings;this.decodeStrings=!w,this.defaultEncoding=s.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){!function onwrite(s,o){var i=s._writableState,a=i.sync,_=i.writecb;if(\"function\"!=typeof _)throw new z;if(function onwriteStateUpdate(s){s.writing=!1,s.writecb=null,s.length-=s.writelen,s.writelen=0}(i),o)!function onwriteError(s,o,i,a,_){--o.pendingcb,i?(u.nextTick(_,a),u.nextTick(finishMaybe,s,o),s._writableState.errorEmitted=!0,ce(s,a)):(_(a),s._writableState.errorEmitted=!0,ce(s,a),finishMaybe(s,o))}(s,i,a,o,_);else{var w=needFinish(i)||s.destroyed;w||i.corked||i.bufferProcessing||!i.bufferedRequest||clearBuffer(s,i),a?u.nextTick(afterWrite,s,i,w,_):afterWrite(s,i,w,_)}}(o,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(s){var o=this instanceof(a=a||i(25382));if(!o&&!j.call(Writable,this))return new Writable(s);this._writableState=new WritableState(s,this,o),this.writable=!0,s&&(\"function\"==typeof s.write&&(this._write=s.write),\"function\"==typeof s.writev&&(this._writev=s.writev),\"function\"==typeof s.destroy&&(this._destroy=s.destroy),\"function\"==typeof s.final&&(this._final=s.final)),w.call(this)}function doWrite(s,o,i,a,u,_,w){o.writelen=a,o.writecb=w,o.writing=!0,o.sync=!0,o.destroyed?o.onwrite(new Z(\"write\")):i?s._writev(u,o.onwrite):s._write(u,_,o.onwrite),o.sync=!1}function afterWrite(s,o,i,a){i||function onwriteDrain(s,o){0===o.length&&o.needDrain&&(o.needDrain=!1,s.emit(\"drain\"))}(s,o),o.pendingcb--,a(),finishMaybe(s,o)}function clearBuffer(s,o){o.bufferProcessing=!0;var i=o.bufferedRequest;if(s._writev&&i&&i.next){var a=o.bufferedRequestCount,u=new Array(a),_=o.corkedRequestsFree;_.entry=i;for(var w=0,x=!0;i;)u[w]=i,i.isBuf||(x=!1),i=i.next,w+=1;u.allBuffers=x,doWrite(s,o,!0,o.length,u,\"\",_.finish),o.pendingcb++,o.lastBufferedRequest=null,_.next?(o.corkedRequestsFree=_.next,_.next=null):o.corkedRequestsFree=new CorkedRequest(o),o.bufferedRequestCount=0}else{for(;i;){var C=i.chunk,j=i.encoding,L=i.callback;if(doWrite(s,o,!1,o.objectMode?1:C.length,C,j,L),i=i.next,o.bufferedRequestCount--,o.writing)break}null===i&&(o.lastBufferedRequest=null)}o.bufferedRequest=i,o.bufferProcessing=!1}function needFinish(s){return s.ending&&0===s.length&&null===s.bufferedRequest&&!s.finished&&!s.writing}function callFinal(s,o){s._final((function(i){o.pendingcb--,i&&ce(s,i),o.prefinished=!0,s.emit(\"prefinish\"),finishMaybe(s,o)}))}function finishMaybe(s,o){var i=needFinish(o);if(i&&(function prefinish(s,o){o.prefinished||o.finalCalled||(\"function\"!=typeof s._final||o.destroyed?(o.prefinished=!0,s.emit(\"prefinish\")):(o.pendingcb++,o.finalCalled=!0,u.nextTick(callFinal,s,o)))}(s,o),0===o.pendingcb&&(o.finished=!0,s.emit(\"finish\"),o.autoDestroy))){var a=s._readableState;(!a||a.autoDestroy&&a.endEmitted)&&s.destroy()}return i}i(56698)(Writable,w),WritableState.prototype.getBuffer=function getBuffer(){for(var s=this.bufferedRequest,o=[];s;)o.push(s),s=s.next;return o},function(){try{Object.defineProperty(WritableState.prototype,\"buffer\",{get:_.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(s){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(j=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(s){return!!j.call(this,s)||this===Writable&&(s&&s._writableState instanceof WritableState)}})):j=function realHasInstance(s){return s instanceof this},Writable.prototype.pipe=function(){ce(this,new Y)},Writable.prototype.write=function(s,o,i){var a=this._writableState,_=!1,w=!a.objectMode&&function _isUint8Array(s){return x.isBuffer(s)||s instanceof C}(s);return w&&!x.isBuffer(s)&&(s=function _uint8ArrayToBuffer(s){return x.from(s)}(s)),\"function\"==typeof o&&(i=o,o=null),w?o=\"buffer\":o||(o=a.defaultEncoding),\"function\"!=typeof i&&(i=nop),a.ending?function writeAfterEnd(s,o){var i=new ie;ce(s,i),u.nextTick(o,i)}(this,i):(w||function validChunk(s,o,i,a){var _;return null===i?_=new ee:\"string\"==typeof i||o.objectMode||(_=new V(\"chunk\",[\"string\",\"Buffer\"],i)),!_||(ce(s,_),u.nextTick(a,_),!1)}(this,a,s,i))&&(a.pendingcb++,_=function writeOrBuffer(s,o,i,a,u,_){if(!i){var w=function decodeChunk(s,o,i){s.objectMode||!1===s.decodeStrings||\"string\"!=typeof o||(o=x.from(o,i));return o}(o,a,u);a!==w&&(i=!0,u=\"buffer\",a=w)}var C=o.objectMode?1:a.length;o.length+=C;var j=o.length<o.highWaterMark;j||(o.needDrain=!0);if(o.writing||o.corked){var L=o.lastBufferedRequest;o.lastBufferedRequest={chunk:a,encoding:u,isBuf:i,callback:_,next:null},L?L.next=o.lastBufferedRequest:o.bufferedRequest=o.lastBufferedRequest,o.bufferedRequestCount+=1}else doWrite(s,o,!1,C,a,u,_);return j}(this,a,w,s,o,i)),_},Writable.prototype.cork=function(){this._writableState.corked++},Writable.prototype.uncork=function(){var s=this._writableState;s.corked&&(s.corked--,s.writing||s.corked||s.bufferProcessing||!s.bufferedRequest||clearBuffer(this,s))},Writable.prototype.setDefaultEncoding=function setDefaultEncoding(s){if(\"string\"==typeof s&&(s=s.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((s+\"\").toLowerCase())>-1))throw new ae(s);return this._writableState.defaultEncoding=s,this},Object.defineProperty(Writable.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(s,o,i){i(new U(\"_write()\"))},Writable.prototype._writev=null,Writable.prototype.end=function(s,o,i){var a=this._writableState;return\"function\"==typeof s?(i=s,s=null,o=null):\"function\"==typeof o&&(i=o,o=null),null!=s&&this.write(s,o),a.corked&&(a.corked=1,this.uncork()),a.ending||function endWritable(s,o,i){o.ending=!0,finishMaybe(s,o),i&&(o.finished?u.nextTick(i):s.once(\"finish\",i));o.ended=!0,s.writable=!1}(this,a,i),this},Object.defineProperty(Writable.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(s){this._writableState&&(this._writableState.destroyed=s)}}),Writable.prototype.destroy=L.destroy,Writable.prototype._undestroy=L.undestroy,Writable.prototype._destroy=function(s,o){o(s)}},16946:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(98828),_=i(45807),w=Object,x=a(\"\".split);s.exports=u((function(){return!w(\"z\").propertyIsEnumerable(0)}))?function(s){return\"String\"===_(s)?x(s,\"\"):w(s)}:w},16962:(s,o)=>{o.aliasToReal={each:\"forEach\",eachRight:\"forEachRight\",entries:\"toPairs\",entriesIn:\"toPairsIn\",extend:\"assignIn\",extendAll:\"assignInAll\",extendAllWith:\"assignInAllWith\",extendWith:\"assignInWith\",first:\"head\",conforms:\"conformsTo\",matches:\"isMatch\",property:\"get\",__:\"placeholder\",F:\"stubFalse\",T:\"stubTrue\",all:\"every\",allPass:\"overEvery\",always:\"constant\",any:\"some\",anyPass:\"overSome\",apply:\"spread\",assoc:\"set\",assocPath:\"set\",complement:\"negate\",compose:\"flowRight\",contains:\"includes\",dissoc:\"unset\",dissocPath:\"unset\",dropLast:\"dropRight\",dropLastWhile:\"dropRightWhile\",equals:\"isEqual\",identical:\"eq\",indexBy:\"keyBy\",init:\"initial\",invertObj:\"invert\",juxt:\"over\",omitAll:\"omit\",nAry:\"ary\",path:\"get\",pathEq:\"matchesProperty\",pathOr:\"getOr\",paths:\"at\",pickAll:\"pick\",pipe:\"flow\",pluck:\"map\",prop:\"get\",propEq:\"matchesProperty\",propOr:\"getOr\",props:\"at\",symmetricDifference:\"xor\",symmetricDifferenceBy:\"xorBy\",symmetricDifferenceWith:\"xorWith\",takeLast:\"takeRight\",takeLastWhile:\"takeRightWhile\",unapply:\"rest\",unnest:\"flatten\",useWith:\"overArgs\",where:\"conformsTo\",whereEq:\"isMatch\",zipObj:\"zipObject\"},o.aryMethod={1:[\"assignAll\",\"assignInAll\",\"attempt\",\"castArray\",\"ceil\",\"create\",\"curry\",\"curryRight\",\"defaultsAll\",\"defaultsDeepAll\",\"floor\",\"flow\",\"flowRight\",\"fromPairs\",\"invert\",\"iteratee\",\"memoize\",\"method\",\"mergeAll\",\"methodOf\",\"mixin\",\"nthArg\",\"over\",\"overEvery\",\"overSome\",\"rest\",\"reverse\",\"round\",\"runInContext\",\"spread\",\"template\",\"trim\",\"trimEnd\",\"trimStart\",\"uniqueId\",\"words\",\"zipAll\"],2:[\"add\",\"after\",\"ary\",\"assign\",\"assignAllWith\",\"assignIn\",\"assignInAllWith\",\"at\",\"before\",\"bind\",\"bindAll\",\"bindKey\",\"chunk\",\"cloneDeepWith\",\"cloneWith\",\"concat\",\"conformsTo\",\"countBy\",\"curryN\",\"curryRightN\",\"debounce\",\"defaults\",\"defaultsDeep\",\"defaultTo\",\"delay\",\"difference\",\"divide\",\"drop\",\"dropRight\",\"dropRightWhile\",\"dropWhile\",\"endsWith\",\"eq\",\"every\",\"filter\",\"find\",\"findIndex\",\"findKey\",\"findLast\",\"findLastIndex\",\"findLastKey\",\"flatMap\",\"flatMapDeep\",\"flattenDepth\",\"forEach\",\"forEachRight\",\"forIn\",\"forInRight\",\"forOwn\",\"forOwnRight\",\"get\",\"groupBy\",\"gt\",\"gte\",\"has\",\"hasIn\",\"includes\",\"indexOf\",\"intersection\",\"invertBy\",\"invoke\",\"invokeMap\",\"isEqual\",\"isMatch\",\"join\",\"keyBy\",\"lastIndexOf\",\"lt\",\"lte\",\"map\",\"mapKeys\",\"mapValues\",\"matchesProperty\",\"maxBy\",\"meanBy\",\"merge\",\"mergeAllWith\",\"minBy\",\"multiply\",\"nth\",\"omit\",\"omitBy\",\"overArgs\",\"pad\",\"padEnd\",\"padStart\",\"parseInt\",\"partial\",\"partialRight\",\"partition\",\"pick\",\"pickBy\",\"propertyOf\",\"pull\",\"pullAll\",\"pullAt\",\"random\",\"range\",\"rangeRight\",\"rearg\",\"reject\",\"remove\",\"repeat\",\"restFrom\",\"result\",\"sampleSize\",\"some\",\"sortBy\",\"sortedIndex\",\"sortedIndexOf\",\"sortedLastIndex\",\"sortedLastIndexOf\",\"sortedUniqBy\",\"split\",\"spreadFrom\",\"startsWith\",\"subtract\",\"sumBy\",\"take\",\"takeRight\",\"takeRightWhile\",\"takeWhile\",\"tap\",\"throttle\",\"thru\",\"times\",\"trimChars\",\"trimCharsEnd\",\"trimCharsStart\",\"truncate\",\"union\",\"uniqBy\",\"uniqWith\",\"unset\",\"unzipWith\",\"without\",\"wrap\",\"xor\",\"zip\",\"zipObject\",\"zipObjectDeep\"],3:[\"assignInWith\",\"assignWith\",\"clamp\",\"differenceBy\",\"differenceWith\",\"findFrom\",\"findIndexFrom\",\"findLastFrom\",\"findLastIndexFrom\",\"getOr\",\"includesFrom\",\"indexOfFrom\",\"inRange\",\"intersectionBy\",\"intersectionWith\",\"invokeArgs\",\"invokeArgsMap\",\"isEqualWith\",\"isMatchWith\",\"flatMapDepth\",\"lastIndexOfFrom\",\"mergeWith\",\"orderBy\",\"padChars\",\"padCharsEnd\",\"padCharsStart\",\"pullAllBy\",\"pullAllWith\",\"rangeStep\",\"rangeStepRight\",\"reduce\",\"reduceRight\",\"replace\",\"set\",\"slice\",\"sortedIndexBy\",\"sortedLastIndexBy\",\"transform\",\"unionBy\",\"unionWith\",\"update\",\"xorBy\",\"xorWith\",\"zipWith\"],4:[\"fill\",\"setWith\",\"updateWith\"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:\"assign\",assignAllWith:\"assignWith\",assignInAll:\"assignIn\",assignInAllWith:\"assignInWith\",curryN:\"curry\",curryRightN:\"curryRight\",defaultsAll:\"defaults\",defaultsDeepAll:\"defaultsDeep\",findFrom:\"find\",findIndexFrom:\"findIndex\",findLastFrom:\"findLast\",findLastIndexFrom:\"findLastIndex\",getOr:\"get\",includesFrom:\"includes\",indexOfFrom:\"indexOf\",invokeArgs:\"invoke\",invokeArgsMap:\"invokeMap\",lastIndexOfFrom:\"lastIndexOf\",mergeAll:\"merge\",mergeAllWith:\"mergeWith\",padChars:\"pad\",padCharsEnd:\"padEnd\",padCharsStart:\"padStart\",propertyOf:\"get\",rangeStep:\"range\",rangeStepRight:\"rangeRight\",restFrom:\"rest\",spreadFrom:\"spread\",trimChars:\"trim\",trimCharsEnd:\"trimEnd\",trimCharsStart:\"trimStart\",zipAll:\"zip\"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},17255:(s,o,i)=>{var a=i(47422);s.exports=function basePropertyDeep(s){return function(o){return a(o,s)}}},17285:s=>{function source(s){return s?\"string\"==typeof s?s:s.source:null}function lookahead(s){return concat(\"(?=\",s,\")\")}function concat(...s){return s.map((s=>source(s))).join(\"\")}function either(...s){return\"(\"+s.map((s=>source(s))).join(\"|\")+\")\"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat(\"(\",s,\")?\")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:\"symbol\",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\\s/,contains:[{className:\"meta-keyword\",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\\n/}]},u=s.inherit(a,{begin:/\\(/,end:/\\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:\"meta-string\"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:\"meta-string\"}),x={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:\"attr\",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\\s*/,relevance:0,contains:[{className:\"string\",endsParent:!0,variants:[{begin:/\"/,end:/\"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\\s\"'=<>`]+/}]}]}]};return{name:\"HTML, XML\",aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xjb\",\"xsd\",\"xsl\",\"plist\",\"wsf\",\"svg\"],case_insensitive:!0,contains:[{className:\"meta\",begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,w,_,u,{begin:/\\[/,end:/\\]/,contains:[{className:\"meta\",begin:/<![a-z]/,end:/>/,contains:[a,u,w,_]}]}]},s.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\\[CDATA\\[/,end:/\\]\\]>/,relevance:10},i,{className:\"meta\",begin:/<\\?xml/,end:/\\?>/,relevance:10},{className:\"tag\",begin:/<style(?=\\s|>)/,end:/>/,keywords:{name:\"style\"},contains:[x],starts:{end:/<\\/style>/,returnEnd:!0,subLanguage:[\"css\",\"xml\"]}},{className:\"tag\",begin:/<script(?=\\s|>)/,end:/>/,keywords:{name:\"script\"},contains:[x],starts:{end:/<\\/script>/,returnEnd:!0,subLanguage:[\"javascript\",\"handlebars\",\"xml\"]}},{className:\"tag\",begin:/<>|<\\/>/},{className:\"tag\",begin:concat(/</,lookahead(concat(o,either(/\\/>/,/>/,/\\s/)))),end:/\\/?>/,contains:[{className:\"name\",begin:o,relevance:0,starts:x}]},{className:\"tag\",begin:concat(/<\\//,lookahead(concat(o,/>/))),contains:[{className:\"name\",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17400:(s,o,i)=>{var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},17533:s=>{s.exports=function yaml(s){var o=\"true false yes no null\",i=\"[\\\\w#;/?:@&=+$,.~*'()[\\\\]]+\",a={className:\"string\",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/\\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:\"template-variable\",variants:[{begin:/\\{\\{/,end:/\\}\\}/},{begin:/%\\{/,end:/\\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/\"/,end:/\"/},{begin:/[^\\s,{}[\\]]+/}]}),_={className:\"number\",begin:\"\\\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\\\.[0-9]*)?([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\\\b\"},w={end:\",\",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\\{/,end:/\\}/,contains:[w],illegal:\"\\\\n\",relevance:0},C={begin:\"\\\\[\",end:\"\\\\]\",contains:[w],illegal:\"\\\\n\",relevance:0},j=[{className:\"attr\",variants:[{begin:\"\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)\"},{begin:'\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)'},{begin:\"'\\\\w[\\\\w :\\\\/.-]*':(?=[ \\t]|$)\"}]},{className:\"meta\",begin:\"^---\\\\s*$\",relevance:10},{className:\"string\",begin:\"[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*\"},{begin:\"<%[%=-]?\",end:\"[%-]?%>\",subLanguage:\"ruby\",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:\"type\",begin:\"!\\\\w+!\"+i},{className:\"type\",begin:\"!<\"+i+\">\"},{className:\"type\",begin:\"!\"+i},{className:\"type\",begin:\"!!\"+i},{className:\"meta\",begin:\"&\"+s.UNDERSCORE_IDENT_RE+\"$\"},{className:\"meta\",begin:\"\\\\*\"+s.UNDERSCORE_IDENT_RE+\"$\"},{className:\"bullet\",begin:\"-(?=[ ]|$)\",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:\"number\",begin:s.C_NUMBER_RE+\"\\\\b\",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:\"YAML\",case_insensitive:!0,aliases:[\"yml\"],contains:j}}},17670:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},17965:(s,o,i)=>{\"use strict\";var a=i(16426),u={\"text/plain\":\"Text\",\"text/html\":\"Url\",default:\"Text\"};s.exports=function copy(s,o){var i,_,w,x,C,j,L=!1;o||(o={}),i=o.debug||!1;try{if(w=a(),x=document.createRange(),C=document.getSelection(),(j=document.createElement(\"span\")).textContent=s,j.ariaHidden=\"true\",j.style.all=\"unset\",j.style.position=\"fixed\",j.style.top=0,j.style.clip=\"rect(0, 0, 0, 0)\",j.style.whiteSpace=\"pre\",j.style.webkitUserSelect=\"text\",j.style.MozUserSelect=\"text\",j.style.msUserSelect=\"text\",j.style.userSelect=\"text\",j.addEventListener(\"copy\",(function(a){if(a.stopPropagation(),o.format)if(a.preventDefault(),void 0===a.clipboardData){i&&console.warn(\"unable to use e.clipboardData\"),i&&console.warn(\"trying IE specific stuff\"),window.clipboardData.clearData();var _=u[o.format]||u.default;window.clipboardData.setData(_,s)}else a.clipboardData.clearData(),a.clipboardData.setData(o.format,s);o.onCopy&&(a.preventDefault(),o.onCopy(a.clipboardData))})),document.body.appendChild(j),x.selectNodeContents(j),C.addRange(x),!document.execCommand(\"copy\"))throw new Error(\"copy command was unsuccessful\");L=!0}catch(a){i&&console.error(\"unable to copy using execCommand: \",a),i&&console.warn(\"trying IE specific stuff\");try{window.clipboardData.setData(o.format||\"text\",s),o.onCopy&&o.onCopy(window.clipboardData),L=!0}catch(a){i&&console.error(\"unable to copy using clipboardData: \",a),i&&console.error(\"falling back to prompt\"),_=function format(s){var o=(/mac os x/i.test(navigator.userAgent)?\"⌘\":\"Ctrl\")+\"+C\";return s.replace(/#{\\s*key\\s*}/g,o)}(\"message\"in o?o.message:\"Copy to clipboard: #{key}, Enter\"),window.prompt(_,s)}}finally{C&&(\"function\"==typeof C.removeRange?C.removeRange(x):C.removeAllRanges()),j&&document.body.removeChild(j),w()}return L}},18073:(s,o,i)=>{var a=i(85087),u=i(54641),_=i(70981);s.exports=function createRecurry(s,o,i,w,x,C,j,L,B,$){var V=8&o;o|=V?32:64,4&(o&=~(V?64:32))||(o&=-4);var U=[s,o,x,V?C:void 0,V?j:void 0,V?void 0:C,V?void 0:j,L,B,$],z=i.apply(void 0,U);return a(s)&&u(z,U),z.placeholder=w,_(z,s,o)}},19123:(s,o,i)=>{var a=i(65606),u=i(31499),_=i(88310).Stream;function resolve(s,o,i){var a,_=function create_indent(s,o){return new Array(o||0).join(s||\"\")}(o,i=i||0),w=s;if(\"object\"==typeof s&&((w=s[a=Object.keys(s)[0]])&&w._elem))return w._elem.name=a,w._elem.icount=i,w._elem.indent=o,w._elem.indents=_,w._elem.interrupt=w,w._elem;var x,C=[],j=[];function get_attributes(s){Object.keys(s).forEach((function(o){C.push(function attribute(s,o){return s+'=\"'+u(o)+'\"'}(o,s[o]))}))}switch(typeof w){case\"object\":if(null===w)break;w._attr&&get_attributes(w._attr),w._cdata&&j.push((\"<![CDATA[\"+w._cdata).replace(/\\]\\]>/g,\"]]]]><![CDATA[>\")+\"]]>\"),w.forEach&&(x=!1,j.push(\"\"),w.forEach((function(s){\"object\"==typeof s?\"_attr\"==Object.keys(s)[0]?get_attributes(s._attr):j.push(resolve(s,o,i+1)):(j.pop(),x=!0,j.push(u(s)))})),x||j.push(\"\"));break;default:j.push(u(w))}return{name:a,interrupt:!1,attributes:C,content:j,icount:i,indents:_,indent:o}}function format(s,o,i){if(\"object\"!=typeof o)return s(!1,o);var a=o.interrupt?1:o.content.length;function proceed(){for(;o.content.length;){var u=o.content.shift();if(void 0!==u){if(interrupt(u))return;format(s,u)}}s(!1,(a>1?o.indents:\"\")+(o.name?\"</\"+o.name+\">\":\"\")+(o.indent&&!i?\"\\n\":\"\")),i&&i()}function interrupt(o){return!!o.interrupt&&(o.interrupt.append=s,o.interrupt.end=proceed,o.interrupt=!1,s(!0),!0)}if(s(!1,o.indents+(o.name?\"<\"+o.name:\"\")+(o.attributes.length?\" \"+o.attributes.join(\" \"):\"\")+(a?o.name?\">\":\"\":o.name?\"/>\":\"\")+(o.indent&&a>1?\"\\n\":\"\")),!a)return s(!1,o.indent?\"\\n\":\"\");interrupt(o)||proceed()}s.exports=function xml(s,o){\"object\"!=typeof o&&(o={indent:o});var i=o.stream?new _:null,u=\"\",w=!1,x=o.indent?!0===o.indent?\"    \":o.indent:\"\",C=!0;function delay(s){C?a.nextTick(s):s()}function append(s,o){if(void 0!==o&&(u+=o),s&&!w&&(i=i||new _,w=!0),s&&w){var a=u;delay((function(){i.emit(\"data\",a)})),u=\"\"}}function add(s,o){format(append,resolve(s,x,x?1:0),o)}function end(){if(i){var s=u;delay((function(){i.emit(\"data\",s),i.emit(\"end\"),i.readable=!1,i.emit(\"close\")}))}}return delay((function(){C=!1})),o.declaration&&function addXmlDeclaration(s){var o={version:\"1.0\",encoding:s.encoding||\"UTF-8\"};s.standalone&&(o.standalone=s.standalone),add({\"?xml\":{_attr:o}}),u=u.replace(\"/>\",\"?>\")}(o.declaration),s&&s.forEach?s.forEach((function(o,i){var a;i+1===s.length&&(a=end),add(o,a)})):add(s,end),i?(i.readable=!0,i):u},s.exports.element=s.exports.Element=function element(){var s={_elem:resolve(Array.prototype.slice.call(arguments)),push:function(s){if(!this.append)throw new Error(\"not assigned to a parent!\");var o=this,i=this._elem.indent;format(this.append,resolve(s,i,this._elem.icount+(i?1:0)),(function(){o.append(!0)}))},close:function(s){void 0!==s&&this.push(s),this.end&&this.end()}};return s}},19219:s=>{s.exports=function cacheHas(s,o){return s.has(o)}},19287:s=>{\"use strict\";s.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},19358:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(49724),_=i(61626),w=i(88280),x=i(79192),C=i(19595),j=i(54829),L=i(34084),B=i(32096),$=i(39259),V=i(85884),U=i(39447),z=i(7376);s.exports=function(s,o,i,Y){var Z=\"stackTraceLimit\",ee=Y?2:1,ie=s.split(\".\"),ae=ie[ie.length-1],ce=a.apply(null,ie);if(ce){var le=ce.prototype;if(!z&&u(le,\"cause\")&&delete le.cause,!i)return ce;var pe=a(\"Error\"),de=o((function(s,o){var i=B(Y?o:s,void 0),a=Y?new ce(s):new ce;return void 0!==i&&_(a,\"message\",i),V(a,de,a.stack,2),this&&w(le,this)&&L(a,this,de),arguments.length>ee&&$(a,arguments[ee]),a}));if(de.prototype=le,\"Error\"!==ae?x?x(de,pe):C(de,pe,{name:!0}):U&&Z in ce&&(j(de,ce,Z),j(de,ce,\"prepareStackTrace\")),C(de,ce),!z)try{le.name!==ae&&_(le,\"name\",ae),le.constructor=de}catch(s){}return de}}},19570:(s,o,i)=>{var a=i(37334),u=i(93243),_=i(83488),w=u?function(s,o){return u(s,\"toString\",{configurable:!0,enumerable:!1,value:a(o),writable:!0})}:_;s.exports=w},19595:(s,o,i)=>{\"use strict\";var a=i(49724),u=i(11042),_=i(13846),w=i(74284);s.exports=function(s,o,i){for(var x=u(o),C=w.f,j=_.f,L=0;L<x.length;L++){var B=x[L];a(s,B)||i&&a(i,B)||C(s,B,j(o,B))}}},19709:(s,o,i)=>{\"use strict\";var a=i(23034);s.exports=a},19846:(s,o,i)=>{\"use strict\";var a=i(20798),u=i(98828),_=i(45951).String;s.exports=!!Object.getOwnPropertySymbols&&!u((function(){var s=Symbol(\"symbol detection\");return!_(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},19931:(s,o,i)=>{var a=i(31769),u=i(68090),_=i(68969),w=i(77797);s.exports=function baseUnset(s,o){return o=a(o,s),null==(s=_(s,o))||delete s[w(u(o))]}},20181:(s,o,i)=>{var a=/^\\s+|\\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,x=parseInt,C=\"object\"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,j=\"object\"==typeof self&&self&&self.Object===Object&&self,L=C||j||Function(\"return this\")(),B=Object.prototype.toString,$=Math.max,V=Math.min,now=function(){return L.Date.now()};function isObject(s){var o=typeof s;return!!s&&(\"object\"==o||\"function\"==o)}function toNumber(s){if(\"number\"==typeof s)return s;if(function isSymbol(s){return\"symbol\"==typeof s||function isObjectLike(s){return!!s&&\"object\"==typeof s}(s)&&\"[object Symbol]\"==B.call(s)}(s))return NaN;if(isObject(s)){var o=\"function\"==typeof s.valueOf?s.valueOf():s;s=isObject(o)?o+\"\":o}if(\"string\"!=typeof s)return 0===s?s:+s;s=s.replace(a,\"\");var i=_.test(s);return i||w.test(s)?x(s.slice(2),i?2:8):u.test(s)?NaN:+s}s.exports=function debounce(s,o,i){var a,u,_,w,x,C,j=0,L=!1,B=!1,U=!0;if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");function invokeFunc(o){var i=a,_=u;return a=u=void 0,j=o,w=s.apply(_,i)}function shouldInvoke(s){var i=s-C;return void 0===C||i>=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?V(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,U&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B=\"maxWait\"in i)?$(toNumber(i.maxWait)||0,o):_,U=\"trailing\"in i?!!i.trailing:U),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},20317:s=>{s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},20334:(s,o,i)=>{\"use strict\";var a=i(48287).Buffer;class NonError extends Error{constructor(s){super(NonError._prepareSuperMessage(s)),Object.defineProperty(this,\"name\",{value:\"NonError\",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,NonError)}static _prepareSuperMessage(s){try{return JSON.stringify(s)}catch{return String(s)}}}const u=[{property:\"name\",enumerable:!1},{property:\"message\",enumerable:!1},{property:\"stack\",enumerable:!1},{property:\"code\",enumerable:!0}],_=Symbol(\".toJSON called\"),destroyCircular=({from:s,seen:o,to_:i,forceEnumerable:w,maxDepth:x,depth:C})=>{const j=i||(Array.isArray(s)?[]:{});if(o.push(s),C>=x)return j;if(\"function\"==typeof s.toJSON&&!0!==s[_])return(s=>{s[_]=!0;const o=s.toJSON();return delete s[_],o})(s);for(const[i,u]of Object.entries(s))\"function\"==typeof a&&a.isBuffer(u)?j[i]=\"[object Buffer]\":\"function\"!=typeof u&&(u&&\"object\"==typeof u?o.includes(s[i])?j[i]=\"[Circular]\":(C++,j[i]=destroyCircular({from:s[i],seen:o.slice(),forceEnumerable:w,maxDepth:x,depth:C})):j[i]=u);for(const{property:o,enumerable:i}of u)\"string\"==typeof s[o]&&Object.defineProperty(j,o,{value:s[o],enumerable:!!w||i,configurable:!0,writable:!0});return j};s.exports={serializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;return\"object\"==typeof s&&null!==s?destroyCircular({from:s,seen:[],forceEnumerable:!0,maxDepth:i,depth:0}):\"function\"==typeof s?`[Function: ${s.name||\"anonymous\"}]`:s},deserializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;if(s instanceof Error)return s;if(\"object\"==typeof s&&null!==s&&!Array.isArray(s)){const o=new Error;return destroyCircular({from:s,seen:[],to_:o,maxDepth:i,depth:0}),o}return new NonError(s)}}},20426:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},20575:(s,o,i)=>{\"use strict\";var a=i(3121);s.exports=function(s){return a(s.length)}},20798:(s,o,i)=>{\"use strict\";var a,u,_=i(45951),w=i(96794),x=_.process,C=_.Deno,j=x&&x.versions||C&&C.version,L=j&&j.v8;L&&(u=(a=L.split(\".\"))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!u&&w&&(!(a=w.match(/Edge\\/(\\d+)/))||a[1]>=74)&&(a=w.match(/Chrome\\/(\\d+)/))&&(u=+a[1]),s.exports=u},20850:(s,o,i)=>{\"use strict\";s.exports=i(46076)},20999:(s,o,i)=>{var a=i(69302),u=i(36800);s.exports=function createAssigner(s){return a((function(o,i){var a=-1,_=i.length,w=_>1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&\"function\"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},21549:(s,o,i)=>{var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}Hash.prototype.clear=a,Hash.prototype.delete=u,Hash.prototype.get=_,Hash.prototype.has=w,Hash.prototype.set=x,s.exports=Hash},21791:(s,o,i)=>{var a=i(16547),u=i(43360);s.exports=function copyObject(s,o,i,_){var w=!i;i||(i={});for(var x=-1,C=o.length;++x<C;){var j=o[x],L=_?_(i[j],s[j],j,i,s):void 0;void 0===L&&(L=s[j]),w?u(i,j,L):a(i,j,L)}return i}},21986:(s,o,i)=>{var a=i(51873),u=i(37828),_=i(75288),w=i(25911),x=i(20317),C=i(84247),j=a?a.prototype:void 0,L=j?j.valueOf:void 0;s.exports=function equalByTag(s,o,i,a,j,B,$){switch(i){case\"[object DataView]\":if(s.byteLength!=o.byteLength||s.byteOffset!=o.byteOffset)return!1;s=s.buffer,o=o.buffer;case\"[object ArrayBuffer]\":return!(s.byteLength!=o.byteLength||!B(new u(s),new u(o)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return _(+s,+o);case\"[object Error]\":return s.name==o.name&&s.message==o.message;case\"[object RegExp]\":case\"[object String]\":return s==o+\"\";case\"[object Map]\":var V=x;case\"[object Set]\":var U=1&a;if(V||(V=C),s.size!=o.size&&!U)return!1;var z=$.get(s);if(z)return z==o;a|=2,$.set(s,o);var Y=w(V(s),V(o),a,j,B,$);return $.delete(s),Y;case\"[object Symbol]\":if(L)return L.call(s)==L.call(o)}return!1}},22032:(s,o,i)=>{var a=i(81042);s.exports=function hashClear(){this.__data__=a?a(null):{},this.size=0}},22225:s=>{var o=\"\\\\ud800-\\\\udfff\",i=\"\\\\u2700-\\\\u27bf\",a=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",u=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",_=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",w=\"[\"+_+\"]\",x=\"\\\\d+\",C=\"[\"+i+\"]\",j=\"[\"+a+\"]\",L=\"[^\"+o+_+x+i+a+u+\"]\",B=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",$=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",V=\"[\"+u+\"]\",U=\"(?:\"+j+\"|\"+L+\")\",z=\"(?:\"+V+\"|\"+L+\")\",Y=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",Z=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",ee=\"(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?\",ie=\"[\\\\ufe0e\\\\ufe0f]?\",ae=ie+ee+(\"(?:\\\\u200d(?:\"+[\"[^\"+o+\"]\",B,$].join(\"|\")+\")\"+ie+ee+\")*\"),ce=\"(?:\"+[C,B,$].join(\"|\")+\")\"+ae,le=RegExp([V+\"?\"+j+\"+\"+Y+\"(?=\"+[w,V,\"$\"].join(\"|\")+\")\",z+\"+\"+Z+\"(?=\"+[w,V+U,\"$\"].join(\"|\")+\")\",V+\"?\"+U+\"+\"+Y,V+\"+\"+Z,\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",x,ce].join(\"|\"),\"g\");s.exports=function unicodeWords(s){return s.match(le)||[]}},22551:(s,o,i)=>{\"use strict\";var a=i(96540),u=i(69982);function p(s){for(var o=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+s,i=1;i<arguments.length;i++)o+=\"&args[]=\"+encodeURIComponent(arguments[i]);return\"Minified React error #\"+s+\"; visit \"+o+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var _=new Set,w={};function fa(s,o){ha(s,o),ha(s+\"Capture\",o)}function ha(s,o){for(w[s]=o,s=0;s<o.length;s++)_.add(o[s])}var x=!(\"undefined\"==typeof window||void 0===window.document||void 0===window.document.createElement),C=Object.prototype.hasOwnProperty,j=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,L={},B={};function v(s,o,i,a,u,_,w){this.acceptsBooleans=2===o||3===o||4===o,this.attributeName=a,this.attributeNamespace=u,this.mustUseProperty=i,this.propertyName=s,this.type=o,this.sanitizeURL=_,this.removeEmptyString=w}var $={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(s){$[s]=new v(s,0,!1,s,null,!1,!1)})),[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(s){var o=s[0];$[o]=new v(o,1,!1,s[1],null,!1,!1)})),[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(s){$[s]=new v(s,2,!1,s.toLowerCase(),null,!1,!1)})),[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(s){$[s]=new v(s,2,!1,s,null,!1,!1)})),\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(s){$[s]=new v(s,3,!1,s.toLowerCase(),null,!1,!1)})),[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(s){$[s]=new v(s,3,!0,s,null,!1,!1)})),[\"capture\",\"download\"].forEach((function(s){$[s]=new v(s,4,!1,s,null,!1,!1)})),[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(s){$[s]=new v(s,6,!1,s,null,!1,!1)})),[\"rowSpan\",\"start\"].forEach((function(s){$[s]=new v(s,5,!1,s.toLowerCase(),null,!1,!1)}));var V=/[\\-:]([a-z])/g;function sa(s){return s[1].toUpperCase()}function ta(s,o,i,a){var u=$.hasOwnProperty(o)?$[o]:null;(null!==u?0!==u.type:a||!(2<o.length)||\"o\"!==o[0]&&\"O\"!==o[0]||\"n\"!==o[1]&&\"N\"!==o[1])&&(function qa(s,o,i,a){if(null==o||function pa(s,o,i,a){if(null!==i&&0===i.type)return!1;switch(typeof o){case\"function\":case\"symbol\":return!0;case\"boolean\":return!a&&(null!==i?!i.acceptsBooleans:\"data-\"!==(s=s.toLowerCase().slice(0,5))&&\"aria-\"!==s);default:return!1}}(s,o,i,a))return!0;if(a)return!1;if(null!==i)switch(i.type){case 3:return!o;case 4:return!1===o;case 5:return isNaN(o);case 6:return isNaN(o)||1>o}return!1}(o,i,u,a)&&(i=null),a||null===u?function oa(s){return!!C.call(B,s)||!C.call(L,s)&&(j.test(s)?B[s]=!0:(L[s]=!0,!1))}(o)&&(null===i?s.removeAttribute(o):s.setAttribute(o,\"\"+i)):u.mustUseProperty?s[u.propertyName]=null===i?3!==u.type&&\"\":i:(o=u.attributeName,a=u.attributeNamespace,null===i?s.removeAttribute(o):(i=3===(u=u.type)||4===u&&!0===i?\"\":\"\"+i,a?s.setAttributeNS(a,o,i):s.setAttribute(o,i))))}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,null,!1,!1)})),\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,\"http://www.w3.org/1999/xlink\",!1,!1)})),[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(s){var o=s.replace(V,sa);$[o]=new v(o,1,!1,s,\"http://www.w3.org/XML/1998/namespace\",!1,!1)})),[\"tabIndex\",\"crossOrigin\"].forEach((function(s){$[s]=new v(s,1,!1,s.toLowerCase(),null,!1,!1)})),$.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1),[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(s){$[s]=new v(s,1,!1,s.toLowerCase(),null,!0,!0)}));var U=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,z=Symbol.for(\"react.element\"),Y=Symbol.for(\"react.portal\"),Z=Symbol.for(\"react.fragment\"),ee=Symbol.for(\"react.strict_mode\"),ie=Symbol.for(\"react.profiler\"),ae=Symbol.for(\"react.provider\"),ce=Symbol.for(\"react.context\"),le=Symbol.for(\"react.forward_ref\"),pe=Symbol.for(\"react.suspense\"),de=Symbol.for(\"react.suspense_list\"),fe=Symbol.for(\"react.memo\"),ye=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\"),Symbol.for(\"react.debug_trace_mode\");var be=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\"),Symbol.for(\"react.cache\"),Symbol.for(\"react.tracing_marker\");var _e=Symbol.iterator;function Ka(s){return null===s||\"object\"!=typeof s?null:\"function\"==typeof(s=_e&&s[_e]||s[\"@@iterator\"])?s:null}var Se,we=Object.assign;function Ma(s){if(void 0===Se)try{throw Error()}catch(s){var o=s.stack.trim().match(/\\n( *(at )?)/);Se=o&&o[1]||\"\"}return\"\\n\"+Se+s}var xe=!1;function Oa(s,o){if(!s||xe)return\"\";xe=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(o)if(o=function(){throw Error()},Object.defineProperty(o.prototype,\"props\",{set:function(){throw Error()}}),\"object\"==typeof Reflect&&Reflect.construct){try{Reflect.construct(o,[])}catch(s){var a=s}Reflect.construct(s,[],o)}else{try{o.call()}catch(s){a=s}s.call(o.prototype)}else{try{throw Error()}catch(s){a=s}s()}}catch(o){if(o&&a&&\"string\"==typeof o.stack){for(var u=o.stack.split(\"\\n\"),_=a.stack.split(\"\\n\"),w=u.length-1,x=_.length-1;1<=w&&0<=x&&u[w]!==_[x];)x--;for(;1<=w&&0<=x;w--,x--)if(u[w]!==_[x]){if(1!==w||1!==x)do{if(w--,0>--x||u[w]!==_[x]){var C=\"\\n\"+u[w].replace(\" at new \",\" at \");return s.displayName&&C.includes(\"<anonymous>\")&&(C=C.replace(\"<anonymous>\",s.displayName)),C}}while(1<=w&&0<=x);break}}}finally{xe=!1,Error.prepareStackTrace=i}return(s=s?s.displayName||s.name:\"\")?Ma(s):\"\"}function Pa(s){switch(s.tag){case 5:return Ma(s.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return s=Oa(s.type,!1);case 11:return s=Oa(s.type.render,!1);case 1:return s=Oa(s.type,!0);default:return\"\"}}function Qa(s){if(null==s)return null;if(\"function\"==typeof s)return s.displayName||s.name||null;if(\"string\"==typeof s)return s;switch(s){case Z:return\"Fragment\";case Y:return\"Portal\";case ie:return\"Profiler\";case ee:return\"StrictMode\";case pe:return\"Suspense\";case de:return\"SuspenseList\"}if(\"object\"==typeof s)switch(s.$$typeof){case ce:return(s.displayName||\"Context\")+\".Consumer\";case ae:return(s._context.displayName||\"Context\")+\".Provider\";case le:var o=s.render;return(s=s.displayName)||(s=\"\"!==(s=o.displayName||o.name||\"\")?\"ForwardRef(\"+s+\")\":\"ForwardRef\"),s;case fe:return null!==(o=s.displayName||null)?o:Qa(s.type)||\"Memo\";case ye:o=s._payload,s=s._init;try{return Qa(s(o))}catch(s){}}return null}function Ra(s){var o=s.type;switch(s.tag){case 24:return\"Cache\";case 9:return(o.displayName||\"Context\")+\".Consumer\";case 10:return(o._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return s=(s=o.render).displayName||s.name||\"\",o.displayName||(\"\"!==s?\"ForwardRef(\"+s+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return o;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(o);case 8:return o===ee?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"==typeof o)return o.displayName||o.name||null;if(\"string\"==typeof o)return o}return null}function Sa(s){switch(typeof s){case\"boolean\":case\"number\":case\"string\":case\"undefined\":case\"object\":return s;default:return\"\"}}function Ta(s){var o=s.type;return(s=s.nodeName)&&\"input\"===s.toLowerCase()&&(\"checkbox\"===o||\"radio\"===o)}function Va(s){s._valueTracker||(s._valueTracker=function Ua(s){var o=Ta(s)?\"checked\":\"value\",i=Object.getOwnPropertyDescriptor(s.constructor.prototype,o),a=\"\"+s[o];if(!s.hasOwnProperty(o)&&void 0!==i&&\"function\"==typeof i.get&&\"function\"==typeof i.set){var u=i.get,_=i.set;return Object.defineProperty(s,o,{configurable:!0,get:function(){return u.call(this)},set:function(s){a=\"\"+s,_.call(this,s)}}),Object.defineProperty(s,o,{enumerable:i.enumerable}),{getValue:function(){return a},setValue:function(s){a=\"\"+s},stopTracking:function(){s._valueTracker=null,delete s[o]}}}}(s))}function Wa(s){if(!s)return!1;var o=s._valueTracker;if(!o)return!0;var i=o.getValue(),a=\"\";return s&&(a=Ta(s)?s.checked?\"true\":\"false\":s.value),(s=a)!==i&&(o.setValue(s),!0)}function Xa(s){if(void 0===(s=s||(\"undefined\"!=typeof document?document:void 0)))return null;try{return s.activeElement||s.body}catch(o){return s.body}}function Ya(s,o){var i=o.checked;return we({},o,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=i?i:s._wrapperState.initialChecked})}function Za(s,o){var i=null==o.defaultValue?\"\":o.defaultValue,a=null!=o.checked?o.checked:o.defaultChecked;i=Sa(null!=o.value?o.value:i),s._wrapperState={initialChecked:a,initialValue:i,controlled:\"checkbox\"===o.type||\"radio\"===o.type?null!=o.checked:null!=o.value}}function ab(s,o){null!=(o=o.checked)&&ta(s,\"checked\",o,!1)}function bb(s,o){ab(s,o);var i=Sa(o.value),a=o.type;if(null!=i)\"number\"===a?(0===i&&\"\"===s.value||s.value!=i)&&(s.value=\"\"+i):s.value!==\"\"+i&&(s.value=\"\"+i);else if(\"submit\"===a||\"reset\"===a)return void s.removeAttribute(\"value\");o.hasOwnProperty(\"value\")?cb(s,o.type,i):o.hasOwnProperty(\"defaultValue\")&&cb(s,o.type,Sa(o.defaultValue)),null==o.checked&&null!=o.defaultChecked&&(s.defaultChecked=!!o.defaultChecked)}function db(s,o,i){if(o.hasOwnProperty(\"value\")||o.hasOwnProperty(\"defaultValue\")){var a=o.type;if(!(\"submit\"!==a&&\"reset\"!==a||void 0!==o.value&&null!==o.value))return;o=\"\"+s._wrapperState.initialValue,i||o===s.value||(s.value=o),s.defaultValue=o}\"\"!==(i=s.name)&&(s.name=\"\"),s.defaultChecked=!!s._wrapperState.initialChecked,\"\"!==i&&(s.name=i)}function cb(s,o,i){\"number\"===o&&Xa(s.ownerDocument)===s||(null==i?s.defaultValue=\"\"+s._wrapperState.initialValue:s.defaultValue!==\"\"+i&&(s.defaultValue=\"\"+i))}var Pe=Array.isArray;function fb(s,o,i,a){if(s=s.options,o){o={};for(var u=0;u<i.length;u++)o[\"$\"+i[u]]=!0;for(i=0;i<s.length;i++)u=o.hasOwnProperty(\"$\"+s[i].value),s[i].selected!==u&&(s[i].selected=u),u&&a&&(s[i].defaultSelected=!0)}else{for(i=\"\"+Sa(i),o=null,u=0;u<s.length;u++){if(s[u].value===i)return s[u].selected=!0,void(a&&(s[u].defaultSelected=!0));null!==o||s[u].disabled||(o=s[u])}null!==o&&(o.selected=!0)}}function gb(s,o){if(null!=o.dangerouslySetInnerHTML)throw Error(p(91));return we({},o,{value:void 0,defaultValue:void 0,children:\"\"+s._wrapperState.initialValue})}function hb(s,o){var i=o.value;if(null==i){if(i=o.children,o=o.defaultValue,null!=i){if(null!=o)throw Error(p(92));if(Pe(i)){if(1<i.length)throw Error(p(93));i=i[0]}o=i}null==o&&(o=\"\"),i=o}s._wrapperState={initialValue:Sa(i)}}function ib(s,o){var i=Sa(o.value),a=Sa(o.defaultValue);null!=i&&((i=\"\"+i)!==s.value&&(s.value=i),null==o.defaultValue&&s.defaultValue!==i&&(s.defaultValue=i)),null!=a&&(s.defaultValue=\"\"+a)}function jb(s){var o=s.textContent;o===s._wrapperState.initialValue&&\"\"!==o&&null!==o&&(s.value=o)}function kb(s){switch(s){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function lb(s,o){return null==s||\"http://www.w3.org/1999/xhtml\"===s?kb(o):\"http://www.w3.org/2000/svg\"===s&&\"foreignObject\"===o?\"http://www.w3.org/1999/xhtml\":s}var Te,Re,$e=(Re=function(s,o){if(\"http://www.w3.org/2000/svg\"!==s.namespaceURI||\"innerHTML\"in s)s.innerHTML=o;else{for((Te=Te||document.createElement(\"div\")).innerHTML=\"<svg>\"+o.valueOf().toString()+\"</svg>\",o=Te.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;o.firstChild;)s.appendChild(o.firstChild)}},\"undefined\"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(s,o,i,a){MSApp.execUnsafeLocalFunction((function(){return Re(s,o)}))}:Re);function ob(s,o){if(o){var i=s.firstChild;if(i&&i===s.lastChild&&3===i.nodeType)return void(i.nodeValue=o)}s.textContent=o}var qe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ze=[\"Webkit\",\"ms\",\"Moz\",\"O\"];function rb(s,o,i){return null==o||\"boolean\"==typeof o||\"\"===o?\"\":i||\"number\"!=typeof o||0===o||qe.hasOwnProperty(s)&&qe[s]?(\"\"+o).trim():o+\"px\"}function sb(s,o){for(var i in s=s.style,o)if(o.hasOwnProperty(i)){var a=0===i.indexOf(\"--\"),u=rb(i,o[i],a);\"float\"===i&&(i=\"cssFloat\"),a?s.setProperty(i,u):s[i]=u}}Object.keys(qe).forEach((function(s){ze.forEach((function(o){o=o+s.charAt(0).toUpperCase()+s.substring(1),qe[o]=qe[s]}))}));var We=we({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(s,o){if(o){if(We[s]&&(null!=o.children||null!=o.dangerouslySetInnerHTML))throw Error(p(137,s));if(null!=o.dangerouslySetInnerHTML){if(null!=o.children)throw Error(p(60));if(\"object\"!=typeof o.dangerouslySetInnerHTML||!(\"__html\"in o.dangerouslySetInnerHTML))throw Error(p(61))}if(null!=o.style&&\"object\"!=typeof o.style)throw Error(p(62))}}function vb(s,o){if(-1===s.indexOf(\"-\"))return\"string\"==typeof o.is;switch(s){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var He=null;function xb(s){return(s=s.target||s.srcElement||window).correspondingUseElement&&(s=s.correspondingUseElement),3===s.nodeType?s.parentNode:s}var Ye=null,Xe=null,Qe=null;function Bb(s){if(s=Cb(s)){if(\"function\"!=typeof Ye)throw Error(p(280));var o=s.stateNode;o&&(o=Db(o),Ye(s.stateNode,s.type,o))}}function Eb(s){Xe?Qe?Qe.push(s):Qe=[s]:Xe=s}function Fb(){if(Xe){var s=Xe,o=Qe;if(Qe=Xe=null,Bb(s),o)for(s=0;s<o.length;s++)Bb(o[s])}}function Gb(s,o){return s(o)}function Hb(){}var et=!1;function Jb(s,o,i){if(et)return s(o,i);et=!0;try{return Gb(s,o,i)}finally{et=!1,(null!==Xe||null!==Qe)&&(Hb(),Fb())}}function Kb(s,o){var i=s.stateNode;if(null===i)return null;var a=Db(i);if(null===a)return null;i=a[o];e:switch(o){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(a=!a.disabled)||(a=!(\"button\"===(s=s.type)||\"input\"===s||\"select\"===s||\"textarea\"===s)),s=!a;break e;default:s=!1}if(s)return null;if(i&&\"function\"!=typeof i)throw Error(p(231,o,typeof i));return i}var tt=!1;if(x)try{var rt={};Object.defineProperty(rt,\"passive\",{get:function(){tt=!0}}),window.addEventListener(\"test\",rt,rt),window.removeEventListener(\"test\",rt,rt)}catch(Re){tt=!1}function Nb(s,o,i,a,u,_,w,x,C){var j=Array.prototype.slice.call(arguments,3);try{o.apply(i,j)}catch(s){this.onError(s)}}var nt=!1,st=null,ot=!1,it=null,at={onError:function(s){nt=!0,st=s}};function Tb(s,o,i,a,u,_,w,x,C){nt=!1,st=null,Nb.apply(at,arguments)}function Vb(s){var o=s,i=s;if(s.alternate)for(;o.return;)o=o.return;else{s=o;do{!!(4098&(o=s).flags)&&(i=o.return),s=o.return}while(s)}return 3===o.tag?i:null}function Wb(s){if(13===s.tag){var o=s.memoizedState;if(null===o&&(null!==(s=s.alternate)&&(o=s.memoizedState)),null!==o)return o.dehydrated}return null}function Xb(s){if(Vb(s)!==s)throw Error(p(188))}function Zb(s){return null!==(s=function Yb(s){var o=s.alternate;if(!o){if(null===(o=Vb(s)))throw Error(p(188));return o!==s?null:s}for(var i=s,a=o;;){var u=i.return;if(null===u)break;var _=u.alternate;if(null===_){if(null!==(a=u.return)){i=a;continue}break}if(u.child===_.child){for(_=u.child;_;){if(_===i)return Xb(u),s;if(_===a)return Xb(u),o;_=_.sibling}throw Error(p(188))}if(i.return!==a.return)i=u,a=_;else{for(var w=!1,x=u.child;x;){if(x===i){w=!0,i=u,a=_;break}if(x===a){w=!0,a=u,i=_;break}x=x.sibling}if(!w){for(x=_.child;x;){if(x===i){w=!0,i=_,a=u;break}if(x===a){w=!0,a=_,i=u;break}x=x.sibling}if(!w)throw Error(p(189))}}if(i.alternate!==a)throw Error(p(190))}if(3!==i.tag)throw Error(p(188));return i.stateNode.current===i?s:o}(s))?$b(s):null}function $b(s){if(5===s.tag||6===s.tag)return s;for(s=s.child;null!==s;){var o=$b(s);if(null!==o)return o;s=s.sibling}return null}var ct=u.unstable_scheduleCallback,lt=u.unstable_cancelCallback,ut=u.unstable_shouldYield,pt=u.unstable_requestPaint,ht=u.unstable_now,dt=u.unstable_getCurrentPriorityLevel,mt=u.unstable_ImmediatePriority,gt=u.unstable_UserBlockingPriority,yt=u.unstable_NormalPriority,vt=u.unstable_LowPriority,bt=u.unstable_IdlePriority,_t=null,St=null;var Et=Math.clz32?Math.clz32:function nc(s){return s>>>=0,0===s?32:31-(wt(s)/xt|0)|0},wt=Math.log,xt=Math.LN2;var kt=64,Ot=4194304;function tc(s){switch(s&-s){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&s;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&s;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return s}}function uc(s,o){var i=s.pendingLanes;if(0===i)return 0;var a=0,u=s.suspendedLanes,_=s.pingedLanes,w=268435455&i;if(0!==w){var x=w&~u;0!==x?a=tc(x):0!==(_&=w)&&(a=tc(_))}else 0!==(w=i&~u)?a=tc(w):0!==_&&(a=tc(_));if(0===a)return 0;if(0!==o&&o!==a&&!(o&u)&&((u=a&-a)>=(_=o&-o)||16===u&&4194240&_))return o;if(4&a&&(a|=16&i),0!==(o=s.entangledLanes))for(s=s.entanglements,o&=a;0<o;)u=1<<(i=31-Et(o)),a|=s[i],o&=~u;return a}function vc(s,o){switch(s){case 1:case 2:case 4:return o+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o+5e3;default:return-1}}function xc(s){return 0!==(s=-1073741825&s.pendingLanes)?s:1073741824&s?1073741824:0}function yc(){var s=kt;return!(4194240&(kt<<=1))&&(kt=64),s}function zc(s){for(var o=[],i=0;31>i;i++)o.push(s);return o}function Ac(s,o,i){s.pendingLanes|=o,536870912!==o&&(s.suspendedLanes=0,s.pingedLanes=0),(s=s.eventTimes)[o=31-Et(o)]=i}function Cc(s,o){var i=s.entangledLanes|=o;for(s=s.entanglements;i;){var a=31-Et(i),u=1<<a;u&o|s[a]&o&&(s[a]|=o),i&=~u}}var Ct=0;function Dc(s){return 1<(s&=-s)?4<s?268435455&s?16:536870912:4:1}var At,jt,It,Pt,Tt,Nt=!1,Mt=[],Rt=null,Dt=null,Lt=null,Ft=new Map,Bt=new Map,$t=[],qt=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Sc(s,o){switch(s){case\"focusin\":case\"focusout\":Rt=null;break;case\"dragenter\":case\"dragleave\":Dt=null;break;case\"mouseover\":case\"mouseout\":Lt=null;break;case\"pointerover\":case\"pointerout\":Ft.delete(o.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":Bt.delete(o.pointerId)}}function Tc(s,o,i,a,u,_){return null===s||s.nativeEvent!==_?(s={blockedOn:o,domEventName:i,eventSystemFlags:a,nativeEvent:_,targetContainers:[u]},null!==o&&(null!==(o=Cb(o))&&jt(o)),s):(s.eventSystemFlags|=a,o=s.targetContainers,null!==u&&-1===o.indexOf(u)&&o.push(u),s)}function Vc(s){var o=Wc(s.target);if(null!==o){var i=Vb(o);if(null!==i)if(13===(o=i.tag)){if(null!==(o=Wb(i)))return s.blockedOn=o,void Tt(s.priority,(function(){It(i)}))}else if(3===o&&i.stateNode.current.memoizedState.isDehydrated)return void(s.blockedOn=3===i.tag?i.stateNode.containerInfo:null)}s.blockedOn=null}function Xc(s){if(null!==s.blockedOn)return!1;for(var o=s.targetContainers;0<o.length;){var i=Yc(s.domEventName,s.eventSystemFlags,o[0],s.nativeEvent);if(null!==i)return null!==(o=Cb(i))&&jt(o),s.blockedOn=i,!1;var a=new(i=s.nativeEvent).constructor(i.type,i);He=a,i.target.dispatchEvent(a),He=null,o.shift()}return!0}function Zc(s,o,i){Xc(s)&&i.delete(o)}function $c(){Nt=!1,null!==Rt&&Xc(Rt)&&(Rt=null),null!==Dt&&Xc(Dt)&&(Dt=null),null!==Lt&&Xc(Lt)&&(Lt=null),Ft.forEach(Zc),Bt.forEach(Zc)}function ad(s,o){s.blockedOn===o&&(s.blockedOn=null,Nt||(Nt=!0,u.unstable_scheduleCallback(u.unstable_NormalPriority,$c)))}function bd(s){function b(o){return ad(o,s)}if(0<Mt.length){ad(Mt[0],s);for(var o=1;o<Mt.length;o++){var i=Mt[o];i.blockedOn===s&&(i.blockedOn=null)}}for(null!==Rt&&ad(Rt,s),null!==Dt&&ad(Dt,s),null!==Lt&&ad(Lt,s),Ft.forEach(b),Bt.forEach(b),o=0;o<$t.length;o++)(i=$t[o]).blockedOn===s&&(i.blockedOn=null);for(;0<$t.length&&null===(o=$t[0]).blockedOn;)Vc(o),null===o.blockedOn&&$t.shift()}var Vt=U.ReactCurrentBatchConfig,Ut=!0;function ed(s,o,i,a){var u=Ct,_=Vt.transition;Vt.transition=null;try{Ct=1,fd(s,o,i,a)}finally{Ct=u,Vt.transition=_}}function gd(s,o,i,a){var u=Ct,_=Vt.transition;Vt.transition=null;try{Ct=4,fd(s,o,i,a)}finally{Ct=u,Vt.transition=_}}function fd(s,o,i,a){if(Ut){var u=Yc(s,o,i,a);if(null===u)hd(s,o,a,zt,i),Sc(s,a);else if(function Uc(s,o,i,a,u){switch(o){case\"focusin\":return Rt=Tc(Rt,s,o,i,a,u),!0;case\"dragenter\":return Dt=Tc(Dt,s,o,i,a,u),!0;case\"mouseover\":return Lt=Tc(Lt,s,o,i,a,u),!0;case\"pointerover\":var _=u.pointerId;return Ft.set(_,Tc(Ft.get(_)||null,s,o,i,a,u)),!0;case\"gotpointercapture\":return _=u.pointerId,Bt.set(_,Tc(Bt.get(_)||null,s,o,i,a,u)),!0}return!1}(u,s,o,i,a))a.stopPropagation();else if(Sc(s,a),4&o&&-1<qt.indexOf(s)){for(;null!==u;){var _=Cb(u);if(null!==_&&At(_),null===(_=Yc(s,o,i,a))&&hd(s,o,a,zt,i),_===u)break;u=_}null!==u&&a.stopPropagation()}else hd(s,o,a,null,i)}}var zt=null;function Yc(s,o,i,a){if(zt=null,null!==(s=Wc(s=xb(a))))if(null===(o=Vb(s)))s=null;else if(13===(i=o.tag)){if(null!==(s=Wb(o)))return s;s=null}else if(3===i){if(o.stateNode.current.memoizedState.isDehydrated)return 3===o.tag?o.stateNode.containerInfo:null;s=null}else o!==s&&(s=null);return zt=s,null}function jd(s){switch(s){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(dt()){case mt:return 1;case gt:return 4;case yt:case vt:return 16;case bt:return 536870912;default:return 16}default:return 16}}var Wt=null,Jt=null,Ht=null;function nd(){if(Ht)return Ht;var s,o,i=Jt,a=i.length,u=\"value\"in Wt?Wt.value:Wt.textContent,_=u.length;for(s=0;s<a&&i[s]===u[s];s++);var w=a-s;for(o=1;o<=w&&i[a-o]===u[_-o];o++);return Ht=u.slice(s,1<o?1-o:void 0)}function od(s){var o=s.keyCode;return\"charCode\"in s?0===(s=s.charCode)&&13===o&&(s=13):s=o,10===s&&(s=13),32<=s||13===s?s:0}function pd(){return!0}function qd(){return!1}function rd(s){function b(o,i,a,u,_){for(var w in this._reactName=o,this._targetInst=a,this.type=i,this.nativeEvent=u,this.target=_,this.currentTarget=null,s)s.hasOwnProperty(w)&&(o=s[w],this[w]=o?o(u):u[w]);return this.isDefaultPrevented=(null!=u.defaultPrevented?u.defaultPrevented:!1===u.returnValue)?pd:qd,this.isPropagationStopped=qd,this}return we(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():\"unknown\"!=typeof s.returnValue&&(s.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():\"unknown\"!=typeof s.cancelBubble&&(s.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd}),b}var Kt,Gt,Yt,Xt={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(s){return s.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qt=rd(Xt),Zt=we({},Xt,{view:0,detail:0}),er=rd(Zt),tr=we({},Zt,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(s){return void 0===s.relatedTarget?s.fromElement===s.srcElement?s.toElement:s.fromElement:s.relatedTarget},movementX:function(s){return\"movementX\"in s?s.movementX:(s!==Yt&&(Yt&&\"mousemove\"===s.type?(Kt=s.screenX-Yt.screenX,Gt=s.screenY-Yt.screenY):Gt=Kt=0,Yt=s),Kt)},movementY:function(s){return\"movementY\"in s?s.movementY:Gt}}),rr=rd(tr),nr=rd(we({},tr,{dataTransfer:0})),sr=rd(we({},Zt,{relatedTarget:0})),ir=rd(we({},Xt,{animationName:0,elapsedTime:0,pseudoElement:0})),ar=we({},Xt,{clipboardData:function(s){return\"clipboardData\"in s?s.clipboardData:window.clipboardData}}),cr=rd(ar),lr=rd(we({},Xt,{data:0})),ur={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},pr={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},dr={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(s){var o=this.nativeEvent;return o.getModifierState?o.getModifierState(s):!!(s=dr[s])&&!!o[s]}function zd(){return Pd}var fr=we({},Zt,{key:function(s){if(s.key){var o=ur[s.key]||s.key;if(\"Unidentified\"!==o)return o}return\"keypress\"===s.type?13===(s=od(s))?\"Enter\":String.fromCharCode(s):\"keydown\"===s.type||\"keyup\"===s.type?pr[s.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(s){return\"keypress\"===s.type?od(s):0},keyCode:function(s){return\"keydown\"===s.type||\"keyup\"===s.type?s.keyCode:0},which:function(s){return\"keypress\"===s.type?od(s):\"keydown\"===s.type||\"keyup\"===s.type?s.keyCode:0}}),mr=rd(fr),gr=rd(we({},tr,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),yr=rd(we({},Zt,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd})),vr=rd(we({},Xt,{propertyName:0,elapsedTime:0,pseudoElement:0})),br=we({},tr,{deltaX:function(s){return\"deltaX\"in s?s.deltaX:\"wheelDeltaX\"in s?-s.wheelDeltaX:0},deltaY:function(s){return\"deltaY\"in s?s.deltaY:\"wheelDeltaY\"in s?-s.wheelDeltaY:\"wheelDelta\"in s?-s.wheelDelta:0},deltaZ:0,deltaMode:0}),_r=rd(br),Sr=[9,13,27,32],Er=x&&\"CompositionEvent\"in window,wr=null;x&&\"documentMode\"in document&&(wr=document.documentMode);var xr=x&&\"TextEvent\"in window&&!wr,kr=x&&(!Er||wr&&8<wr&&11>=wr),Or=String.fromCharCode(32),Cr=!1;function ge(s,o){switch(s){case\"keyup\":return-1!==Sr.indexOf(o.keyCode);case\"keydown\":return 229!==o.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function he(s){return\"object\"==typeof(s=s.detail)&&\"data\"in s?s.data:null}var Ar=!1;var jr={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(s){var o=s&&s.nodeName&&s.nodeName.toLowerCase();return\"input\"===o?!!jr[s.type]:\"textarea\"===o}function ne(s,o,i,a){Eb(a),0<(o=oe(o,\"onChange\")).length&&(i=new Qt(\"onChange\",\"change\",null,i,a),s.push({event:i,listeners:o}))}var Ir=null,Pr=null;function re(s){se(s,0)}function te(s){if(Wa(ue(s)))return s}function ve(s,o){if(\"change\"===s)return o}var Tr=!1;if(x){var Nr;if(x){var Mr=\"oninput\"in document;if(!Mr){var Rr=document.createElement(\"div\");Rr.setAttribute(\"oninput\",\"return;\"),Mr=\"function\"==typeof Rr.oninput}Nr=Mr}else Nr=!1;Tr=Nr&&(!document.documentMode||9<document.documentMode)}function Ae(){Ir&&(Ir.detachEvent(\"onpropertychange\",Be),Pr=Ir=null)}function Be(s){if(\"value\"===s.propertyName&&te(Pr)){var o=[];ne(o,Pr,s,xb(s)),Jb(re,o)}}function Ce(s,o,i){\"focusin\"===s?(Ae(),Pr=i,(Ir=o).attachEvent(\"onpropertychange\",Be)):\"focusout\"===s&&Ae()}function De(s){if(\"selectionchange\"===s||\"keyup\"===s||\"keydown\"===s)return te(Pr)}function Ee(s,o){if(\"click\"===s)return te(o)}function Fe(s,o){if(\"input\"===s||\"change\"===s)return te(o)}var Dr=\"function\"==typeof Object.is?Object.is:function Ge(s,o){return s===o&&(0!==s||1/s==1/o)||s!=s&&o!=o};function Ie(s,o){if(Dr(s,o))return!0;if(\"object\"!=typeof s||null===s||\"object\"!=typeof o||null===o)return!1;var i=Object.keys(s),a=Object.keys(o);if(i.length!==a.length)return!1;for(a=0;a<i.length;a++){var u=i[a];if(!C.call(o,u)||!Dr(s[u],o[u]))return!1}return!0}function Je(s){for(;s&&s.firstChild;)s=s.firstChild;return s}function Ke(s,o){var i,a=Je(s);for(s=0;a;){if(3===a.nodeType){if(i=s+a.textContent.length,s<=o&&i>=o)return{node:a,offset:o-s};s=i}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Je(a)}}function Le(s,o){return!(!s||!o)&&(s===o||(!s||3!==s.nodeType)&&(o&&3===o.nodeType?Le(s,o.parentNode):\"contains\"in s?s.contains(o):!!s.compareDocumentPosition&&!!(16&s.compareDocumentPosition(o))))}function Me(){for(var s=window,o=Xa();o instanceof s.HTMLIFrameElement;){try{var i=\"string\"==typeof o.contentWindow.location.href}catch(s){i=!1}if(!i)break;o=Xa((s=o.contentWindow).document)}return o}function Ne(s){var o=s&&s.nodeName&&s.nodeName.toLowerCase();return o&&(\"input\"===o&&(\"text\"===s.type||\"search\"===s.type||\"tel\"===s.type||\"url\"===s.type||\"password\"===s.type)||\"textarea\"===o||\"true\"===s.contentEditable)}function Oe(s){var o=Me(),i=s.focusedElem,a=s.selectionRange;if(o!==i&&i&&i.ownerDocument&&Le(i.ownerDocument.documentElement,i)){if(null!==a&&Ne(i))if(o=a.start,void 0===(s=a.end)&&(s=o),\"selectionStart\"in i)i.selectionStart=o,i.selectionEnd=Math.min(s,i.value.length);else if((s=(o=i.ownerDocument||document)&&o.defaultView||window).getSelection){s=s.getSelection();var u=i.textContent.length,_=Math.min(a.start,u);a=void 0===a.end?_:Math.min(a.end,u),!s.extend&&_>a&&(u=a,a=_,_=u),u=Ke(i,_);var w=Ke(i,a);u&&w&&(1!==s.rangeCount||s.anchorNode!==u.node||s.anchorOffset!==u.offset||s.focusNode!==w.node||s.focusOffset!==w.offset)&&((o=o.createRange()).setStart(u.node,u.offset),s.removeAllRanges(),_>a?(s.addRange(o),s.extend(w.node,w.offset)):(o.setEnd(w.node,w.offset),s.addRange(o)))}for(o=[],s=i;s=s.parentNode;)1===s.nodeType&&o.push({element:s,left:s.scrollLeft,top:s.scrollTop});for(\"function\"==typeof i.focus&&i.focus(),i=0;i<o.length;i++)(s=o[i]).element.scrollLeft=s.left,s.element.scrollTop=s.top}}var Lr=x&&\"documentMode\"in document&&11>=document.documentMode,Fr=null,Br=null,$r=null,qr=!1;function Ue(s,o,i){var a=i.window===i?i.document:9===i.nodeType?i:i.ownerDocument;qr||null==Fr||Fr!==Xa(a)||(\"selectionStart\"in(a=Fr)&&Ne(a)?a={start:a.selectionStart,end:a.selectionEnd}:a={anchorNode:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset},$r&&Ie($r,a)||($r=a,0<(a=oe(Br,\"onSelect\")).length&&(o=new Qt(\"onSelect\",\"select\",null,o,i),s.push({event:o,listeners:a}),o.target=Fr)))}function Ve(s,o){var i={};return i[s.toLowerCase()]=o.toLowerCase(),i[\"Webkit\"+s]=\"webkit\"+o,i[\"Moz\"+s]=\"moz\"+o,i}var Vr={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Ur={},zr={};function Ze(s){if(Ur[s])return Ur[s];if(!Vr[s])return s;var o,i=Vr[s];for(o in i)if(i.hasOwnProperty(o)&&o in zr)return Ur[s]=i[o];return s}x&&(zr=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vr.animationend.animation,delete Vr.animationiteration.animation,delete Vr.animationstart.animation),\"TransitionEvent\"in window||delete Vr.transitionend.transition);var Wr=Ze(\"animationend\"),Jr=Ze(\"animationiteration\"),Hr=Ze(\"animationstart\"),Kr=Ze(\"transitionend\"),Gr=new Map,Yr=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function ff(s,o){Gr.set(s,o),fa(o,[s])}for(var Xr=0;Xr<Yr.length;Xr++){var Qr=Yr[Xr];ff(Qr.toLowerCase(),\"on\"+(Qr[0].toUpperCase()+Qr.slice(1)))}ff(Wr,\"onAnimationEnd\"),ff(Jr,\"onAnimationIteration\"),ff(Hr,\"onAnimationStart\"),ff(\"dblclick\",\"onDoubleClick\"),ff(\"focusin\",\"onFocus\"),ff(\"focusout\",\"onBlur\"),ff(Kr,\"onTransitionEnd\"),ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]),ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]),ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]),ha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]),fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \")),fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \")),fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]),fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \")),fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")),fa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Zr=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),en=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Zr));function nf(s,o,i){var a=s.type||\"unknown-event\";s.currentTarget=i,function Ub(s,o,i,a,u,_,w,x,C){if(Tb.apply(this,arguments),nt){if(!nt)throw Error(p(198));var j=st;nt=!1,st=null,ot||(ot=!0,it=j)}}(a,o,void 0,s),s.currentTarget=null}function se(s,o){o=!!(4&o);for(var i=0;i<s.length;i++){var a=s[i],u=a.event;a=a.listeners;e:{var _=void 0;if(o)for(var w=a.length-1;0<=w;w--){var x=a[w],C=x.instance,j=x.currentTarget;if(x=x.listener,C!==_&&u.isPropagationStopped())break e;nf(u,x,j),_=C}else for(w=0;w<a.length;w++){if(C=(x=a[w]).instance,j=x.currentTarget,x=x.listener,C!==_&&u.isPropagationStopped())break e;nf(u,x,j),_=C}}}if(ot)throw s=it,ot=!1,it=null,s}function D(s,o){var i=o[mn];void 0===i&&(i=o[mn]=new Set);var a=s+\"__bubble\";i.has(a)||(pf(o,s,2,!1),i.add(a))}function qf(s,o,i){var a=0;o&&(a|=4),pf(i,s,a,o)}var tn=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(s){if(!s[tn]){s[tn]=!0,_.forEach((function(o){\"selectionchange\"!==o&&(en.has(o)||qf(o,!1,s),qf(o,!0,s))}));var o=9===s.nodeType?s:s.ownerDocument;null===o||o[tn]||(o[tn]=!0,qf(\"selectionchange\",!1,o))}}function pf(s,o,i,a){switch(jd(o)){case 1:var u=ed;break;case 4:u=gd;break;default:u=fd}i=u.bind(null,o,i,s),u=void 0,!tt||\"touchstart\"!==o&&\"touchmove\"!==o&&\"wheel\"!==o||(u=!0),a?void 0!==u?s.addEventListener(o,i,{capture:!0,passive:u}):s.addEventListener(o,i,!0):void 0!==u?s.addEventListener(o,i,{passive:u}):s.addEventListener(o,i,!1)}function hd(s,o,i,a,u){var _=a;if(!(1&o||2&o||null===a))e:for(;;){if(null===a)return;var w=a.tag;if(3===w||4===w){var x=a.stateNode.containerInfo;if(x===u||8===x.nodeType&&x.parentNode===u)break;if(4===w)for(w=a.return;null!==w;){var C=w.tag;if((3===C||4===C)&&((C=w.stateNode.containerInfo)===u||8===C.nodeType&&C.parentNode===u))return;w=w.return}for(;null!==x;){if(null===(w=Wc(x)))return;if(5===(C=w.tag)||6===C){a=_=w;continue e}x=x.parentNode}}a=a.return}Jb((function(){var a=_,u=xb(i),w=[];e:{var x=Gr.get(s);if(void 0!==x){var C=Qt,j=s;switch(s){case\"keypress\":if(0===od(i))break e;case\"keydown\":case\"keyup\":C=mr;break;case\"focusin\":j=\"focus\",C=sr;break;case\"focusout\":j=\"blur\",C=sr;break;case\"beforeblur\":case\"afterblur\":C=sr;break;case\"click\":if(2===i.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":C=rr;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":C=nr;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":C=yr;break;case Wr:case Jr:case Hr:C=ir;break;case Kr:C=vr;break;case\"scroll\":C=er;break;case\"wheel\":C=_r;break;case\"copy\":case\"cut\":case\"paste\":C=cr;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":C=gr}var L=!!(4&o),B=!L&&\"scroll\"===s,$=L?null!==x?x+\"Capture\":null:x;L=[];for(var V,U=a;null!==U;){var z=(V=U).stateNode;if(5===V.tag&&null!==z&&(V=z,null!==$&&(null!=(z=Kb(U,$))&&L.push(tf(U,z,V)))),B)break;U=U.return}0<L.length&&(x=new C(x,j,null,i,u),w.push({event:x,listeners:L}))}}if(!(7&o)){if(C=\"mouseout\"===s||\"pointerout\"===s,(!(x=\"mouseover\"===s||\"pointerover\"===s)||i===He||!(j=i.relatedTarget||i.fromElement)||!Wc(j)&&!j[fn])&&(C||x)&&(x=u.window===u?u:(x=u.ownerDocument)?x.defaultView||x.parentWindow:window,C?(C=a,null!==(j=(j=i.relatedTarget||i.toElement)?Wc(j):null)&&(j!==(B=Vb(j))||5!==j.tag&&6!==j.tag)&&(j=null)):(C=null,j=a),C!==j)){if(L=rr,z=\"onMouseLeave\",$=\"onMouseEnter\",U=\"mouse\",\"pointerout\"!==s&&\"pointerover\"!==s||(L=gr,z=\"onPointerLeave\",$=\"onPointerEnter\",U=\"pointer\"),B=null==C?x:ue(C),V=null==j?x:ue(j),(x=new L(z,U+\"leave\",C,i,u)).target=B,x.relatedTarget=V,z=null,Wc(u)===a&&((L=new L($,U+\"enter\",j,i,u)).target=V,L.relatedTarget=B,z=L),B=z,C&&j)e:{for($=j,U=0,V=L=C;V;V=vf(V))U++;for(V=0,z=$;z;z=vf(z))V++;for(;0<U-V;)L=vf(L),U--;for(;0<V-U;)$=vf($),V--;for(;U--;){if(L===$||null!==$&&L===$.alternate)break e;L=vf(L),$=vf($)}L=null}else L=null;null!==C&&wf(w,x,C,L,!1),null!==j&&null!==B&&wf(w,B,j,L,!0)}if(\"select\"===(C=(x=a?ue(a):window).nodeName&&x.nodeName.toLowerCase())||\"input\"===C&&\"file\"===x.type)var Y=ve;else if(me(x))if(Tr)Y=Fe;else{Y=De;var Z=Ce}else(C=x.nodeName)&&\"input\"===C.toLowerCase()&&(\"checkbox\"===x.type||\"radio\"===x.type)&&(Y=Ee);switch(Y&&(Y=Y(s,a))?ne(w,Y,i,u):(Z&&Z(s,x,a),\"focusout\"===s&&(Z=x._wrapperState)&&Z.controlled&&\"number\"===x.type&&cb(x,\"number\",x.value)),Z=a?ue(a):window,s){case\"focusin\":(me(Z)||\"true\"===Z.contentEditable)&&(Fr=Z,Br=a,$r=null);break;case\"focusout\":$r=Br=Fr=null;break;case\"mousedown\":qr=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":qr=!1,Ue(w,i,u);break;case\"selectionchange\":if(Lr)break;case\"keydown\":case\"keyup\":Ue(w,i,u)}var ee;if(Er)e:{switch(s){case\"compositionstart\":var ie=\"onCompositionStart\";break e;case\"compositionend\":ie=\"onCompositionEnd\";break e;case\"compositionupdate\":ie=\"onCompositionUpdate\";break e}ie=void 0}else Ar?ge(s,i)&&(ie=\"onCompositionEnd\"):\"keydown\"===s&&229===i.keyCode&&(ie=\"onCompositionStart\");ie&&(kr&&\"ko\"!==i.locale&&(Ar||\"onCompositionStart\"!==ie?\"onCompositionEnd\"===ie&&Ar&&(ee=nd()):(Jt=\"value\"in(Wt=u)?Wt.value:Wt.textContent,Ar=!0)),0<(Z=oe(a,ie)).length&&(ie=new lr(ie,s,null,i,u),w.push({event:ie,listeners:Z}),ee?ie.data=ee:null!==(ee=he(i))&&(ie.data=ee))),(ee=xr?function je(s,o){switch(s){case\"compositionend\":return he(o);case\"keypress\":return 32!==o.which?null:(Cr=!0,Or);case\"textInput\":return(s=o.data)===Or&&Cr?null:s;default:return null}}(s,i):function ke(s,o){if(Ar)return\"compositionend\"===s||!Er&&ge(s,o)?(s=nd(),Ht=Jt=Wt=null,Ar=!1,s):null;switch(s){case\"paste\":default:return null;case\"keypress\":if(!(o.ctrlKey||o.altKey||o.metaKey)||o.ctrlKey&&o.altKey){if(o.char&&1<o.char.length)return o.char;if(o.which)return String.fromCharCode(o.which)}return null;case\"compositionend\":return kr&&\"ko\"!==o.locale?null:o.data}}(s,i))&&(0<(a=oe(a,\"onBeforeInput\")).length&&(u=new lr(\"onBeforeInput\",\"beforeinput\",null,i,u),w.push({event:u,listeners:a}),u.data=ee))}se(w,o)}))}function tf(s,o,i){return{instance:s,listener:o,currentTarget:i}}function oe(s,o){for(var i=o+\"Capture\",a=[];null!==s;){var u=s,_=u.stateNode;5===u.tag&&null!==_&&(u=_,null!=(_=Kb(s,i))&&a.unshift(tf(s,_,u)),null!=(_=Kb(s,o))&&a.push(tf(s,_,u))),s=s.return}return a}function vf(s){if(null===s)return null;do{s=s.return}while(s&&5!==s.tag);return s||null}function wf(s,o,i,a,u){for(var _=o._reactName,w=[];null!==i&&i!==a;){var x=i,C=x.alternate,j=x.stateNode;if(null!==C&&C===a)break;5===x.tag&&null!==j&&(x=j,u?null!=(C=Kb(i,_))&&w.unshift(tf(i,C,x)):u||null!=(C=Kb(i,_))&&w.push(tf(i,C,x))),i=i.return}0!==w.length&&s.push({event:o,listeners:w})}var rn=/\\r\\n?/g,nn=/\\u0000|\\uFFFD/g;function zf(s){return(\"string\"==typeof s?s:\"\"+s).replace(rn,\"\\n\").replace(nn,\"\")}function Af(s,o,i){if(o=zf(o),zf(s)!==o&&i)throw Error(p(425))}function Bf(){}var sn=null,on=null;function Ef(s,o){return\"textarea\"===s||\"noscript\"===s||\"string\"==typeof o.children||\"number\"==typeof o.children||\"object\"==typeof o.dangerouslySetInnerHTML&&null!==o.dangerouslySetInnerHTML&&null!=o.dangerouslySetInnerHTML.__html}var an=\"function\"==typeof setTimeout?setTimeout:void 0,cn=\"function\"==typeof clearTimeout?clearTimeout:void 0,ln=\"function\"==typeof Promise?Promise:void 0,un=\"function\"==typeof queueMicrotask?queueMicrotask:void 0!==ln?function(s){return ln.resolve(null).then(s).catch(If)}:an;function If(s){setTimeout((function(){throw s}))}function Kf(s,o){var i=o,a=0;do{var u=i.nextSibling;if(s.removeChild(i),u&&8===u.nodeType)if(\"/$\"===(i=u.data)){if(0===a)return s.removeChild(u),void bd(o);a--}else\"$\"!==i&&\"$?\"!==i&&\"$!\"!==i||a++;i=u}while(i);bd(o)}function Lf(s){for(;null!=s;s=s.nextSibling){var o=s.nodeType;if(1===o||3===o)break;if(8===o){if(\"$\"===(o=s.data)||\"$!\"===o||\"$?\"===o)break;if(\"/$\"===o)return null}}return s}function Mf(s){s=s.previousSibling;for(var o=0;s;){if(8===s.nodeType){var i=s.data;if(\"$\"===i||\"$!\"===i||\"$?\"===i){if(0===o)return s;o--}else\"/$\"===i&&o++}s=s.previousSibling}return null}var pn=Math.random().toString(36).slice(2),hn=\"__reactFiber$\"+pn,dn=\"__reactProps$\"+pn,fn=\"__reactContainer$\"+pn,mn=\"__reactEvents$\"+pn,gn=\"__reactListeners$\"+pn,yn=\"__reactHandles$\"+pn;function Wc(s){var o=s[hn];if(o)return o;for(var i=s.parentNode;i;){if(o=i[fn]||i[hn]){if(i=o.alternate,null!==o.child||null!==i&&null!==i.child)for(s=Mf(s);null!==s;){if(i=s[hn])return i;s=Mf(s)}return o}i=(s=i).parentNode}return null}function Cb(s){return!(s=s[hn]||s[fn])||5!==s.tag&&6!==s.tag&&13!==s.tag&&3!==s.tag?null:s}function ue(s){if(5===s.tag||6===s.tag)return s.stateNode;throw Error(p(33))}function Db(s){return s[dn]||null}var vn=[],bn=-1;function Uf(s){return{current:s}}function E(s){0>bn||(s.current=vn[bn],vn[bn]=null,bn--)}function G(s,o){bn++,vn[bn]=s.current,s.current=o}var _n={},Sn=Uf(_n),En=Uf(!1),wn=_n;function Yf(s,o){var i=s.type.contextTypes;if(!i)return _n;var a=s.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===o)return a.__reactInternalMemoizedMaskedChildContext;var u,_={};for(u in i)_[u]=o[u];return a&&((s=s.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,s.__reactInternalMemoizedMaskedChildContext=_),_}function Zf(s){return null!=(s=s.childContextTypes)}function $f(){E(En),E(Sn)}function ag(s,o,i){if(Sn.current!==_n)throw Error(p(168));G(Sn,o),G(En,i)}function bg(s,o,i){var a=s.stateNode;if(o=o.childContextTypes,\"function\"!=typeof a.getChildContext)return i;for(var u in a=a.getChildContext())if(!(u in o))throw Error(p(108,Ra(s)||\"Unknown\",u));return we({},i,a)}function cg(s){return s=(s=s.stateNode)&&s.__reactInternalMemoizedMergedChildContext||_n,wn=Sn.current,G(Sn,s),G(En,En.current),!0}function dg(s,o,i){var a=s.stateNode;if(!a)throw Error(p(169));i?(s=bg(s,o,wn),a.__reactInternalMemoizedMergedChildContext=s,E(En),E(Sn),G(Sn,s)):E(En),G(En,i)}var xn=null,kn=!1,On=!1;function hg(s){null===xn?xn=[s]:xn.push(s)}function jg(){if(!On&&null!==xn){On=!0;var s=0,o=Ct;try{var i=xn;for(Ct=1;s<i.length;s++){var a=i[s];do{a=a(!0)}while(null!==a)}xn=null,kn=!1}catch(o){throw null!==xn&&(xn=xn.slice(s+1)),ct(mt,jg),o}finally{Ct=o,On=!1}}return null}var Cn=[],An=0,jn=null,In=0,Pn=[],Tn=0,Nn=null,Mn=1,Rn=\"\";function tg(s,o){Cn[An++]=In,Cn[An++]=jn,jn=s,In=o}function ug(s,o,i){Pn[Tn++]=Mn,Pn[Tn++]=Rn,Pn[Tn++]=Nn,Nn=s;var a=Mn;s=Rn;var u=32-Et(a)-1;a&=~(1<<u),i+=1;var _=32-Et(o)+u;if(30<_){var w=u-u%5;_=(a&(1<<w)-1).toString(32),a>>=w,u-=w,Mn=1<<32-Et(o)+u|i<<u|a,Rn=_+s}else Mn=1<<_|i<<u|a,Rn=s}function vg(s){null!==s.return&&(tg(s,1),ug(s,1,0))}function wg(s){for(;s===jn;)jn=Cn[--An],Cn[An]=null,In=Cn[--An],Cn[An]=null;for(;s===Nn;)Nn=Pn[--Tn],Pn[Tn]=null,Rn=Pn[--Tn],Pn[Tn]=null,Mn=Pn[--Tn],Pn[Tn]=null}var Dn=null,Ln=null,Fn=!1,Bn=null;function Ag(s,o){var i=Bg(5,null,null,0);i.elementType=\"DELETED\",i.stateNode=o,i.return=s,null===(o=s.deletions)?(s.deletions=[i],s.flags|=16):o.push(i)}function Cg(s,o){switch(s.tag){case 5:var i=s.type;return null!==(o=1!==o.nodeType||i.toLowerCase()!==o.nodeName.toLowerCase()?null:o)&&(s.stateNode=o,Dn=s,Ln=Lf(o.firstChild),!0);case 6:return null!==(o=\"\"===s.pendingProps||3!==o.nodeType?null:o)&&(s.stateNode=o,Dn=s,Ln=null,!0);case 13:return null!==(o=8!==o.nodeType?null:o)&&(i=null!==Nn?{id:Mn,overflow:Rn}:null,s.memoizedState={dehydrated:o,treeContext:i,retryLane:1073741824},(i=Bg(18,null,null,0)).stateNode=o,i.return=s,s.child=i,Dn=s,Ln=null,!0);default:return!1}}function Dg(s){return!(!(1&s.mode)||128&s.flags)}function Eg(s){if(Fn){var o=Ln;if(o){var i=o;if(!Cg(s,o)){if(Dg(s))throw Error(p(418));o=Lf(i.nextSibling);var a=Dn;o&&Cg(s,o)?Ag(a,i):(s.flags=-4097&s.flags|2,Fn=!1,Dn=s)}}else{if(Dg(s))throw Error(p(418));s.flags=-4097&s.flags|2,Fn=!1,Dn=s}}}function Fg(s){for(s=s.return;null!==s&&5!==s.tag&&3!==s.tag&&13!==s.tag;)s=s.return;Dn=s}function Gg(s){if(s!==Dn)return!1;if(!Fn)return Fg(s),Fn=!0,!1;var o;if((o=3!==s.tag)&&!(o=5!==s.tag)&&(o=\"head\"!==(o=s.type)&&\"body\"!==o&&!Ef(s.type,s.memoizedProps)),o&&(o=Ln)){if(Dg(s))throw Hg(),Error(p(418));for(;o;)Ag(s,o),o=Lf(o.nextSibling)}if(Fg(s),13===s.tag){if(!(s=null!==(s=s.memoizedState)?s.dehydrated:null))throw Error(p(317));e:{for(s=s.nextSibling,o=0;s;){if(8===s.nodeType){var i=s.data;if(\"/$\"===i){if(0===o){Ln=Lf(s.nextSibling);break e}o--}else\"$\"!==i&&\"$!\"!==i&&\"$?\"!==i||o++}s=s.nextSibling}Ln=null}}else Ln=Dn?Lf(s.stateNode.nextSibling):null;return!0}function Hg(){for(var s=Ln;s;)s=Lf(s.nextSibling)}function Ig(){Ln=Dn=null,Fn=!1}function Jg(s){null===Bn?Bn=[s]:Bn.push(s)}var $n=U.ReactCurrentBatchConfig;function Lg(s,o,i){if(null!==(s=i.ref)&&\"function\"!=typeof s&&\"object\"!=typeof s){if(i._owner){if(i=i._owner){if(1!==i.tag)throw Error(p(309));var a=i.stateNode}if(!a)throw Error(p(147,s));var u=a,_=\"\"+s;return null!==o&&null!==o.ref&&\"function\"==typeof o.ref&&o.ref._stringRef===_?o.ref:(o=function(s){var o=u.refs;null===s?delete o[_]:o[_]=s},o._stringRef=_,o)}if(\"string\"!=typeof s)throw Error(p(284));if(!i._owner)throw Error(p(290,s))}return s}function Mg(s,o){throw s=Object.prototype.toString.call(o),Error(p(31,\"[object Object]\"===s?\"object with keys {\"+Object.keys(o).join(\", \")+\"}\":s))}function Ng(s){return(0,s._init)(s._payload)}function Og(s){function b(o,i){if(s){var a=o.deletions;null===a?(o.deletions=[i],o.flags|=16):a.push(i)}}function c(o,i){if(!s)return null;for(;null!==i;)b(o,i),i=i.sibling;return null}function d(s,o){for(s=new Map;null!==o;)null!==o.key?s.set(o.key,o):s.set(o.index,o),o=o.sibling;return s}function e(s,o){return(s=Pg(s,o)).index=0,s.sibling=null,s}function f(o,i,a){return o.index=a,s?null!==(a=o.alternate)?(a=a.index)<i?(o.flags|=2,i):a:(o.flags|=2,i):(o.flags|=1048576,i)}function g(o){return s&&null===o.alternate&&(o.flags|=2),o}function h(s,o,i,a){return null===o||6!==o.tag?((o=Qg(i,s.mode,a)).return=s,o):((o=e(o,i)).return=s,o)}function k(s,o,i,a){var u=i.type;return u===Z?m(s,o,i.props.children,a,i.key):null!==o&&(o.elementType===u||\"object\"==typeof u&&null!==u&&u.$$typeof===ye&&Ng(u)===o.type)?((a=e(o,i.props)).ref=Lg(s,o,i),a.return=s,a):((a=Rg(i.type,i.key,i.props,null,s.mode,a)).ref=Lg(s,o,i),a.return=s,a)}function l(s,o,i,a){return null===o||4!==o.tag||o.stateNode.containerInfo!==i.containerInfo||o.stateNode.implementation!==i.implementation?((o=Sg(i,s.mode,a)).return=s,o):((o=e(o,i.children||[])).return=s,o)}function m(s,o,i,a,u){return null===o||7!==o.tag?((o=Tg(i,s.mode,a,u)).return=s,o):((o=e(o,i)).return=s,o)}function q(s,o,i){if(\"string\"==typeof o&&\"\"!==o||\"number\"==typeof o)return(o=Qg(\"\"+o,s.mode,i)).return=s,o;if(\"object\"==typeof o&&null!==o){switch(o.$$typeof){case z:return(i=Rg(o.type,o.key,o.props,null,s.mode,i)).ref=Lg(s,null,o),i.return=s,i;case Y:return(o=Sg(o,s.mode,i)).return=s,o;case ye:return q(s,(0,o._init)(o._payload),i)}if(Pe(o)||Ka(o))return(o=Tg(o,s.mode,i,null)).return=s,o;Mg(s,o)}return null}function r(s,o,i,a){var u=null!==o?o.key:null;if(\"string\"==typeof i&&\"\"!==i||\"number\"==typeof i)return null!==u?null:h(s,o,\"\"+i,a);if(\"object\"==typeof i&&null!==i){switch(i.$$typeof){case z:return i.key===u?k(s,o,i,a):null;case Y:return i.key===u?l(s,o,i,a):null;case ye:return r(s,o,(u=i._init)(i._payload),a)}if(Pe(i)||Ka(i))return null!==u?null:m(s,o,i,a,null);Mg(s,i)}return null}function y(s,o,i,a,u){if(\"string\"==typeof a&&\"\"!==a||\"number\"==typeof a)return h(o,s=s.get(i)||null,\"\"+a,u);if(\"object\"==typeof a&&null!==a){switch(a.$$typeof){case z:return k(o,s=s.get(null===a.key?i:a.key)||null,a,u);case Y:return l(o,s=s.get(null===a.key?i:a.key)||null,a,u);case ye:return y(s,o,i,(0,a._init)(a._payload),u)}if(Pe(a)||Ka(a))return m(o,s=s.get(i)||null,a,u,null);Mg(o,a)}return null}function n(o,i,a,u){for(var _=null,w=null,x=i,C=i=0,j=null;null!==x&&C<a.length;C++){x.index>C?(j=x,x=null):j=x.sibling;var L=r(o,x,a[C],u);if(null===L){null===x&&(x=j);break}s&&x&&null===L.alternate&&b(o,x),i=f(L,i,C),null===w?_=L:w.sibling=L,w=L,x=j}if(C===a.length)return c(o,x),Fn&&tg(o,C),_;if(null===x){for(;C<a.length;C++)null!==(x=q(o,a[C],u))&&(i=f(x,i,C),null===w?_=x:w.sibling=x,w=x);return Fn&&tg(o,C),_}for(x=d(o,x);C<a.length;C++)null!==(j=y(x,o,C,a[C],u))&&(s&&null!==j.alternate&&x.delete(null===j.key?C:j.key),i=f(j,i,C),null===w?_=j:w.sibling=j,w=j);return s&&x.forEach((function(s){return b(o,s)})),Fn&&tg(o,C),_}function t(o,i,a,u){var _=Ka(a);if(\"function\"!=typeof _)throw Error(p(150));if(null==(a=_.call(a)))throw Error(p(151));for(var w=_=null,x=i,C=i=0,j=null,L=a.next();null!==x&&!L.done;C++,L=a.next()){x.index>C?(j=x,x=null):j=x.sibling;var B=r(o,x,L.value,u);if(null===B){null===x&&(x=j);break}s&&x&&null===B.alternate&&b(o,x),i=f(B,i,C),null===w?_=B:w.sibling=B,w=B,x=j}if(L.done)return c(o,x),Fn&&tg(o,C),_;if(null===x){for(;!L.done;C++,L=a.next())null!==(L=q(o,L.value,u))&&(i=f(L,i,C),null===w?_=L:w.sibling=L,w=L);return Fn&&tg(o,C),_}for(x=d(o,x);!L.done;C++,L=a.next())null!==(L=y(x,o,C,L.value,u))&&(s&&null!==L.alternate&&x.delete(null===L.key?C:L.key),i=f(L,i,C),null===w?_=L:w.sibling=L,w=L);return s&&x.forEach((function(s){return b(o,s)})),Fn&&tg(o,C),_}return function J(s,o,i,a){if(\"object\"==typeof i&&null!==i&&i.type===Z&&null===i.key&&(i=i.props.children),\"object\"==typeof i&&null!==i){switch(i.$$typeof){case z:e:{for(var u=i.key,_=o;null!==_;){if(_.key===u){if((u=i.type)===Z){if(7===_.tag){c(s,_.sibling),(o=e(_,i.props.children)).return=s,s=o;break e}}else if(_.elementType===u||\"object\"==typeof u&&null!==u&&u.$$typeof===ye&&Ng(u)===_.type){c(s,_.sibling),(o=e(_,i.props)).ref=Lg(s,_,i),o.return=s,s=o;break e}c(s,_);break}b(s,_),_=_.sibling}i.type===Z?((o=Tg(i.props.children,s.mode,a,i.key)).return=s,s=o):((a=Rg(i.type,i.key,i.props,null,s.mode,a)).ref=Lg(s,o,i),a.return=s,s=a)}return g(s);case Y:e:{for(_=i.key;null!==o;){if(o.key===_){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){c(s,o.sibling),(o=e(o,i.children||[])).return=s,s=o;break e}c(s,o);break}b(s,o),o=o.sibling}(o=Sg(i,s.mode,a)).return=s,s=o}return g(s);case ye:return J(s,o,(_=i._init)(i._payload),a)}if(Pe(i))return n(s,o,i,a);if(Ka(i))return t(s,o,i,a);Mg(s,i)}return\"string\"==typeof i&&\"\"!==i||\"number\"==typeof i?(i=\"\"+i,null!==o&&6===o.tag?(c(s,o.sibling),(o=e(o,i)).return=s,s=o):(c(s,o),(o=Qg(i,s.mode,a)).return=s,s=o),g(s)):c(s,o)}}var qn=Og(!0),Vn=Og(!1),Un=Uf(null),zn=null,Wn=null,Jn=null;function $g(){Jn=Wn=zn=null}function ah(s){var o=Un.current;E(Un),s._currentValue=o}function bh(s,o,i){for(;null!==s;){var a=s.alternate;if((s.childLanes&o)!==o?(s.childLanes|=o,null!==a&&(a.childLanes|=o)):null!==a&&(a.childLanes&o)!==o&&(a.childLanes|=o),s===i)break;s=s.return}}function ch(s,o){zn=s,Jn=Wn=null,null!==(s=s.dependencies)&&null!==s.firstContext&&(!!(s.lanes&o)&&(bs=!0),s.firstContext=null)}function eh(s){var o=s._currentValue;if(Jn!==s)if(s={context:s,memoizedValue:o,next:null},null===Wn){if(null===zn)throw Error(p(308));Wn=s,zn.dependencies={lanes:0,firstContext:s}}else Wn=Wn.next=s;return o}var Hn=null;function gh(s){null===Hn?Hn=[s]:Hn.push(s)}function hh(s,o,i,a){var u=o.interleaved;return null===u?(i.next=i,gh(o)):(i.next=u.next,u.next=i),o.interleaved=i,ih(s,a)}function ih(s,o){s.lanes|=o;var i=s.alternate;for(null!==i&&(i.lanes|=o),i=s,s=s.return;null!==s;)s.childLanes|=o,null!==(i=s.alternate)&&(i.childLanes|=o),i=s,s=s.return;return 3===i.tag?i.stateNode:null}var Kn=!1;function kh(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function lh(s,o){s=s.updateQueue,o.updateQueue===s&&(o.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,effects:s.effects})}function mh(s,o){return{eventTime:s,lane:o,tag:0,payload:null,callback:null,next:null}}function nh(s,o,i){var a=s.updateQueue;if(null===a)return null;if(a=a.shared,2&Ls){var u=a.pending;return null===u?o.next=o:(o.next=u.next,u.next=o),a.pending=o,ih(s,i)}return null===(u=a.interleaved)?(o.next=o,gh(a)):(o.next=u.next,u.next=o),a.interleaved=o,ih(s,i)}function oh(s,o,i){if(null!==(o=o.updateQueue)&&(o=o.shared,4194240&i)){var a=o.lanes;i|=a&=s.pendingLanes,o.lanes=i,Cc(s,i)}}function ph(s,o){var i=s.updateQueue,a=s.alternate;if(null!==a&&i===(a=a.updateQueue)){var u=null,_=null;if(null!==(i=i.firstBaseUpdate)){do{var w={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};null===_?u=_=w:_=_.next=w,i=i.next}while(null!==i);null===_?u=_=o:_=_.next=o}else u=_=o;return i={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:_,shared:a.shared,effects:a.effects},void(s.updateQueue=i)}null===(s=i.lastBaseUpdate)?i.firstBaseUpdate=o:s.next=o,i.lastBaseUpdate=o}function qh(s,o,i,a){var u=s.updateQueue;Kn=!1;var _=u.firstBaseUpdate,w=u.lastBaseUpdate,x=u.shared.pending;if(null!==x){u.shared.pending=null;var C=x,j=C.next;C.next=null,null===w?_=j:w.next=j,w=C;var L=s.alternate;null!==L&&((x=(L=L.updateQueue).lastBaseUpdate)!==w&&(null===x?L.firstBaseUpdate=j:x.next=j,L.lastBaseUpdate=C))}if(null!==_){var B=u.baseState;for(w=0,L=j=C=null,x=_;;){var $=x.lane,V=x.eventTime;if((a&$)===$){null!==L&&(L=L.next={eventTime:V,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var U=s,z=x;switch($=o,V=i,z.tag){case 1:if(\"function\"==typeof(U=z.payload)){B=U.call(V,B,$);break e}B=U;break e;case 3:U.flags=-65537&U.flags|128;case 0:if(null==($=\"function\"==typeof(U=z.payload)?U.call(V,B,$):U))break e;B=we({},B,$);break e;case 2:Kn=!0}}null!==x.callback&&0!==x.lane&&(s.flags|=64,null===($=u.effects)?u.effects=[x]:$.push(x))}else V={eventTime:V,lane:$,tag:x.tag,payload:x.payload,callback:x.callback,next:null},null===L?(j=L=V,C=B):L=L.next=V,w|=$;if(null===(x=x.next)){if(null===(x=u.shared.pending))break;x=($=x).next,$.next=null,u.lastBaseUpdate=$,u.shared.pending=null}}if(null===L&&(C=B),u.baseState=C,u.firstBaseUpdate=j,u.lastBaseUpdate=L,null!==(o=u.shared.interleaved)){u=o;do{w|=u.lane,u=u.next}while(u!==o)}else null===_&&(u.shared.lanes=0);Ws|=w,s.lanes=w,s.memoizedState=B}}function sh(s,o,i){if(s=o.effects,o.effects=null,null!==s)for(o=0;o<s.length;o++){var a=s[o],u=a.callback;if(null!==u){if(a.callback=null,a=i,\"function\"!=typeof u)throw Error(p(191,u));u.call(a)}}}var Gn={},Yn=Uf(Gn),Xn=Uf(Gn),Qn=Uf(Gn);function xh(s){if(s===Gn)throw Error(p(174));return s}function yh(s,o){switch(G(Qn,o),G(Xn,s),G(Yn,Gn),s=o.nodeType){case 9:case 11:o=(o=o.documentElement)?o.namespaceURI:lb(null,\"\");break;default:o=lb(o=(s=8===s?o.parentNode:o).namespaceURI||null,s=s.tagName)}E(Yn),G(Yn,o)}function zh(){E(Yn),E(Xn),E(Qn)}function Ah(s){xh(Qn.current);var o=xh(Yn.current),i=lb(o,s.type);o!==i&&(G(Xn,s),G(Yn,i))}function Bh(s){Xn.current===s&&(E(Yn),E(Xn))}var Zn=Uf(0);function Ch(s){for(var o=s;null!==o;){if(13===o.tag){var i=o.memoizedState;if(null!==i&&(null===(i=i.dehydrated)||\"$?\"===i.data||\"$!\"===i.data))return o}else if(19===o.tag&&void 0!==o.memoizedProps.revealOrder){if(128&o.flags)return o}else if(null!==o.child){o.child.return=o,o=o.child;continue}if(o===s)break;for(;null===o.sibling;){if(null===o.return||o.return===s)return null;o=o.return}o.sibling.return=o.return,o=o.sibling}return null}var es=[];function Eh(){for(var s=0;s<es.length;s++)es[s]._workInProgressVersionPrimary=null;es.length=0}var ts=U.ReactCurrentDispatcher,rs=U.ReactCurrentBatchConfig,ns=0,ss=null,os=null,as=null,cs=!1,ls=!1,us=0,ps=0;function P(){throw Error(p(321))}function Mh(s,o){if(null===o)return!1;for(var i=0;i<o.length&&i<s.length;i++)if(!Dr(s[i],o[i]))return!1;return!0}function Nh(s,o,i,a,u,_){if(ns=_,ss=o,o.memoizedState=null,o.updateQueue=null,o.lanes=0,ts.current=null===s||null===s.memoizedState?ds:fs,s=i(a,u),ls){_=0;do{if(ls=!1,us=0,25<=_)throw Error(p(301));_+=1,as=os=null,o.updateQueue=null,ts.current=ms,s=i(a,u)}while(ls)}if(ts.current=hs,o=null!==os&&null!==os.next,ns=0,as=os=ss=null,cs=!1,o)throw Error(p(300));return s}function Sh(){var s=0!==us;return us=0,s}function Th(){var s={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===as?ss.memoizedState=as=s:as=as.next=s,as}function Uh(){if(null===os){var s=ss.alternate;s=null!==s?s.memoizedState:null}else s=os.next;var o=null===as?ss.memoizedState:as.next;if(null!==o)as=o,os=s;else{if(null===s)throw Error(p(310));s={memoizedState:(os=s).memoizedState,baseState:os.baseState,baseQueue:os.baseQueue,queue:os.queue,next:null},null===as?ss.memoizedState=as=s:as=as.next=s}return as}function Vh(s,o){return\"function\"==typeof o?o(s):o}function Wh(s){var o=Uh(),i=o.queue;if(null===i)throw Error(p(311));i.lastRenderedReducer=s;var a=os,u=a.baseQueue,_=i.pending;if(null!==_){if(null!==u){var w=u.next;u.next=_.next,_.next=w}a.baseQueue=u=_,i.pending=null}if(null!==u){_=u.next,a=a.baseState;var x=w=null,C=null,j=_;do{var L=j.lane;if((ns&L)===L)null!==C&&(C=C.next={lane:0,action:j.action,hasEagerState:j.hasEagerState,eagerState:j.eagerState,next:null}),a=j.hasEagerState?j.eagerState:s(a,j.action);else{var B={lane:L,action:j.action,hasEagerState:j.hasEagerState,eagerState:j.eagerState,next:null};null===C?(x=C=B,w=a):C=C.next=B,ss.lanes|=L,Ws|=L}j=j.next}while(null!==j&&j!==_);null===C?w=a:C.next=x,Dr(a,o.memoizedState)||(bs=!0),o.memoizedState=a,o.baseState=w,o.baseQueue=C,i.lastRenderedState=a}if(null!==(s=i.interleaved)){u=s;do{_=u.lane,ss.lanes|=_,Ws|=_,u=u.next}while(u!==s)}else null===u&&(i.lanes=0);return[o.memoizedState,i.dispatch]}function Xh(s){var o=Uh(),i=o.queue;if(null===i)throw Error(p(311));i.lastRenderedReducer=s;var a=i.dispatch,u=i.pending,_=o.memoizedState;if(null!==u){i.pending=null;var w=u=u.next;do{_=s(_,w.action),w=w.next}while(w!==u);Dr(_,o.memoizedState)||(bs=!0),o.memoizedState=_,null===o.baseQueue&&(o.baseState=_),i.lastRenderedState=_}return[_,a]}function Yh(){}function Zh(s,o){var i=ss,a=Uh(),u=o(),_=!Dr(a.memoizedState,u);if(_&&(a.memoizedState=u,bs=!0),a=a.queue,$h(ai.bind(null,i,a,s),[s]),a.getSnapshot!==o||_||null!==as&&1&as.memoizedState.tag){if(i.flags|=2048,bi(9,ci.bind(null,i,a,u,o),void 0,null),null===Fs)throw Error(p(349));30&ns||di(i,o,u)}return u}function di(s,o,i){s.flags|=16384,s={getSnapshot:o,value:i},null===(o=ss.updateQueue)?(o={lastEffect:null,stores:null},ss.updateQueue=o,o.stores=[s]):null===(i=o.stores)?o.stores=[s]:i.push(s)}function ci(s,o,i,a){o.value=i,o.getSnapshot=a,ei(o)&&fi(s)}function ai(s,o,i){return i((function(){ei(o)&&fi(s)}))}function ei(s){var o=s.getSnapshot;s=s.value;try{var i=o();return!Dr(s,i)}catch(s){return!0}}function fi(s){var o=ih(s,1);null!==o&&gi(o,s,1,-1)}function hi(s){var o=Th();return\"function\"==typeof s&&(s=s()),o.memoizedState=o.baseState=s,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:s},o.queue=s,s=s.dispatch=ii.bind(null,ss,s),[o.memoizedState,s]}function bi(s,o,i,a){return s={tag:s,create:o,destroy:i,deps:a,next:null},null===(o=ss.updateQueue)?(o={lastEffect:null,stores:null},ss.updateQueue=o,o.lastEffect=s.next=s):null===(i=o.lastEffect)?o.lastEffect=s.next=s:(a=i.next,i.next=s,s.next=a,o.lastEffect=s),s}function ji(){return Uh().memoizedState}function ki(s,o,i,a){var u=Th();ss.flags|=s,u.memoizedState=bi(1|o,i,void 0,void 0===a?null:a)}function li(s,o,i,a){var u=Uh();a=void 0===a?null:a;var _=void 0;if(null!==os){var w=os.memoizedState;if(_=w.destroy,null!==a&&Mh(a,w.deps))return void(u.memoizedState=bi(o,i,_,a))}ss.flags|=s,u.memoizedState=bi(1|o,i,_,a)}function mi(s,o){return ki(8390656,8,s,o)}function $h(s,o){return li(2048,8,s,o)}function ni(s,o){return li(4,2,s,o)}function oi(s,o){return li(4,4,s,o)}function pi(s,o){return\"function\"==typeof o?(s=s(),o(s),function(){o(null)}):null!=o?(s=s(),o.current=s,function(){o.current=null}):void 0}function qi(s,o,i){return i=null!=i?i.concat([s]):null,li(4,4,pi.bind(null,o,s),i)}function ri(){}function si(s,o){var i=Uh();o=void 0===o?null:o;var a=i.memoizedState;return null!==a&&null!==o&&Mh(o,a[1])?a[0]:(i.memoizedState=[s,o],s)}function ti(s,o){var i=Uh();o=void 0===o?null:o;var a=i.memoizedState;return null!==a&&null!==o&&Mh(o,a[1])?a[0]:(s=s(),i.memoizedState=[s,o],s)}function ui(s,o,i){return 21&ns?(Dr(i,o)||(i=yc(),ss.lanes|=i,Ws|=i,s.baseState=!0),o):(s.baseState&&(s.baseState=!1,bs=!0),s.memoizedState=i)}function vi(s,o){var i=Ct;Ct=0!==i&&4>i?i:4,s(!0);var a=rs.transition;rs.transition={};try{s(!1),o()}finally{Ct=i,rs.transition=a}}function wi(){return Uh().memoizedState}function xi(s,o,i){var a=yi(s);if(i={lane:a,action:i,hasEagerState:!1,eagerState:null,next:null},zi(s))Ai(o,i);else if(null!==(i=hh(s,o,i,a))){gi(i,s,a,R()),Bi(i,o,a)}}function ii(s,o,i){var a=yi(s),u={lane:a,action:i,hasEagerState:!1,eagerState:null,next:null};if(zi(s))Ai(o,u);else{var _=s.alternate;if(0===s.lanes&&(null===_||0===_.lanes)&&null!==(_=o.lastRenderedReducer))try{var w=o.lastRenderedState,x=_(w,i);if(u.hasEagerState=!0,u.eagerState=x,Dr(x,w)){var C=o.interleaved;return null===C?(u.next=u,gh(o)):(u.next=C.next,C.next=u),void(o.interleaved=u)}}catch(s){}null!==(i=hh(s,o,u,a))&&(gi(i,s,a,u=R()),Bi(i,o,a))}}function zi(s){var o=s.alternate;return s===ss||null!==o&&o===ss}function Ai(s,o){ls=cs=!0;var i=s.pending;null===i?o.next=o:(o.next=i.next,i.next=o),s.pending=o}function Bi(s,o,i){if(4194240&i){var a=o.lanes;i|=a&=s.pendingLanes,o.lanes=i,Cc(s,i)}}var hs={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},ds={readContext:eh,useCallback:function(s,o){return Th().memoizedState=[s,void 0===o?null:o],s},useContext:eh,useEffect:mi,useImperativeHandle:function(s,o,i){return i=null!=i?i.concat([s]):null,ki(4194308,4,pi.bind(null,o,s),i)},useLayoutEffect:function(s,o){return ki(4194308,4,s,o)},useInsertionEffect:function(s,o){return ki(4,2,s,o)},useMemo:function(s,o){var i=Th();return o=void 0===o?null:o,s=s(),i.memoizedState=[s,o],s},useReducer:function(s,o,i){var a=Th();return o=void 0!==i?i(o):o,a.memoizedState=a.baseState=o,s={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:o},a.queue=s,s=s.dispatch=xi.bind(null,ss,s),[a.memoizedState,s]},useRef:function(s){return s={current:s},Th().memoizedState=s},useState:hi,useDebugValue:ri,useDeferredValue:function(s){return Th().memoizedState=s},useTransition:function(){var s=hi(!1),o=s[0];return s=vi.bind(null,s[1]),Th().memoizedState=s,[o,s]},useMutableSource:function(){},useSyncExternalStore:function(s,o,i){var a=ss,u=Th();if(Fn){if(void 0===i)throw Error(p(407));i=i()}else{if(i=o(),null===Fs)throw Error(p(349));30&ns||di(a,o,i)}u.memoizedState=i;var _={value:i,getSnapshot:o};return u.queue=_,mi(ai.bind(null,a,_,s),[s]),a.flags|=2048,bi(9,ci.bind(null,a,_,i,o),void 0,null),i},useId:function(){var s=Th(),o=Fs.identifierPrefix;if(Fn){var i=Rn;o=\":\"+o+\"R\"+(i=(Mn&~(1<<32-Et(Mn)-1)).toString(32)+i),0<(i=us++)&&(o+=\"H\"+i.toString(32)),o+=\":\"}else o=\":\"+o+\"r\"+(i=ps++).toString(32)+\":\";return s.memoizedState=o},unstable_isNewReconciler:!1},fs={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},useDebugValue:ri,useDeferredValue:function(s){return ui(Uh(),os.memoizedState,s)},useTransition:function(){return[Wh(Vh)[0],Uh().memoizedState]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},ms={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(s){var o=Uh();return null===os?o.memoizedState=s:ui(o,os.memoizedState,s)},useTransition:function(){return[Xh(Vh)[0],Uh().memoizedState]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(s,o){if(s&&s.defaultProps){for(var i in o=we({},o),s=s.defaultProps)void 0===o[i]&&(o[i]=s[i]);return o}return o}function Di(s,o,i,a){i=null==(i=i(a,o=s.memoizedState))?o:we({},o,i),s.memoizedState=i,0===s.lanes&&(s.updateQueue.baseState=i)}var gs={isMounted:function(s){return!!(s=s._reactInternals)&&Vb(s)===s},enqueueSetState:function(s,o,i){s=s._reactInternals;var a=R(),u=yi(s),_=mh(a,u);_.payload=o,null!=i&&(_.callback=i),null!==(o=nh(s,_,u))&&(gi(o,s,u,a),oh(o,s,u))},enqueueReplaceState:function(s,o,i){s=s._reactInternals;var a=R(),u=yi(s),_=mh(a,u);_.tag=1,_.payload=o,null!=i&&(_.callback=i),null!==(o=nh(s,_,u))&&(gi(o,s,u,a),oh(o,s,u))},enqueueForceUpdate:function(s,o){s=s._reactInternals;var i=R(),a=yi(s),u=mh(i,a);u.tag=2,null!=o&&(u.callback=o),null!==(o=nh(s,u,a))&&(gi(o,s,a,i),oh(o,s,a))}};function Fi(s,o,i,a,u,_,w){return\"function\"==typeof(s=s.stateNode).shouldComponentUpdate?s.shouldComponentUpdate(a,_,w):!o.prototype||!o.prototype.isPureReactComponent||(!Ie(i,a)||!Ie(u,_))}function Gi(s,o,i){var a=!1,u=_n,_=o.contextType;return\"object\"==typeof _&&null!==_?_=eh(_):(u=Zf(o)?wn:Sn.current,_=(a=null!=(a=o.contextTypes))?Yf(s,u):_n),o=new o(i,_),s.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=gs,s.stateNode=o,o._reactInternals=s,a&&((s=s.stateNode).__reactInternalMemoizedUnmaskedChildContext=u,s.__reactInternalMemoizedMaskedChildContext=_),o}function Hi(s,o,i,a){s=o.state,\"function\"==typeof o.componentWillReceiveProps&&o.componentWillReceiveProps(i,a),\"function\"==typeof o.UNSAFE_componentWillReceiveProps&&o.UNSAFE_componentWillReceiveProps(i,a),o.state!==s&&gs.enqueueReplaceState(o,o.state,null)}function Ii(s,o,i,a){var u=s.stateNode;u.props=i,u.state=s.memoizedState,u.refs={},kh(s);var _=o.contextType;\"object\"==typeof _&&null!==_?u.context=eh(_):(_=Zf(o)?wn:Sn.current,u.context=Yf(s,_)),u.state=s.memoizedState,\"function\"==typeof(_=o.getDerivedStateFromProps)&&(Di(s,o,_,i),u.state=s.memoizedState),\"function\"==typeof o.getDerivedStateFromProps||\"function\"==typeof u.getSnapshotBeforeUpdate||\"function\"!=typeof u.UNSAFE_componentWillMount&&\"function\"!=typeof u.componentWillMount||(o=u.state,\"function\"==typeof u.componentWillMount&&u.componentWillMount(),\"function\"==typeof u.UNSAFE_componentWillMount&&u.UNSAFE_componentWillMount(),o!==u.state&&gs.enqueueReplaceState(u,u.state,null),qh(s,i,u,a),u.state=s.memoizedState),\"function\"==typeof u.componentDidMount&&(s.flags|=4194308)}function Ji(s,o){try{var i=\"\",a=o;do{i+=Pa(a),a=a.return}while(a);var u=i}catch(s){u=\"\\nError generating stack: \"+s.message+\"\\n\"+s.stack}return{value:s,source:o,stack:u,digest:null}}function Ki(s,o,i){return{value:s,source:null,stack:null!=i?i:null,digest:null!=o?o:null}}function Li(s,o){try{console.error(o.value)}catch(s){setTimeout((function(){throw s}))}}var ys=\"function\"==typeof WeakMap?WeakMap:Map;function Ni(s,o,i){(i=mh(-1,i)).tag=3,i.payload={element:null};var a=o.value;return i.callback=function(){Zs||(Zs=!0,eo=a),Li(0,o)},i}function Qi(s,o,i){(i=mh(-1,i)).tag=3;var a=s.type.getDerivedStateFromError;if(\"function\"==typeof a){var u=o.value;i.payload=function(){return a(u)},i.callback=function(){Li(0,o)}}var _=s.stateNode;return null!==_&&\"function\"==typeof _.componentDidCatch&&(i.callback=function(){Li(0,o),\"function\"!=typeof a&&(null===to?to=new Set([this]):to.add(this));var s=o.stack;this.componentDidCatch(o.value,{componentStack:null!==s?s:\"\"})}),i}function Si(s,o,i){var a=s.pingCache;if(null===a){a=s.pingCache=new ys;var u=new Set;a.set(o,u)}else void 0===(u=a.get(o))&&(u=new Set,a.set(o,u));u.has(i)||(u.add(i),s=Ti.bind(null,s,o,i),o.then(s,s))}function Ui(s){do{var o;if((o=13===s.tag)&&(o=null===(o=s.memoizedState)||null!==o.dehydrated),o)return s;s=s.return}while(null!==s);return null}function Vi(s,o,i,a,u){return 1&s.mode?(s.flags|=65536,s.lanes=u,s):(s===o?s.flags|=65536:(s.flags|=128,i.flags|=131072,i.flags&=-52805,1===i.tag&&(null===i.alternate?i.tag=17:((o=mh(-1,1)).tag=2,nh(i,o,1))),i.lanes|=1),s)}var vs=U.ReactCurrentOwner,bs=!1;function Xi(s,o,i,a){o.child=null===s?Vn(o,null,i,a):qn(o,s.child,i,a)}function Yi(s,o,i,a,u){i=i.render;var _=o.ref;return ch(o,u),a=Nh(s,o,i,a,_,u),i=Sh(),null===s||bs?(Fn&&i&&vg(o),o.flags|=1,Xi(s,o,a,u),o.child):(o.updateQueue=s.updateQueue,o.flags&=-2053,s.lanes&=~u,Zi(s,o,u))}function $i(s,o,i,a,u){if(null===s){var _=i.type;return\"function\"!=typeof _||aj(_)||void 0!==_.defaultProps||null!==i.compare||void 0!==i.defaultProps?((s=Rg(i.type,null,a,o,o.mode,u)).ref=o.ref,s.return=o,o.child=s):(o.tag=15,o.type=_,bj(s,o,_,a,u))}if(_=s.child,!(s.lanes&u)){var w=_.memoizedProps;if((i=null!==(i=i.compare)?i:Ie)(w,a)&&s.ref===o.ref)return Zi(s,o,u)}return o.flags|=1,(s=Pg(_,a)).ref=o.ref,s.return=o,o.child=s}function bj(s,o,i,a,u){if(null!==s){var _=s.memoizedProps;if(Ie(_,a)&&s.ref===o.ref){if(bs=!1,o.pendingProps=a=_,!(s.lanes&u))return o.lanes=s.lanes,Zi(s,o,u);131072&s.flags&&(bs=!0)}}return cj(s,o,i,a,u)}function dj(s,o,i){var a=o.pendingProps,u=a.children,_=null!==s?s.memoizedState:null;if(\"hidden\"===a.mode)if(1&o.mode){if(!(1073741824&i))return s=null!==_?_.baseLanes|i:i,o.lanes=o.childLanes=1073741824,o.memoizedState={baseLanes:s,cachePool:null,transitions:null},o.updateQueue=null,G(Vs,qs),qs|=s,null;o.memoizedState={baseLanes:0,cachePool:null,transitions:null},a=null!==_?_.baseLanes:i,G(Vs,qs),qs|=a}else o.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(Vs,qs),qs|=i;else null!==_?(a=_.baseLanes|i,o.memoizedState=null):a=i,G(Vs,qs),qs|=a;return Xi(s,o,u,i),o.child}function gj(s,o){var i=o.ref;(null===s&&null!==i||null!==s&&s.ref!==i)&&(o.flags|=512,o.flags|=2097152)}function cj(s,o,i,a,u){var _=Zf(i)?wn:Sn.current;return _=Yf(o,_),ch(o,u),i=Nh(s,o,i,a,_,u),a=Sh(),null===s||bs?(Fn&&a&&vg(o),o.flags|=1,Xi(s,o,i,u),o.child):(o.updateQueue=s.updateQueue,o.flags&=-2053,s.lanes&=~u,Zi(s,o,u))}function hj(s,o,i,a,u){if(Zf(i)){var _=!0;cg(o)}else _=!1;if(ch(o,u),null===o.stateNode)ij(s,o),Gi(o,i,a),Ii(o,i,a,u),a=!0;else if(null===s){var w=o.stateNode,x=o.memoizedProps;w.props=x;var C=w.context,j=i.contextType;\"object\"==typeof j&&null!==j?j=eh(j):j=Yf(o,j=Zf(i)?wn:Sn.current);var L=i.getDerivedStateFromProps,B=\"function\"==typeof L||\"function\"==typeof w.getSnapshotBeforeUpdate;B||\"function\"!=typeof w.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof w.componentWillReceiveProps||(x!==a||C!==j)&&Hi(o,w,a,j),Kn=!1;var $=o.memoizedState;w.state=$,qh(o,a,w,u),C=o.memoizedState,x!==a||$!==C||En.current||Kn?(\"function\"==typeof L&&(Di(o,i,L,a),C=o.memoizedState),(x=Kn||Fi(o,i,x,a,$,C,j))?(B||\"function\"!=typeof w.UNSAFE_componentWillMount&&\"function\"!=typeof w.componentWillMount||(\"function\"==typeof w.componentWillMount&&w.componentWillMount(),\"function\"==typeof w.UNSAFE_componentWillMount&&w.UNSAFE_componentWillMount()),\"function\"==typeof w.componentDidMount&&(o.flags|=4194308)):(\"function\"==typeof w.componentDidMount&&(o.flags|=4194308),o.memoizedProps=a,o.memoizedState=C),w.props=a,w.state=C,w.context=j,a=x):(\"function\"==typeof w.componentDidMount&&(o.flags|=4194308),a=!1)}else{w=o.stateNode,lh(s,o),x=o.memoizedProps,j=o.type===o.elementType?x:Ci(o.type,x),w.props=j,B=o.pendingProps,$=w.context,\"object\"==typeof(C=i.contextType)&&null!==C?C=eh(C):C=Yf(o,C=Zf(i)?wn:Sn.current);var V=i.getDerivedStateFromProps;(L=\"function\"==typeof V||\"function\"==typeof w.getSnapshotBeforeUpdate)||\"function\"!=typeof w.UNSAFE_componentWillReceiveProps&&\"function\"!=typeof w.componentWillReceiveProps||(x!==B||$!==C)&&Hi(o,w,a,C),Kn=!1,$=o.memoizedState,w.state=$,qh(o,a,w,u);var U=o.memoizedState;x!==B||$!==U||En.current||Kn?(\"function\"==typeof V&&(Di(o,i,V,a),U=o.memoizedState),(j=Kn||Fi(o,i,j,a,$,U,C)||!1)?(L||\"function\"!=typeof w.UNSAFE_componentWillUpdate&&\"function\"!=typeof w.componentWillUpdate||(\"function\"==typeof w.componentWillUpdate&&w.componentWillUpdate(a,U,C),\"function\"==typeof w.UNSAFE_componentWillUpdate&&w.UNSAFE_componentWillUpdate(a,U,C)),\"function\"==typeof w.componentDidUpdate&&(o.flags|=4),\"function\"==typeof w.getSnapshotBeforeUpdate&&(o.flags|=1024)):(\"function\"!=typeof w.componentDidUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=4),\"function\"!=typeof w.getSnapshotBeforeUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=1024),o.memoizedProps=a,o.memoizedState=U),w.props=a,w.state=U,w.context=C,a=j):(\"function\"!=typeof w.componentDidUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=4),\"function\"!=typeof w.getSnapshotBeforeUpdate||x===s.memoizedProps&&$===s.memoizedState||(o.flags|=1024),a=!1)}return jj(s,o,i,a,_,u)}function jj(s,o,i,a,u,_){gj(s,o);var w=!!(128&o.flags);if(!a&&!w)return u&&dg(o,i,!1),Zi(s,o,_);a=o.stateNode,vs.current=o;var x=w&&\"function\"!=typeof i.getDerivedStateFromError?null:a.render();return o.flags|=1,null!==s&&w?(o.child=qn(o,s.child,null,_),o.child=qn(o,null,x,_)):Xi(s,o,x,_),o.memoizedState=a.state,u&&dg(o,i,!0),o.child}function kj(s){var o=s.stateNode;o.pendingContext?ag(0,o.pendingContext,o.pendingContext!==o.context):o.context&&ag(0,o.context,!1),yh(s,o.containerInfo)}function lj(s,o,i,a,u){return Ig(),Jg(u),o.flags|=256,Xi(s,o,i,a),o.child}var _s,Ss,Es,ws,xs={dehydrated:null,treeContext:null,retryLane:0};function nj(s){return{baseLanes:s,cachePool:null,transitions:null}}function oj(s,o,i){var a,u=o.pendingProps,_=Zn.current,w=!1,x=!!(128&o.flags);if((a=x)||(a=(null===s||null!==s.memoizedState)&&!!(2&_)),a?(w=!0,o.flags&=-129):null!==s&&null===s.memoizedState||(_|=1),G(Zn,1&_),null===s)return Eg(o),null!==(s=o.memoizedState)&&null!==(s=s.dehydrated)?(1&o.mode?\"$!\"===s.data?o.lanes=8:o.lanes=1073741824:o.lanes=1,null):(x=u.children,s=u.fallback,w?(u=o.mode,w=o.child,x={mode:\"hidden\",children:x},1&u||null===w?w=pj(x,u,0,null):(w.childLanes=0,w.pendingProps=x),s=Tg(s,u,i,null),w.return=o,s.return=o,w.sibling=s,o.child=w,o.child.memoizedState=nj(i),o.memoizedState=xs,s):qj(o,x));if(null!==(_=s.memoizedState)&&null!==(a=_.dehydrated))return function rj(s,o,i,a,u,_,w){if(i)return 256&o.flags?(o.flags&=-257,sj(s,o,w,a=Ki(Error(p(422))))):null!==o.memoizedState?(o.child=s.child,o.flags|=128,null):(_=a.fallback,u=o.mode,a=pj({mode:\"visible\",children:a.children},u,0,null),(_=Tg(_,u,w,null)).flags|=2,a.return=o,_.return=o,a.sibling=_,o.child=a,1&o.mode&&qn(o,s.child,null,w),o.child.memoizedState=nj(w),o.memoizedState=xs,_);if(!(1&o.mode))return sj(s,o,w,null);if(\"$!\"===u.data){if(a=u.nextSibling&&u.nextSibling.dataset)var x=a.dgst;return a=x,sj(s,o,w,a=Ki(_=Error(p(419)),a,void 0))}if(x=!!(w&s.childLanes),bs||x){if(null!==(a=Fs)){switch(w&-w){case 4:u=2;break;case 16:u=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:u=32;break;case 536870912:u=268435456;break;default:u=0}0!==(u=u&(a.suspendedLanes|w)?0:u)&&u!==_.retryLane&&(_.retryLane=u,ih(s,u),gi(a,s,u,-1))}return tj(),sj(s,o,w,a=Ki(Error(p(421))))}return\"$?\"===u.data?(o.flags|=128,o.child=s.child,o=uj.bind(null,s),u._reactRetry=o,null):(s=_.treeContext,Ln=Lf(u.nextSibling),Dn=o,Fn=!0,Bn=null,null!==s&&(Pn[Tn++]=Mn,Pn[Tn++]=Rn,Pn[Tn++]=Nn,Mn=s.id,Rn=s.overflow,Nn=o),o=qj(o,a.children),o.flags|=4096,o)}(s,o,x,u,a,_,i);if(w){w=u.fallback,x=o.mode,a=(_=s.child).sibling;var C={mode:\"hidden\",children:u.children};return 1&x||o.child===_?(u=Pg(_,C)).subtreeFlags=14680064&_.subtreeFlags:((u=o.child).childLanes=0,u.pendingProps=C,o.deletions=null),null!==a?w=Pg(a,w):(w=Tg(w,x,i,null)).flags|=2,w.return=o,u.return=o,u.sibling=w,o.child=u,u=w,w=o.child,x=null===(x=s.child.memoizedState)?nj(i):{baseLanes:x.baseLanes|i,cachePool:null,transitions:x.transitions},w.memoizedState=x,w.childLanes=s.childLanes&~i,o.memoizedState=xs,u}return s=(w=s.child).sibling,u=Pg(w,{mode:\"visible\",children:u.children}),!(1&o.mode)&&(u.lanes=i),u.return=o,u.sibling=null,null!==s&&(null===(i=o.deletions)?(o.deletions=[s],o.flags|=16):i.push(s)),o.child=u,o.memoizedState=null,u}function qj(s,o){return(o=pj({mode:\"visible\",children:o},s.mode,0,null)).return=s,s.child=o}function sj(s,o,i,a){return null!==a&&Jg(a),qn(o,s.child,null,i),(s=qj(o,o.pendingProps.children)).flags|=2,o.memoizedState=null,s}function vj(s,o,i){s.lanes|=o;var a=s.alternate;null!==a&&(a.lanes|=o),bh(s.return,o,i)}function wj(s,o,i,a,u){var _=s.memoizedState;null===_?s.memoizedState={isBackwards:o,rendering:null,renderingStartTime:0,last:a,tail:i,tailMode:u}:(_.isBackwards=o,_.rendering=null,_.renderingStartTime=0,_.last=a,_.tail=i,_.tailMode=u)}function xj(s,o,i){var a=o.pendingProps,u=a.revealOrder,_=a.tail;if(Xi(s,o,a.children,i),2&(a=Zn.current))a=1&a|2,o.flags|=128;else{if(null!==s&&128&s.flags)e:for(s=o.child;null!==s;){if(13===s.tag)null!==s.memoizedState&&vj(s,i,o);else if(19===s.tag)vj(s,i,o);else if(null!==s.child){s.child.return=s,s=s.child;continue}if(s===o)break e;for(;null===s.sibling;){if(null===s.return||s.return===o)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}a&=1}if(G(Zn,a),1&o.mode)switch(u){case\"forwards\":for(i=o.child,u=null;null!==i;)null!==(s=i.alternate)&&null===Ch(s)&&(u=i),i=i.sibling;null===(i=u)?(u=o.child,o.child=null):(u=i.sibling,i.sibling=null),wj(o,!1,u,i,_);break;case\"backwards\":for(i=null,u=o.child,o.child=null;null!==u;){if(null!==(s=u.alternate)&&null===Ch(s)){o.child=u;break}s=u.sibling,u.sibling=i,i=u,u=s}wj(o,!0,i,null,_);break;case\"together\":wj(o,!1,null,null,void 0);break;default:o.memoizedState=null}else o.memoizedState=null;return o.child}function ij(s,o){!(1&o.mode)&&null!==s&&(s.alternate=null,o.alternate=null,o.flags|=2)}function Zi(s,o,i){if(null!==s&&(o.dependencies=s.dependencies),Ws|=o.lanes,!(i&o.childLanes))return null;if(null!==s&&o.child!==s.child)throw Error(p(153));if(null!==o.child){for(i=Pg(s=o.child,s.pendingProps),o.child=i,i.return=o;null!==s.sibling;)s=s.sibling,(i=i.sibling=Pg(s,s.pendingProps)).return=o;i.sibling=null}return o.child}function Dj(s,o){if(!Fn)switch(s.tailMode){case\"hidden\":o=s.tail;for(var i=null;null!==o;)null!==o.alternate&&(i=o),o=o.sibling;null===i?s.tail=null:i.sibling=null;break;case\"collapsed\":i=s.tail;for(var a=null;null!==i;)null!==i.alternate&&(a=i),i=i.sibling;null===a?o||null===s.tail?s.tail=null:s.tail.sibling=null:a.sibling=null}}function S(s){var o=null!==s.alternate&&s.alternate.child===s.child,i=0,a=0;if(o)for(var u=s.child;null!==u;)i|=u.lanes|u.childLanes,a|=14680064&u.subtreeFlags,a|=14680064&u.flags,u.return=s,u=u.sibling;else for(u=s.child;null!==u;)i|=u.lanes|u.childLanes,a|=u.subtreeFlags,a|=u.flags,u.return=s,u=u.sibling;return s.subtreeFlags|=a,s.childLanes=i,o}function Ej(s,o,i){var a=o.pendingProps;switch(wg(o),o.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(o),null;case 1:case 17:return Zf(o.type)&&$f(),S(o),null;case 3:return a=o.stateNode,zh(),E(En),E(Sn),Eh(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),null!==s&&null!==s.child||(Gg(o)?o.flags|=4:null===s||s.memoizedState.isDehydrated&&!(256&o.flags)||(o.flags|=1024,null!==Bn&&(Fj(Bn),Bn=null))),Ss(s,o),S(o),null;case 5:Bh(o);var u=xh(Qn.current);if(i=o.type,null!==s&&null!=o.stateNode)Es(s,o,i,a,u),s.ref!==o.ref&&(o.flags|=512,o.flags|=2097152);else{if(!a){if(null===o.stateNode)throw Error(p(166));return S(o),null}if(s=xh(Yn.current),Gg(o)){a=o.stateNode,i=o.type;var _=o.memoizedProps;switch(a[hn]=o,a[dn]=_,s=!!(1&o.mode),i){case\"dialog\":D(\"cancel\",a),D(\"close\",a);break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",a);break;case\"video\":case\"audio\":for(u=0;u<Zr.length;u++)D(Zr[u],a);break;case\"source\":D(\"error\",a);break;case\"img\":case\"image\":case\"link\":D(\"error\",a),D(\"load\",a);break;case\"details\":D(\"toggle\",a);break;case\"input\":Za(a,_),D(\"invalid\",a);break;case\"select\":a._wrapperState={wasMultiple:!!_.multiple},D(\"invalid\",a);break;case\"textarea\":hb(a,_),D(\"invalid\",a)}for(var x in ub(i,_),u=null,_)if(_.hasOwnProperty(x)){var C=_[x];\"children\"===x?\"string\"==typeof C?a.textContent!==C&&(!0!==_.suppressHydrationWarning&&Af(a.textContent,C,s),u=[\"children\",C]):\"number\"==typeof C&&a.textContent!==\"\"+C&&(!0!==_.suppressHydrationWarning&&Af(a.textContent,C,s),u=[\"children\",\"\"+C]):w.hasOwnProperty(x)&&null!=C&&\"onScroll\"===x&&D(\"scroll\",a)}switch(i){case\"input\":Va(a),db(a,_,!0);break;case\"textarea\":Va(a),jb(a);break;case\"select\":case\"option\":break;default:\"function\"==typeof _.onClick&&(a.onclick=Bf)}a=u,o.updateQueue=a,null!==a&&(o.flags|=4)}else{x=9===u.nodeType?u:u.ownerDocument,\"http://www.w3.org/1999/xhtml\"===s&&(s=kb(i)),\"http://www.w3.org/1999/xhtml\"===s?\"script\"===i?((s=x.createElement(\"div\")).innerHTML=\"<script><\\/script>\",s=s.removeChild(s.firstChild)):\"string\"==typeof a.is?s=x.createElement(i,{is:a.is}):(s=x.createElement(i),\"select\"===i&&(x=s,a.multiple?x.multiple=!0:a.size&&(x.size=a.size))):s=x.createElementNS(s,i),s[hn]=o,s[dn]=a,_s(s,o,!1,!1),o.stateNode=s;e:{switch(x=vb(i,a),i){case\"dialog\":D(\"cancel\",s),D(\"close\",s),u=a;break;case\"iframe\":case\"object\":case\"embed\":D(\"load\",s),u=a;break;case\"video\":case\"audio\":for(u=0;u<Zr.length;u++)D(Zr[u],s);u=a;break;case\"source\":D(\"error\",s),u=a;break;case\"img\":case\"image\":case\"link\":D(\"error\",s),D(\"load\",s),u=a;break;case\"details\":D(\"toggle\",s),u=a;break;case\"input\":Za(s,a),u=Ya(s,a),D(\"invalid\",s);break;case\"option\":default:u=a;break;case\"select\":s._wrapperState={wasMultiple:!!a.multiple},u=we({},a,{value:void 0}),D(\"invalid\",s);break;case\"textarea\":hb(s,a),u=gb(s,a),D(\"invalid\",s)}for(_ in ub(i,u),C=u)if(C.hasOwnProperty(_)){var j=C[_];\"style\"===_?sb(s,j):\"dangerouslySetInnerHTML\"===_?null!=(j=j?j.__html:void 0)&&$e(s,j):\"children\"===_?\"string\"==typeof j?(\"textarea\"!==i||\"\"!==j)&&ob(s,j):\"number\"==typeof j&&ob(s,\"\"+j):\"suppressContentEditableWarning\"!==_&&\"suppressHydrationWarning\"!==_&&\"autoFocus\"!==_&&(w.hasOwnProperty(_)?null!=j&&\"onScroll\"===_&&D(\"scroll\",s):null!=j&&ta(s,_,j,x))}switch(i){case\"input\":Va(s),db(s,a,!1);break;case\"textarea\":Va(s),jb(s);break;case\"option\":null!=a.value&&s.setAttribute(\"value\",\"\"+Sa(a.value));break;case\"select\":s.multiple=!!a.multiple,null!=(_=a.value)?fb(s,!!a.multiple,_,!1):null!=a.defaultValue&&fb(s,!!a.multiple,a.defaultValue,!0);break;default:\"function\"==typeof u.onClick&&(s.onclick=Bf)}switch(i){case\"button\":case\"input\":case\"select\":case\"textarea\":a=!!a.autoFocus;break e;case\"img\":a=!0;break e;default:a=!1}}a&&(o.flags|=4)}null!==o.ref&&(o.flags|=512,o.flags|=2097152)}return S(o),null;case 6:if(s&&null!=o.stateNode)ws(s,o,s.memoizedProps,a);else{if(\"string\"!=typeof a&&null===o.stateNode)throw Error(p(166));if(i=xh(Qn.current),xh(Yn.current),Gg(o)){if(a=o.stateNode,i=o.memoizedProps,a[hn]=o,(_=a.nodeValue!==i)&&null!==(s=Dn))switch(s.tag){case 3:Af(a.nodeValue,i,!!(1&s.mode));break;case 5:!0!==s.memoizedProps.suppressHydrationWarning&&Af(a.nodeValue,i,!!(1&s.mode))}_&&(o.flags|=4)}else(a=(9===i.nodeType?i:i.ownerDocument).createTextNode(a))[hn]=o,o.stateNode=a}return S(o),null;case 13:if(E(Zn),a=o.memoizedState,null===s||null!==s.memoizedState&&null!==s.memoizedState.dehydrated){if(Fn&&null!==Ln&&1&o.mode&&!(128&o.flags))Hg(),Ig(),o.flags|=98560,_=!1;else if(_=Gg(o),null!==a&&null!==a.dehydrated){if(null===s){if(!_)throw Error(p(318));if(!(_=null!==(_=o.memoizedState)?_.dehydrated:null))throw Error(p(317));_[hn]=o}else Ig(),!(128&o.flags)&&(o.memoizedState=null),o.flags|=4;S(o),_=!1}else null!==Bn&&(Fj(Bn),Bn=null),_=!0;if(!_)return 65536&o.flags?o:null}return 128&o.flags?(o.lanes=i,o):((a=null!==a)!==(null!==s&&null!==s.memoizedState)&&a&&(o.child.flags|=8192,1&o.mode&&(null===s||1&Zn.current?0===Us&&(Us=3):tj())),null!==o.updateQueue&&(o.flags|=4),S(o),null);case 4:return zh(),Ss(s,o),null===s&&sf(o.stateNode.containerInfo),S(o),null;case 10:return ah(o.type._context),S(o),null;case 19:if(E(Zn),null===(_=o.memoizedState))return S(o),null;if(a=!!(128&o.flags),null===(x=_.rendering))if(a)Dj(_,!1);else{if(0!==Us||null!==s&&128&s.flags)for(s=o.child;null!==s;){if(null!==(x=Ch(s))){for(o.flags|=128,Dj(_,!1),null!==(a=x.updateQueue)&&(o.updateQueue=a,o.flags|=4),o.subtreeFlags=0,a=i,i=o.child;null!==i;)s=a,(_=i).flags&=14680066,null===(x=_.alternate)?(_.childLanes=0,_.lanes=s,_.child=null,_.subtreeFlags=0,_.memoizedProps=null,_.memoizedState=null,_.updateQueue=null,_.dependencies=null,_.stateNode=null):(_.childLanes=x.childLanes,_.lanes=x.lanes,_.child=x.child,_.subtreeFlags=0,_.deletions=null,_.memoizedProps=x.memoizedProps,_.memoizedState=x.memoizedState,_.updateQueue=x.updateQueue,_.type=x.type,s=x.dependencies,_.dependencies=null===s?null:{lanes:s.lanes,firstContext:s.firstContext}),i=i.sibling;return G(Zn,1&Zn.current|2),o.child}s=s.sibling}null!==_.tail&&ht()>Xs&&(o.flags|=128,a=!0,Dj(_,!1),o.lanes=4194304)}else{if(!a)if(null!==(s=Ch(x))){if(o.flags|=128,a=!0,null!==(i=s.updateQueue)&&(o.updateQueue=i,o.flags|=4),Dj(_,!0),null===_.tail&&\"hidden\"===_.tailMode&&!x.alternate&&!Fn)return S(o),null}else 2*ht()-_.renderingStartTime>Xs&&1073741824!==i&&(o.flags|=128,a=!0,Dj(_,!1),o.lanes=4194304);_.isBackwards?(x.sibling=o.child,o.child=x):(null!==(i=_.last)?i.sibling=x:o.child=x,_.last=x)}return null!==_.tail?(o=_.tail,_.rendering=o,_.tail=o.sibling,_.renderingStartTime=ht(),o.sibling=null,i=Zn.current,G(Zn,a?1&i|2:1&i),o):(S(o),null);case 22:case 23:return Hj(),a=null!==o.memoizedState,null!==s&&null!==s.memoizedState!==a&&(o.flags|=8192),a&&1&o.mode?!!(1073741824&qs)&&(S(o),6&o.subtreeFlags&&(o.flags|=8192)):S(o),null;case 24:case 25:return null}throw Error(p(156,o.tag))}function Ij(s,o){switch(wg(o),o.tag){case 1:return Zf(o.type)&&$f(),65536&(s=o.flags)?(o.flags=-65537&s|128,o):null;case 3:return zh(),E(En),E(Sn),Eh(),65536&(s=o.flags)&&!(128&s)?(o.flags=-65537&s|128,o):null;case 5:return Bh(o),null;case 13:if(E(Zn),null!==(s=o.memoizedState)&&null!==s.dehydrated){if(null===o.alternate)throw Error(p(340));Ig()}return 65536&(s=o.flags)?(o.flags=-65537&s|128,o):null;case 19:return E(Zn),null;case 4:return zh(),null;case 10:return ah(o.type._context),null;case 22:case 23:return Hj(),null;default:return null}}_s=function(s,o){for(var i=o.child;null!==i;){if(5===i.tag||6===i.tag)s.appendChild(i.stateNode);else if(4!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===o)break;for(;null===i.sibling;){if(null===i.return||i.return===o)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},Ss=function(){},Es=function(s,o,i,a){var u=s.memoizedProps;if(u!==a){s=o.stateNode,xh(Yn.current);var _,x=null;switch(i){case\"input\":u=Ya(s,u),a=Ya(s,a),x=[];break;case\"select\":u=we({},u,{value:void 0}),a=we({},a,{value:void 0}),x=[];break;case\"textarea\":u=gb(s,u),a=gb(s,a),x=[];break;default:\"function\"!=typeof u.onClick&&\"function\"==typeof a.onClick&&(s.onclick=Bf)}for(L in ub(i,a),i=null,u)if(!a.hasOwnProperty(L)&&u.hasOwnProperty(L)&&null!=u[L])if(\"style\"===L){var C=u[L];for(_ in C)C.hasOwnProperty(_)&&(i||(i={}),i[_]=\"\")}else\"dangerouslySetInnerHTML\"!==L&&\"children\"!==L&&\"suppressContentEditableWarning\"!==L&&\"suppressHydrationWarning\"!==L&&\"autoFocus\"!==L&&(w.hasOwnProperty(L)?x||(x=[]):(x=x||[]).push(L,null));for(L in a){var j=a[L];if(C=null!=u?u[L]:void 0,a.hasOwnProperty(L)&&j!==C&&(null!=j||null!=C))if(\"style\"===L)if(C){for(_ in C)!C.hasOwnProperty(_)||j&&j.hasOwnProperty(_)||(i||(i={}),i[_]=\"\");for(_ in j)j.hasOwnProperty(_)&&C[_]!==j[_]&&(i||(i={}),i[_]=j[_])}else i||(x||(x=[]),x.push(L,i)),i=j;else\"dangerouslySetInnerHTML\"===L?(j=j?j.__html:void 0,C=C?C.__html:void 0,null!=j&&C!==j&&(x=x||[]).push(L,j)):\"children\"===L?\"string\"!=typeof j&&\"number\"!=typeof j||(x=x||[]).push(L,\"\"+j):\"suppressContentEditableWarning\"!==L&&\"suppressHydrationWarning\"!==L&&(w.hasOwnProperty(L)?(null!=j&&\"onScroll\"===L&&D(\"scroll\",s),x||C===j||(x=[])):(x=x||[]).push(L,j))}i&&(x=x||[]).push(\"style\",i);var L=x;(o.updateQueue=L)&&(o.flags|=4)}},ws=function(s,o,i,a){i!==a&&(o.flags|=4)};var ks=!1,Os=!1,Cs=\"function\"==typeof WeakSet?WeakSet:Set,As=null;function Lj(s,o){var i=s.ref;if(null!==i)if(\"function\"==typeof i)try{i(null)}catch(i){W(s,o,i)}else i.current=null}function Mj(s,o,i){try{i()}catch(i){W(s,o,i)}}var js=!1;function Pj(s,o,i){var a=o.updateQueue;if(null!==(a=null!==a?a.lastEffect:null)){var u=a=a.next;do{if((u.tag&s)===s){var _=u.destroy;u.destroy=void 0,void 0!==_&&Mj(o,i,_)}u=u.next}while(u!==a)}}function Qj(s,o){if(null!==(o=null!==(o=o.updateQueue)?o.lastEffect:null)){var i=o=o.next;do{if((i.tag&s)===s){var a=i.create;i.destroy=a()}i=i.next}while(i!==o)}}function Rj(s){var o=s.ref;if(null!==o){var i=s.stateNode;s.tag,s=i,\"function\"==typeof o?o(s):o.current=s}}function Sj(s){var o=s.alternate;null!==o&&(s.alternate=null,Sj(o)),s.child=null,s.deletions=null,s.sibling=null,5===s.tag&&(null!==(o=s.stateNode)&&(delete o[hn],delete o[dn],delete o[mn],delete o[gn],delete o[yn])),s.stateNode=null,s.return=null,s.dependencies=null,s.memoizedProps=null,s.memoizedState=null,s.pendingProps=null,s.stateNode=null,s.updateQueue=null}function Tj(s){return 5===s.tag||3===s.tag||4===s.tag}function Uj(s){e:for(;;){for(;null===s.sibling;){if(null===s.return||Tj(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;5!==s.tag&&6!==s.tag&&18!==s.tag;){if(2&s.flags)continue e;if(null===s.child||4===s.tag)continue e;s.child.return=s,s=s.child}if(!(2&s.flags))return s.stateNode}}function Vj(s,o,i){var a=s.tag;if(5===a||6===a)s=s.stateNode,o?8===i.nodeType?i.parentNode.insertBefore(s,o):i.insertBefore(s,o):(8===i.nodeType?(o=i.parentNode).insertBefore(s,i):(o=i).appendChild(s),null!=(i=i._reactRootContainer)||null!==o.onclick||(o.onclick=Bf));else if(4!==a&&null!==(s=s.child))for(Vj(s,o,i),s=s.sibling;null!==s;)Vj(s,o,i),s=s.sibling}function Wj(s,o,i){var a=s.tag;if(5===a||6===a)s=s.stateNode,o?i.insertBefore(s,o):i.appendChild(s);else if(4!==a&&null!==(s=s.child))for(Wj(s,o,i),s=s.sibling;null!==s;)Wj(s,o,i),s=s.sibling}var Is=null,Ps=!1;function Yj(s,o,i){for(i=i.child;null!==i;)Zj(s,o,i),i=i.sibling}function Zj(s,o,i){if(St&&\"function\"==typeof St.onCommitFiberUnmount)try{St.onCommitFiberUnmount(_t,i)}catch(s){}switch(i.tag){case 5:Os||Lj(i,o);case 6:var a=Is,u=Ps;Is=null,Yj(s,o,i),Ps=u,null!==(Is=a)&&(Ps?(s=Is,i=i.stateNode,8===s.nodeType?s.parentNode.removeChild(i):s.removeChild(i)):Is.removeChild(i.stateNode));break;case 18:null!==Is&&(Ps?(s=Is,i=i.stateNode,8===s.nodeType?Kf(s.parentNode,i):1===s.nodeType&&Kf(s,i),bd(s)):Kf(Is,i.stateNode));break;case 4:a=Is,u=Ps,Is=i.stateNode.containerInfo,Ps=!0,Yj(s,o,i),Is=a,Ps=u;break;case 0:case 11:case 14:case 15:if(!Os&&(null!==(a=i.updateQueue)&&null!==(a=a.lastEffect))){u=a=a.next;do{var _=u,w=_.destroy;_=_.tag,void 0!==w&&(2&_||4&_)&&Mj(i,o,w),u=u.next}while(u!==a)}Yj(s,o,i);break;case 1:if(!Os&&(Lj(i,o),\"function\"==typeof(a=i.stateNode).componentWillUnmount))try{a.props=i.memoizedProps,a.state=i.memoizedState,a.componentWillUnmount()}catch(s){W(i,o,s)}Yj(s,o,i);break;case 21:Yj(s,o,i);break;case 22:1&i.mode?(Os=(a=Os)||null!==i.memoizedState,Yj(s,o,i),Os=a):Yj(s,o,i);break;default:Yj(s,o,i)}}function ak(s){var o=s.updateQueue;if(null!==o){s.updateQueue=null;var i=s.stateNode;null===i&&(i=s.stateNode=new Cs),o.forEach((function(o){var a=bk.bind(null,s,o);i.has(o)||(i.add(o),o.then(a,a))}))}}function ck(s,o){var i=o.deletions;if(null!==i)for(var a=0;a<i.length;a++){var u=i[a];try{var _=s,w=o,x=w;e:for(;null!==x;){switch(x.tag){case 5:Is=x.stateNode,Ps=!1;break e;case 3:case 4:Is=x.stateNode.containerInfo,Ps=!0;break e}x=x.return}if(null===Is)throw Error(p(160));Zj(_,w,u),Is=null,Ps=!1;var C=u.alternate;null!==C&&(C.return=null),u.return=null}catch(s){W(u,o,s)}}if(12854&o.subtreeFlags)for(o=o.child;null!==o;)dk(o,s),o=o.sibling}function dk(s,o){var i=s.alternate,a=s.flags;switch(s.tag){case 0:case 11:case 14:case 15:if(ck(o,s),ek(s),4&a){try{Pj(3,s,s.return),Qj(3,s)}catch(o){W(s,s.return,o)}try{Pj(5,s,s.return)}catch(o){W(s,s.return,o)}}break;case 1:ck(o,s),ek(s),512&a&&null!==i&&Lj(i,i.return);break;case 5:if(ck(o,s),ek(s),512&a&&null!==i&&Lj(i,i.return),32&s.flags){var u=s.stateNode;try{ob(u,\"\")}catch(o){W(s,s.return,o)}}if(4&a&&null!=(u=s.stateNode)){var _=s.memoizedProps,w=null!==i?i.memoizedProps:_,x=s.type,C=s.updateQueue;if(s.updateQueue=null,null!==C)try{\"input\"===x&&\"radio\"===_.type&&null!=_.name&&ab(u,_),vb(x,w);var j=vb(x,_);for(w=0;w<C.length;w+=2){var L=C[w],B=C[w+1];\"style\"===L?sb(u,B):\"dangerouslySetInnerHTML\"===L?$e(u,B):\"children\"===L?ob(u,B):ta(u,L,B,j)}switch(x){case\"input\":bb(u,_);break;case\"textarea\":ib(u,_);break;case\"select\":var $=u._wrapperState.wasMultiple;u._wrapperState.wasMultiple=!!_.multiple;var V=_.value;null!=V?fb(u,!!_.multiple,V,!1):$!==!!_.multiple&&(null!=_.defaultValue?fb(u,!!_.multiple,_.defaultValue,!0):fb(u,!!_.multiple,_.multiple?[]:\"\",!1))}u[dn]=_}catch(o){W(s,s.return,o)}}break;case 6:if(ck(o,s),ek(s),4&a){if(null===s.stateNode)throw Error(p(162));u=s.stateNode,_=s.memoizedProps;try{u.nodeValue=_}catch(o){W(s,s.return,o)}}break;case 3:if(ck(o,s),ek(s),4&a&&null!==i&&i.memoizedState.isDehydrated)try{bd(o.containerInfo)}catch(o){W(s,s.return,o)}break;case 4:default:ck(o,s),ek(s);break;case 13:ck(o,s),ek(s),8192&(u=s.child).flags&&(_=null!==u.memoizedState,u.stateNode.isHidden=_,!_||null!==u.alternate&&null!==u.alternate.memoizedState||(Ys=ht())),4&a&&ak(s);break;case 22:if(L=null!==i&&null!==i.memoizedState,1&s.mode?(Os=(j=Os)||L,ck(o,s),Os=j):ck(o,s),ek(s),8192&a){if(j=null!==s.memoizedState,(s.stateNode.isHidden=j)&&!L&&1&s.mode)for(As=s,L=s.child;null!==L;){for(B=As=L;null!==As;){switch(V=($=As).child,$.tag){case 0:case 11:case 14:case 15:Pj(4,$,$.return);break;case 1:Lj($,$.return);var U=$.stateNode;if(\"function\"==typeof U.componentWillUnmount){a=$,i=$.return;try{o=a,U.props=o.memoizedProps,U.state=o.memoizedState,U.componentWillUnmount()}catch(s){W(a,i,s)}}break;case 5:Lj($,$.return);break;case 22:if(null!==$.memoizedState){gk(B);continue}}null!==V?(V.return=$,As=V):gk(B)}L=L.sibling}e:for(L=null,B=s;;){if(5===B.tag){if(null===L){L=B;try{u=B.stateNode,j?\"function\"==typeof(_=u.style).setProperty?_.setProperty(\"display\",\"none\",\"important\"):_.display=\"none\":(x=B.stateNode,w=null!=(C=B.memoizedProps.style)&&C.hasOwnProperty(\"display\")?C.display:null,x.style.display=rb(\"display\",w))}catch(o){W(s,s.return,o)}}}else if(6===B.tag){if(null===L)try{B.stateNode.nodeValue=j?\"\":B.memoizedProps}catch(o){W(s,s.return,o)}}else if((22!==B.tag&&23!==B.tag||null===B.memoizedState||B===s)&&null!==B.child){B.child.return=B,B=B.child;continue}if(B===s)break e;for(;null===B.sibling;){if(null===B.return||B.return===s)break e;L===B&&(L=null),B=B.return}L===B&&(L=null),B.sibling.return=B.return,B=B.sibling}}break;case 19:ck(o,s),ek(s),4&a&&ak(s);case 21:}}function ek(s){var o=s.flags;if(2&o){try{e:{for(var i=s.return;null!==i;){if(Tj(i)){var a=i;break e}i=i.return}throw Error(p(160))}switch(a.tag){case 5:var u=a.stateNode;32&a.flags&&(ob(u,\"\"),a.flags&=-33),Wj(s,Uj(s),u);break;case 3:case 4:var _=a.stateNode.containerInfo;Vj(s,Uj(s),_);break;default:throw Error(p(161))}}catch(o){W(s,s.return,o)}s.flags&=-3}4096&o&&(s.flags&=-4097)}function hk(s,o,i){As=s,ik(s,o,i)}function ik(s,o,i){for(var a=!!(1&s.mode);null!==As;){var u=As,_=u.child;if(22===u.tag&&a){var w=null!==u.memoizedState||ks;if(!w){var x=u.alternate,C=null!==x&&null!==x.memoizedState||Os;x=ks;var j=Os;if(ks=w,(Os=C)&&!j)for(As=u;null!==As;)C=(w=As).child,22===w.tag&&null!==w.memoizedState?jk(u):null!==C?(C.return=w,As=C):jk(u);for(;null!==_;)As=_,ik(_,o,i),_=_.sibling;As=u,ks=x,Os=j}kk(s)}else 8772&u.subtreeFlags&&null!==_?(_.return=u,As=_):kk(s)}}function kk(s){for(;null!==As;){var o=As;if(8772&o.flags){var i=o.alternate;try{if(8772&o.flags)switch(o.tag){case 0:case 11:case 15:Os||Qj(5,o);break;case 1:var a=o.stateNode;if(4&o.flags&&!Os)if(null===i)a.componentDidMount();else{var u=o.elementType===o.type?i.memoizedProps:Ci(o.type,i.memoizedProps);a.componentDidUpdate(u,i.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}var _=o.updateQueue;null!==_&&sh(o,_,a);break;case 3:var w=o.updateQueue;if(null!==w){if(i=null,null!==o.child)switch(o.child.tag){case 5:case 1:i=o.child.stateNode}sh(o,w,i)}break;case 5:var x=o.stateNode;if(null===i&&4&o.flags){i=x;var C=o.memoizedProps;switch(o.type){case\"button\":case\"input\":case\"select\":case\"textarea\":C.autoFocus&&i.focus();break;case\"img\":C.src&&(i.src=C.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===o.memoizedState){var j=o.alternate;if(null!==j){var L=j.memoizedState;if(null!==L){var B=L.dehydrated;null!==B&&bd(B)}}}break;default:throw Error(p(163))}Os||512&o.flags&&Rj(o)}catch(s){W(o,o.return,s)}}if(o===s){As=null;break}if(null!==(i=o.sibling)){i.return=o.return,As=i;break}As=o.return}}function gk(s){for(;null!==As;){var o=As;if(o===s){As=null;break}var i=o.sibling;if(null!==i){i.return=o.return,As=i;break}As=o.return}}function jk(s){for(;null!==As;){var o=As;try{switch(o.tag){case 0:case 11:case 15:var i=o.return;try{Qj(4,o)}catch(s){W(o,i,s)}break;case 1:var a=o.stateNode;if(\"function\"==typeof a.componentDidMount){var u=o.return;try{a.componentDidMount()}catch(s){W(o,u,s)}}var _=o.return;try{Rj(o)}catch(s){W(o,_,s)}break;case 5:var w=o.return;try{Rj(o)}catch(s){W(o,w,s)}}}catch(s){W(o,o.return,s)}if(o===s){As=null;break}var x=o.sibling;if(null!==x){x.return=o.return,As=x;break}As=o.return}}var Ts,Ns=Math.ceil,Ms=U.ReactCurrentDispatcher,Rs=U.ReactCurrentOwner,Ds=U.ReactCurrentBatchConfig,Ls=0,Fs=null,Bs=null,$s=0,qs=0,Vs=Uf(0),Us=0,zs=null,Ws=0,Js=0,Hs=0,Ks=null,Gs=null,Ys=0,Xs=1/0,Qs=null,Zs=!1,eo=null,to=null,ro=!1,no=null,so=0,oo=0,io=null,ao=-1,co=0;function R(){return 6&Ls?ht():-1!==ao?ao:ao=ht()}function yi(s){return 1&s.mode?2&Ls&&0!==$s?$s&-$s:null!==$n.transition?(0===co&&(co=yc()),co):0!==(s=Ct)?s:s=void 0===(s=window.event)?16:jd(s.type):1}function gi(s,o,i,a){if(50<oo)throw oo=0,io=null,Error(p(185));Ac(s,i,a),2&Ls&&s===Fs||(s===Fs&&(!(2&Ls)&&(Js|=i),4===Us&&Ck(s,$s)),Dk(s,a),1===i&&0===Ls&&!(1&o.mode)&&(Xs=ht()+500,kn&&jg()))}function Dk(s,o){var i=s.callbackNode;!function wc(s,o){for(var i=s.suspendedLanes,a=s.pingedLanes,u=s.expirationTimes,_=s.pendingLanes;0<_;){var w=31-Et(_),x=1<<w,C=u[w];-1===C?x&i&&!(x&a)||(u[w]=vc(x,o)):C<=o&&(s.expiredLanes|=x),_&=~x}}(s,o);var a=uc(s,s===Fs?$s:0);if(0===a)null!==i&&lt(i),s.callbackNode=null,s.callbackPriority=0;else if(o=a&-a,s.callbackPriority!==o){if(null!=i&&lt(i),1===o)0===s.tag?function ig(s){kn=!0,hg(s)}(Ek.bind(null,s)):hg(Ek.bind(null,s)),un((function(){!(6&Ls)&&jg()})),i=null;else{switch(Dc(a)){case 1:i=mt;break;case 4:i=gt;break;case 16:default:i=yt;break;case 536870912:i=bt}i=Fk(i,Gk.bind(null,s))}s.callbackPriority=o,s.callbackNode=i}}function Gk(s,o){if(ao=-1,co=0,6&Ls)throw Error(p(327));var i=s.callbackNode;if(Hk()&&s.callbackNode!==i)return null;var a=uc(s,s===Fs?$s:0);if(0===a)return null;if(30&a||a&s.expiredLanes||o)o=Ik(s,a);else{o=a;var u=Ls;Ls|=2;var _=Jk();for(Fs===s&&$s===o||(Qs=null,Xs=ht()+500,Kk(s,o));;)try{Lk();break}catch(o){Mk(s,o)}$g(),Ms.current=_,Ls=u,null!==Bs?o=0:(Fs=null,$s=0,o=Us)}if(0!==o){if(2===o&&(0!==(u=xc(s))&&(a=u,o=Nk(s,u))),1===o)throw i=zs,Kk(s,0),Ck(s,a),Dk(s,ht()),i;if(6===o)Ck(s,a);else{if(u=s.current.alternate,!(30&a||function Ok(s){for(var o=s;;){if(16384&o.flags){var i=o.updateQueue;if(null!==i&&null!==(i=i.stores))for(var a=0;a<i.length;a++){var u=i[a],_=u.getSnapshot;u=u.value;try{if(!Dr(_(),u))return!1}catch(s){return!1}}}if(i=o.child,16384&o.subtreeFlags&&null!==i)i.return=o,o=i;else{if(o===s)break;for(;null===o.sibling;){if(null===o.return||o.return===s)return!0;o=o.return}o.sibling.return=o.return,o=o.sibling}}return!0}(u)||(o=Ik(s,a),2===o&&(_=xc(s),0!==_&&(a=_,o=Nk(s,_))),1!==o)))throw i=zs,Kk(s,0),Ck(s,a),Dk(s,ht()),i;switch(s.finishedWork=u,s.finishedLanes=a,o){case 0:case 1:throw Error(p(345));case 2:case 5:Pk(s,Gs,Qs);break;case 3:if(Ck(s,a),(130023424&a)===a&&10<(o=Ys+500-ht())){if(0!==uc(s,0))break;if(((u=s.suspendedLanes)&a)!==a){R(),s.pingedLanes|=s.suspendedLanes&u;break}s.timeoutHandle=an(Pk.bind(null,s,Gs,Qs),o);break}Pk(s,Gs,Qs);break;case 4:if(Ck(s,a),(4194240&a)===a)break;for(o=s.eventTimes,u=-1;0<a;){var w=31-Et(a);_=1<<w,(w=o[w])>u&&(u=w),a&=~_}if(a=u,10<(a=(120>(a=ht()-a)?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*Ns(a/1960))-a)){s.timeoutHandle=an(Pk.bind(null,s,Gs,Qs),a);break}Pk(s,Gs,Qs);break;default:throw Error(p(329))}}}return Dk(s,ht()),s.callbackNode===i?Gk.bind(null,s):null}function Nk(s,o){var i=Ks;return s.current.memoizedState.isDehydrated&&(Kk(s,o).flags|=256),2!==(s=Ik(s,o))&&(o=Gs,Gs=i,null!==o&&Fj(o)),s}function Fj(s){null===Gs?Gs=s:Gs.push.apply(Gs,s)}function Ck(s,o){for(o&=~Hs,o&=~Js,s.suspendedLanes|=o,s.pingedLanes&=~o,s=s.expirationTimes;0<o;){var i=31-Et(o),a=1<<i;s[i]=-1,o&=~a}}function Ek(s){if(6&Ls)throw Error(p(327));Hk();var o=uc(s,0);if(!(1&o))return Dk(s,ht()),null;var i=Ik(s,o);if(0!==s.tag&&2===i){var a=xc(s);0!==a&&(o=a,i=Nk(s,a))}if(1===i)throw i=zs,Kk(s,0),Ck(s,o),Dk(s,ht()),i;if(6===i)throw Error(p(345));return s.finishedWork=s.current.alternate,s.finishedLanes=o,Pk(s,Gs,Qs),Dk(s,ht()),null}function Qk(s,o){var i=Ls;Ls|=1;try{return s(o)}finally{0===(Ls=i)&&(Xs=ht()+500,kn&&jg())}}function Rk(s){null!==no&&0===no.tag&&!(6&Ls)&&Hk();var o=Ls;Ls|=1;var i=Ds.transition,a=Ct;try{if(Ds.transition=null,Ct=1,s)return s()}finally{Ct=a,Ds.transition=i,!(6&(Ls=o))&&jg()}}function Hj(){qs=Vs.current,E(Vs)}function Kk(s,o){s.finishedWork=null,s.finishedLanes=0;var i=s.timeoutHandle;if(-1!==i&&(s.timeoutHandle=-1,cn(i)),null!==Bs)for(i=Bs.return;null!==i;){var a=i;switch(wg(a),a.tag){case 1:null!=(a=a.type.childContextTypes)&&$f();break;case 3:zh(),E(En),E(Sn),Eh();break;case 5:Bh(a);break;case 4:zh();break;case 13:case 19:E(Zn);break;case 10:ah(a.type._context);break;case 22:case 23:Hj()}i=i.return}if(Fs=s,Bs=s=Pg(s.current,null),$s=qs=o,Us=0,zs=null,Hs=Js=Ws=0,Gs=Ks=null,null!==Hn){for(o=0;o<Hn.length;o++)if(null!==(a=(i=Hn[o]).interleaved)){i.interleaved=null;var u=a.next,_=i.pending;if(null!==_){var w=_.next;_.next=u,a.next=w}i.pending=a}Hn=null}return s}function Mk(s,o){for(;;){var i=Bs;try{if($g(),ts.current=hs,cs){for(var a=ss.memoizedState;null!==a;){var u=a.queue;null!==u&&(u.pending=null),a=a.next}cs=!1}if(ns=0,as=os=ss=null,ls=!1,us=0,Rs.current=null,null===i||null===i.return){Us=1,zs=o,Bs=null;break}e:{var _=s,w=i.return,x=i,C=o;if(o=$s,x.flags|=32768,null!==C&&\"object\"==typeof C&&\"function\"==typeof C.then){var j=C,L=x,B=L.tag;if(!(1&L.mode||0!==B&&11!==B&&15!==B)){var $=L.alternate;$?(L.updateQueue=$.updateQueue,L.memoizedState=$.memoizedState,L.lanes=$.lanes):(L.updateQueue=null,L.memoizedState=null)}var V=Ui(w);if(null!==V){V.flags&=-257,Vi(V,w,x,0,o),1&V.mode&&Si(_,j,o),C=j;var U=(o=V).updateQueue;if(null===U){var z=new Set;z.add(C),o.updateQueue=z}else U.add(C);break e}if(!(1&o)){Si(_,j,o),tj();break e}C=Error(p(426))}else if(Fn&&1&x.mode){var Y=Ui(w);if(null!==Y){!(65536&Y.flags)&&(Y.flags|=256),Vi(Y,w,x,0,o),Jg(Ji(C,x));break e}}_=C=Ji(C,x),4!==Us&&(Us=2),null===Ks?Ks=[_]:Ks.push(_),_=w;do{switch(_.tag){case 3:_.flags|=65536,o&=-o,_.lanes|=o,ph(_,Ni(0,C,o));break e;case 1:x=C;var Z=_.type,ee=_.stateNode;if(!(128&_.flags||\"function\"!=typeof Z.getDerivedStateFromError&&(null===ee||\"function\"!=typeof ee.componentDidCatch||null!==to&&to.has(ee)))){_.flags|=65536,o&=-o,_.lanes|=o,ph(_,Qi(_,x,o));break e}}_=_.return}while(null!==_)}Sk(i)}catch(s){o=s,Bs===i&&null!==i&&(Bs=i=i.return);continue}break}}function Jk(){var s=Ms.current;return Ms.current=hs,null===s?hs:s}function tj(){0!==Us&&3!==Us&&2!==Us||(Us=4),null===Fs||!(268435455&Ws)&&!(268435455&Js)||Ck(Fs,$s)}function Ik(s,o){var i=Ls;Ls|=2;var a=Jk();for(Fs===s&&$s===o||(Qs=null,Kk(s,o));;)try{Tk();break}catch(o){Mk(s,o)}if($g(),Ls=i,Ms.current=a,null!==Bs)throw Error(p(261));return Fs=null,$s=0,Us}function Tk(){for(;null!==Bs;)Uk(Bs)}function Lk(){for(;null!==Bs&&!ut();)Uk(Bs)}function Uk(s){var o=Ts(s.alternate,s,qs);s.memoizedProps=s.pendingProps,null===o?Sk(s):Bs=o,Rs.current=null}function Sk(s){var o=s;do{var i=o.alternate;if(s=o.return,32768&o.flags){if(null!==(i=Ij(i,o)))return i.flags&=32767,void(Bs=i);if(null===s)return Us=6,void(Bs=null);s.flags|=32768,s.subtreeFlags=0,s.deletions=null}else if(null!==(i=Ej(i,o,qs)))return void(Bs=i);if(null!==(o=o.sibling))return void(Bs=o);Bs=o=s}while(null!==o);0===Us&&(Us=5)}function Pk(s,o,i){var a=Ct,u=Ds.transition;try{Ds.transition=null,Ct=1,function Wk(s,o,i,a){do{Hk()}while(null!==no);if(6&Ls)throw Error(p(327));i=s.finishedWork;var u=s.finishedLanes;if(null===i)return null;if(s.finishedWork=null,s.finishedLanes=0,i===s.current)throw Error(p(177));s.callbackNode=null,s.callbackPriority=0;var _=i.lanes|i.childLanes;if(function Bc(s,o){var i=s.pendingLanes&~o;s.pendingLanes=o,s.suspendedLanes=0,s.pingedLanes=0,s.expiredLanes&=o,s.mutableReadLanes&=o,s.entangledLanes&=o,o=s.entanglements;var a=s.eventTimes;for(s=s.expirationTimes;0<i;){var u=31-Et(i),_=1<<u;o[u]=0,a[u]=-1,s[u]=-1,i&=~_}}(s,_),s===Fs&&(Bs=Fs=null,$s=0),!(2064&i.subtreeFlags)&&!(2064&i.flags)||ro||(ro=!0,Fk(yt,(function(){return Hk(),null}))),_=!!(15990&i.flags),!!(15990&i.subtreeFlags)||_){_=Ds.transition,Ds.transition=null;var w=Ct;Ct=1;var x=Ls;Ls|=4,Rs.current=null,function Oj(s,o){if(sn=Ut,Ne(s=Me())){if(\"selectionStart\"in s)var i={start:s.selectionStart,end:s.selectionEnd};else e:{var a=(i=(i=s.ownerDocument)&&i.defaultView||window).getSelection&&i.getSelection();if(a&&0!==a.rangeCount){i=a.anchorNode;var u=a.anchorOffset,_=a.focusNode;a=a.focusOffset;try{i.nodeType,_.nodeType}catch(s){i=null;break e}var w=0,x=-1,C=-1,j=0,L=0,B=s,$=null;t:for(;;){for(var V;B!==i||0!==u&&3!==B.nodeType||(x=w+u),B!==_||0!==a&&3!==B.nodeType||(C=w+a),3===B.nodeType&&(w+=B.nodeValue.length),null!==(V=B.firstChild);)$=B,B=V;for(;;){if(B===s)break t;if($===i&&++j===u&&(x=w),$===_&&++L===a&&(C=w),null!==(V=B.nextSibling))break;$=(B=$).parentNode}B=V}i=-1===x||-1===C?null:{start:x,end:C}}else i=null}i=i||{start:0,end:0}}else i=null;for(on={focusedElem:s,selectionRange:i},Ut=!1,As=o;null!==As;)if(s=(o=As).child,1028&o.subtreeFlags&&null!==s)s.return=o,As=s;else for(;null!==As;){o=As;try{var U=o.alternate;if(1024&o.flags)switch(o.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==U){var z=U.memoizedProps,Y=U.memoizedState,Z=o.stateNode,ee=Z.getSnapshotBeforeUpdate(o.elementType===o.type?z:Ci(o.type,z),Y);Z.__reactInternalSnapshotBeforeUpdate=ee}break;case 3:var ie=o.stateNode.containerInfo;1===ie.nodeType?ie.textContent=\"\":9===ie.nodeType&&ie.documentElement&&ie.removeChild(ie.documentElement);break;default:throw Error(p(163))}}catch(s){W(o,o.return,s)}if(null!==(s=o.sibling)){s.return=o.return,As=s;break}As=o.return}return U=js,js=!1,U}(s,i),dk(i,s),Oe(on),Ut=!!sn,on=sn=null,s.current=i,hk(i,s,u),pt(),Ls=x,Ct=w,Ds.transition=_}else s.current=i;if(ro&&(ro=!1,no=s,so=u),_=s.pendingLanes,0===_&&(to=null),function mc(s){if(St&&\"function\"==typeof St.onCommitFiberRoot)try{St.onCommitFiberRoot(_t,s,void 0,!(128&~s.current.flags))}catch(s){}}(i.stateNode),Dk(s,ht()),null!==o)for(a=s.onRecoverableError,i=0;i<o.length;i++)u=o[i],a(u.value,{componentStack:u.stack,digest:u.digest});if(Zs)throw Zs=!1,s=eo,eo=null,s;return!!(1&so)&&0!==s.tag&&Hk(),_=s.pendingLanes,1&_?s===io?oo++:(oo=0,io=s):oo=0,jg(),null}(s,o,i,a)}finally{Ds.transition=u,Ct=a}return null}function Hk(){if(null!==no){var s=Dc(so),o=Ds.transition,i=Ct;try{if(Ds.transition=null,Ct=16>s?16:s,null===no)var a=!1;else{if(s=no,no=null,so=0,6&Ls)throw Error(p(331));var u=Ls;for(Ls|=4,As=s.current;null!==As;){var _=As,w=_.child;if(16&As.flags){var x=_.deletions;if(null!==x){for(var C=0;C<x.length;C++){var j=x[C];for(As=j;null!==As;){var L=As;switch(L.tag){case 0:case 11:case 15:Pj(8,L,_)}var B=L.child;if(null!==B)B.return=L,As=B;else for(;null!==As;){var $=(L=As).sibling,V=L.return;if(Sj(L),L===j){As=null;break}if(null!==$){$.return=V,As=$;break}As=V}}}var U=_.alternate;if(null!==U){var z=U.child;if(null!==z){U.child=null;do{var Y=z.sibling;z.sibling=null,z=Y}while(null!==z)}}As=_}}if(2064&_.subtreeFlags&&null!==w)w.return=_,As=w;else e:for(;null!==As;){if(2048&(_=As).flags)switch(_.tag){case 0:case 11:case 15:Pj(9,_,_.return)}var Z=_.sibling;if(null!==Z){Z.return=_.return,As=Z;break e}As=_.return}}var ee=s.current;for(As=ee;null!==As;){var ie=(w=As).child;if(2064&w.subtreeFlags&&null!==ie)ie.return=w,As=ie;else e:for(w=ee;null!==As;){if(2048&(x=As).flags)try{switch(x.tag){case 0:case 11:case 15:Qj(9,x)}}catch(s){W(x,x.return,s)}if(x===w){As=null;break e}var ae=x.sibling;if(null!==ae){ae.return=x.return,As=ae;break e}As=x.return}}if(Ls=u,jg(),St&&\"function\"==typeof St.onPostCommitFiberRoot)try{St.onPostCommitFiberRoot(_t,s)}catch(s){}a=!0}return a}finally{Ct=i,Ds.transition=o}}return!1}function Xk(s,o,i){s=nh(s,o=Ni(0,o=Ji(i,o),1),1),o=R(),null!==s&&(Ac(s,1,o),Dk(s,o))}function W(s,o,i){if(3===s.tag)Xk(s,s,i);else for(;null!==o;){if(3===o.tag){Xk(o,s,i);break}if(1===o.tag){var a=o.stateNode;if(\"function\"==typeof o.type.getDerivedStateFromError||\"function\"==typeof a.componentDidCatch&&(null===to||!to.has(a))){o=nh(o,s=Qi(o,s=Ji(i,s),1),1),s=R(),null!==o&&(Ac(o,1,s),Dk(o,s));break}}o=o.return}}function Ti(s,o,i){var a=s.pingCache;null!==a&&a.delete(o),o=R(),s.pingedLanes|=s.suspendedLanes&i,Fs===s&&($s&i)===i&&(4===Us||3===Us&&(130023424&$s)===$s&&500>ht()-Ys?Kk(s,0):Hs|=i),Dk(s,o)}function Yk(s,o){0===o&&(1&s.mode?(o=Ot,!(130023424&(Ot<<=1))&&(Ot=4194304)):o=1);var i=R();null!==(s=ih(s,o))&&(Ac(s,o,i),Dk(s,i))}function uj(s){var o=s.memoizedState,i=0;null!==o&&(i=o.retryLane),Yk(s,i)}function bk(s,o){var i=0;switch(s.tag){case 13:var a=s.stateNode,u=s.memoizedState;null!==u&&(i=u.retryLane);break;case 19:a=s.stateNode;break;default:throw Error(p(314))}null!==a&&a.delete(o),Yk(s,i)}function Fk(s,o){return ct(s,o)}function $k(s,o,i,a){this.tag=s,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=o,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Bg(s,o,i,a){return new $k(s,o,i,a)}function aj(s){return!(!(s=s.prototype)||!s.isReactComponent)}function Pg(s,o){var i=s.alternate;return null===i?((i=Bg(s.tag,o,s.key,s.mode)).elementType=s.elementType,i.type=s.type,i.stateNode=s.stateNode,i.alternate=s,s.alternate=i):(i.pendingProps=o,i.type=s.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=14680064&s.flags,i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,o=s.dependencies,i.dependencies=null===o?null:{lanes:o.lanes,firstContext:o.firstContext},i.sibling=s.sibling,i.index=s.index,i.ref=s.ref,i}function Rg(s,o,i,a,u,_){var w=2;if(a=s,\"function\"==typeof s)aj(s)&&(w=1);else if(\"string\"==typeof s)w=5;else e:switch(s){case Z:return Tg(i.children,u,_,o);case ee:w=8,u|=8;break;case ie:return(s=Bg(12,i,o,2|u)).elementType=ie,s.lanes=_,s;case pe:return(s=Bg(13,i,o,u)).elementType=pe,s.lanes=_,s;case de:return(s=Bg(19,i,o,u)).elementType=de,s.lanes=_,s;case be:return pj(i,u,_,o);default:if(\"object\"==typeof s&&null!==s)switch(s.$$typeof){case ae:w=10;break e;case ce:w=9;break e;case le:w=11;break e;case fe:w=14;break e;case ye:w=16,a=null;break e}throw Error(p(130,null==s?s:typeof s,\"\"))}return(o=Bg(w,i,o,u)).elementType=s,o.type=a,o.lanes=_,o}function Tg(s,o,i,a){return(s=Bg(7,s,a,o)).lanes=i,s}function pj(s,o,i,a){return(s=Bg(22,s,a,o)).elementType=be,s.lanes=i,s.stateNode={isHidden:!1},s}function Qg(s,o,i){return(s=Bg(6,s,null,o)).lanes=i,s}function Sg(s,o,i){return(o=Bg(4,null!==s.children?s.children:[],s.key,o)).lanes=i,o.stateNode={containerInfo:s.containerInfo,pendingChildren:null,implementation:s.implementation},o}function al(s,o,i,a,u){this.tag=o,this.containerInfo=s,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zc(0),this.expirationTimes=zc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zc(0),this.identifierPrefix=a,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function bl(s,o,i,a,u,_,w,x,C){return s=new al(s,o,i,x,C),1===o?(o=1,!0===_&&(o|=8)):o=0,_=Bg(3,null,null,o),s.current=_,_.stateNode=s,_.memoizedState={element:a,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},kh(_),s}function dl(s){if(!s)return _n;e:{if(Vb(s=s._reactInternals)!==s||1!==s.tag)throw Error(p(170));var o=s;do{switch(o.tag){case 3:o=o.stateNode.context;break e;case 1:if(Zf(o.type)){o=o.stateNode.__reactInternalMemoizedMergedChildContext;break e}}o=o.return}while(null!==o);throw Error(p(171))}if(1===s.tag){var i=s.type;if(Zf(i))return bg(s,i,o)}return o}function el(s,o,i,a,u,_,w,x,C){return(s=bl(i,a,!0,s,0,_,0,x,C)).context=dl(null),i=s.current,(_=mh(a=R(),u=yi(i))).callback=null!=o?o:null,nh(i,_,u),s.current.lanes=u,Ac(s,u,a),Dk(s,a),s}function fl(s,o,i,a){var u=o.current,_=R(),w=yi(u);return i=dl(i),null===o.context?o.context=i:o.pendingContext=i,(o=mh(_,w)).payload={element:s},null!==(a=void 0===a?null:a)&&(o.callback=a),null!==(s=nh(u,o,w))&&(gi(s,u,w,_),oh(s,u,w)),w}function gl(s){return(s=s.current).child?(s.child.tag,s.child.stateNode):null}function hl(s,o){if(null!==(s=s.memoizedState)&&null!==s.dehydrated){var i=s.retryLane;s.retryLane=0!==i&&i<o?i:o}}function il(s,o){hl(s,o),(s=s.alternate)&&hl(s,o)}Ts=function(s,o,i){if(null!==s)if(s.memoizedProps!==o.pendingProps||En.current)bs=!0;else{if(!(s.lanes&i||128&o.flags))return bs=!1,function yj(s,o,i){switch(o.tag){case 3:kj(o),Ig();break;case 5:Ah(o);break;case 1:Zf(o.type)&&cg(o);break;case 4:yh(o,o.stateNode.containerInfo);break;case 10:var a=o.type._context,u=o.memoizedProps.value;G(Un,a._currentValue),a._currentValue=u;break;case 13:if(null!==(a=o.memoizedState))return null!==a.dehydrated?(G(Zn,1&Zn.current),o.flags|=128,null):i&o.child.childLanes?oj(s,o,i):(G(Zn,1&Zn.current),null!==(s=Zi(s,o,i))?s.sibling:null);G(Zn,1&Zn.current);break;case 19:if(a=!!(i&o.childLanes),128&s.flags){if(a)return xj(s,o,i);o.flags|=128}if(null!==(u=o.memoizedState)&&(u.rendering=null,u.tail=null,u.lastEffect=null),G(Zn,Zn.current),a)break;return null;case 22:case 23:return o.lanes=0,dj(s,o,i)}return Zi(s,o,i)}(s,o,i);bs=!!(131072&s.flags)}else bs=!1,Fn&&1048576&o.flags&&ug(o,In,o.index);switch(o.lanes=0,o.tag){case 2:var a=o.type;ij(s,o),s=o.pendingProps;var u=Yf(o,Sn.current);ch(o,i),u=Nh(null,o,a,s,u,i);var _=Sh();return o.flags|=1,\"object\"==typeof u&&null!==u&&\"function\"==typeof u.render&&void 0===u.$$typeof?(o.tag=1,o.memoizedState=null,o.updateQueue=null,Zf(a)?(_=!0,cg(o)):_=!1,o.memoizedState=null!==u.state&&void 0!==u.state?u.state:null,kh(o),u.updater=gs,o.stateNode=u,u._reactInternals=o,Ii(o,a,s,i),o=jj(null,o,a,!0,_,i)):(o.tag=0,Fn&&_&&vg(o),Xi(null,o,u,i),o=o.child),o;case 16:a=o.elementType;e:{switch(ij(s,o),s=o.pendingProps,a=(u=a._init)(a._payload),o.type=a,u=o.tag=function Zk(s){if(\"function\"==typeof s)return aj(s)?1:0;if(null!=s){if((s=s.$$typeof)===le)return 11;if(s===fe)return 14}return 2}(a),s=Ci(a,s),u){case 0:o=cj(null,o,a,s,i);break e;case 1:o=hj(null,o,a,s,i);break e;case 11:o=Yi(null,o,a,s,i);break e;case 14:o=$i(null,o,a,Ci(a.type,s),i);break e}throw Error(p(306,a,\"\"))}return o;case 0:return a=o.type,u=o.pendingProps,cj(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 1:return a=o.type,u=o.pendingProps,hj(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 3:e:{if(kj(o),null===s)throw Error(p(387));a=o.pendingProps,u=(_=o.memoizedState).element,lh(s,o),qh(o,a,null,i);var w=o.memoizedState;if(a=w.element,_.isDehydrated){if(_={element:a,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},o.updateQueue.baseState=_,o.memoizedState=_,256&o.flags){o=lj(s,o,a,i,u=Ji(Error(p(423)),o));break e}if(a!==u){o=lj(s,o,a,i,u=Ji(Error(p(424)),o));break e}for(Ln=Lf(o.stateNode.containerInfo.firstChild),Dn=o,Fn=!0,Bn=null,i=Vn(o,null,a,i),o.child=i;i;)i.flags=-3&i.flags|4096,i=i.sibling}else{if(Ig(),a===u){o=Zi(s,o,i);break e}Xi(s,o,a,i)}o=o.child}return o;case 5:return Ah(o),null===s&&Eg(o),a=o.type,u=o.pendingProps,_=null!==s?s.memoizedProps:null,w=u.children,Ef(a,u)?w=null:null!==_&&Ef(a,_)&&(o.flags|=32),gj(s,o),Xi(s,o,w,i),o.child;case 6:return null===s&&Eg(o),null;case 13:return oj(s,o,i);case 4:return yh(o,o.stateNode.containerInfo),a=o.pendingProps,null===s?o.child=qn(o,null,a,i):Xi(s,o,a,i),o.child;case 11:return a=o.type,u=o.pendingProps,Yi(s,o,a,u=o.elementType===a?u:Ci(a,u),i);case 7:return Xi(s,o,o.pendingProps,i),o.child;case 8:case 12:return Xi(s,o,o.pendingProps.children,i),o.child;case 10:e:{if(a=o.type._context,u=o.pendingProps,_=o.memoizedProps,w=u.value,G(Un,a._currentValue),a._currentValue=w,null!==_)if(Dr(_.value,w)){if(_.children===u.children&&!En.current){o=Zi(s,o,i);break e}}else for(null!==(_=o.child)&&(_.return=o);null!==_;){var x=_.dependencies;if(null!==x){w=_.child;for(var C=x.firstContext;null!==C;){if(C.context===a){if(1===_.tag){(C=mh(-1,i&-i)).tag=2;var j=_.updateQueue;if(null!==j){var L=(j=j.shared).pending;null===L?C.next=C:(C.next=L.next,L.next=C),j.pending=C}}_.lanes|=i,null!==(C=_.alternate)&&(C.lanes|=i),bh(_.return,i,o),x.lanes|=i;break}C=C.next}}else if(10===_.tag)w=_.type===o.type?null:_.child;else if(18===_.tag){if(null===(w=_.return))throw Error(p(341));w.lanes|=i,null!==(x=w.alternate)&&(x.lanes|=i),bh(w,i,o),w=_.sibling}else w=_.child;if(null!==w)w.return=_;else for(w=_;null!==w;){if(w===o){w=null;break}if(null!==(_=w.sibling)){_.return=w.return,w=_;break}w=w.return}_=w}Xi(s,o,u.children,i),o=o.child}return o;case 9:return u=o.type,a=o.pendingProps.children,ch(o,i),a=a(u=eh(u)),o.flags|=1,Xi(s,o,a,i),o.child;case 14:return u=Ci(a=o.type,o.pendingProps),$i(s,o,a,u=Ci(a.type,u),i);case 15:return bj(s,o,o.type,o.pendingProps,i);case 17:return a=o.type,u=o.pendingProps,u=o.elementType===a?u:Ci(a,u),ij(s,o),o.tag=1,Zf(a)?(s=!0,cg(o)):s=!1,ch(o,i),Gi(o,a,u),Ii(o,a,u,i),jj(null,o,a,!0,s,i);case 19:return xj(s,o,i);case 22:return dj(s,o,i)}throw Error(p(156,o.tag))};var lo=\"function\"==typeof reportError?reportError:function(s){console.error(s)};function ll(s){this._internalRoot=s}function ml(s){this._internalRoot=s}function nl(s){return!(!s||1!==s.nodeType&&9!==s.nodeType&&11!==s.nodeType)}function ol(s){return!(!s||1!==s.nodeType&&9!==s.nodeType&&11!==s.nodeType&&(8!==s.nodeType||\" react-mount-point-unstable \"!==s.nodeValue))}function pl(){}function rl(s,o,i,a,u){var _=i._reactRootContainer;if(_){var w=_;if(\"function\"==typeof u){var x=u;u=function(){var s=gl(w);x.call(s)}}fl(o,w,s,u)}else w=function ql(s,o,i,a,u){if(u){if(\"function\"==typeof a){var _=a;a=function(){var s=gl(w);_.call(s)}}var w=el(o,a,s,0,null,!1,0,\"\",pl);return s._reactRootContainer=w,s[fn]=w.current,sf(8===s.nodeType?s.parentNode:s),Rk(),w}for(;u=s.lastChild;)s.removeChild(u);if(\"function\"==typeof a){var x=a;a=function(){var s=gl(C);x.call(s)}}var C=bl(s,0,!1,null,0,!1,0,\"\",pl);return s._reactRootContainer=C,s[fn]=C.current,sf(8===s.nodeType?s.parentNode:s),Rk((function(){fl(o,C,i,a)})),C}(i,o,s,u,a);return gl(w)}ml.prototype.render=ll.prototype.render=function(s){var o=this._internalRoot;if(null===o)throw Error(p(409));fl(s,o,null,null)},ml.prototype.unmount=ll.prototype.unmount=function(){var s=this._internalRoot;if(null!==s){this._internalRoot=null;var o=s.containerInfo;Rk((function(){fl(null,s,null,null)})),o[fn]=null}},ml.prototype.unstable_scheduleHydration=function(s){if(s){var o=Pt();s={blockedOn:null,target:s,priority:o};for(var i=0;i<$t.length&&0!==o&&o<$t[i].priority;i++);$t.splice(i,0,s),0===i&&Vc(s)}},At=function(s){switch(s.tag){case 3:var o=s.stateNode;if(o.current.memoizedState.isDehydrated){var i=tc(o.pendingLanes);0!==i&&(Cc(o,1|i),Dk(o,ht()),!(6&Ls)&&(Xs=ht()+500,jg()))}break;case 13:Rk((function(){var o=ih(s,1);if(null!==o){var i=R();gi(o,s,1,i)}})),il(s,1)}},jt=function(s){if(13===s.tag){var o=ih(s,134217728);if(null!==o)gi(o,s,134217728,R());il(s,134217728)}},It=function(s){if(13===s.tag){var o=yi(s),i=ih(s,o);if(null!==i)gi(i,s,o,R());il(s,o)}},Pt=function(){return Ct},Tt=function(s,o){var i=Ct;try{return Ct=s,o()}finally{Ct=i}},Ye=function(s,o,i){switch(o){case\"input\":if(bb(s,i),o=i.name,\"radio\"===i.type&&null!=o){for(i=s;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+o)+'][type=\"radio\"]'),o=0;o<i.length;o++){var a=i[o];if(a!==s&&a.form===s.form){var u=Db(a);if(!u)throw Error(p(90));Wa(a),bb(a,u)}}}break;case\"textarea\":ib(s,i);break;case\"select\":null!=(o=i.value)&&fb(s,!!i.multiple,o,!1)}},Gb=Qk,Hb=Rk;var uo={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},po={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"},ho={bundleType:po.bundleType,version:po.version,rendererPackageName:po.rendererPackageName,rendererConfig:po.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:U.ReactCurrentDispatcher,findHostInstanceByFiber:function(s){return null===(s=Zb(s))?null:s.stateNode},findFiberByHostInstance:po.findFiberByHostInstance||function jl(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var fo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!fo.isDisabled&&fo.supportsFiber)try{_t=fo.inject(ho),St=fo}catch(Re){}}o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=uo,o.createPortal=function(s,o){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(o))throw Error(p(200));return function cl(s,o,i){var a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:Y,key:null==a?null:\"\"+a,children:s,containerInfo:o,implementation:i}}(s,o,null,i)},o.createRoot=function(s,o){if(!nl(s))throw Error(p(299));var i=!1,a=\"\",u=lo;return null!=o&&(!0===o.unstable_strictMode&&(i=!0),void 0!==o.identifierPrefix&&(a=o.identifierPrefix),void 0!==o.onRecoverableError&&(u=o.onRecoverableError)),o=bl(s,1,!1,null,0,i,0,a,u),s[fn]=o.current,sf(8===s.nodeType?s.parentNode:s),new ll(o)},o.findDOMNode=function(s){if(null==s)return null;if(1===s.nodeType)return s;var o=s._reactInternals;if(void 0===o){if(\"function\"==typeof s.render)throw Error(p(188));throw s=Object.keys(s).join(\",\"),Error(p(268,s))}return s=null===(s=Zb(o))?null:s.stateNode},o.flushSync=function(s){return Rk(s)},o.hydrate=function(s,o,i){if(!ol(o))throw Error(p(200));return rl(null,s,o,!0,i)},o.hydrateRoot=function(s,o,i){if(!nl(s))throw Error(p(405));var a=null!=i&&i.hydratedSources||null,u=!1,_=\"\",w=lo;if(null!=i&&(!0===i.unstable_strictMode&&(u=!0),void 0!==i.identifierPrefix&&(_=i.identifierPrefix),void 0!==i.onRecoverableError&&(w=i.onRecoverableError)),o=el(o,null,s,1,null!=i?i:null,u,0,_,w),s[fn]=o.current,sf(s),a)for(s=0;s<a.length;s++)u=(u=(i=a[s])._getVersion)(i._source),null==o.mutableSourceEagerHydrationData?o.mutableSourceEagerHydrationData=[i,u]:o.mutableSourceEagerHydrationData.push(i,u);return new ml(o)},o.render=function(s,o,i){if(!ol(o))throw Error(p(200));return rl(null,s,o,!1,i)},o.unmountComponentAtNode=function(s){if(!ol(s))throw Error(p(40));return!!s._reactRootContainer&&(Rk((function(){rl(null,null,s,!1,(function(){s._reactRootContainer=null,s[fn]=null}))})),!0)},o.unstable_batchedUpdates=Qk,o.unstable_renderSubtreeIntoContainer=function(s,o,i,a){if(!ol(i))throw Error(p(200));if(null==s||void 0===s._reactInternals)throw Error(p(38));return rl(s,o,i,!1,a)},o.version=\"18.3.1-next-f1338f8080-20240426\"},22574:(s,o)=>{\"use strict\";var i={}.propertyIsEnumerable,a=Object.getOwnPropertyDescriptor,u=a&&!i.call({1:2},1);o.f=u?function propertyIsEnumerable(s){var o=a(this,s);return!!o&&o.enumerable}:i},23007:s=>{s.exports=function copyArray(s,o){var i=-1,a=s.length;for(o||(o=Array(a));++i<a;)o[i]=s[i];return o}},23034:(s,o,i)=>{\"use strict\";var a=i(88280),u=i(32567),_=Function.prototype;s.exports=function(s){var o=s.bind;return s===_||a(_,s)&&o===_.bind?u:o}},23045:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(49724),_=i(4993),w=i(74436).indexOf,x=i(38530),C=a([].push);s.exports=function(s,o){var i,a=_(s),j=0,L=[];for(i in a)!u(x,i)&&u(a,i)&&C(L,i);for(;o.length>j;)u(a,i=o[j++])&&(~w(L,i)||C(L,i));return L}},23546:(s,o,i)=>{var a=i(72552),u=i(40346),_=i(11331);s.exports=function isError(s){if(!u(s))return!1;var o=a(s);return\"[object Error]\"==o||\"[object DOMException]\"==o||\"string\"==typeof s.message&&\"string\"==typeof s.name&&!_(s)}},23805:s=>{s.exports=function isObject(s){var o=typeof s;return null!=s&&(\"object\"==o||\"function\"==o)}},23888:(s,o,i)=>{\"use strict\";var a=i(98828),u=i(75817);s.exports=!a((function(){var s=new Error(\"a\");return!(\"stack\"in s)||(Object.defineProperty(s,\"stack\",u(1,7)),7!==s.stack)}))},24107:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],x=new Array(64);function Sha256(){this.init(),this._w=x,u.call(this,64,56)}function ch(s,o,i){return i^s&(o^i)}function maj(s,o,i){return s&o|i&(s|o)}function sigma0(s){return(s>>>2|s<<30)^(s>>>13|s<<19)^(s>>>22|s<<10)}function sigma1(s){return(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7)}function gamma0(s){return(s>>>7|s<<25)^(s>>>18|s<<14)^s>>>3}a(Sha256,u),Sha256.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Sha256.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0|this._f,L=0|this._g,B=0|this._h,$=0;$<16;++$)i[$]=s.readInt32BE(4*$);for(;$<64;++$)i[$]=0|(((o=i[$-2])>>>17|o<<15)^(o>>>19|o<<13)^o>>>10)+i[$-7]+gamma0(i[$-15])+i[$-16];for(var V=0;V<64;++V){var U=B+sigma1(C)+ch(C,j,L)+w[V]+i[V]|0,z=sigma0(a)+maj(a,u,_)|0;B=L,L=j,j=C,C=x+U|0,x=_,_=u,u=a,a=U+z|0}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0,this._f=j+this._f|0,this._g=L+this._g|0,this._h=B+this._h|0},Sha256.prototype._hash=function(){var s=_.allocUnsafe(32);return s.writeInt32BE(this._a,0),s.writeInt32BE(this._b,4),s.writeInt32BE(this._c,8),s.writeInt32BE(this._d,12),s.writeInt32BE(this._e,16),s.writeInt32BE(this._f,20),s.writeInt32BE(this._g,24),s.writeInt32BE(this._h,28),s},s.exports=Sha256},24168:(s,o,i)=>{var a=i(91033),u=i(82819),_=i(9325);s.exports=function createPartial(s,o,i,w){var x=1&o,C=u(s);return function wrapper(){for(var o=-1,u=arguments.length,j=-1,L=w.length,B=Array(L+u),$=this&&this!==_&&this instanceof wrapper?C:s;++j<L;)B[j]=w[j];for(;u--;)B[j++]=arguments[++o];return a($,x?i:this,B)}}},24443:(s,o,i)=>{\"use strict\";var a=i(23045),u=i(80376).concat(\"length\",\"prototype\");o.f=Object.getOwnPropertyNames||function getOwnPropertyNames(s){return a(s,u)}},24647:(s,o,i)=>{var a=i(54552)({À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",Ç:\"C\",ç:\"c\",Ð:\"D\",ð:\"d\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",Ñ:\"N\",ñ:\"n\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",Ý:\"Y\",ý:\"y\",ÿ:\"y\",Æ:\"Ae\",æ:\"ae\",Þ:\"Th\",þ:\"th\",ß:\"ss\",Ā:\"A\",Ă:\"A\",Ą:\"A\",ā:\"a\",ă:\"a\",ą:\"a\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",Ď:\"D\",Đ:\"D\",ď:\"d\",đ:\"d\",Ē:\"E\",Ĕ:\"E\",Ė:\"E\",Ę:\"E\",Ě:\"E\",ē:\"e\",ĕ:\"e\",ė:\"e\",ę:\"e\",ě:\"e\",Ĝ:\"G\",Ğ:\"G\",Ġ:\"G\",Ģ:\"G\",ĝ:\"g\",ğ:\"g\",ġ:\"g\",ģ:\"g\",Ĥ:\"H\",Ħ:\"H\",ĥ:\"h\",ħ:\"h\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",Į:\"I\",İ:\"I\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",į:\"i\",ı:\"i\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",ĸ:\"k\",Ĺ:\"L\",Ļ:\"L\",Ľ:\"L\",Ŀ:\"L\",Ł:\"L\",ĺ:\"l\",ļ:\"l\",ľ:\"l\",ŀ:\"l\",ł:\"l\",Ń:\"N\",Ņ:\"N\",Ň:\"N\",Ŋ:\"N\",ń:\"n\",ņ:\"n\",ň:\"n\",ŋ:\"n\",Ō:\"O\",Ŏ:\"O\",Ő:\"O\",ō:\"o\",ŏ:\"o\",ő:\"o\",Ŕ:\"R\",Ŗ:\"R\",Ř:\"R\",ŕ:\"r\",ŗ:\"r\",ř:\"r\",Ś:\"S\",Ŝ:\"S\",Ş:\"S\",Š:\"S\",ś:\"s\",ŝ:\"s\",ş:\"s\",š:\"s\",Ţ:\"T\",Ť:\"T\",Ŧ:\"T\",ţ:\"t\",ť:\"t\",ŧ:\"t\",Ũ:\"U\",Ū:\"U\",Ŭ:\"U\",Ů:\"U\",Ű:\"U\",Ų:\"U\",ũ:\"u\",ū:\"u\",ŭ:\"u\",ů:\"u\",ű:\"u\",ų:\"u\",Ŵ:\"W\",ŵ:\"w\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Ź:\"Z\",Ż:\"Z\",Ž:\"Z\",ź:\"z\",ż:\"z\",ž:\"z\",Ĳ:\"IJ\",ĳ:\"ij\",Œ:\"Oe\",œ:\"oe\",ŉ:\"'n\",ſ:\"s\"});s.exports=a},24677:(s,o,i)=>{\"use strict\";var a=i(81214).DebounceInput;a.DebounceInput=a,s.exports=a},24713:(s,o,i)=>{var a=i(2523),u=i(15389),_=i(61489),w=Math.max;s.exports=function findIndex(s,o,i){var x=null==s?0:s.length;if(!x)return-1;var C=null==i?0:_(i);return C<0&&(C=w(x+C,0)),a(s,u(o,3),C)}},24739:(s,o,i)=>{var a=i(26025);s.exports=function listCacheGet(s){var o=this.__data__,i=a(o,s);return i<0?void 0:o[i][1]}},24823:(s,o,i)=>{\"use strict\";var a=i(28311),u=i(13930),_=i(36624),w=i(4640),x=i(37812),C=i(20575),j=i(88280),L=i(10300),B=i(73448),$=i(40154),V=TypeError,Result=function(s,o){this.stopped=s,this.result=o},U=Result.prototype;s.exports=function(s,o,i){var z,Y,Z,ee,ie,ae,ce,le=i&&i.that,pe=!(!i||!i.AS_ENTRIES),de=!(!i||!i.IS_RECORD),fe=!(!i||!i.IS_ITERATOR),ye=!(!i||!i.INTERRUPTED),be=a(o,le),stop=function(s){return z&&$(z,\"normal\",s),new Result(!0,s)},callFn=function(s){return pe?(_(s),ye?be(s[0],s[1],stop):be(s[0],s[1])):ye?be(s,stop):be(s)};if(de)z=s.iterator;else if(fe)z=s;else{if(!(Y=B(s)))throw new V(w(s)+\" is not iterable\");if(x(Y)){for(Z=0,ee=C(s);ee>Z;Z++)if((ie=callFn(s[Z]))&&j(U,ie))return ie;return new Result(!1)}z=L(s,Y)}for(ae=de?s.next:z.next;!(ce=u(ae,z)).done;){try{ie=callFn(ce.value)}catch(s){$(z,\"throw\",s)}if(\"object\"==typeof ie&&ie&&j(U,ie))return ie}return new Result(!1)}},25160:s=>{s.exports=function baseSlice(s,o,i){var a=-1,u=s.length;o<0&&(o=-o>u?0:u+o),(i=i>u?u:i)<0&&(i+=u),u=o>i?0:i-o>>>0,o>>>=0;for(var _=Array(u);++a<u;)_[a]=s[a+o];return _}},25264:(s,o,i)=>{\"use strict\";function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}Object.defineProperty(o,\"__esModule\",{value:!0}),o.CopyToClipboard=void 0;var a=_interopRequireDefault(i(96540)),u=_interopRequireDefault(i(17965)),_=[\"text\",\"onCopy\",\"options\",\"children\"];function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i,a,u={},_=Object.keys(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _createSuper(s){var o=function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(s){return!1}}();return function _createSuperInternal(){var i,a=_getPrototypeOf(s);if(o){var u=_getPrototypeOf(this).constructor;i=Reflect.construct(a,arguments,u)}else i=a.apply(this,arguments);return function _possibleConstructorReturn(s,o){if(o&&(\"object\"===_typeof(o)||\"function\"==typeof o))return o;if(void 0!==o)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(s)}(this,i)}}function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var w=function(s){!function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),Object.defineProperty(s,\"prototype\",{writable:!1}),o&&_setPrototypeOf(s,o)}(CopyToClipboard,s);var o=_createSuper(CopyToClipboard);function CopyToClipboard(){var s;!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,CopyToClipboard);for(var i=arguments.length,_=new Array(i),w=0;w<i;w++)_[w]=arguments[w];return _defineProperty(_assertThisInitialized(s=o.call.apply(o,[this].concat(_))),\"onClick\",(function(o){var i=s.props,_=i.text,w=i.onCopy,x=i.children,C=i.options,j=a.default.Children.only(x),L=(0,u.default)(_,C);w&&w(_,L),j&&j.props&&\"function\"==typeof j.props.onClick&&j.props.onClick(o)})),s}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(CopyToClipboard,[{key:\"render\",value:function render(){var s=this.props,o=(s.text,s.onCopy,s.options,s.children),i=_objectWithoutProperties(s,_),u=a.default.Children.only(o);return a.default.cloneElement(u,_objectSpread(_objectSpread({},i),{},{onClick:this.onClick}))}}]),CopyToClipboard}(a.default.PureComponent);o.CopyToClipboard=w,_defineProperty(w,\"defaultProps\",{onCopy:void 0,options:void 0})},25382:(s,o,i)=>{\"use strict\";var a=i(65606),u=Object.keys||function(s){var o=[];for(var i in s)o.push(i);return o};s.exports=Duplex;var _=i(45412),w=i(16708);i(56698)(Duplex,_);for(var x=u(w.prototype),C=0;C<x.length;C++){var j=x[C];Duplex.prototype[j]||(Duplex.prototype[j]=w.prototype[j])}function Duplex(s){if(!(this instanceof Duplex))return new Duplex(s);_.call(this,s),w.call(this,s),this.allowHalfOpen=!0,s&&(!1===s.readable&&(this.readable=!1),!1===s.writable&&(this.writable=!1),!1===s.allowHalfOpen&&(this.allowHalfOpen=!1,this.once(\"end\",onend)))}function onend(){this._writableState.ended||a.nextTick(onEndNT,this)}function onEndNT(s){s.end()}Object.defineProperty(Duplex.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Object.defineProperty(Duplex.prototype,\"writableBuffer\",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Duplex.prototype,\"writableLength\",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Duplex.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function set(s){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=s,this._writableState.destroyed=s)}})},25594:(s,o,i)=>{\"use strict\";var a=i(85582),u=i(62250),_=i(88280),w=i(51175),x=Object;s.exports=w?function(s){return\"symbol\"==typeof s}:function(s){var o=a(\"Symbol\");return u(o)&&_(o.prototype,x(s))}},25911:(s,o,i)=>{var a=i(38859),u=i(14248),_=i(19219);s.exports=function equalArrays(s,o,i,w,x,C){var j=1&i,L=s.length,B=o.length;if(L!=B&&!(j&&B>L))return!1;var $=C.get(s),V=C.get(o);if($&&V)return $==o&&V==s;var U=-1,z=!0,Y=2&i?new a:void 0;for(C.set(s,o),C.set(o,s);++U<L;){var Z=s[U],ee=o[U];if(w)var ie=j?w(ee,Z,U,o,s,C):w(Z,ee,U,s,o,C);if(void 0!==ie){if(ie)continue;z=!1;break}if(Y){if(!u(o,(function(s,o){if(!_(Y,o)&&(Z===s||x(Z,s,i,w,C)))return Y.push(o)}))){z=!1;break}}else if(Z!==ee&&!x(Z,ee,i,w,C)){z=!1;break}}return C.delete(s),C.delete(o),z}},26025:(s,o,i)=>{var a=i(75288);s.exports=function assocIndexOf(s,o){for(var i=s.length;i--;)if(a(s[i][0],o))return i;return-1}},26311:s=>{!function(){var o;function format(s){for(var o,i,a,u,_=1,w=[].slice.call(arguments),x=0,C=s.length,j=\"\",L=!1,B=!1,nextArg=function(){return w[_++]},slurpNumber=function(){for(var i=\"\";/\\d/.test(s[x]);)i+=s[x++],o=s[x];return i.length>0?parseInt(i):null};x<C;++x)if(o=s[x],L)switch(L=!1,\".\"==o?(B=!1,o=s[++x]):\"0\"==o&&\".\"==s[x+1]?(B=!0,o=s[x+=2]):B=!0,u=slurpNumber(),o){case\"b\":j+=parseInt(nextArg(),10).toString(2);break;case\"c\":j+=\"string\"==typeof(i=nextArg())||i instanceof String?i:String.fromCharCode(parseInt(i,10));break;case\"d\":j+=parseInt(nextArg(),10);break;case\"f\":a=String(parseFloat(nextArg()).toFixed(u||6)),j+=B?a:a.replace(/^0/,\"\");break;case\"j\":j+=JSON.stringify(nextArg());break;case\"o\":j+=\"0\"+parseInt(nextArg(),10).toString(8);break;case\"s\":j+=nextArg();break;case\"x\":j+=\"0x\"+parseInt(nextArg(),10).toString(16);break;case\"X\":j+=\"0x\"+parseInt(nextArg(),10).toString(16).toUpperCase();break;default:j+=o}else\"%\"===o?L=!0:j+=o;return j}(o=s.exports=format).format=format,o.vsprintf=function vsprintf(s,o){return format.apply(null,[s].concat(o))},\"undefined\"!=typeof console&&\"function\"==typeof console.log&&(o.printf=function printf(){console.log(format.apply(null,arguments))})}()},26571:s=>{s.exports=function powershell(s){const o={$pattern:/-?[A-z\\.\\-]+\\b/,keyword:\"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter\",built_in:\"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write\"},i={begin:\"`[\\\\s\\\\S]\",relevance:0},a={className:\"variable\",variants:[{begin:/\\$\\B/},{className:\"keyword\",begin:/\\$this/},{begin:/\\$[\\w\\d][\\w\\d_:]*/}]},u={className:\"string\",variants:[{begin:/\"/,end:/\"/},{begin:/@\"/,end:/^\"@/}],contains:[i,a,{className:\"variable\",begin:/\\$[A-z]/,end:/[^A-z]/}]},_={className:\"string\",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},w=s.inherit(s.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:\"doctag\",variants:[{begin:/\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/}]}]}),x={className:\"built_in\",variants:[{begin:\"(\".concat(\"Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where\",\")+(-)[\\\\w\\\\d]+\")}]},C={className:\"class\",beginKeywords:\"class enum\",end:/\\s*[{]/,excludeEnd:!0,relevance:0,contains:[s.TITLE_MODE]},j={className:\"function\",begin:/function\\s+/,end:/\\s*\\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:\"function\",relevance:0,className:\"keyword\"},{className:\"title\",begin:/\\w[\\w\\d]*((-)[\\w\\d]+)*/,relevance:0},{begin:/\\(/,end:/\\)/,className:\"params\",relevance:0,contains:[a]}]},L={begin:/using\\s/,end:/$/,returnBegin:!0,contains:[u,_,{className:\"keyword\",begin:/(using|assembly|command|module|namespace|type)/}]},B={variants:[{className:\"operator\",begin:\"(\".concat(\"-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor\",\")\\\\b\")},{className:\"literal\",begin:/(-)[\\w\\d]+/,relevance:0}]},$={className:\"function\",begin:/\\[.*\\]\\s*[\\w]+[ ]??\\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:\"keyword\",begin:\"(\".concat(o.keyword.toString().replace(/\\s/g,\"|\"),\")\\\\b\"),endsParent:!0,relevance:0},s.inherit(s.TITLE_MODE,{endsParent:!0})]},V=[$,w,i,s.NUMBER_MODE,u,_,x,a,{className:\"literal\",begin:/\\$(null|true|false)\\b/},{className:\"selector-tag\",begin:/@\\B/,relevance:0}],U={begin:/\\[/,end:/\\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat(\"self\",V,{begin:\"(\"+[\"string\",\"char\",\"byte\",\"int\",\"long\",\"bool\",\"decimal\",\"single\",\"double\",\"DateTime\",\"xml\",\"array\",\"hashtable\",\"void\"].join(\"|\")+\")\",className:\"built_in\",relevance:0},{className:\"type\",begin:/[\\.\\w\\d]+/,relevance:0})};return $.contains.unshift(U),{name:\"PowerShell\",aliases:[\"ps\",\"ps1\"],case_insensitive:!0,keywords:o,contains:V.concat(C,j,L,B,U)}}},26657:(s,o,i)=>{\"use strict\";var a=i(75208),u=function isClosingTag(s){return/<\\/+[^>]+>/.test(s)},_=function isSelfClosingTag(s){return/<[^>]+\\/>/.test(s)};function getType(s){return u(s)?\"ClosingTag\":function isOpeningTag(s){return function isTag(s){return/<[^>!]+>/.test(s)}(s)&&!u(s)&&!_(s)}(s)?\"OpeningTag\":_(s)?\"SelfClosingTag\":\"Text\"}s.exports=function(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=o.indentor,u=o.textNodesOnSameLine,_=0,w=[];i=i||\"    \";var x=function lexer(s){return function splitOnTags(s){return s.split(/(<\\/?[^>]+>)/g).filter((function(s){return\"\"!==s.trim()}))}(s).map((function(s){return{value:s,type:getType(s)}}))}(s).map((function(s,o,x){var C=s.value,j=s.type;\"ClosingTag\"===j&&_--;var L=a(i,_),B=L+C;if(\"OpeningTag\"===j&&_++,u){var $=x[o-1],V=x[o-2];\"ClosingTag\"===j&&\"Text\"===$.type&&\"OpeningTag\"===V.type&&(B=\"\"+L+V.value+$.value+C,w.push(o-2,o-1))}return B}));return w.forEach((function(s){return x[s]=null})),x.filter((function(s){return!!s})).join(\"\\n\")}},26710:(s,o,i)=>{var a=i(56698),u=i(24107),_=i(90392),w=i(92861).Buffer,x=new Array(64);function Sha224(){this.init(),this._w=x,_.call(this,64,56)}a(Sha224,u),Sha224.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},Sha224.prototype._hash=function(){var s=w.allocUnsafe(28);return s.writeInt32BE(this._a,0),s.writeInt32BE(this._b,4),s.writeInt32BE(this._c,8),s.writeInt32BE(this._d,12),s.writeInt32BE(this._e,16),s.writeInt32BE(this._f,20),s.writeInt32BE(this._g,24),s},s.exports=Sha224},27096:(s,o,i)=>{const a=i(87586),u=i(6205),_=i(10023),w=i(8048);s.exports=s=>{var o,i,x=0,C={type:u.ROOT,stack:[]},j=C,L=C.stack,B=[],repeatErr=o=>{a.error(s,\"Nothing to repeat at column \"+(o-1))},$=a.strToChars(s);for(o=$.length;x<o;)switch(i=$[x++]){case\"\\\\\":switch(i=$[x++]){case\"b\":L.push(w.wordBoundary());break;case\"B\":L.push(w.nonWordBoundary());break;case\"w\":L.push(_.words());break;case\"W\":L.push(_.notWords());break;case\"d\":L.push(_.ints());break;case\"D\":L.push(_.notInts());break;case\"s\":L.push(_.whitespace());break;case\"S\":L.push(_.notWhitespace());break;default:/\\d/.test(i)?L.push({type:u.REFERENCE,value:parseInt(i,10)}):L.push({type:u.CHAR,value:i.charCodeAt(0)})}break;case\"^\":L.push(w.begin());break;case\"$\":L.push(w.end());break;case\"[\":var V;\"^\"===$[x]?(V=!0,x++):V=!1;var U=a.tokenizeClass($.slice(x),s);x+=U[1],L.push({type:u.SET,set:U[0],not:V});break;case\".\":L.push(_.anyChar());break;case\"(\":var z={type:u.GROUP,stack:[],remember:!0};\"?\"===(i=$[x])&&(i=$[x+1],x+=2,\"=\"===i?z.followedBy=!0:\"!\"===i?z.notFollowedBy=!0:\":\"!==i&&a.error(s,`Invalid group, character '${i}' after '?' at column `+(x-1)),z.remember=!1),L.push(z),B.push(j),j=z,L=z.stack;break;case\")\":0===B.length&&a.error(s,\"Unmatched ) at column \"+(x-1)),L=(j=B.pop()).options?j.options[j.options.length-1]:j.stack;break;case\"|\":j.options||(j.options=[j.stack],delete j.stack);var Y=[];j.options.push(Y),L=Y;break;case\"{\":var Z,ee,ie=/^(\\d+)(,(\\d+)?)?\\}/.exec($.slice(x));null!==ie?(0===L.length&&repeatErr(x),Z=parseInt(ie[1],10),ee=ie[2]?ie[3]?parseInt(ie[3],10):1/0:Z,x+=ie[0].length,L.push({type:u.REPETITION,min:Z,max:ee,value:L.pop()})):L.push({type:u.CHAR,value:123});break;case\"?\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:0,max:1,value:L.pop()});break;case\"+\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:1,max:1/0,value:L.pop()});break;case\"*\":0===L.length&&repeatErr(x),L.push({type:u.REPETITION,min:0,max:1/0,value:L.pop()});break;default:L.push({type:u.CHAR,value:i.charCodeAt(0)})}return 0!==B.length&&a.error(s,\"Unterminated group\"),C},s.exports.types=u},27301:s=>{s.exports=function baseUnary(s){return function(o){return s(o)}}},27374:(s,o)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=function(s,o,i){if(void 0===s)throw new Error('Reducer \"'+o+'\" returned undefined when handling \"'+i.type+'\" action. To ignore an action, you must explicitly return the previous state.')},s.exports=o.default},27534:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function baseIsArguments(s){return u(s)&&\"[object Arguments]\"==a(s)}},27816:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1518500249,1859775393,-1894007588,-899497514],x=new Array(80);function Sha(){this.init(),this._w=x,u.call(this,64,56)}function rotl30(s){return s<<30|s>>>2}function ft(s,o,i,a){return 0===s?o&i|~o&a:2===s?o&i|o&a|i&a:o^i^a}a(Sha,u),Sha.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0;j<16;++j)i[j]=s.readInt32BE(4*j);for(;j<80;++j)i[j]=i[j-3]^i[j-8]^i[j-14]^i[j-16];for(var L=0;L<80;++L){var B=~~(L/20),$=0|((o=a)<<5|o>>>27)+ft(B,u,_,x)+C+i[L]+w[B];C=x,x=_,_=rotl30(u),u=a,a=$}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0},Sha.prototype._hash=function(){var s=_.allocUnsafe(20);return s.writeInt32BE(0|this._a,0),s.writeInt32BE(0|this._b,4),s.writeInt32BE(0|this._c,8),s.writeInt32BE(0|this._d,12),s.writeInt32BE(0|this._e,16),s},s.exports=Sha},28077:s=>{s.exports=function baseHasIn(s,o){return null!=s&&o in Object(s)}},28303:(s,o,i)=>{var a=i(56110)(i(9325),\"WeakMap\");s.exports=a},28311:(s,o,i)=>{\"use strict\";var a=i(92361),u=i(82159),_=i(41505),w=a(a.bind);s.exports=function(s,o){return u(s),void 0===o?s:_?w(s,o):function(){return s.apply(o,arguments)}}},28586:(s,o,i)=>{var a=i(56449),u=i(44394),_=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,w=/^\\w*$/;s.exports=function isKey(s,o){if(a(s))return!1;var i=typeof s;return!(\"number\"!=i&&\"symbol\"!=i&&\"boolean\"!=i&&null!=s&&!u(s))||(w.test(s)||!_.test(s)||null!=o&&s in Object(o))}},28754:(s,o,i)=>{var a=i(25160);s.exports=function castSlice(s,o,i){var u=s.length;return i=void 0===i?u:i,!o&&i>=u?s:a(s,o,i)}},28879:(s,o,i)=>{var a=i(74335)(Object.getPrototypeOf,Object);s.exports=a},29172:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsMap(s){return u(s)&&\"[object Map]\"==a(s)}},29367:(s,o,i)=>{\"use strict\";var a=i(82159),u=i(87136);s.exports=function(s,o){var i=s[o];return u(i)?void 0:a(i)}},29538:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(1907),_=i(13930),w=i(98828),x=i(2875),C=i(87170),j=i(22574),L=i(39298),B=i(16946),$=Object.assign,V=Object.defineProperty,U=u([].concat);s.exports=!$||w((function(){if(a&&1!==$({b:1},$(V({},\"a\",{enumerable:!0,get:function(){V(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var s={},o={},i=Symbol(\"assign detection\"),u=\"abcdefghijklmnopqrst\";return s[i]=7,u.split(\"\").forEach((function(s){o[s]=s})),7!==$({},s)[i]||x($({},o)).join(\"\")!==u}))?function assign(s,o){for(var i=L(s),u=arguments.length,w=1,$=C.f,V=j.f;u>w;)for(var z,Y=B(arguments[w++]),Z=$?U(x(Y),$(Y)):x(Y),ee=Z.length,ie=0;ee>ie;)z=Z[ie++],a&&!_(V,Y,z)||(i[z]=Y[z]);return i}:$},29817:s=>{s.exports=function stackHas(s){return this.__data__.has(s)}},29844:(s,o)=>{\"use strict\";function f(s,o){var i=s.length;s.push(o);e:for(;0<i;){var a=i-1>>>1,u=s[a];if(!(0<g(u,o)))break e;s[a]=o,s[i]=u,i=a}}function h(s){return 0===s.length?null:s[0]}function k(s){if(0===s.length)return null;var o=s[0],i=s.pop();if(i!==o){s[0]=i;e:for(var a=0,u=s.length,_=u>>>1;a<_;){var w=2*(a+1)-1,x=s[w],C=w+1,j=s[C];if(0>g(x,i))C<u&&0>g(j,x)?(s[a]=j,s[C]=i,a=C):(s[a]=x,s[w]=i,a=w);else{if(!(C<u&&0>g(j,i)))break e;s[a]=j,s[C]=i,a=C}}}return o}function g(s,o){var i=s.sortIndex-o.sortIndex;return 0!==i?i:s.id-o.id}if(\"object\"==typeof performance&&\"function\"==typeof performance.now){var i=performance;o.unstable_now=function(){return i.now()}}else{var a=Date,u=a.now();o.unstable_now=function(){return a.now()-u}}var _=[],w=[],x=1,C=null,j=3,L=!1,B=!1,$=!1,V=\"function\"==typeof setTimeout?setTimeout:null,U=\"function\"==typeof clearTimeout?clearTimeout:null,z=\"undefined\"!=typeof setImmediate?setImmediate:null;function G(s){for(var o=h(w);null!==o;){if(null===o.callback)k(w);else{if(!(o.startTime<=s))break;k(w),o.sortIndex=o.expirationTime,f(_,o)}o=h(w)}}function H(s){if($=!1,G(s),!B)if(null!==h(_))B=!0,I(J);else{var o=h(w);null!==o&&K(H,o.startTime-s)}}function J(s,i){B=!1,$&&($=!1,U(ie),ie=-1),L=!0;var a=j;try{for(G(i),C=h(_);null!==C&&(!(C.expirationTime>i)||s&&!M());){var u=C.callback;if(\"function\"==typeof u){C.callback=null,j=C.priorityLevel;var x=u(C.expirationTime<=i);i=o.unstable_now(),\"function\"==typeof x?C.callback=x:C===h(_)&&k(_),G(i)}else k(_);C=h(_)}if(null!==C)var V=!0;else{var z=h(w);null!==z&&K(H,z.startTime-i),V=!1}return V}finally{C=null,j=a,L=!1}}\"undefined\"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var Y,Z=!1,ee=null,ie=-1,ae=5,ce=-1;function M(){return!(o.unstable_now()-ce<ae)}function R(){if(null!==ee){var s=o.unstable_now();ce=s;var i=!0;try{i=ee(!0,s)}finally{i?Y():(Z=!1,ee=null)}}else Z=!1}if(\"function\"==typeof z)Y=function(){z(R)};else if(\"undefined\"!=typeof MessageChannel){var le=new MessageChannel,pe=le.port2;le.port1.onmessage=R,Y=function(){pe.postMessage(null)}}else Y=function(){V(R,0)};function I(s){ee=s,Z||(Z=!0,Y())}function K(s,i){ie=V((function(){s(o.unstable_now())}),i)}o.unstable_IdlePriority=5,o.unstable_ImmediatePriority=1,o.unstable_LowPriority=4,o.unstable_NormalPriority=3,o.unstable_Profiling=null,o.unstable_UserBlockingPriority=2,o.unstable_cancelCallback=function(s){s.callback=null},o.unstable_continueExecution=function(){B||L||(B=!0,I(J))},o.unstable_forceFrameRate=function(s){0>s||125<s?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):ae=0<s?Math.floor(1e3/s):5},o.unstable_getCurrentPriorityLevel=function(){return j},o.unstable_getFirstCallbackNode=function(){return h(_)},o.unstable_next=function(s){switch(j){case 1:case 2:case 3:var o=3;break;default:o=j}var i=j;j=o;try{return s()}finally{j=i}},o.unstable_pauseExecution=function(){},o.unstable_requestPaint=function(){},o.unstable_runWithPriority=function(s,o){switch(s){case 1:case 2:case 3:case 4:case 5:break;default:s=3}var i=j;j=s;try{return o()}finally{j=i}},o.unstable_scheduleCallback=function(s,i,a){var u=o.unstable_now();switch(\"object\"==typeof a&&null!==a?a=\"number\"==typeof(a=a.delay)&&0<a?u+a:u:a=u,s){case 1:var C=-1;break;case 2:C=250;break;case 5:C=1073741823;break;case 4:C=1e4;break;default:C=5e3}return s={id:x++,callback:i,priorityLevel:s,startTime:a,expirationTime:C=a+C,sortIndex:-1},a>u?(s.sortIndex=a,f(w,s),null===h(_)&&s===h(w)&&($?(U(ie),ie=-1):$=!0,K(H,a-u))):(s.sortIndex=C,f(_,s),B||L||(B=!0,I(J))),s},o.unstable_shouldYield=M,o.unstable_wrapCallback=function(s){var o=j;return function(){var i=j;j=o;try{return s.apply(this,arguments)}finally{j=i}}}},30294:s=>{s.exports=function isLength(s){return\"number\"==typeof s&&s>-1&&s%1==0&&s<=9007199254740991}},30361:s=>{var o=/^(?:0|[1-9]\\d*)$/;s.exports=function isIndex(s,i){var a=typeof s;return!!(i=null==i?9007199254740991:i)&&(\"number\"==a||\"symbol\"!=a&&o.test(s))&&s>-1&&s%1==0&&s<i}},30641:(s,o,i)=>{var a=i(86649),u=i(95950);s.exports=function baseForOwn(s,o){return s&&a(s,o,u)}},30756:(s,o,i)=>{var a=i(23805);s.exports=function isStrictComparable(s){return s==s&&!a(s)}},30980:(s,o,i)=>{var a=i(39344),u=i(94033);function LazyWrapper(s){this.__wrapped__=s,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}LazyWrapper.prototype=a(u.prototype),LazyWrapper.prototype.constructor=LazyWrapper,s.exports=LazyWrapper},31175:(s,o,i)=>{var a=i(26025);s.exports=function listCacheSet(s,o){var i=this.__data__,u=a(i,s);return u<0?(++this.size,i.push([s,o])):i[u][1]=o,this}},31380:s=>{s.exports=function setCacheAdd(s){return this.__data__.set(s,\"__lodash_hash_undefined__\"),this}},31499:s=>{var o={\"&\":\"&amp;\",'\"':\"&quot;\",\"'\":\"&apos;\",\"<\":\"&lt;\",\">\":\"&gt;\"};s.exports=function escapeForXML(s){return s&&s.replace?s.replace(/([&\"<>'])/g,(function(s,i){return o[i]})):s}},31769:(s,o,i)=>{var a=i(56449),u=i(28586),_=i(61802),w=i(13222);s.exports=function castPath(s,o){return a(s)?s:u(s,o)?[s]:_(w(s))}},31800:s=>{var o=/\\s/;s.exports=function trimmedEndIndex(s){for(var i=s.length;i--&&o.test(s.charAt(i)););return i}},32096:(s,o,i)=>{\"use strict\";var a=i(90160);s.exports=function(s,o){return void 0===s?arguments.length<2?\"\":o:a(s)}},32567:(s,o,i)=>{\"use strict\";i(79307);var a=i(61747);s.exports=a(\"Function\",\"bind\")},32629:(s,o,i)=>{var a=i(9999);s.exports=function clone(s){return a(s,4)}},32804:(s,o,i)=>{var a=i(56110)(i(9325),\"Promise\");s.exports=a},32827:(s,o,i)=>{var a=i(56698),u=i(82890),_=i(90392),w=i(92861).Buffer,x=new Array(160);function Sha384(){this.init(),this._w=x,_.call(this,128,112)}a(Sha384,u),Sha384.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},Sha384.prototype._hash=function(){var s=w.allocUnsafe(48);function writeInt64BE(o,i,a){s.writeInt32BE(o,a),s.writeInt32BE(i,a+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),s},s.exports=Sha384},32865:(s,o,i)=>{var a=i(19570),u=i(51811)(a);s.exports=u},33855:(s,o,i)=>{var a=i(9999),u=i(15389);s.exports=function iteratee(s){return u(\"function\"==typeof s?s:a(s,1))}},34035:(s,o,i)=>{const a=i(3110),u=i(86804);o.g$=a,o.KeyValuePair=i(55973),o.G6=u.ArraySlice,o.ot=u.ObjectSlice,o.Hg=u.Element,o.Om=u.StringElement,o.kT=u.NumberElement,o.bd=u.BooleanElement,o.Os=u.NullElement,o.wE=u.ArrayElement,o.Sh=u.ObjectElement,o.Pr=u.MemberElement,o.sI=u.RefElement,o.Ft=u.LinkElement,o.e=u.refract,i(85105),i(75147)},34084:(s,o,i)=>{\"use strict\";var a=i(62250),u=i(46285),_=i(79192);s.exports=function(s,o,i){var w,x;return _&&a(w=o.constructor)&&w!==i&&u(x=w.prototype)&&x!==i.prototype&&_(s,x),s}},34840:(s,o,i)=>{var a=\"object\"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;s.exports=a},34849:(s,o,i)=>{\"use strict\";var a=i(65482),u=Math.max,_=Math.min;s.exports=function(s,o){var i=a(s);return i<0?u(i+o,0):_(i,o)}},34932:s=>{s.exports=function arrayMap(s,o){for(var i=-1,a=null==s?0:s.length,u=Array(a);++i<a;)u[i]=o(s[i],i,s);return u}},35344:s=>{function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function bash(s){const o={},i={begin:/\\$\\{/,end:/\\}/,contains:[\"self\",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:\"variable\",variants:[{begin:concat(/\\$[\\w\\d#@][\\w\\d_]*/,\"(?![\\\\w\\\\d])(?![$])\")},i]});const a={className:\"subst\",begin:/\\$\\(/,end:/\\)/,contains:[s.BACKSLASH_ESCAPE]},u={begin:/<<-?\\s*(?=\\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\\w+)/,end:/(\\w+)/,className:\"string\"})]}},_={className:\"string\",begin:/\"/,end:/\"/,contains:[s.BACKSLASH_ESCAPE,o,a]};a.contains.push(_);const w={begin:/\\$\\(\\(/,end:/\\)\\)/,contains:[{begin:/\\d+#[0-9a-f]+/,className:\"number\"},s.NUMBER_MODE,o]},x=s.SHEBANG({binary:`(${[\"fish\",\"bash\",\"zsh\",\"sh\",\"csh\",\"ksh\",\"tcsh\",\"dash\",\"scsh\"].join(\"|\")})`,relevance:10}),C={className:\"function\",begin:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,returnBegin:!0,contains:[s.inherit(s.TITLE_MODE,{begin:/\\w[\\w\\d_]*/})],relevance:0};return{name:\"Bash\",aliases:[\"sh\",\"zsh\"],keywords:{$pattern:/\\b[a-z._-]+\\b/,keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\"},contains:[x,s.SHEBANG(),C,w,s.HASH_COMMENT_MODE,u,_,{className:\"\",begin:/\\\\\"/},{className:\"string\",begin:/'/,end:/'/},o]}}},35529:(s,o,i)=>{var a=i(39344),u=i(28879),_=i(55527);s.exports=function initCloneObject(s){return\"function\"!=typeof s.constructor||_(s)?{}:a(u(s))}},35749:(s,o,i)=>{var a=i(81042);s.exports=function hashSet(s,o){var i=this.__data__;return this.size+=this.has(s)?0:1,i[s]=a&&void 0===o?\"__lodash_hash_undefined__\":o,this}},35970:(s,o,i)=>{var a=i(83120);s.exports=function flatten(s){return(null==s?0:s.length)?a(s,1):[]}},36128:(s,o,i)=>{\"use strict\";var a=i(7376),u=i(45951),_=i(2532),w=\"__core-js_shared__\",x=s.exports=u[w]||_(w,{});(x.versions||(x.versions=[])).push({version:\"3.40.0\",mode:a?\"pure\":\"global\",copyright:\"© 2014-2025 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},36306:s=>{var o=\"__lodash_placeholder__\";s.exports=function replaceHolders(s,i){for(var a=-1,u=s.length,_=0,w=[];++a<u;){var x=s[a];x!==i&&x!==o||(s[a]=o,w[_++]=a)}return w}},36371:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(85582),_=i(76024),w=i(98828),x=i(19358),C=\"AggregateError\",j=u(C),L=!w((function(){return 1!==j([1]).errors[0]}))&&w((function(){return 7!==j([1],C,{cause:7}).cause}));a({global:!0,constructor:!0,arity:2,forced:L},{AggregateError:x(C,(function(s){return function AggregateError(o,i){return _(s,this,arguments)}}),L,!0)})},36624:(s,o,i)=>{\"use strict\";var a=i(46285),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(u(s)+\" is not an object\")}},36800:(s,o,i)=>{var a=i(75288),u=i(64894),_=i(30361),w=i(23805);s.exports=function isIterateeCall(s,o,i){if(!w(i))return!1;var x=typeof o;return!!(\"number\"==x?u(i)&&_(o,i.length):\"string\"==x&&o in i)&&a(i[o],s)}},36833:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(49724),_=Function.prototype,w=a&&Object.getOwnPropertyDescriptor,x=u(_,\"name\"),C=x&&\"something\"===function something(){}.name,j=x&&(!a||a&&w(_,\"name\").configurable);s.exports={EXISTS:x,PROPER:C,CONFIGURABLE:j}},37007:s=>{\"use strict\";var o,i=\"object\"==typeof Reflect?Reflect:null,a=i&&\"function\"==typeof i.apply?i.apply:function ReflectApply(s,o,i){return Function.prototype.apply.call(s,o,i)};o=i&&\"function\"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s)};var u=Number.isNaN||function NumberIsNaN(s){return s!=s};function EventEmitter(){EventEmitter.init.call(this)}s.exports=EventEmitter,s.exports.once=function once(s,o){return new Promise((function(i,a){function errorListener(i){s.removeListener(o,resolver),a(i)}function resolver(){\"function\"==typeof s.removeListener&&s.removeListener(\"error\",errorListener),i([].slice.call(arguments))}eventTargetAgnosticAddListener(s,o,resolver,{once:!0}),\"error\"!==o&&function addErrorHandlerIfEventEmitter(s,o,i){\"function\"==typeof s.on&&eventTargetAgnosticAddListener(s,\"error\",o,i)}(s,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(s){if(\"function\"!=typeof s)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof s)}function _getMaxListeners(s){return void 0===s._maxListeners?EventEmitter.defaultMaxListeners:s._maxListeners}function _addListener(s,o,i,a){var u,_,w;if(checkListener(i),void 0===(_=s._events)?(_=s._events=Object.create(null),s._eventsCount=0):(void 0!==_.newListener&&(s.emit(\"newListener\",o,i.listener?i.listener:i),_=s._events),w=_[o]),void 0===w)w=_[o]=i,++s._eventsCount;else if(\"function\"==typeof w?w=_[o]=a?[i,w]:[w,i]:a?w.unshift(i):w.push(i),(u=_getMaxListeners(s))>0&&w.length>u&&!w.warned){w.warned=!0;var x=new Error(\"Possible EventEmitter memory leak detected. \"+w.length+\" \"+String(o)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");x.name=\"MaxListenersExceededWarning\",x.emitter=s,x.type=o,x.count=w.length,function ProcessEmitWarning(s){console&&console.warn&&console.warn(s)}(x)}return s}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(s,o,i){var a={fired:!1,wrapFn:void 0,target:s,type:o,listener:i},u=onceWrapper.bind(a);return u.listener=i,a.wrapFn=u,u}function _listeners(s,o,i){var a=s._events;if(void 0===a)return[];var u=a[o];return void 0===u?[]:\"function\"==typeof u?i?[u.listener||u]:[u]:i?function unwrapListeners(s){for(var o=new Array(s.length),i=0;i<o.length;++i)o[i]=s[i].listener||s[i];return o}(u):arrayClone(u,u.length)}function listenerCount(s){var o=this._events;if(void 0!==o){var i=o[s];if(\"function\"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function arrayClone(s,o){for(var i=new Array(o),a=0;a<o;++a)i[a]=s[a];return i}function eventTargetAgnosticAddListener(s,o,i,a){if(\"function\"==typeof s.on)a.once?s.once(o,i):s.on(o,i);else{if(\"function\"!=typeof s.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof s);s.addEventListener(o,(function wrapListener(u){a.once&&s.removeEventListener(o,wrapListener),i(u)}))}}Object.defineProperty(EventEmitter,\"defaultMaxListeners\",{enumerable:!0,get:function(){return _},set:function(s){if(\"number\"!=typeof s||s<0||u(s))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+s+\".\");_=s}}),EventEmitter.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},EventEmitter.prototype.setMaxListeners=function setMaxListeners(s){if(\"number\"!=typeof s||s<0||u(s))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+s+\".\");return this._maxListeners=s,this},EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)},EventEmitter.prototype.emit=function emit(s){for(var o=[],i=1;i<arguments.length;i++)o.push(arguments[i]);var u=\"error\"===s,_=this._events;if(void 0!==_)u=u&&void 0===_.error;else if(!u)return!1;if(u){var w;if(o.length>0&&(w=o[0]),w instanceof Error)throw w;var x=new Error(\"Unhandled error.\"+(w?\" (\"+w.message+\")\":\"\"));throw x.context=w,x}var C=_[s];if(void 0===C)return!1;if(\"function\"==typeof C)a(C,this,o);else{var j=C.length,L=arrayClone(C,j);for(i=0;i<j;++i)a(L[i],this,o)}return!0},EventEmitter.prototype.addListener=function addListener(s,o){return _addListener(this,s,o,!1)},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.prependListener=function prependListener(s,o){return _addListener(this,s,o,!0)},EventEmitter.prototype.once=function once(s,o){return checkListener(o),this.on(s,_onceWrap(this,s,o)),this},EventEmitter.prototype.prependOnceListener=function prependOnceListener(s,o){return checkListener(o),this.prependListener(s,_onceWrap(this,s,o)),this},EventEmitter.prototype.removeListener=function removeListener(s,o){var i,a,u,_,w;if(checkListener(o),void 0===(a=this._events))return this;if(void 0===(i=a[s]))return this;if(i===o||i.listener===o)0==--this._eventsCount?this._events=Object.create(null):(delete a[s],a.removeListener&&this.emit(\"removeListener\",s,i.listener||o));else if(\"function\"!=typeof i){for(u=-1,_=i.length-1;_>=0;_--)if(i[_]===o||i[_].listener===o){w=i[_].listener,u=_;break}if(u<0)return this;0===u?i.shift():function spliceOne(s,o){for(;o+1<s.length;o++)s[o]=s[o+1];s.pop()}(i,u),1===i.length&&(a[s]=i[0]),void 0!==a.removeListener&&this.emit(\"removeListener\",s,w||o)}return this},EventEmitter.prototype.off=EventEmitter.prototype.removeListener,EventEmitter.prototype.removeAllListeners=function removeAllListeners(s){var o,i,a;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[s]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[s]),this;if(0===arguments.length){var u,_=Object.keys(i);for(a=0;a<_.length;++a)\"removeListener\"!==(u=_[a])&&this.removeAllListeners(u);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(o=i[s]))this.removeListener(s,o);else if(void 0!==o)for(a=o.length-1;a>=0;a--)this.removeListener(s,o[a]);return this},EventEmitter.prototype.listeners=function listeners(s){return _listeners(this,s,!0)},EventEmitter.prototype.rawListeners=function rawListeners(s){return _listeners(this,s,!1)},EventEmitter.listenerCount=function(s,o){return\"function\"==typeof s.listenerCount?s.listenerCount(o):listenerCount.call(s,o)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?o(this._events):[]}},37167:(s,o,i)=>{var a=i(4901),u=i(27301),_=i(86009),w=_&&_.isTypedArray,x=w?u(w):a;s.exports=x},37217:(s,o,i)=>{var a=i(80079),u=i(51420),_=i(90938),w=i(63605),x=i(29817),C=i(80945);function Stack(s){var o=this.__data__=new a(s);this.size=o.size}Stack.prototype.clear=u,Stack.prototype.delete=_,Stack.prototype.get=w,Stack.prototype.has=x,Stack.prototype.set=C,s.exports=Stack},37241:(s,o,i)=>{var a=i(70695),u=i(72903),_=i(64894);s.exports=function keysIn(s){return _(s)?a(s,!0):u(s)}},37257:(s,o,i)=>{\"use strict\";i(96605),i(64502),i(36371),i(99363),i(7057);var a=i(92046);s.exports=a.AggregateError},37334:s=>{s.exports=function constant(s){return function(){return s}}},37381:(s,o,i)=>{var a=i(48152),u=i(63950),_=a?function(s){return a.get(s)}:u;s.exports=_},37471:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(58523),w=i(82819),x=i(18073),C=i(11287),j=i(68294),L=i(36306),B=i(9325);s.exports=function createHybrid(s,o,i,$,V,U,z,Y,Z,ee){var ie=128&o,ae=1&o,ce=2&o,le=24&o,pe=512&o,de=ce?void 0:w(s);return function wrapper(){for(var fe=arguments.length,ye=Array(fe),be=fe;be--;)ye[be]=arguments[be];if(le)var _e=C(wrapper),Se=_(ye,_e);if($&&(ye=a(ye,$,V,le)),U&&(ye=u(ye,U,z,le)),fe-=Se,le&&fe<ee){var we=L(ye,_e);return x(s,o,createHybrid,wrapper.placeholder,i,ye,we,Y,Z,ee-fe)}var xe=ae?i:this,Pe=ce?xe[s]:s;return fe=ye.length,Y?ye=j(ye,Y):pe&&fe>1&&ye.reverse(),ie&&Z<fe&&(ye.length=Z),this&&this!==B&&this instanceof wrapper&&(Pe=de||w(Pe)),Pe.apply(xe,ye)}}},37812:(s,o,i)=>{\"use strict\";var a=i(76264),u=i(93742),_=a(\"iterator\"),w=Array.prototype;s.exports=function(s){return void 0!==s&&(u.Array===s||w[_]===s)}},37828:(s,o,i)=>{var a=i(9325).Uint8Array;s.exports=a},38221:(s,o,i)=>{var a=i(23805),u=i(10124),_=i(99374),w=Math.max,x=Math.min;s.exports=function debounce(s,o,i){var C,j,L,B,$,V,U=0,z=!1,Y=!1,Z=!0;if(\"function\"!=typeof s)throw new TypeError(\"Expected a function\");function invokeFunc(o){var i=C,a=j;return C=j=void 0,U=o,B=s.apply(a,i)}function shouldInvoke(s){var i=s-V;return void 0===V||i>=o||i<0||Y&&s-U>=L}function timerExpired(){var s=u();if(shouldInvoke(s))return trailingEdge(s);$=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-V);return Y?x(i,L-(s-U)):i}(s))}function trailingEdge(s){return $=void 0,Z&&C?invokeFunc(s):(C=j=void 0,B)}function debounced(){var s=u(),i=shouldInvoke(s);if(C=arguments,j=this,V=s,i){if(void 0===$)return function leadingEdge(s){return U=s,$=setTimeout(timerExpired,o),z?invokeFunc(s):B}(V);if(Y)return clearTimeout($),$=setTimeout(timerExpired,o),invokeFunc(V)}return void 0===$&&($=setTimeout(timerExpired,o)),B}return o=_(o)||0,a(i)&&(z=!!i.leading,L=(Y=\"maxWait\"in i)?w(_(i.maxWait)||0,o):L,Z=\"trailing\"in i?!!i.trailing:Z),debounced.cancel=function cancel(){void 0!==$&&clearTimeout($),U=0,C=V=j=$=void 0},debounced.flush=function flush(){return void 0===$?B:trailingEdge(u())},debounced}},38329:(s,o,i)=>{var a=i(64894);s.exports=function createBaseEach(s,o){return function(i,u){if(null==i)return i;if(!a(i))return s(i,u);for(var _=i.length,w=o?_:-1,x=Object(i);(o?w--:++w<_)&&!1!==u(x[w],w,x););return i}}},38440:(s,o,i)=>{var a=i(16038),u=i(27301),_=i(86009),w=_&&_.isSet,x=w?u(w):a;s.exports=x},38530:s=>{\"use strict\";s.exports={}},38816:(s,o,i)=>{var a=i(35970),u=i(56757),_=i(32865);s.exports=function flatRest(s){return _(u(s,void 0,a),s+\"\")}},38859:(s,o,i)=>{var a=i(53661),u=i(31380),_=i(51459);function SetCache(s){var o=-1,i=null==s?0:s.length;for(this.__data__=new a;++o<i;)this.add(s[o])}SetCache.prototype.add=SetCache.prototype.push=u,SetCache.prototype.has=_,s.exports=SetCache},39259:(s,o,i)=>{\"use strict\";var a=i(46285),u=i(61626);s.exports=function(s,o){a(o)&&\"cause\"in o&&u(s,\"cause\",o.cause)}},39298:(s,o,i)=>{\"use strict\";var a=i(74239),u=Object;s.exports=function(s){return u(a(s))}},39344:(s,o,i)=>{var a=i(23805),u=Object.create,_=function(){function object(){}return function(s){if(!a(s))return{};if(u)return u(s);object.prototype=s;var o=new object;return object.prototype=void 0,o}}();s.exports=_},39447:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},40154:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(36624),_=i(29367);s.exports=function(s,o,i){var w,x;u(s);try{if(!(w=_(s,\"return\"))){if(\"throw\"===o)throw i;return i}w=a(w,s)}catch(s){x=!0,w=s}if(\"throw\"===o)throw i;if(x)throw w;return u(w),i}},40239:(s,o,i)=>{const a=i(10316);s.exports=class NumberElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"number\"}primitive(){return\"number\"}}},40345:(s,o,i)=>{s.exports=i(37007).EventEmitter},40346:s=>{s.exports=function isObjectLike(s){return null!=s&&\"object\"==typeof s}},40551:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(62250),_=a.WeakMap;s.exports=u(_)&&/native code/.test(String(_))},40860:(s,o,i)=>{var a=i(40882),u=i(80909),_=i(15389),w=i(85558),x=i(56449);s.exports=function reduce(s,o,i){var C=x(s)?a:w,j=arguments.length<3;return C(s,_(o,4),i,j,u)}},40882:s=>{s.exports=function arrayReduce(s,o,i,a){var u=-1,_=null==s?0:s.length;for(a&&_&&(i=s[++u]);++u<_;)i=o(i,s[u],u,s);return i}},40961:(s,o,i)=>{\"use strict\";!function checkDCE(){if(\"undefined\"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE)}catch(s){console.error(s)}}(),s.exports=i(22551)},40975:(s,o,i)=>{\"use strict\";var a=i(9748);s.exports=a},41067:(s,o,i)=>{const a=i(10316);s.exports=class NullElement extends a{constructor(s,o,i){super(s||null,o,i),this.element=\"null\"}primitive(){return\"null\"}set(){return new Error(\"Cannot set the value of null\")}}},41176:s=>{\"use strict\";var o=Math.ceil,i=Math.floor;s.exports=Math.trunc||function trunc(s){var a=+s;return(a>0?i:o)(a)}},41505:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){var s=function(){}.bind();return\"function\"!=typeof s||s.hasOwnProperty(\"prototype\")}))},41799:(s,o,i)=>{var a=i(37217),u=i(60270);s.exports=function baseIsMatch(s,o,i,_){var w=i.length,x=w,C=!_;if(null==s)return!x;for(s=Object(s);w--;){var j=i[w];if(C&&j[2]?j[1]!==s[j[0]]:!(j[0]in s))return!1}for(;++w<x;){var L=(j=i[w])[0],B=s[L],$=j[1];if(C&&j[2]){if(void 0===B&&!(L in s))return!1}else{var V=new a;if(_)var U=_(B,$,L,s,o,V);if(!(void 0===U?u($,B,3,_,V):U))return!1}}return!0}},41859:(s,o,i)=>{const a=i(27096),u=i(78004),_=a.types;s.exports=class RandExp{constructor(s,o){if(this._setDefaults(s),s instanceof RegExp)this.ignoreCase=s.ignoreCase,this.multiline=s.multiline,s=s.source;else{if(\"string\"!=typeof s)throw new Error(\"Expected a regexp or string\");this.ignoreCase=o&&-1!==o.indexOf(\"i\"),this.multiline=o&&-1!==o.indexOf(\"m\")}this.tokens=a(s)}_setDefaults(s){this.max=null!=s.max?s.max:null!=RandExp.prototype.max?RandExp.prototype.max:100,this.defaultRange=s.defaultRange?s.defaultRange:this.defaultRange.clone(),s.randInt&&(this.randInt=s.randInt)}gen(){return this._gen(this.tokens,[])}_gen(s,o){var i,a,u,w,x;switch(s.type){case _.ROOT:case _.GROUP:if(s.followedBy||s.notFollowedBy)return\"\";for(s.remember&&void 0===s.groupNumber&&(s.groupNumber=o.push(null)-1),a=\"\",w=0,x=(i=s.options?this._randSelect(s.options):s.stack).length;w<x;w++)a+=this._gen(i[w],o);return s.remember&&(o[s.groupNumber]=a),a;case _.POSITION:return\"\";case _.SET:var C=this._expand(s);return C.length?String.fromCharCode(this._randSelect(C)):\"\";case _.REPETITION:for(u=this.randInt(s.min,s.max===1/0?s.min+this.max:s.max),a=\"\",w=0;w<u;w++)a+=this._gen(s.value,o);return a;case _.REFERENCE:return o[s.value-1]||\"\";case _.CHAR:var j=this.ignoreCase&&this._randBool()?this._toOtherCase(s.value):s.value;return String.fromCharCode(j)}}_toOtherCase(s){return s+(97<=s&&s<=122?-32:65<=s&&s<=90?32:0)}_randBool(){return!this.randInt(0,1)}_randSelect(s){return s instanceof u?s.index(this.randInt(0,s.length-1)):s[this.randInt(0,s.length-1)]}_expand(s){if(s.type===a.types.CHAR)return new u(s.value);if(s.type===a.types.RANGE)return new u(s.from,s.to);{let o=new u;for(let i=0;i<s.set.length;i++){let a=this._expand(s.set[i]);if(o.add(a),this.ignoreCase)for(let s=0;s<a.length;s++){let i=a.index(s),u=this._toOtherCase(i);i!==u&&o.add(u)}}return s.not?this.defaultRange.clone().subtract(o):this.defaultRange.clone().intersect(o)}}randInt(s,o){return s+Math.floor(Math.random()*(1+o-s))}get defaultRange(){return this._range=this._range||new u(32,126)}set defaultRange(s){this._range=s}static randexp(s,o){var i;return\"string\"==typeof s&&(s=new RegExp(s,o)),void 0===s._randexp?(i=new RandExp(s,o),s._randexp=i):(i=s._randexp)._setDefaults(s),i.gen()}static sugar(){RegExp.prototype.gen=function(){return RandExp.randexp(this)}}}},42054:s=>{var o=\"\\\\ud800-\\\\udfff\",i=\"[\"+o+\"]\",a=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",u=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",_=\"[^\"+o+\"]\",w=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",x=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",C=\"(?:\"+a+\"|\"+u+\")\"+\"?\",j=\"[\\\\ufe0e\\\\ufe0f]?\",L=j+C+(\"(?:\\\\u200d(?:\"+[_,w,x].join(\"|\")+\")\"+j+C+\")*\"),B=\"(?:\"+[_+a+\"?\",a,w,x,i].join(\"|\")+\")\",$=RegExp(u+\"(?=\"+u+\")|\"+B+L,\"g\");s.exports=function unicodeToArray(s){return s.match($)||[]}},42072:(s,o,i)=>{var a=i(34932),u=i(23007),_=i(56449),w=i(44394),x=i(61802),C=i(77797),j=i(13222);s.exports=function toPath(s){return _(s)?a(s,C):w(s)?[s]:u(x(j(s)))}},42156:s=>{\"use strict\";s.exports=function(){}},42220:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(58661),_=i(74284),w=i(36624),x=i(4993),C=i(2875);o.f=a&&!u?Object.defineProperties:function defineProperties(s,o){w(s);for(var i,a=x(o),u=C(o),j=u.length,L=0;j>L;)_.f(s,i=u[L++],a[i]);return s}},42426:(s,o,i)=>{var a=i(14248),u=i(15389),_=i(90916),w=i(56449),x=i(36800);s.exports=function some(s,o,i){var C=w(s)?a:_;return i&&x(s,o,i)&&(o=void 0),C(s,u(o,3))}},42824:(s,o,i)=>{var a=i(87805),u=i(93290),_=i(71961),w=i(23007),x=i(35529),C=i(72428),j=i(56449),L=i(83693),B=i(3656),$=i(1882),V=i(23805),U=i(11331),z=i(37167),Y=i(14974),Z=i(69884);s.exports=function baseMergeDeep(s,o,i,ee,ie,ae,ce){var le=Y(s,i),pe=Y(o,i),de=ce.get(pe);if(de)a(s,i,de);else{var fe=ae?ae(le,pe,i+\"\",s,o,ce):void 0,ye=void 0===fe;if(ye){var be=j(pe),_e=!be&&B(pe),Se=!be&&!_e&&z(pe);fe=pe,be||_e||Se?j(le)?fe=le:L(le)?fe=w(le):_e?(ye=!1,fe=u(pe,!0)):Se?(ye=!1,fe=_(pe,!0)):fe=[]:U(pe)||C(pe)?(fe=le,C(le)?fe=Z(le):V(le)&&!$(le)||(fe=x(pe))):ye=!1}ye&&(ce.set(pe,fe),ie(fe,pe,ee,ae,ce),ce.delete(pe)),a(s,i,fe)}}},43360:(s,o,i)=>{var a=i(93243);s.exports=function baseAssignValue(s,o,i){\"__proto__\"==o&&a?a(s,o,{configurable:!0,enumerable:!0,value:i,writable:!0}):s[o]=i}},43768:(s,o,i)=>{\"use strict\";var a=i(45981),u=i(85587);o.highlight=highlight,o.highlightAuto=function highlightAuto(s,o){var i,w,x,C,j=o||{},L=j.subset||a.listLanguages(),B=j.prefix,$=L.length,V=-1;null==B&&(B=_);if(\"string\"!=typeof s)throw u(\"Expected `string` for value, got `%s`\",s);w={relevance:0,language:null,value:[]},i={relevance:0,language:null,value:[]};for(;++V<$;)C=L[V],a.getLanguage(C)&&((x=highlight(C,s,o)).language=C,x.relevance>w.relevance&&(w=x),x.relevance>i.relevance&&(w=i,i=x));w.language&&(i.secondBest=w);return i},o.registerLanguage=function registerLanguage(s,o){a.registerLanguage(s,o)},o.listLanguages=function listLanguages(){return a.listLanguages()},o.registerAlias=function registerAlias(s,o){var i,u=s;o&&((u={})[s]=o);for(i in u)a.registerAliases(u[i],{languageName:i})},Emitter.prototype.addText=function text(s){var o,i,a=this.stack;if(\"\"===s)return;o=a[a.length-1],(i=o.children[o.children.length-1])&&\"text\"===i.type?i.value+=s:o.children.push({type:\"text\",value:s})},Emitter.prototype.addKeyword=function addKeyword(s,o){this.openNode(o),this.addText(s),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(s,o){var i=this.stack,a=i[i.length-1],u=s.rootNode.children,_=o?{type:\"element\",tagName:\"span\",properties:{className:[o]},children:u}:u;a.children=a.children.concat(_)},Emitter.prototype.openNode=function open(s){var o=this.stack,i=this.options.classPrefix+s,a=o[o.length-1],u={type:\"element\",tagName:\"span\",properties:{className:[i]},children:[]};a.children.push(u),o.push(u)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return\"\"};var _=\"hljs-\";function highlight(s,o,i){var w,x=a.configure({}),C=(i||{}).prefix;if(\"string\"!=typeof s)throw u(\"Expected `string` for name, got `%s`\",s);if(!a.getLanguage(s))throw u(\"Unknown language: `%s` is not registered\",s);if(\"string\"!=typeof o)throw u(\"Expected `string` for value, got `%s`\",o);if(null==C&&(C=_),a.configure({__emitter:Emitter,classPrefix:C}),w=a.highlight(o,{language:s,ignoreIllegals:!0}),a.configure(x||{}),w.errorRaised)throw w.errorRaised;return{relevance:w.relevance,language:w.language,value:w.emitter.rootNode.children}}function Emitter(s){this.options=s,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},43838:(s,o,i)=>{var a=i(21791),u=i(37241);s.exports=function baseAssignIn(s,o){return s&&a(o,u(o),s)}},44394:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isSymbol(s){return\"symbol\"==typeof s||u(s)&&\"[object Symbol]\"==a(s)}},44673:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(82159),_=i(46285),w=i(49724),x=i(93427),C=i(41505),j=Function,L=a([].concat),B=a([].join),$={};s.exports=C?j.bind:function bind(s){var o=u(this),i=o.prototype,a=x(arguments,1),C=function bound(){var i=L(a,x(arguments));return this instanceof C?function(s,o,i){if(!w($,o)){for(var a=[],u=0;u<o;u++)a[u]=\"a[\"+u+\"]\";$[o]=j(\"C,a\",\"return new C(\"+B(a,\",\")+\")\")}return $[o](s,i)}(o,i.length,i):o.apply(s,i)};return _(i)&&(C.prototype=i),C}},45083:(s,o,i)=>{var a=i(1882),u=i(87296),_=i(23805),w=i(47473),x=/^\\[object .+?Constructor\\]$/,C=Function.prototype,j=Object.prototype,L=C.toString,B=j.hasOwnProperty,$=RegExp(\"^\"+L.call(B).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");s.exports=function baseIsNative(s){return!(!_(s)||u(s))&&(a(s)?$:x).test(w(s))}},45412:(s,o,i)=>{\"use strict\";var a,u=i(65606);s.exports=Readable,Readable.ReadableState=ReadableState;i(37007).EventEmitter;var _=function EElistenerCount(s,o){return s.listeners(o).length},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:\"undefined\"!=typeof window?window:\"undefined\"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(79838);j=L&&L.debuglog?L.debuglog(\"stream\"):function debug(){};var B,$,V,U=i(80345),z=i(75896),Y=i(65291).getHighWaterMark,Z=i(86048).F,ee=Z.ERR_INVALID_ARG_TYPE,ie=Z.ERR_STREAM_PUSH_AFTER_EOF,ae=Z.ERR_METHOD_NOT_IMPLEMENTED,ce=Z.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;i(56698)(Readable,w);var le=z.errorOrDestroy,pe=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function ReadableState(s,o,u){a=a||i(25382),s=s||{},\"boolean\"!=typeof u&&(u=o instanceof a),this.objectMode=!!s.objectMode,u&&(this.objectMode=this.objectMode||!!s.readableObjectMode),this.highWaterMark=Y(this,s,\"readableHighWaterMark\",u),this.buffer=new U,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.destroyed=!1,this.defaultEncoding=s.defaultEncoding||\"utf8\",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,s.encoding&&(B||(B=i(83141).I),this.decoder=new B(s.encoding),this.encoding=s.encoding)}function Readable(s){if(a=a||i(25382),!(this instanceof Readable))return new Readable(s);var o=this instanceof a;this._readableState=new ReadableState(s,this,o),this.readable=!0,s&&(\"function\"==typeof s.read&&(this._read=s.read),\"function\"==typeof s.destroy&&(this._destroy=s.destroy)),w.call(this)}function readableAddChunk(s,o,i,a,u){j(\"readableAddChunk\",o);var _,w=s._readableState;if(null===o)w.reading=!1,function onEofChunk(s,o){if(j(\"onEofChunk\"),o.ended)return;if(o.decoder){var i=o.decoder.end();i&&i.length&&(o.buffer.push(i),o.length+=o.objectMode?1:i.length)}o.ended=!0,o.sync?emitReadable(s):(o.needReadable=!1,o.emittedReadable||(o.emittedReadable=!0,emitReadable_(s)))}(s,w);else if(u||(_=function chunkInvalid(s,o){var i;(function _isUint8Array(s){return x.isBuffer(s)||s instanceof C})(o)||\"string\"==typeof o||void 0===o||s.objectMode||(i=new ee(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],o));return i}(w,o)),_)le(s,_);else if(w.objectMode||o&&o.length>0)if(\"string\"==typeof o||w.objectMode||Object.getPrototypeOf(o)===x.prototype||(o=function _uint8ArrayToBuffer(s){return x.from(s)}(o)),a)w.endEmitted?le(s,new ce):addChunk(s,w,o,!0);else if(w.ended)le(s,new ie);else{if(w.destroyed)return!1;w.reading=!1,w.decoder&&!i?(o=w.decoder.write(o),w.objectMode||0!==o.length?addChunk(s,w,o,!1):maybeReadMore(s,w)):addChunk(s,w,o,!1)}else a||(w.reading=!1,maybeReadMore(s,w));return!w.ended&&(w.length<w.highWaterMark||0===w.length)}function addChunk(s,o,i,a){o.flowing&&0===o.length&&!o.sync?(o.awaitDrain=0,s.emit(\"data\",i)):(o.length+=o.objectMode?1:i.length,a?o.buffer.unshift(i):o.buffer.push(i),o.needReadable&&emitReadable(s)),maybeReadMore(s,o)}Object.defineProperty(Readable.prototype,\"destroyed\",{enumerable:!1,get:function get(){return void 0!==this._readableState&&this._readableState.destroyed},set:function set(s){this._readableState&&(this._readableState.destroyed=s)}}),Readable.prototype.destroy=z.destroy,Readable.prototype._undestroy=z.undestroy,Readable.prototype._destroy=function(s,o){o(s)},Readable.prototype.push=function(s,o){var i,a=this._readableState;return a.objectMode?i=!0:\"string\"==typeof s&&((o=o||a.defaultEncoding)!==a.encoding&&(s=x.from(s,o),o=\"\"),i=!0),readableAddChunk(this,s,o,!1,i)},Readable.prototype.unshift=function(s){return readableAddChunk(this,s,null,!0,!1)},Readable.prototype.isPaused=function(){return!1===this._readableState.flowing},Readable.prototype.setEncoding=function(s){B||(B=i(83141).I);var o=new B(s);this._readableState.decoder=o,this._readableState.encoding=this._readableState.decoder.encoding;for(var a=this._readableState.buffer.head,u=\"\";null!==a;)u+=o.write(a.data),a=a.next;return this._readableState.buffer.clear(),\"\"!==u&&this._readableState.buffer.push(u),this._readableState.length=u.length,this};var de=1073741824;function howMuchToRead(s,o){return s<=0||0===o.length&&o.ended?0:o.objectMode?1:s!=s?o.flowing&&o.length?o.buffer.head.data.length:o.length:(s>o.highWaterMark&&(o.highWaterMark=function computeNewHighWaterMark(s){return s>=de?s=de:(s--,s|=s>>>1,s|=s>>>2,s|=s>>>4,s|=s>>>8,s|=s>>>16,s++),s}(s)),s<=o.length?s:o.ended?o.length:(o.needReadable=!0,0))}function emitReadable(s){var o=s._readableState;j(\"emitReadable\",o.needReadable,o.emittedReadable),o.needReadable=!1,o.emittedReadable||(j(\"emitReadable\",o.flowing),o.emittedReadable=!0,u.nextTick(emitReadable_,s))}function emitReadable_(s){var o=s._readableState;j(\"emitReadable_\",o.destroyed,o.length,o.ended),o.destroyed||!o.length&&!o.ended||(s.emit(\"readable\"),o.emittedReadable=!1),o.needReadable=!o.flowing&&!o.ended&&o.length<=o.highWaterMark,flow(s)}function maybeReadMore(s,o){o.readingMore||(o.readingMore=!0,u.nextTick(maybeReadMore_,s,o))}function maybeReadMore_(s,o){for(;!o.reading&&!o.ended&&(o.length<o.highWaterMark||o.flowing&&0===o.length);){var i=o.length;if(j(\"maybeReadMore read 0\"),s.read(0),i===o.length)break}o.readingMore=!1}function updateReadableListening(s){var o=s._readableState;o.readableListening=s.listenerCount(\"readable\")>0,o.resumeScheduled&&!o.paused?o.flowing=!0:s.listenerCount(\"data\")>0&&s.resume()}function nReadingNextTick(s){j(\"readable nexttick read 0\"),s.read(0)}function resume_(s,o){j(\"resume\",o.reading),o.reading||s.read(0),o.resumeScheduled=!1,s.emit(\"resume\"),flow(s),o.flowing&&!o.reading&&s.read(0)}function flow(s){var o=s._readableState;for(j(\"flow\",o.flowing);o.flowing&&null!==s.read(););}function fromList(s,o){return 0===o.length?null:(o.objectMode?i=o.buffer.shift():!s||s>=o.length?(i=o.decoder?o.buffer.join(\"\"):1===o.buffer.length?o.buffer.first():o.buffer.concat(o.length),o.buffer.clear()):i=o.buffer.consume(s,o.decoder),i);var i}function endReadable(s){var o=s._readableState;j(\"endReadable\",o.endEmitted),o.endEmitted||(o.ended=!0,u.nextTick(endReadableNT,o,s))}function endReadableNT(s,o){if(j(\"endReadableNT\",s.endEmitted,s.length),!s.endEmitted&&0===s.length&&(s.endEmitted=!0,o.readable=!1,o.emit(\"end\"),s.autoDestroy)){var i=o._writableState;(!i||i.autoDestroy&&i.finished)&&o.destroy()}}function indexOf(s,o){for(var i=0,a=s.length;i<a;i++)if(s[i]===o)return i;return-1}Readable.prototype.read=function(s){j(\"read\",s),s=parseInt(s,10);var o=this._readableState,i=s;if(0!==s&&(o.emittedReadable=!1),0===s&&o.needReadable&&((0!==o.highWaterMark?o.length>=o.highWaterMark:o.length>0)||o.ended))return j(\"read: emitReadable\",o.length,o.ended),0===o.length&&o.ended?endReadable(this):emitReadable(this),null;if(0===(s=howMuchToRead(s,o))&&o.ended)return 0===o.length&&endReadable(this),null;var a,u=o.needReadable;return j(\"need readable\",u),(0===o.length||o.length-s<o.highWaterMark)&&j(\"length less than watermark\",u=!0),o.ended||o.reading?j(\"reading or ended\",u=!1):u&&(j(\"do read\"),o.reading=!0,o.sync=!0,0===o.length&&(o.needReadable=!0),this._read(o.highWaterMark),o.sync=!1,o.reading||(s=howMuchToRead(i,o))),null===(a=s>0?fromList(s,o):null)?(o.needReadable=o.length<=o.highWaterMark,s=0):(o.length-=s,o.awaitDrain=0),0===o.length&&(o.ended||(o.needReadable=!0),i!==s&&o.ended&&endReadable(this)),null!==a&&this.emit(\"data\",a),a},Readable.prototype._read=function(s){le(this,new ae(\"_read()\"))},Readable.prototype.pipe=function(s,o){var i=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=s;break;case 1:a.pipes=[a.pipes,s];break;default:a.pipes.push(s)}a.pipesCount+=1,j(\"pipe count=%d opts=%j\",a.pipesCount,o);var w=(!o||!1!==o.end)&&s!==u.stdout&&s!==u.stderr?onend:unpipe;function onunpipe(o,u){j(\"onunpipe\"),o===i&&u&&!1===u.hasUnpiped&&(u.hasUnpiped=!0,function cleanup(){j(\"cleanup\"),s.removeListener(\"close\",onclose),s.removeListener(\"finish\",onfinish),s.removeListener(\"drain\",x),s.removeListener(\"error\",onerror),s.removeListener(\"unpipe\",onunpipe),i.removeListener(\"end\",onend),i.removeListener(\"end\",unpipe),i.removeListener(\"data\",ondata),C=!0,!a.awaitDrain||s._writableState&&!s._writableState.needDrain||x()}())}function onend(){j(\"onend\"),s.end()}a.endEmitted?u.nextTick(w):i.once(\"end\",w),s.on(\"unpipe\",onunpipe);var x=function pipeOnDrain(s){return function pipeOnDrainFunctionResult(){var o=s._readableState;j(\"pipeOnDrain\",o.awaitDrain),o.awaitDrain&&o.awaitDrain--,0===o.awaitDrain&&_(s,\"data\")&&(o.flowing=!0,flow(s))}}(i);s.on(\"drain\",x);var C=!1;function ondata(o){j(\"ondata\");var u=s.write(o);j(\"dest.write\",u),!1===u&&((1===a.pipesCount&&a.pipes===s||a.pipesCount>1&&-1!==indexOf(a.pipes,s))&&!C&&(j(\"false write response, pause\",a.awaitDrain),a.awaitDrain++),i.pause())}function onerror(o){j(\"onerror\",o),unpipe(),s.removeListener(\"error\",onerror),0===_(s,\"error\")&&le(s,o)}function onclose(){s.removeListener(\"finish\",onfinish),unpipe()}function onfinish(){j(\"onfinish\"),s.removeListener(\"close\",onclose),unpipe()}function unpipe(){j(\"unpipe\"),i.unpipe(s)}return i.on(\"data\",ondata),function prependListener(s,o,i){if(\"function\"==typeof s.prependListener)return s.prependListener(o,i);s._events&&s._events[o]?Array.isArray(s._events[o])?s._events[o].unshift(i):s._events[o]=[i,s._events[o]]:s.on(o,i)}(s,\"error\",onerror),s.once(\"close\",onclose),s.once(\"finish\",onfinish),s.emit(\"pipe\",i),a.flowing||(j(\"pipe resume\"),i.resume()),s},Readable.prototype.unpipe=function(s){var o=this._readableState,i={hasUnpiped:!1};if(0===o.pipesCount)return this;if(1===o.pipesCount)return s&&s!==o.pipes||(s||(s=o.pipes),o.pipes=null,o.pipesCount=0,o.flowing=!1,s&&s.emit(\"unpipe\",this,i)),this;if(!s){var a=o.pipes,u=o.pipesCount;o.pipes=null,o.pipesCount=0,o.flowing=!1;for(var _=0;_<u;_++)a[_].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var w=indexOf(o.pipes,s);return-1===w||(o.pipes.splice(w,1),o.pipesCount-=1,1===o.pipesCount&&(o.pipes=o.pipes[0]),s.emit(\"unpipe\",this,i)),this},Readable.prototype.on=function(s,o){var i=w.prototype.on.call(this,s,o),a=this._readableState;return\"data\"===s?(a.readableListening=this.listenerCount(\"readable\")>0,!1!==a.flowing&&this.resume()):\"readable\"===s&&(a.endEmitted||a.readableListening||(a.readableListening=a.needReadable=!0,a.flowing=!1,a.emittedReadable=!1,j(\"on readable\",a.length,a.reading),a.length?emitReadable(this):a.reading||u.nextTick(nReadingNextTick,this))),i},Readable.prototype.addListener=Readable.prototype.on,Readable.prototype.removeListener=function(s,o){var i=w.prototype.removeListener.call(this,s,o);return\"readable\"===s&&u.nextTick(updateReadableListening,this),i},Readable.prototype.removeAllListeners=function(s){var o=w.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==s&&void 0!==s||u.nextTick(updateReadableListening,this),o},Readable.prototype.resume=function(){var s=this._readableState;return s.flowing||(j(\"resume\"),s.flowing=!s.readableListening,function resume(s,o){o.resumeScheduled||(o.resumeScheduled=!0,u.nextTick(resume_,s,o))}(this,s)),s.paused=!1,this},Readable.prototype.pause=function(){return j(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(j(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},Readable.prototype.wrap=function(s){var o=this,i=this._readableState,a=!1;for(var u in s.on(\"end\",(function(){if(j(\"wrapped end\"),i.decoder&&!i.ended){var s=i.decoder.end();s&&s.length&&o.push(s)}o.push(null)})),s.on(\"data\",(function(u){(j(\"wrapped data\"),i.decoder&&(u=i.decoder.write(u)),i.objectMode&&null==u)||(i.objectMode||u&&u.length)&&(o.push(u)||(a=!0,s.pause()))})),s)void 0===this[u]&&\"function\"==typeof s[u]&&(this[u]=function methodWrap(o){return function methodWrapReturnFunction(){return s[o].apply(s,arguments)}}(u));for(var _=0;_<pe.length;_++)s.on(pe[_],this.emit.bind(this,pe[_]));return this._read=function(o){j(\"wrapped _read\",o),a&&(a=!1,s.resume())},this},\"function\"==typeof Symbol&&(Readable.prototype[Symbol.asyncIterator]=function(){return void 0===$&&($=i(2955)),$(this)}),Object.defineProperty(Readable.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function get(){return this._readableState.highWaterMark}}),Object.defineProperty(Readable.prototype,\"readableBuffer\",{enumerable:!1,get:function get(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(Readable.prototype,\"readableFlowing\",{enumerable:!1,get:function get(){return this._readableState.flowing},set:function set(s){this._readableState&&(this._readableState.flowing=s)}}),Readable._fromList=fromList,Object.defineProperty(Readable.prototype,\"readableLength\",{enumerable:!1,get:function get(){return this._readableState.length}}),\"function\"==typeof Symbol&&(Readable.from=function(s,o){return void 0===V&&(V=i(55157)),V(Readable,s,o)})},45434:s=>{var o=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;s.exports=function hasUnicodeWord(s){return o.test(s)}},45539:(s,o,i)=>{var a=i(40882),u=i(50828),_=i(66645),w=RegExp(\"['’]\",\"g\");s.exports=function createCompounder(s){return function(o){return a(_(u(o).replace(w,\"\")),s,\"\")}}},45807:(s,o,i)=>{\"use strict\";var a=i(1907),u=a({}.toString),_=a(\"\".slice);s.exports=function(s){return _(u(s),8,-1)}},45891:(s,o,i)=>{var a=i(51873),u=i(72428),_=i(56449),w=a?a.isConcatSpreadable:void 0;s.exports=function isFlattenable(s){return _(s)||u(s)||!!(w&&s&&s[w])}},45951:function(s,o,i){\"use strict\";var check=function(s){return s&&s.Math===Math&&s};s.exports=check(\"object\"==typeof globalThis&&globalThis)||check(\"object\"==typeof window&&window)||check(\"object\"==typeof self&&self)||check(\"object\"==typeof i.g&&i.g)||check(\"object\"==typeof this&&this)||function(){return this}()||Function(\"return this\")()},45981:s=>{function deepFreeze(s){return s instanceof Map?s.clear=s.delete=s.set=function(){throw new Error(\"map is read-only\")}:s instanceof Set&&(s.add=s.clear=s.delete=function(){throw new Error(\"set is read-only\")}),Object.freeze(s),Object.getOwnPropertyNames(s).forEach((function(o){var i=s[o];\"object\"!=typeof i||Object.isFrozen(i)||deepFreeze(i)})),s}var o=deepFreeze,i=deepFreeze;o.default=i;class Response{constructor(s){void 0===s.data&&(s.data={}),this.data=s.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(s){return s.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\").replace(/'/g,\"&#x27;\")}function inherit(s,...o){const i=Object.create(null);for(const o in s)i[o]=s[o];return o.forEach((function(s){for(const o in s)i[o]=s[o]})),i}const emitsWrappingTags=s=>!!s.kind;class HTMLRenderer{constructor(s,o){this.buffer=\"\",this.classPrefix=o.classPrefix,s.walk(this)}addText(s){this.buffer+=escapeHTML(s)}openNode(s){if(!emitsWrappingTags(s))return;let o=s.kind;s.sublanguage||(o=`${this.classPrefix}${o}`),this.span(o)}closeNode(s){emitsWrappingTags(s)&&(this.buffer+=\"</span>\")}value(){return this.buffer}span(s){this.buffer+=`<span class=\"${s}\">`}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(s){this.top.children.push(s)}openNode(s){const o={kind:s,children:[]};this.add(o),this.stack.push(o)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(s){return this.constructor._walk(s,this.rootNode)}static _walk(s,o){return\"string\"==typeof o?s.addText(o):o.children&&(s.openNode(o),o.children.forEach((o=>this._walk(s,o))),s.closeNode(o)),s}static _collapse(s){\"string\"!=typeof s&&s.children&&(s.children.every((s=>\"string\"==typeof s))?s.children=[s.children.join(\"\")]:s.children.forEach((s=>{TokenTree._collapse(s)})))}}class TokenTreeEmitter extends TokenTree{constructor(s){super(),this.options=s}addKeyword(s,o){\"\"!==s&&(this.openNode(o),this.addText(s),this.closeNode())}addText(s){\"\"!==s&&this.add(s)}addSublanguage(s,o){const i=s.root;i.kind=o,i.sublanguage=!0,this.add(i)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(s){return s?\"string\"==typeof s?s:s.source:null}const a=/\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;const u=\"[a-zA-Z]\\\\w*\",_=\"[a-zA-Z_]\\\\w*\",w=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",x=\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",C=\"\\\\b(0b[01]+)\",j={begin:\"\\\\\\\\[\\\\s\\\\S]\",relevance:0},L={className:\"string\",begin:\"'\",end:\"'\",illegal:\"\\\\n\",contains:[j]},B={className:\"string\",begin:'\"',end:'\"',illegal:\"\\\\n\",contains:[j]},$={begin:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/},COMMENT=function(s,o,i={}){const a=inherit({className:\"comment\",begin:s,end:o,contains:[]},i);return a.contains.push($),a.contains.push({className:\"doctag\",begin:\"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):\",relevance:0}),a},V=COMMENT(\"//\",\"$\"),U=COMMENT(\"/\\\\*\",\"\\\\*/\"),z=COMMENT(\"#\",\"$\"),Y={className:\"number\",begin:w,relevance:0},Z={className:\"number\",begin:x,relevance:0},ee={className:\"number\",begin:C,relevance:0},ie={className:\"number\",begin:w+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",relevance:0},ae={begin:/(?=\\/[^/\\n]*\\/)/,contains:[{className:\"regexp\",begin:/\\//,end:/\\/[gimuy]*/,illegal:/\\n/,contains:[j,{begin:/\\[/,end:/\\]/,relevance:0,contains:[j]}]}]},ce={className:\"title\",begin:u,relevance:0},le={className:\"title\",begin:_,relevance:0},pe={begin:\"\\\\.\\\\s*\"+_,relevance:0};var de=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\\b\\B/,IDENT_RE:u,UNDERSCORE_IDENT_RE:_,NUMBER_RE:w,C_NUMBER_RE:x,BINARY_NUMBER_RE:C,RE_STARTERS_RE:\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",SHEBANG:(s={})=>{const o=/^#![ ]*\\//;return s.binary&&(s.begin=function concat(...s){return s.map((s=>source(s))).join(\"\")}(o,/.*\\b/,s.binary,/\\b.*/)),inherit({className:\"meta\",begin:o,end:/$/,relevance:0,\"on:begin\":(s,o)=>{0!==s.index&&o.ignoreMatch()}},s)},BACKSLASH_ESCAPE:j,APOS_STRING_MODE:L,QUOTE_STRING_MODE:B,PHRASAL_WORDS_MODE:$,COMMENT,C_LINE_COMMENT_MODE:V,C_BLOCK_COMMENT_MODE:U,HASH_COMMENT_MODE:z,NUMBER_MODE:Y,C_NUMBER_MODE:Z,BINARY_NUMBER_MODE:ee,CSS_NUMBER_MODE:ie,REGEXP_MODE:ae,TITLE_MODE:ce,UNDERSCORE_TITLE_MODE:le,METHOD_GUARD:pe,END_SAME_AS_BEGIN:function(s){return Object.assign(s,{\"on:begin\":(s,o)=>{o.data._beginMatch=s[1]},\"on:end\":(s,o)=>{o.data._beginMatch!==s[1]&&o.ignoreMatch()}})}});function skipIfhasPrecedingDot(s,o){\".\"===s.input[s.index-1]&&o.ignoreMatch()}function beginKeywords(s,o){o&&s.beginKeywords&&(s.begin=\"\\\\b(\"+s.beginKeywords.split(\" \").join(\"|\")+\")(?!\\\\.)(?=\\\\b|\\\\s)\",s.__beforeBegin=skipIfhasPrecedingDot,s.keywords=s.keywords||s.beginKeywords,delete s.beginKeywords,void 0===s.relevance&&(s.relevance=0))}function compileIllegal(s,o){Array.isArray(s.illegal)&&(s.illegal=function either(...s){return\"(\"+s.map((s=>source(s))).join(\"|\")+\")\"}(...s.illegal))}function compileMatch(s,o){if(s.match){if(s.begin||s.end)throw new Error(\"begin & end are not supported with match\");s.begin=s.match,delete s.match}}function compileRelevance(s,o){void 0===s.relevance&&(s.relevance=1)}const fe=[\"of\",\"and\",\"for\",\"in\",\"not\",\"or\",\"if\",\"then\",\"parent\",\"list\",\"value\"];function compileKeywords(s,o,i=\"keyword\"){const a={};return\"string\"==typeof s?compileList(i,s.split(\" \")):Array.isArray(s)?compileList(i,s):Object.keys(s).forEach((function(i){Object.assign(a,compileKeywords(s[i],o,i))})),a;function compileList(s,i){o&&(i=i.map((s=>s.toLowerCase()))),i.forEach((function(o){const i=o.split(\"|\");a[i[0]]=[s,scoreForKeyword(i[0],i[1])]}))}}function scoreForKeyword(s,o){return o?Number(o):function commonKeyword(s){return fe.includes(s.toLowerCase())}(s)?0:1}function compileLanguage(s,{plugins:o}){function langRe(o,i){return new RegExp(source(o),\"m\"+(s.case_insensitive?\"i\":\"\")+(i?\"g\":\"\"))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,s]),this.matchAt+=function countMatchGroups(s){return new RegExp(s.toString()+\"|\").exec(\"\").length-1}(s)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const s=this.regexes.map((s=>s[1]));this.matcherRe=langRe(function join(s,o=\"|\"){let i=0;return s.map((s=>{i+=1;const o=i;let u=source(s),_=\"\";for(;u.length>0;){const s=a.exec(u);if(!s){_+=u;break}_+=u.substring(0,s.index),u=u.substring(s.index+s[0].length),\"\\\\\"===s[0][0]&&s[1]?_+=\"\\\\\"+String(Number(s[1])+o):(_+=s[0],\"(\"===s[0]&&i++)}return _})).map((s=>`(${s})`)).join(o)}(s),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(s);if(!o)return null;const i=o.findIndex(((s,o)=>o>0&&void 0!==s)),a=this.matchIndexes[i];return o.splice(0,i),Object.assign(o,a)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const o=new MultiRegex;return this.rules.slice(s).forEach((([s,i])=>o.addRule(s,i))),o.compile(),this.multiRegexes[s]=o,o}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(s,o){this.rules.push([s,o]),\"begin\"===o.type&&this.count++}exec(s){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let i=o.exec(s);if(this.resumingScanAtSamePosition())if(i&&i.index===this.lastIndex);else{const o=this.getMatcher(0);o.lastIndex=this.lastIndex+1,i=o.exec(s)}return i&&(this.regexIndex+=i.position+1,this.regexIndex===this.count&&this.considerAll()),i}}if(s.compilerExtensions||(s.compilerExtensions=[]),s.contains&&s.contains.includes(\"self\"))throw new Error(\"ERR: contains `self` is not supported at the top-level of a language.  See documentation.\");return s.classNameAliases=inherit(s.classNameAliases||{}),function compileMode(o,i){const a=o;if(o.isCompiled)return a;[compileMatch].forEach((s=>s(o,i))),s.compilerExtensions.forEach((s=>s(o,i))),o.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((s=>s(o,i))),o.isCompiled=!0;let u=null;if(\"object\"==typeof o.keywords&&(u=o.keywords.$pattern,delete o.keywords.$pattern),o.keywords&&(o.keywords=compileKeywords(o.keywords,s.case_insensitive)),o.lexemes&&u)throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");return u=u||o.lexemes||/\\w+/,a.keywordPatternRe=langRe(u,!0),i&&(o.begin||(o.begin=/\\B|\\b/),a.beginRe=langRe(o.begin),o.endSameAsBegin&&(o.end=o.begin),o.end||o.endsWithParent||(o.end=/\\B|\\b/),o.end&&(a.endRe=langRe(o.end)),a.terminatorEnd=source(o.end)||\"\",o.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(o.end?\"|\":\"\")+i.terminatorEnd)),o.illegal&&(a.illegalRe=langRe(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((function(s){return function expandOrCloneMode(s){s.variants&&!s.cachedVariants&&(s.cachedVariants=s.variants.map((function(o){return inherit(s,{variants:null},o)})));if(s.cachedVariants)return s.cachedVariants;if(dependencyOnParent(s))return inherit(s,{starts:s.starts?inherit(s.starts):null});if(Object.isFrozen(s))return inherit(s);return s}(\"self\"===s?o:s)}))),o.contains.forEach((function(s){compileMode(s,a)})),o.starts&&compileMode(o.starts,i),a.matcher=function buildModeRegex(s){const o=new ResumableMultiRegex;return s.contains.forEach((s=>o.addRule(s.begin,{rule:s,type:\"begin\"}))),s.terminatorEnd&&o.addRule(s.terminatorEnd,{type:\"end\"}),s.illegal&&o.addRule(s.illegal,{type:\"illegal\"}),o}(a),a}(s)}function dependencyOnParent(s){return!!s&&(s.endsWithParent||dependencyOnParent(s.starts))}function BuildVuePlugin(s){const o={props:[\"language\",\"code\",\"autodetect\"],data:function(){return{detectedLanguage:\"\",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?\"\":\"hljs \"+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!s.getLanguage(this.language))return console.warn(`The language \"${this.language}\" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let o={};return this.autoDetect?(o=s.highlightAuto(this.code),this.detectedLanguage=o.language):(o=s.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),o.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(s){return Boolean(s||\"\"===s)}(this.autodetect)},ignoreIllegals:()=>!0},render(s){return s(\"pre\",{},[s(\"code\",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:o,VuePlugin:{install(s){s.component(\"highlightjs\",o)}}}}const ye={\"after:highlightElement\":({el:s,result:o,text:i})=>{const a=nodeStream(s);if(!a.length)return;const u=document.createElement(\"div\");u.innerHTML=o.value,o.value=function mergeStreams(s,o,i){let a=0,u=\"\";const _=[];function selectStream(){return s.length&&o.length?s[0].offset!==o[0].offset?s[0].offset<o[0].offset?s:o:\"start\"===o[0].event?s:o:s.length?s:o}function open(s){function attributeString(s){return\" \"+s.nodeName+'=\"'+escapeHTML(s.value)+'\"'}u+=\"<\"+tag(s)+[].map.call(s.attributes,attributeString).join(\"\")+\">\"}function close(s){u+=\"</\"+tag(s)+\">\"}function render(s){(\"start\"===s.event?open:close)(s.node)}for(;s.length||o.length;){let o=selectStream();if(u+=escapeHTML(i.substring(a,o[0].offset)),a=o[0].offset,o===s){_.reverse().forEach(close);do{render(o.splice(0,1)[0]),o=selectStream()}while(o===s&&o.length&&o[0].offset===a);_.reverse().forEach(open)}else\"start\"===o[0].event?_.push(o[0].node):_.pop(),render(o.splice(0,1)[0])}return u+escapeHTML(i.substr(a))}(a,nodeStream(u),i)}};function tag(s){return s.nodeName.toLowerCase()}function nodeStream(s){const o=[];return function _nodeStream(s,i){for(let a=s.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(o.push({event:\"start\",offset:i,node:a}),i=_nodeStream(a,i),tag(a).match(/br|hr|img|input/)||o.push({event:\"stop\",offset:i,node:a}));return i}(s,0),o}const be={},error=s=>{console.error(s)},warn=(s,...o)=>{console.log(`WARN: ${s}`,...o)},deprecated=(s,o)=>{be[`${s}/${o}`]||(console.log(`Deprecated as of ${s}. ${o}`),be[`${s}/${o}`]=!0)},_e=escapeHTML,Se=inherit,we=Symbol(\"nomatch\");var xe=function(s){const i=Object.create(null),a=Object.create(null),u=[];let _=!0;const w=/(^(<[^>]+>|\\t|)+|\\n)/gm,x=\"Could not find the language '{}', did you forget to load/include a language module?\",C={disableAutodetect:!0,name:\"Plain text\",contains:[]};let j={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\\blang(?:uage)?-([\\w-]+)\\b/i,classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(s){return j.noHighlightRe.test(s)}function highlight(s,o,i,a){let u=\"\",_=\"\";\"object\"==typeof o?(u=s,i=o.ignoreIllegals,_=o.language,a=void 0):(deprecated(\"10.7.0\",\"highlight(lang, code, ...args) has been deprecated.\"),deprecated(\"10.7.0\",\"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\"),_=s,u=o);const w={code:u,language:_};fire(\"before:highlight\",w);const x=w.result?w.result:_highlight(w.language,w.code,i,a);return x.code=w.code,fire(\"after:highlight\",x),x}function _highlight(s,o,a,w){function keywordData(s,o){const i=L.case_insensitive?o[0].toLowerCase():o[0];return Object.prototype.hasOwnProperty.call(s.keywords,i)&&s.keywords[i]}function processBuffer(){null!=V.subLanguage?function processSubLanguage(){if(\"\"===Y)return;let s=null;if(\"string\"==typeof V.subLanguage){if(!i[V.subLanguage])return void z.addText(Y);s=_highlight(V.subLanguage,Y,!0,U[V.subLanguage]),U[V.subLanguage]=s.top}else s=highlightAuto(Y,V.subLanguage.length?V.subLanguage:null);V.relevance>0&&(Z+=s.relevance),z.addSublanguage(s.emitter,s.language)}():function processKeywords(){if(!V.keywords)return void z.addText(Y);let s=0;V.keywordPatternRe.lastIndex=0;let o=V.keywordPatternRe.exec(Y),i=\"\";for(;o;){i+=Y.substring(s,o.index);const a=keywordData(V,o);if(a){const[s,u]=a;if(z.addText(i),i=\"\",Z+=u,s.startsWith(\"_\"))i+=o[0];else{const i=L.classNameAliases[s]||s;z.addKeyword(o[0],i)}}else i+=o[0];s=V.keywordPatternRe.lastIndex,o=V.keywordPatternRe.exec(Y)}i+=Y.substr(s),z.addText(i)}(),Y=\"\"}function startNewMode(s){return s.className&&z.openNode(L.classNameAliases[s.className]||s.className),V=Object.create(s,{parent:{value:V}}),V}function endOfMode(s,o,i){let a=function startsWith(s,o){const i=s&&s.exec(o);return i&&0===i.index}(s.endRe,i);if(a){if(s[\"on:end\"]){const i=new Response(s);s[\"on:end\"](o,i),i.isMatchIgnored&&(a=!1)}if(a){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return endOfMode(s.parent,o,i)}function doIgnore(s){return 0===V.matcher.regexIndex?(Y+=s[0],1):(ae=!0,0)}function doBeginMatch(s){const o=s[0],i=s.rule,a=new Response(i),u=[i.__beforeBegin,i[\"on:begin\"]];for(const i of u)if(i&&(i(s,a),a.isMatchIgnored))return doIgnore(o);return i&&i.endSameAsBegin&&(i.endRe=function escape(s){return new RegExp(s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"),\"m\")}(o)),i.skip?Y+=o:(i.excludeBegin&&(Y+=o),processBuffer(),i.returnBegin||i.excludeBegin||(Y=o)),startNewMode(i),i.returnBegin?0:o.length}function doEndMatch(s){const i=s[0],a=o.substr(s.index),u=endOfMode(V,s,a);if(!u)return we;const _=V;_.skip?Y+=i:(_.returnEnd||_.excludeEnd||(Y+=i),processBuffer(),_.excludeEnd&&(Y=i));do{V.className&&z.closeNode(),V.skip||V.subLanguage||(Z+=V.relevance),V=V.parent}while(V!==u.parent);return u.starts&&(u.endSameAsBegin&&(u.starts.endRe=u.endRe),startNewMode(u.starts)),_.returnEnd?0:i.length}let C={};function processLexeme(i,u){const w=u&&u[0];if(Y+=i,null==w)return processBuffer(),0;if(\"begin\"===C.type&&\"end\"===u.type&&C.index===u.index&&\"\"===w){if(Y+=o.slice(u.index,u.index+1),!_){const o=new Error(\"0 width match regex\");throw o.languageName=s,o.badRule=C.rule,o}return 1}if(C=u,\"begin\"===u.type)return doBeginMatch(u);if(\"illegal\"===u.type&&!a){const s=new Error('Illegal lexeme \"'+w+'\" for mode \"'+(V.className||\"<unnamed>\")+'\"');throw s.mode=V,s}if(\"end\"===u.type){const s=doEndMatch(u);if(s!==we)return s}if(\"illegal\"===u.type&&\"\"===w)return 1;if(ie>1e5&&ie>3*u.index){throw new Error(\"potential infinite loop, way more iterations than matches\")}return Y+=w,w.length}const L=getLanguage(s);if(!L)throw error(x.replace(\"{}\",s)),new Error('Unknown language: \"'+s+'\"');const B=compileLanguage(L,{plugins:u});let $=\"\",V=w||B;const U={},z=new j.__emitter(j);!function processContinuations(){const s=[];for(let o=V;o!==L;o=o.parent)o.className&&s.unshift(o.className);s.forEach((s=>z.openNode(s)))}();let Y=\"\",Z=0,ee=0,ie=0,ae=!1;try{for(V.matcher.considerAll();;){ie++,ae?ae=!1:V.matcher.considerAll(),V.matcher.lastIndex=ee;const s=V.matcher.exec(o);if(!s)break;const i=processLexeme(o.substring(ee,s.index),s);ee=s.index+i}return processLexeme(o.substr(ee)),z.closeAllNodes(),z.finalize(),$=z.toHTML(),{relevance:Math.floor(Z),value:$,language:s,illegal:!1,emitter:z,top:V}}catch(i){if(i.message&&i.message.includes(\"Illegal\"))return{illegal:!0,illegalBy:{msg:i.message,context:o.slice(ee-100,ee+100),mode:i.mode},sofar:$,relevance:0,value:_e(o),emitter:z};if(_)return{illegal:!1,relevance:0,value:_e(o),emitter:z,language:s,top:V,errorRaised:i};throw i}}function highlightAuto(s,o){o=o||j.languages||Object.keys(i);const a=function justTextHighlightResult(s){const o={relevance:0,emitter:new j.__emitter(j),value:_e(s),illegal:!1,top:C};return o.emitter.addText(s),o}(s),u=o.filter(getLanguage).filter(autoDetection).map((o=>_highlight(o,s,!1)));u.unshift(a);const _=u.sort(((s,o)=>{if(s.relevance!==o.relevance)return o.relevance-s.relevance;if(s.language&&o.language){if(getLanguage(s.language).supersetOf===o.language)return 1;if(getLanguage(o.language).supersetOf===s.language)return-1}return 0})),[w,x]=_,L=w;return L.second_best=x,L}const L={\"before:highlightElement\":({el:s})=>{j.useBR&&(s.innerHTML=s.innerHTML.replace(/\\n/g,\"\").replace(/<br[ /]*>/g,\"\\n\"))},\"after:highlightElement\":({result:s})=>{j.useBR&&(s.value=s.value.replace(/\\n/g,\"<br>\"))}},B=/^(<[^>]+>|\\t)+/gm,$={\"after:highlightElement\":({result:s})=>{j.tabReplace&&(s.value=s.value.replace(B,(s=>s.replace(/\\t/g,j.tabReplace))))}};function highlightElement(s){let o=null;const i=function blockLanguage(s){let o=s.className+\" \";o+=s.parentNode?s.parentNode.className:\"\";const i=j.languageDetectRe.exec(o);if(i){const o=getLanguage(i[1]);return o||(warn(x.replace(\"{}\",i[1])),warn(\"Falling back to no-highlight mode for this block.\",s)),o?i[1]:\"no-highlight\"}return o.split(/\\s+/).find((s=>shouldNotHighlight(s)||getLanguage(s)))}(s);if(shouldNotHighlight(i))return;fire(\"before:highlightElement\",{el:s,language:i}),o=s;const u=o.textContent,_=i?highlight(u,{language:i,ignoreIllegals:!0}):highlightAuto(u);fire(\"after:highlightElement\",{el:s,result:_,text:u}),s.innerHTML=_.value,function updateClassName(s,o,i){const u=o?a[o]:i;s.classList.add(\"hljs\"),u&&s.classList.add(u)}(s,i,_.language),s.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(s.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated(\"10.6.0\",\"initHighlighting() is deprecated.  Use highlightAll() instead.\");document.querySelectorAll(\"pre code\").forEach(highlightElement)};let V=!1;function highlightAll(){if(\"loading\"===document.readyState)return void(V=!0);document.querySelectorAll(\"pre code\").forEach(highlightElement)}function getLanguage(s){return s=(s||\"\").toLowerCase(),i[s]||i[a[s]]}function registerAliases(s,{languageName:o}){\"string\"==typeof s&&(s=[s]),s.forEach((s=>{a[s.toLowerCase()]=o}))}function autoDetection(s){const o=getLanguage(s);return o&&!o.disableAutodetect}function fire(s,o){const i=s;u.forEach((function(s){s[i]&&s[i](o)}))}\"undefined\"!=typeof window&&window.addEventListener&&window.addEventListener(\"DOMContentLoaded\",(function boot(){V&&highlightAll()}),!1),Object.assign(s,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(s){return deprecated(\"10.2.0\",\"fixMarkup will be removed entirely in v11.0\"),deprecated(\"10.2.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2534\"),function fixMarkup(s){return j.tabReplace||j.useBR?s.replace(w,(s=>\"\\n\"===s?j.useBR?\"<br>\":s:j.tabReplace?s.replace(/\\t/g,j.tabReplace):s)):s}(s)},highlightElement,highlightBlock:function deprecateHighlightBlock(s){return deprecated(\"10.7.0\",\"highlightBlock will be removed entirely in v12.0\"),deprecated(\"10.7.0\",\"Please use highlightElement now.\"),highlightElement(s)},configure:function configure(s){s.useBR&&(deprecated(\"10.3.0\",\"'useBR' will be removed entirely in v11.0\"),deprecated(\"10.3.0\",\"Please see https://github.com/highlightjs/highlight.js/issues/2559\")),j=Se(j,s)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated(\"10.6.0\",\"initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.\"),V=!0},registerLanguage:function registerLanguage(o,a){let u=null;try{u=a(s)}catch(s){if(error(\"Language definition for '{}' could not be registered.\".replace(\"{}\",o)),!_)throw s;error(s),u=C}u.name||(u.name=o),i[o]=u,u.rawDefinition=a.bind(null,s),u.aliases&&registerAliases(u.aliases,{languageName:o})},unregisterLanguage:function unregisterLanguage(s){delete i[s];for(const o of Object.keys(a))a[o]===s&&delete a[o]},listLanguages:function listLanguages(){return Object.keys(i)},getLanguage,registerAliases,requireLanguage:function requireLanguage(s){deprecated(\"10.4.0\",\"requireLanguage will be removed entirely in v11.\"),deprecated(\"10.4.0\",\"Please see https://github.com/highlightjs/highlight.js/pull/2844\");const o=getLanguage(s);if(o)return o;throw new Error(\"The '{}' language is required, but not loaded.\".replace(\"{}\",s))},autoDetection,inherit:Se,addPlugin:function addPlugin(s){!function upgradePluginAPI(s){s[\"before:highlightBlock\"]&&!s[\"before:highlightElement\"]&&(s[\"before:highlightElement\"]=o=>{s[\"before:highlightBlock\"](Object.assign({block:o.el},o))}),s[\"after:highlightBlock\"]&&!s[\"after:highlightElement\"]&&(s[\"after:highlightElement\"]=o=>{s[\"after:highlightBlock\"](Object.assign({block:o.el},o))})}(s),u.push(s)},vuePlugin:BuildVuePlugin(s).VuePlugin}),s.debugMode=function(){_=!1},s.safeMode=function(){_=!0},s.versionString=\"10.7.3\";for(const s in de)\"object\"==typeof de[s]&&o(de[s]);return Object.assign(s,de),s.addPlugin(L),s.addPlugin(ye),s.addPlugin($),s}({});s.exports=xe},46028:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(46285),_=i(25594),w=i(29367),x=i(60581),C=i(76264),j=TypeError,L=C(\"toPrimitive\");s.exports=function(s,o){if(!u(s)||_(s))return s;var i,C=w(s,L);if(C){if(void 0===o&&(o=\"default\"),i=a(C,s,o),!u(i)||_(i))return i;throw new j(\"Can't convert object to primitive value\")}return void 0===o&&(o=\"number\"),x(s,o)}},46076:(s,o,i)=>{\"use strict\";i(91599);var a=i(68623);s.exports=a},46285:(s,o,i)=>{\"use strict\";var a=i(62250);s.exports=function(s){return\"object\"==typeof s?null!==s:a(s)}},46942:(s,o)=>{var i;!function(){\"use strict\";var a={}.hasOwnProperty;function classNames(){for(var s=\"\",o=0;o<arguments.length;o++){var i=arguments[o];i&&(s=appendClass(s,parseValue(i)))}return s}function parseValue(s){if(\"string\"==typeof s||\"number\"==typeof s)return s;if(\"object\"!=typeof s)return\"\";if(Array.isArray(s))return classNames.apply(null,s);if(s.toString!==Object.prototype.toString&&!s.toString.toString().includes(\"[native code]\"))return s.toString();var o=\"\";for(var i in s)a.call(s,i)&&s[i]&&(o=appendClass(o,i));return o}function appendClass(s,o){return o?s?s+\" \"+o:s+o:s}s.exports?(classNames.default=classNames,s.exports=classNames):void 0===(i=function(){return classNames}.apply(o,[]))||(s.exports=i)}()},47181:(s,o,i)=>{\"use strict\";var a=i(95116).IteratorPrototype,u=i(58075),_=i(75817),w=i(14840),x=i(93742),returnThis=function(){return this};s.exports=function(s,o,i,C){var j=o+\" Iterator\";return s.prototype=u(a,{next:_(+!C,i)}),w(s,j,!1,!0),x[j]=returnThis,s}},47237:s=>{s.exports=function baseProperty(s){return function(o){return null==o?void 0:o[s]}}},47248:(s,o,i)=>{var a=i(16547),u=i(51234);s.exports=function zipObject(s,o){return u(s||[],o||[],a)}},47422:(s,o,i)=>{var a=i(31769),u=i(77797);s.exports=function baseGet(s,o){for(var i=0,_=(o=a(o,s)).length;null!=s&&i<_;)s=s[u(o[i++])];return i&&i==_?s:void 0}},47473:s=>{var o=Function.prototype.toString;s.exports=function toSource(s){if(null!=s){try{return o.call(s)}catch(s){}try{return s+\"\"}catch(s){}}return\"\"}},47886:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function isWeakMap(s){return u(s)&&\"[object WeakMap]\"==a(s)}},47934:(s,o,i)=>{s.exports={ary:i(64626),assign:i(74733),clone:i(32629),curry:i(49747),forEach:i(83729),isArray:i(56449),isError:i(23546),isFunction:i(1882),isWeakMap:i(47886),iteratee:i(33855),keys:i(88984),rearg:i(84195),toInteger:i(61489),toPath:i(42072)}},48152:(s,o,i)=>{var a=i(28303),u=a&&new a;s.exports=u},48287:(s,o,i)=>{\"use strict\";const a=i(67526),u=i(251),_=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;o.Buffer=Buffer,o.SlowBuffer=function SlowBuffer(s){+s!=s&&(s=0);return Buffer.alloc(+s)},o.INSPECT_MAX_BYTES=50;const w=2147483647;function createBuffer(s){if(s>w)throw new RangeError('The value \"'+s+'\" is invalid for option \"size\"');const o=new Uint8Array(s);return Object.setPrototypeOf(o,Buffer.prototype),o}function Buffer(s,o,i){if(\"number\"==typeof s){if(\"string\"==typeof o)throw new TypeError('The \"string\" argument must be of type string. Received type number');return allocUnsafe(s)}return from(s,o,i)}function from(s,o,i){if(\"string\"==typeof s)return function fromString(s,o){\"string\"==typeof o&&\"\"!==o||(o=\"utf8\");if(!Buffer.isEncoding(o))throw new TypeError(\"Unknown encoding: \"+o);const i=0|byteLength(s,o);let a=createBuffer(i);const u=a.write(s,o);u!==i&&(a=a.slice(0,u));return a}(s,o);if(ArrayBuffer.isView(s))return function fromArrayView(s){if(isInstance(s,Uint8Array)){const o=new Uint8Array(s);return fromArrayBuffer(o.buffer,o.byteOffset,o.byteLength)}return fromArrayLike(s)}(s);if(null==s)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof s);if(isInstance(s,ArrayBuffer)||s&&isInstance(s.buffer,ArrayBuffer))return fromArrayBuffer(s,o,i);if(\"undefined\"!=typeof SharedArrayBuffer&&(isInstance(s,SharedArrayBuffer)||s&&isInstance(s.buffer,SharedArrayBuffer)))return fromArrayBuffer(s,o,i);if(\"number\"==typeof s)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const a=s.valueOf&&s.valueOf();if(null!=a&&a!==s)return Buffer.from(a,o,i);const u=function fromObject(s){if(Buffer.isBuffer(s)){const o=0|checked(s.length),i=createBuffer(o);return 0===i.length||s.copy(i,0,0,o),i}if(void 0!==s.length)return\"number\"!=typeof s.length||numberIsNaN(s.length)?createBuffer(0):fromArrayLike(s);if(\"Buffer\"===s.type&&Array.isArray(s.data))return fromArrayLike(s.data)}(s);if(u)return u;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof s[Symbol.toPrimitive])return Buffer.from(s[Symbol.toPrimitive](\"string\"),o,i);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof s)}function assertSize(s){if(\"number\"!=typeof s)throw new TypeError('\"size\" argument must be of type number');if(s<0)throw new RangeError('The value \"'+s+'\" is invalid for option \"size\"')}function allocUnsafe(s){return assertSize(s),createBuffer(s<0?0:0|checked(s))}function fromArrayLike(s){const o=s.length<0?0:0|checked(s.length),i=createBuffer(o);for(let a=0;a<o;a+=1)i[a]=255&s[a];return i}function fromArrayBuffer(s,o,i){if(o<0||s.byteLength<o)throw new RangeError('\"offset\" is outside of buffer bounds');if(s.byteLength<o+(i||0))throw new RangeError('\"length\" is outside of buffer bounds');let a;return a=void 0===o&&void 0===i?new Uint8Array(s):void 0===i?new Uint8Array(s,o):new Uint8Array(s,o,i),Object.setPrototypeOf(a,Buffer.prototype),a}function checked(s){if(s>=w)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+w.toString(16)+\" bytes\");return 0|s}function byteLength(s,o){if(Buffer.isBuffer(s))return s.length;if(ArrayBuffer.isView(s)||isInstance(s,ArrayBuffer))return s.byteLength;if(\"string\"!=typeof s)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof s);const i=s.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===i)return 0;let u=!1;for(;;)switch(o){case\"ascii\":case\"latin1\":case\"binary\":return i;case\"utf8\":case\"utf-8\":return utf8ToBytes(s).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*i;case\"hex\":return i>>>1;case\"base64\":return base64ToBytes(s).length;default:if(u)return a?-1:utf8ToBytes(s).length;o=(\"\"+o).toLowerCase(),u=!0}}function slowToString(s,o,i){let a=!1;if((void 0===o||o<0)&&(o=0),o>this.length)return\"\";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return\"\";if((i>>>=0)<=(o>>>=0))return\"\";for(s||(s=\"utf8\");;)switch(s){case\"hex\":return hexSlice(this,o,i);case\"utf8\":case\"utf-8\":return utf8Slice(this,o,i);case\"ascii\":return asciiSlice(this,o,i);case\"latin1\":case\"binary\":return latin1Slice(this,o,i);case\"base64\":return base64Slice(this,o,i);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,o,i);default:if(a)throw new TypeError(\"Unknown encoding: \"+s);s=(s+\"\").toLowerCase(),a=!0}}function swap(s,o,i){const a=s[o];s[o]=s[i],s[i]=a}function bidirectionalIndexOf(s,o,i,a,u){if(0===s.length)return-1;if(\"string\"==typeof i?(a=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),numberIsNaN(i=+i)&&(i=u?0:s.length-1),i<0&&(i=s.length+i),i>=s.length){if(u)return-1;i=s.length-1}else if(i<0){if(!u)return-1;i=0}if(\"string\"==typeof o&&(o=Buffer.from(o,a)),Buffer.isBuffer(o))return 0===o.length?-1:arrayIndexOf(s,o,i,a,u);if(\"number\"==typeof o)return o&=255,\"function\"==typeof Uint8Array.prototype.indexOf?u?Uint8Array.prototype.indexOf.call(s,o,i):Uint8Array.prototype.lastIndexOf.call(s,o,i):arrayIndexOf(s,[o],i,a,u);throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(s,o,i,a,u){let _,w=1,x=s.length,C=o.length;if(void 0!==a&&(\"ucs2\"===(a=String(a).toLowerCase())||\"ucs-2\"===a||\"utf16le\"===a||\"utf-16le\"===a)){if(s.length<2||o.length<2)return-1;w=2,x/=2,C/=2,i/=2}function read(s,o){return 1===w?s[o]:s.readUInt16BE(o*w)}if(u){let a=-1;for(_=i;_<x;_++)if(read(s,_)===read(o,-1===a?0:_-a)){if(-1===a&&(a=_),_-a+1===C)return a*w}else-1!==a&&(_-=_-a),a=-1}else for(i+C>x&&(i=x-C),_=i;_>=0;_--){let i=!0;for(let a=0;a<C;a++)if(read(s,_+a)!==read(o,a)){i=!1;break}if(i)return _}return-1}function hexWrite(s,o,i,a){i=Number(i)||0;const u=s.length-i;a?(a=Number(a))>u&&(a=u):a=u;const _=o.length;let w;for(a>_/2&&(a=_/2),w=0;w<a;++w){const a=parseInt(o.substr(2*w,2),16);if(numberIsNaN(a))return w;s[i+w]=a}return w}function utf8Write(s,o,i,a){return blitBuffer(utf8ToBytes(o,s.length-i),s,i,a)}function asciiWrite(s,o,i,a){return blitBuffer(function asciiToBytes(s){const o=[];for(let i=0;i<s.length;++i)o.push(255&s.charCodeAt(i));return o}(o),s,i,a)}function base64Write(s,o,i,a){return blitBuffer(base64ToBytes(o),s,i,a)}function ucs2Write(s,o,i,a){return blitBuffer(function utf16leToBytes(s,o){let i,a,u;const _=[];for(let w=0;w<s.length&&!((o-=2)<0);++w)i=s.charCodeAt(w),a=i>>8,u=i%256,_.push(u),_.push(a);return _}(o,s.length-i),s,i,a)}function base64Slice(s,o,i){return 0===o&&i===s.length?a.fromByteArray(s):a.fromByteArray(s.slice(o,i))}function utf8Slice(s,o,i){i=Math.min(s.length,i);const a=[];let u=o;for(;u<i;){const o=s[u];let _=null,w=o>239?4:o>223?3:o>191?2:1;if(u+w<=i){let i,a,x,C;switch(w){case 1:o<128&&(_=o);break;case 2:i=s[u+1],128==(192&i)&&(C=(31&o)<<6|63&i,C>127&&(_=C));break;case 3:i=s[u+1],a=s[u+2],128==(192&i)&&128==(192&a)&&(C=(15&o)<<12|(63&i)<<6|63&a,C>2047&&(C<55296||C>57343)&&(_=C));break;case 4:i=s[u+1],a=s[u+2],x=s[u+3],128==(192&i)&&128==(192&a)&&128==(192&x)&&(C=(15&o)<<18|(63&i)<<12|(63&a)<<6|63&x,C>65535&&C<1114112&&(_=C))}}null===_?(_=65533,w=1):_>65535&&(_-=65536,a.push(_>>>10&1023|55296),_=56320|1023&_),a.push(_),u+=w}return function decodeCodePointsArray(s){const o=s.length;if(o<=x)return String.fromCharCode.apply(String,s);let i=\"\",a=0;for(;a<o;)i+=String.fromCharCode.apply(String,s.slice(a,a+=x));return i}(a)}o.kMaxLength=w,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{const s=new Uint8Array(1),o={foo:function(){return 42}};return Object.setPrototypeOf(o,Uint8Array.prototype),Object.setPrototypeOf(s,o),42===s.foo()}catch(s){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(s,o,i){return from(s,o,i)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(s,o,i){return function alloc(s,o,i){return assertSize(s),s<=0?createBuffer(s):void 0!==o?\"string\"==typeof i?createBuffer(s).fill(o,i):createBuffer(s).fill(o):createBuffer(s)}(s,o,i)},Buffer.allocUnsafe=function(s){return allocUnsafe(s)},Buffer.allocUnsafeSlow=function(s){return allocUnsafe(s)},Buffer.isBuffer=function isBuffer(s){return null!=s&&!0===s._isBuffer&&s!==Buffer.prototype},Buffer.compare=function compare(s,o){if(isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),isInstance(o,Uint8Array)&&(o=Buffer.from(o,o.offset,o.byteLength)),!Buffer.isBuffer(s)||!Buffer.isBuffer(o))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(s===o)return 0;let i=s.length,a=o.length;for(let u=0,_=Math.min(i,a);u<_;++u)if(s[u]!==o[u]){i=s[u],a=o[u];break}return i<a?-1:a<i?1:0},Buffer.isEncoding=function isEncoding(s){switch(String(s).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},Buffer.concat=function concat(s,o){if(!Array.isArray(s))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===s.length)return Buffer.alloc(0);let i;if(void 0===o)for(o=0,i=0;i<s.length;++i)o+=s[i].length;const a=Buffer.allocUnsafe(o);let u=0;for(i=0;i<s.length;++i){let o=s[i];if(isInstance(o,Uint8Array))u+o.length>a.length?(Buffer.isBuffer(o)||(o=Buffer.from(o)),o.copy(a,u)):Uint8Array.prototype.set.call(a,o,u);else{if(!Buffer.isBuffer(o))throw new TypeError('\"list\" argument must be an Array of Buffers');o.copy(a,u)}u+=o.length}return a},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const s=this.length;if(s%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let o=0;o<s;o+=2)swap(this,o,o+1);return this},Buffer.prototype.swap32=function swap32(){const s=this.length;if(s%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let o=0;o<s;o+=4)swap(this,o,o+3),swap(this,o+1,o+2);return this},Buffer.prototype.swap64=function swap64(){const s=this.length;if(s%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let o=0;o<s;o+=8)swap(this,o,o+7),swap(this,o+1,o+6),swap(this,o+2,o+5),swap(this,o+3,o+4);return this},Buffer.prototype.toString=function toString(){const s=this.length;return 0===s?\"\":0===arguments.length?utf8Slice(this,0,s):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(s){if(!Buffer.isBuffer(s))throw new TypeError(\"Argument must be a Buffer\");return this===s||0===Buffer.compare(this,s)},Buffer.prototype.inspect=function inspect(){let s=\"\";const i=o.INSPECT_MAX_BYTES;return s=this.toString(\"hex\",0,i).replace(/(.{2})/g,\"$1 \").trim(),this.length>i&&(s+=\" ... \"),\"<Buffer \"+s+\">\"},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(s,o,i,a,u){if(isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),!Buffer.isBuffer(s))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(void 0===o&&(o=0),void 0===i&&(i=s?s.length:0),void 0===a&&(a=0),void 0===u&&(u=this.length),o<0||i>s.length||a<0||u>this.length)throw new RangeError(\"out of range index\");if(a>=u&&o>=i)return 0;if(a>=u)return-1;if(o>=i)return 1;if(this===s)return 0;let _=(u>>>=0)-(a>>>=0),w=(i>>>=0)-(o>>>=0);const x=Math.min(_,w),C=this.slice(a,u),j=s.slice(o,i);for(let s=0;s<x;++s)if(C[s]!==j[s]){_=C[s],w=j[s];break}return _<w?-1:w<_?1:0},Buffer.prototype.includes=function includes(s,o,i){return-1!==this.indexOf(s,o,i)},Buffer.prototype.indexOf=function indexOf(s,o,i){return bidirectionalIndexOf(this,s,o,i,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(s,o,i){return bidirectionalIndexOf(this,s,o,i,!1)},Buffer.prototype.write=function write(s,o,i,a){if(void 0===o)a=\"utf8\",i=this.length,o=0;else if(void 0===i&&\"string\"==typeof o)a=o,i=this.length,o=0;else{if(!isFinite(o))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");o>>>=0,isFinite(i)?(i>>>=0,void 0===a&&(a=\"utf8\")):(a=i,i=void 0)}const u=this.length-o;if((void 0===i||i>u)&&(i=u),s.length>0&&(i<0||o<0)||o>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");a||(a=\"utf8\");let _=!1;for(;;)switch(a){case\"hex\":return hexWrite(this,s,o,i);case\"utf8\":case\"utf-8\":return utf8Write(this,s,o,i);case\"ascii\":case\"latin1\":case\"binary\":return asciiWrite(this,s,o,i);case\"base64\":return base64Write(this,s,o,i);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,s,o,i);default:if(_)throw new TypeError(\"Unknown encoding: \"+a);a=(\"\"+a).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function asciiSlice(s,o,i){let a=\"\";i=Math.min(s.length,i);for(let u=o;u<i;++u)a+=String.fromCharCode(127&s[u]);return a}function latin1Slice(s,o,i){let a=\"\";i=Math.min(s.length,i);for(let u=o;u<i;++u)a+=String.fromCharCode(s[u]);return a}function hexSlice(s,o,i){const a=s.length;(!o||o<0)&&(o=0),(!i||i<0||i>a)&&(i=a);let u=\"\";for(let a=o;a<i;++a)u+=L[s[a]];return u}function utf16leSlice(s,o,i){const a=s.slice(o,i);let u=\"\";for(let s=0;s<a.length-1;s+=2)u+=String.fromCharCode(a[s]+256*a[s+1]);return u}function checkOffset(s,o,i){if(s%1!=0||s<0)throw new RangeError(\"offset is not uint\");if(s+o>i)throw new RangeError(\"Trying to access beyond buffer length\")}function checkInt(s,o,i,a,u,_){if(!Buffer.isBuffer(s))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(o>u||o<_)throw new RangeError('\"value\" argument is out of bounds');if(i+a>s.length)throw new RangeError(\"Index out of range\")}function wrtBigUInt64LE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,i}function wrtBigUInt64BE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i+7]=_,_>>=8,s[i+6]=_,_>>=8,s[i+5]=_,_>>=8,s[i+4]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i+3]=w,w>>=8,s[i+2]=w,w>>=8,s[i+1]=w,w>>=8,s[i]=w,i+8}function checkIEEE754(s,o,i,a,u,_){if(i+a>s.length)throw new RangeError(\"Index out of range\");if(i<0)throw new RangeError(\"Index out of range\")}function writeFloat(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,4),u.write(s,o,i,a,23,4),i+4}function writeDouble(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,8),u.write(s,o,i,a,52,8),i+8}Buffer.prototype.slice=function slice(s,o){const i=this.length;(s=~~s)<0?(s+=i)<0&&(s=0):s>i&&(s=i),(o=void 0===o?i:~~o)<0?(o+=i)<0&&(o=0):o>i&&(o=i),o<s&&(o=s);const a=this.subarray(s,o);return Object.setPrototypeOf(a,Buffer.prototype),a},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_<o&&(u*=256);)a+=this[s+_]*u;return a},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s+--o],u=1;for(;o>0&&(u*=256);)a+=this[s+--o]*u;return a},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),this[s]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]|this[s+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]<<8|this[s+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+16777216*this[s+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),16777216*this[s]+(this[s+1]<<16|this[s+2]<<8|this[s+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o+256*this[++s]+65536*this[++s]+this[++s]*2**24,u=this[++s]+256*this[++s]+65536*this[++s]+i*2**24;return BigInt(a)+(BigInt(u)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o*2**24+65536*this[++s]+256*this[++s]+this[++s],u=this[++s]*2**24+65536*this[++s]+256*this[++s]+i;return(BigInt(a)<<BigInt(32))+BigInt(u)})),Buffer.prototype.readIntLE=function readIntLE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_<o&&(u*=256);)a+=this[s+_]*u;return u*=128,a>=u&&(a-=Math.pow(2,8*o)),a},Buffer.prototype.readIntBE=function readIntBE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=o,u=1,_=this[s+--a];for(;a>0&&(u*=256);)_+=this[s+--a]*u;return u*=128,_>=u&&(_-=Math.pow(2,8*o)),_},Buffer.prototype.readInt8=function readInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),128&this[s]?-1*(255-this[s]+1):this[s]},Buffer.prototype.readInt16LE=function readInt16LE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s]|this[s+1]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt16BE=function readInt16BE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s+1]|this[s]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt32LE=function readInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=this[s+4]+256*this[s+5]+65536*this[s+6]+(i<<24);return(BigInt(a)<<BigInt(32))+BigInt(o+256*this[++s]+65536*this[++s]+this[++s]*2**24)})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(s){validateNumber(s>>>=0,\"offset\");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=(o<<24)+65536*this[++s]+256*this[++s]+this[++s];return(BigInt(a)<<BigInt(32))+BigInt(this[++s]*2**24+65536*this[++s]+256*this[++s]+i)})),Buffer.prototype.readFloatLE=function readFloatLE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(s,o,i,a){if(s=+s,o>>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=1,_=0;for(this[o]=255&s;++_<i&&(u*=256);)this[o+_]=s/u&255;return o+i},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(s,o,i,a){if(s=+s,o>>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=i-1,_=1;for(this[o+u]=255&s;--u>=0&&(_*=256);)this[o+u]=s/_&255;return o+i},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,255,0),this[o]=255&s,o+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o+3]=s>>>24,this[o+2]=s>>>16,this[o+1]=s>>>8,this[o]=255&s,o+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeIntLE=function writeIntLE(s,o,i,a){if(s=+s,o>>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=0,_=1,w=0;for(this[o]=255&s;++u<i&&(_*=256);)s<0&&0===w&&0!==this[o+u-1]&&(w=1),this[o+u]=(s/_|0)-w&255;return o+i},Buffer.prototype.writeIntBE=function writeIntBE(s,o,i,a){if(s=+s,o>>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=i-1,_=1,w=0;for(this[o+u]=255&s;--u>=0&&(_*=256);)s<0&&0===w&&0!==this[o+u+1]&&(w=1),this[o+u]=(s/_|0)-w&255;return o+i},Buffer.prototype.writeInt8=function writeInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,127,-128),s<0&&(s=255+s+1),this[o]=255&s,o+1},Buffer.prototype.writeInt16LE=function writeInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeInt16BE=function writeInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeInt32LE=function writeInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),this[o]=255&s,this[o+1]=s>>>8,this[o+2]=s>>>16,this[o+3]=s>>>24,o+4},Buffer.prototype.writeInt32BE=function writeInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(s,o,i){return writeFloat(this,s,o,!0,i)},Buffer.prototype.writeFloatBE=function writeFloatBE(s,o,i){return writeFloat(this,s,o,!1,i)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(s,o,i){return writeDouble(this,s,o,!0,i)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(s,o,i){return writeDouble(this,s,o,!1,i)},Buffer.prototype.copy=function copy(s,o,i,a){if(!Buffer.isBuffer(s))throw new TypeError(\"argument should be a Buffer\");if(i||(i=0),a||0===a||(a=this.length),o>=s.length&&(o=s.length),o||(o=0),a>0&&a<i&&(a=i),a===i)return 0;if(0===s.length||0===this.length)return 0;if(o<0)throw new RangeError(\"targetStart out of bounds\");if(i<0||i>=this.length)throw new RangeError(\"Index out of range\");if(a<0)throw new RangeError(\"sourceEnd out of bounds\");a>this.length&&(a=this.length),s.length-o<a-i&&(a=s.length-o+i);const u=a-i;return this===s&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(o,i,a):Uint8Array.prototype.set.call(s,this.subarray(i,a),o),u},Buffer.prototype.fill=function fill(s,o,i,a){if(\"string\"==typeof s){if(\"string\"==typeof o?(a=o,o=0,i=this.length):\"string\"==typeof i&&(a=i,i=this.length),void 0!==a&&\"string\"!=typeof a)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof a&&!Buffer.isEncoding(a))throw new TypeError(\"Unknown encoding: \"+a);if(1===s.length){const o=s.charCodeAt(0);(\"utf8\"===a&&o<128||\"latin1\"===a)&&(s=o)}}else\"number\"==typeof s?s&=255:\"boolean\"==typeof s&&(s=Number(s));if(o<0||this.length<o||this.length<i)throw new RangeError(\"Out of range index\");if(i<=o)return this;let u;if(o>>>=0,i=void 0===i?this.length:i>>>0,s||(s=0),\"number\"==typeof s)for(u=o;u<i;++u)this[u]=s;else{const _=Buffer.isBuffer(s)?s:Buffer.from(s,a),w=_.length;if(0===w)throw new TypeError('The value \"'+s+'\" is invalid for argument \"value\"');for(u=0;u<i-o;++u)this[u+o]=_[u%w]}return this};const C={};function E(s,o,i){C[s]=class NodeError extends i{constructor(){super(),Object.defineProperty(this,\"message\",{value:o.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${s}]`,this.stack,delete this.name}get code(){return s}set code(s){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:s,writable:!0})}toString(){return`${this.name} [${s}]: ${this.message}`}}}function addNumericalSeparator(s){let o=\"\",i=s.length;const a=\"-\"===s[0]?1:0;for(;i>=a+4;i-=3)o=`_${s.slice(i-3,i)}${o}`;return`${s.slice(0,i)}${o}`}function checkIntBI(s,o,i,a,u,_){if(s>i||s<o){const a=\"bigint\"==typeof o?\"n\":\"\";let u;throw u=_>3?0===o||o===BigInt(0)?`>= 0${a} and < 2${a} ** ${8*(_+1)}${a}`:`>= -(2${a} ** ${8*(_+1)-1}${a}) and < 2 ** ${8*(_+1)-1}${a}`:`>= ${o}${a} and <= ${i}${a}`,new C.ERR_OUT_OF_RANGE(\"value\",u,s)}!function checkBounds(s,o,i){validateNumber(o,\"offset\"),void 0!==s[o]&&void 0!==s[o+i]||boundsError(o,s.length-(i+1))}(a,u,_)}function validateNumber(s,o){if(\"number\"!=typeof s)throw new C.ERR_INVALID_ARG_TYPE(o,\"number\",s)}function boundsError(s,o,i){if(Math.floor(s)!==s)throw validateNumber(s,i),new C.ERR_OUT_OF_RANGE(i||\"offset\",\"an integer\",s);if(o<0)throw new C.ERR_BUFFER_OUT_OF_BOUNDS;throw new C.ERR_OUT_OF_RANGE(i||\"offset\",`>= ${i?1:0} and <= ${o}`,s)}E(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(s){return s?`${s} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),E(\"ERR_INVALID_ARG_TYPE\",(function(s,o){return`The \"${s}\" argument must be of type number. Received type ${typeof o}`}),TypeError),E(\"ERR_OUT_OF_RANGE\",(function(s,o,i){let a=`The value of \"${s}\" is out of range.`,u=i;return Number.isInteger(i)&&Math.abs(i)>2**32?u=addNumericalSeparator(String(i)):\"bigint\"==typeof i&&(u=String(i),(i>BigInt(2)**BigInt(32)||i<-(BigInt(2)**BigInt(32)))&&(u=addNumericalSeparator(u)),u+=\"n\"),a+=` It must be ${o}. Received ${u}`,a}),RangeError);const j=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(s,o){let i;o=o||1/0;const a=s.length;let u=null;const _=[];for(let w=0;w<a;++w){if(i=s.charCodeAt(w),i>55295&&i<57344){if(!u){if(i>56319){(o-=3)>-1&&_.push(239,191,189);continue}if(w+1===a){(o-=3)>-1&&_.push(239,191,189);continue}u=i;continue}if(i<56320){(o-=3)>-1&&_.push(239,191,189),u=i;continue}i=65536+(u-55296<<10|i-56320)}else u&&(o-=3)>-1&&_.push(239,191,189);if(u=null,i<128){if((o-=1)<0)break;_.push(i)}else if(i<2048){if((o-=2)<0)break;_.push(i>>6|192,63&i|128)}else if(i<65536){if((o-=3)<0)break;_.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error(\"Invalid code point\");if((o-=4)<0)break;_.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return _}function base64ToBytes(s){return a.toByteArray(function base64clean(s){if((s=(s=s.split(\"=\")[0]).trim().replace(j,\"\")).length<2)return\"\";for(;s.length%4!=0;)s+=\"=\";return s}(s))}function blitBuffer(s,o,i,a){let u;for(u=0;u<a&&!(u+i>=o.length||u>=s.length);++u)o[u+i]=s[u];return u}function isInstance(s,o){return s instanceof o||null!=s&&null!=s.constructor&&null!=s.constructor.name&&s.constructor.name===o.name}function numberIsNaN(s){return s!=s}const L=function(){const s=\"0123456789abcdef\",o=new Array(256);for(let i=0;i<16;++i){const a=16*i;for(let u=0;u<16;++u)o[a+u]=s[i]+s[u]}return o}();function defineBigIntMethod(s){return\"undefined\"==typeof BigInt?BufferBigIntNotDefined:s}function BufferBigIntNotDefined(){throw new Error(\"BigInt not supported\")}},48590:(s,o)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.default=function(s){return s&&\"@@redux/INIT\"===s.type?\"initialState argument passed to createStore\":\"previous state received by the reducer\"},s.exports=o.default},48655:(s,o,i)=>{var a=i(26025);s.exports=function listCacheHas(s){return a(this.__data__,s)>-1}},48675:(s,o,i)=>{s.exports=i(20850)},48948:(s,o,i)=>{var a=i(21791),u=i(86375);s.exports=function copySymbolsIn(s,o){return a(s,u(s),o)}},49326:(s,o,i)=>{var a=i(31769),u=i(72428),_=i(56449),w=i(30361),x=i(30294),C=i(77797);s.exports=function hasPath(s,o,i){for(var j=-1,L=(o=a(o,s)).length,B=!1;++j<L;){var $=C(o[j]);if(!(B=null!=s&&i(s,$)))break;s=s[$]}return B||++j!=L?B:!!(L=null==s?0:s.length)&&x(L)&&w($,L)&&(_(s)||u(s))}},49552:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(46285),_=a.document,w=u(_)&&u(_.createElement);s.exports=function(s){return w?_.createElement(s):{}}},49653:(s,o,i)=>{var a=i(37828);s.exports=function cloneArrayBuffer(s){var o=new s.constructor(s.byteLength);return new a(o).set(new a(s)),o}},49698:s=>{var o=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");s.exports=function hasUnicode(s){return o.test(s)}},49724:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(39298),_=a({}.hasOwnProperty);s.exports=Object.hasOwn||function hasOwn(s,o){return _(u(s),o)}},49747:(s,o,i)=>{var a=i(66977);function curry(s,o,i){var u=a(s,8,void 0,void 0,void 0,void 0,void 0,o=i?void 0:o);return u.placeholder=curry.placeholder,u}curry.placeholder={},s.exports=curry},50002:(s,o,i)=>{var a=i(82199),u=i(4664),_=i(95950);s.exports=function getAllKeys(s){return a(s,_,u)}},50104:(s,o,i)=>{var a=i(53661);function memoize(s,o){if(\"function\"!=typeof s||null!=o&&\"function\"!=typeof o)throw new TypeError(\"Expected a function\");var memoized=function(){var i=arguments,a=o?o.apply(this,i):i[0],u=memoized.cache;if(u.has(a))return u.get(a);var _=s.apply(this,i);return memoized.cache=u.set(a,_)||u,_};return memoized.cache=new(memoize.Cache||a),memoized}memoize.Cache=a,s.exports=memoize},50583:(s,o,i)=>{var a=i(47237),u=i(17255),_=i(28586),w=i(77797);s.exports=function property(s){return _(s)?a(w(s)):u(s)}},50689:(s,o,i)=>{var a=i(50002),u=Object.prototype.hasOwnProperty;s.exports=function equalObjects(s,o,i,_,w,x){var C=1&i,j=a(s),L=j.length;if(L!=a(o).length&&!C)return!1;for(var B=L;B--;){var $=j[B];if(!(C?$ in o:u.call(o,$)))return!1}var V=x.get(s),U=x.get(o);if(V&&U)return V==o&&U==s;var z=!0;x.set(s,o),x.set(o,s);for(var Y=C;++B<L;){var Z=s[$=j[B]],ee=o[$];if(_)var ie=C?_(ee,Z,$,o,s,x):_(Z,ee,$,s,o,x);if(!(void 0===ie?Z===ee||w(Z,ee,i,_,x):ie)){z=!1;break}Y||(Y=\"constructor\"==$)}if(z&&!Y){var ae=s.constructor,ce=o.constructor;ae==ce||!(\"constructor\"in s)||!(\"constructor\"in o)||\"function\"==typeof ae&&ae instanceof ae&&\"function\"==typeof ce&&ce instanceof ce||(z=!1)}return x.delete(s),x.delete(o),z}},50828:(s,o,i)=>{var a=i(24647),u=i(13222),_=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,w=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\");s.exports=function deburr(s){return(s=u(s))&&s.replace(_,a).replace(w,\"\")}},51175:(s,o,i)=>{\"use strict\";var a=i(19846);s.exports=a&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},51234:s=>{s.exports=function baseZipObject(s,o,i){for(var a=-1,u=s.length,_=o.length,w={};++a<u;){var x=a<_?o[a]:void 0;i(w,s[a],x)}return w}},51420:(s,o,i)=>{var a=i(80079);s.exports=function stackClear(){this.__data__=new a,this.size=0}},51459:s=>{s.exports=function setCacheHas(s){return this.__data__.has(s)}},51811:s=>{var o=Date.now;s.exports=function shortOut(s){var i=0,a=0;return function(){var u=o(),_=16-(u-a);if(a=u,_>0){if(++i>=800)return arguments[0]}else i=0;return s.apply(void 0,arguments)}}},51871:(s,o,i)=>{\"use strict\";var a=i(1907),u=i(82159);s.exports=function(s,o,i){try{return a(u(Object.getOwnPropertyDescriptor(s,o)[i]))}catch(s){}}},51873:(s,o,i)=>{var a=i(9325).Symbol;s.exports=a},52623:(s,o,i)=>{\"use strict\";var a={};a[i(76264)(\"toStringTag\")]=\"z\",s.exports=\"[object z]\"===String(a)},53138:(s,o,i)=>{var a=i(11331);s.exports=function customOmitClone(s){return a(s)?void 0:s}},53209:(s,o,i)=>{\"use strict\";var a=i(65606),u=65536,_=4294967295;var w=i(92861).Buffer,x=i.g.crypto||i.g.msCrypto;x&&x.getRandomValues?s.exports=function randomBytes(s,o){if(s>_)throw new RangeError(\"requested too many random bytes\");var i=w.allocUnsafe(s);if(s>0)if(s>u)for(var C=0;C<s;C+=u)x.getRandomValues(i.slice(C,C+u));else x.getRandomValues(i);if(\"function\"==typeof o)return a.nextTick((function(){o(null,i)}));return i}:s.exports=function oldBrowser(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}},53320:s=>{var o=Math.max;s.exports=function composeArgsRight(s,i,a,u){for(var _=-1,w=s.length,x=-1,C=a.length,j=-1,L=i.length,B=o(w-C,0),$=Array(B+L),V=!u;++_<B;)$[_]=s[_];for(var U=_;++j<L;)$[U+j]=i[j];for(;++x<C;)(V||_<w)&&($[U+a[x]]=s[_++]);return $}},53375:(s,o,i)=>{\"use strict\";var a=i(93700);s.exports=a},53661:(s,o,i)=>{var a=i(63040),u=i(17670),_=i(90289),w=i(4509),x=i(72949);function MapCache(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}MapCache.prototype.clear=a,MapCache.prototype.delete=u,MapCache.prototype.get=_,MapCache.prototype.has=w,MapCache.prototype.set=x,s.exports=MapCache},53758:(s,o,i)=>{var a=i(30980),u=i(56017),_=i(94033),w=i(56449),x=i(40346),C=i(80257),j=Object.prototype.hasOwnProperty;function lodash(s){if(x(s)&&!w(s)&&!(s instanceof a)){if(s instanceof u)return s;if(j.call(s,\"__wrapped__\"))return C(s)}return new u(s)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,s.exports=lodash},53812:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isBoolean(s){return!0===s||!1===s||u(s)&&\"[object Boolean]\"==a(s)}},54018:(s,o,i)=>{\"use strict\";var a=i(46285);s.exports=function(s){return a(s)||null===s}},54128:(s,o,i)=>{var a=i(31800),u=/^\\s+/;s.exports=function baseTrim(s){return s?s.slice(0,a(s)+1).replace(u,\"\"):s}},54552:s=>{s.exports=function basePropertyOf(s){return function(o){return null==s?void 0:s[o]}}},54641:(s,o,i)=>{var a=i(68882),u=i(51811)(a);s.exports=u},54829:(s,o,i)=>{\"use strict\";var a=i(74284).f;s.exports=function(s,o,i){i in s||a(s,i,{configurable:!0,get:function(){return o[i]},set:function(s){o[i]=s}})}},54878:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(73948);s.exports=a?{}.toString:function toString(){return\"[object \"+u(this)+\"]\"}},55157:s=>{s.exports=function(){throw new Error(\"Readable.from is not available in the browser\")}},55364:(s,o,i)=>{var a=i(85250),u=i(20999)((function(s,o,i){a(s,o,i)}));s.exports=u},55481:(s,o,i)=>{var a=i(9325)[\"__core-js_shared__\"];s.exports=a},55527:s=>{var o=Object.prototype;s.exports=function isPrototype(s){var i=s&&s.constructor;return s===(\"function\"==typeof i&&i.prototype||o)}},55580:(s,o,i)=>{var a=i(56110)(i(9325),\"DataView\");s.exports=a},55674:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0}),o.validateNextState=o.getUnexpectedInvocationParameterMessage=o.getStateName=void 0;var a=_interopRequireDefault(i(48590)),u=_interopRequireDefault(i(82261)),_=_interopRequireDefault(i(27374));function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}o.getStateName=a.default,o.getUnexpectedInvocationParameterMessage=u.default,o.validateNextState=_.default},55808:(s,o,i)=>{var a=i(12507)(\"toUpperCase\");s.exports=a},55973:s=>{class KeyValuePair{constructor(s,o){this.key=s,this.value=o}clone(){const s=new KeyValuePair;return this.key&&(s.key=this.key.clone()),this.value&&(s.value=this.value.clone()),s}}s.exports=KeyValuePair},56017:(s,o,i)=>{var a=i(39344),u=i(94033);function LodashWrapper(s,o){this.__wrapped__=s,this.__actions__=[],this.__chain__=!!o,this.__index__=0,this.__values__=void 0}LodashWrapper.prototype=a(u.prototype),LodashWrapper.prototype.constructor=LodashWrapper,s.exports=LodashWrapper},56110:(s,o,i)=>{var a=i(45083),u=i(10392);s.exports=function getNative(s,o){var i=u(s,o);return a(i)?i:void 0}},56367:(s,o,i)=>{s.exports=i(77731)},56449:s=>{var o=Array.isArray;s.exports=o},56698:s=>{\"function\"==typeof Object.create?s.exports=function inherits(s,o){o&&(s.super_=o,s.prototype=Object.create(o.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:s.exports=function inherits(s,o){if(o){s.super_=o;var TempCtor=function(){};TempCtor.prototype=o.prototype,s.prototype=new TempCtor,s.prototype.constructor=s}}},56757:(s,o,i)=>{var a=i(91033),u=Math.max;s.exports=function overRest(s,o,i){return o=u(void 0===o?s.length-1:o,0),function(){for(var _=arguments,w=-1,x=u(_.length-o,0),C=Array(x);++w<x;)C[w]=_[o+w];w=-1;for(var j=Array(o+1);++w<o;)j[w]=_[w];return j[o]=i(C),a(s,this,j)}}},57382:(s,o,i)=>{\"use strict\";var a=i(98828);s.exports=!a((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},57758:(s,o,i)=>{\"use strict\";var a;var u=i(86048).F,_=u.ERR_MISSING_ARGS,w=u.ERR_STREAM_DESTROYED;function noop(s){if(s)throw s}function call(s){s()}function pipe(s,o){return s.pipe(o)}s.exports=function pipeline(){for(var s=arguments.length,o=new Array(s),u=0;u<s;u++)o[u]=arguments[u];var x,C=function popCallback(s){return s.length?\"function\"!=typeof s[s.length-1]?noop:s.pop():noop}(o);if(Array.isArray(o[0])&&(o=o[0]),o.length<2)throw new _(\"streams\");var j=o.map((function(s,u){var _=u<o.length-1;return function destroyer(s,o,u,_){_=function once(s){var o=!1;return function(){o||(o=!0,s.apply(void 0,arguments))}}(_);var x=!1;s.on(\"close\",(function(){x=!0})),void 0===a&&(a=i(86238)),a(s,{readable:o,writable:u},(function(s){if(s)return _(s);x=!0,_()}));var C=!1;return function(o){if(!x&&!C)return C=!0,function isRequest(s){return s.setHeader&&\"function\"==typeof s.abort}(s)?s.abort():\"function\"==typeof s.destroy?s.destroy():void _(o||new w(\"pipe\"))}}(s,_,u>0,(function(s){x||(x=s),s&&j.forEach(call),_||(j.forEach(call),C(x))}))}));return o.reduce(pipe)}},58075:(s,o,i)=>{\"use strict\";var a,u=i(36624),_=i(42220),w=i(80376),x=i(38530),C=i(62416),j=i(49552),L=i(92522),B=\"prototype\",$=\"script\",V=L(\"IE_PROTO\"),EmptyConstructor=function(){},scriptTag=function(s){return\"<\"+$+\">\"+s+\"</\"+$+\">\"},NullProtoObjectViaActiveX=function(s){s.write(scriptTag(\"\")),s.close();var o=s.parentWindow.Object;return s=null,o},NullProtoObject=function(){try{a=new ActiveXObject(\"htmlfile\")}catch(s){}var s,o,i;NullProtoObject=\"undefined\"!=typeof document?document.domain&&a?NullProtoObjectViaActiveX(a):(o=j(\"iframe\"),i=\"java\"+$+\":\",o.style.display=\"none\",C.appendChild(o),o.src=String(i),(s=o.contentWindow.document).open(),s.write(scriptTag(\"document.F=Object\")),s.close(),s.F):NullProtoObjectViaActiveX(a);for(var u=w.length;u--;)delete NullProtoObject[B][w[u]];return NullProtoObject()};x[V]=!0,s.exports=Object.create||function create(s,o){var i;return null!==s?(EmptyConstructor[B]=u(s),i=new EmptyConstructor,EmptyConstructor[B]=null,i[V]=s):i=NullProtoObject(),void 0===o?i:_.f(i,o)}},58156:(s,o,i)=>{var a=i(47422);s.exports=function get(s,o,i){var u=null==s?void 0:a(s,o);return void 0===u?i:u}},58523:s=>{s.exports=function countHolders(s,o){for(var i=s.length,a=0;i--;)s[i]===o&&++a;return a}},58661:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(98828);s.exports=a&&u((function(){return 42!==Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},59350:s=>{var o=Object.prototype.toString;s.exports=function objectToString(s){return o.call(s)}},59399:(s,o,i)=>{\"use strict\";var a=i(25264).CopyToClipboard;a.CopyToClipboard=a,s.exports=a},59550:s=>{\"use strict\";s.exports=function(s,o){return{value:s,done:o}}},60183:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(13930),_=i(7376),w=i(36833),x=i(62250),C=i(47181),j=i(15972),L=i(79192),B=i(14840),$=i(61626),V=i(68055),U=i(76264),z=i(93742),Y=i(95116),Z=w.PROPER,ee=w.CONFIGURABLE,ie=Y.IteratorPrototype,ae=Y.BUGGY_SAFARI_ITERATORS,ce=U(\"iterator\"),le=\"keys\",pe=\"values\",de=\"entries\",returnThis=function(){return this};s.exports=function(s,o,i,w,U,Y,fe){C(i,o,w);var ye,be,_e,getIterationMethod=function(s){if(s===U&&Te)return Te;if(!ae&&s&&s in xe)return xe[s];switch(s){case le:return function keys(){return new i(this,s)};case pe:return function values(){return new i(this,s)};case de:return function entries(){return new i(this,s)}}return function(){return new i(this)}},Se=o+\" Iterator\",we=!1,xe=s.prototype,Pe=xe[ce]||xe[\"@@iterator\"]||U&&xe[U],Te=!ae&&Pe||getIterationMethod(U),Re=\"Array\"===o&&xe.entries||Pe;if(Re&&(ye=j(Re.call(new s)))!==Object.prototype&&ye.next&&(_||j(ye)===ie||(L?L(ye,ie):x(ye[ce])||V(ye,ce,returnThis)),B(ye,Se,!0,!0),_&&(z[Se]=returnThis)),Z&&U===pe&&Pe&&Pe.name!==pe&&(!_&&ee?$(xe,\"name\",pe):(we=!0,Te=function values(){return u(Pe,this)})),U)if(be={values:getIterationMethod(pe),keys:Y?Te:getIterationMethod(le),entries:getIterationMethod(de)},fe)for(_e in be)(ae||we||!(_e in xe))&&V(xe,_e,be[_e]);else a({target:o,proto:!0,forced:ae||we},be);return _&&!fe||xe[ce]===Te||V(xe,ce,Te,{name:U}),z[o]=Te,be}},60270:(s,o,i)=>{var a=i(87068),u=i(40346);s.exports=function baseIsEqual(s,o,i,_,w){return s===o||(null==s||null==o||!u(s)&&!u(o)?s!=s&&o!=o:a(s,o,i,_,baseIsEqual,w))}},60581:(s,o,i)=>{\"use strict\";var a=i(13930),u=i(62250),_=i(46285),w=TypeError;s.exports=function(s,o){var i,x;if(\"string\"===o&&u(i=s.toString)&&!_(x=a(i,s)))return x;if(u(i=s.valueOf)&&!_(x=a(i,s)))return x;if(\"string\"!==o&&u(i=s.toString)&&!_(x=a(i,s)))return x;throw new w(\"Can't convert object to primitive value\")}},60680:(s,o,i)=>{var a=i(13222),u=/[\\\\^$.*+?()[\\]{}|]/g,_=RegExp(u.source);s.exports=function escapeRegExp(s){return(s=a(s))&&_.test(s)?s.replace(u,\"\\\\$&\"):s}},61045:(s,o,i)=>{const a=i(6048),u=i(23805),_=i(6233),w=i(87726),x=i(10866);s.exports=class ObjectElement extends _{constructor(s,o,i){super(s||[],o,i),this.element=\"object\"}primitive(){return\"object\"}toValue(){return this.content.reduce(((s,o)=>(s[o.key.toValue()]=o.value?o.value.toValue():void 0,s)),{})}get(s){const o=this.getMember(s);if(o)return o.value}getMember(s){if(void 0!==s)return this.content.find((o=>o.key.toValue()===s))}remove(s){let o=null;return this.content=this.content.filter((i=>i.key.toValue()!==s||(o=i,!1))),o}getKey(s){const o=this.getMember(s);if(o)return o.key}set(s,o){if(u(s))return Object.keys(s).forEach((o=>{this.set(o,s[o])})),this;const i=s,a=this.getMember(i);return a?a.value=o:this.content.push(new w(i,o)),this}keys(){return this.content.map((s=>s.key.toValue()))}values(){return this.content.map((s=>s.value.toValue()))}hasKey(s){return this.content.some((o=>o.key.equals(s)))}items(){return this.content.map((s=>[s.key.toValue(),s.value.toValue()]))}map(s,o){return this.content.map((i=>s.bind(o)(i.value,i.key,i)))}compactMap(s,o){const i=[];return this.forEach(((a,u,_)=>{const w=s.bind(o)(a,u,_);w&&i.push(w)})),i}filter(s,o){return new x(this.content).filter(s,o)}reject(s,o){return this.filter(a(s),o)}forEach(s,o){return this.content.forEach((i=>s.bind(o)(i.value,i.key,i)))}}},61074:s=>{s.exports=function asciiToArray(s){return s.split(\"\")}},61160:(s,o,i)=>{\"use strict\";var a=i(92063),u=i(73992),_=/^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,w=/[\\n\\r\\t]/g,x=/^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,C=/:\\d+$/,j=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,L=/^[a-zA-Z]:/;function trimLeft(s){return(s||\"\").toString().replace(_,\"\")}var B=[[\"#\",\"hash\"],[\"?\",\"query\"],function sanitize(s,o){return isSpecial(o.protocol)?s.replace(/\\\\/g,\"/\"):s},[\"/\",\"pathname\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1,1],[/:(\\d*)$/,\"port\",void 0,1],[NaN,\"hostname\",void 0,1,1]],$={hash:1,query:1};function lolcation(s){var o,a=(\"undefined\"!=typeof window?window:void 0!==i.g?i.g:\"undefined\"!=typeof self?self:{}).location||{},u={},_=typeof(s=s||a);if(\"blob:\"===s.protocol)u=new Url(unescape(s.pathname),{});else if(\"string\"===_)for(o in u=new Url(s,{}),$)delete u[o];else if(\"object\"===_){for(o in s)o in $||(u[o]=s[o]);void 0===u.slashes&&(u.slashes=x.test(s.href))}return u}function isSpecial(s){return\"file:\"===s||\"ftp:\"===s||\"http:\"===s||\"https:\"===s||\"ws:\"===s||\"wss:\"===s}function extractProtocol(s,o){s=(s=trimLeft(s)).replace(w,\"\"),o=o||{};var i,a=j.exec(s),u=a[1]?a[1].toLowerCase():\"\",_=!!a[2],x=!!a[3],C=0;return _?x?(i=a[2]+a[3]+a[4],C=a[2].length+a[3].length):(i=a[2]+a[4],C=a[2].length):x?(i=a[3]+a[4],C=a[3].length):i=a[4],\"file:\"===u?C>=2&&(i=i.slice(2)):isSpecial(u)?i=a[4]:u?_&&(i=i.slice(2)):C>=2&&isSpecial(o.protocol)&&(i=a[4]),{protocol:u,slashes:_||isSpecial(u),slashesCount:C,rest:i}}function Url(s,o,i){if(s=(s=trimLeft(s)).replace(w,\"\"),!(this instanceof Url))return new Url(s,o,i);var _,x,C,j,$,V,U=B.slice(),z=typeof o,Y=this,Z=0;for(\"object\"!==z&&\"string\"!==z&&(i=o,o=null),i&&\"function\"!=typeof i&&(i=u.parse),_=!(x=extractProtocol(s||\"\",o=lolcation(o))).protocol&&!x.slashes,Y.slashes=x.slashes||_&&o.slashes,Y.protocol=x.protocol||o.protocol||\"\",s=x.rest,(\"file:\"===x.protocol&&(2!==x.slashesCount||L.test(s))||!x.slashes&&(x.protocol||x.slashesCount<2||!isSpecial(Y.protocol)))&&(U[3]=[/(.*)/,\"pathname\"]);Z<U.length;Z++)\"function\"!=typeof(j=U[Z])?(C=j[0],V=j[1],C!=C?Y[V]=s:\"string\"==typeof C?~($=\"@\"===C?s.lastIndexOf(C):s.indexOf(C))&&(\"number\"==typeof j[2]?(Y[V]=s.slice(0,$),s=s.slice($+j[2])):(Y[V]=s.slice($),s=s.slice(0,$))):($=C.exec(s))&&(Y[V]=$[1],s=s.slice(0,$.index)),Y[V]=Y[V]||_&&j[3]&&o[V]||\"\",j[4]&&(Y[V]=Y[V].toLowerCase())):s=j(s,Y);i&&(Y.query=i(Y.query)),_&&o.slashes&&\"/\"!==Y.pathname.charAt(0)&&(\"\"!==Y.pathname||\"\"!==o.pathname)&&(Y.pathname=function resolve(s,o){if(\"\"===s)return o;for(var i=(o||\"/\").split(\"/\").slice(0,-1).concat(s.split(\"/\")),a=i.length,u=i[a-1],_=!1,w=0;a--;)\".\"===i[a]?i.splice(a,1):\"..\"===i[a]?(i.splice(a,1),w++):w&&(0===a&&(_=!0),i.splice(a,1),w--);return _&&i.unshift(\"\"),\".\"!==u&&\"..\"!==u||i.push(\"\"),i.join(\"/\")}(Y.pathname,o.pathname)),\"/\"!==Y.pathname.charAt(0)&&isSpecial(Y.protocol)&&(Y.pathname=\"/\"+Y.pathname),a(Y.port,Y.protocol)||(Y.host=Y.hostname,Y.port=\"\"),Y.username=Y.password=\"\",Y.auth&&(~($=Y.auth.indexOf(\":\"))?(Y.username=Y.auth.slice(0,$),Y.username=encodeURIComponent(decodeURIComponent(Y.username)),Y.password=Y.auth.slice($+1),Y.password=encodeURIComponent(decodeURIComponent(Y.password))):Y.username=encodeURIComponent(decodeURIComponent(Y.auth)),Y.auth=Y.password?Y.username+\":\"+Y.password:Y.username),Y.origin=\"file:\"!==Y.protocol&&isSpecial(Y.protocol)&&Y.host?Y.protocol+\"//\"+Y.host:\"null\",Y.href=Y.toString()}Url.prototype={set:function set(s,o,i){var _=this;switch(s){case\"query\":\"string\"==typeof o&&o.length&&(o=(i||u.parse)(o)),_[s]=o;break;case\"port\":_[s]=o,a(o,_.protocol)?o&&(_.host=_.hostname+\":\"+o):(_.host=_.hostname,_[s]=\"\");break;case\"hostname\":_[s]=o,_.port&&(o+=\":\"+_.port),_.host=o;break;case\"host\":_[s]=o,C.test(o)?(o=o.split(\":\"),_.port=o.pop(),_.hostname=o.join(\":\")):(_.hostname=o,_.port=\"\");break;case\"protocol\":_.protocol=o.toLowerCase(),_.slashes=!i;break;case\"pathname\":case\"hash\":if(o){var w=\"pathname\"===s?\"/\":\"#\";_[s]=o.charAt(0)!==w?w+o:o}else _[s]=o;break;case\"username\":case\"password\":_[s]=encodeURIComponent(o);break;case\"auth\":var x=o.indexOf(\":\");~x?(_.username=o.slice(0,x),_.username=encodeURIComponent(decodeURIComponent(_.username)),_.password=o.slice(x+1),_.password=encodeURIComponent(decodeURIComponent(_.password))):_.username=encodeURIComponent(decodeURIComponent(o))}for(var j=0;j<B.length;j++){var L=B[j];L[4]&&(_[L[1]]=_[L[1]].toLowerCase())}return _.auth=_.password?_.username+\":\"+_.password:_.username,_.origin=\"file:\"!==_.protocol&&isSpecial(_.protocol)&&_.host?_.protocol+\"//\"+_.host:\"null\",_.href=_.toString(),_},toString:function toString(s){s&&\"function\"==typeof s||(s=u.stringify);var o,i=this,a=i.host,_=i.protocol;_&&\":\"!==_.charAt(_.length-1)&&(_+=\":\");var w=_+(i.protocol&&i.slashes||isSpecial(i.protocol)?\"//\":\"\");return i.username?(w+=i.username,i.password&&(w+=\":\"+i.password),w+=\"@\"):i.password?(w+=\":\"+i.password,w+=\"@\"):\"file:\"!==i.protocol&&isSpecial(i.protocol)&&!a&&\"/\"!==i.pathname&&(w+=\"@\"),(\":\"===a[a.length-1]||C.test(i.hostname)&&!i.port)&&(a+=\":\"),w+=a+i.pathname,(o=\"object\"==typeof i.query?s(i.query):i.query)&&(w+=\"?\"!==o.charAt(0)?\"?\"+o:o),i.hash&&(w+=i.hash),w}},Url.extractProtocol=extractProtocol,Url.location=lolcation,Url.trimLeft=trimLeft,Url.qs=u,s.exports=Url},61448:(s,o,i)=>{var a=i(20426),u=i(49326);s.exports=function has(s,o){return null!=s&&u(s,o,a)}},61489:(s,o,i)=>{var a=i(17400);s.exports=function toInteger(s){var o=a(s),i=o%1;return o==o?i?o-i:o:0}},61626:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(74284),_=i(75817);s.exports=a?function(s,o,i){return u.f(s,o,_(1,i))}:function(s,o,i){return s[o]=i,s}},61747:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(92046);s.exports=function(s,o){var i=u[s+\"Prototype\"],_=i&&i[o];if(_)return _;var w=a[s],x=w&&w.prototype;return x&&x[o]}},61802:(s,o,i)=>{var a=i(62224),u=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,_=/\\\\(\\\\)?/g,w=a((function(s){var o=[];return 46===s.charCodeAt(0)&&o.push(\"\"),s.replace(u,(function(s,i,a,u){o.push(a?u.replace(_,\"$1\"):i||s)})),o}));s.exports=w},62006:(s,o,i)=>{var a=i(15389),u=i(64894),_=i(95950);s.exports=function createFind(s){return function(o,i,w){var x=Object(o);if(!u(o)){var C=a(i,3);o=_(o),i=function(s){return C(x[s],s,x)}}var j=s(o,i,w);return j>-1?x[C?o[j]:j]:void 0}}},62060:s=>{var o=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;s.exports=function insertWrapDetails(s,i){var a=i.length;if(!a)return s;var u=a-1;return i[u]=(a>1?\"& \":\"\")+i[u],i=i.join(a>2?\", \":\" \"),s.replace(o,\"{\\n/* [wrapped with \"+i+\"] */\\n\")}},62193:(s,o,i)=>{var a=i(88984),u=i(5861),_=i(72428),w=i(56449),x=i(64894),C=i(3656),j=i(55527),L=i(37167),B=Object.prototype.hasOwnProperty;s.exports=function isEmpty(s){if(null==s)return!0;if(x(s)&&(w(s)||\"string\"==typeof s||\"function\"==typeof s.splice||C(s)||L(s)||_(s)))return!s.length;var o=u(s);if(\"[object Map]\"==o||\"[object Set]\"==o)return!s.size;if(j(s))return!a(s).length;for(var i in s)if(B.call(s,i))return!1;return!0}},62224:(s,o,i)=>{var a=i(50104);s.exports=function memoizeCapped(s){var o=a(s,(function(s){return 500===i.size&&i.clear(),s})),i=o.cache;return o}},62250:s=>{\"use strict\";var o=\"object\"==typeof document&&document.all;s.exports=void 0===o&&void 0!==o?function(s){return\"function\"==typeof s||s===o}:function(s){return\"function\"==typeof s}},62284:(s,o,i)=>{var a=i(84629),u=Object.prototype.hasOwnProperty;s.exports=function getFuncName(s){for(var o=s.name+\"\",i=a[o],_=u.call(a,o)?i.length:0;_--;){var w=i[_],x=w.func;if(null==x||x==s)return w.name}return o}},62416:(s,o,i)=>{\"use strict\";var a=i(85582);s.exports=a(\"document\",\"documentElement\")},62802:(s,o,i)=>{var a=s.exports=function SHA(s){s=s.toLowerCase();var o=a[s];if(!o)throw new Error(s+\" is not supported (we accept pull requests)\");return new o};a.sha=i(27816),a.sha1=i(63737),a.sha224=i(26710),a.sha256=i(24107),a.sha384=i(32827),a.sha512=i(82890)},63040:(s,o,i)=>{var a=i(21549),u=i(80079),_=i(68223);s.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new a,map:new(_||u),string:new a}}},63345:s=>{s.exports=function stubArray(){return[]}},63560:(s,o,i)=>{var a=i(73170);s.exports=function set(s,o,i){return null==s?s:a(s,o,i)}},63600:(s,o,i)=>{\"use strict\";s.exports=PassThrough;var a=i(74610);function PassThrough(s){if(!(this instanceof PassThrough))return new PassThrough(s);a.call(this,s)}i(56698)(PassThrough,a),PassThrough.prototype._transform=function(s,o,i){i(null,s)}},63605:s=>{s.exports=function stackGet(s){return this.__data__.get(s)}},63702:s=>{s.exports=function listCacheClear(){this.__data__=[],this.size=0}},63737:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1518500249,1859775393,-1894007588,-899497514],x=new Array(80);function Sha1(){this.init(),this._w=x,u.call(this,64,56)}function rotl5(s){return s<<5|s>>>27}function rotl30(s){return s<<30|s>>>2}function ft(s,o,i,a){return 0===s?o&i|~o&a:2===s?o&i|o&a|i&a:o^i^a}a(Sha1,u),Sha1.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha1.prototype._update=function(s){for(var o,i=this._w,a=0|this._a,u=0|this._b,_=0|this._c,x=0|this._d,C=0|this._e,j=0;j<16;++j)i[j]=s.readInt32BE(4*j);for(;j<80;++j)i[j]=(o=i[j-3]^i[j-8]^i[j-14]^i[j-16])<<1|o>>>31;for(var L=0;L<80;++L){var B=~~(L/20),$=rotl5(a)+ft(B,u,_,x)+C+i[L]+w[B]|0;C=x,x=_,_=rotl30(u),u=a,a=$}this._a=a+this._a|0,this._b=u+this._b|0,this._c=_+this._c|0,this._d=x+this._d|0,this._e=C+this._e|0},Sha1.prototype._hash=function(){var s=_.allocUnsafe(20);return s.writeInt32BE(0|this._a,0),s.writeInt32BE(0|this._b,4),s.writeInt32BE(0|this._c,8),s.writeInt32BE(0|this._d,12),s.writeInt32BE(0|this._e,16),s},s.exports=Sha1},63862:s=>{s.exports=function hashDelete(s){var o=this.has(s)&&delete this.__data__[s];return this.size-=o?1:0,o}},63912:(s,o,i)=>{var a=i(61074),u=i(49698),_=i(42054);s.exports=function stringToArray(s){return u(s)?_(s):a(s)}},63950:s=>{s.exports=function noop(){}},64502:(s,o,i)=>{\"use strict\";i(82048)},64626:(s,o,i)=>{var a=i(66977);s.exports=function ary(s,o,i){return o=i?void 0:o,o=s&&null==o?s.length:o,a(s,128,void 0,void 0,void 0,void 0,o)}},64894:(s,o,i)=>{var a=i(1882),u=i(30294);s.exports=function isArrayLike(s){return null!=s&&u(s.length)&&!a(s)}},64932:(s,o,i)=>{\"use strict\";var a,u,_,w=i(40551),x=i(45951),C=i(46285),j=i(61626),L=i(49724),B=i(36128),$=i(92522),V=i(38530),U=\"Object already initialized\",z=x.TypeError,Y=x.WeakMap;if(w||B.state){var Z=B.state||(B.state=new Y);Z.get=Z.get,Z.has=Z.has,Z.set=Z.set,a=function(s,o){if(Z.has(s))throw new z(U);return o.facade=s,Z.set(s,o),o},u=function(s){return Z.get(s)||{}},_=function(s){return Z.has(s)}}else{var ee=$(\"state\");V[ee]=!0,a=function(s,o){if(L(s,ee))throw new z(U);return o.facade=s,j(s,ee,o),o},u=function(s){return L(s,ee)?s[ee]:{}},_=function(s){return L(s,ee)}}s.exports={set:a,get:u,has:_,enforce:function(s){return _(s)?u(s):a(s,{})},getterFor:function(s){return function(o){var i;if(!C(o)||(i=u(o)).type!==s)throw new z(\"Incompatible receiver, \"+s+\" required\");return i}}}},65291:(s,o,i)=>{\"use strict\";var a=i(86048).F.ERR_INVALID_OPT_VALUE;s.exports={getHighWaterMark:function getHighWaterMark(s,o,i,u){var _=function highWaterMarkFrom(s,o,i){return null!=s.highWaterMark?s.highWaterMark:o?s[i]:null}(o,u,i);if(null!=_){if(!isFinite(_)||Math.floor(_)!==_||_<0)throw new a(u?i:\"highWaterMark\",_);return Math.floor(_)}return s.objectMode?16:16384}}},65482:(s,o,i)=>{\"use strict\";var a=i(41176);s.exports=function(s){var o=+s;return o!=o||0===o?0:a(o)}},65606:s=>{var o,i,a=s.exports={};function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(s){if(o===setTimeout)return setTimeout(s,0);if((o===defaultSetTimout||!o)&&setTimeout)return o=setTimeout,setTimeout(s,0);try{return o(s,0)}catch(i){try{return o.call(null,s,0)}catch(i){return o.call(this,s,0)}}}!function(){try{o=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(s){o=defaultSetTimout}try{i=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(s){i=defaultClearTimeout}}();var u,_=[],w=!1,x=-1;function cleanUpNextTick(){w&&u&&(w=!1,u.length?_=u.concat(_):x=-1,_.length&&drainQueue())}function drainQueue(){if(!w){var s=runTimeout(cleanUpNextTick);w=!0;for(var o=_.length;o;){for(u=_,_=[];++x<o;)u&&u[x].run();x=-1,o=_.length}u=null,w=!1,function runClearTimeout(s){if(i===clearTimeout)return clearTimeout(s);if((i===defaultClearTimeout||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(s);try{return i(s)}catch(o){try{return i.call(null,s)}catch(o){return i.call(this,s)}}}(s)}}function Item(s,o){this.fun=s,this.array=o}function noop(){}a.nextTick=function(s){var o=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)o[i-1]=arguments[i];_.push(new Item(s,o)),1!==_.length||w||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},a.title=\"browser\",a.browser=!0,a.env={},a.argv=[],a.version=\"\",a.versions={},a.on=noop,a.addListener=noop,a.once=noop,a.off=noop,a.removeListener=noop,a.removeAllListeners=noop,a.emit=noop,a.prependListener=noop,a.prependOnceListener=noop,a.listeners=function(s){return[]},a.binding=function(s){throw new Error(\"process.binding is not supported\")},a.cwd=function(){return\"/\"},a.chdir=function(s){throw new Error(\"process.chdir is not supported\")},a.umask=function(){return 0}},65772:s=>{s.exports=function json(s){const o={literal:\"true false null\"},i=[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE],a=[s.QUOTE_STRING_MODE,s.C_NUMBER_MODE],u={end:\",\",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:o},_={begin:/\\{/,end:/\\}/,contains:[{className:\"attr\",begin:/\"/,end:/\"/,contains:[s.BACKSLASH_ESCAPE],illegal:\"\\\\n\"},s.inherit(u,{begin:/:/})].concat(i),illegal:\"\\\\S\"},w={begin:\"\\\\[\",end:\"\\\\]\",contains:[s.inherit(u)],illegal:\"\\\\S\"};return a.push(_,w),i.forEach((function(s){a.push(s)})),{name:\"JSON\",contains:a,keywords:o,illegal:\"\\\\S\"}}},66645:(s,o,i)=>{var a=i(1733),u=i(45434),_=i(13222),w=i(22225);s.exports=function words(s,o,i){return s=_(s),void 0===(o=i?void 0:o)?u(s)?w(s):a(s):s.match(o)||[]}},66721:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashGet(s){var o=this.__data__;if(a){var i=o[s];return\"__lodash_hash_undefined__\"===i?void 0:i}return u.call(o,s)?o[s]:void 0}},66977:(s,o,i)=>{var a=i(68882),u=i(11842),_=i(77078),w=i(37471),x=i(24168),C=i(37381),j=i(3209),L=i(54641),B=i(70981),$=i(61489),V=Math.max;s.exports=function createWrap(s,o,i,U,z,Y,Z,ee){var ie=2&o;if(!ie&&\"function\"!=typeof s)throw new TypeError(\"Expected a function\");var ae=U?U.length:0;if(ae||(o&=-97,U=z=void 0),Z=void 0===Z?Z:V($(Z),0),ee=void 0===ee?ee:$(ee),ae-=z?z.length:0,64&o){var ce=U,le=z;U=z=void 0}var pe=ie?void 0:C(s),de=[s,o,i,U,z,ce,le,Y,Z,ee];if(pe&&j(de,pe),s=de[0],o=de[1],i=de[2],U=de[3],z=de[4],!(ee=de[9]=void 0===de[9]?ie?0:s.length:V(de[9]-ae,0))&&24&o&&(o&=-25),o&&1!=o)fe=8==o||16==o?_(s,o,ee):32!=o&&33!=o||z.length?w.apply(void 0,de):x(s,o,i,U);else var fe=u(s,o,i);return B((pe?a:L)(fe,de),s,o)}},67197:s=>{s.exports=function matchesStrictComparable(s,o){return function(i){return null!=i&&(i[s]===o&&(void 0!==o||s in Object(i)))}}},67526:(s,o)=>{\"use strict\";o.byteLength=function byteLength(s){var o=getLens(s),i=o[0],a=o[1];return 3*(i+a)/4-a},o.toByteArray=function toByteArray(s){var o,i,_=getLens(s),w=_[0],x=_[1],C=new u(function _byteLength(s,o,i){return 3*(o+i)/4-i}(0,w,x)),j=0,L=x>0?w-4:w;for(i=0;i<L;i+=4)o=a[s.charCodeAt(i)]<<18|a[s.charCodeAt(i+1)]<<12|a[s.charCodeAt(i+2)]<<6|a[s.charCodeAt(i+3)],C[j++]=o>>16&255,C[j++]=o>>8&255,C[j++]=255&o;2===x&&(o=a[s.charCodeAt(i)]<<2|a[s.charCodeAt(i+1)]>>4,C[j++]=255&o);1===x&&(o=a[s.charCodeAt(i)]<<10|a[s.charCodeAt(i+1)]<<4|a[s.charCodeAt(i+2)]>>2,C[j++]=o>>8&255,C[j++]=255&o);return C},o.fromByteArray=function fromByteArray(s){for(var o,a=s.length,u=a%3,_=[],w=16383,x=0,C=a-u;x<C;x+=w)_.push(encodeChunk(s,x,x+w>C?C:x+w));1===u?(o=s[a-1],_.push(i[o>>2]+i[o<<4&63]+\"==\")):2===u&&(o=(s[a-2]<<8)+s[a-1],_.push(i[o>>10]+i[o>>4&63]+i[o<<2&63]+\"=\"));return _.join(\"\")};for(var i=[],a=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",w=0;w<64;++w)i[w]=_[w],a[_.charCodeAt(w)]=w;function getLens(s){var o=s.length;if(o%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var i=s.indexOf(\"=\");return-1===i&&(i=o),[i,i===o?0:4-i%4]}function encodeChunk(s,o,a){for(var u,_,w=[],x=o;x<a;x+=3)u=(s[x]<<16&16711680)+(s[x+1]<<8&65280)+(255&s[x+2]),w.push(i[(_=u)>>18&63]+i[_>>12&63]+i[_>>6&63]+i[63&_]);return w.join(\"\")}a[\"-\".charCodeAt(0)]=62,a[\"_\".charCodeAt(0)]=63},68055:(s,o,i)=>{\"use strict\";var a=i(61626);s.exports=function(s,o,i,u){return u&&u.enumerable?s[o]=i:a(s,o,i),s}},68090:s=>{s.exports=function last(s){var o=null==s?0:s.length;return o?s[o-1]:void 0}},68223:(s,o,i)=>{var a=i(56110)(i(9325),\"Map\");s.exports=a},68294:(s,o,i)=>{var a=i(23007),u=i(30361),_=Math.min;s.exports=function reorder(s,o){for(var i=s.length,w=_(o.length,i),x=a(s);w--;){var C=o[w];s[w]=u(C,i)?x[C]:void 0}return s}},68623:(s,o,i)=>{\"use strict\";var a=i(694);s.exports=a},68882:(s,o,i)=>{var a=i(83488),u=i(48152),_=u?function(s,o){return u.set(s,o),s}:a;s.exports=_},68969:(s,o,i)=>{var a=i(47422),u=i(25160);s.exports=function parent(s,o){return o.length<2?s:a(s,u(o,0,-1))}},69302:(s,o,i)=>{var a=i(83488),u=i(56757),_=i(32865);s.exports=function baseRest(s,o){return _(u(s,o,a),s+\"\")}},69884:(s,o,i)=>{var a=i(21791),u=i(37241);s.exports=function toPlainObject(s){return a(s,u(s))}},69982:(s,o,i)=>{\"use strict\";s.exports=i(29844)},70080:(s,o,i)=>{var a=i(26025),u=Array.prototype.splice;s.exports=function listCacheDelete(s){var o=this.__data__,i=a(o,s);return!(i<0)&&(i==o.length-1?o.pop():u.call(o,i,1),--this.size,!0)}},70470:(s,o,i)=>{\"use strict\";var a=i(46028),u=i(25594);s.exports=function(s){var o=a(s,\"string\");return u(o)?o:o+\"\"}},70695:(s,o,i)=>{var a=i(78096),u=i(72428),_=i(56449),w=i(3656),x=i(30361),C=i(37167),j=Object.prototype.hasOwnProperty;s.exports=function arrayLikeKeys(s,o){var i=_(s),L=!i&&u(s),B=!i&&!L&&w(s),$=!i&&!L&&!B&&C(s),V=i||L||B||$,U=V?a(s.length,String):[],z=U.length;for(var Y in s)!o&&!j.call(s,Y)||V&&(\"length\"==Y||B&&(\"offset\"==Y||\"parent\"==Y)||$&&(\"buffer\"==Y||\"byteLength\"==Y||\"byteOffset\"==Y)||x(Y,z))||U.push(Y);return U}},70981:(s,o,i)=>{var a=i(75251),u=i(62060),_=i(32865),w=i(75948);s.exports=function setWrapToString(s,o,i){var x=o+\"\";return _(s,u(x,w(a(x),i)))}},71167:(s,o,i)=>{const a=i(10316);s.exports=class StringElement extends a{constructor(s,o,i){super(s,o,i),this.element=\"string\"}primitive(){return\"string\"}get length(){return this.content.length}}},71340:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(29538);a({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==u},{assign:u})},71961:(s,o,i)=>{var a=i(49653);s.exports=function cloneTypedArray(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.length)}},72428:(s,o,i)=>{var a=i(27534),u=i(40346),_=Object.prototype,w=_.hasOwnProperty,x=_.propertyIsEnumerable,C=a(function(){return arguments}())?a:function(s){return u(s)&&w.call(s,\"callee\")&&!x.call(s,\"callee\")};s.exports=C},72552:(s,o,i)=>{var a=i(51873),u=i(659),_=i(59350),w=a?a.toStringTag:void 0;s.exports=function baseGetTag(s){return null==s?void 0===s?\"[object Undefined]\":\"[object Null]\":w&&w in Object(s)?u(s):_(s)}},72903:(s,o,i)=>{var a=i(23805),u=i(55527),_=i(90181),w=Object.prototype.hasOwnProperty;s.exports=function baseKeysIn(s){if(!a(s))return _(s);var o=u(s),i=[];for(var x in s)(\"constructor\"!=x||!o&&w.call(s,x))&&i.push(x);return i}},72949:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheSet(s,o){var i=a(this,s),u=i.size;return i.set(s,o),this.size+=i.size==u?0:1,this}},73170:(s,o,i)=>{var a=i(16547),u=i(31769),_=i(30361),w=i(23805),x=i(77797);s.exports=function baseSet(s,o,i,C){if(!w(s))return s;for(var j=-1,L=(o=u(o,s)).length,B=L-1,$=s;null!=$&&++j<L;){var V=x(o[j]),U=i;if(\"__proto__\"===V||\"constructor\"===V||\"prototype\"===V)return s;if(j!=B){var z=$[V];void 0===(U=C?C(z,V,$):void 0)&&(U=w(z)?z:_(o[j+1])?[]:{})}a($,V,U),$=$[V]}return s}},73201:s=>{var o=/\\w*$/;s.exports=function cloneRegExp(s){var i=new s.constructor(s.source,o.exec(s));return i.lastIndex=s.lastIndex,i}},73402:s=>{function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function http(s){const o=\"HTTP/(2|1\\\\.[01])\",i={className:\"attribute\",begin:concat(\"^\",/[A-Za-z][A-Za-z0-9-]*/,\"(?=\\\\:\\\\s)\"),starts:{contains:[{className:\"punctuation\",begin:/: /,relevance:0,starts:{end:\"$\",relevance:0}}]}},a=[i,{begin:\"\\\\n\\\\n\",starts:{subLanguage:[],endsWithParent:!0}}];return{name:\"HTTP\",aliases:[\"https\"],illegal:/\\S/,contains:[{begin:\"^(?=\"+o+\" \\\\d{3})\",end:/$/,contains:[{className:\"meta\",begin:o},{className:\"number\",begin:\"\\\\b\\\\d{3}\\\\b\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:a}},{begin:\"(?=^[A-Z]+ (.*?) \"+o+\"$)\",end:/$/,contains:[{className:\"string\",begin:\" \",end:\" \",excludeBegin:!0,excludeEnd:!0},{className:\"meta\",begin:o},{className:\"keyword\",begin:\"[A-Z]+\"}],starts:{end:/\\b\\B/,illegal:/\\S/,contains:a}},s.inherit(i,{relevance:0})]}}},73424:(s,o,i)=>{var a=i(16962),u=i(2874),_=Array.prototype.push;function baseAry(s,o){return 2==o?function(o,i){return s(o,i)}:function(o){return s(o)}}function cloneArray(s){for(var o=s?s.length:0,i=Array(o);o--;)i[o]=s[o];return i}function wrapImmutable(s,o){return function(){var i=arguments.length;if(i){for(var a=Array(i);i--;)a[i]=arguments[i];var u=a[0]=o.apply(void 0,a);return s.apply(void 0,a),u}}}s.exports=function baseConvert(s,o,i,w){var x=\"function\"==typeof o,C=o===Object(o);if(C&&(w=i,i=o,o=void 0),null==i)throw new TypeError;w||(w={});var j=!(\"cap\"in w)||w.cap,L=!(\"curry\"in w)||w.curry,B=!(\"fixed\"in w)||w.fixed,$=!(\"immutable\"in w)||w.immutable,V=!(\"rearg\"in w)||w.rearg,U=x?i:u,z=\"curry\"in w&&w.curry,Y=\"fixed\"in w&&w.fixed,Z=\"rearg\"in w&&w.rearg,ee=x?i.runInContext():void 0,ie=x?i:{ary:s.ary,assign:s.assign,clone:s.clone,curry:s.curry,forEach:s.forEach,isArray:s.isArray,isError:s.isError,isFunction:s.isFunction,isWeakMap:s.isWeakMap,iteratee:s.iteratee,keys:s.keys,rearg:s.rearg,toInteger:s.toInteger,toPath:s.toPath},ae=ie.ary,ce=ie.assign,le=ie.clone,pe=ie.curry,de=ie.forEach,fe=ie.isArray,ye=ie.isError,be=ie.isFunction,_e=ie.isWeakMap,Se=ie.keys,we=ie.rearg,xe=ie.toInteger,Pe=ie.toPath,Te=Se(a.aryMethod),Re={castArray:function(s){return function(){var o=arguments[0];return fe(o)?s(cloneArray(o)):s.apply(void 0,arguments)}},iteratee:function(s){return function(){var o=arguments[1],i=s(arguments[0],o),a=i.length;return j&&\"number\"==typeof o?(o=o>2?o-2:1,a&&a<=o?i:baseAry(i,o)):i}},mixin:function(s){return function(o){var i=this;if(!be(i))return s(i,Object(o));var a=[];return de(Se(o),(function(s){be(o[s])&&a.push([s,i.prototype[s]])})),s(i,Object(o)),de(a,(function(s){var o=s[1];be(o)?i.prototype[s[0]]=o:delete i.prototype[s[0]]})),i}},nthArg:function(s){return function(o){var i=o<0?1:xe(o)+1;return pe(s(o),i)}},rearg:function(s){return function(o,i){var a=i?i.length:0;return pe(s(o,i),a)}},runInContext:function(o){return function(i){return baseConvert(s,o(i),w)}}};function castCap(s,o){if(j){var i=a.iterateeRearg[s];if(i)return function iterateeRearg(s,o){return overArg(s,(function(s){var i=o.length;return function baseArity(s,o){return 2==o?function(o,i){return s.apply(void 0,arguments)}:function(o){return s.apply(void 0,arguments)}}(we(baseAry(s,i),o),i)}))}(o,i);var u=!x&&a.iterateeAry[s];if(u)return function iterateeAry(s,o){return overArg(s,(function(s){return\"function\"==typeof s?baseAry(s,o):s}))}(o,u)}return o}function castFixed(s,o,i){if(B&&(Y||!a.skipFixed[s])){var u=a.methodSpread[s],w=u&&u.start;return void 0===w?ae(o,i):function flatSpread(s,o){return function(){for(var i=arguments.length,a=i-1,u=Array(i);i--;)u[i]=arguments[i];var w=u[o],x=u.slice(0,o);return w&&_.apply(x,w),o!=a&&_.apply(x,u.slice(o+1)),s.apply(this,x)}}(o,w)}return o}function castRearg(s,o,i){return V&&i>1&&(Z||!a.skipRearg[s])?we(o,a.methodRearg[s]||a.aryRearg[i]):o}function cloneByPath(s,o){for(var i=-1,a=(o=Pe(o)).length,u=a-1,_=le(Object(s)),w=_;null!=w&&++i<a;){var x=o[i],C=w[x];null==C||be(C)||ye(C)||_e(C)||(w[x]=le(i==u?C:Object(C))),w=w[x]}return _}function createConverter(s,o){var i=a.aliasToReal[s]||s,u=a.remap[i]||i,_=w;return function(s){var a=x?ee:ie,w=x?ee[u]:o,C=ce(ce({},_),s);return baseConvert(a,i,w,C)}}function overArg(s,o){return function(){var i=arguments.length;if(!i)return s();for(var a=Array(i);i--;)a[i]=arguments[i];var u=V?0:i-1;return a[u]=o(a[u]),s.apply(void 0,a)}}function wrap(s,o,i){var u,_=a.aliasToReal[s]||s,w=o,x=Re[_];return x?w=x(o):$&&(a.mutate.array[_]?w=wrapImmutable(o,cloneArray):a.mutate.object[_]?w=wrapImmutable(o,function createCloner(s){return function(o){return s({},o)}}(o)):a.mutate.set[_]&&(w=wrapImmutable(o,cloneByPath))),de(Te,(function(s){return de(a.aryMethod[s],(function(o){if(_==o){var i=a.methodSpread[_],x=i&&i.afterRearg;return u=x?castFixed(_,castRearg(_,w,s),s):castRearg(_,castFixed(_,w,s),s),u=function castCurry(s,o,i){return z||L&&i>1?pe(o,i):o}(0,u=castCap(_,u),s),!1}})),!u})),u||(u=w),u==o&&(u=z?pe(u,1):function(){return o.apply(this,arguments)}),u.convert=createConverter(_,o),u.placeholder=o.placeholder=i,u}if(!C)return wrap(o,i,U);var $e=i,qe=[];return de(Te,(function(s){de(a.aryMethod[s],(function(s){var o=$e[a.remap[s]||s];o&&qe.push([s,wrap(s,o,$e)])}))})),de(Se($e),(function(s){var o=$e[s];if(\"function\"==typeof o){for(var i=qe.length;i--;)if(qe[i][0]==s)return;o.convert=createConverter(s,o),qe.push([s,o])}})),de(qe,(function(s){$e[s[0]]=s[1]})),$e.convert=function convertLib(s){return $e.runInContext.convert(s)(void 0)},$e.placeholder=$e,de(Se($e),(function(s){de(a.realToAlias[s]||[],(function(o){$e[o]=$e[s]}))})),$e}},73448:(s,o,i)=>{\"use strict\";var a=i(73948),u=i(29367),_=i(87136),w=i(93742),x=i(76264)(\"iterator\");s.exports=function(s){if(!_(s))return u(s,x)||u(s,\"@@iterator\")||w[a(s)]}},73648:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(98828),_=i(49552);s.exports=!a&&!u((function(){return 7!==Object.defineProperty(_(\"div\"),\"a\",{get:function(){return 7}}).a}))},73948:(s,o,i)=>{\"use strict\";var a=i(52623),u=i(62250),_=i(45807),w=i(76264)(\"toStringTag\"),x=Object,C=\"Arguments\"===_(function(){return arguments}());s.exports=a?_:function(s){var o,i,a;return void 0===s?\"Undefined\":null===s?\"Null\":\"string\"==typeof(i=function(s,o){try{return s[o]}catch(s){}}(o=x(s),w))?i:C?_(o):\"Object\"===(a=_(o))&&u(o.callee)?\"Arguments\":a}},73992:(s,o)=>{\"use strict\";var i=Object.prototype.hasOwnProperty;function decode(s){try{return decodeURIComponent(s.replace(/\\+/g,\" \"))}catch(s){return null}}function encode(s){try{return encodeURIComponent(s)}catch(s){return null}}o.stringify=function querystringify(s,o){o=o||\"\";var a,u,_=[];for(u in\"string\"!=typeof o&&(o=\"?\"),s)if(i.call(s,u)){if((a=s[u])||null!=a&&!isNaN(a)||(a=\"\"),u=encode(u),a=encode(a),null===u||null===a)continue;_.push(u+\"=\"+a)}return _.length?o+_.join(\"&\"):\"\"},o.parse=function querystring(s){for(var o,i=/([^=?#&]+)=?([^&]*)/g,a={};o=i.exec(s);){var u=decode(o[1]),_=decode(o[2]);null===u||null===_||u in a||(a[u]=_)}return a}},74218:s=>{s.exports=function isKeyable(s){var o=typeof s;return\"string\"==o||\"number\"==o||\"symbol\"==o||\"boolean\"==o?\"__proto__\"!==s:null===s}},74239:(s,o,i)=>{\"use strict\";var a=i(87136),u=TypeError;s.exports=function(s){if(a(s))throw new u(\"Can't call method on \"+s);return s}},74284:(s,o,i)=>{\"use strict\";var a=i(39447),u=i(73648),_=i(58661),w=i(36624),x=i(70470),C=TypeError,j=Object.defineProperty,L=Object.getOwnPropertyDescriptor,B=\"enumerable\",$=\"configurable\",V=\"writable\";o.f=a?_?function defineProperty(s,o,i){if(w(s),o=x(o),w(i),\"function\"==typeof s&&\"prototype\"===o&&\"value\"in i&&V in i&&!i[V]){var a=L(s,o);a&&a[V]&&(s[o]=i.value,i={configurable:$ in i?i[$]:a[$],enumerable:B in i?i[B]:a[B],writable:!1})}return j(s,o,i)}:j:function defineProperty(s,o,i){if(w(s),o=x(o),w(i),u)try{return j(s,o,i)}catch(s){}if(\"get\"in i||\"set\"in i)throw new C(\"Accessors not supported\");return\"value\"in i&&(s[o]=i.value),s}},74335:s=>{s.exports=function overArg(s,o){return function(i){return s(o(i))}}},74436:(s,o,i)=>{\"use strict\";var a=i(4993),u=i(34849),_=i(20575),createMethod=function(s){return function(o,i,w){var x=a(o),C=_(x);if(0===C)return!s&&-1;var j,L=u(w,C);if(s&&i!=i){for(;C>L;)if((j=x[L++])!=j)return!0}else for(;C>L;L++)if((s||L in x)&&x[L]===i)return s||L||0;return!s&&-1}};s.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},74610:(s,o,i)=>{\"use strict\";s.exports=Transform;var a=i(86048).F,u=a.ERR_METHOD_NOT_IMPLEMENTED,_=a.ERR_MULTIPLE_CALLBACK,w=a.ERR_TRANSFORM_ALREADY_TRANSFORMING,x=a.ERR_TRANSFORM_WITH_LENGTH_0,C=i(25382);function afterTransform(s,o){var i=this._transformState;i.transforming=!1;var a=i.writecb;if(null===a)return this.emit(\"error\",new _);i.writechunk=null,i.writecb=null,null!=o&&this.push(o),a(s);var u=this._readableState;u.reading=!1,(u.needReadable||u.length<u.highWaterMark)&&this._read(u.highWaterMark)}function Transform(s){if(!(this instanceof Transform))return new Transform(s);C.call(this,s),this._transformState={afterTransform:afterTransform.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,s&&(\"function\"==typeof s.transform&&(this._transform=s.transform),\"function\"==typeof s.flush&&(this._flush=s.flush)),this.on(\"prefinish\",prefinish)}function prefinish(){var s=this;\"function\"!=typeof this._flush||this._readableState.destroyed?done(this,null,null):this._flush((function(o,i){done(s,o,i)}))}function done(s,o,i){if(o)return s.emit(\"error\",o);if(null!=i&&s.push(i),s._writableState.length)throw new x;if(s._transformState.transforming)throw new w;return s.push(null)}i(56698)(Transform,C),Transform.prototype.push=function(s,o){return this._transformState.needTransform=!1,C.prototype.push.call(this,s,o)},Transform.prototype._transform=function(s,o,i){i(new u(\"_transform()\"))},Transform.prototype._write=function(s,o,i){var a=this._transformState;if(a.writecb=i,a.writechunk=s,a.writeencoding=o,!a.transforming){var u=this._readableState;(a.needTransform||u.needReadable||u.length<u.highWaterMark)&&this._read(u.highWaterMark)}},Transform.prototype._read=function(s){var o=this._transformState;null===o.writechunk||o.transforming?o.needTransform=!0:(o.transforming=!0,this._transform(o.writechunk,o.writeencoding,o.afterTransform))},Transform.prototype._destroy=function(s,o){C.prototype._destroy.call(this,s,(function(s){o(s)}))}},74733:(s,o,i)=>{var a=i(21791),u=i(95950);s.exports=function baseAssign(s,o){return s&&a(o,u(o),s)}},75147:(s,o,i)=>{const a=i(85105);s.exports=class JSON06Serialiser extends a{serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \\`${s}\\` is not an Element instance`);let o;s._attributes&&s.attributes.get(\"variable\")&&(o=s.attributes.get(\"variable\"));const i={element:s.element};s._meta&&s._meta.length>0&&(i.meta=this.serialiseObject(s.meta));const a=\"enum\"===s.element||-1!==s.attributes.keys().indexOf(\"enumerations\");if(a){const o=this.enumSerialiseAttributes(s);o&&(i.attributes=o)}else if(s._attributes&&s._attributes.length>0){let{attributes:a}=s;a.get(\"metadata\")&&(a=a.clone(),a.set(\"meta\",a.get(\"metadata\")),a.remove(\"metadata\")),\"member\"===s.element&&o&&(a=a.clone(),a.remove(\"variable\")),a.length>0&&(i.attributes=this.serialiseObject(a))}if(a)i.content=this.enumSerialiseContent(s,i);else if(this[`${s.element}SerialiseContent`])i.content=this[`${s.element}SerialiseContent`](s,i);else if(void 0!==s.content){let a;o&&s.content.key?(a=s.content.clone(),a.key.attributes.set(\"variable\",o),a=this.serialiseContent(a)):a=this.serialiseContent(s.content),this.shouldSerialiseContent(s,a)&&(i.content=a)}else this.shouldSerialiseContent(s,s.content)&&s instanceof this.namespace.elements.Array&&(i.content=[]);return i}shouldSerialiseContent(s,o){return\"parseResult\"===s.element||\"httpRequest\"===s.element||\"httpResponse\"===s.element||\"category\"===s.element||\"link\"===s.element||void 0!==o&&(!Array.isArray(o)||0!==o.length)}refSerialiseContent(s,o){return delete o.attributes,{href:s.toValue(),path:s.path.toValue()}}sourceMapSerialiseContent(s){return s.toValue()}dataStructureSerialiseContent(s){return[this.serialiseContent(s.content)]}enumSerialiseAttributes(s){const o=s.attributes.clone(),i=o.remove(\"enumerations\")||new this.namespace.elements.Array([]),a=o.get(\"default\");let u=o.get(\"samples\")||new this.namespace.elements.Array([]);if(a&&a.content&&(a.content.attributes&&a.content.attributes.remove(\"typeAttributes\"),o.set(\"default\",new this.namespace.elements.Array([a.content]))),u.forEach((s=>{s.content&&s.content.element&&s.content.attributes.remove(\"typeAttributes\")})),s.content&&0!==i.length&&u.unshift(s.content),u=u.map((s=>s instanceof this.namespace.elements.Array?[s]:new this.namespace.elements.Array([s.content]))),u.length&&o.set(\"samples\",u),o.length>0)return this.serialiseObject(o)}enumSerialiseContent(s){if(s._attributes){const o=s.attributes.get(\"enumerations\");if(o&&o.length>0)return o.content.map((s=>{const o=s.clone();return o.attributes.remove(\"typeAttributes\"),this.serialise(o)}))}if(s.content){const o=s.content.clone();return o.attributes.remove(\"typeAttributes\"),[this.serialise(o)]}return[]}deserialise(s){if(\"string\"==typeof s)return new this.namespace.elements.String(s);if(\"number\"==typeof s)return new this.namespace.elements.Number(s);if(\"boolean\"==typeof s)return new this.namespace.elements.Boolean(s);if(null===s)return new this.namespace.elements.Null;if(Array.isArray(s))return new this.namespace.elements.Array(s.map(this.deserialise,this));const o=this.namespace.getElementClass(s.element),i=new o;i.element!==s.element&&(i.element=s.element),s.meta&&this.deserialiseObject(s.meta,i.meta),s.attributes&&this.deserialiseObject(s.attributes,i.attributes);const a=this.deserialiseContent(s.content);if(void 0===a&&null!==i.content||(i.content=a),\"enum\"===i.element){i.content&&i.attributes.set(\"enumerations\",i.content);let s=i.attributes.get(\"samples\");if(i.attributes.remove(\"samples\"),s){const a=s;s=new this.namespace.elements.Array,a.forEach((a=>{a.forEach((a=>{const u=new o(a);u.element=i.element,s.push(u)}))}));const u=s.shift();i.content=u?u.content:void 0,i.attributes.set(\"samples\",s)}else i.content=void 0;let a=i.attributes.get(\"default\");if(a&&a.length>0){a=a.get(0);const s=new o(a);s.element=i.element,i.attributes.set(\"default\",s)}}else if(\"dataStructure\"===i.element&&Array.isArray(i.content))[i.content]=i.content;else if(\"category\"===i.element){const s=i.attributes.get(\"meta\");s&&(i.attributes.set(\"metadata\",s),i.attributes.remove(\"meta\"))}else\"member\"===i.element&&i.key&&i.key._attributes&&i.key._attributes.getValue(\"variable\")&&(i.attributes.set(\"variable\",i.key.attributes.get(\"variable\")),i.key.attributes.remove(\"variable\"));return i}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}return s&&s.map?s.map(this.serialise,this):s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}shouldRefract(s){return!!(s._attributes&&s.attributes.keys().length||s._meta&&s.meta.keys().length)||\"enum\"!==s.element&&(s.element!==s.primitive()||\"member\"===s.element)}convertKeyToRefract(s,o){return this.shouldRefract(o)?this.serialise(o):\"enum\"===o.element?this.serialiseEnum(o):\"array\"===o.element?o.map((o=>this.shouldRefract(o)||\"default\"===s?this.serialise(o):\"array\"===o.element||\"object\"===o.element||\"enum\"===o.element?o.children.map((s=>this.serialise(s))):o.toValue())):\"object\"===o.element?(o.content||[]).map(this.serialise,this):o.toValue()}serialiseEnum(s){return s.children.map((s=>this.serialise(s)))}serialiseObject(s){const o={};return s.forEach(((s,i)=>{if(s){const a=i.toValue();o[a]=this.convertKeyToRefract(a,s)}})),o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},75208:s=>{\"use strict\";var o,i=\"\";s.exports=function repeat(s,a){if(\"string\"!=typeof s)throw new TypeError(\"expected a string\");if(1===a)return s;if(2===a)return s+s;var u=s.length*a;if(o!==s||void 0===o)o=s,i=\"\";else if(i.length>=u)return i.substr(0,u);for(;u>i.length&&a>1;)1&a&&(i+=s),a>>=1,s+=s;return i=(i+=s).substr(0,u)}},75251:s=>{var o=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,i=/,? & /;s.exports=function getWrapDetails(s){var a=s.match(o);return a?a[1].split(i):[]}},75288:s=>{s.exports=function eq(s,o){return s===o||s!=s&&o!=o}},75817:s=>{\"use strict\";s.exports=function(s,o){return{enumerable:!(1&s),configurable:!(2&s),writable:!(4&s),value:o}}},75896:(s,o,i)=>{\"use strict\";var a=i(65606);function emitErrorAndCloseNT(s,o){emitErrorNT(s,o),emitCloseNT(s)}function emitCloseNT(s){s._writableState&&!s._writableState.emitClose||s._readableState&&!s._readableState.emitClose||s.emit(\"close\")}function emitErrorNT(s,o){s.emit(\"error\",o)}s.exports={destroy:function destroy(s,o){var i=this,u=this._readableState&&this._readableState.destroyed,_=this._writableState&&this._writableState.destroyed;return u||_?(o?o(s):s&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,a.nextTick(emitErrorNT,this,s)):a.nextTick(emitErrorNT,this,s)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(s||null,(function(s){!o&&s?i._writableState?i._writableState.errorEmitted?a.nextTick(emitCloseNT,i):(i._writableState.errorEmitted=!0,a.nextTick(emitErrorAndCloseNT,i,s)):a.nextTick(emitErrorAndCloseNT,i,s):o?(a.nextTick(emitCloseNT,i),o(s)):a.nextTick(emitCloseNT,i)})),this)},undestroy:function undestroy(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function errorOrDestroy(s,o){var i=s._readableState,a=s._writableState;i&&i.autoDestroy||a&&a.autoDestroy?s.destroy(o):s.emit(\"error\",o)}}},75948:(s,o,i)=>{var a=i(83729),u=i(15325),_=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]];s.exports=function updateWrapDetails(s,o){return a(_,(function(i){var a=\"_.\"+i[0];o&i[1]&&!u(s,a)&&s.push(a)})),s.sort()}},76024:(s,o,i)=>{\"use strict\";var a=i(41505),u=Function.prototype,_=u.apply,w=u.call;s.exports=\"object\"==typeof Reflect&&Reflect.apply||(a?w.bind(_):function(){return w.apply(_,arguments)})},76169:(s,o,i)=>{var a=i(49653);s.exports=function cloneDataView(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.byteLength)}},76189:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function initCloneArray(s){var i=s.length,a=new s.constructor(i);return i&&\"string\"==typeof s[0]&&o.call(s,\"index\")&&(a.index=s.index,a.input=s.input),a}},76264:(s,o,i)=>{\"use strict\";var a=i(45951),u=i(85816),_=i(49724),w=i(6499),x=i(19846),C=i(51175),j=a.Symbol,L=u(\"wks\"),B=C?j.for||j:j&&j.withoutSetter||w;s.exports=function(s){return _(L,s)||(L[s]=x&&_(j,s)?j[s]:B(\"Symbol.\"+s)),L[s]}},76545:(s,o,i)=>{var a=i(56110)(i(9325),\"Set\");s.exports=a},76959:s=>{s.exports=function strictIndexOf(s,o,i){for(var a=i-1,u=s.length;++a<u;)if(s[a]===o)return a;return-1}},77078:(s,o,i)=>{var a=i(91033),u=i(82819),_=i(37471),w=i(18073),x=i(11287),C=i(36306),j=i(9325);s.exports=function createCurry(s,o,i){var L=u(s);return function wrapper(){for(var u=arguments.length,B=Array(u),$=u,V=x(wrapper);$--;)B[$]=arguments[$];var U=u<3&&B[0]!==V&&B[u-1]!==V?[]:C(B,V);return(u-=U.length)<i?w(s,o,_,wrapper.placeholder,void 0,B,U,void 0,void 0,i-u):a(this&&this!==j&&this instanceof wrapper?L:s,this,B)}}},77199:(s,o,i)=>{var a=i(49653),u=i(76169),_=i(73201),w=i(93736),x=i(71961);s.exports=function initCloneByTag(s,o,i){var C=s.constructor;switch(o){case\"[object ArrayBuffer]\":return a(s);case\"[object Boolean]\":case\"[object Date]\":return new C(+s);case\"[object DataView]\":return u(s,i);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return x(s,i);case\"[object Map]\":case\"[object Set]\":return new C;case\"[object Number]\":case\"[object String]\":return new C(s);case\"[object RegExp]\":return _(s);case\"[object Symbol]\":return w(s)}}},77556:(s,o,i)=>{var a=i(51873),u=i(34932),_=i(56449),w=i(44394),x=a?a.prototype:void 0,C=x?x.toString:void 0;s.exports=function baseToString(s){if(\"string\"==typeof s)return s;if(_(s))return u(s,baseToString)+\"\";if(w(s))return C?C.call(s):\"\";var o=s+\"\";return\"0\"==o&&1/s==-1/0?\"-0\":o}},77731:(s,o,i)=>{var a=i(79920)(\"set\",i(63560));a.placeholder=i(2874),s.exports=a},77797:(s,o,i)=>{var a=i(44394);s.exports=function toKey(s){if(\"string\"==typeof s||a(s))return s;var o=s+\"\";return\"0\"==o&&1/s==-1/0?\"-0\":o}},78004:s=>{\"use strict\";class SubRange{constructor(s,o){this.low=s,this.high=o,this.length=1+o-s}overlaps(s){return!(this.high<s.low||this.low>s.high)}touches(s){return!(this.high+1<s.low||this.low-1>s.high)}add(s){return new SubRange(Math.min(this.low,s.low),Math.max(this.high,s.high))}subtract(s){return s.low<=this.low&&s.high>=this.high?[]:s.low>this.low&&s.high<this.high?[new SubRange(this.low,s.low-1),new SubRange(s.high+1,this.high)]:s.low<=this.low?[new SubRange(s.high+1,this.high)]:[new SubRange(this.low,s.low-1)]}toString(){return this.low==this.high?this.low.toString():this.low+\"-\"+this.high}}class DRange{constructor(s,o){this.ranges=[],this.length=0,null!=s&&this.add(s,o)}_update_length(){this.length=this.ranges.reduce(((s,o)=>s+o.length),0)}add(s,o){var _add=s=>{for(var o=0;o<this.ranges.length&&!s.touches(this.ranges[o]);)o++;for(var i=this.ranges.slice(0,o);o<this.ranges.length&&s.touches(this.ranges[o]);)s=s.add(this.ranges[o]),o++;i.push(s),this.ranges=i.concat(this.ranges.slice(o)),this._update_length()};return s instanceof DRange?s.ranges.forEach(_add):(null==o&&(o=s),_add(new SubRange(s,o))),this}subtract(s,o){var _subtract=s=>{for(var o=0;o<this.ranges.length&&!s.overlaps(this.ranges[o]);)o++;for(var i=this.ranges.slice(0,o);o<this.ranges.length&&s.overlaps(this.ranges[o]);)i=i.concat(this.ranges[o].subtract(s)),o++;this.ranges=i.concat(this.ranges.slice(o)),this._update_length()};return s instanceof DRange?s.ranges.forEach(_subtract):(null==o&&(o=s),_subtract(new SubRange(s,o))),this}intersect(s,o){var i=[],_intersect=s=>{for(var o=0;o<this.ranges.length&&!s.overlaps(this.ranges[o]);)o++;for(;o<this.ranges.length&&s.overlaps(this.ranges[o]);){var a=Math.max(this.ranges[o].low,s.low),u=Math.min(this.ranges[o].high,s.high);i.push(new SubRange(a,u)),o++}};return s instanceof DRange?s.ranges.forEach(_intersect):(null==o&&(o=s),_intersect(new SubRange(s,o))),this.ranges=i,this._update_length(),this}index(s){for(var o=0;o<this.ranges.length&&this.ranges[o].length<=s;)s-=this.ranges[o].length,o++;return this.ranges[o].low+s}toString(){return\"[ \"+this.ranges.join(\", \")+\" ]\"}clone(){return new DRange(this)}numbers(){return this.ranges.reduce(((s,o)=>{for(var i=o.low;i<=o.high;)s.push(i),i++;return s}),[])}subranges(){return this.ranges.map((s=>({low:s.low,high:s.high,length:1+s.high-s.low})))}}s.exports=DRange},78096:s=>{s.exports=function baseTimes(s,o){for(var i=-1,a=Array(s);++i<s;)a[i]=o(i);return a}},78418:(s,o,i)=>{\"use strict\";i(85160)},79192:(s,o,i)=>{\"use strict\";var a=i(51871),u=i(46285),_=i(74239),w=i(10043);s.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var s,o=!1,i={};try{(s=a(Object.prototype,\"__proto__\",\"set\"))(i,[]),o=i instanceof Array}catch(s){}return function setPrototypeOf(i,a){return _(i),w(a),u(i)?(o?s(i,a):i.__proto__=a,i):i}}():void 0)},79307:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(44673);a({target:\"Function\",proto:!0,forced:Function.bind!==u},{bind:u})},79770:s=>{s.exports=function arrayFilter(s,o){for(var i=-1,a=null==s?0:s.length,u=0,_=[];++i<a;){var w=s[i];o(w,i,s)&&(_[u++]=w)}return _}},79838:()=>{},79920:(s,o,i)=>{var a=i(73424),u=i(47934);s.exports=function convert(s,o,i){return a(u,s,o,i)}},80079:(s,o,i)=>{var a=i(63702),u=i(70080),_=i(24739),w=i(48655),x=i(31175);function ListCache(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o<i;){var a=s[o];this.set(a[0],a[1])}}ListCache.prototype.clear=a,ListCache.prototype.delete=u,ListCache.prototype.get=_,ListCache.prototype.has=w,ListCache.prototype.set=x,s.exports=ListCache},80218:(s,o,i)=>{var a=i(13222);s.exports=function toLower(s){return a(s).toLowerCase()}},80257:(s,o,i)=>{var a=i(30980),u=i(56017),_=i(23007);s.exports=function wrapperClone(s){if(s instanceof a)return s.clone();var o=new u(s.__wrapped__,s.__chain__);return o.__actions__=_(s.__actions__),o.__index__=s.__index__,o.__values__=s.__values__,o}},80345:(s,o,i)=>{\"use strict\";function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _defineProperty(s,o,i){return(o=_toPropertyKey(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,_toPropertyKey(a.key),a)}}function _toPropertyKey(s){var o=function _toPrimitive(s,o){if(\"object\"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof a)return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof o?o:String(o)}var a=i(48287).Buffer,u=i(15340).inspect,_=u&&u.custom||\"inspect\";s.exports=function(){function BufferList(){!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,BufferList),this.head=null,this.tail=null,this.length=0}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(BufferList,[{key:\"push\",value:function push(s){var o={data:s,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:\"unshift\",value:function unshift(s){var o={data:s,next:this.head};0===this.length&&(this.tail=o),this.head=o,++this.length}},{key:\"shift\",value:function shift(){if(0!==this.length){var s=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,s}}},{key:\"clear\",value:function clear(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function join(s){if(0===this.length)return\"\";for(var o=this.head,i=\"\"+o.data;o=o.next;)i+=s+o.data;return i}},{key:\"concat\",value:function concat(s){if(0===this.length)return a.alloc(0);for(var o,i,u,_=a.allocUnsafe(s>>>0),w=this.head,x=0;w;)o=w.data,i=_,u=x,a.prototype.copy.call(o,i,u),x+=w.data.length,w=w.next;return _}},{key:\"consume\",value:function consume(s,o){var i;return s<this.head.data.length?(i=this.head.data.slice(0,s),this.head.data=this.head.data.slice(s)):i=s===this.head.data.length?this.shift():o?this._getString(s):this._getBuffer(s),i}},{key:\"first\",value:function first(){return this.head.data}},{key:\"_getString\",value:function _getString(s){var o=this.head,i=1,a=o.data;for(s-=a.length;o=o.next;){var u=o.data,_=s>u.length?u.length:s;if(_===u.length?a+=u:a+=u.slice(0,s),0===(s-=_)){_===u.length?(++i,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(_));break}++i}return this.length-=i,a}},{key:\"_getBuffer\",value:function _getBuffer(s){var o=a.allocUnsafe(s),i=this.head,u=1;for(i.data.copy(o),s-=i.data.length;i=i.next;){var _=i.data,w=s>_.length?_.length:s;if(_.copy(o,o.length-s,0,w),0===(s-=w)){w===_.length?(++u,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=_.slice(w));break}++u}return this.length-=u,o}},{key:_,value:function value(s,o){return u(this,_objectSpread(_objectSpread({},o),{},{depth:0,customInspect:!1}))}}]),BufferList}()},80376:s=>{\"use strict\";s.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},80631:(s,o,i)=>{var a=i(28077),u=i(49326);s.exports=function hasIn(s,o){return null!=s&&u(s,o,a)}},80909:(s,o,i)=>{var a=i(30641),u=i(38329)(a);s.exports=u},80945:(s,o,i)=>{var a=i(80079),u=i(68223),_=i(53661);s.exports=function stackSet(s,o){var i=this.__data__;if(i instanceof a){var w=i.__data__;if(!u||w.length<199)return w.push([s,o]),this.size=++i.size,this;i=this.__data__=new _(w)}return i.set(s,o),this.size=i.size,this}},81042:(s,o,i)=>{var a=i(56110)(Object,\"create\");s.exports=a},81214:(s,o,i)=>{\"use strict\";function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}Object.defineProperty(o,\"__esModule\",{value:!0}),o.DebounceInput=void 0;var a=_interopRequireDefault(i(96540)),u=_interopRequireDefault(i(20181)),_=[\"element\",\"onChange\",\"value\",\"minLength\",\"debounceTimeout\",\"forceNotifyByEnter\",\"forceNotifyOnBlur\",\"onKeyDown\",\"onBlur\",\"inputRef\"];function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i,a,u={},_=Object.keys(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(Object(i),!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _createSuper(s){var o=function _isNativeReflectConstruct(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(s){return!1}}();return function _createSuperInternal(){var i,a=_getPrototypeOf(s);if(o){var u=_getPrototypeOf(this).constructor;i=Reflect.construct(a,arguments,u)}else i=a.apply(this,arguments);return function _possibleConstructorReturn(s,o){if(o&&(\"object\"===_typeof(o)||\"function\"==typeof o))return o;if(void 0!==o)throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(s)}(this,i)}}function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var w=function(s){!function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),Object.defineProperty(s,\"prototype\",{writable:!1}),o&&_setPrototypeOf(s,o)}(DebounceInput,s);var o=_createSuper(DebounceInput);function DebounceInput(s){var i;!function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,DebounceInput),_defineProperty(_assertThisInitialized(i=o.call(this,s)),\"onChange\",(function(s){s.persist();var o=i.state.value,a=i.props.minLength;i.setState({value:s.target.value},(function(){var u=i.state.value;u.length>=a?i.notify(s):o.length>u.length&&i.notify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:\"\"})}))}))})),_defineProperty(_assertThisInitialized(i),\"onKeyDown\",(function(s){\"Enter\"===s.key&&i.forceNotify(s);var o=i.props.onKeyDown;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),\"onBlur\",(function(s){i.forceNotify(s);var o=i.props.onBlur;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),\"createNotifier\",(function(s){if(s<0)i.notify=function(){return null};else if(0===s)i.notify=i.doNotify;else{var o=(0,u.default)((function(s){i.isDebouncing=!1,i.doNotify(s)}),s);i.notify=function(s){i.isDebouncing=!0,o(s)},i.flush=function(){return o.flush()},i.cancel=function(){i.isDebouncing=!1,o.cancel()}}})),_defineProperty(_assertThisInitialized(i),\"doNotify\",(function(){i.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(i),\"forceNotify\",(function(s){var o=i.props.debounceTimeout;if(i.isDebouncing||!(o>0)){i.cancel&&i.cancel();var a=i.state.value,u=i.props.minLength;a.length>=u?i.doNotify(s):i.doNotify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:a})}))}})),i.isDebouncing=!1,i.state={value:void 0===s.value||null===s.value?\"\":s.value};var a=i.props.debounceTimeout;return i.createNotifier(a),i}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,\"prototype\",{writable:!1}),s}(DebounceInput,[{key:\"componentDidUpdate\",value:function componentDidUpdate(s){if(!this.isDebouncing){var o=this.props,i=o.value,a=o.debounceTimeout,u=s.debounceTimeout,_=s.value,w=this.state.value;void 0!==i&&_!==i&&w!==i&&this.setState({value:i}),a!==u&&this.createNotifier(a)}}},{key:\"componentWillUnmount\",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:\"render\",value:function render(){var s,o,i=this.props,u=i.element,w=(i.onChange,i.value,i.minLength,i.debounceTimeout,i.forceNotifyByEnter),x=i.forceNotifyOnBlur,C=i.onKeyDown,j=i.onBlur,L=i.inputRef,B=_objectWithoutProperties(i,_),$=this.state.value;s=w?{onKeyDown:this.onKeyDown}:C?{onKeyDown:C}:{},o=x?{onBlur:this.onBlur}:j?{onBlur:j}:{};var V=L?{ref:L}:{};return a.default.createElement(u,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},B),{},{onChange:this.onChange,value:$},s),o),V))}}]),DebounceInput}(a.default.PureComponent);o.DebounceInput=w,_defineProperty(w,\"defaultProps\",{element:\"input\",type:\"text\",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},81919:(s,o,i)=>{\"use strict\";var a=i(48287).Buffer;function isSpecificValue(s){return s instanceof a||s instanceof Date||s instanceof RegExp}function cloneSpecificValue(s){if(s instanceof a){var o=a.alloc?a.alloc(s.length):new a(s.length);return s.copy(o),o}if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s);throw new Error(\"Unexpected situation\")}function deepCloneArray(s){var o=[];return s.forEach((function(s,i){\"object\"==typeof s&&null!==s?Array.isArray(s)?o[i]=deepCloneArray(s):isSpecificValue(s)?o[i]=cloneSpecificValue(s):o[i]=u({},s):o[i]=s})),o}function safeGetProperty(s,o){return\"__proto__\"===o?void 0:s[o]}var u=s.exports=function(){if(arguments.length<1||\"object\"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var s,o,i=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(a){\"object\"!=typeof a||null===a||Array.isArray(a)||Object.keys(a).forEach((function(_){return o=safeGetProperty(i,_),(s=safeGetProperty(a,_))===i?void 0:\"object\"!=typeof s||null===s?void(i[_]=s):Array.isArray(s)?void(i[_]=deepCloneArray(s)):isSpecificValue(s)?void(i[_]=cloneSpecificValue(s)):\"object\"!=typeof o||null===o||Array.isArray(o)?void(i[_]=u({},s)):void(i[_]=u(o,s))}))})),i}},82048:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(88280),_=i(15972),w=i(79192),x=i(19595),C=i(58075),j=i(61626),L=i(75817),B=i(39259),$=i(85884),V=i(24823),U=i(32096),z=i(76264)(\"toStringTag\"),Y=Error,Z=[].push,ee=function AggregateError(s,o){var i,a=u(ie,this);w?i=w(new Y,a?_(this):ie):(i=a?this:C(ie),j(i,z,\"Error\")),void 0!==o&&j(i,\"message\",U(o)),$(i,ee,i.stack,1),arguments.length>2&&B(i,arguments[2]);var x=[];return V(s,Z,{that:x}),j(i,\"errors\",x),i};w?w(ee,Y):x(ee,Y,{name:!0});var ie=ee.prototype=C(Y.prototype,{constructor:L(1,ee),message:L(1,\"\"),name:L(1,\"AggregateError\")});a({global:!0,constructor:!0,arity:2},{AggregateError:ee})},82159:(s,o,i)=>{\"use strict\";var a=i(62250),u=i(4640),_=TypeError;s.exports=function(s){if(a(s))return s;throw new _(u(s)+\" is not a function\")}},82199:(s,o,i)=>{var a=i(14528),u=i(56449);s.exports=function baseGetAllKeys(s,o,i){var _=o(s);return u(s)?_:a(_,i(s))}},82261:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var a=_interopRequireDefault(i(9404)),u=_interopRequireDefault(i(48590));function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}o.default=function(s,o,i){var _=Object.keys(o);if(!_.length)return\"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";var w=(0,u.default)(i);if(a.default.isImmutable?!a.default.isImmutable(s):!a.default.Iterable.isIterable(s))return\"The \"+w+' is of unexpected type. Expected argument to be an instance of Immutable.Collection or Immutable.Record with the following properties: \"'+_.join('\", \"')+'\".';var x=s.toSeq().keySeq().toArray().filter((function(s){return!o.hasOwnProperty(s)}));return x.length>0?\"Unexpected \"+(1===x.length?\"property\":\"properties\")+' \"'+x.join('\", \"')+'\" found in '+w+'. Expected to find one of the known reducer property names instead: \"'+_.join('\", \"')+'\". Unexpected properties will be ignored.':null},s.exports=o.default},82819:(s,o,i)=>{var a=i(39344),u=i(23805);s.exports=function createCtor(s){return function(){var o=arguments;switch(o.length){case 0:return new s;case 1:return new s(o[0]);case 2:return new s(o[0],o[1]);case 3:return new s(o[0],o[1],o[2]);case 4:return new s(o[0],o[1],o[2],o[3]);case 5:return new s(o[0],o[1],o[2],o[3],o[4]);case 6:return new s(o[0],o[1],o[2],o[3],o[4],o[5]);case 7:return new s(o[0],o[1],o[2],o[3],o[4],o[5],o[6])}var i=a(s.prototype),_=s.apply(i,o);return u(_)?_:i}}},82890:(s,o,i)=>{var a=i(56698),u=i(90392),_=i(92861).Buffer,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],x=new Array(160);function Sha512(){this.init(),this._w=x,u.call(this,128,112)}function Ch(s,o,i){return i^s&(o^i)}function maj(s,o,i){return s&o|i&(s|o)}function sigma0(s,o){return(s>>>28|o<<4)^(o>>>2|s<<30)^(o>>>7|s<<25)}function sigma1(s,o){return(s>>>14|o<<18)^(s>>>18|o<<14)^(o>>>9|s<<23)}function Gamma0(s,o){return(s>>>1|o<<31)^(s>>>8|o<<24)^s>>>7}function Gamma0l(s,o){return(s>>>1|o<<31)^(s>>>8|o<<24)^(s>>>7|o<<25)}function Gamma1(s,o){return(s>>>19|o<<13)^(o>>>29|s<<3)^s>>>6}function Gamma1l(s,o){return(s>>>19|o<<13)^(o>>>29|s<<3)^(s>>>6|o<<26)}function getCarry(s,o){return s>>>0<o>>>0?1:0}a(Sha512,u),Sha512.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},Sha512.prototype._update=function(s){for(var o=this._w,i=0|this._ah,a=0|this._bh,u=0|this._ch,_=0|this._dh,x=0|this._eh,C=0|this._fh,j=0|this._gh,L=0|this._hh,B=0|this._al,$=0|this._bl,V=0|this._cl,U=0|this._dl,z=0|this._el,Y=0|this._fl,Z=0|this._gl,ee=0|this._hl,ie=0;ie<32;ie+=2)o[ie]=s.readInt32BE(4*ie),o[ie+1]=s.readInt32BE(4*ie+4);for(;ie<160;ie+=2){var ae=o[ie-30],ce=o[ie-30+1],le=Gamma0(ae,ce),pe=Gamma0l(ce,ae),de=Gamma1(ae=o[ie-4],ce=o[ie-4+1]),fe=Gamma1l(ce,ae),ye=o[ie-14],be=o[ie-14+1],_e=o[ie-32],Se=o[ie-32+1],we=pe+be|0,xe=le+ye+getCarry(we,pe)|0;xe=(xe=xe+de+getCarry(we=we+fe|0,fe)|0)+_e+getCarry(we=we+Se|0,Se)|0,o[ie]=xe,o[ie+1]=we}for(var Pe=0;Pe<160;Pe+=2){xe=o[Pe],we=o[Pe+1];var Te=maj(i,a,u),Re=maj(B,$,V),$e=sigma0(i,B),qe=sigma0(B,i),ze=sigma1(x,z),We=sigma1(z,x),He=w[Pe],Ye=w[Pe+1],Xe=Ch(x,C,j),Qe=Ch(z,Y,Z),et=ee+We|0,tt=L+ze+getCarry(et,ee)|0;tt=(tt=(tt=tt+Xe+getCarry(et=et+Qe|0,Qe)|0)+He+getCarry(et=et+Ye|0,Ye)|0)+xe+getCarry(et=et+we|0,we)|0;var rt=qe+Re|0,nt=$e+Te+getCarry(rt,qe)|0;L=j,ee=Z,j=C,Z=Y,C=x,Y=z,x=_+tt+getCarry(z=U+et|0,U)|0,_=u,U=V,u=a,V=$,a=i,$=B,i=tt+nt+getCarry(B=et+rt|0,et)|0}this._al=this._al+B|0,this._bl=this._bl+$|0,this._cl=this._cl+V|0,this._dl=this._dl+U|0,this._el=this._el+z|0,this._fl=this._fl+Y|0,this._gl=this._gl+Z|0,this._hl=this._hl+ee|0,this._ah=this._ah+i+getCarry(this._al,B)|0,this._bh=this._bh+a+getCarry(this._bl,$)|0,this._ch=this._ch+u+getCarry(this._cl,V)|0,this._dh=this._dh+_+getCarry(this._dl,U)|0,this._eh=this._eh+x+getCarry(this._el,z)|0,this._fh=this._fh+C+getCarry(this._fl,Y)|0,this._gh=this._gh+j+getCarry(this._gl,Z)|0,this._hh=this._hh+L+getCarry(this._hl,ee)|0},Sha512.prototype._hash=function(){var s=_.allocUnsafe(64);function writeInt64BE(o,i,a){s.writeInt32BE(o,a),s.writeInt32BE(i,a+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),writeInt64BE(this._gh,this._gl,48),writeInt64BE(this._hh,this._hl,56),s},s.exports=Sha512},83120:(s,o,i)=>{var a=i(14528),u=i(45891);s.exports=function baseFlatten(s,o,i,_,w){var x=-1,C=s.length;for(i||(i=u),w||(w=[]);++x<C;){var j=s[x];o>0&&i(j)?o>1?baseFlatten(j,o-1,i,_,w):a(w,j):_||(w[w.length]=j)}return w}},83141:(s,o,i)=>{\"use strict\";var a=i(92861).Buffer,u=a.isEncoding||function(s){switch((s=\"\"+s)&&s.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function StringDecoder(s){var o;switch(this.encoding=function normalizeEncoding(s){var o=function _normalizeEncoding(s){if(!s)return\"utf8\";for(var o;;)switch(s){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return s;default:if(o)return;s=(\"\"+s).toLowerCase(),o=!0}}(s);if(\"string\"!=typeof o&&(a.isEncoding===u||!u(s)))throw new Error(\"Unknown encoding: \"+s);return o||s}(s),this.encoding){case\"utf16le\":this.text=utf16Text,this.end=utf16End,o=4;break;case\"utf8\":this.fillLast=utf8FillLast,o=4;break;case\"base64\":this.text=base64Text,this.end=base64End,o=3;break;default:return this.write=simpleWrite,void(this.end=simpleEnd)}this.lastNeed=0,this.lastTotal=0,this.lastChar=a.allocUnsafe(o)}function utf8CheckByte(s){return s<=127?0:s>>5==6?2:s>>4==14?3:s>>3==30?4:s>>6==2?-1:-2}function utf8FillLast(s){var o=this.lastTotal-this.lastNeed,i=function utf8CheckExtraBytes(s,o,i){if(128!=(192&o[0]))return s.lastNeed=0,\"�\";if(s.lastNeed>1&&o.length>1){if(128!=(192&o[1]))return s.lastNeed=1,\"�\";if(s.lastNeed>2&&o.length>2&&128!=(192&o[2]))return s.lastNeed=2,\"�\"}}(this,s);return void 0!==i?i:this.lastNeed<=s.length?(s.copy(this.lastChar,o,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(s.copy(this.lastChar,o,0,s.length),void(this.lastNeed-=s.length))}function utf16Text(s,o){if((s.length-o)%2==0){var i=s.toString(\"utf16le\",o);if(i){var a=i.charCodeAt(i.length-1);if(a>=55296&&a<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=s[s.length-2],this.lastChar[1]=s[s.length-1],i.slice(0,-1)}return i}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=s[s.length-1],s.toString(\"utf16le\",o,s.length-1)}function utf16End(s){var o=s&&s.length?this.write(s):\"\";if(this.lastNeed){var i=this.lastTotal-this.lastNeed;return o+this.lastChar.toString(\"utf16le\",0,i)}return o}function base64Text(s,o){var i=(s.length-o)%3;return 0===i?s.toString(\"base64\",o):(this.lastNeed=3-i,this.lastTotal=3,1===i?this.lastChar[0]=s[s.length-1]:(this.lastChar[0]=s[s.length-2],this.lastChar[1]=s[s.length-1]),s.toString(\"base64\",o,s.length-i))}function base64End(s){var o=s&&s.length?this.write(s):\"\";return this.lastNeed?o+this.lastChar.toString(\"base64\",0,3-this.lastNeed):o}function simpleWrite(s){return s.toString(this.encoding)}function simpleEnd(s){return s&&s.length?this.write(s):\"\"}o.I=StringDecoder,StringDecoder.prototype.write=function(s){if(0===s.length)return\"\";var o,i;if(this.lastNeed){if(void 0===(o=this.fillLast(s)))return\"\";i=this.lastNeed,this.lastNeed=0}else i=0;return i<s.length?o?o+this.text(s,i):this.text(s,i):o||\"\"},StringDecoder.prototype.end=function utf8End(s){var o=s&&s.length?this.write(s):\"\";return this.lastNeed?o+\"�\":o},StringDecoder.prototype.text=function utf8Text(s,o){var i=function utf8CheckIncomplete(s,o,i){var a=o.length-1;if(a<i)return 0;var u=utf8CheckByte(o[a]);if(u>=0)return u>0&&(s.lastNeed=u-1),u;if(--a<i||-2===u)return 0;if(u=utf8CheckByte(o[a]),u>=0)return u>0&&(s.lastNeed=u-2),u;if(--a<i||-2===u)return 0;if(u=utf8CheckByte(o[a]),u>=0)return u>0&&(2===u?u=0:s.lastNeed=u-3),u;return 0}(this,s,o);if(!this.lastNeed)return s.toString(\"utf8\",o);this.lastTotal=i;var a=s.length-(i-this.lastNeed);return s.copy(this.lastChar,0,a),s.toString(\"utf8\",o,a)},StringDecoder.prototype.fillLast=function(s){if(this.lastNeed<=s.length)return s.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);s.copy(this.lastChar,this.lastTotal-this.lastNeed,0,s.length),this.lastNeed-=s.length}},83221:s=>{s.exports=function createBaseFor(s){return function(o,i,a){for(var u=-1,_=Object(o),w=a(o),x=w.length;x--;){var C=w[s?x:++u];if(!1===i(_[C],C,_))break}return o}}},83349:(s,o,i)=>{var a=i(82199),u=i(86375),_=i(37241);s.exports=function getAllKeysIn(s){return a(s,_,u)}},83488:s=>{s.exports=function identity(s){return s}},83693:(s,o,i)=>{var a=i(64894),u=i(40346);s.exports=function isArrayLikeObject(s){return u(s)&&a(s)}},83729:s=>{s.exports=function arrayEach(s,o){for(var i=-1,a=null==s?0:s.length;++i<a&&!1!==o(s[i],i,s););return s}},84058:(s,o,i)=>{var a=i(14792),u=i(45539)((function(s,o,i){return o=o.toLowerCase(),s+(i?a(o):o)}));s.exports=u},84195:(s,o,i)=>{var a=i(66977),u=i(38816),_=u((function(s,o){return a(s,256,void 0,void 0,void 0,o)}));s.exports=_},84247:s=>{s.exports=function setToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s){i[++o]=s})),i}},84629:s=>{s.exports={}},84851:(s,o,i)=>{\"use strict\";s.exports=i(85401)},84977:(s,o,i)=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var a=function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}(i(9404)),u=i(55674);o.default=function(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.default.Map,i=Object.keys(s);return function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o(),_=arguments[1];return a.withMutations((function(o){i.forEach((function(i){var a=(0,s[i])(o.get(i),_);(0,u.validateNextState)(a,i,_),o.set(i,a)}))}))}},s.exports=o.default},85015:(s,o,i)=>{var a=i(72552),u=i(56449),_=i(40346);s.exports=function isString(s){return\"string\"==typeof s||!u(s)&&_(s)&&\"[object String]\"==a(s)}},85087:(s,o,i)=>{var a=i(30980),u=i(37381),_=i(62284),w=i(53758);s.exports=function isLaziable(s){var o=_(s),i=w[o];if(\"function\"!=typeof i||!(o in a.prototype))return!1;if(s===i)return!0;var x=u(i);return!!x&&s===x[0]}},85105:s=>{s.exports=class JSONSerialiser{constructor(s){this.namespace=s||new this.Namespace}serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \\`${s}\\` is not an Element instance`);const o={element:s.element};s._meta&&s._meta.length>0&&(o.meta=this.serialiseObject(s.meta)),s._attributes&&s._attributes.length>0&&(o.attributes=this.serialiseObject(s.attributes));const i=this.serialiseContent(s.content);return void 0!==i&&(o.content=i),o}deserialise(s){if(!s.element)throw new Error(\"Given value is not an object containing an element name\");const o=new(this.namespace.getElementClass(s.element));o.element!==s.element&&(o.element=s.element),s.meta&&this.deserialiseObject(s.meta,o.meta),s.attributes&&this.deserialiseObject(s.attributes,o.attributes);const i=this.deserialiseContent(s.content);return void 0===i&&null!==o.content||(o.content=i),o}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}if(s&&s.map){if(0===s.length)return;return s.map(this.serialise,this)}return s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}serialiseObject(s){const o={};if(s.forEach(((s,i)=>{s&&(o[i.toValue()]=this.serialise(s))})),0!==Object.keys(o).length)return o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},85160:(s,o,i)=>{\"use strict\";var a=i(96540);var u=\"function\"==typeof Object.is?Object.is:function is(s,o){return s===o&&(0!==s||1/s==1/o)||s!=s&&o!=o},_=a.useSyncExternalStore,w=a.useRef,x=a.useEffect,C=a.useMemo,j=a.useDebugValue},85250:(s,o,i)=>{var a=i(37217),u=i(87805),_=i(86649),w=i(42824),x=i(23805),C=i(37241),j=i(14974);s.exports=function baseMerge(s,o,i,L,B){s!==o&&_(o,(function(_,C){if(B||(B=new a),x(_))w(s,o,C,i,baseMerge,L,B);else{var $=L?L(j(s,C),_,C+\"\",s,o,B):void 0;void 0===$&&($=_),u(s,C,$)}}),C)}},85401:(s,o,i)=>{\"use strict\";var a=i(462);s.exports=a},85463:s=>{s.exports=function baseIsNaN(s){return s!=s}},85558:s=>{s.exports=function baseReduce(s,o,i,a,u){return u(s,(function(s,u,_){i=a?(a=!1,s):o(i,s,u,_)})),i}},85582:(s,o,i)=>{\"use strict\";var a=i(92046),u=i(45951),_=i(62250),aFunction=function(s){return _(s)?s:void 0};s.exports=function(s,o){return arguments.length<2?aFunction(a[s])||aFunction(u[s]):a[s]&&a[s][o]||u[s]&&u[s][o]}},85587:(s,o,i)=>{\"use strict\";var a=i(26311),u=create(Error);function create(s){return FormattedError.displayName=s.displayName||s.name,FormattedError;function FormattedError(o){return o&&(o=a.apply(null,arguments)),new s(o)}}s.exports=u,u.eval=create(EvalError),u.range=create(RangeError),u.reference=create(ReferenceError),u.syntax=create(SyntaxError),u.type=create(TypeError),u.uri=create(URIError),u.create=create},85762:(s,o,i)=>{\"use strict\";var a=i(1907),u=Error,_=a(\"\".replace),w=String(new u(\"zxcasd\").stack),x=/\\n\\s*at [^:]*:[^\\n]*/,C=x.test(w);s.exports=function(s,o){if(C&&\"string\"==typeof s&&!u.prepareStackTrace)for(;o--;)s=_(s,x,\"\");return s}},85816:(s,o,i)=>{\"use strict\";var a=i(36128);s.exports=function(s,o){return a[s]||(a[s]=o||{})}},85884:(s,o,i)=>{\"use strict\";var a=i(61626),u=i(85762),_=i(23888),w=Error.captureStackTrace;s.exports=function(s,o,i,x){_&&(w?w(s,o):a(s,\"stack\",u(i,x)))}},86009:(s,o,i)=>{s=i.nmd(s);var a=i(34840),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u&&a.process,x=function(){try{var s=_&&_.require&&_.require(\"util\").types;return s||w&&w.binding&&w.binding(\"util\")}catch(s){}}();s.exports=x},86048:s=>{\"use strict\";var o={};function createErrorType(s,i,a){a||(a=Error);var u=function(s){function NodeError(o,a,u){return s.call(this,function getMessage(s,o,a){return\"string\"==typeof i?i:i(s,o,a)}(o,a,u))||this}return function _inheritsLoose(s,o){s.prototype=Object.create(o.prototype),s.prototype.constructor=s,s.__proto__=o}(NodeError,s),NodeError}(a);u.prototype.name=a.name,u.prototype.code=s,o[s]=u}function oneOf(s,o){if(Array.isArray(s)){var i=s.length;return s=s.map((function(s){return String(s)})),i>2?\"one of \".concat(o,\" \").concat(s.slice(0,i-1).join(\", \"),\", or \")+s[i-1]:2===i?\"one of \".concat(o,\" \").concat(s[0],\" or \").concat(s[1]):\"of \".concat(o,\" \").concat(s[0])}return\"of \".concat(o,\" \").concat(String(s))}createErrorType(\"ERR_INVALID_OPT_VALUE\",(function(s,o){return'The value \"'+o+'\" is invalid for option \"'+s+'\"'}),TypeError),createErrorType(\"ERR_INVALID_ARG_TYPE\",(function(s,o,i){var a,u;if(\"string\"==typeof o&&function startsWith(s,o,i){return s.substr(!i||i<0?0:+i,o.length)===o}(o,\"not \")?(a=\"must not be\",o=o.replace(/^not /,\"\")):a=\"must be\",function endsWith(s,o,i){return(void 0===i||i>s.length)&&(i=s.length),s.substring(i-o.length,i)===o}(s,\" argument\"))u=\"The \".concat(s,\" \").concat(a,\" \").concat(oneOf(o,\"type\"));else{var _=function includes(s,o,i){return\"number\"!=typeof i&&(i=0),!(i+o.length>s.length)&&-1!==s.indexOf(o,i)}(s,\".\")?\"property\":\"argument\";u='The \"'.concat(s,'\" ').concat(_,\" \").concat(a,\" \").concat(oneOf(o,\"type\"))}return u+=\". Received type \".concat(typeof i)}),TypeError),createErrorType(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),createErrorType(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(s){return\"The \"+s+\" method is not implemented\"})),createErrorType(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),createErrorType(\"ERR_STREAM_DESTROYED\",(function(s){return\"Cannot call \"+s+\" after a stream was destroyed\"})),createErrorType(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),createErrorType(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),createErrorType(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),createErrorType(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),createErrorType(\"ERR_UNKNOWN_ENCODING\",(function(s){return\"Unknown encoding: \"+s}),TypeError),createErrorType(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),s.exports.F=o},86215:function(s,o){var i,a,u;a=[],i=function(){\"use strict\";var isNativeSmoothScrollEnabledOn=function(s){return s&&\"getComputedStyle\"in window&&\"smooth\"===window.getComputedStyle(s)[\"scroll-behavior\"]};if(\"undefined\"==typeof window||!(\"document\"in window))return{};var makeScroller=function(s,o,i){var a;o=o||999,i||0===i||(i=9);var setScrollTimeoutId=function(s){a=s},stopScroll=function(){clearTimeout(a),setScrollTimeoutId(0)},getTopWithEdgeOffset=function(o){return Math.max(0,s.getTopOf(o)-i)},scrollToY=function(i,a,u){if(stopScroll(),0===a||a&&a<0||isNativeSmoothScrollEnabledOn(s.body))s.toY(i),u&&u();else{var _=s.getY(),w=Math.max(0,i)-_,x=(new Date).getTime();a=a||Math.min(Math.abs(w),o),function loopScroll(){setScrollTimeoutId(setTimeout((function(){var o=Math.min(1,((new Date).getTime()-x)/a),i=Math.max(0,Math.floor(_+w*(o<.5?2*o*o:o*(4-2*o)-1)));s.toY(i),o<1&&s.getHeight()+i<s.body.scrollHeight?loopScroll():(setTimeout(stopScroll,99),u&&u())}),9))}()}},scrollToElem=function(s,o,i){scrollToY(getTopWithEdgeOffset(s),o,i)},scrollIntoView=function(o,a,u){var _=o.getBoundingClientRect().height,w=s.getTopOf(o)+_,x=s.getHeight(),C=s.getY(),j=C+x;getTopWithEdgeOffset(o)<C||_+i>x?scrollToElem(o,a,u):w+i>j?scrollToY(w-x+i,a,u):u&&u()},scrollToCenterOf=function(o,i,a,u){scrollToY(Math.max(0,s.getTopOf(o)-s.getHeight()/2+(a||o.getBoundingClientRect().height/2)),i,u)};return{setup:function(s,a){return(0===s||s)&&(o=s),(0===a||a)&&(i=a),{defaultDuration:o,edgeOffset:i}},to:scrollToElem,toY:scrollToY,intoView:scrollIntoView,center:scrollToCenterOf,stop:stopScroll,moving:function(){return!!a},getY:s.getY,getTopOf:s.getTopOf}},s=document.documentElement,getDocY=function(){return window.scrollY||s.scrollTop},o=makeScroller({body:document.scrollingElement||document.body,toY:function(s){window.scrollTo(0,s)},getY:getDocY,getHeight:function(){return window.innerHeight||s.clientHeight},getTopOf:function(o){return o.getBoundingClientRect().top+getDocY()-s.offsetTop}});if(o.createScroller=function(o,i,a){return makeScroller({body:o,toY:function(s){o.scrollTop=s},getY:function(){return o.scrollTop},getHeight:function(){return Math.min(o.clientHeight,window.innerHeight||s.clientHeight)},getTopOf:function(s){return s.offsetTop}},i,a)},\"addEventListener\"in window&&!window.noZensmooth&&!isNativeSmoothScrollEnabledOn(document.body)){var i=\"history\"in window&&\"pushState\"in history,a=i&&\"scrollRestoration\"in history;a&&(history.scrollRestoration=\"auto\"),window.addEventListener(\"load\",(function(){a&&(setTimeout((function(){history.scrollRestoration=\"manual\"}),9),window.addEventListener(\"popstate\",(function(s){s.state&&\"zenscrollY\"in s.state&&o.toY(s.state.zenscrollY)}),!1)),window.location.hash&&setTimeout((function(){var s=o.setup().edgeOffset;if(s){var i=document.getElementById(window.location.href.split(\"#\")[1]);if(i){var a=Math.max(0,o.getTopOf(i)-s),u=o.getY()-a;0<=u&&u<9&&window.scrollTo(0,a)}}}),9)}),!1);var u=new RegExp(\"(^|\\\\s)noZensmooth(\\\\s|$)\");window.addEventListener(\"click\",(function(s){for(var _=s.target;_&&\"A\"!==_.tagName;)_=_.parentNode;if(!(!_||1!==s.which||s.shiftKey||s.metaKey||s.ctrlKey||s.altKey)){if(a){var w=history.state&&\"object\"==typeof history.state?history.state:{};w.zenscrollY=o.getY();try{history.replaceState(w,\"\")}catch(s){}}var x=_.getAttribute(\"href\")||\"\";if(0===x.indexOf(\"#\")&&!u.test(_.className)){var C=0,j=document.getElementById(x.substring(1));if(\"#\"!==x){if(!j)return;C=o.getTopOf(j)}s.preventDefault();var onDone=function(){window.location=x},L=o.setup().edgeOffset;L&&(C=Math.max(0,C-L),i&&(onDone=function(){history.pushState({},\"\",x)})),o.toY(C,null,onDone)}}}),!1)}return o}(),void 0===(u=\"function\"==typeof i?i.apply(o,a):i)||(s.exports=u)},86238:(s,o,i)=>{\"use strict\";var a=i(86048).F.ERR_STREAM_PREMATURE_CLOSE;function noop(){}s.exports=function eos(s,o,i){if(\"function\"==typeof o)return eos(s,null,o);o||(o={}),i=function once(s){var o=!1;return function(){if(!o){o=!0;for(var i=arguments.length,a=new Array(i),u=0;u<i;u++)a[u]=arguments[u];s.apply(this,a)}}}(i||noop);var u=o.readable||!1!==o.readable&&s.readable,_=o.writable||!1!==o.writable&&s.writable,w=function onlegacyfinish(){s.writable||C()},x=s._writableState&&s._writableState.finished,C=function onfinish(){_=!1,x=!0,u||i.call(s)},j=s._readableState&&s._readableState.endEmitted,L=function onend(){u=!1,j=!0,_||i.call(s)},B=function onerror(o){i.call(s,o)},$=function onclose(){var o;return u&&!j?(s._readableState&&s._readableState.ended||(o=new a),i.call(s,o)):_&&!x?(s._writableState&&s._writableState.ended||(o=new a),i.call(s,o)):void 0},V=function onrequest(){s.req.on(\"finish\",C)};return!function isRequest(s){return s.setHeader&&\"function\"==typeof s.abort}(s)?_&&!s._writableState&&(s.on(\"end\",w),s.on(\"close\",w)):(s.on(\"complete\",C),s.on(\"abort\",$),s.req?V():s.on(\"request\",V)),s.on(\"end\",L),s.on(\"finish\",C),!1!==o.error&&s.on(\"error\",B),s.on(\"close\",$),function(){s.removeListener(\"complete\",C),s.removeListener(\"abort\",$),s.removeListener(\"request\",V),s.req&&s.req.removeListener(\"finish\",C),s.removeListener(\"end\",w),s.removeListener(\"close\",w),s.removeListener(\"finish\",C),s.removeListener(\"end\",L),s.removeListener(\"error\",B),s.removeListener(\"close\",$)}}},86303:(s,o,i)=>{const a=i(10316);s.exports=class LinkElement extends a{constructor(s,o,i){super(s||[],o,i),this.element=\"link\"}get relation(){return this.attributes.get(\"relation\")}set relation(s){this.attributes.set(\"relation\",s)}get href(){return this.attributes.get(\"href\")}set href(s){this.attributes.set(\"href\",s)}}},86375:(s,o,i)=>{var a=i(14528),u=i(28879),_=i(4664),w=i(63345),x=Object.getOwnPropertySymbols?function(s){for(var o=[];s;)a(o,_(s)),s=u(s);return o}:w;s.exports=x},86649:(s,o,i)=>{var a=i(83221)();s.exports=a},86804:(s,o,i)=>{const a=i(10316),u=i(41067),_=i(71167),w=i(40239),x=i(12242),C=i(6233),j=i(87726),L=i(61045),B=i(86303),$=i(14540),V=i(92340),U=i(10866),z=i(55973);function refract(s){if(s instanceof a)return s;if(\"string\"==typeof s)return new _(s);if(\"number\"==typeof s)return new w(s);if(\"boolean\"==typeof s)return new x(s);if(null===s)return new u;if(Array.isArray(s))return new C(s.map(refract));if(\"object\"==typeof s){return new L(s)}return s}a.prototype.ObjectElement=L,a.prototype.RefElement=$,a.prototype.MemberElement=j,a.prototype.refract=refract,V.prototype.refract=refract,s.exports={Element:a,NullElement:u,StringElement:_,NumberElement:w,BooleanElement:x,ArrayElement:C,MemberElement:j,ObjectElement:L,LinkElement:B,RefElement:$,refract,ArraySlice:V,ObjectSlice:U,KeyValuePair:z}},87068:(s,o,i)=>{var a=i(37217),u=i(25911),_=i(21986),w=i(50689),x=i(5861),C=i(56449),j=i(3656),L=i(37167),B=\"[object Arguments]\",$=\"[object Array]\",V=\"[object Object]\",U=Object.prototype.hasOwnProperty;s.exports=function baseIsEqualDeep(s,o,i,z,Y,Z){var ee=C(s),ie=C(o),ae=ee?$:x(s),ce=ie?$:x(o),le=(ae=ae==B?V:ae)==V,pe=(ce=ce==B?V:ce)==V,de=ae==ce;if(de&&j(s)){if(!j(o))return!1;ee=!0,le=!1}if(de&&!le)return Z||(Z=new a),ee||L(s)?u(s,o,i,z,Y,Z):_(s,o,ae,i,z,Y,Z);if(!(1&i)){var fe=le&&U.call(s,\"__wrapped__\"),ye=pe&&U.call(o,\"__wrapped__\");if(fe||ye){var be=fe?s.value():s,_e=ye?o.value():o;return Z||(Z=new a),Y(be,_e,i,z,Z)}}return!!de&&(Z||(Z=new a),w(s,o,i,z,Y,Z))}},87136:s=>{\"use strict\";s.exports=function(s){return null==s}},87170:(s,o)=>{\"use strict\";o.f=Object.getOwnPropertySymbols},87296:(s,o,i)=>{var a,u=i(55481),_=(a=/[^.]+$/.exec(u&&u.keys&&u.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+a:\"\";s.exports=function isMasked(s){return!!_&&_ in s}},87586:(s,o,i)=>{const a=i(6205),u=i(10023),_={0:0,t:9,n:10,v:11,f:12,r:13};o.strToChars=function(s){return s=s.replace(/(\\[\\\\b\\])|(\\\\)?\\\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z[\\\\\\]^?])|([0tnvfr]))/g,(function(s,o,i,a,u,w,x,C){if(i)return s;var j=o?8:a?parseInt(a,16):u?parseInt(u,16):w?parseInt(w,8):x?\"@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^ ?\".indexOf(x):_[C],L=String.fromCharCode(j);return/[[\\]{}^$.|?*+()]/.test(L)&&(L=\"\\\\\"+L),L}))},o.tokenizeClass=(s,i)=>{for(var _,w,x=[],C=/\\\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\\\)(.)|([^\\]\\\\]))-(?:\\\\)?([^\\]]))|(\\])|(?:\\\\)?([^])/g;null!=(_=C.exec(s));)if(_[1])x.push(u.words());else if(_[2])x.push(u.ints());else if(_[3])x.push(u.whitespace());else if(_[4])x.push(u.notWords());else if(_[5])x.push(u.notInts());else if(_[6])x.push(u.notWhitespace());else if(_[7])x.push({type:a.RANGE,from:(_[8]||_[9]).charCodeAt(0),to:_[10].charCodeAt(0)});else{if(!(w=_[12]))return[x,C.lastIndex];x.push({type:a.CHAR,value:w.charCodeAt(0)})}o.error(i,\"Unterminated character class\")},o.error=(s,o)=>{throw new SyntaxError(\"Invalid regular expression: /\"+s+\"/: \"+o)}},87726:(s,o,i)=>{const a=i(55973),u=i(10316);s.exports=class MemberElement extends u{constructor(s,o,i,u){super(new a,i,u),this.element=\"member\",this.key=s,this.value=o}get key(){return this.content.key}set key(s){this.content.key=this.refract(s)}get value(){return this.content.value}set value(s){this.content.value=this.refract(s)}}},87730:(s,o,i)=>{var a=i(29172),u=i(27301),_=i(86009),w=_&&_.isMap,x=w?u(w):a;s.exports=x},87805:(s,o,i)=>{var a=i(43360),u=i(75288);s.exports=function assignMergeValue(s,o,i){(void 0!==i&&!u(s[o],i)||void 0===i&&!(o in s))&&a(s,o,i)}},87978:(s,o,i)=>{var a=i(60270),u=i(58156),_=i(80631),w=i(28586),x=i(30756),C=i(67197),j=i(77797);s.exports=function baseMatchesProperty(s,o){return w(s)&&x(o)?C(j(s),o):function(i){var w=u(i,s);return void 0===w&&w===o?_(i,s):a(o,w,3)}}},88280:(s,o,i)=>{\"use strict\";var a=i(1907);s.exports=a({}.isPrototypeOf)},88310:(s,o,i)=>{s.exports=Stream;var a=i(37007).EventEmitter;function Stream(){a.call(this)}i(56698)(Stream,a),Stream.Readable=i(45412),Stream.Writable=i(16708),Stream.Duplex=i(25382),Stream.Transform=i(74610),Stream.PassThrough=i(63600),Stream.finished=i(86238),Stream.pipeline=i(57758),Stream.Stream=Stream,Stream.prototype.pipe=function(s,o){var i=this;function ondata(o){s.writable&&!1===s.write(o)&&i.pause&&i.pause()}function ondrain(){i.readable&&i.resume&&i.resume()}i.on(\"data\",ondata),s.on(\"drain\",ondrain),s._isStdio||o&&!1===o.end||(i.on(\"end\",onend),i.on(\"close\",onclose));var u=!1;function onend(){u||(u=!0,s.end())}function onclose(){u||(u=!0,\"function\"==typeof s.destroy&&s.destroy())}function onerror(s){if(cleanup(),0===a.listenerCount(this,\"error\"))throw s}function cleanup(){i.removeListener(\"data\",ondata),s.removeListener(\"drain\",ondrain),i.removeListener(\"end\",onend),i.removeListener(\"close\",onclose),i.removeListener(\"error\",onerror),s.removeListener(\"error\",onerror),i.removeListener(\"end\",cleanup),i.removeListener(\"close\",cleanup),s.removeListener(\"close\",cleanup)}return i.on(\"error\",onerror),s.on(\"error\",onerror),i.on(\"end\",cleanup),i.on(\"close\",cleanup),s.on(\"close\",cleanup),s.emit(\"pipe\",i),s}},88984:(s,o,i)=>{var a=i(55527),u=i(3650),_=Object.prototype.hasOwnProperty;s.exports=function baseKeys(s){if(!a(s))return u(s);var o=[];for(var i in Object(s))_.call(s,i)&&\"constructor\"!=i&&o.push(i);return o}},89593:(s,o,i)=>{\"use strict\";o.H=void 0;var a=function _interopRequireDefault(s){return s&&s.__esModule?s:{default:s}}(i(84977));o.H=a.default},89935:s=>{s.exports=function stubFalse(){return!1}},90160:(s,o,i)=>{\"use strict\";var a=i(73948),u=String;s.exports=function(s){if(\"Symbol\"===a(s))throw new TypeError(\"Cannot convert a Symbol value to a string\");return u(s)}},90179:(s,o,i)=>{var a=i(34932),u=i(9999),_=i(19931),w=i(31769),x=i(21791),C=i(53138),j=i(38816),L=i(83349),B=j((function(s,o){var i={};if(null==s)return i;var j=!1;o=a(o,(function(o){return o=w(o,s),j||(j=o.length>1),o})),x(s,L(s),i),j&&(i=u(i,7,C));for(var B=o.length;B--;)_(i,o[B]);return i}));s.exports=B},90181:s=>{s.exports=function nativeKeysIn(s){var o=[];if(null!=s)for(var i in Object(s))o.push(i);return o}},90289:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheGet(s){return a(this,s).get(s)}},90392:(s,o,i)=>{var a=i(92861).Buffer;function Hash(s,o){this._block=a.alloc(s),this._finalSize=o,this._blockSize=s,this._len=0}Hash.prototype.update=function(s,o){\"string\"==typeof s&&(o=o||\"utf8\",s=a.from(s,o));for(var i=this._block,u=this._blockSize,_=s.length,w=this._len,x=0;x<_;){for(var C=w%u,j=Math.min(_-x,u-C),L=0;L<j;L++)i[C+L]=s[x+L];x+=j,(w+=j)%u==0&&this._update(i)}return this._len+=_,this},Hash.prototype.digest=function(s){var o=this._len%this._blockSize;this._block[o]=128,this._block.fill(0,o+1),o>=this._finalSize&&(this._update(this._block),this._block.fill(0));var i=8*this._len;if(i<=4294967295)this._block.writeUInt32BE(i,this._blockSize-4);else{var a=(4294967295&i)>>>0,u=(i-a)/4294967296;this._block.writeUInt32BE(u,this._blockSize-8),this._block.writeUInt32BE(a,this._blockSize-4)}this._update(this._block);var _=this._hash();return s?_.toString(s):_},Hash.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},s.exports=Hash},90916:(s,o,i)=>{var a=i(80909);s.exports=function baseSome(s,o){var i;return a(s,(function(s,a,u){return!(i=o(s,a,u))})),!!i}},90938:s=>{s.exports=function stackDelete(s){var o=this.__data__,i=o.delete(s);return this.size=o.size,i}},91033:s=>{s.exports=function apply(s,o,i){switch(i.length){case 0:return s.call(o);case 1:return s.call(o,i[0]);case 2:return s.call(o,i[0],i[1]);case 3:return s.call(o,i[0],i[1],i[2])}return s.apply(o,i)}},91596:s=>{var o=Math.max;s.exports=function composeArgs(s,i,a,u){for(var _=-1,w=s.length,x=a.length,C=-1,j=i.length,L=o(w-x,0),B=Array(j+L),$=!u;++C<j;)B[C]=i[C];for(;++_<x;)($||_<w)&&(B[a[_]]=s[_]);for(;L--;)B[C++]=s[_++];return B}},91599:(s,o,i)=>{\"use strict\";i(64502)},92046:s=>{\"use strict\";s.exports={}},92063:s=>{\"use strict\";s.exports=function required(s,o){if(o=o.split(\":\")[0],!(s=+s))return!1;switch(o){case\"http\":case\"ws\":return 80!==s;case\"https\":case\"wss\":return 443!==s;case\"ftp\":return 21!==s;case\"gopher\":return 70!==s;case\"file\":return!1}return 0!==s}},92271:(s,o,i)=>{var a=i(21791),u=i(4664);s.exports=function copySymbols(s,o){return a(s,u(s),o)}},92340:(s,o,i)=>{const a=i(6048);function coerceElementMatchingCallback(s){return\"string\"==typeof s?o=>o.element===s:s.constructor&&s.extend?o=>o instanceof s:s}class ArraySlice{constructor(s){this.elements=s||[]}toValue(){return this.elements.map((s=>s.toValue()))}map(s,o){return this.elements.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(s,o))}reject(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(a(s),o))}find(s,o){return s=coerceElementMatchingCallback(s),this.elements.find(s,o)}forEach(s,o){this.elements.forEach(s,o)}reduce(s,o){return this.elements.reduce(s,o)}includes(s){return this.elements.some((o=>o.equals(s)))}shift(){return this.elements.shift()}unshift(s){this.elements.unshift(this.refract(s))}push(s){return this.elements.push(this.refract(s)),this}add(s){this.push(s)}get(s){return this.elements[s]}getValue(s){const o=this.elements[s];if(o)return o.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}\"undefined\"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),s.exports=ArraySlice},92361:(s,o,i)=>{\"use strict\";var a=i(45807),u=i(1907);s.exports=function(s){if(\"Function\"===a(s))return u(s)}},92522:(s,o,i)=>{\"use strict\";var a=i(85816),u=i(6499),_=a(\"keys\");s.exports=function(s){return _[s]||(_[s]=u(s))}},92861:(s,o,i)=>{var a=i(48287),u=a.Buffer;function copyProps(s,o){for(var i in s)o[i]=s[i]}function SafeBuffer(s,o,i){return u(s,o,i)}u.from&&u.alloc&&u.allocUnsafe&&u.allocUnsafeSlow?s.exports=a:(copyProps(a,o),o.Buffer=SafeBuffer),SafeBuffer.prototype=Object.create(u.prototype),copyProps(u,SafeBuffer),SafeBuffer.from=function(s,o,i){if(\"number\"==typeof s)throw new TypeError(\"Argument must not be a number\");return u(s,o,i)},SafeBuffer.alloc=function(s,o,i){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");var a=u(s);return void 0!==o?\"string\"==typeof i?a.fill(o,i):a.fill(o):a.fill(0),a},SafeBuffer.allocUnsafe=function(s){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");return u(s)},SafeBuffer.allocUnsafeSlow=function(s){if(\"number\"!=typeof s)throw new TypeError(\"Argument must be a number\");return a.SlowBuffer(s)}},93243:(s,o,i)=>{var a=i(56110),u=function(){try{var s=a(Object,\"defineProperty\");return s({},\"\",{}),s}catch(s){}}();s.exports=u},93290:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u?a.Buffer:void 0,x=w?w.allocUnsafe:void 0;s.exports=function cloneBuffer(s,o){if(o)return s.slice();var i=s.length,a=x?x(i):new s.constructor(i);return s.copy(a),a}},93427:(s,o,i)=>{\"use strict\";var a=i(1907);s.exports=a([].slice)},93663:(s,o,i)=>{var a=i(41799),u=i(10776),_=i(67197);s.exports=function baseMatches(s){var o=u(s);return 1==o.length&&o[0][2]?_(o[0][0],o[0][1]):function(i){return i===s||a(i,s,o)}}},93700:(s,o,i)=>{\"use strict\";var a=i(19709);s.exports=a},93736:(s,o,i)=>{var a=i(51873),u=a?a.prototype:void 0,_=u?u.valueOf:void 0;s.exports=function cloneSymbol(s){return _?Object(_.call(s)):{}}},93742:s=>{\"use strict\";s.exports={}},94033:s=>{s.exports=function baseLodash(){}},94643:(s,o,i)=>{function config(s){try{if(!i.g.localStorage)return!1}catch(s){return!1}var o=i.g.localStorage[s];return null!=o&&\"true\"===String(o).toLowerCase()}s.exports=function deprecate(s,o){if(config(\"noDeprecation\"))return s;var i=!1;return function deprecated(){if(!i){if(config(\"throwDeprecation\"))throw new Error(o);config(\"traceDeprecation\")?console.trace(o):console.warn(o),i=!0}return s.apply(this,arguments)}}},95089:s=>{const o=\"[A-Za-z$_][0-9A-Za-z$_]*\",i=[\"as\",\"in\",\"of\",\"if\",\"for\",\"while\",\"finally\",\"var\",\"new\",\"function\",\"do\",\"return\",\"void\",\"else\",\"break\",\"catch\",\"instanceof\",\"with\",\"throw\",\"case\",\"default\",\"try\",\"switch\",\"continue\",\"typeof\",\"delete\",\"let\",\"yield\",\"const\",\"class\",\"debugger\",\"async\",\"await\",\"static\",\"import\",\"from\",\"export\",\"extends\"],a=[\"true\",\"false\",\"null\",\"undefined\",\"NaN\",\"Infinity\"],u=[].concat([\"setInterval\",\"setTimeout\",\"clearInterval\",\"clearTimeout\",\"require\",\"exports\",\"eval\",\"isFinite\",\"isNaN\",\"parseFloat\",\"parseInt\",\"decodeURI\",\"decodeURIComponent\",\"encodeURI\",\"encodeURIComponent\",\"escape\",\"unescape\"],[\"arguments\",\"this\",\"super\",\"console\",\"window\",\"document\",\"localStorage\",\"module\",\"global\"],[\"Intl\",\"DataView\",\"Number\",\"Math\",\"Date\",\"String\",\"RegExp\",\"Object\",\"Function\",\"Boolean\",\"Error\",\"Symbol\",\"Set\",\"Map\",\"WeakSet\",\"WeakMap\",\"Proxy\",\"Reflect\",\"JSON\",\"Promise\",\"Float64Array\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Uint16Array\",\"Uint32Array\",\"Float32Array\",\"Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"ArrayBuffer\",\"BigInt64Array\",\"BigUint64Array\",\"BigInt\"],[\"EvalError\",\"InternalError\",\"RangeError\",\"ReferenceError\",\"SyntaxError\",\"TypeError\",\"URIError\"]);function lookahead(s){return concat(\"(?=\",s,\")\")}function concat(...s){return s.map((s=>function source(s){return s?\"string\"==typeof s?s:s.source:null}(s))).join(\"\")}s.exports=function javascript(s){const _=o,w=\"<>\",x=\"</>\",C={begin:/<[A-Za-z0-9\\\\._:-]+/,end:/\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,isTrulyOpeningTag:(s,o)=>{const i=s[0].length+s.index,a=s.input[i];\"<\"!==a?\">\"===a&&(((s,{after:o})=>{const i=\"</\"+s[0].slice(1);return-1!==s.input.indexOf(i,o)})(s,{after:i})||o.ignoreMatch()):o.ignoreMatch()}},j={$pattern:o,keyword:i,literal:a,built_in:u},L=\"[0-9](_?[0-9])*\",B=`\\\\.(${L})`,$=\"0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*\",V={className:\"number\",variants:[{begin:`(\\\\b(${$})((${B})|\\\\.)?|(${B}))[eE][+-]?(${L})\\\\b`},{begin:`\\\\b(${$})\\\\b((${B})\\\\b|\\\\.)?|(${B})\\\\b`},{begin:\"\\\\b(0|[1-9](_?[0-9])*)n\\\\b\"},{begin:\"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"},{begin:\"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"},{begin:\"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"},{begin:\"\\\\b0[0-7]+n?\\\\b\"}],relevance:0},U={className:\"subst\",begin:\"\\\\$\\\\{\",end:\"\\\\}\",keywords:j,contains:[]},z={begin:\"html`\",end:\"\",starts:{end:\"`\",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,U],subLanguage:\"xml\"}},Y={begin:\"css`\",end:\"\",starts:{end:\"`\",returnEnd:!1,contains:[s.BACKSLASH_ESCAPE,U],subLanguage:\"css\"}},Z={className:\"string\",begin:\"`\",end:\"`\",contains:[s.BACKSLASH_ESCAPE,U]},ee={className:\"comment\",variants:[s.COMMENT(/\\/\\*\\*(?!\\/)/,\"\\\\*/\",{relevance:0,contains:[{className:\"doctag\",begin:\"@[A-Za-z]+\",contains:[{className:\"type\",begin:\"\\\\{\",end:\"\\\\}\",relevance:0},{className:\"variable\",begin:_+\"(?=\\\\s*(-)|$)\",endsParent:!0,relevance:0},{begin:/(?=[^\\n])\\s/,relevance:0}]}]}),s.C_BLOCK_COMMENT_MODE,s.C_LINE_COMMENT_MODE]},ie=[s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,z,Y,Z,V,s.REGEXP_MODE];U.contains=ie.concat({begin:/\\{/,end:/\\}/,keywords:j,contains:[\"self\"].concat(ie)});const ae=[].concat(ee,U.contains),ce=ae.concat([{begin:/\\(/,end:/\\)/,keywords:j,contains:[\"self\"].concat(ae)}]),le={className:\"params\",begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce};return{name:\"Javascript\",aliases:[\"js\",\"jsx\",\"mjs\",\"cjs\"],keywords:j,exports:{PARAMS_CONTAINS:ce},illegal:/#(?![$_A-z])/,contains:[s.SHEBANG({label:\"shebang\",binary:\"node\",relevance:5}),{label:\"use_strict\",className:\"meta\",relevance:10,begin:/^\\s*['\"]use (strict|asm)['\"]/},s.APOS_STRING_MODE,s.QUOTE_STRING_MODE,z,Y,Z,ee,V,{begin:concat(/[{,\\n]\\s*/,lookahead(concat(/(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,_+\"\\\\s*:\"))),relevance:0,contains:[{className:\"attr\",begin:_+lookahead(\"\\\\s*:\"),relevance:0}]},{begin:\"(\"+s.RE_STARTERS_RE+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",keywords:\"return throw case\",contains:[ee,s.REGEXP_MODE,{className:\"function\",begin:\"(\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)|\"+s.UNDERSCORE_IDENT_RE+\")\\\\s*=>\",returnBegin:!0,end:\"\\\\s*=>\",contains:[{className:\"params\",variants:[{begin:s.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\\(\\s*\\)/,skip:!0},{begin:/\\(/,end:/\\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce}]}]},{begin:/,/,relevance:0},{className:\"\",begin:/\\s/,end:/\\s*/,skip:!0},{variants:[{begin:w,end:x},{begin:C.begin,\"on:begin\":C.isTrulyOpeningTag,end:C.end}],subLanguage:\"xml\",contains:[{begin:C.begin,end:C.end,skip:!0,contains:[\"self\"]}]}],relevance:0},{className:\"function\",beginKeywords:\"function\",end:/[{;]/,excludeEnd:!0,keywords:j,contains:[\"self\",s.inherit(s.TITLE_MODE,{begin:_}),le],illegal:/%/},{beginKeywords:\"while if switch catch for\"},{className:\"function\",begin:s.UNDERSCORE_IDENT_RE+\"\\\\([^()]*(\\\\([^()]*(\\\\([^()]*\\\\)[^()]*)*\\\\)[^()]*)*\\\\)\\\\s*\\\\{\",returnBegin:!0,contains:[le,s.inherit(s.TITLE_MODE,{begin:_})]},{variants:[{begin:\"\\\\.\"+_},{begin:\"\\\\$\"+_}],relevance:0},{className:\"class\",beginKeywords:\"class\",end:/[{;=]/,excludeEnd:!0,illegal:/[:\"[\\]]/,contains:[{beginKeywords:\"extends\"},s.UNDERSCORE_TITLE_MODE]},{begin:/\\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[s.inherit(s.TITLE_MODE,{begin:_}),\"self\",le]},{begin:\"(get|set)\\\\s+(?=\"+_+\"\\\\()\",end:/\\{/,keywords:\"get set\",contains:[s.inherit(s.TITLE_MODE,{begin:_}),{begin:/\\(\\)/},le]},{begin:/\\$[(.]/}]}}},95116:(s,o,i)=>{\"use strict\";var a,u,_,w=i(98828),x=i(62250),C=i(46285),j=i(58075),L=i(15972),B=i(68055),$=i(76264),V=i(7376),U=$(\"iterator\"),z=!1;[].keys&&(\"next\"in(_=[].keys())?(u=L(L(_)))!==Object.prototype&&(a=u):z=!0),!C(a)||w((function(){var s={};return a[U].call(s)!==s}))?a={}:V&&(a=j(a)),x(a[U])||B(a,U,(function(){return this})),s.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:z}},95950:(s,o,i)=>{var a=i(70695),u=i(88984),_=i(64894);s.exports=function keys(s){return _(s)?a(s):u(s)}},96131:(s,o,i)=>{var a=i(2523),u=i(85463),_=i(76959);s.exports=function baseIndexOf(s,o,i){return o==o?_(s,o,i):a(s,u,i)}},96540:(s,o,i)=>{\"use strict\";s.exports=i(15287)},96605:(s,o,i)=>{\"use strict\";var a=i(11091),u=i(45951),_=i(76024),w=i(19358),x=\"WebAssembly\",C=u[x],j=7!==new Error(\"e\",{cause:7}).cause,exportGlobalErrorCauseWrapper=function(s,o){var i={};i[s]=w(s,o,j),a({global:!0,constructor:!0,arity:1,forced:j},i)},exportWebAssemblyErrorCauseWrapper=function(s,o){if(C&&C[s]){var i={};i[s]=w(x+\".\"+s,o,j),a({target:x,stat:!0,constructor:!0,arity:1,forced:j},i)}};exportGlobalErrorCauseWrapper(\"Error\",(function(s){return function Error(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"EvalError\",(function(s){return function EvalError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"RangeError\",(function(s){return function RangeError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"ReferenceError\",(function(s){return function ReferenceError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"SyntaxError\",(function(s){return function SyntaxError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"TypeError\",(function(s){return function TypeError(o){return _(s,this,arguments)}})),exportGlobalErrorCauseWrapper(\"URIError\",(function(s){return function URIError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"CompileError\",(function(s){return function CompileError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"LinkError\",(function(s){return function LinkError(o){return _(s,this,arguments)}})),exportWebAssemblyErrorCauseWrapper(\"RuntimeError\",(function(s){return function RuntimeError(o){return _(s,this,arguments)}}))},96794:(s,o,i)=>{\"use strict\";var a=i(45951).navigator,u=a&&a.userAgent;s.exports=u?String(u):\"\"},98023:(s,o,i)=>{var a=i(72552),u=i(40346);s.exports=function isNumber(s){return\"number\"==typeof s||u(s)&&\"[object Number]\"==a(s)}},98828:s=>{\"use strict\";s.exports=function(s){try{return!!s()}catch(s){return!0}}},99363:(s,o,i)=>{\"use strict\";var a=i(4993),u=i(42156),_=i(93742),w=i(64932),x=i(74284).f,C=i(60183),j=i(59550),L=i(7376),B=i(39447),$=\"Array Iterator\",V=w.set,U=w.getterFor($);s.exports=C(Array,\"Array\",(function(s,o){V(this,{type:$,target:a(s),index:0,kind:o})}),(function(){var s=U(this),o=s.target,i=s.index++;if(!o||i>=o.length)return s.target=null,j(void 0,!0);switch(s.kind){case\"keys\":return j(i,!1);case\"values\":return j(o[i],!1)}return j([i,o[i]],!1)}),\"values\");var z=_.Arguments=_.Array;if(u(\"keys\"),u(\"values\"),u(\"entries\"),!L&&B&&\"values\"!==z.name)try{x(z,\"name\",{value:\"values\"})}catch(s){}},99374:(s,o,i)=>{var a=i(54128),u=i(23805),_=i(44394),w=/^[-+]0x[0-9a-f]+$/i,x=/^0b[01]+$/i,C=/^0o[0-7]+$/i,j=parseInt;s.exports=function toNumber(s){if(\"number\"==typeof s)return s;if(_(s))return NaN;if(u(s)){var o=\"function\"==typeof s.valueOf?s.valueOf():s;s=u(o)?o+\"\":o}if(\"string\"!=typeof s)return 0===s?s:+s;s=a(s);var i=x.test(s);return i||C.test(s)?j(s.slice(2),i?2:8):w.test(s)?NaN:+s}}},o={};function __webpack_require__(i){var a=o[i];if(void 0!==a)return a.exports;var u=o[i]={id:i,loaded:!1,exports:{}};return s[i].call(u.exports,u,u.exports,__webpack_require__),u.loaded=!0,u.exports}__webpack_require__.n=s=>{var o=s&&s.__esModule?()=>s.default:()=>s;return __webpack_require__.d(o,{a:o}),o},__webpack_require__.d=(s,o)=>{for(var i in o)__webpack_require__.o(o,i)&&!__webpack_require__.o(s,i)&&Object.defineProperty(s,i,{enumerable:!0,get:o[i]})},__webpack_require__.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(s){if(\"object\"==typeof window)return window}}(),__webpack_require__.o=(s,o)=>Object.prototype.hasOwnProperty.call(s,o),__webpack_require__.r=s=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(s,\"__esModule\",{value:!0})},__webpack_require__.nmd=s=>(s.paths=[],s.children||(s.children=[]),s);var i={};(()=>{\"use strict\";__webpack_require__.d(i,{default:()=>JT});var s={};__webpack_require__.r(s),__webpack_require__.d(s,{CLEAR:()=>at,CLEAR_BY:()=>ct,NEW_AUTH_ERR:()=>it,NEW_SPEC_ERR:()=>st,NEW_SPEC_ERR_BATCH:()=>ot,NEW_THROWN_ERR:()=>rt,NEW_THROWN_ERR_BATCH:()=>nt,clear:()=>clear,clearBy:()=>clearBy,newAuthErr:()=>newAuthErr,newSpecErr:()=>newSpecErr,newSpecErrBatch:()=>newSpecErrBatch,newThrownErr:()=>newThrownErr,newThrownErrBatch:()=>newThrownErrBatch});var o={};__webpack_require__.r(o),__webpack_require__.d(o,{AUTHORIZE:()=>Rt,AUTHORIZE_OAUTH2:()=>Lt,CONFIGURE_AUTH:()=>Ft,LOGOUT:()=>Dt,RESTORE_AUTHORIZATION:()=>Bt,SHOW_AUTH_POPUP:()=>Mt,authPopup:()=>authPopup,authorize:()=>authorize,authorizeAccessCodeWithBasicAuthentication:()=>authorizeAccessCodeWithBasicAuthentication,authorizeAccessCodeWithFormParams:()=>authorizeAccessCodeWithFormParams,authorizeApplication:()=>authorizeApplication,authorizeOauth2:()=>authorizeOauth2,authorizeOauth2WithPersistOption:()=>authorizeOauth2WithPersistOption,authorizePassword:()=>authorizePassword,authorizeRequest:()=>authorizeRequest,authorizeWithPersistOption:()=>authorizeWithPersistOption,configureAuth:()=>configureAuth,logout:()=>logout,logoutWithPersistOption:()=>logoutWithPersistOption,persistAuthorizationIfNeeded:()=>persistAuthorizationIfNeeded,preAuthorizeImplicit:()=>preAuthorizeImplicit,restoreAuthorization:()=>restoreAuthorization,showDefinitions:()=>showDefinitions});var a={};__webpack_require__.r(a),__webpack_require__.d(a,{authorized:()=>Jt,definitionsForRequirements:()=>definitionsForRequirements,definitionsToAuthorize:()=>Wt,getConfigs:()=>Ht,getDefinitionsByNames:()=>getDefinitionsByNames,isAuthorized:()=>isAuthorized,selectAuthPath:()=>selectAuthPath,shownDefinitions:()=>zt});var u={};__webpack_require__.r(u),__webpack_require__.d(u,{TOGGLE_CONFIGS:()=>gn,UPDATE_CONFIGS:()=>mn,downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl,loaded:()=>actions_loaded,toggle:()=>toggle,update:()=>update});var _={};__webpack_require__.r(_),__webpack_require__.d(_,{get:()=>get});var w={};__webpack_require__.r(w),__webpack_require__.d(w,{transform:()=>transform});var x={};__webpack_require__.r(x),__webpack_require__.d(x,{transform:()=>parameter_oneof_transform});var C={};__webpack_require__.r(C),__webpack_require__.d(C,{allErrors:()=>Pn,lastError:()=>Tn});var j={};__webpack_require__.r(j),__webpack_require__.d(j,{SHOW:()=>Fn,UPDATE_FILTER:()=>Dn,UPDATE_LAYOUT:()=>Rn,UPDATE_MODE:()=>Ln,changeMode:()=>changeMode,show:()=>actions_show,updateFilter:()=>updateFilter,updateLayout:()=>updateLayout});var L={};__webpack_require__.r(L),__webpack_require__.d(L,{current:()=>current,currentFilter:()=>currentFilter,isShown:()=>isShown,showSummary:()=>$n,whatMode:()=>whatMode});var B={};__webpack_require__.r(B),__webpack_require__.d(B,{taggedOperations:()=>taggedOperations});var $={};__webpack_require__.r($),__webpack_require__.d($,{getActiveLanguage:()=>Un,getDefaultExpanded:()=>zn,getGenerators:()=>Vn,getSnippetGenerators:()=>getSnippetGenerators});var V={};__webpack_require__.r(V),__webpack_require__.d(V,{JsonSchemaArrayItemFile:()=>JsonSchemaArrayItemFile,JsonSchemaArrayItemText:()=>JsonSchemaArrayItemText,JsonSchemaForm:()=>JsonSchemaForm,JsonSchema_array:()=>JsonSchema_array,JsonSchema_boolean:()=>JsonSchema_boolean,JsonSchema_object:()=>JsonSchema_object,JsonSchema_string:()=>JsonSchema_string});var U={};__webpack_require__.r(U),__webpack_require__.d(U,{allowTryItOutFor:()=>allowTryItOutFor,basePath:()=>Hs,canExecuteScheme:()=>canExecuteScheme,consumes:()=>Vs,consumesOptionsFor:()=>consumesOptionsFor,contentTypeValues:()=>contentTypeValues,currentProducesFor:()=>currentProducesFor,definitions:()=>Js,externalDocs:()=>Ds,findDefinition:()=>findDefinition,getOAS3RequiredRequestBodyContentType:()=>getOAS3RequiredRequestBodyContentType,getParameter:()=>getParameter,hasHost:()=>ro,host:()=>Ks,info:()=>Rs,isMediaTypeSchemaPropertiesEqual:()=>isMediaTypeSchemaPropertiesEqual,isOAS3:()=>Ms,lastError:()=>Os,mutatedRequestFor:()=>mutatedRequestFor,mutatedRequests:()=>to,operationScheme:()=>operationScheme,operationWithMeta:()=>operationWithMeta,operations:()=>qs,operationsWithRootInherited:()=>Ys,operationsWithTags:()=>Qs,parameterInclusionSettingFor:()=>parameterInclusionSettingFor,parameterValues:()=>parameterValues,parameterWithMeta:()=>parameterWithMeta,parameterWithMetaByIdentity:()=>parameterWithMetaByIdentity,parametersIncludeIn:()=>parametersIncludeIn,parametersIncludeType:()=>parametersIncludeType,paths:()=>Bs,produces:()=>Us,producesOptionsFor:()=>producesOptionsFor,requestFor:()=>requestFor,requests:()=>eo,responseFor:()=>responseFor,responses:()=>Zs,schemes:()=>Gs,security:()=>zs,securityDefinitions:()=>Ws,semver:()=>Fs,spec:()=>spec,specJS:()=>Ps,specJson:()=>Is,specJsonWithResolvedSubtrees:()=>Ns,specResolved:()=>Ts,specResolvedSubtree:()=>specResolvedSubtree,specSource:()=>js,specStr:()=>As,tagDetails:()=>tagDetails,taggedOperations:()=>selectors_taggedOperations,tags:()=>Xs,url:()=>Cs,validOperationMethods:()=>$s,validateBeforeExecute:()=>validateBeforeExecute,validationErrors:()=>validationErrors,version:()=>Ls});var z={};__webpack_require__.r(z),__webpack_require__.d(z,{CLEAR_REQUEST:()=>wo,CLEAR_RESPONSE:()=>Eo,CLEAR_VALIDATE_PARAMS:()=>xo,LOG_REQUEST:()=>So,SET_MUTATED_REQUEST:()=>_o,SET_REQUEST:()=>bo,SET_RESPONSE:()=>vo,SET_SCHEME:()=>Ao,UPDATE_EMPTY_PARAM_INCLUSION:()=>go,UPDATE_JSON:()=>fo,UPDATE_OPERATION_META_VALUE:()=>ko,UPDATE_PARAM:()=>mo,UPDATE_RESOLVED:()=>Oo,UPDATE_RESOLVED_SUBTREE:()=>Co,UPDATE_SPEC:()=>po,UPDATE_URL:()=>ho,VALIDATE_PARAMS:()=>yo,changeConsumesValue:()=>changeConsumesValue,changeParam:()=>changeParam,changeParamByIdentity:()=>changeParamByIdentity,changeProducesValue:()=>changeProducesValue,clearRequest:()=>clearRequest,clearResponse:()=>clearResponse,clearValidateParams:()=>clearValidateParams,execute:()=>actions_execute,executeRequest:()=>executeRequest,invalidateResolvedSubtreeCache:()=>invalidateResolvedSubtreeCache,logRequest:()=>logRequest,parseToJson:()=>parseToJson,requestResolvedSubtree:()=>requestResolvedSubtree,resolveSpec:()=>resolveSpec,setMutatedRequest:()=>setMutatedRequest,setRequest:()=>setRequest,setResponse:()=>setResponse,setScheme:()=>setScheme,updateEmptyParamInclusion:()=>updateEmptyParamInclusion,updateJsonSpec:()=>updateJsonSpec,updateResolved:()=>updateResolved,updateResolvedSubtree:()=>updateResolvedSubtree,updateSpec:()=>updateSpec,updateUrl:()=>updateUrl,validateParams:()=>validateParams});var Y={};__webpack_require__.r(Y),__webpack_require__.d(Y,{executeRequest:()=>wrap_actions_executeRequest,updateJsonSpec:()=>wrap_actions_updateJsonSpec,updateSpec:()=>wrap_actions_updateSpec,validateParams:()=>wrap_actions_validateParams});var Z={};__webpack_require__.r(Z),__webpack_require__.d(Z,{JsonPatchError:()=>Do,_areEquals:()=>_areEquals,applyOperation:()=>applyOperation,applyPatch:()=>applyPatch,applyReducer:()=>applyReducer,deepClone:()=>Lo,getValueByPointer:()=>getValueByPointer,validate:()=>validate,validator:()=>validator});var ee={};__webpack_require__.r(ee),__webpack_require__.d(ee,{compare:()=>compare,generate:()=>generate,observe:()=>observe,unobserve:()=>unobserve});var ie={};__webpack_require__.r(ie),__webpack_require__.d(ie,{hasElementSourceMap:()=>hasElementSourceMap,includesClasses:()=>includesClasses,includesSymbols:()=>includesSymbols,isAnnotationElement:()=>Bu,isArrayElement:()=>Ru,isBooleanElement:()=>Nu,isCommentElement:()=>$u,isElement:()=>ju,isLinkElement:()=>Lu,isMemberElement:()=>Du,isNullElement:()=>Tu,isNumberElement:()=>Pu,isObjectElement:()=>Mu,isParseResultElement:()=>qu,isPrimitiveElement:()=>isPrimitiveElement,isRefElement:()=>Fu,isSourceMapElement:()=>Vu,isStringElement:()=>Iu});var ae={};__webpack_require__.r(ae),__webpack_require__.d(ae,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>Fd,isLinkDescriptionElement:()=>Vd,isMediaElement:()=>$d});var ce={};__webpack_require__.r(ce),__webpack_require__.d(ce,{isBooleanJsonSchemaElement:()=>isBooleanJsonSchemaElement,isCallbackElement:()=>Mm,isComponentsElement:()=>Rm,isContactElement:()=>Dm,isExampleElement:()=>Lm,isExternalDocumentationElement:()=>Fm,isHeaderElement:()=>Bm,isInfoElement:()=>$m,isLicenseElement:()=>qm,isLinkElement:()=>Vm,isMediaTypeElement:()=>og,isOpenApi3_0Element:()=>zm,isOpenapiElement:()=>Um,isOperationElement:()=>Wm,isParameterElement:()=>Jm,isPathItemElement:()=>Hm,isPathsElement:()=>Km,isReferenceElement:()=>Gm,isRequestBodyElement:()=>Ym,isResponseElement:()=>Xm,isResponsesElement:()=>Qm,isSchemaElement:()=>Zm,isSecurityRequirementElement:()=>eg,isSecuritySchemeElement:()=>rg,isServerElement:()=>ng,isServerVariableElement:()=>sg,isServersElement:()=>lg});var le={};__webpack_require__.r(le),__webpack_require__.d(le,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>y_,isLinkDescriptionElement:()=>v_,isMediaElement:()=>$d});var pe={};__webpack_require__.r(pe),__webpack_require__.d(pe,{isJSONReferenceElement:()=>Bd,isJSONSchemaElement:()=>A_,isLinkDescriptionElement:()=>j_});var de={};__webpack_require__.r(de),__webpack_require__.d(de,{isJSONSchemaElement:()=>G_,isLinkDescriptionElement:()=>Y_});var fe={};__webpack_require__.r(fe),__webpack_require__.d(fe,{isJSONSchemaElement:()=>iS,isLinkDescriptionElement:()=>aS});var ye={};__webpack_require__.r(ye),__webpack_require__.d(ye,{isBooleanJsonSchemaElement:()=>predicates_isBooleanJsonSchemaElement,isCallbackElement:()=>WS,isComponentsElement:()=>JS,isContactElement:()=>HS,isExampleElement:()=>KS,isExternalDocumentationElement:()=>GS,isHeaderElement:()=>YS,isInfoElement:()=>XS,isJsonSchemaDialectElement:()=>QS,isLicenseElement:()=>ZS,isLinkElement:()=>eE,isMediaTypeElement:()=>gE,isOpenApi3_1Element:()=>rE,isOpenapiElement:()=>tE,isOperationElement:()=>nE,isParameterElement:()=>sE,isPathItemElement:()=>oE,isPathItemElementExternal:()=>isPathItemElementExternal,isPathsElement:()=>iE,isReferenceElement:()=>aE,isReferenceElementExternal:()=>isReferenceElementExternal,isRequestBodyElement:()=>cE,isResponseElement:()=>lE,isResponsesElement:()=>uE,isSchemaElement:()=>pE,isSecurityRequirementElement:()=>hE,isSecuritySchemeElement:()=>dE,isServerElement:()=>fE,isServerVariableElement:()=>mE});var be={};__webpack_require__.r(be),__webpack_require__.d(be,{cookie:()=>cookie,header:()=>parameter_builders_header,path:()=>parameter_builders_path,query:()=>query});var _e={};__webpack_require__.r(_e),__webpack_require__.d(_e,{Button:()=>Button,Col:()=>Col,Collapse:()=>Collapse,Container:()=>Container,Input:()=>Input,Link:()=>layout_utils_Link,Row:()=>Row,Select:()=>Select,TextArea:()=>TextArea});var Se={};__webpack_require__.r(Se),__webpack_require__.d(Se,{basePath:()=>MI,consumes:()=>RI,definitions:()=>II,findDefinition:()=>jI,hasHost:()=>PI,host:()=>NI,produces:()=>DI,schemes:()=>LI,securityDefinitions:()=>TI,validOperationMethods:()=>wrap_selectors_validOperationMethods});var we={};__webpack_require__.r(we),__webpack_require__.d(we,{definitionsToAuthorize:()=>FI});var xe={};__webpack_require__.r(xe),__webpack_require__.d(xe,{callbacksOperations:()=>qI,findSchema:()=>findSchema,isOAS3:()=>selectors_isOAS3,isOAS30:()=>selectors_isOAS30,isSwagger2:()=>selectors_isSwagger2,servers:()=>$I});var Pe={};__webpack_require__.r(Pe),__webpack_require__.d(Pe,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>aP,CLEAR_REQUEST_BODY_VALUE:()=>cP,SET_REQUEST_BODY_VALIDATE_ERROR:()=>iP,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>rP,UPDATE_REQUEST_BODY_INCLUSION:()=>tP,UPDATE_REQUEST_BODY_VALUE:()=>ZI,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>eP,UPDATE_REQUEST_CONTENT_TYPE:()=>nP,UPDATE_RESPONSE_CONTENT_TYPE:()=>sP,UPDATE_SELECTED_SERVER:()=>QI,UPDATE_SERVER_VARIABLE_VALUE:()=>oP,clearRequestBodyValidateError:()=>clearRequestBodyValidateError,clearRequestBodyValue:()=>clearRequestBodyValue,initRequestBodyValidateError:()=>initRequestBodyValidateError,setActiveExamplesMember:()=>setActiveExamplesMember,setRequestBodyInclusion:()=>setRequestBodyInclusion,setRequestBodyValidateError:()=>setRequestBodyValidateError,setRequestBodyValue:()=>setRequestBodyValue,setRequestContentType:()=>setRequestContentType,setResponseContentType:()=>setResponseContentType,setRetainRequestBodyValueFlag:()=>setRetainRequestBodyValueFlag,setSelectedServer:()=>setSelectedServer,setServerVariableValue:()=>setServerVariableValue});var Te={};__webpack_require__.r(Te),__webpack_require__.d(Te,{activeExamplesMember:()=>yP,hasUserEditedBody:()=>fP,requestBodyErrors:()=>gP,requestBodyInclusionSetting:()=>mP,requestBodyValue:()=>hP,requestContentType:()=>vP,responseContentType:()=>bP,selectDefaultRequestBodyValue:()=>selectDefaultRequestBodyValue,selectedServer:()=>pP,serverEffectiveValue:()=>EP,serverVariableValue:()=>_P,serverVariables:()=>SP,shouldRetainRequestBodyValue:()=>dP,validOperationMethods:()=>xP,validateBeforeExecute:()=>wP,validateShallowRequired:()=>validateShallowRequired});var Re=__webpack_require__(96540);function formatProdErrorMessage(s){return`Minified Redux error #${s}; visit https://redux.js.org/Errors?code=${s} for the full message or use the non-minified dev environment for full errors. `}var $e=(()=>\"function\"==typeof Symbol&&Symbol.observable||\"@@observable\")(),randomString=()=>Math.random().toString(36).substring(7).split(\"\").join(\".\"),qe={INIT:`@@redux/INIT${randomString()}`,REPLACE:`@@redux/REPLACE${randomString()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${randomString()}`};function isPlainObject(s){if(\"object\"!=typeof s||null===s)return!1;let o=s;for(;null!==Object.getPrototypeOf(o);)o=Object.getPrototypeOf(o);return Object.getPrototypeOf(s)===o||null===Object.getPrototypeOf(s)}function createStore(s,o,i){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(2));if(\"function\"==typeof o&&\"function\"==typeof i||\"function\"==typeof i&&\"function\"==typeof arguments[3])throw new Error(formatProdErrorMessage(0));if(\"function\"==typeof o&&void 0===i&&(i=o,o=void 0),void 0!==i){if(\"function\"!=typeof i)throw new Error(formatProdErrorMessage(1));return i(createStore)(s,o)}let a=s,u=o,_=new Map,w=_,x=0,C=!1;function ensureCanMutateNextListeners(){w===_&&(w=new Map,_.forEach(((s,o)=>{w.set(o,s)})))}function getState(){if(C)throw new Error(formatProdErrorMessage(3));return u}function subscribe(s){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(4));if(C)throw new Error(formatProdErrorMessage(5));let o=!0;ensureCanMutateNextListeners();const i=x++;return w.set(i,s),function unsubscribe(){if(o){if(C)throw new Error(formatProdErrorMessage(6));o=!1,ensureCanMutateNextListeners(),w.delete(i),_=null}}}function dispatch(s){if(!isPlainObject(s))throw new Error(formatProdErrorMessage(7));if(void 0===s.type)throw new Error(formatProdErrorMessage(8));if(\"string\"!=typeof s.type)throw new Error(formatProdErrorMessage(17));if(C)throw new Error(formatProdErrorMessage(9));try{C=!0,u=a(u,s)}finally{C=!1}return(_=w).forEach((s=>{s()})),s}dispatch({type:qe.INIT});return{dispatch,subscribe,getState,replaceReducer:function replaceReducer(s){if(\"function\"!=typeof s)throw new Error(formatProdErrorMessage(10));a=s,dispatch({type:qe.REPLACE})},[$e]:function observable(){const s=subscribe;return{subscribe(o){if(\"object\"!=typeof o||null===o)throw new Error(formatProdErrorMessage(11));function observeState(){const s=o;s.next&&s.next(getState())}observeState();return{unsubscribe:s(observeState)}},[$e](){return this}}}}}function bindActionCreator(s,o){return function(...i){return o(s.apply(this,i))}}function compose(...s){return 0===s.length?s=>s:1===s.length?s[0]:s.reduce(((s,o)=>(...i)=>s(o(...i))))}var ze=__webpack_require__(9404),We=__webpack_require__.n(ze),He=__webpack_require__(81919),Ye=__webpack_require__.n(He),Xe=__webpack_require__(89593),Qe=__webpack_require__(20334),et=__webpack_require__(55364),tt=__webpack_require__.n(et);const rt=\"err_new_thrown_err\",nt=\"err_new_thrown_err_batch\",st=\"err_new_spec_err\",ot=\"err_new_spec_err_batch\",it=\"err_new_auth_err\",at=\"err_clear\",ct=\"err_clear_by\";function newThrownErr(s){return{type:rt,payload:(0,Qe.serializeError)(s)}}function newThrownErrBatch(s){return{type:nt,payload:s}}function newSpecErr(s){return{type:st,payload:s}}function newSpecErrBatch(s){return{type:ot,payload:s}}function newAuthErr(s){return{type:it,payload:s}}function clear(s={}){return{type:at,payload:s}}function clearBy(s=()=>!0){return{type:ct,payload:s}}const lt=function makeWindow(){var s={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if(\"undefined\"==typeof window)return s;try{s=window;for(var o of[\"File\",\"Blob\",\"FormData\"])o in window&&(s[o]=window[o])}catch(s){console.error(s)}return s}();__webpack_require__(84058),__webpack_require__(55808);var ut=__webpack_require__(50104),pt=__webpack_require__.n(ut),ht=__webpack_require__(7309),dt=__webpack_require__.n(ht),mt=__webpack_require__(42426),gt=__webpack_require__.n(mt),yt=__webpack_require__(75288),vt=__webpack_require__.n(yt),bt=__webpack_require__(1882),_t=__webpack_require__.n(bt),St=__webpack_require__(2205),Et=__webpack_require__.n(St),wt=__webpack_require__(53209),xt=__webpack_require__.n(wt),kt=__webpack_require__(62802),Ot=__webpack_require__.n(kt);const Ct=We().Set.of(\"type\",\"format\",\"items\",\"default\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"enum\",\"multipleOf\");function getParameterSchema(s,{isOAS3:o}={}){if(!We().Map.isMap(s))return{schema:We().Map(),parameterContentMediaType:null};if(!o)return\"body\"===s.get(\"in\")?{schema:s.get(\"schema\",We().Map()),parameterContentMediaType:null}:{schema:s.filter(((s,o)=>Ct.includes(o))),parameterContentMediaType:null};if(s.get(\"content\")){const o=s.get(\"content\",We().Map({})).keySeq().first();return{schema:s.getIn([\"content\",o,\"schema\"],We().Map()),parameterContentMediaType:o}}return{schema:s.get(\"schema\")?s.get(\"schema\",We().Map()):We().Map(),parameterContentMediaType:null}}var At=__webpack_require__(48287).Buffer;const jt=\"default\",isImmutable=s=>We().Iterable.isIterable(s),immutableToJS=s=>isImmutable(s)?s.toJS():s;function objectify(s){return isObject(s)?immutableToJS(s):{}}function fromJSOrdered(s){if(isImmutable(s))return s;if(s instanceof lt.File)return s;if(!isObject(s))return s;if(Array.isArray(s))return We().Seq(s).map(fromJSOrdered).toList();if(_t()(s.entries)){const o=function createObjWithHashedKeys(s){if(!_t()(s.entries))return s;const o={},i=\"_**[]\",a={};for(let u of s.entries())if(o[u[0]]||a[u[0]]&&a[u[0]].containsMultiple){if(!a[u[0]]){a[u[0]]={containsMultiple:!0,length:1},o[`${u[0]}${i}${a[u[0]].length}`]=o[u[0]],delete o[u[0]]}a[u[0]].length+=1,o[`${u[0]}${i}${a[u[0]].length}`]=u[1]}else o[u[0]]=u[1];return o}(s);return We().OrderedMap(o).map(fromJSOrdered)}return We().OrderedMap(s).map(fromJSOrdered)}function normalizeArray(s){return Array.isArray(s)?s:[s]}function isFn(s){return\"function\"==typeof s}function isObject(s){return!!s&&\"object\"==typeof s}function isFunc(s){return\"function\"==typeof s}function isArray(s){return Array.isArray(s)}const It=pt();function objMap(s,o){return Object.keys(s).reduce(((i,a)=>(i[a]=o(s[a],a),i)),{})}function objReduce(s,o){return Object.keys(s).reduce(((i,a)=>{let u=o(s[a],a);return u&&\"object\"==typeof u&&Object.assign(i,u),i}),{})}function systemThunkMiddleware(s){return({dispatch:o,getState:i})=>o=>i=>\"function\"==typeof i?i(s()):o(i)}function validateValueBySchema(s,o,i,a,u){if(!o)return[];let _=[],w=o.get(\"nullable\"),x=o.get(\"required\"),C=o.get(\"maximum\"),j=o.get(\"minimum\"),L=o.get(\"type\"),B=o.get(\"format\"),$=o.get(\"maxLength\"),V=o.get(\"minLength\"),U=o.get(\"uniqueItems\"),z=o.get(\"maxItems\"),Y=o.get(\"minItems\"),Z=o.get(\"pattern\");const ee=i||!0===x,ie=null!=s,ae=ee||ie&&\"array\"===L||!(!ee&&!ie),ce=w&&null===s;if(ee&&!ie&&!ce&&!a&&!L)return _.push(\"Required field is not provided\"),_;if(ce||!L||!ae)return[];let le=\"string\"===L&&s,pe=\"array\"===L&&Array.isArray(s)&&s.length,de=\"array\"===L&&We().List.isList(s)&&s.count();const fe=[le,pe,de,\"array\"===L&&\"string\"==typeof s&&s,\"file\"===L&&s instanceof lt.File,\"boolean\"===L&&(s||!1===s),\"number\"===L&&(s||0===s),\"integer\"===L&&(s||0===s),\"object\"===L&&\"object\"==typeof s&&null!==s,\"object\"===L&&\"string\"==typeof s&&s].some((s=>!!s));if(ee&&!fe&&!a)return _.push(\"Required field is not provided\"),_;if(\"object\"===L&&(null===u||\"application/json\"===u)){let i=s;if(\"string\"==typeof s)try{i=JSON.parse(s)}catch(s){return _.push(\"Parameter string value must be valid JSON\"),_}o&&o.has(\"required\")&&isFunc(x.isList)&&x.isList()&&x.forEach((s=>{void 0===i[s]&&_.push({propKey:s,error:\"Required property not found\"})})),o&&o.has(\"properties\")&&o.get(\"properties\").forEach(((s,o)=>{const w=validateValueBySchema(i[o],s,!1,a,u);_.push(...w.map((s=>({propKey:o,error:s}))))}))}if(Z){let o=((s,o)=>{if(!new RegExp(o).test(s))return\"Value must follow pattern \"+o})(s,Z);o&&_.push(o)}if(Y&&\"array\"===L){let o=((s,o)=>{if(!s&&o>=1||s&&s.length<o)return`Array must contain at least ${o} item${1===o?\"\":\"s\"}`})(s,Y);o&&_.push(o)}if(z&&\"array\"===L){let o=((s,o)=>{if(s&&s.length>o)return`Array must not contain more then ${o} item${1===o?\"\":\"s\"}`})(s,z);o&&_.push({needRemove:!0,error:o})}if(U&&\"array\"===L){let o=((s,o)=>{if(s&&(\"true\"===o||!0===o)){const o=(0,ze.fromJS)(s),i=o.toSet();if(s.length>i.size){let s=(0,ze.Set)();if(o.forEach(((i,a)=>{o.filter((s=>isFunc(s.equals)?s.equals(i):s===i)).size>1&&(s=s.add(a))})),0!==s.size)return s.map((s=>({index:s,error:\"No duplicates allowed.\"}))).toArray()}}})(s,U);o&&_.push(...o)}if($||0===$){let o=((s,o)=>{if(s.length>o)return`Value must be no longer than ${o} character${1!==o?\"s\":\"\"}`})(s,$);o&&_.push(o)}if(V){let o=((s,o)=>{if(s.length<o)return`Value must be at least ${o} character${1!==o?\"s\":\"\"}`})(s,V);o&&_.push(o)}if(C||0===C){let o=((s,o)=>{if(s>o)return`Value must be less than or equal to ${o}`})(s,C);o&&_.push(o)}if(j||0===j){let o=((s,o)=>{if(s<o)return`Value must be greater than or equal to ${o}`})(s,j);o&&_.push(o)}if(\"string\"===L){let o;if(o=\"date-time\"===B?(s=>{if(isNaN(Date.parse(s)))return\"Value must be a DateTime\"})(s):\"uuid\"===B?(s=>{if(s=s.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(s))return\"Value must be a Guid\"})(s):(s=>{if(s&&\"string\"!=typeof s)return\"Value must be a string\"})(s),!o)return _;_.push(o)}else if(\"boolean\"===L){let o=(s=>{if(\"true\"!==s&&\"false\"!==s&&!0!==s&&!1!==s)return\"Value must be a boolean\"})(s);if(!o)return _;_.push(o)}else if(\"number\"===L){let o=(s=>{if(!/^-?\\d+(\\.?\\d+)?$/.test(s))return\"Value must be a number\"})(s);if(!o)return _;_.push(o)}else if(\"integer\"===L){let o=(s=>{if(!/^-?\\d+$/.test(s))return\"Value must be an integer\"})(s);if(!o)return _;_.push(o)}else if(\"array\"===L){if(!pe&&!de)return _;s&&s.forEach(((s,i)=>{const w=validateValueBySchema(s,o.get(\"items\"),!1,a,u);_.push(...w.map((s=>({index:i,error:s}))))}))}else if(\"file\"===L){let o=(s=>{if(s&&!(s instanceof lt.File))return\"Value must be a file\"})(s);if(!o)return _;_.push(o)}return _}const utils_btoa=s=>{let o;return o=s instanceof At?s:At.from(s.toString(),\"utf-8\"),o.toString(\"base64\")},Pt={operationsSorter:{alpha:(s,o)=>s.get(\"path\").localeCompare(o.get(\"path\")),method:(s,o)=>s.get(\"method\").localeCompare(o.get(\"method\"))},tagsSorter:{alpha:(s,o)=>s.localeCompare(o)}},buildFormData=s=>{let o=[];for(let i in s){let a=s[i];void 0!==a&&\"\"!==a&&o.push([i,\"=\",encodeURIComponent(a).replace(/%20/g,\"+\")].join(\"\"))}return o.join(\"&\")},shallowEqualKeys=(s,o,i)=>!!dt()(i,(i=>vt()(s[i],o[i])));function requiresValidationURL(s){return!(!s||s.indexOf(\"localhost\")>=0||s.indexOf(\"127.0.0.1\")>=0||\"none\"===s)}const createDeepLinkPath=s=>\"string\"==typeof s||s instanceof String?s.trim().replace(/\\s/g,\"%20\"):\"\",escapeDeepLinkPath=s=>Et()(createDeepLinkPath(s).replace(/%20/g,\"_\")),getExtensions=s=>{const o=/^x-/;return ze.Map.isMap(s)?s.filter(((s,i)=>o.test(i))):Object.keys(s).filter((s=>o.test(s)))},getCommonExtensions=s=>s.filter(((s,o)=>/^pattern|maxLength|minLength|maximum|minimum/.test(o)));function deeplyStripKey(s,o,i=()=>!0){if(\"object\"!=typeof s||Array.isArray(s)||null===s||!o)return s;const a=Object.assign({},s);return Object.keys(a).forEach((s=>{s===o&&i(a[s],s)?delete a[s]:a[s]=deeplyStripKey(a[s],o,i)})),a}function stringify(s){if(\"string\"==typeof s)return s;if(s&&s.toJS&&(s=s.toJS()),\"object\"==typeof s&&null!==s)try{return JSON.stringify(s,null,2)}catch(o){return String(s)}return null==s?\"\":s.toString()}function paramToIdentifier(s,{returnAll:o=!1,allowHashes:i=!0}={}){if(!We().Map.isMap(s))throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\");const a=s.get(\"name\"),u=s.get(\"in\");let _=[];return s&&s.hashCode&&u&&a&&i&&_.push(`${u}.${a}.hash-${s.hashCode()}`),u&&a&&_.push(`${u}.${a}`),_.push(a),o?_:_[0]||\"\"}function paramToValue(s,o){return paramToIdentifier(s,{returnAll:!0}).map((s=>o[s])).filter((s=>void 0!==s))[0]}function b64toB64UrlEncoded(s){return s.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=/g,\"\")}const isEmptyValue=s=>!s||!(!isImmutable(s)||!s.isEmpty()),idFn=s=>s;function createStoreWithMiddleware(s,o,i){let a=[systemThunkMiddleware(i)];return createStore(s,o,(lt.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||compose)(function applyMiddleware(...s){return o=>(i,a)=>{const u=o(i,a);let dispatch=()=>{throw new Error(formatProdErrorMessage(15))};const _={getState:u.getState,dispatch:(s,...o)=>dispatch(s,...o)},w=s.map((s=>s(_)));return dispatch=compose(...w)(u.dispatch),{...u,dispatch}}}(...a)))}class Store{constructor(s={}){Ye()(this,{state:{},plugins:[],system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},s),this.getSystem=this._getSystem.bind(this),this.store=function configureStore(s,o,i){return createStoreWithMiddleware(s,o,i)}(idFn,(0,ze.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}getStore(){return this.store}register(s,o=!0){var i=combinePlugins(s,this.getSystem());systemExtend(this.system,i),o&&this.buildSystem();callAfterLoad.call(this.system,s,this.getSystem())&&this.buildSystem()}buildSystem(s=!0){let o=this.getStore().dispatch,i=this.getStore().getState;this.boundSystem=Object.assign({},this.getRootInjects(),this.getWrappedAndBoundActions(o),this.getWrappedAndBoundSelectors(i,this.getSystem),this.getStateThunks(i),this.getFn(),this.getConfigs()),s&&this.rebuildReducer()}_getSystem(){return this.boundSystem}getRootInjects(){return Object.assign({getSystem:this.getSystem,getStore:this.getStore.bind(this),getComponents:this.getComponents.bind(this),getState:this.getStore().getState,getConfigs:this._getConfigs.bind(this),Im:We(),React:Re},this.system.rootInjects||{})}_getConfigs(){return this.system.configs}getConfigs(){return{configs:this.system.configs}}setConfigs(s){this.system.configs=s}rebuildReducer(){this.store.replaceReducer(function buildReducer(s,o){return function allReducers(s,o){let i=Object.keys(s).reduce(((i,a)=>(i[a]=function makeReducer(s,o){return(i=new ze.Map,a)=>{if(!s)return i;let u=s[a.type];if(u){const s=wrapWithTryCatch(u,o)(i,a);return null===s?i:s}return i}}(s[a],o),i)),{});if(!Object.keys(i).length)return idFn;return(0,Xe.H)(i)}(objMap(s,(s=>s.reducers)),o)}(this.system.statePlugins,this.getSystem))}getType(s){let o=s[0].toUpperCase()+s.slice(1);return objReduce(this.system.statePlugins,((i,a)=>{let u=i[s];if(u)return{[a+o]:u}}))}getSelectors(){return this.getType(\"selectors\")}getActions(){return objMap(this.getType(\"actions\"),(s=>objReduce(s,((s,o)=>{if(isFn(s))return{[o]:s}}))))}getWrappedAndBoundActions(s){return objMap(this.getBoundActions(s),((s,o)=>{let i=this.system.statePlugins[o.slice(0,-7)].wrapActions;return i?objMap(s,((s,o)=>{let a=i[o];return a?(Array.isArray(a)||(a=[a]),a.reduce(((s,o)=>{let newAction=(...i)=>o(s,this.getSystem())(...i);if(!isFn(newAction))throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\");return wrapWithTryCatch(newAction,this.getSystem)}),s||Function.prototype)):s})):s}))}getWrappedAndBoundSelectors(s,o){return objMap(this.getBoundSelectors(s,o),((o,i)=>{let a=[i.slice(0,-9)],u=this.system.statePlugins[a].wrapSelectors;return u?objMap(o,((o,i)=>{let _=u[i];return _?(Array.isArray(_)||(_=[_]),_.reduce(((o,i)=>{let wrappedSelector=(...u)=>i(o,this.getSystem())(s().getIn(a),...u);if(!isFn(wrappedSelector))throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\");return wrappedSelector}),o||Function.prototype)):o})):o}))}getStates(s){return Object.keys(this.system.statePlugins).reduce(((o,i)=>(o[i]=s.get(i),o)),{})}getStateThunks(s){return Object.keys(this.system.statePlugins).reduce(((o,i)=>(o[i]=()=>s().get(i),o)),{})}getFn(){return{fn:this.system.fn}}getComponents(s){const o=this.system.components[s];return Array.isArray(o)?o.reduce(((s,o)=>o(s,this.getSystem()))):void 0!==s?this.system.components[s]:this.system.components}getBoundSelectors(s,o){return objMap(this.getSelectors(),((i,a)=>{let u=[a.slice(0,-9)];return objMap(i,(i=>(...a)=>{let _=wrapWithTryCatch(i,this.getSystem).apply(null,[s().getIn(u),...a]);return\"function\"==typeof _&&(_=wrapWithTryCatch(_,this.getSystem)(o())),_}))}))}getBoundActions(s){s=s||this.getStore().dispatch;const o=this.getActions(),process=s=>\"function\"!=typeof s?objMap(s,(s=>process(s))):(...o)=>{var i=null;try{i=s(...o)}catch(s){i={type:rt,error:!0,payload:(0,Qe.serializeError)(s)}}finally{return i}};return objMap(o,(o=>function bindActionCreators(s,o){if(\"function\"==typeof s)return bindActionCreator(s,o);if(\"object\"!=typeof s||null===s)throw new Error(formatProdErrorMessage(16));const i={};for(const a in s){const u=s[a];\"function\"==typeof u&&(i[a]=bindActionCreator(u,o))}return i}(process(o),s)))}getMapStateToProps(){return()=>Object.assign({},this.getSystem())}getMapDispatchToProps(s){return o=>Ye()({},this.getWrappedAndBoundActions(o),this.getFn(),s)}}function combinePlugins(s,o){return isObject(s)&&!isArray(s)?tt()({},s):isFunc(s)?combinePlugins(s(o),o):isArray(s)?s.map((s=>combinePlugins(s,o))).reduce(systemExtend,{components:o.getComponents()}):{}}function callAfterLoad(s,o,{hasLoaded:i}={}){let a=i;return isObject(s)&&!isArray(s)&&\"function\"==typeof s.afterLoad&&(a=!0,wrapWithTryCatch(s.afterLoad,o.getSystem).call(this,o)),isFunc(s)?callAfterLoad.call(this,s(o),o,{hasLoaded:a}):isArray(s)?s.map((s=>callAfterLoad.call(this,s,o,{hasLoaded:a}))):a}function systemExtend(s={},o={}){if(!isObject(s))return{};if(!isObject(o))return s;o.wrapComponents&&(objMap(o.wrapComponents,((i,a)=>{const u=s.components&&s.components[a];u&&Array.isArray(u)?(s.components[a]=u.concat([i]),delete o.wrapComponents[a]):u&&(s.components[a]=[u,i],delete o.wrapComponents[a])})),Object.keys(o.wrapComponents).length||delete o.wrapComponents);const{statePlugins:i}=s;if(isObject(i))for(let s in i){const a=i[s];if(!isObject(a))continue;const{wrapActions:u,wrapSelectors:_}=a;if(isObject(u))for(let i in u){let a=u[i];Array.isArray(a)||(a=[a],u[i]=a),o&&o.statePlugins&&o.statePlugins[s]&&o.statePlugins[s].wrapActions&&o.statePlugins[s].wrapActions[i]&&(o.statePlugins[s].wrapActions[i]=u[i].concat(o.statePlugins[s].wrapActions[i]))}if(isObject(_))for(let i in _){let a=_[i];Array.isArray(a)||(a=[a],_[i]=a),o&&o.statePlugins&&o.statePlugins[s]&&o.statePlugins[s].wrapSelectors&&o.statePlugins[s].wrapSelectors[i]&&(o.statePlugins[s].wrapSelectors[i]=_[i].concat(o.statePlugins[s].wrapSelectors[i]))}}return Ye()(s,o)}function wrapWithTryCatch(s,o,{logErrors:i=!0}={}){return\"function\"!=typeof s?s:function(...a){try{return s.call(this,...a)}catch(s){if(i){const{uncaughtExceptionHandler:i}=o().getConfigs();\"function\"==typeof i?i(s):console.error(s)}return null}}}var Tt=__webpack_require__(61160),Nt=__webpack_require__.n(Tt);const Mt=\"show_popup\",Rt=\"authorize\",Dt=\"logout\",Lt=\"authorize_oauth2\",Ft=\"configure_auth\",Bt=\"restore_authorization\";function showDefinitions(s){return{type:Mt,payload:s}}function authorize(s){return{type:Rt,payload:s}}const authorizeWithPersistOption=s=>({authActions:o})=>{o.authorize(s),o.persistAuthorizationIfNeeded()};function logout(s){return{type:Dt,payload:s}}const logoutWithPersistOption=s=>({authActions:o})=>{o.logout(s),o.persistAuthorizationIfNeeded()},preAuthorizeImplicit=s=>({authActions:o,errActions:i})=>{let{auth:a,token:u,isValid:_}=s,{schema:w,name:x}=a,C=w.get(\"flow\");delete lt.swaggerUIRedirectOauth2,\"accessCode\"===C||_||i.newAuthErr({authId:x,source:\"auth\",level:\"warning\",message:\"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"}),u.error?i.newAuthErr({authId:x,source:\"auth\",level:\"error\",message:JSON.stringify(u)}):o.authorizeOauth2WithPersistOption({auth:a,token:u})};function authorizeOauth2(s){return{type:Lt,payload:s}}const authorizeOauth2WithPersistOption=s=>({authActions:o})=>{o.authorizeOauth2(s),o.persistAuthorizationIfNeeded()},authorizePassword=s=>({authActions:o})=>{let{schema:i,name:a,username:u,password:_,passwordType:w,clientId:x,clientSecret:C}=s,j={grant_type:\"password\",scope:s.scopes.join(\" \"),username:u,password:_},L={};switch(w){case\"request-body\":!function setClientIdAndSecret(s,o,i){o&&Object.assign(s,{client_id:o});i&&Object.assign(s,{client_secret:i})}(j,x,C);break;case\"basic\":L.Authorization=\"Basic \"+utils_btoa(x+\":\"+C);break;default:console.warn(`Warning: invalid passwordType ${w} was passed, not including client id and secret`)}return o.authorizeRequest({body:buildFormData(j),url:i.get(\"tokenUrl\"),name:a,headers:L,query:{},auth:s})};const authorizeApplication=s=>({authActions:o})=>{let{schema:i,scopes:a,name:u,clientId:_,clientSecret:w}=s,x={Authorization:\"Basic \"+utils_btoa(_+\":\"+w)},C={grant_type:\"client_credentials\",scope:a.join(\" \")};return o.authorizeRequest({body:buildFormData(C),name:u,url:i.get(\"tokenUrl\"),auth:s,headers:x})},authorizeAccessCodeWithFormParams=({auth:s,redirectUrl:o})=>({authActions:i})=>{let{schema:a,name:u,clientId:_,clientSecret:w,codeVerifier:x}=s,C={grant_type:\"authorization_code\",code:s.code,client_id:_,client_secret:w,redirect_uri:o,code_verifier:x};return i.authorizeRequest({body:buildFormData(C),name:u,url:a.get(\"tokenUrl\"),auth:s})},authorizeAccessCodeWithBasicAuthentication=({auth:s,redirectUrl:o})=>({authActions:i})=>{let{schema:a,name:u,clientId:_,clientSecret:w,codeVerifier:x}=s,C={Authorization:\"Basic \"+utils_btoa(_+\":\"+w)},j={grant_type:\"authorization_code\",code:s.code,client_id:_,redirect_uri:o,code_verifier:x};return i.authorizeRequest({body:buildFormData(j),name:u,url:a.get(\"tokenUrl\"),auth:s,headers:C})},authorizeRequest=s=>({fn:o,getConfigs:i,authActions:a,errActions:u,oas3Selectors:_,specSelectors:w,authSelectors:x})=>{let C,{body:j,query:L={},headers:B={},name:$,url:V,auth:U}=s,{additionalQueryStringParams:z}=x.getConfigs()||{};if(w.isOAS3()){let s=_.serverEffectiveValue(_.selectedServer());C=Nt()(V,s,!0)}else C=Nt()(V,w.url(),!0);\"object\"==typeof z&&(C.query=Object.assign({},C.query,z));const Y=C.toString();let Z=Object.assign({Accept:\"application/json, text/plain, */*\",\"Content-Type\":\"application/x-www-form-urlencoded\",\"X-Requested-With\":\"XMLHttpRequest\"},B);o.fetch({url:Y,method:\"post\",headers:Z,query:L,body:j,requestInterceptor:i().requestInterceptor,responseInterceptor:i().responseInterceptor}).then((function(s){let o=JSON.parse(s.data),i=o&&(o.error||\"\"),_=o&&(o.parseError||\"\");s.ok?i||_?u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:JSON.stringify(o)}):a.authorizeOauth2WithPersistOption({auth:U,token:o}):u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:s.statusText})})).catch((s=>{let o=new Error(s).message;if(s.response&&s.response.data){const i=s.response.data;try{const s=\"string\"==typeof i?JSON.parse(i):i;s.error&&(o+=`, error: ${s.error}`),s.error_description&&(o+=`, description: ${s.error_description}`)}catch(s){}}u.newAuthErr({authId:$,level:\"error\",source:\"auth\",message:o})}))};function configureAuth(s){return{type:Ft,payload:s}}function restoreAuthorization(s){return{type:Bt,payload:s}}const persistAuthorizationIfNeeded=()=>({authSelectors:s,getConfigs:o})=>{if(!o().persistAuthorization)return;const i=s.authorized().toJS();localStorage.setItem(\"authorized\",JSON.stringify(i))},authPopup=(s,o)=>()=>{lt.swaggerUIRedirectOauth2=o,lt.open(s)},$t={[Mt]:(s,{payload:o})=>s.set(\"showDefinitions\",o),[Rt]:(s,{payload:o})=>{let i=(0,ze.fromJS)(o),a=s.get(\"authorized\")||(0,ze.Map)();return i.entrySeq().forEach((([o,i])=>{if(!isFunc(i.getIn))return s.set(\"authorized\",a);let u=i.getIn([\"schema\",\"type\"]);if(\"apiKey\"===u||\"http\"===u)a=a.set(o,i);else if(\"basic\"===u){let s=i.getIn([\"value\",\"username\"]),u=i.getIn([\"value\",\"password\"]);a=a.setIn([o,\"value\"],{username:s,header:\"Basic \"+utils_btoa(s+\":\"+u)}),a=a.setIn([o,\"schema\"],i.get(\"schema\"))}})),s.set(\"authorized\",a)},[Lt]:(s,{payload:o})=>{let i,{auth:a,token:u}=o;a.token=Object.assign({},u),i=(0,ze.fromJS)(a);let _=s.get(\"authorized\")||(0,ze.Map)();return _=_.set(i.get(\"name\"),i),s.set(\"authorized\",_)},[Dt]:(s,{payload:o})=>{let i=s.get(\"authorized\").withMutations((s=>{o.forEach((o=>{s.delete(o)}))}));return s.set(\"authorized\",i)},[Ft]:(s,{payload:o})=>s.set(\"configs\",o),[Bt]:(s,{payload:o})=>s.set(\"authorized\",(0,ze.fromJS)(o.authorized))};function assertIsFunction(s,o=\"expected a function, instead received \"+typeof s){if(\"function\"!=typeof s)throw new TypeError(o)}var ensureIsArray=s=>Array.isArray(s)?s:[s];function getDependencies(s){const o=Array.isArray(s[0])?s[0]:s;return function assertIsArrayOfFunctions(s,o=\"expected all items to be functions, instead received the following types: \"){if(!s.every((s=>\"function\"==typeof s))){const i=s.map((s=>\"function\"==typeof s?`function ${s.name||\"unnamed\"}()`:typeof s)).join(\", \");throw new TypeError(`${o}[${i}]`)}}(o,\"createSelector expects all input-selectors to be functions, but received the following types: \"),o}Symbol(),Object.getPrototypeOf({});var qt=\"undefined\"!=typeof WeakRef?WeakRef:class{constructor(s){this.value=s}deref(){return this.value}};function weakMapMemoize(s,o={}){let i={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:a}=o;let u,_=0;function memoized(){let o=i;const{length:w}=arguments;for(let s=0,i=w;s<i;s++){const i=arguments[s];if(\"function\"==typeof i||\"object\"==typeof i&&null!==i){let s=o.o;null===s&&(o.o=s=new WeakMap);const a=s.get(i);void 0===a?(o={s:0,v:void 0,o:null,p:null},s.set(i,o)):o=a}else{let s=o.p;null===s&&(o.p=s=new Map);const a=s.get(i);void 0===a?(o={s:0,v:void 0,o:null,p:null},s.set(i,o)):o=a}}const x=o;let C;if(1===o.s)C=o.v;else if(C=s.apply(null,arguments),_++,a){const s=u?.deref?.()??u;null!=s&&a(s,C)&&(C=s,0!==_&&_--);u=\"object\"==typeof C&&null!==C||\"function\"==typeof C?new qt(C):C}return x.s=1,x.v=C,C}return memoized.clearCache=()=>{i={s:0,v:void 0,o:null,p:null},memoized.resetResultsCount()},memoized.resultsCount=()=>_,memoized.resetResultsCount=()=>{_=0},memoized}function createSelectorCreator(s,...o){const i=\"function\"==typeof s?{memoize:s,memoizeOptions:o}:s,createSelector2=(...s)=>{let o,a=0,u=0,_={},w=s.pop();\"object\"==typeof w&&(_=w,w=s.pop()),assertIsFunction(w,`createSelector expects an output function after the inputs, but received: [${typeof w}]`);const x={...i,..._},{memoize:C,memoizeOptions:j=[],argsMemoize:L=weakMapMemoize,argsMemoizeOptions:B=[],devModeChecks:$={}}=x,V=ensureIsArray(j),U=ensureIsArray(B),z=getDependencies(s),Y=C((function recomputationWrapper(){return a++,w.apply(null,arguments)}),...V);const Z=L((function dependenciesChecker(){u++;const s=function collectInputSelectorResults(s,o){const i=[],{length:a}=s;for(let u=0;u<a;u++)i.push(s[u].apply(null,o));return i}(z,arguments);return o=Y.apply(null,s),o}),...U);return Object.assign(Z,{resultFunc:w,memoizedResultFunc:Y,dependencies:z,dependencyRecomputations:()=>u,resetDependencyRecomputations:()=>{u=0},lastResult:()=>o,recomputations:()=>a,resetRecomputations:()=>{a=0},memoize:C,argsMemoize:L})};return Object.assign(createSelector2,{withTypes:()=>createSelector2}),createSelector2}var Vt=createSelectorCreator(weakMapMemoize),Ut=Object.assign(((s,o=Vt)=>{!function assertIsObject(s,o=\"expected an object, instead received \"+typeof s){if(\"object\"!=typeof s)throw new TypeError(o)}(s,\"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a \"+typeof s);const i=Object.keys(s);return o(i.map((o=>s[o])),((...s)=>s.reduce(((s,o,a)=>(s[i[a]]=o,s)),{})))}),{withTypes:()=>Ut});const state=s=>s,zt=Vt(state,(s=>s.get(\"showDefinitions\"))),Wt=Vt(state,(()=>({specSelectors:s})=>{let o=s.securityDefinitions()||(0,ze.Map)({}),i=(0,ze.List)();return o.entrySeq().forEach((([s,o])=>{let a=(0,ze.Map)();a=a.set(s,o),i=i.push(a)})),i})),selectAuthPath=(s,o)=>({specSelectors:s})=>(0,ze.List)(s.isOAS3()?[\"components\",\"securitySchemes\",o]:[\"securityDefinitions\",o]),getDefinitionsByNames=(s,o)=>({specSelectors:s})=>{console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\");let i=s.securityDefinitions(),a=(0,ze.List)();return o.valueSeq().forEach((s=>{let o=(0,ze.Map)();s.entrySeq().forEach((([s,a])=>{let u,_=i.get(s);\"oauth2\"===_.get(\"type\")&&a.size&&(u=_.get(\"scopes\"),u.keySeq().forEach((s=>{a.contains(s)||(u=u.delete(s))})),_=_.set(\"allowedScopes\",u)),o=o.set(s,_)})),a=a.push(o)})),a},definitionsForRequirements=(s,o=(0,ze.List)())=>({authSelectors:s})=>{const i=s.definitionsToAuthorize()||(0,ze.List)();let a=(0,ze.List)();return i.forEach((s=>{let i=o.find((o=>o.get(s.keySeq().first())));i&&(s.forEach(((o,a)=>{if(\"oauth2\"===o.get(\"type\")){const u=i.get(a);let _=o.get(\"scopes\");ze.List.isList(u)&&ze.Map.isMap(_)&&(_.keySeq().forEach((s=>{u.contains(s)||(_=_.delete(s))})),s=s.set(a,o.set(\"scopes\",_)))}})),a=a.push(s))})),a},Jt=Vt(state,(s=>s.get(\"authorized\")||(0,ze.Map)())),isAuthorized=(s,o)=>({authSelectors:s})=>{let i=s.authorized();return ze.List.isList(o)?!!o.toJS().filter((s=>-1===Object.keys(s).map((s=>!!i.get(s))).indexOf(!1))).length:null},Ht=Vt(state,(s=>s.get(\"configs\"))),execute=(s,{authSelectors:o,specSelectors:i})=>({path:a,method:u,operation:_,extras:w})=>{let x={authorized:o.authorized()&&o.authorized().toJS(),definitions:i.securityDefinitions()&&i.securityDefinitions().toJS(),specSecurity:i.security()&&i.security().toJS()};return s({path:a,method:u,operation:_,securities:x,...w})},loaded=(s,o)=>i=>{const{getConfigs:a,authActions:u}=o,_=a();if(s(i),_.persistAuthorization){const s=localStorage.getItem(\"authorized\");s&&u.restoreAuthorization({authorized:JSON.parse(s)})}},wrap_actions_authorize=(s,o)=>i=>{s(i);if(o.getConfigs().persistAuthorization)try{const[{schema:s,value:o}]=Object.values(i),a=\"apiKey\"===s.get(\"type\"),u=\"cookie\"===s.get(\"in\");a&&u&&(document.cookie=`${s.get(\"name\")}=${o}; SameSite=None; Secure`)}catch(s){console.error(\"Error persisting cookie based apiKey in document.cookie.\",s)}},wrap_actions_logout=(s,o)=>i=>{const a=o.getConfigs(),u=o.authSelectors.authorized();try{a.persistAuthorization&&Array.isArray(i)&&i.forEach((s=>{const o=u.get(s,{}),i=\"apiKey\"===o.getIn([\"schema\",\"type\"]),a=\"cookie\"===o.getIn([\"schema\",\"in\"]);if(i&&a){const s=o.getIn([\"schema\",\"name\"]);document.cookie=`${s}=; Max-Age=-99999999`}}))}catch(s){console.error(\"Error deleting cookie based apiKey from document.cookie.\",s)}s(i)};var Kt=__webpack_require__(90179),Gt=__webpack_require__.n(Kt);class LockAuthIcon extends Re.Component{mapStateToProps(s,o){return{state:s,ownProps:Gt()(o,Object.keys(o.getSystem()))}}render(){const{getComponent:s,ownProps:o}=this.props,i=s(\"LockIcon\");return Re.createElement(i,o)}}const Yt=LockAuthIcon;class UnlockAuthIcon extends Re.Component{mapStateToProps(s,o){return{state:s,ownProps:Gt()(o,Object.keys(o.getSystem()))}}render(){const{getComponent:s,ownProps:o}=this.props,i=s(\"UnlockIcon\");return Re.createElement(i,o)}}const Xt=UnlockAuthIcon;function auth(){return{afterLoad(s){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=s.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=preauthorizeApiKey.bind(null,s),this.rootInjects.preauthorizeBasic=preauthorizeBasic.bind(null,s)},components:{LockAuthIcon:Yt,UnlockAuthIcon:Xt,LockAuthOperationIcon:Yt,UnlockAuthOperationIcon:Xt},statePlugins:{auth:{reducers:$t,actions:o,selectors:a,wrapActions:{authorize:wrap_actions_authorize,logout:wrap_actions_logout}},configs:{wrapActions:{loaded}},spec:{wrapActions:{execute}}}}}function preauthorizeBasic(s,o,i,a){const{authActions:{authorize:u},specSelectors:{specJson:_,isOAS3:w}}=s,x=w()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],C=_().getIn([...x,o]);return C?u({[o]:{value:{username:i,password:a},schema:C.toJS()}}):null}function preauthorizeApiKey(s,o,i){const{authActions:{authorize:a},specSelectors:{specJson:u,isOAS3:_}}=s,w=_()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],x=u().getIn([...w,o]);return x?a({[o]:{value:i,schema:x.toJS()}}):null}function isNothing(s){return null==s}var Qt=function repeat(s,o){var i,a=\"\";for(i=0;i<o;i+=1)a+=s;return a},Zt=function isNegativeZero(s){return 0===s&&Number.NEGATIVE_INFINITY===1/s},er={isNothing,isObject:function js_yaml_isObject(s){return\"object\"==typeof s&&null!==s},toArray:function toArray(s){return Array.isArray(s)?s:isNothing(s)?[]:[s]},repeat:Qt,isNegativeZero:Zt,extend:function extend(s,o){var i,a,u,_;if(o)for(i=0,a=(_=Object.keys(o)).length;i<a;i+=1)s[u=_[i]]=o[u];return s}};function formatError(s,o){var i=\"\",a=s.reason||\"(unknown reason)\";return s.mark?(s.mark.name&&(i+='in \"'+s.mark.name+'\" '),i+=\"(\"+(s.mark.line+1)+\":\"+(s.mark.column+1)+\")\",!o&&s.mark.snippet&&(i+=\"\\n\\n\"+s.mark.snippet),a+\" \"+i):a}function YAMLException$1(s,o){Error.call(this),this.name=\"YAMLException\",this.reason=s,this.mark=o,this.message=formatError(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||\"\"}YAMLException$1.prototype=Object.create(Error.prototype),YAMLException$1.prototype.constructor=YAMLException$1,YAMLException$1.prototype.toString=function toString(s){return this.name+\": \"+formatError(this,s)};var tr=YAMLException$1;function getLine(s,o,i,a,u){var _=\"\",w=\"\",x=Math.floor(u/2)-1;return a-o>x&&(o=a-x+(_=\" ... \").length),i-a>x&&(i=a+x-(w=\" ...\").length),{str:_+s.slice(o,i).replace(/\\t/g,\"→\")+w,pos:a-o+_.length}}function padStart(s,o){return er.repeat(\" \",o-s.length)+s}var rr=function makeSnippet(s,o){if(o=Object.create(o||null),!s.buffer)return null;o.maxLength||(o.maxLength=79),\"number\"!=typeof o.indent&&(o.indent=1),\"number\"!=typeof o.linesBefore&&(o.linesBefore=3),\"number\"!=typeof o.linesAfter&&(o.linesAfter=2);for(var i,a=/\\r?\\n|\\r|\\0/g,u=[0],_=[],w=-1;i=a.exec(s.buffer);)_.push(i.index),u.push(i.index+i[0].length),s.position<=i.index&&w<0&&(w=u.length-2);w<0&&(w=u.length-1);var x,C,j=\"\",L=Math.min(s.line+o.linesAfter,_.length).toString().length,B=o.maxLength-(o.indent+L+3);for(x=1;x<=o.linesBefore&&!(w-x<0);x++)C=getLine(s.buffer,u[w-x],_[w-x],s.position-(u[w]-u[w-x]),B),j=er.repeat(\" \",o.indent)+padStart((s.line-x+1).toString(),L)+\" | \"+C.str+\"\\n\"+j;for(C=getLine(s.buffer,u[w],_[w],s.position,B),j+=er.repeat(\" \",o.indent)+padStart((s.line+1).toString(),L)+\" | \"+C.str+\"\\n\",j+=er.repeat(\"-\",o.indent+L+3+C.pos)+\"^\\n\",x=1;x<=o.linesAfter&&!(w+x>=_.length);x++)C=getLine(s.buffer,u[w+x],_[w+x],s.position-(u[w]-u[w+x]),B),j+=er.repeat(\" \",o.indent)+padStart((s.line+x+1).toString(),L)+\" | \"+C.str+\"\\n\";return j.replace(/\\n$/,\"\")},nr=[\"kind\",\"multi\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"representName\",\"defaultStyle\",\"styleAliases\"],sr=[\"scalar\",\"sequence\",\"mapping\"];var ir=function Type$1(s,o){if(o=o||{},Object.keys(o).forEach((function(o){if(-1===nr.indexOf(o))throw new tr('Unknown option \"'+o+'\" is met in definition of \"'+s+'\" YAML type.')})),this.options=o,this.tag=s,this.kind=o.kind||null,this.resolve=o.resolve||function(){return!0},this.construct=o.construct||function(s){return s},this.instanceOf=o.instanceOf||null,this.predicate=o.predicate||null,this.represent=o.represent||null,this.representName=o.representName||null,this.defaultStyle=o.defaultStyle||null,this.multi=o.multi||!1,this.styleAliases=function compileStyleAliases(s){var o={};return null!==s&&Object.keys(s).forEach((function(i){s[i].forEach((function(s){o[String(s)]=i}))})),o}(o.styleAliases||null),-1===sr.indexOf(this.kind))throw new tr('Unknown kind \"'+this.kind+'\" is specified for \"'+s+'\" YAML type.')};function compileList(s,o){var i=[];return s[o].forEach((function(s){var o=i.length;i.forEach((function(i,a){i.tag===s.tag&&i.kind===s.kind&&i.multi===s.multi&&(o=a)})),i[o]=s})),i}function Schema$1(s){return this.extend(s)}Schema$1.prototype.extend=function extend(s){var o=[],i=[];if(s instanceof ir)i.push(s);else if(Array.isArray(s))i=i.concat(s);else{if(!s||!Array.isArray(s.implicit)&&!Array.isArray(s.explicit))throw new tr(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");s.implicit&&(o=o.concat(s.implicit)),s.explicit&&(i=i.concat(s.explicit))}o.forEach((function(s){if(!(s instanceof ir))throw new tr(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");if(s.loadKind&&\"scalar\"!==s.loadKind)throw new tr(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");if(s.multi)throw new tr(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\")})),i.forEach((function(s){if(!(s instanceof ir))throw new tr(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\")}));var a=Object.create(Schema$1.prototype);return a.implicit=(this.implicit||[]).concat(o),a.explicit=(this.explicit||[]).concat(i),a.compiledImplicit=compileList(a,\"implicit\"),a.compiledExplicit=compileList(a,\"explicit\"),a.compiledTypeMap=function compileMap(){var s,o,i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function collectType(s){s.multi?(i.multi[s.kind].push(s),i.multi.fallback.push(s)):i[s.kind][s.tag]=i.fallback[s.tag]=s}for(s=0,o=arguments.length;s<o;s+=1)arguments[s].forEach(collectType);return i}(a.compiledImplicit,a.compiledExplicit),a};var ar=Schema$1,cr=new ir(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(s){return null!==s?s:\"\"}}),lr=new ir(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(s){return null!==s?s:[]}}),ur=new ir(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(s){return null!==s?s:{}}}),pr=new ar({explicit:[cr,lr,ur]});var dr=new ir(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:function resolveYamlNull(s){if(null===s)return!0;var o=s.length;return 1===o&&\"~\"===s||4===o&&(\"null\"===s||\"Null\"===s||\"NULL\"===s)},construct:function constructYamlNull(){return null},predicate:function isNull(s){return null===s},represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"},empty:function(){return\"\"}},defaultStyle:\"lowercase\"});var fr=new ir(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:function resolveYamlBoolean(s){if(null===s)return!1;var o=s.length;return 4===o&&(\"true\"===s||\"True\"===s||\"TRUE\"===s)||5===o&&(\"false\"===s||\"False\"===s||\"FALSE\"===s)},construct:function constructYamlBoolean(s){return\"true\"===s||\"True\"===s||\"TRUE\"===s},predicate:function isBoolean(s){return\"[object Boolean]\"===Object.prototype.toString.call(s)},represent:{lowercase:function(s){return s?\"true\":\"false\"},uppercase:function(s){return s?\"TRUE\":\"FALSE\"},camelcase:function(s){return s?\"True\":\"False\"}},defaultStyle:\"lowercase\"});function isOctCode(s){return 48<=s&&s<=55}function isDecCode(s){return 48<=s&&s<=57}var mr=new ir(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:function resolveYamlInteger(s){if(null===s)return!1;var o,i,a=s.length,u=0,_=!1;if(!a)return!1;if(\"-\"!==(o=s[u])&&\"+\"!==o||(o=s[++u]),\"0\"===o){if(u+1===a)return!0;if(\"b\"===(o=s[++u])){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(\"0\"!==o&&\"1\"!==o)return!1;_=!0}return _&&\"_\"!==o}if(\"x\"===o){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(!(48<=(i=s.charCodeAt(u))&&i<=57||65<=i&&i<=70||97<=i&&i<=102))return!1;_=!0}return _&&\"_\"!==o}if(\"o\"===o){for(u++;u<a;u++)if(\"_\"!==(o=s[u])){if(!isOctCode(s.charCodeAt(u)))return!1;_=!0}return _&&\"_\"!==o}}if(\"_\"===o)return!1;for(;u<a;u++)if(\"_\"!==(o=s[u])){if(!isDecCode(s.charCodeAt(u)))return!1;_=!0}return!(!_||\"_\"===o)},construct:function constructYamlInteger(s){var o,i=s,a=1;if(-1!==i.indexOf(\"_\")&&(i=i.replace(/_/g,\"\")),\"-\"!==(o=i[0])&&\"+\"!==o||(\"-\"===o&&(a=-1),o=(i=i.slice(1))[0]),\"0\"===i)return 0;if(\"0\"===o){if(\"b\"===i[1])return a*parseInt(i.slice(2),2);if(\"x\"===i[1])return a*parseInt(i.slice(2),16);if(\"o\"===i[1])return a*parseInt(i.slice(2),8)}return a*parseInt(i,10)},predicate:function isInteger(s){return\"[object Number]\"===Object.prototype.toString.call(s)&&s%1==0&&!er.isNegativeZero(s)},represent:{binary:function(s){return s>=0?\"0b\"+s.toString(2):\"-0b\"+s.toString(2).slice(1)},octal:function(s){return s>=0?\"0o\"+s.toString(8):\"-0o\"+s.toString(8).slice(1)},decimal:function(s){return s.toString(10)},hexadecimal:function(s){return s>=0?\"0x\"+s.toString(16).toUpperCase():\"-0x\"+s.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}}),gr=new RegExp(\"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");var yr=/^[-+]?[0-9]+e/;var vr=new ir(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:function resolveYamlFloat(s){return null!==s&&!(!gr.test(s)||\"_\"===s[s.length-1])},construct:function constructYamlFloat(s){var o,i;return i=\"-\"===(o=s.replace(/_/g,\"\").toLowerCase())[0]?-1:1,\"+-\".indexOf(o[0])>=0&&(o=o.slice(1)),\".inf\"===o?1===i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:\".nan\"===o?NaN:i*parseFloat(o,10)},predicate:function isFloat(s){return\"[object Number]\"===Object.prototype.toString.call(s)&&(s%1!=0||er.isNegativeZero(s))},represent:function representYamlFloat(s,o){var i;if(isNaN(s))switch(o){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===s)switch(o){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===s)switch(o){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(er.isNegativeZero(s))return\"-0.0\";return i=s.toString(10),yr.test(i)?i.replace(\"e\",\".e\"):i},defaultStyle:\"lowercase\"}),br=pr.extend({implicit:[dr,fr,mr,vr]}),_r=br,Sr=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),Er=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");var wr=new ir(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:function resolveYamlTimestamp(s){return null!==s&&(null!==Sr.exec(s)||null!==Er.exec(s))},construct:function constructYamlTimestamp(s){var o,i,a,u,_,w,x,C,j=0,L=null;if(null===(o=Sr.exec(s))&&(o=Er.exec(s)),null===o)throw new Error(\"Date resolve error\");if(i=+o[1],a=+o[2]-1,u=+o[3],!o[4])return new Date(Date.UTC(i,a,u));if(_=+o[4],w=+o[5],x=+o[6],o[7]){for(j=o[7].slice(0,3);j.length<3;)j+=\"0\";j=+j}return o[9]&&(L=6e4*(60*+o[10]+ +(o[11]||0)),\"-\"===o[9]&&(L=-L)),C=new Date(Date.UTC(i,a,u,_,w,x,j)),L&&C.setTime(C.getTime()-L),C},instanceOf:Date,represent:function representYamlTimestamp(s){return s.toISOString()}});var xr=new ir(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:function resolveYamlMerge(s){return\"<<\"===s||null===s}}),kr=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";var Or=new ir(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:function resolveYamlBinary(s){if(null===s)return!1;var o,i,a=0,u=s.length,_=kr;for(i=0;i<u;i++)if(!((o=_.indexOf(s.charAt(i)))>64)){if(o<0)return!1;a+=6}return a%8==0},construct:function constructYamlBinary(s){var o,i,a=s.replace(/[\\r\\n=]/g,\"\"),u=a.length,_=kr,w=0,x=[];for(o=0;o<u;o++)o%4==0&&o&&(x.push(w>>16&255),x.push(w>>8&255),x.push(255&w)),w=w<<6|_.indexOf(a.charAt(o));return 0===(i=u%4*6)?(x.push(w>>16&255),x.push(w>>8&255),x.push(255&w)):18===i?(x.push(w>>10&255),x.push(w>>2&255)):12===i&&x.push(w>>4&255),new Uint8Array(x)},predicate:function isBinary(s){return\"[object Uint8Array]\"===Object.prototype.toString.call(s)},represent:function representYamlBinary(s){var o,i,a=\"\",u=0,_=s.length,w=kr;for(o=0;o<_;o++)o%3==0&&o&&(a+=w[u>>18&63],a+=w[u>>12&63],a+=w[u>>6&63],a+=w[63&u]),u=(u<<8)+s[o];return 0===(i=_%3)?(a+=w[u>>18&63],a+=w[u>>12&63],a+=w[u>>6&63],a+=w[63&u]):2===i?(a+=w[u>>10&63],a+=w[u>>4&63],a+=w[u<<2&63],a+=w[64]):1===i&&(a+=w[u>>2&63],a+=w[u<<4&63],a+=w[64],a+=w[64]),a}}),Cr=Object.prototype.hasOwnProperty,Ar=Object.prototype.toString;var jr=new ir(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:function resolveYamlOmap(s){if(null===s)return!0;var o,i,a,u,_,w=[],x=s;for(o=0,i=x.length;o<i;o+=1){if(a=x[o],_=!1,\"[object Object]\"!==Ar.call(a))return!1;for(u in a)if(Cr.call(a,u)){if(_)return!1;_=!0}if(!_)return!1;if(-1!==w.indexOf(u))return!1;w.push(u)}return!0},construct:function constructYamlOmap(s){return null!==s?s:[]}}),Ir=Object.prototype.toString;var Pr=new ir(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:function resolveYamlPairs(s){if(null===s)return!0;var o,i,a,u,_,w=s;for(_=new Array(w.length),o=0,i=w.length;o<i;o+=1){if(a=w[o],\"[object Object]\"!==Ir.call(a))return!1;if(1!==(u=Object.keys(a)).length)return!1;_[o]=[u[0],a[u[0]]]}return!0},construct:function constructYamlPairs(s){if(null===s)return[];var o,i,a,u,_,w=s;for(_=new Array(w.length),o=0,i=w.length;o<i;o+=1)a=w[o],u=Object.keys(a),_[o]=[u[0],a[u[0]]];return _}}),Tr=Object.prototype.hasOwnProperty;var Nr=new ir(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:function resolveYamlSet(s){if(null===s)return!0;var o,i=s;for(o in i)if(Tr.call(i,o)&&null!==i[o])return!1;return!0},construct:function constructYamlSet(s){return null!==s?s:{}}}),Mr=_r.extend({implicit:[wr,xr],explicit:[Or,jr,Pr,Nr]}),Rr=Object.prototype.hasOwnProperty,Dr=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,Lr=/[\\x85\\u2028\\u2029]/,Fr=/[,\\[\\]\\{\\}]/,Br=/^(?:!|!!|![a-z\\-]+!)$/i,$r=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function _class(s){return Object.prototype.toString.call(s)}function is_EOL(s){return 10===s||13===s}function is_WHITE_SPACE(s){return 9===s||32===s}function is_WS_OR_EOL(s){return 9===s||32===s||10===s||13===s}function is_FLOW_INDICATOR(s){return 44===s||91===s||93===s||123===s||125===s}function fromHexCode(s){var o;return 48<=s&&s<=57?s-48:97<=(o=32|s)&&o<=102?o-97+10:-1}function simpleEscapeSequence(s){return 48===s?\"\\0\":97===s?\"\u0007\":98===s?\"\\b\":116===s||9===s?\"\\t\":110===s?\"\\n\":118===s?\"\\v\":102===s?\"\\f\":114===s?\"\\r\":101===s?\"\u001b\":32===s?\" \":34===s?'\"':47===s?\"/\":92===s?\"\\\\\":78===s?\"\":95===s?\" \":76===s?\"\\u2028\":80===s?\"\\u2029\":\"\"}function charFromCodepoint(s){return s<=65535?String.fromCharCode(s):String.fromCharCode(55296+(s-65536>>10),56320+(s-65536&1023))}for(var qr=new Array(256),Vr=new Array(256),Ur=0;Ur<256;Ur++)qr[Ur]=simpleEscapeSequence(Ur)?1:0,Vr[Ur]=simpleEscapeSequence(Ur);function State$1(s,o){this.input=s,this.filename=o.filename||null,this.schema=o.schema||Mr,this.onWarning=o.onWarning||null,this.legacy=o.legacy||!1,this.json=o.json||!1,this.listener=o.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=s.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function generateError(s,o){var i={name:s.filename,buffer:s.input.slice(0,-1),position:s.position,line:s.line,column:s.position-s.lineStart};return i.snippet=rr(i),new tr(o,i)}function throwError(s,o){throw generateError(s,o)}function throwWarning(s,o){s.onWarning&&s.onWarning.call(null,generateError(s,o))}var zr={YAML:function handleYamlDirective(s,o,i){var a,u,_;null!==s.version&&throwError(s,\"duplication of %YAML directive\"),1!==i.length&&throwError(s,\"YAML directive accepts exactly one argument\"),null===(a=/^([0-9]+)\\.([0-9]+)$/.exec(i[0]))&&throwError(s,\"ill-formed argument of the YAML directive\"),u=parseInt(a[1],10),_=parseInt(a[2],10),1!==u&&throwError(s,\"unacceptable YAML version of the document\"),s.version=i[0],s.checkLineBreaks=_<2,1!==_&&2!==_&&throwWarning(s,\"unsupported YAML version of the document\")},TAG:function handleTagDirective(s,o,i){var a,u;2!==i.length&&throwError(s,\"TAG directive accepts exactly two arguments\"),a=i[0],u=i[1],Br.test(a)||throwError(s,\"ill-formed tag handle (first argument) of the TAG directive\"),Rr.call(s.tagMap,a)&&throwError(s,'there is a previously declared suffix for \"'+a+'\" tag handle'),$r.test(u)||throwError(s,\"ill-formed tag prefix (second argument) of the TAG directive\");try{u=decodeURIComponent(u)}catch(o){throwError(s,\"tag prefix is malformed: \"+u)}s.tagMap[a]=u}};function captureSegment(s,o,i,a){var u,_,w,x;if(o<i){if(x=s.input.slice(o,i),a)for(u=0,_=x.length;u<_;u+=1)9===(w=x.charCodeAt(u))||32<=w&&w<=1114111||throwError(s,\"expected valid JSON character\");else Dr.test(x)&&throwError(s,\"the stream contains non-printable characters\");s.result+=x}}function mergeMappings(s,o,i,a){var u,_,w,x;for(er.isObject(i)||throwError(s,\"cannot merge mappings; the provided source object is unacceptable\"),w=0,x=(u=Object.keys(i)).length;w<x;w+=1)_=u[w],Rr.call(o,_)||(o[_]=i[_],a[_]=!0)}function storeMappingPair(s,o,i,a,u,_,w,x,C){var j,L;if(Array.isArray(u))for(j=0,L=(u=Array.prototype.slice.call(u)).length;j<L;j+=1)Array.isArray(u[j])&&throwError(s,\"nested arrays are not supported inside keys\"),\"object\"==typeof u&&\"[object Object]\"===_class(u[j])&&(u[j]=\"[object Object]\");if(\"object\"==typeof u&&\"[object Object]\"===_class(u)&&(u=\"[object Object]\"),u=String(u),null===o&&(o={}),\"tag:yaml.org,2002:merge\"===a)if(Array.isArray(_))for(j=0,L=_.length;j<L;j+=1)mergeMappings(s,o,_[j],i);else mergeMappings(s,o,_,i);else s.json||Rr.call(i,u)||!Rr.call(o,u)||(s.line=w||s.line,s.lineStart=x||s.lineStart,s.position=C||s.position,throwError(s,\"duplicated mapping key\")),\"__proto__\"===u?Object.defineProperty(o,u,{configurable:!0,enumerable:!0,writable:!0,value:_}):o[u]=_,delete i[u];return o}function readLineBreak(s){var o;10===(o=s.input.charCodeAt(s.position))?s.position++:13===o?(s.position++,10===s.input.charCodeAt(s.position)&&s.position++):throwError(s,\"a line break is expected\"),s.line+=1,s.lineStart=s.position,s.firstTabInLine=-1}function skipSeparationSpace(s,o,i){for(var a=0,u=s.input.charCodeAt(s.position);0!==u;){for(;is_WHITE_SPACE(u);)9===u&&-1===s.firstTabInLine&&(s.firstTabInLine=s.position),u=s.input.charCodeAt(++s.position);if(o&&35===u)do{u=s.input.charCodeAt(++s.position)}while(10!==u&&13!==u&&0!==u);if(!is_EOL(u))break;for(readLineBreak(s),u=s.input.charCodeAt(s.position),a++,s.lineIndent=0;32===u;)s.lineIndent++,u=s.input.charCodeAt(++s.position)}return-1!==i&&0!==a&&s.lineIndent<i&&throwWarning(s,\"deficient indentation\"),a}function testDocumentSeparator(s){var o,i=s.position;return!(45!==(o=s.input.charCodeAt(i))&&46!==o||o!==s.input.charCodeAt(i+1)||o!==s.input.charCodeAt(i+2)||(i+=3,0!==(o=s.input.charCodeAt(i))&&!is_WS_OR_EOL(o)))}function writeFoldedLines(s,o){1===o?s.result+=\" \":o>1&&(s.result+=er.repeat(\"\\n\",o-1))}function readBlockSequence(s,o){var i,a,u=s.tag,_=s.anchor,w=[],x=!1;if(-1!==s.firstTabInLine)return!1;for(null!==s.anchor&&(s.anchorMap[s.anchor]=w),a=s.input.charCodeAt(s.position);0!==a&&(-1!==s.firstTabInLine&&(s.position=s.firstTabInLine,throwError(s,\"tab characters must not be used in indentation\")),45===a)&&is_WS_OR_EOL(s.input.charCodeAt(s.position+1));)if(x=!0,s.position++,skipSeparationSpace(s,!0,-1)&&s.lineIndent<=o)w.push(null),a=s.input.charCodeAt(s.position);else if(i=s.line,composeNode(s,o,3,!1,!0),w.push(s.result),skipSeparationSpace(s,!0,-1),a=s.input.charCodeAt(s.position),(s.line===i||s.lineIndent>o)&&0!==a)throwError(s,\"bad indentation of a sequence entry\");else if(s.lineIndent<o)break;return!!x&&(s.tag=u,s.anchor=_,s.kind=\"sequence\",s.result=w,!0)}function readTagProperty(s){var o,i,a,u,_=!1,w=!1;if(33!==(u=s.input.charCodeAt(s.position)))return!1;if(null!==s.tag&&throwError(s,\"duplication of a tag property\"),60===(u=s.input.charCodeAt(++s.position))?(_=!0,u=s.input.charCodeAt(++s.position)):33===u?(w=!0,i=\"!!\",u=s.input.charCodeAt(++s.position)):i=\"!\",o=s.position,_){do{u=s.input.charCodeAt(++s.position)}while(0!==u&&62!==u);s.position<s.length?(a=s.input.slice(o,s.position),u=s.input.charCodeAt(++s.position)):throwError(s,\"unexpected end of the stream within a verbatim tag\")}else{for(;0!==u&&!is_WS_OR_EOL(u);)33===u&&(w?throwError(s,\"tag suffix cannot contain exclamation marks\"):(i=s.input.slice(o-1,s.position+1),Br.test(i)||throwError(s,\"named tag handle cannot contain such characters\"),w=!0,o=s.position+1)),u=s.input.charCodeAt(++s.position);a=s.input.slice(o,s.position),Fr.test(a)&&throwError(s,\"tag suffix cannot contain flow indicator characters\")}a&&!$r.test(a)&&throwError(s,\"tag name cannot contain such characters: \"+a);try{a=decodeURIComponent(a)}catch(o){throwError(s,\"tag name is malformed: \"+a)}return _?s.tag=a:Rr.call(s.tagMap,i)?s.tag=s.tagMap[i]+a:\"!\"===i?s.tag=\"!\"+a:\"!!\"===i?s.tag=\"tag:yaml.org,2002:\"+a:throwError(s,'undeclared tag handle \"'+i+'\"'),!0}function readAnchorProperty(s){var o,i;if(38!==(i=s.input.charCodeAt(s.position)))return!1;for(null!==s.anchor&&throwError(s,\"duplication of an anchor property\"),i=s.input.charCodeAt(++s.position),o=s.position;0!==i&&!is_WS_OR_EOL(i)&&!is_FLOW_INDICATOR(i);)i=s.input.charCodeAt(++s.position);return s.position===o&&throwError(s,\"name of an anchor node must contain at least one character\"),s.anchor=s.input.slice(o,s.position),!0}function composeNode(s,o,i,a,u){var _,w,x,C,j,L,B,$,V,U=1,z=!1,Y=!1;if(null!==s.listener&&s.listener(\"open\",s),s.tag=null,s.anchor=null,s.kind=null,s.result=null,_=w=x=4===i||3===i,a&&skipSeparationSpace(s,!0,-1)&&(z=!0,s.lineIndent>o?U=1:s.lineIndent===o?U=0:s.lineIndent<o&&(U=-1)),1===U)for(;readTagProperty(s)||readAnchorProperty(s);)skipSeparationSpace(s,!0,-1)?(z=!0,x=_,s.lineIndent>o?U=1:s.lineIndent===o?U=0:s.lineIndent<o&&(U=-1)):x=!1;if(x&&(x=z||u),1!==U&&4!==i||($=1===i||2===i?o:o+1,V=s.position-s.lineStart,1===U?x&&(readBlockSequence(s,V)||function readBlockMapping(s,o,i){var a,u,_,w,x,C,j,L=s.tag,B=s.anchor,$={},V=Object.create(null),U=null,z=null,Y=null,Z=!1,ee=!1;if(-1!==s.firstTabInLine)return!1;for(null!==s.anchor&&(s.anchorMap[s.anchor]=$),j=s.input.charCodeAt(s.position);0!==j;){if(Z||-1===s.firstTabInLine||(s.position=s.firstTabInLine,throwError(s,\"tab characters must not be used in indentation\")),a=s.input.charCodeAt(s.position+1),_=s.line,63!==j&&58!==j||!is_WS_OR_EOL(a)){if(w=s.line,x=s.lineStart,C=s.position,!composeNode(s,i,2,!1,!0))break;if(s.line===_){for(j=s.input.charCodeAt(s.position);is_WHITE_SPACE(j);)j=s.input.charCodeAt(++s.position);if(58===j)is_WS_OR_EOL(j=s.input.charCodeAt(++s.position))||throwError(s,\"a whitespace character is expected after the key-value separator within a block mapping\"),Z&&(storeMappingPair(s,$,V,U,z,null,w,x,C),U=z=Y=null),ee=!0,Z=!1,u=!1,U=s.tag,z=s.result;else{if(!ee)return s.tag=L,s.anchor=B,!0;throwError(s,\"can not read an implicit mapping pair; a colon is missed\")}}else{if(!ee)return s.tag=L,s.anchor=B,!0;throwError(s,\"can not read a block mapping entry; a multiline key may not be an implicit key\")}}else 63===j?(Z&&(storeMappingPair(s,$,V,U,z,null,w,x,C),U=z=Y=null),ee=!0,Z=!0,u=!0):Z?(Z=!1,u=!0):throwError(s,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),s.position+=1,j=a;if((s.line===_||s.lineIndent>o)&&(Z&&(w=s.line,x=s.lineStart,C=s.position),composeNode(s,o,4,!0,u)&&(Z?z=s.result:Y=s.result),Z||(storeMappingPair(s,$,V,U,z,Y,w,x,C),U=z=Y=null),skipSeparationSpace(s,!0,-1),j=s.input.charCodeAt(s.position)),(s.line===_||s.lineIndent>o)&&0!==j)throwError(s,\"bad indentation of a mapping entry\");else if(s.lineIndent<o)break}return Z&&storeMappingPair(s,$,V,U,z,null,w,x,C),ee&&(s.tag=L,s.anchor=B,s.kind=\"mapping\",s.result=$),ee}(s,V,$))||function readFlowCollection(s,o){var i,a,u,_,w,x,C,j,L,B,$,V,U=!0,z=s.tag,Y=s.anchor,Z=Object.create(null);if(91===(V=s.input.charCodeAt(s.position)))w=93,j=!1,_=[];else{if(123!==V)return!1;w=125,j=!0,_={}}for(null!==s.anchor&&(s.anchorMap[s.anchor]=_),V=s.input.charCodeAt(++s.position);0!==V;){if(skipSeparationSpace(s,!0,o),(V=s.input.charCodeAt(s.position))===w)return s.position++,s.tag=z,s.anchor=Y,s.kind=j?\"mapping\":\"sequence\",s.result=_,!0;U?44===V&&throwError(s,\"expected the node content, but found ','\"):throwError(s,\"missed comma between flow collection entries\"),$=null,x=C=!1,63===V&&is_WS_OR_EOL(s.input.charCodeAt(s.position+1))&&(x=C=!0,s.position++,skipSeparationSpace(s,!0,o)),i=s.line,a=s.lineStart,u=s.position,composeNode(s,o,1,!1,!0),B=s.tag,L=s.result,skipSeparationSpace(s,!0,o),V=s.input.charCodeAt(s.position),!C&&s.line!==i||58!==V||(x=!0,V=s.input.charCodeAt(++s.position),skipSeparationSpace(s,!0,o),composeNode(s,o,1,!1,!0),$=s.result),j?storeMappingPair(s,_,Z,B,L,$,i,a,u):x?_.push(storeMappingPair(s,null,Z,B,L,$,i,a,u)):_.push(L),skipSeparationSpace(s,!0,o),44===(V=s.input.charCodeAt(s.position))?(U=!0,V=s.input.charCodeAt(++s.position)):U=!1}throwError(s,\"unexpected end of the stream within a flow collection\")}(s,$)?Y=!0:(w&&function readBlockScalar(s,o){var i,a,u,_,w,x=1,C=!1,j=!1,L=o,B=0,$=!1;if(124===(_=s.input.charCodeAt(s.position)))a=!1;else{if(62!==_)return!1;a=!0}for(s.kind=\"scalar\",s.result=\"\";0!==_;)if(43===(_=s.input.charCodeAt(++s.position))||45===_)1===x?x=43===_?3:2:throwError(s,\"repeat of a chomping mode identifier\");else{if(!((u=48<=(w=_)&&w<=57?w-48:-1)>=0))break;0===u?throwError(s,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):j?throwError(s,\"repeat of an indentation width identifier\"):(L=o+u-1,j=!0)}if(is_WHITE_SPACE(_)){do{_=s.input.charCodeAt(++s.position)}while(is_WHITE_SPACE(_));if(35===_)do{_=s.input.charCodeAt(++s.position)}while(!is_EOL(_)&&0!==_)}for(;0!==_;){for(readLineBreak(s),s.lineIndent=0,_=s.input.charCodeAt(s.position);(!j||s.lineIndent<L)&&32===_;)s.lineIndent++,_=s.input.charCodeAt(++s.position);if(!j&&s.lineIndent>L&&(L=s.lineIndent),is_EOL(_))B++;else{if(s.lineIndent<L){3===x?s.result+=er.repeat(\"\\n\",C?1+B:B):1===x&&C&&(s.result+=\"\\n\");break}for(a?is_WHITE_SPACE(_)?($=!0,s.result+=er.repeat(\"\\n\",C?1+B:B)):$?($=!1,s.result+=er.repeat(\"\\n\",B+1)):0===B?C&&(s.result+=\" \"):s.result+=er.repeat(\"\\n\",B):s.result+=er.repeat(\"\\n\",C?1+B:B),C=!0,j=!0,B=0,i=s.position;!is_EOL(_)&&0!==_;)_=s.input.charCodeAt(++s.position);captureSegment(s,i,s.position,!1)}}return!0}(s,$)||function readSingleQuotedScalar(s,o){var i,a,u;if(39!==(i=s.input.charCodeAt(s.position)))return!1;for(s.kind=\"scalar\",s.result=\"\",s.position++,a=u=s.position;0!==(i=s.input.charCodeAt(s.position));)if(39===i){if(captureSegment(s,a,s.position,!0),39!==(i=s.input.charCodeAt(++s.position)))return!0;a=s.position,s.position++,u=s.position}else is_EOL(i)?(captureSegment(s,a,u,!0),writeFoldedLines(s,skipSeparationSpace(s,!1,o)),a=u=s.position):s.position===s.lineStart&&testDocumentSeparator(s)?throwError(s,\"unexpected end of the document within a single quoted scalar\"):(s.position++,u=s.position);throwError(s,\"unexpected end of the stream within a single quoted scalar\")}(s,$)||function readDoubleQuotedScalar(s,o){var i,a,u,_,w,x,C;if(34!==(x=s.input.charCodeAt(s.position)))return!1;for(s.kind=\"scalar\",s.result=\"\",s.position++,i=a=s.position;0!==(x=s.input.charCodeAt(s.position));){if(34===x)return captureSegment(s,i,s.position,!0),s.position++,!0;if(92===x){if(captureSegment(s,i,s.position,!0),is_EOL(x=s.input.charCodeAt(++s.position)))skipSeparationSpace(s,!1,o);else if(x<256&&qr[x])s.result+=Vr[x],s.position++;else if((w=120===(C=x)?2:117===C?4:85===C?8:0)>0){for(u=w,_=0;u>0;u--)(w=fromHexCode(x=s.input.charCodeAt(++s.position)))>=0?_=(_<<4)+w:throwError(s,\"expected hexadecimal character\");s.result+=charFromCodepoint(_),s.position++}else throwError(s,\"unknown escape sequence\");i=a=s.position}else is_EOL(x)?(captureSegment(s,i,a,!0),writeFoldedLines(s,skipSeparationSpace(s,!1,o)),i=a=s.position):s.position===s.lineStart&&testDocumentSeparator(s)?throwError(s,\"unexpected end of the document within a double quoted scalar\"):(s.position++,a=s.position)}throwError(s,\"unexpected end of the stream within a double quoted scalar\")}(s,$)?Y=!0:!function readAlias(s){var o,i,a;if(42!==(a=s.input.charCodeAt(s.position)))return!1;for(a=s.input.charCodeAt(++s.position),o=s.position;0!==a&&!is_WS_OR_EOL(a)&&!is_FLOW_INDICATOR(a);)a=s.input.charCodeAt(++s.position);return s.position===o&&throwError(s,\"name of an alias node must contain at least one character\"),i=s.input.slice(o,s.position),Rr.call(s.anchorMap,i)||throwError(s,'unidentified alias \"'+i+'\"'),s.result=s.anchorMap[i],skipSeparationSpace(s,!0,-1),!0}(s)?function readPlainScalar(s,o,i){var a,u,_,w,x,C,j,L,B=s.kind,$=s.result;if(is_WS_OR_EOL(L=s.input.charCodeAt(s.position))||is_FLOW_INDICATOR(L)||35===L||38===L||42===L||33===L||124===L||62===L||39===L||34===L||37===L||64===L||96===L)return!1;if((63===L||45===L)&&(is_WS_OR_EOL(a=s.input.charCodeAt(s.position+1))||i&&is_FLOW_INDICATOR(a)))return!1;for(s.kind=\"scalar\",s.result=\"\",u=_=s.position,w=!1;0!==L;){if(58===L){if(is_WS_OR_EOL(a=s.input.charCodeAt(s.position+1))||i&&is_FLOW_INDICATOR(a))break}else if(35===L){if(is_WS_OR_EOL(s.input.charCodeAt(s.position-1)))break}else{if(s.position===s.lineStart&&testDocumentSeparator(s)||i&&is_FLOW_INDICATOR(L))break;if(is_EOL(L)){if(x=s.line,C=s.lineStart,j=s.lineIndent,skipSeparationSpace(s,!1,-1),s.lineIndent>=o){w=!0,L=s.input.charCodeAt(s.position);continue}s.position=_,s.line=x,s.lineStart=C,s.lineIndent=j;break}}w&&(captureSegment(s,u,_,!1),writeFoldedLines(s,s.line-x),u=_=s.position,w=!1),is_WHITE_SPACE(L)||(_=s.position+1),L=s.input.charCodeAt(++s.position)}return captureSegment(s,u,_,!1),!!s.result||(s.kind=B,s.result=$,!1)}(s,$,1===i)&&(Y=!0,null===s.tag&&(s.tag=\"?\")):(Y=!0,null===s.tag&&null===s.anchor||throwError(s,\"alias node should not have any properties\")),null!==s.anchor&&(s.anchorMap[s.anchor]=s.result)):0===U&&(Y=x&&readBlockSequence(s,V))),null===s.tag)null!==s.anchor&&(s.anchorMap[s.anchor]=s.result);else if(\"?\"===s.tag){for(null!==s.result&&\"scalar\"!==s.kind&&throwError(s,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+s.kind+'\"'),C=0,j=s.implicitTypes.length;C<j;C+=1)if((B=s.implicitTypes[C]).resolve(s.result)){s.result=B.construct(s.result),s.tag=B.tag,null!==s.anchor&&(s.anchorMap[s.anchor]=s.result);break}}else if(\"!\"!==s.tag){if(Rr.call(s.typeMap[s.kind||\"fallback\"],s.tag))B=s.typeMap[s.kind||\"fallback\"][s.tag];else for(B=null,C=0,j=(L=s.typeMap.multi[s.kind||\"fallback\"]).length;C<j;C+=1)if(s.tag.slice(0,L[C].tag.length)===L[C].tag){B=L[C];break}B||throwError(s,\"unknown tag !<\"+s.tag+\">\"),null!==s.result&&B.kind!==s.kind&&throwError(s,\"unacceptable node kind for !<\"+s.tag+'> tag; it should be \"'+B.kind+'\", not \"'+s.kind+'\"'),B.resolve(s.result,s.tag)?(s.result=B.construct(s.result,s.tag),null!==s.anchor&&(s.anchorMap[s.anchor]=s.result)):throwError(s,\"cannot resolve a node with !<\"+s.tag+\"> explicit tag\")}return null!==s.listener&&s.listener(\"close\",s),null!==s.tag||null!==s.anchor||Y}function readDocument(s){var o,i,a,u,_=s.position,w=!1;for(s.version=null,s.checkLineBreaks=s.legacy,s.tagMap=Object.create(null),s.anchorMap=Object.create(null);0!==(u=s.input.charCodeAt(s.position))&&(skipSeparationSpace(s,!0,-1),u=s.input.charCodeAt(s.position),!(s.lineIndent>0||37!==u));){for(w=!0,u=s.input.charCodeAt(++s.position),o=s.position;0!==u&&!is_WS_OR_EOL(u);)u=s.input.charCodeAt(++s.position);for(a=[],(i=s.input.slice(o,s.position)).length<1&&throwError(s,\"directive name must not be less than one character in length\");0!==u;){for(;is_WHITE_SPACE(u);)u=s.input.charCodeAt(++s.position);if(35===u){do{u=s.input.charCodeAt(++s.position)}while(0!==u&&!is_EOL(u));break}if(is_EOL(u))break;for(o=s.position;0!==u&&!is_WS_OR_EOL(u);)u=s.input.charCodeAt(++s.position);a.push(s.input.slice(o,s.position))}0!==u&&readLineBreak(s),Rr.call(zr,i)?zr[i](s,i,a):throwWarning(s,'unknown document directive \"'+i+'\"')}skipSeparationSpace(s,!0,-1),0===s.lineIndent&&45===s.input.charCodeAt(s.position)&&45===s.input.charCodeAt(s.position+1)&&45===s.input.charCodeAt(s.position+2)?(s.position+=3,skipSeparationSpace(s,!0,-1)):w&&throwError(s,\"directives end mark is expected\"),composeNode(s,s.lineIndent-1,4,!1,!0),skipSeparationSpace(s,!0,-1),s.checkLineBreaks&&Lr.test(s.input.slice(_,s.position))&&throwWarning(s,\"non-ASCII line breaks are interpreted as content\"),s.documents.push(s.result),s.position===s.lineStart&&testDocumentSeparator(s)?46===s.input.charCodeAt(s.position)&&(s.position+=3,skipSeparationSpace(s,!0,-1)):s.position<s.length-1&&throwError(s,\"end of the stream or a document separator is expected\")}function loadDocuments(s,o){o=o||{},0!==(s=String(s)).length&&(10!==s.charCodeAt(s.length-1)&&13!==s.charCodeAt(s.length-1)&&(s+=\"\\n\"),65279===s.charCodeAt(0)&&(s=s.slice(1)));var i=new State$1(s,o),a=s.indexOf(\"\\0\");for(-1!==a&&(i.position=a,throwError(i,\"null byte is not allowed in input\")),i.input+=\"\\0\";32===i.input.charCodeAt(i.position);)i.lineIndent+=1,i.position+=1;for(;i.position<i.length-1;)readDocument(i);return i.documents}var Wr={loadAll:function loadAll$1(s,o,i){null!==o&&\"object\"==typeof o&&void 0===i&&(i=o,o=null);var a=loadDocuments(s,i);if(\"function\"!=typeof o)return a;for(var u=0,_=a.length;u<_;u+=1)o(a[u])},load:function load$1(s,o){var i=loadDocuments(s,o);if(0!==i.length){if(1===i.length)return i[0];throw new tr(\"expected a single document in the stream, but found more\")}}},Jr=Object.prototype.toString,Hr=Object.prototype.hasOwnProperty,Kr=65279,Gr={0:\"\\\\0\",7:\"\\\\a\",8:\"\\\\b\",9:\"\\\\t\",10:\"\\\\n\",11:\"\\\\v\",12:\"\\\\f\",13:\"\\\\r\",27:\"\\\\e\",34:'\\\\\"',92:\"\\\\\\\\\",133:\"\\\\N\",160:\"\\\\_\",8232:\"\\\\L\",8233:\"\\\\P\"},Yr=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"],Xr=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;function encodeHex(s){var o,i,a;if(o=s.toString(16).toUpperCase(),s<=255)i=\"x\",a=2;else if(s<=65535)i=\"u\",a=4;else{if(!(s<=4294967295))throw new tr(\"code point within a string may not be greater than 0xFFFFFFFF\");i=\"U\",a=8}return\"\\\\\"+i+er.repeat(\"0\",a-o.length)+o}function State(s){this.schema=s.schema||Mr,this.indent=Math.max(1,s.indent||2),this.noArrayIndent=s.noArrayIndent||!1,this.skipInvalid=s.skipInvalid||!1,this.flowLevel=er.isNothing(s.flowLevel)?-1:s.flowLevel,this.styleMap=function compileStyleMap(s,o){var i,a,u,_,w,x,C;if(null===o)return{};for(i={},u=0,_=(a=Object.keys(o)).length;u<_;u+=1)w=a[u],x=String(o[w]),\"!!\"===w.slice(0,2)&&(w=\"tag:yaml.org,2002:\"+w.slice(2)),(C=s.compiledTypeMap.fallback[w])&&Hr.call(C.styleAliases,x)&&(x=C.styleAliases[x]),i[w]=x;return i}(this.schema,s.styles||null),this.sortKeys=s.sortKeys||!1,this.lineWidth=s.lineWidth||80,this.noRefs=s.noRefs||!1,this.noCompatMode=s.noCompatMode||!1,this.condenseFlow=s.condenseFlow||!1,this.quotingType='\"'===s.quotingType?2:1,this.forceQuotes=s.forceQuotes||!1,this.replacer=\"function\"==typeof s.replacer?s.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function indentString(s,o){for(var i,a=er.repeat(\" \",o),u=0,_=-1,w=\"\",x=s.length;u<x;)-1===(_=s.indexOf(\"\\n\",u))?(i=s.slice(u),u=x):(i=s.slice(u,_+1),u=_+1),i.length&&\"\\n\"!==i&&(w+=a),w+=i;return w}function generateNextLine(s,o){return\"\\n\"+er.repeat(\" \",s.indent*o)}function isWhitespace(s){return 32===s||9===s}function isPrintable(s){return 32<=s&&s<=126||161<=s&&s<=55295&&8232!==s&&8233!==s||57344<=s&&s<=65533&&s!==Kr||65536<=s&&s<=1114111}function isNsCharOrWhitespace(s){return isPrintable(s)&&s!==Kr&&13!==s&&10!==s}function isPlainSafe(s,o,i){var a=isNsCharOrWhitespace(s),u=a&&!isWhitespace(s);return(i?a:a&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s)&&35!==s&&!(58===o&&!u)||isNsCharOrWhitespace(o)&&!isWhitespace(o)&&35===s||58===o&&u}function codePointAt(s,o){var i,a=s.charCodeAt(o);return a>=55296&&a<=56319&&o+1<s.length&&(i=s.charCodeAt(o+1))>=56320&&i<=57343?1024*(a-55296)+i-56320+65536:a}function needIndentIndicator(s){return/^\\n* /.test(s)}function chooseScalarStyle(s,o,i,a,u,_,w,x){var C,j=0,L=null,B=!1,$=!1,V=-1!==a,U=-1,z=function isPlainSafeFirst(s){return isPrintable(s)&&s!==Kr&&!isWhitespace(s)&&45!==s&&63!==s&&58!==s&&44!==s&&91!==s&&93!==s&&123!==s&&125!==s&&35!==s&&38!==s&&42!==s&&33!==s&&124!==s&&61!==s&&62!==s&&39!==s&&34!==s&&37!==s&&64!==s&&96!==s}(codePointAt(s,0))&&function isPlainSafeLast(s){return!isWhitespace(s)&&58!==s}(codePointAt(s,s.length-1));if(o||w)for(C=0;C<s.length;j>=65536?C+=2:C++){if(!isPrintable(j=codePointAt(s,C)))return 5;z=z&&isPlainSafe(j,L,x),L=j}else{for(C=0;C<s.length;j>=65536?C+=2:C++){if(10===(j=codePointAt(s,C)))B=!0,V&&($=$||C-U-1>a&&\" \"!==s[U+1],U=C);else if(!isPrintable(j))return 5;z=z&&isPlainSafe(j,L,x),L=j}$=$||V&&C-U-1>a&&\" \"!==s[U+1]}return B||$?i>9&&needIndentIndicator(s)?5:w?2===_?5:2:$?4:3:!z||w||u(s)?2===_?5:2:1}function writeScalar(s,o,i,a,u){s.dump=function(){if(0===o.length)return 2===s.quotingType?'\"\"':\"''\";if(!s.noCompatMode&&(-1!==Yr.indexOf(o)||Xr.test(o)))return 2===s.quotingType?'\"'+o+'\"':\"'\"+o+\"'\";var _=s.indent*Math.max(1,i),w=-1===s.lineWidth?-1:Math.max(Math.min(s.lineWidth,40),s.lineWidth-_),x=a||s.flowLevel>-1&&i>=s.flowLevel;switch(chooseScalarStyle(o,x,s.indent,w,(function testAmbiguity(o){return function testImplicitResolving(s,o){var i,a;for(i=0,a=s.implicitTypes.length;i<a;i+=1)if(s.implicitTypes[i].resolve(o))return!0;return!1}(s,o)}),s.quotingType,s.forceQuotes&&!a,u)){case 1:return o;case 2:return\"'\"+o.replace(/'/g,\"''\")+\"'\";case 3:return\"|\"+blockHeader(o,s.indent)+dropEndingNewline(indentString(o,_));case 4:return\">\"+blockHeader(o,s.indent)+dropEndingNewline(indentString(function foldString(s,o){var i,a,u=/(\\n+)([^\\n]*)/g,_=(x=s.indexOf(\"\\n\"),x=-1!==x?x:s.length,u.lastIndex=x,foldLine(s.slice(0,x),o)),w=\"\\n\"===s[0]||\" \"===s[0];var x;for(;a=u.exec(s);){var C=a[1],j=a[2];i=\" \"===j[0],_+=C+(w||i||\"\"===j?\"\":\"\\n\")+foldLine(j,o),w=i}return _}(o,w),_));case 5:return'\"'+function escapeString(s){for(var o,i=\"\",a=0,u=0;u<s.length;a>=65536?u+=2:u++)a=codePointAt(s,u),!(o=Gr[a])&&isPrintable(a)?(i+=s[u],a>=65536&&(i+=s[u+1])):i+=o||encodeHex(a);return i}(o)+'\"';default:throw new tr(\"impossible error: invalid scalar style\")}}()}function blockHeader(s,o){var i=needIndentIndicator(s)?String(o):\"\",a=\"\\n\"===s[s.length-1];return i+(a&&(\"\\n\"===s[s.length-2]||\"\\n\"===s)?\"+\":a?\"\":\"-\")+\"\\n\"}function dropEndingNewline(s){return\"\\n\"===s[s.length-1]?s.slice(0,-1):s}function foldLine(s,o){if(\"\"===s||\" \"===s[0])return s;for(var i,a,u=/ [^ ]/g,_=0,w=0,x=0,C=\"\";i=u.exec(s);)(x=i.index)-_>o&&(a=w>_?w:x,C+=\"\\n\"+s.slice(_,a),_=a+1),w=x;return C+=\"\\n\",s.length-_>o&&w>_?C+=s.slice(_,w)+\"\\n\"+s.slice(w+1):C+=s.slice(_),C.slice(1)}function writeBlockSequence(s,o,i,a){var u,_,w,x=\"\",C=s.tag;for(u=0,_=i.length;u<_;u+=1)w=i[u],s.replacer&&(w=s.replacer.call(i,String(u),w)),(writeNode(s,o+1,w,!0,!0,!1,!0)||void 0===w&&writeNode(s,o+1,null,!0,!0,!1,!0))&&(a&&\"\"===x||(x+=generateNextLine(s,o)),s.dump&&10===s.dump.charCodeAt(0)?x+=\"-\":x+=\"- \",x+=s.dump);s.tag=C,s.dump=x||\"[]\"}function detectType(s,o,i){var a,u,_,w,x,C;for(_=0,w=(u=i?s.explicitTypes:s.implicitTypes).length;_<w;_+=1)if(((x=u[_]).instanceOf||x.predicate)&&(!x.instanceOf||\"object\"==typeof o&&o instanceof x.instanceOf)&&(!x.predicate||x.predicate(o))){if(i?x.multi&&x.representName?s.tag=x.representName(o):s.tag=x.tag:s.tag=\"?\",x.represent){if(C=s.styleMap[x.tag]||x.defaultStyle,\"[object Function]\"===Jr.call(x.represent))a=x.represent(o,C);else{if(!Hr.call(x.represent,C))throw new tr(\"!<\"+x.tag+'> tag resolver accepts not \"'+C+'\" style');a=x.represent[C](o,C)}s.dump=a}return!0}return!1}function writeNode(s,o,i,a,u,_,w){s.tag=null,s.dump=i,detectType(s,i,!1)||detectType(s,i,!0);var x,C=Jr.call(s.dump),j=a;a&&(a=s.flowLevel<0||s.flowLevel>o);var L,B,$=\"[object Object]\"===C||\"[object Array]\"===C;if($&&(B=-1!==(L=s.duplicates.indexOf(i))),(null!==s.tag&&\"?\"!==s.tag||B||2!==s.indent&&o>0)&&(u=!1),B&&s.usedDuplicates[L])s.dump=\"*ref_\"+L;else{if($&&B&&!s.usedDuplicates[L]&&(s.usedDuplicates[L]=!0),\"[object Object]\"===C)a&&0!==Object.keys(s.dump).length?(!function writeBlockMapping(s,o,i,a){var u,_,w,x,C,j,L=\"\",B=s.tag,$=Object.keys(i);if(!0===s.sortKeys)$.sort();else if(\"function\"==typeof s.sortKeys)$.sort(s.sortKeys);else if(s.sortKeys)throw new tr(\"sortKeys must be a boolean or a function\");for(u=0,_=$.length;u<_;u+=1)j=\"\",a&&\"\"===L||(j+=generateNextLine(s,o)),x=i[w=$[u]],s.replacer&&(x=s.replacer.call(i,w,x)),writeNode(s,o+1,w,!0,!0,!0)&&((C=null!==s.tag&&\"?\"!==s.tag||s.dump&&s.dump.length>1024)&&(s.dump&&10===s.dump.charCodeAt(0)?j+=\"?\":j+=\"? \"),j+=s.dump,C&&(j+=generateNextLine(s,o)),writeNode(s,o+1,x,!0,C)&&(s.dump&&10===s.dump.charCodeAt(0)?j+=\":\":j+=\": \",L+=j+=s.dump));s.tag=B,s.dump=L||\"{}\"}(s,o,s.dump,u),B&&(s.dump=\"&ref_\"+L+s.dump)):(!function writeFlowMapping(s,o,i){var a,u,_,w,x,C=\"\",j=s.tag,L=Object.keys(i);for(a=0,u=L.length;a<u;a+=1)x=\"\",\"\"!==C&&(x+=\", \"),s.condenseFlow&&(x+='\"'),w=i[_=L[a]],s.replacer&&(w=s.replacer.call(i,_,w)),writeNode(s,o,_,!1,!1)&&(s.dump.length>1024&&(x+=\"? \"),x+=s.dump+(s.condenseFlow?'\"':\"\")+\":\"+(s.condenseFlow?\"\":\" \"),writeNode(s,o,w,!1,!1)&&(C+=x+=s.dump));s.tag=j,s.dump=\"{\"+C+\"}\"}(s,o,s.dump),B&&(s.dump=\"&ref_\"+L+\" \"+s.dump));else if(\"[object Array]\"===C)a&&0!==s.dump.length?(s.noArrayIndent&&!w&&o>0?writeBlockSequence(s,o-1,s.dump,u):writeBlockSequence(s,o,s.dump,u),B&&(s.dump=\"&ref_\"+L+s.dump)):(!function writeFlowSequence(s,o,i){var a,u,_,w=\"\",x=s.tag;for(a=0,u=i.length;a<u;a+=1)_=i[a],s.replacer&&(_=s.replacer.call(i,String(a),_)),(writeNode(s,o,_,!1,!1)||void 0===_&&writeNode(s,o,null,!1,!1))&&(\"\"!==w&&(w+=\",\"+(s.condenseFlow?\"\":\" \")),w+=s.dump);s.tag=x,s.dump=\"[\"+w+\"]\"}(s,o,s.dump),B&&(s.dump=\"&ref_\"+L+\" \"+s.dump));else{if(\"[object String]\"!==C){if(\"[object Undefined]\"===C)return!1;if(s.skipInvalid)return!1;throw new tr(\"unacceptable kind of an object to dump \"+C)}\"?\"!==s.tag&&writeScalar(s,s.dump,o,_,j)}null!==s.tag&&\"?\"!==s.tag&&(x=encodeURI(\"!\"===s.tag[0]?s.tag.slice(1):s.tag).replace(/!/g,\"%21\"),x=\"!\"===s.tag[0]?\"!\"+x:\"tag:yaml.org,2002:\"===x.slice(0,18)?\"!!\"+x.slice(18):\"!<\"+x+\">\",s.dump=x+\" \"+s.dump)}return!0}function getDuplicateReferences(s,o){var i,a,u=[],_=[];for(inspectNode(s,u,_),i=0,a=_.length;i<a;i+=1)o.duplicates.push(u[_[i]]);o.usedDuplicates=new Array(a)}function inspectNode(s,o,i){var a,u,_;if(null!==s&&\"object\"==typeof s)if(-1!==(u=o.indexOf(s)))-1===i.indexOf(u)&&i.push(u);else if(o.push(s),Array.isArray(s))for(u=0,_=s.length;u<_;u+=1)inspectNode(s[u],o,i);else for(u=0,_=(a=Object.keys(s)).length;u<_;u+=1)inspectNode(s[a[u]],o,i)}var Qr=function dump$1(s,o){var i=new State(o=o||{});i.noRefs||getDuplicateReferences(s,i);var a=s;return i.replacer&&(a=i.replacer.call({\"\":a},\"\",a)),writeNode(i,0,a,!0,!0)?i.dump+\"\\n\":\"\"};function renamed(s,o){return function(){throw new Error(\"Function yaml.\"+s+\" is removed in js-yaml 4. Use yaml.\"+o+\" instead, which is now safe by default.\")}}var Zr=ir,en=ar,tn=pr,rn=br,nn=_r,sn=Mr,on=Wr.load,an=Wr.loadAll,cn={dump:Qr}.dump,ln=tr,un={binary:Or,float:vr,map:ur,null:dr,pairs:Pr,set:Nr,timestamp:wr,bool:fr,int:mr,merge:xr,omap:jr,seq:lr,str:cr},pn=renamed(\"safeLoad\",\"load\"),hn=renamed(\"safeLoadAll\",\"loadAll\"),dn=renamed(\"safeDump\",\"dump\");const fn={Type:Zr,Schema:en,FAILSAFE_SCHEMA:tn,JSON_SCHEMA:rn,CORE_SCHEMA:nn,DEFAULT_SCHEMA:sn,load:on,loadAll:an,dump:cn,YAMLException:ln,types:un,safeLoad:pn,safeLoadAll:hn,safeDump:dn},mn=\"configs_update\",gn=\"configs_toggle\";function update(s,o){return{type:mn,payload:{[s]:o}}}function toggle(s){return{type:gn,payload:s}}const actions_loaded=()=>()=>{},downloadConfig=s=>o=>{const{fn:{fetch:i}}=o;return i(s)},getConfigByUrl=(s,o)=>i=>{const{specActions:a,configsActions:u}=i;if(s)return u.downloadConfig(s).then(next,next);function next(u){u instanceof Error||u.status>=400?(a.updateLoadingStatus(\"failedConfig\"),a.updateLoadingStatus(\"failedConfig\"),a.updateUrl(\"\"),console.error(u.statusText+\" \"+s.url),o(null)):o(((s,o)=>{try{return fn.load(s)}catch(s){return o&&o.errActions.newThrownErr(new Error(s)),{}}})(u.text,i))}},get=(s,o)=>s.getIn(Array.isArray(o)?o:[o]),yn={[mn]:(s,o)=>s.merge((0,ze.fromJS)(o.payload)),[gn]:(s,o)=>{const i=o.payload,a=s.get(i);return s.set(i,!a)}};function configsPlugin(){return{statePlugins:{configs:{reducers:yn,actions:u,selectors:_}}}}const setHash=s=>s?history.pushState(null,null,`#${s}`):window.location.hash=\"\";var vn=__webpack_require__(86215),bn=__webpack_require__.n(vn);const _n=\"layout_scroll_to\",Sn=\"layout_clear_scroll\";const En={fn:{getScrollParent:function getScrollParent(s,o){const i=document.documentElement;let a=getComputedStyle(s);const u=\"absolute\"===a.position,_=o?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===a.position)return i;for(let o=s;o=o.parentElement;)if(a=getComputedStyle(o),(!u||\"static\"!==a.position)&&_.test(a.overflow+a.overflowY+a.overflowX))return o;return i}},statePlugins:{layout:{actions:{scrollToElement:(s,o)=>i=>{try{o=o||i.fn.getScrollParent(s),bn().createScroller(o).to(s)}catch(s){console.error(s)}},scrollTo:s=>({type:_n,payload:Array.isArray(s)?s:[s]}),clearScrollTo:()=>({type:Sn}),readyToScroll:(s,o)=>i=>{const a=i.layoutSelectors.getScrollToKey();We().is(a,(0,ze.fromJS)(s))&&(i.layoutActions.scrollToElement(o),i.layoutActions.clearScrollTo())},parseDeepLinkHash:s=>({layoutActions:o,layoutSelectors:i,getConfigs:a})=>{if(a().deepLinking&&s){let a=s.slice(1);\"!\"===a[0]&&(a=a.slice(1)),\"/\"===a[0]&&(a=a.slice(1));const u=a.split(\"/\").map((s=>s||\"\")),_=i.isShownKeyFromUrlHashArray(u),[w,x=\"\",C=\"\"]=_;if(\"operations\"===w){const s=i.isShownKeyFromUrlHashArray([x]);x.indexOf(\"_\")>-1&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),o.show(s.map((s=>s.replace(/_/g,\" \"))),!0)),o.show(s,!0)}(x.indexOf(\"_\")>-1||C.indexOf(\"_\")>-1)&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),o.show(_.map((s=>s.replace(/_/g,\" \"))),!0)),o.show(_,!0),o.scrollTo(_)}}},selectors:{getScrollToKey:s=>s.get(\"scrollToKey\"),isShownKeyFromUrlHashArray(s,o){const[i,a]=o;return a?[\"operations\",i,a]:i?[\"operations-tag\",i]:[]},urlHashArrayFromIsShownKey(s,o){let[i,a,u]=o;return\"operations\"==i?[a,u]:\"operations-tag\"==i?[a]:[]}},reducers:{[_n]:(s,o)=>s.set(\"scrollToKey\",We().fromJS(o.payload)),[Sn]:s=>s.delete(\"scrollToKey\")},wrapActions:{show:(s,{getConfigs:o,layoutSelectors:i})=>(...a)=>{if(s(...a),o().deepLinking)try{let[s,o]=a;s=Array.isArray(s)?s:[s];const u=i.urlHashArrayFromIsShownKey(s);if(!u.length)return;const[_,w]=u;if(!o)return setHash(\"/\");2===u.length?setHash(createDeepLinkPath(`/${encodeURIComponent(_)}/${encodeURIComponent(w)}`)):1===u.length&&setHash(createDeepLinkPath(`/${encodeURIComponent(_)}`))}catch(s){console.error(s)}}}}}};var wn=__webpack_require__(2209),xn=__webpack_require__.n(wn);const operation_wrapper=(s,o)=>class OperationWrapper extends Re.Component{onLoad=s=>{const{operation:i}=this.props,{tag:a,operationId:u}=i.toObject();let{isShownKey:_}=i.toObject();_=_||[\"operations\",a,u],o.layoutActions.readyToScroll(_,s)};render(){return Re.createElement(\"span\",{ref:this.onLoad},Re.createElement(s,this.props))}},operation_tag_wrapper=(s,o)=>class OperationTagWrapper extends Re.Component{onLoad=s=>{const{tag:i}=this.props,a=[\"operations-tag\",i];o.layoutActions.readyToScroll(a,s)};render(){return Re.createElement(\"span\",{ref:this.onLoad},Re.createElement(s,this.props))}};function deep_linking(){return[En,{statePlugins:{configs:{wrapActions:{loaded:(s,o)=>(...i)=>{s(...i);const a=decodeURIComponent(window.location.hash);o.layoutActions.parseDeepLinkHash(a)}}}},wrapComponents:{operation:operation_wrapper,OperationTag:operation_tag_wrapper}}]}var kn=__webpack_require__(40860),On=__webpack_require__.n(kn);function transform(s){return s.map((s=>{let o=\"is not of a type(s)\",i=s.get(\"message\").indexOf(o);if(i>-1){let o=s.get(\"message\").slice(i+19).split(\",\");return s.set(\"message\",s.get(\"message\").slice(0,i)+function makeNewMessage(s){return s.reduce(((s,o,i,a)=>i===a.length-1&&a.length>1?s+\"or \"+o:a[i+1]&&a.length>2?s+o+\", \":a[i+1]?s+o+\" \":s+o),\"should be a\")}(o))}return s}))}var Cn=__webpack_require__(58156),An=__webpack_require__.n(Cn);function parameter_oneof_transform(s,{jsSpec:o}){return s}const jn=[w,x];function transformErrors(s){let o={jsSpec:{}},i=On()(jn,((s,i)=>{try{return i.transform(s,o).filter((s=>!!s))}catch(o){return console.error(\"Transformer error:\",o),s}}),s);return i.filter((s=>!!s)).map((s=>(!s.get(\"line\")&&s.get(\"path\"),s)))}let In={line:0,level:\"error\",message:\"Unknown error\"};const Pn=Vt((s=>s),(s=>s.get(\"errors\",(0,ze.List)()))),Tn=Vt(Pn,(s=>s.last()));function err(o){return{statePlugins:{err:{reducers:{[rt]:(s,{payload:o})=>{let i=Object.assign(In,o,{type:\"thrown\"});return s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)))).update(\"errors\",(s=>transformErrors(s)))},[nt]:(s,{payload:o})=>(o=o.map((s=>(0,ze.fromJS)(Object.assign(In,s,{type:\"thrown\"})))),s.update(\"errors\",(s=>(s||(0,ze.List)()).concat((0,ze.fromJS)(o)))).update(\"errors\",(s=>transformErrors(s)))),[st]:(s,{payload:o})=>{let i=(0,ze.fromJS)(o);return i=i.set(\"type\",\"spec\"),s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)).sortBy((s=>s.get(\"line\"))))).update(\"errors\",(s=>transformErrors(s)))},[ot]:(s,{payload:o})=>(o=o.map((s=>(0,ze.fromJS)(Object.assign(In,s,{type:\"spec\"})))),s.update(\"errors\",(s=>(s||(0,ze.List)()).concat((0,ze.fromJS)(o)))).update(\"errors\",(s=>transformErrors(s)))),[it]:(s,{payload:o})=>{let i=(0,ze.fromJS)(Object.assign({},o));return i=i.set(\"type\",\"auth\"),s.update(\"errors\",(s=>(s||(0,ze.List)()).push((0,ze.fromJS)(i)))).update(\"errors\",(s=>transformErrors(s)))},[at]:(s,{payload:o})=>{if(!o||!s.get(\"errors\"))return s;let i=s.get(\"errors\").filter((s=>s.keySeq().every((i=>{const a=s.get(i),u=o[i];return!u||a!==u}))));return s.merge({errors:i})},[ct]:(s,{payload:o})=>{if(!o||\"function\"!=typeof o)return s;let i=s.get(\"errors\").filter((s=>o(s)));return s.merge({errors:i})}},actions:s,selectors:C}}}}function opsFilter(s,o){return s.filter(((s,i)=>-1!==i.indexOf(o)))}function filter(){return{fn:{opsFilter}}}var Nn=__webpack_require__(7666),Mn=__webpack_require__.n(Nn);const arrow_up=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),arrow_down=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),arrow=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),components_close=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),copy=({className:s=null,width:o=15,height:i=16,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 15 16\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"g\",{transform:\"translate(2, -1)\"},Re.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"}))),lock=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),unlock=({className:s=null,width:o=20,height:i=20,...a})=>Re.createElement(\"svg\",Mn()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:s,width:o,height:i,\"aria-hidden\":\"true\",focusable:\"false\"},a),Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),icons=()=>({components:{ArrowUpIcon:arrow_up,ArrowDownIcon:arrow_down,ArrowIcon:arrow,CloseIcon:components_close,CopyIcon:copy,LockIcon:lock,UnlockIcon:unlock}}),Rn=\"layout_update_layout\",Dn=\"layout_update_filter\",Ln=\"layout_update_mode\",Fn=\"layout_show\";function updateLayout(s){return{type:Rn,payload:s}}function updateFilter(s){return{type:Dn,payload:s}}function actions_show(s,o=!0){return s=normalizeArray(s),{type:Fn,payload:{thing:s,shown:o}}}function changeMode(s,o=\"\"){return s=normalizeArray(s),{type:Ln,payload:{thing:s,mode:o}}}const Bn={[Rn]:(s,o)=>s.set(\"layout\",o.payload),[Dn]:(s,o)=>s.set(\"filter\",o.payload),[Fn]:(s,o)=>{const i=o.payload.shown,a=(0,ze.fromJS)(o.payload.thing);return s.update(\"shown\",(0,ze.fromJS)({}),(s=>s.set(a,i)))},[Ln]:(s,o)=>{let i=o.payload.thing,a=o.payload.mode;return s.setIn([\"modes\"].concat(i),(a||\"\")+\"\")}},current=s=>s.get(\"layout\"),currentFilter=s=>s.get(\"filter\"),isShown=(s,o,i)=>(o=normalizeArray(o),s.get(\"shown\",(0,ze.fromJS)({})).get((0,ze.fromJS)(o),i)),whatMode=(s,o,i=\"\")=>(o=normalizeArray(o),s.getIn([\"modes\",...o],i)),$n=Vt((s=>s),(s=>!isShown(s,\"editor\"))),taggedOperations=(s,o)=>(i,...a)=>{let u=s(i,...a);const{fn:_,layoutSelectors:w,getConfigs:x}=o.getSystem(),C=x(),{maxDisplayedTags:j}=C;let L=w.currentFilter();return L&&!0!==L&&(u=_.opsFilter(u,L)),j>=0&&(u=u.slice(0,j)),u};function plugins_layout(){return{statePlugins:{layout:{reducers:Bn,actions:j,selectors:L},spec:{wrapSelectors:B}}}}function logs({configs:s}){const o={debug:0,info:1,log:2,warn:3,error:4},getLevel=s=>o[s]||-1;let{logLevel:i}=s,a=getLevel(i);function log(s,...o){getLevel(s)>=a&&console[s](...o)}return log.warn=log.bind(null,\"warn\"),log.error=log.bind(null,\"error\"),log.info=log.bind(null,\"info\"),log.debug=log.bind(null,\"debug\"),{rootInjects:{log}}}let qn=!1;function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpec:s=>(...o)=>(qn=!0,s(...o)),updateJsonSpec:(s,o)=>(...i)=>{const a=o.getConfigs().onComplete;return qn&&\"function\"==typeof a&&(setTimeout(a,0),qn=!1),s(...i)}}}}}}const extractKey=s=>{const o=\"_**[]\";return s.indexOf(o)<0?s:s.split(o)[0].trim()},escapeShell=s=>\"-d \"===s||/^[_\\/-]/g.test(s)?s:\"'\"+s.replace(/'/g,\"'\\\\''\")+\"'\",escapeCMD=s=>\"-d \"===(s=s.replace(/\\^/g,\"^^\").replace(/\\\\\"/g,'\\\\\\\\\"').replace(/\"/g,'\"\"').replace(/\\n/g,\"^\\n\"))?s.replace(/-d /g,\"-d ^\\n\"):/^[_\\/-]/g.test(s)?s:'\"'+s+'\"',escapePowershell=s=>{if(\"-d \"===s)return s;if(/\\n/.test(s)){return`@\"\\n${s.replace(/`/g,\"``\").replace(/\\$/g,\"`$\")}\\n\"@`}if(!/^[_\\/-]/.test(s)){return`'${s.replace(/'/g,\"''\")}'`}return s};const curlify=(s,o,i,a=\"\")=>{let u=!1,_=\"\";const addWords=(...s)=>_+=\" \"+s.map(o).join(\" \"),addWordsWithoutLeadingSpace=(...s)=>_+=s.map(o).join(\" \"),addNewLine=()=>_+=` ${i}`,addIndent=(s=1)=>_+=\"  \".repeat(s);let w=s.get(\"headers\");_+=\"curl\"+a;const x=s.get(\"curlOptions\");if(ze.List.isList(x)&&!x.isEmpty()&&addWords(...s.get(\"curlOptions\")),addWords(\"-X\",s.get(\"method\")),addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`${s.get(\"url\")}`),w&&w.size)for(let o of s.get(\"headers\").entries()){addNewLine(),addIndent();let[s,i]=o;addWordsWithoutLeadingSpace(\"-H\",`${s}: ${i}`),u=u||/^content-type$/i.test(s)&&/^multipart\\/form-data$/i.test(i)}const C=s.get(\"body\");if(C)if(u&&[\"POST\",\"PUT\",\"PATCH\"].includes(s.get(\"method\")))for(let[s,o]of C.entrySeq()){let i=extractKey(s);addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-F\"),o instanceof lt.File&&\"string\"==typeof o.valueOf()?addWords(`${i}=${o.data}${o.type?`;type=${o.type}`:\"\"}`):o instanceof lt.File?addWords(`${i}=@${o.name}${o.type?`;type=${o.type}`:\"\"}`):addWords(`${i}=${o}`)}else if(C instanceof lt.File)addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`--data-binary '@${C.name}'`);else{addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d \");let o=C;ze.Map.isMap(o)?addWordsWithoutLeadingSpace(function getStringBodyOfMap(s){let o=[];for(let[i,a]of s.get(\"body\").entrySeq()){let s=extractKey(i);a instanceof lt.File?o.push(`  \"${s}\": {\\n    \"name\": \"${a.name}\"${a.type?`,\\n    \"type\": \"${a.type}\"`:\"\"}\\n  }`):o.push(`  \"${s}\": ${JSON.stringify(a,null,2).replace(/(\\r\\n|\\r|\\n)/g,\"\\n  \")}`)}return`{\\n${o.join(\",\\n\")}\\n}`}(s)):(\"string\"!=typeof o&&(o=JSON.stringify(o)),addWordsWithoutLeadingSpace(o))}else C||\"POST\"!==s.get(\"method\")||(addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d ''\"));return _},requestSnippetGenerator_curl_powershell=s=>curlify(s,escapePowershell,\"`\\n\",\".exe\"),requestSnippetGenerator_curl_bash=s=>curlify(s,escapeShell,\"\\\\\\n\"),requestSnippetGenerator_curl_cmd=s=>curlify(s,escapeCMD,\"^\\n\"),request_snippets_selectors_state=s=>s||(0,ze.Map)(),Vn=Vt(request_snippets_selectors_state,(s=>{const o=s.get(\"languages\"),i=s.get(\"generators\",(0,ze.Map)());return!o||o.isEmpty()?i:i.filter(((s,i)=>o.includes(i)))})),getSnippetGenerators=s=>({fn:o})=>Vn(s).map(((s,i)=>{const a=(s=>o[`requestSnippetGenerator_${s}`])(i);return\"function\"!=typeof a?null:s.set(\"fn\",a)})).filter((s=>s)),Un=Vt(request_snippets_selectors_state,(s=>s.get(\"activeLanguage\"))),zn=Vt(request_snippets_selectors_state,(s=>s.get(\"defaultExpanded\")));var Wn=__webpack_require__(46942),Jn=__webpack_require__.n(Wn),Hn=__webpack_require__(59399);const Kn={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(250, 250, 250)\",paddingBottom:\"0\",paddingTop:\"0\",border:\"1px solid rgb(51, 51, 51)\",borderRadius:\"4px 4px 0 0\",boxShadow:\"none\",borderBottom:\"none\"},Gn={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(51, 51, 51)\",boxShadow:\"none\",border:\"1px solid rgb(51, 51, 51)\",paddingBottom:\"0\",paddingTop:\"0\",borderRadius:\"4px 4px 0 0\",marginTop:\"-5px\",marginRight:\"-5px\",marginLeft:\"-5px\",zIndex:\"9999\",borderBottom:\"none\"},request_snippets=({request:s,requestSnippetsSelectors:o,getComponent:i})=>{const a=(0,Re.useRef)(null),u=i(\"ArrowUpIcon\"),_=i(\"ArrowDownIcon\"),w=i(\"SyntaxHighlighter\",!0),[x,C]=(0,Re.useState)(o.getSnippetGenerators()?.keySeq().first()),[j,L]=(0,Re.useState)(o?.getDefaultExpanded()),B=o.getSnippetGenerators(),$=B.get(x),V=$.get(\"fn\")(s),handleSetIsExpanded=()=>{L(!j)},handleGetBtnStyle=s=>s===x?Gn:Kn,handlePreventYScrollingBeyondElement=s=>{const{target:o,deltaY:i}=s,{scrollHeight:a,offsetHeight:u,scrollTop:_}=o;a>u&&(0===_&&i<0||u+_>=a&&i>0)&&s.preventDefault()};return(0,Re.useEffect)((()=>{}),[]),(0,Re.useEffect)((()=>{const s=Array.from(a.current.childNodes).filter((s=>!!s.nodeType&&s.classList?.contains(\"curl-command\")));return s.forEach((s=>s.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{s.forEach((s=>s.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[s]),Re.createElement(\"div\",{className:\"request-snippets\",ref:a},Re.createElement(\"div\",{style:{width:\"100%\",display:\"flex\",justifyContent:\"flex-start\",alignItems:\"center\",marginBottom:\"15px\"}},Re.createElement(\"h4\",{onClick:()=>handleSetIsExpanded(),style:{cursor:\"pointer\"}},\"Snippets\"),Re.createElement(\"button\",{onClick:()=>handleSetIsExpanded(),style:{border:\"none\",background:\"none\"},title:j?\"Collapse operation\":\"Expand operation\"},j?Re.createElement(_,{className:\"arrow\",width:\"10\",height:\"10\"}):Re.createElement(u,{className:\"arrow\",width:\"10\",height:\"10\"}))),j&&Re.createElement(\"div\",{className:\"curl-command\"},Re.createElement(\"div\",{style:{paddingLeft:\"15px\",paddingRight:\"10px\",width:\"100%\",display:\"flex\"}},B.entrySeq().map((([s,o])=>Re.createElement(\"div\",{className:Jn()(\"btn\",{active:s===x}),style:handleGetBtnStyle(s),key:s,onClick:()=>(s=>{x!==s&&C(s)})(s)},Re.createElement(\"h4\",{style:s===x?{color:\"white\"}:{}},o.get(\"title\")))))),Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:V},Re.createElement(\"button\",null))),Re.createElement(\"div\",null,Re.createElement(w,{language:$.get(\"syntax\"),className:\"curl microlight\",renderPlainText:({children:s,PlainTextViewer:o})=>Re.createElement(o,{className:\"curl\"},s)},V))))},plugins_request_snippets=()=>({components:{RequestSnippets:request_snippets},fn:{requestSnippetGenerator_curl_bash,requestSnippetGenerator_curl_cmd,requestSnippetGenerator_curl_powershell},statePlugins:{requestSnippets:{selectors:$}}});class ModelCollapse extends Re.Component{static defaultProps={collapsedContent:\"{...}\",expanded:!1,title:null,onToggle:()=>{},hideSelfOnExpand:!1,specPath:We().List([])};constructor(s,o){super(s,o);let{expanded:i,collapsedContent:a}=this.props;this.state={expanded:i,collapsedContent:a||ModelCollapse.defaultProps.collapsedContent}}componentDidMount(){const{hideSelfOnExpand:s,expanded:o,modelName:i}=this.props;s&&o&&this.props.onToggle(i,o)}UNSAFE_componentWillReceiveProps(s){this.props.expanded!==s.expanded&&this.setState({expanded:s.expanded})}toggleCollapsed=()=>{this.props.onToggle&&this.props.onToggle(this.props.modelName,!this.state.expanded),this.setState({expanded:!this.state.expanded})};onLoad=s=>{if(s&&this.props.layoutSelectors){const o=this.props.layoutSelectors.getScrollToKey();We().is(o,this.props.specPath)&&this.toggleCollapsed(),this.props.layoutActions.readyToScroll(this.props.specPath,s.parentElement)}};render(){const{title:s,classes:o}=this.props;return this.state.expanded&&this.props.hideSelfOnExpand?Re.createElement(\"span\",{className:o||\"\"},this.props.children):Re.createElement(\"span\",{className:o||\"\",ref:this.onLoad},Re.createElement(\"button\",{\"aria-expanded\":this.state.expanded,className:\"model-box-control\",onClick:this.toggleCollapsed},s&&Re.createElement(\"span\",{className:\"pointer\"},s),Re.createElement(\"span\",{className:\"model-toggle\"+(this.state.expanded?\"\":\" collapsed\")}),!this.state.expanded&&Re.createElement(\"span\",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}const useTabs=({initialTab:s,isExecute:o,schema:i,example:a})=>{const u=(0,Re.useMemo)((()=>({example:\"example\",model:\"model\"})),[]),_=(0,Re.useMemo)((()=>Object.keys(u)),[u]).includes(s)&&i&&!o?s:u.example,w=(s=>{const o=(0,Re.useRef)();return(0,Re.useEffect)((()=>{o.current=s})),o.current})(o),[x,C]=(0,Re.useState)(_),j=(0,Re.useCallback)((s=>{C(s.target.dataset.name)}),[]);return(0,Re.useEffect)((()=>{w&&!o&&a&&C(u.example)}),[w,o,a]),{activeTab:x,onTabChange:j,tabs:u}},model_example=({schema:s,example:o,isExecute:i=!1,specPath:a,includeWriteOnly:u=!1,includeReadOnly:_=!1,getComponent:w,getConfigs:x,specSelectors:C})=>{const{defaultModelRendering:j,defaultModelExpandDepth:L}=x(),B=w(\"ModelWrapper\"),$=w(\"HighlightCode\",!0),V=xt()(5).toString(\"base64\"),U=xt()(5).toString(\"base64\"),z=xt()(5).toString(\"base64\"),Y=xt()(5).toString(\"base64\"),Z=C.isOAS3(),{activeTab:ee,tabs:ie,onTabChange:ae}=useTabs({initialTab:j,isExecute:i,schema:s,example:o});return Re.createElement(\"div\",{className:\"model-example\"},Re.createElement(\"ul\",{className:\"tab\",role:\"tablist\"},Re.createElement(\"li\",{className:Jn()(\"tabitem\",{active:ee===ie.example}),role:\"presentation\"},Re.createElement(\"button\",{\"aria-controls\":U,\"aria-selected\":ee===ie.example,className:\"tablinks\",\"data-name\":\"example\",id:V,onClick:ae,role:\"tab\"},i?\"Edit Value\":\"Example Value\")),s&&Re.createElement(\"li\",{className:Jn()(\"tabitem\",{active:ee===ie.model}),role:\"presentation\"},Re.createElement(\"button\",{\"aria-controls\":Y,\"aria-selected\":ee===ie.model,className:Jn()(\"tablinks\",{inactive:i}),\"data-name\":\"model\",id:z,onClick:ae,role:\"tab\"},Z?\"Schema\":\"Model\"))),ee===ie.example&&Re.createElement(\"div\",{\"aria-hidden\":ee!==ie.example,\"aria-labelledby\":V,\"data-name\":\"examplePanel\",id:U,role:\"tabpanel\",tabIndex:\"0\"},o||Re.createElement($,null,\"(no example available\")),ee===ie.model&&Re.createElement(\"div\",{className:\"model-container\",\"aria-hidden\":ee===ie.example,\"aria-labelledby\":z,\"data-name\":\"modelPanel\",id:Y,role:\"tabpanel\",tabIndex:\"0\"},Re.createElement(B,{schema:s,getComponent:w,getConfigs:x,specSelectors:C,expandDepth:L,specPath:a,includeReadOnly:_,includeWriteOnly:u})))};class ModelWrapper extends Re.Component{onToggle=(s,o)=>{this.props.layoutActions&&this.props.layoutActions.show(this.props.fullPath,o)};render(){let{getComponent:s,getConfigs:o}=this.props;const i=s(\"Model\");let a;return this.props.layoutSelectors&&(a=this.props.layoutSelectors.isShown(this.props.fullPath)),Re.createElement(\"div\",{className:\"model-box\"},Re.createElement(i,Mn()({},this.props,{getConfigs:o,expanded:a,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}function _typeof(s){return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},_typeof(s)}function _defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _defineProperty(s,o,i){return o in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _getPrototypeOf(s){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(s){return s.__proto__||Object.getPrototypeOf(s)},_getPrototypeOf(s)}function _setPrototypeOf(s,o){return _setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(s,o){return s.__proto__=o,s},_setPrototypeOf(s,o)}function _possibleConstructorReturn(s,o){return!o||\"object\"!=typeof o&&\"function\"!=typeof o?function _assertThisInitialized(s){if(void 0===s)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return s}(s):o}var Yn={};function react_immutable_pure_component_es_get(s,o,i){return function isInvalid(s){return null==s}(s)?i:function isMapLike(s){return null!==s&&\"object\"===_typeof(s)&&\"function\"==typeof s.get&&\"function\"==typeof s.has}(s)?s.has(o)?s.get(o):i:hasOwnProperty.call(s,o)?s[o]:i}function getIn(s,o,i){for(var a=0;a!==o.length;)if((s=react_immutable_pure_component_es_get(s,o[a++],Yn))===Yn)return i;return s}function check(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=function createChecker(s,o){return function(i){if(\"string\"==typeof i)return(0,ze.is)(o[i],s[i]);if(Array.isArray(i))return(0,ze.is)(getIn(o,i),getIn(s,i));throw new TypeError(\"Invalid key: expected Array or string: \"+i)}}(o,i),u=s||Object.keys(function _objectSpread2(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?ownKeys(i,!0).forEach((function(o){_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):ownKeys(i).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}({},i,{},o));return u.every(a)}const Xn=function(s){function ImmutablePureComponent(){return function _classCallCheck(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,ImmutablePureComponent),_possibleConstructorReturn(this,_getPrototypeOf(ImmutablePureComponent).apply(this,arguments))}return function _inherits(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Super expression must either be null or a function\");s.prototype=Object.create(o&&o.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),o&&_setPrototypeOf(s,o)}(ImmutablePureComponent,s),function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),s}(ImmutablePureComponent,[{key:\"shouldComponentUpdate\",value:function shouldComponentUpdate(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return!check(this.updateOnProps,this.props,s,\"updateOnProps\")||!check(this.updateOnStates,this.state,o,\"updateOnStates\")}}]),ImmutablePureComponent}(Re.Component);var Qn,Zn=__webpack_require__(5556),es=__webpack_require__.n(Zn);function _extends(){return _extends=Object.assign?Object.assign.bind():function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},_extends.apply(null,arguments)}const rolling_load=s=>Re.createElement(\"svg\",_extends({xmlns:\"http://www.w3.org/2000/svg\",width:200,height:200,className:\"rolling-load_svg__lds-rolling\",preserveAspectRatio:\"xMidYMid\",style:{backgroundImage:\"none\",backgroundPosition:\"initial initial\",backgroundRepeat:\"initial initial\"},viewBox:\"0 0 100 100\"},s),Qn||(Qn=Re.createElement(\"circle\",{cx:50,cy:50,r:35,fill:\"none\",stroke:\"#555\",strokeDasharray:\"164.93361431346415 56.97787143782138\",strokeWidth:10},Re.createElement(\"animateTransform\",{attributeName:\"transform\",begin:\"0s\",calcMode:\"linear\",dur:\"1s\",keyTimes:\"0;1\",repeatCount:\"indefinite\",type:\"rotate\",values:\"0 50 50;360 50 50\"})))),decodeRefName=s=>{const o=s.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(o)}catch{return o}};class Model extends Xn{static propTypes={schema:xn().map.isRequired,getComponent:es().func.isRequired,getConfigs:es().func.isRequired,specSelectors:es().object.isRequired,name:es().string,displayName:es().string,isRef:es().bool,required:es().bool,expandDepth:es().number,depth:es().number,specPath:xn().list.isRequired,includeReadOnly:es().bool,includeWriteOnly:es().bool};getModelName=s=>-1!==s.indexOf(\"#/definitions/\")?decodeRefName(s.replace(/^.*#\\/definitions\\//,\"\")):-1!==s.indexOf(\"#/components/schemas/\")?decodeRefName(s.replace(/^.*#\\/components\\/schemas\\//,\"\")):void 0;getRefSchema=s=>{let{specSelectors:o}=this.props;return o.findDefinition(s)};render(){let{getComponent:s,getConfigs:o,specSelectors:i,schema:a,required:u,name:_,isRef:w,specPath:x,displayName:C,includeReadOnly:j,includeWriteOnly:L}=this.props;const B=s(\"ObjectModel\"),$=s(\"ArrayModel\"),V=s(\"PrimitiveModel\");let U=\"object\",z=a&&a.get(\"$$ref\"),Y=a&&a.get(\"$ref\");if(!_&&z&&(_=this.getModelName(z)),Y){const s=this.getModelName(Y),o=this.getRefSchema(s);ze.Map.isMap(o)?(a=o.mergeDeep(a),z||(a=a.set(\"$$ref\",Y),z=Y)):ze.Map.isMap(a)&&1===a.size&&(a=null,_=Y)}if(!a)return Re.createElement(\"span\",{className:\"model model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},C||_),!Y&&Re.createElement(rolling_load,{height:\"20px\",width:\"20px\"}));const Z=i.isOAS3()&&a.get(\"deprecated\");switch(w=void 0!==w?w:!!z,U=a&&a.get(\"type\")||U,U){case\"object\":return Re.createElement(B,Mn()({className:\"object\"},this.props,{specPath:x,getConfigs:o,schema:a,name:_,deprecated:Z,isRef:w,includeReadOnly:j,includeWriteOnly:L}));case\"array\":return Re.createElement($,Mn()({className:\"array\"},this.props,{getConfigs:o,schema:a,name:_,deprecated:Z,required:u,includeReadOnly:j,includeWriteOnly:L}));default:return Re.createElement(V,Mn()({},this.props,{getComponent:s,getConfigs:o,schema:a,name:_,deprecated:Z,required:u}))}}}class Models extends Re.Component{getSchemaBasePath=()=>this.props.specSelectors.isOAS3()?[\"components\",\"schemas\"]:[\"definitions\"];getCollapsedContent=()=>\" \";handleToggle=(s,o)=>{const{layoutActions:i}=this.props;i.show([...this.getSchemaBasePath(),s],o),o&&this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(),s])};onLoadModels=s=>{s&&this.props.layoutActions.readyToScroll(this.getSchemaBasePath(),s)};onLoadModel=s=>{if(s){const o=s.getAttribute(\"data-name\");this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(),o],s)}};render(){let{specSelectors:s,getComponent:o,layoutSelectors:i,layoutActions:a,getConfigs:u}=this.props,_=s.definitions(),{docExpansion:w,defaultModelsExpandDepth:x}=u();if(!_.size||x<0)return null;const C=this.getSchemaBasePath();let j=i.isShown(C,x>0&&\"none\"!==w);const L=s.isOAS3(),B=o(\"ModelWrapper\"),$=o(\"Collapse\"),V=o(\"ModelCollapse\"),U=o(\"JumpToPath\",!0),z=o(\"ArrowUpIcon\"),Y=o(\"ArrowDownIcon\");return Re.createElement(\"section\",{className:j?\"models is-open\":\"models\",ref:this.onLoadModels},Re.createElement(\"h4\",null,Re.createElement(\"button\",{\"aria-expanded\":j,className:\"models-control\",onClick:()=>a.show(C,!j)},Re.createElement(\"span\",null,L?\"Schemas\":\"Models\"),j?Re.createElement(z,null):Re.createElement(Y,null))),Re.createElement($,{isOpened:j},_.entrySeq().map((([_])=>{const w=[...C,_],j=We().List(w),L=s.specResolvedSubtree(w),$=s.specJson().getIn(w),z=ze.Map.isMap(L)?L:We().Map(),Y=ze.Map.isMap($)?$:We().Map(),Z=z.get(\"title\")||Y.get(\"title\")||_,ee=i.isShown(w,!1);ee&&0===z.size&&Y.size>0&&this.props.specActions.requestResolvedSubtree(w);const ie=Re.createElement(B,{name:_,expandDepth:x,schema:z||We().Map(),displayName:Z,fullPath:w,specPath:j,getComponent:o,specSelectors:s,getConfigs:u,layoutSelectors:i,layoutActions:a,includeReadOnly:!0,includeWriteOnly:!0}),ae=Re.createElement(\"span\",{className:\"model-box\"},Re.createElement(\"span\",{className:\"model model-title\"},Z));return Re.createElement(\"div\",{id:`model-${_}`,className:\"model-container\",key:`models-section-${_}`,\"data-name\":_,ref:this.onLoadModel},Re.createElement(\"span\",{className:\"models-jump-to-path\"},Re.createElement(U,{path:j})),Re.createElement(V,{classes:\"model-box\",collapsedContent:this.getCollapsedContent(_),onToggle:this.handleToggle,title:ae,displayName:Z,modelName:_,specPath:j,layoutSelectors:i,layoutActions:a,hideSelfOnExpand:!0,expanded:x>0&&ee},ie))})).toArray()))}}const enum_model=({value:s,getComponent:o})=>{let i=o(\"ModelCollapse\"),a=Re.createElement(\"span\",null,\"Array [ \",s.count(),\" ]\");return Re.createElement(\"span\",{className:\"prop-enum\"},\"Enum:\",Re.createElement(\"br\",null),Re.createElement(i,{collapsedContent:a},\"[ \",s.map(String).join(\", \"),\" ]\"))};function isAbsoluteUrl(s){return s.match(/^(?:[a-z]+:)?\\/\\//i)}function buildBaseUrl(s,o){return s?isAbsoluteUrl(s)?function addProtocol(s){return s.match(/^\\/\\//i)?`${window.location.protocol}${s}`:s}(s):new URL(s,o).href:o}function safeBuildUrl(s,o,{selectedServer:i=\"\"}={}){try{return function buildUrl(s,o,{selectedServer:i=\"\"}={}){if(!s)return;if(isAbsoluteUrl(s))return s;const a=buildBaseUrl(i,o);return isAbsoluteUrl(a)?new URL(s,a).href:new URL(s,window.location.href).href}(s,o,{selectedServer:i})}catch{return}}function sanitizeUrl(s){if(\"string\"!=typeof s||\"\"===s.trim())return\"\";const o=s.trim(),i=\"about:blank\";try{const s=`https://base${String(Math.random()).slice(2)}`,a=new URL(o,s),u=a.protocol.slice(0,-1);return[\"javascript\",\"data\",\"vbscript\"].includes(u.toLowerCase())?i:a.origin===s?o.startsWith(\"/\")?`${a.pathname}${a.search}${a.hash}`:o.startsWith(\".\")?`.${a.pathname}${a.search}${a.hash}`:`${a.pathname.substring(1)}${a.search}${a.hash}`:String(a)}catch{return i}}class ObjectModel extends Re.Component{render(){let{schema:s,name:o,displayName:i,isRef:a,getComponent:u,getConfigs:_,depth:w,onToggle:x,expanded:C,specPath:j,...L}=this.props,{specSelectors:B,expandDepth:$,includeReadOnly:V,includeWriteOnly:U}=L;const{isOAS3:z}=B,Y=w>2||2===w&&\"items\"!==j.last();if(!s)return null;const{showExtensions:Z}=_(),ee=Z?getExtensions(s):(0,ze.List)();let ie=s.get(\"description\"),ae=s.get(\"properties\"),ce=s.get(\"additionalProperties\"),le=s.get(\"title\")||i||o,pe=s.get(\"required\"),de=s.filter(((s,o)=>-1!==[\"maxProperties\",\"minProperties\",\"nullable\",\"example\"].indexOf(o))),fe=s.get(\"deprecated\"),ye=s.getIn([\"externalDocs\",\"url\"]),be=s.getIn([\"externalDocs\",\"description\"]);const _e=u(\"JumpToPath\",!0),Se=u(\"Markdown\",!0),we=u(\"Model\"),xe=u(\"ModelCollapse\"),Pe=u(\"Property\"),Te=u(\"Link\"),$e=u(\"ModelExtensions\"),JumpToPathSection=()=>Re.createElement(\"span\",{className:\"model-jump-to-path\"},Re.createElement(_e,{path:j})),qe=Re.createElement(\"span\",null,Re.createElement(\"span\",null,\"{\"),\"...\",Re.createElement(\"span\",null,\"}\"),a?Re.createElement(JumpToPathSection,null):\"\"),We=B.isOAS3()?s.get(\"allOf\"):null,He=B.isOAS3()?s.get(\"anyOf\"):null,Ye=B.isOAS3()?s.get(\"oneOf\"):null,Xe=B.isOAS3()?s.get(\"not\"):null,Qe=le&&Re.createElement(\"span\",{className:\"model-title\"},a&&s.get(\"$$ref\")&&Re.createElement(\"span\",{className:Jn()(\"model-hint\",{\"model-hint--embedded\":Y})},s.get(\"$$ref\")),Re.createElement(\"span\",{className:\"model-title__text\"},le));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(xe,{modelName:o,title:Qe,onToggle:x,expanded:!!C||w<=$,collapsedContent:qe},Re.createElement(\"span\",{className:\"brace-open object\"},\"{\"),a?Re.createElement(JumpToPathSection,null):null,Re.createElement(\"span\",{className:\"inner-object\"},Re.createElement(\"table\",{className:\"model\"},Re.createElement(\"tbody\",null,ie?Re.createElement(\"tr\",{className:\"description\"},Re.createElement(\"td\",null,\"description:\"),Re.createElement(\"td\",null,Re.createElement(Se,{source:ie}))):null,ye&&Re.createElement(\"tr\",{className:\"external-docs\"},Re.createElement(\"td\",null,\"externalDocs:\"),Re.createElement(\"td\",null,Re.createElement(Te,{target:\"_blank\",href:sanitizeUrl(ye)},be||ye))),fe?Re.createElement(\"tr\",{className:\"property\"},Re.createElement(\"td\",null,\"deprecated:\"),Re.createElement(\"td\",null,\"true\")):null,ae&&ae.size?ae.entrySeq().filter((([,s])=>(!s.get(\"readOnly\")||V)&&(!s.get(\"writeOnly\")||U))).map((([s,i])=>{let a=z()&&i.get(\"deprecated\"),x=ze.List.isList(pe)&&pe.contains(s),C=[\"property-row\"];return a&&C.push(\"deprecated\"),x&&C.push(\"required\"),Re.createElement(\"tr\",{key:s,className:C.join(\" \")},Re.createElement(\"td\",null,s,x&&Re.createElement(\"span\",{className:\"star\"},\"*\")),Re.createElement(\"td\",null,Re.createElement(we,Mn()({key:`object-${o}-${s}_${i}`},L,{required:x,getComponent:u,specPath:j.push(\"properties\",s),getConfigs:_,schema:i,depth:w+1}))))})).toArray():null,0===ee.size?null:Re.createElement(Re.Fragment,null,Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\" \")),Re.createElement($e,{extensions:ee,propClass:\"extension\"})),ce&&ce.size?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"< * >:\"),Re.createElement(\"td\",null,Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"additionalProperties\"),getConfigs:_,schema:ce,depth:w+1})))):null,We?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"allOf ->\"),Re.createElement(\"td\",null,We.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"allOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,He?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"anyOf ->\"),Re.createElement(\"td\",null,He.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"anyOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,Ye?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"oneOf ->\"),Re.createElement(\"td\",null,Ye.map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"oneOf\",o),getConfigs:_,schema:s,depth:w+1}))))))):null,Xe?Re.createElement(\"tr\",null,Re.createElement(\"td\",null,\"not ->\"),Re.createElement(\"td\",null,Re.createElement(\"div\",null,Re.createElement(we,Mn()({},L,{required:!1,getComponent:u,specPath:j.push(\"not\"),getConfigs:_,schema:Xe,depth:w+1}))))):null))),Re.createElement(\"span\",{className:\"brace-close\"},\"}\")),de.size?de.entrySeq().map((([s,o])=>Re.createElement(Pe,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:\"property\"}))):null)}}class ArrayModel extends Re.Component{render(){let{getComponent:s,getConfigs:o,schema:i,depth:a,expandDepth:u,name:_,displayName:w,specPath:x}=this.props,C=i.get(\"description\"),j=i.get(\"items\"),L=i.get(\"title\")||w||_,B=i.filter(((s,o)=>-1===[\"type\",\"items\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(o))),$=i.getIn([\"externalDocs\",\"url\"]),V=i.getIn([\"externalDocs\",\"description\"]);const U=s(\"Markdown\",!0),z=s(\"ModelCollapse\"),Y=s(\"Model\"),Z=s(\"Property\"),ee=s(\"Link\"),ie=L&&Re.createElement(\"span\",{className:\"model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},L));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(z,{title:ie,expanded:a<=u,collapsedContent:\"[...]\"},\"[\",B.size?B.entrySeq().map((([s,o])=>Re.createElement(Z,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:\"property\"}))):null,C?Re.createElement(U,{source:C}):B.size?Re.createElement(\"div\",{className:\"markdown\"}):null,$&&Re.createElement(\"div\",{className:\"external-docs\"},Re.createElement(ee,{target:\"_blank\",href:sanitizeUrl($)},V||$)),Re.createElement(\"span\",null,Re.createElement(Y,Mn()({},this.props,{getConfigs:o,specPath:x.push(\"items\"),name:null,schema:j,required:!1,depth:a+1}))),\"]\"))}}const ts=\"property primitive\";class Primitive extends Re.Component{render(){let{schema:s,getComponent:o,getConfigs:i,name:a,displayName:u,depth:_,expandDepth:w}=this.props;const{showExtensions:x}=i();if(!s||!s.get)return Re.createElement(\"div\",null);let C=s.get(\"type\"),j=s.get(\"format\"),L=s.get(\"xml\"),B=s.get(\"enum\"),$=s.get(\"title\")||u||a,V=s.get(\"description\");const U=getExtensions(s);let z=s.filter(((s,o)=>-1===[\"enum\",\"type\",\"format\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(o))).filterNot(((s,o)=>U.has(o))),Y=s.getIn([\"externalDocs\",\"url\"]),Z=s.getIn([\"externalDocs\",\"description\"]);const ee=o(\"Markdown\",!0),ie=o(\"EnumModel\"),ae=o(\"Property\"),ce=o(\"ModelCollapse\"),le=o(\"Link\"),pe=o(\"ModelExtensions\"),de=$&&Re.createElement(\"span\",{className:\"model-title\"},Re.createElement(\"span\",{className:\"model-title__text\"},$));return Re.createElement(\"span\",{className:\"model\"},Re.createElement(ce,{title:de,expanded:_<=w,collapsedContent:\"[...]\"},Re.createElement(\"span\",{className:\"prop\"},a&&_>1&&Re.createElement(\"span\",{className:\"prop-name\"},$),Re.createElement(\"span\",{className:\"prop-type\"},C),j&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",j,\")\"),z.size?z.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,propKey:s,propVal:o,propClass:ts}))):null,x&&U.size>0?Re.createElement(pe,{extensions:U,propClass:`${ts} extension`}):null,V?Re.createElement(ee,{source:V}):null,Y&&Re.createElement(\"div\",{className:\"external-docs\"},Re.createElement(le,{target:\"_blank\",href:sanitizeUrl(Y)},Z||Y)),L&&L.size?Re.createElement(\"span\",null,Re.createElement(\"br\",null),Re.createElement(\"span\",{className:ts},\"xml:\"),L.entrySeq().map((([s,o])=>Re.createElement(\"span\",{key:`${s}-${o}`,className:ts},Re.createElement(\"br\",null),\"   \",s,\": \",String(o)))).toArray()):null,B&&Re.createElement(ie,{value:B,getComponent:o}))))}}class Schemes extends Re.Component{UNSAFE_componentWillMount(){let{schemes:s}=this.props;this.setScheme(s.first())}UNSAFE_componentWillReceiveProps(s){this.props.currentScheme&&s.schemes.includes(this.props.currentScheme)||this.setScheme(s.schemes.first())}onChange=s=>{this.setScheme(s.target.value)};setScheme=s=>{let{path:o,method:i,specActions:a}=this.props;a.setScheme(s,o,i)};render(){let{schemes:s,currentScheme:o}=this.props;return Re.createElement(\"label\",{htmlFor:\"schemes\"},Re.createElement(\"span\",{className:\"schemes-title\"},\"Schemes\"),Re.createElement(\"select\",{onChange:this.onChange,value:o,id:\"schemes\"},s.valueSeq().map((s=>Re.createElement(\"option\",{value:s,key:s},s))).toArray()))}}class SchemesContainer extends Re.Component{render(){const{specActions:s,specSelectors:o,getComponent:i}=this.props,a=o.operationScheme(),u=o.schemes(),_=i(\"schemes\");return u&&u.size?Re.createElement(_,{currentScheme:a,schemes:u,specActions:s}):null}}var rs=__webpack_require__(24677),ns=__webpack_require__.n(rs);const ss={value:\"\",onChange:()=>{},schema:{},keyName:\"\",required:!1,errors:(0,ze.List)()};class JsonSchemaForm extends Re.Component{static defaultProps=ss;componentDidMount(){const{dispatchInitialValue:s,value:o,onChange:i}=this.props;s?i(o):!1===s&&i(\"\")}render(){let{schema:s,errors:o,value:i,onChange:a,getComponent:u,fn:_,disabled:w}=this.props;const x=s&&s.get?s.get(\"format\"):null,C=s&&s.get?s.get(\"type\"):null,j=_.jsonSchema202012.foldType(immutableToJS(C)),L=_.isFileUploadIntended(s);let getComponentSilently=s=>u(s,!1,{failSilently:!0}),B=C?getComponentSilently(x?`JsonSchema_${C}_${x}`:`JsonSchema_${C}`):u(\"JsonSchema_string\");return L||!ze.List.isList(C)||\"array\"!==j&&\"object\"!==j||(B=u(\"JsonSchema_object\")),B||(B=u(\"JsonSchema_string\")),Re.createElement(B,Mn()({},this.props,{errors:o,fn:_,getComponent:u,value:i,onChange:a,schema:s,disabled:w}))}}class JsonSchema_string extends Re.Component{static defaultProps=ss;onChange=s=>{const o=this.props.schema&&\"file\"===this.props.schema.get(\"type\")?s.target.files[0]:s.target.value;this.props.onChange(o,this.props.keyName)};onEnumChange=s=>this.props.onChange(s);render(){let{getComponent:s,value:o,schema:i,errors:a,required:u,description:_,disabled:w}=this.props;const x=i&&i.get?i.get(\"enum\"):null,C=i&&i.get?i.get(\"format\"):null,j=i&&i.get?i.get(\"type\"):null,L=i&&i.get?i.get(\"in\"):null;if(o?(isImmutable(o)||\"object\"==typeof o)&&(o=stringify(o)):o=\"\",a=a.toJS?a.toJS():[],x){const i=s(\"Select\");return Re.createElement(i,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",allowedValues:[...x],value:o,allowEmptyValue:!u,disabled:w,onChange:this.onEnumChange})}const B=w||L&&\"formData\"===L&&!(\"FormData\"in window),$=s(\"Input\");return j&&\"file\"===j?Re.createElement($,{type:\"file\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",onChange:this.onChange,disabled:B}):Re.createElement(ns(),{type:C&&\"password\"===C?\"password\":\"text\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",value:o,minLength:0,debounceTimeout:350,placeholder:_,onChange:this.onChange,disabled:B})}}class JsonSchema_array extends Re.PureComponent{static defaultProps=ss;constructor(s,o){super(s,o),this.state={value:valueOrEmptyList(s.value),schema:s.schema}}UNSAFE_componentWillReceiveProps(s){const o=valueOrEmptyList(s.value);o!==this.state.value&&this.setState({value:o}),s.schema!==this.state.schema&&this.setState({schema:s.schema})}onChange=()=>{this.props.onChange(this.state.value)};onItemChange=(s,o)=>{this.setState((({value:i})=>({value:i.set(o,s)})),this.onChange)};removeItem=s=>{this.setState((({value:o})=>({value:o.delete(s)})),this.onChange)};addItem=()=>{const{fn:s}=this.props;let o=valueOrEmptyList(this.state.value);this.setState((()=>({value:o.push(s.getSampleSchema(this.state.schema.get(\"items\"),!1,{includeWriteOnly:!0}))})),this.onChange)};onEnumChange=s=>{this.setState((()=>({value:s})),this.onChange)};render(){let{getComponent:s,required:o,schema:i,errors:a,fn:u,disabled:_}=this.props;a=a.toJS?a.toJS():Array.isArray(a)?a:[];const w=a.filter((s=>\"string\"==typeof s)),x=a.filter((s=>void 0!==s.needRemove)).map((s=>s.error)),C=this.state.value,j=!!(C&&C.count&&C.count()>0),L=i.getIn([\"items\",\"enum\"]),B=i.getIn([\"items\",\"type\"]),$=u.jsonSchema202012.foldType(immutableToJS(B)),V=u.jsonSchema202012.getType(immutableToJS(i.get(\"items\"))),U=i.getIn([\"items\",\"format\"]),z=i.get(\"items\");let Y,Z=!1,ee=\"file\"===B||\"string\"===B&&\"binary\"===U;if(B&&U?Y=s(`JsonSchema_${B}_${U}`):\"boolean\"!==B&&\"array\"!==B&&\"object\"!==B||(Y=s(`JsonSchema_${B}`)),!ze.List.isList(B)||\"array\"!==$&&\"object\"!==$||(Y=s(\"JsonSchema_object\")),Y||ee||(Z=!0),L){const i=s(\"Select\");return Re.createElement(i,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",multiple:!0,value:C,disabled:_,allowedValues:L,allowEmptyValue:!o,onChange:this.onEnumChange})}const ie=s(\"Button\");return Re.createElement(\"div\",{className:\"json-schema-array\"},j?C.map(((o,i)=>{const w=(0,ze.fromJS)([...a.filter((s=>s.index===i)).map((s=>s.error))]);return Re.createElement(\"div\",{key:i,className:\"json-schema-form-item\"},ee?Re.createElement(JsonSchemaArrayItemFile,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w,getComponent:s}):Z?Re.createElement(JsonSchemaArrayItemText,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w}):Re.createElement(Y,Mn()({},this.props,{value:o,onChange:s=>this.onItemChange(s,i),disabled:_,errors:w,schema:z,getComponent:s,fn:u})),_?null:Re.createElement(ie,{className:`btn btn-sm json-schema-form-item-remove ${x.length?\"invalid\":null}`,title:x.length?x:\"\",onClick:()=>this.removeItem(i)},\" - \"))})):null,_?null:Re.createElement(ie,{className:`btn btn-sm json-schema-form-item-add ${w.length?\"invalid\":null}`,title:w.length?w:\"\",onClick:this.addItem},\"Add \",V,\" item\"))}}class JsonSchemaArrayItemText extends Re.Component{static defaultProps=ss;onChange=s=>{const o=s.target.value;this.props.onChange(o,this.props.keyName)};render(){let{value:s,errors:o,description:i,disabled:a}=this.props;return s?(isImmutable(s)||\"object\"==typeof s)&&(s=stringify(s)):s=\"\",o=o.toJS?o.toJS():[],Re.createElement(ns(),{type:\"text\",className:o.length?\"invalid\":\"\",title:o.length?o:\"\",value:s,minLength:0,debounceTimeout:350,placeholder:i,onChange:this.onChange,disabled:a})}}class JsonSchemaArrayItemFile extends Re.Component{static defaultProps=ss;onFileChange=s=>{const o=s.target.files[0];this.props.onChange(o,this.props.keyName)};render(){let{getComponent:s,errors:o,disabled:i}=this.props;const a=s(\"Input\"),u=i||!(\"FormData\"in window);return Re.createElement(a,{type:\"file\",className:o.length?\"invalid\":\"\",title:o.length?o:\"\",onChange:this.onFileChange,disabled:u})}}class JsonSchema_boolean extends Re.Component{static defaultProps=ss;onEnumChange=s=>this.props.onChange(s);render(){let{getComponent:s,value:o,errors:i,schema:a,required:u,disabled:_}=this.props;i=i.toJS?i.toJS():[];let w=a&&a.get?a.get(\"enum\"):null,x=!w||!u,C=!w&&[\"true\",\"false\"];const j=s(\"Select\");return Re.createElement(j,{className:i.length?\"invalid\":\"\",title:i.length?i:\"\",value:String(o),disabled:_,allowedValues:w?[...w]:C,allowEmptyValue:x,onChange:this.onEnumChange})}}const stringifyObjectErrors=s=>s.map((s=>{const o=void 0!==s.propKey?s.propKey:s.index;let i=\"string\"==typeof s?s:\"string\"==typeof s.error?s.error:null;if(!o&&i)return i;let a=s.error,u=`/${s.propKey}`;for(;\"object\"==typeof a;){const s=void 0!==a.propKey?a.propKey:a.index;if(void 0===s)break;if(u+=`/${s}`,!a.error)break;a=a.error}return`${u}: ${a}`}));class JsonSchema_object extends Re.PureComponent{constructor(){super()}static defaultProps=ss;onChange=s=>{this.props.onChange(s)};handleOnChange=s=>{const o=s.target.value;this.onChange(o)};render(){let{getComponent:s,value:o,errors:i,disabled:a}=this.props;const u=s(\"TextArea\");return i=i.toJS?i.toJS():Array.isArray(i)?i:[],Re.createElement(\"div\",null,Re.createElement(u,{className:Jn()({invalid:i.length}),title:i.length?stringifyObjectErrors(i).join(\", \"):\"\",value:stringify(o),disabled:a,onChange:this.handleOnChange}))}}function valueOrEmptyList(s){return ze.List.isList(s)?s:Array.isArray(s)?(0,ze.fromJS)(s):(0,ze.List)()}const ModelExtensions=({extensions:s,propClass:o=\"\"})=>s.entrySeq().map((([s,i])=>{const a=immutableToJS(i)??null;return Re.createElement(\"tr\",{key:s,className:o},Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,JSON.stringify(a)))})).toArray();var os=__webpack_require__(11331),as=__webpack_require__.n(os);const hasSchemaType=(s,o)=>{const i=ze.Map.isMap(s);if(!i&&!as()(s))return!1;const a=i?s.get(\"type\"):s.type;return o===a||Array.isArray(o)&&o.includes(a)},json_schema_5=()=>({components:{modelExample:model_example,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,ModelExtensions,schemes:Schemes,SchemesContainer,...V},fn:{hasSchemaType}});var cs=__webpack_require__(19123),ls=__webpack_require__.n(cs),us=__webpack_require__(41859),ps=__webpack_require__.n(us),hs=__webpack_require__(62193),ds=__webpack_require__.n(hs);const shallowArrayEquals=s=>o=>Array.isArray(s)&&Array.isArray(o)&&s.length===o.length&&s.every(((s,i)=>s===o[i])),list=(...s)=>s;class Cache extends Map{delete(s){const o=Array.from(this.keys()).find(shallowArrayEquals(s));return super.delete(o)}get(s){const o=Array.from(this.keys()).find(shallowArrayEquals(s));return super.get(o)}has(s){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals(s))}}const utils_memoizeN=(s,o=list)=>{const{Cache:i}=pt();pt().Cache=Cache;const a=pt()(s,o);return pt().Cache=i,a},fs={string:s=>s.pattern?(s=>{try{return new(ps())(s).gen()}catch(s){return\"string\"}})(s.pattern):\"string\",string_email:()=>\"user@example.com\",\"string_date-time\":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",string_hostname:()=>\"example.com\",string_ipv4:()=>\"198.51.100.42\",string_ipv6:()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",number:()=>0,number_float:()=>0,integer:()=>0,boolean:s=>\"boolean\"!=typeof s.default||s.default},primitive=s=>{s=objectify(s);let{type:o,format:i}=s,a=fs[`${o}_${i}`]||fs[o];return isFunc(a)?a(s):\"Unknown Type: \"+s.type},sanitizeRef=s=>deeplyStripKey(s,\"$$ref\",(s=>\"string\"==typeof s&&s.indexOf(\"#\")>-1)),ms=[\"maxProperties\",\"minProperties\"],gs=[\"minItems\",\"maxItems\"],ys=[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\"],vs=[\"minLength\",\"maxLength\"],mergeJsonSchema=(s,o,i={})=>{const a={...s};if([\"example\",\"default\",\"enum\",\"xml\",\"type\",...ms,...gs,...ys,...vs].forEach((s=>(s=>{void 0===a[s]&&void 0!==o[s]&&(a[s]=o[s])})(s))),void 0!==o.required&&Array.isArray(o.required)&&(void 0!==a.required&&a.required.length||(a.required=[]),o.required.forEach((s=>{a.required.includes(s)||a.required.push(s)}))),o.properties){a.properties||(a.properties={});let s=objectify(o.properties);for(let u in s)Object.prototype.hasOwnProperty.call(s,u)&&(s[u]&&s[u].deprecated||s[u]&&s[u].readOnly&&!i.includeReadOnly||s[u]&&s[u].writeOnly&&!i.includeWriteOnly||a.properties[u]||(a.properties[u]=s[u],!o.required&&Array.isArray(o.required)&&-1!==o.required.indexOf(u)&&(a.required?a.required.push(u):a.required=[u])))}return o.items&&(a.items||(a.items={}),a.items=mergeJsonSchema(a.items,o.items,i)),a},sampleFromSchemaGeneric=(s,o={},i=void 0,a=!1)=>{s&&isFunc(s.toJS)&&(s=s.toJS());let u=void 0!==i||s&&void 0!==s.example||s&&void 0!==s.default;const _=!u&&s&&s.oneOf&&s.oneOf.length>0,w=!u&&s&&s.anyOf&&s.anyOf.length>0;if(!u&&(_||w)){const i=objectify(_?s.oneOf[0]:s.anyOf[0]);if(!(s=mergeJsonSchema(s,i,o)).xml&&i.xml&&(s.xml=i.xml),void 0!==s.example&&void 0!==i.example)u=!0;else if(i.properties){s.properties||(s.properties={});let a=objectify(i.properties);for(let u in a)Object.prototype.hasOwnProperty.call(a,u)&&(a[u]&&a[u].deprecated||a[u]&&a[u].readOnly&&!o.includeReadOnly||a[u]&&a[u].writeOnly&&!o.includeWriteOnly||s.properties[u]||(s.properties[u]=a[u],!i.required&&Array.isArray(i.required)&&-1!==i.required.indexOf(u)&&(s.required?s.required.push(u):s.required=[u])))}}const x={};let{xml:C,type:j,example:L,properties:B,additionalProperties:$,items:V}=s||{},{includeReadOnly:U,includeWriteOnly:z}=o;C=C||{};let Y,{name:Z,prefix:ee,namespace:ie}=C,ae={};if(a&&(Z=Z||\"notagname\",Y=(ee?ee+\":\":\"\")+Z,ie)){x[ee?\"xmlns:\"+ee:\"xmlns\"]=ie}a&&(ae[Y]=[]);const schemaHasAny=o=>o.some((o=>Object.prototype.hasOwnProperty.call(s,o)));s&&!j&&(B||$||schemaHasAny(ms)?j=\"object\":V||schemaHasAny(gs)?j=\"array\":schemaHasAny(ys)?(j=\"number\",s.type=\"number\"):u||s.enum||(j=\"string\",s.type=\"string\"));const handleMinMaxItems=o=>{if(null!=s?.maxItems&&(o=o.slice(0,s?.maxItems)),null!=s?.minItems){let i=0;for(;o.length<s?.minItems;)o.push(o[i++%o.length])}return o},ce=objectify(B);let le,pe=0;const hasExceededMaxProperties=()=>s&&null!==s.maxProperties&&void 0!==s.maxProperties&&pe>=s.maxProperties,canAddProperty=o=>!s||null===s.maxProperties||void 0===s.maxProperties||!hasExceededMaxProperties()&&(!(o=>!(s&&s.required&&s.required.length&&s.required.includes(o)))(o)||s.maxProperties-pe-(()=>{if(!s||!s.required)return 0;let o=0;return a?s.required.forEach((s=>o+=void 0===ae[s]?0:1)):s.required.forEach((s=>o+=void 0===ae[Y]?.find((o=>void 0!==o[s]))?0:1)),s.required.length-o})()>0);if(le=a?(i,u=void 0)=>{if(s&&ce[i]){if(ce[i].xml=ce[i].xml||{},ce[i].xml.attribute){const s=Array.isArray(ce[i].enum)?ce[i].enum[0]:void 0,o=ce[i].example,a=ce[i].default;return void(x[ce[i].xml.name||i]=void 0!==o?o:void 0!==a?a:void 0!==s?s:primitive(ce[i]))}ce[i].xml.name=ce[i].xml.name||i}else ce[i]||!1===$||(ce[i]={xml:{name:i}});let _=sampleFromSchemaGeneric(s&&ce[i]||void 0,o,u,a);canAddProperty(i)&&(pe++,Array.isArray(_)?ae[Y]=ae[Y].concat(_):ae[Y].push(_))}:(i,u)=>{if(canAddProperty(i)){if(Object.prototype.hasOwnProperty.call(s,\"discriminator\")&&s.discriminator&&Object.prototype.hasOwnProperty.call(s.discriminator,\"mapping\")&&s.discriminator.mapping&&Object.prototype.hasOwnProperty.call(s,\"$$ref\")&&s.$$ref&&s.discriminator.propertyName===i){for(let o in s.discriminator.mapping)if(-1!==s.$$ref.search(s.discriminator.mapping[o])){ae[i]=o;break}}else ae[i]=sampleFromSchemaGeneric(ce[i],o,u,a);pe++}},u){let u;if(u=sanitizeRef(void 0!==i?i:void 0!==L?L:s.default),!a){if(\"number\"==typeof u&&\"string\"===j)return`${u}`;if(\"string\"!=typeof u||\"string\"===j)return u;try{return JSON.parse(u)}catch(s){return u}}if(s||(j=Array.isArray(u)?\"array\":typeof u),\"array\"===j){if(!Array.isArray(u)){if(\"string\"==typeof u)return u;u=[u]}const i=s?s.items:void 0;i&&(i.xml=i.xml||C||{},i.xml.name=i.xml.name||C.name);let _=u.map((s=>sampleFromSchemaGeneric(i,o,s,a)));return _=handleMinMaxItems(_),C.wrapped?(ae[Y]=_,ds()(x)||ae[Y].push({_attr:x})):ae=_,ae}if(\"object\"===j){if(\"string\"==typeof u)return u;for(let o in u)Object.prototype.hasOwnProperty.call(u,o)&&(s&&ce[o]&&ce[o].readOnly&&!U||s&&ce[o]&&ce[o].writeOnly&&!z||(s&&ce[o]&&ce[o].xml&&ce[o].xml.attribute?x[ce[o].xml.name||o]=u[o]:le(o,u[o])));return ds()(x)||ae[Y].push({_attr:x}),ae}return ae[Y]=ds()(x)?u:[{_attr:x},u],ae}if(\"object\"===j){for(let s in ce)Object.prototype.hasOwnProperty.call(ce,s)&&(ce[s]&&ce[s].deprecated||ce[s]&&ce[s].readOnly&&!U||ce[s]&&ce[s].writeOnly&&!z||le(s));if(a&&x&&ae[Y].push({_attr:x}),hasExceededMaxProperties())return ae;if(!0===$)a?ae[Y].push({additionalProp:\"Anything can be here\"}):ae.additionalProp1={},pe++;else if($){const i=objectify($),u=sampleFromSchemaGeneric(i,o,void 0,a);if(a&&i.xml&&i.xml.name&&\"notagname\"!==i.xml.name)ae[Y].push(u);else{const o=null!==s.minProperties&&void 0!==s.minProperties&&pe<s.minProperties?s.minProperties-pe:3;for(let s=1;s<=o;s++){if(hasExceededMaxProperties())return ae;if(a){const o={};o[\"additionalProp\"+s]=u.notagname,ae[Y].push(o)}else ae[\"additionalProp\"+s]=u;pe++}}}return ae}if(\"array\"===j){if(!V)return;let i;if(a&&(V.xml=V.xml||s?.xml||{},V.xml.name=V.xml.name||C.name),Array.isArray(V.anyOf))i=V.anyOf.map((s=>sampleFromSchemaGeneric(mergeJsonSchema(s,V,o),o,void 0,a)));else if(Array.isArray(V.oneOf))i=V.oneOf.map((s=>sampleFromSchemaGeneric(mergeJsonSchema(s,V,o),o,void 0,a)));else{if(!(!a||a&&C.wrapped))return sampleFromSchemaGeneric(V,o,void 0,a);i=[sampleFromSchemaGeneric(V,o,void 0,a)]}return i=handleMinMaxItems(i),a&&C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x}),ae):i}let de;if(s&&Array.isArray(s.enum))de=normalizeArray(s.enum)[0];else{if(!s)return;if(de=primitive(s),\"number\"==typeof de){let o=s.minimum;null!=o&&(s.exclusiveMinimum&&o++,de=o);let i=s.maximum;null!=i&&(s.exclusiveMaximum&&i--,de=i)}if(\"string\"==typeof de&&(null!==s.maxLength&&void 0!==s.maxLength&&(de=de.slice(0,s.maxLength)),null!==s.minLength&&void 0!==s.minLength)){let o=0;for(;de.length<s.minLength;)de+=de[o++%de.length]}}if(\"file\"!==j)return a?(ae[Y]=ds()(x)?de:[{_attr:x},de],ae):de},inferSchema=s=>(s.schema&&(s=s.schema),s.properties&&(s.type=\"object\"),s),createXMLExample=(s,o,i)=>{const a=sampleFromSchemaGeneric(s,o,i,!0);if(a)return\"string\"==typeof a?a:ls()(a,{declaration:!0,indent:\"\\t\"})},sampleFromSchema=(s,o,i)=>sampleFromSchemaGeneric(s,o,i,!1),resolver=(s,o,i)=>[s,JSON.stringify(o),JSON.stringify(i)],bs=utils_memoizeN(createXMLExample,resolver),_s=utils_memoizeN(sampleFromSchema,resolver),Ss=[{when:/json/,shouldStringifyTypes:[\"string\"]}],Es=[\"object\"],get_json_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.memoizedSampleFromSchema(o,i,u),x=typeof w,C=Ss.reduce(((s,o)=>o.when.test(a)?[...s,...o.shouldStringifyTypes]:s),Es);return gt()(C,(s=>s===x))?JSON.stringify(w,null,2):w},get_yaml_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.getJsonSampleSchema(o,i,a,u);let x;try{x=fn.dump(fn.load(w),{lineWidth:-1},{schema:rn}),\"\\n\"===x[x.length-1]&&(x=x.slice(0,x.length-1))}catch(s){return console.error(s),\"error: could not generate yaml example\"}return x.replace(/\\t/g,\"  \")},get_xml_sample_schema=s=>(o,i,a)=>{const{fn:u}=s();if(o&&!o.xml&&(o.xml={}),o&&!o.xml.name){if(!o.$$ref&&(o.type||o.items||o.properties||o.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(o.$$ref){let s=o.$$ref.match(/\\S*\\/(\\S+)$/);o.xml.name=s[1]}}return u.memoizedCreateXMLExample(o,i,a)},get_sample_schema=s=>(o,i=\"\",a={},u=void 0)=>{const{fn:_}=s();return\"function\"==typeof o?.toJS&&(o=o.toJS()),\"function\"==typeof u?.toJS&&(u=u.toJS()),/xml/.test(i)?_.getXmlSampleSchema(o,a,u):/(yaml|yml)/.test(i)?_.getYamlSampleSchema(o,a,i,u):_.getJsonSampleSchema(o,a,i,u)},json_schema_5_samples=({getSystem:s})=>{const o=get_json_sample_schema(s),i=get_yaml_sample_schema(s),a=get_xml_sample_schema(s),u=get_sample_schema(s);return{fn:{jsonSchema5:{inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:_s,memoizedCreateXMLExample:bs,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema},inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:_s,memoizedCreateXMLExample:bs,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema}}};var ws=__webpack_require__(37334),xs=__webpack_require__.n(ws);const ks=[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],spec_selectors_state=s=>s||(0,ze.Map)(),Os=Vt(spec_selectors_state,(s=>s.get(\"lastError\"))),Cs=Vt(spec_selectors_state,(s=>s.get(\"url\"))),As=Vt(spec_selectors_state,(s=>s.get(\"spec\")||\"\")),js=Vt(spec_selectors_state,(s=>s.get(\"specSource\")||\"not-editor\")),Is=Vt(spec_selectors_state,(s=>s.get(\"json\",(0,ze.Map)()))),Ps=Vt(Is,(s=>s.toJS())),Ts=Vt(spec_selectors_state,(s=>s.get(\"resolved\",(0,ze.Map)()))),specResolvedSubtree=(s,o)=>s.getIn([\"resolvedSubtrees\",...o],void 0),mergerFn=(s,o)=>ze.Map.isMap(s)&&ze.Map.isMap(o)?o.get(\"$$ref\")?o:(0,ze.OrderedMap)().mergeWith(mergerFn,s,o):o,Ns=Vt(spec_selectors_state,(s=>(0,ze.OrderedMap)().mergeWith(mergerFn,s.get(\"json\"),s.get(\"resolvedSubtrees\")))),spec=s=>Is(s),Ms=Vt(spec,(()=>!1)),Rs=Vt(spec,(s=>returnSelfOrNewMap(s&&s.get(\"info\")))),Ds=Vt(spec,(s=>returnSelfOrNewMap(s&&s.get(\"externalDocs\")))),Ls=Vt(Rs,(s=>s&&s.get(\"version\"))),Fs=Vt(Ls,(s=>/v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(s).slice(1))),Bs=Vt(Ns,(s=>s.get(\"paths\"))),$s=xs()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\"]),qs=Vt(Bs,(s=>{let o=(0,ze.List)();return!ze.Map.isMap(s)||s.isEmpty()||s.forEach(((s,i)=>{if(!s||!s.forEach)return{};s.forEach(((s,a)=>{ks.indexOf(a)<0||(o=o.push((0,ze.fromJS)({path:i,method:a,operation:s,id:`${a}-${i}`})))}))})),o})),Vs=Vt(spec,(s=>(0,ze.Set)(s.get(\"consumes\")))),Us=Vt(spec,(s=>(0,ze.Set)(s.get(\"produces\")))),zs=Vt(spec,(s=>s.get(\"security\",(0,ze.List)()))),Ws=Vt(spec,(s=>s.get(\"securityDefinitions\"))),findDefinition=(s,o)=>{const i=s.getIn([\"resolvedSubtrees\",\"definitions\",o],null),a=s.getIn([\"json\",\"definitions\",o],null);return i||a||null},Js=Vt(spec,(s=>{const o=s.get(\"definitions\");return ze.Map.isMap(o)?o:(0,ze.Map)()})),Hs=Vt(spec,(s=>s.get(\"basePath\"))),Ks=Vt(spec,(s=>s.get(\"host\"))),Gs=Vt(spec,(s=>s.get(\"schemes\",(0,ze.Map)()))),Ys=Vt([qs,Vs,Us],((s,o,i)=>s.map((s=>s.update(\"operation\",(s=>ze.Map.isMap(s)?s.withMutations((s=>(s.get(\"consumes\")||s.update(\"consumes\",(s=>(0,ze.Set)(s).merge(o))),s.get(\"produces\")||s.update(\"produces\",(s=>(0,ze.Set)(s).merge(i))),s))):(0,ze.Map)())))))),Xs=Vt(spec,(s=>{const o=s.get(\"tags\",(0,ze.List)());return ze.List.isList(o)?o.filter((s=>ze.Map.isMap(s))):(0,ze.List)()})),tagDetails=(s,o)=>(Xs(s)||(0,ze.List)()).filter(ze.Map.isMap).find((s=>s.get(\"name\")===o),(0,ze.Map)()),Qs=Vt(Ys,Xs,((s,o)=>s.reduce(((s,o)=>{let i=(0,ze.Set)(o.getIn([\"operation\",\"tags\"]));return i.count()<1?s.update(\"default\",(0,ze.List)(),(s=>s.push(o))):i.reduce(((s,i)=>s.update(i,(0,ze.List)(),(s=>s.push(o)))),s)}),o.reduce(((s,o)=>s.set(o.get(\"name\"),(0,ze.List)())),(0,ze.OrderedMap)())))),selectors_taggedOperations=s=>({getConfigs:o})=>{let{tagsSorter:i,operationsSorter:a}=o();return Qs(s).sortBy(((s,o)=>o),((s,o)=>{let a=\"function\"==typeof i?i:Pt.tagsSorter[i];return a?a(s,o):null})).map(((o,i)=>{let u=\"function\"==typeof a?a:Pt.operationsSorter[a],_=u?o.sort(u):o;return(0,ze.Map)({tagDetails:tagDetails(s,i),operations:_})}))},Zs=Vt(spec_selectors_state,(s=>s.get(\"responses\",(0,ze.Map)()))),eo=Vt(spec_selectors_state,(s=>s.get(\"requests\",(0,ze.Map)()))),to=Vt(spec_selectors_state,(s=>s.get(\"mutatedRequests\",(0,ze.Map)()))),responseFor=(s,o,i)=>Zs(s).getIn([o,i],null),requestFor=(s,o,i)=>eo(s).getIn([o,i],null),mutatedRequestFor=(s,o,i)=>to(s).getIn([o,i],null),allowTryItOutFor=()=>!0,parameterWithMetaByIdentity=(s,o,i)=>{const a=Ns(s).getIn([\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)()),u=s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)());return a.map((s=>{const o=u.get(`${i.get(\"in\")}.${i.get(\"name\")}`),a=u.get(`${i.get(\"in\")}.${i.get(\"name\")}.hash-${i.hashCode()}`);return(0,ze.OrderedMap)().merge(s,o,a)})).find((s=>s.get(\"in\")===i.get(\"in\")&&s.get(\"name\")===i.get(\"name\")),(0,ze.OrderedMap)())},parameterInclusionSettingFor=(s,o,i,a)=>{const u=`${a}.${i}`;return s.getIn([\"meta\",\"paths\",...o,\"parameter_inclusions\",u],!1)},parameterWithMeta=(s,o,i,a)=>{const u=Ns(s).getIn([\"paths\",...o,\"parameters\"],(0,ze.OrderedMap)()).find((s=>s.get(\"in\")===a&&s.get(\"name\")===i),(0,ze.OrderedMap)());return parameterWithMetaByIdentity(s,o,u)},operationWithMeta=(s,o,i)=>{const a=Ns(s).getIn([\"paths\",o,i],(0,ze.OrderedMap)()),u=s.getIn([\"meta\",\"paths\",o,i],(0,ze.OrderedMap)()),_=a.get(\"parameters\",(0,ze.List)()).map((a=>parameterWithMetaByIdentity(s,[o,i],a)));return(0,ze.OrderedMap)().merge(a,u).set(\"parameters\",_)};function getParameter(s,o,i,a){return o=o||[],s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([])).find((s=>ze.Map.isMap(s)&&s.get(\"name\")===i&&s.get(\"in\")===a))||(0,ze.Map)()}const ro=Vt(spec,(s=>{const o=s.get(\"host\");return\"string\"==typeof o&&o.length>0&&\"/\"!==o[0]}));function parameterValues(s,o,i){return o=o||[],operationWithMeta(s,...o).get(\"parameters\",(0,ze.List)()).reduce(((s,o)=>{let a=i&&\"body\"===o.get(\"in\")?o.get(\"value_xml\"):o.get(\"value\");return ze.List.isList(a)&&(a=a.filter((s=>\"\"!==s))),s.set(paramToIdentifier(o,{allowHashes:!1}),a)}),(0,ze.fromJS)({}))}function parametersIncludeIn(s,o=\"\"){if(ze.List.isList(s))return s.some((s=>ze.Map.isMap(s)&&s.get(\"in\")===o))}function parametersIncludeType(s,o=\"\"){if(ze.List.isList(s))return s.some((s=>ze.Map.isMap(s)&&s.get(\"type\")===o))}function contentTypeValues(s,o){o=o||[];let i=Ns(s).getIn([\"paths\",...o],(0,ze.fromJS)({})),a=s.getIn([\"meta\",\"paths\",...o],(0,ze.fromJS)({})),u=currentProducesFor(s,o);const _=i.get(\"parameters\")||new ze.List,w=a.get(\"consumes_value\")?a.get(\"consumes_value\"):parametersIncludeType(_,\"file\")?\"multipart/form-data\":parametersIncludeType(_,\"formData\")?\"application/x-www-form-urlencoded\":void 0;return(0,ze.fromJS)({requestContentType:w,responseContentType:u})}function currentProducesFor(s,o){o=o||[];const i=Ns(s).getIn([\"paths\",...o],null);if(null===i)return;const a=s.getIn([\"meta\",\"paths\",...o,\"produces_value\"],null),u=i.getIn([\"produces\",0],null);return a||u||\"application/json\"}function producesOptionsFor(s,o){o=o||[];const i=Ns(s),a=i.getIn([\"paths\",...o],null);if(null===a)return;const[u]=o,_=a.get(\"produces\",null),w=i.getIn([\"paths\",u,\"produces\"],null),x=i.getIn([\"produces\"],null);return _||w||x}function consumesOptionsFor(s,o){o=o||[];const i=Ns(s),a=i.getIn([\"paths\",...o],null);if(null===a)return;const[u]=o,_=a.get(\"consumes\",null),w=i.getIn([\"paths\",u,\"consumes\"],null),x=i.getIn([\"consumes\"],null);return _||w||x}const operationScheme=(s,o,i)=>{let a=s.get(\"url\").match(/^([a-z][a-z0-9+\\-.]*):/),u=Array.isArray(a)?a[1]:null;return s.getIn([\"scheme\",o,i])||s.getIn([\"scheme\",\"_defaultScheme\"])||u||\"\"},canExecuteScheme=(s,o,i)=>[\"http\",\"https\"].indexOf(operationScheme(s,o,i))>-1,validationErrors=(s,o)=>{o=o||[];const i=s.getIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([])),a=[];if(0===i.length)return a;const getErrorsWithPaths=(s,o=[])=>{const getNestedErrorsWithPaths=(s,o)=>{const i=[...o,s.get(\"propKey\")||s.get(\"index\")];return ze.Map.isMap(s.get(\"error\"))?getErrorsWithPaths(s.get(\"error\"),i):{error:s.get(\"error\"),path:i}};return ze.List.isList(s)?s.map((s=>ze.Map.isMap(s)?getNestedErrorsWithPaths(s,o):{error:s,path:o})):getNestedErrorsWithPaths(s,o)};return i.forEach(((s,o)=>{const i=o.split(\".\").slice(1,-1).join(\".\"),u=s.get(\"errors\");if(u&&u.count()){getErrorsWithPaths(u).forEach((({error:s,path:o})=>{a.push(((s,o,i)=>`For '${i}'${(o=o.reduce(((s,o)=>\"number\"==typeof o?`${s}[${o}]`:s?`${s}.${o}`:o),\"\"))?` at path '${o}'`:\"\"}: ${s}.`)(s,o,i))}))}})),a},validateBeforeExecute=(s,o)=>0===validationErrors(s,o).length,getOAS3RequiredRequestBodyContentType=(s,o)=>{let i={requestBody:!1,requestContentType:{}},a=s.getIn([\"resolvedSubtrees\",\"paths\",...o,\"requestBody\"],(0,ze.fromJS)([]));return a.size<1||(a.getIn([\"required\"])&&(i.requestBody=a.getIn([\"required\"])),a.getIn([\"content\"]).entrySeq().forEach((s=>{const o=s[0];if(s[1].getIn([\"schema\",\"required\"])){const a=s[1].getIn([\"schema\",\"required\"]).toJS();i.requestContentType[o]=a}}))),i},isMediaTypeSchemaPropertiesEqual=(s,o,i,a)=>{if((i||a)&&i===a)return!0;let u=s.getIn([\"resolvedSubtrees\",\"paths\",...o,\"requestBody\",\"content\"],(0,ze.fromJS)([]));if(u.size<2||!i||!a)return!1;let _=u.getIn([i,\"schema\",\"properties\"],(0,ze.fromJS)([])),w=u.getIn([a,\"schema\",\"properties\"],(0,ze.fromJS)([]));return!!_.equals(w)};function returnSelfOrNewMap(s){return ze.Map.isMap(s)?s:new ze.Map}var no=__webpack_require__(85015),so=__webpack_require__.n(no),oo=__webpack_require__(38221),io=__webpack_require__.n(oo),ao=__webpack_require__(63560),co=__webpack_require__.n(ao),lo=__webpack_require__(56367),uo=__webpack_require__.n(lo);const po=\"spec_update_spec\",ho=\"spec_update_url\",fo=\"spec_update_json\",mo=\"spec_update_param\",go=\"spec_update_empty_param_inclusion\",yo=\"spec_validate_param\",vo=\"spec_set_response\",bo=\"spec_set_request\",_o=\"spec_set_mutated_request\",So=\"spec_log_request\",Eo=\"spec_clear_response\",wo=\"spec_clear_request\",xo=\"spec_clear_validate_param\",ko=\"spec_update_operation_meta_value\",Oo=\"spec_update_resolved\",Co=\"spec_update_resolved_subtree\",Ao=\"set_scheme\",toStr=s=>so()(s)?s:\"\";function updateSpec(s){const o=toStr(s).replace(/\\t/g,\"  \");if(\"string\"==typeof s)return{type:po,payload:o}}function updateResolved(s){return{type:Oo,payload:s}}function updateUrl(s){return{type:ho,payload:s}}function updateJsonSpec(s){return{type:fo,payload:s}}const parseToJson=s=>({specActions:o,specSelectors:i,errActions:a})=>{let{specStr:u}=i,_=null;try{s=s||u(),a.clear({source:\"parser\"}),_=fn.load(s,{schema:rn})}catch(s){return console.error(s),a.newSpecErr({source:\"parser\",level:\"error\",message:s.reason,line:s.mark&&s.mark.line?s.mark.line+1:void 0})}return _&&\"object\"==typeof _?o.updateJsonSpec(_):o.updateJsonSpec({})};let jo=!1;const resolveSpec=(s,o)=>({specActions:i,specSelectors:a,errActions:u,fn:{fetch:_,resolve:w,AST:x={}},getConfigs:C})=>{jo||(console.warn(\"specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!\"),jo=!0);const{modelPropertyMacro:j,parameterMacro:L,requestInterceptor:B,responseInterceptor:$}=C();void 0===s&&(s=a.specJson()),void 0===o&&(o=a.url());let V=x.getLineNumberForPath?x.getLineNumberForPath:()=>{},U=a.specStr();return w({fetch:_,spec:s,baseDoc:String(new URL(o,document.baseURI)),modelPropertyMacro:j,parameterMacro:L,requestInterceptor:B,responseInterceptor:$}).then((({spec:s,errors:o})=>{if(u.clear({type:\"thrown\"}),Array.isArray(o)&&o.length>0){let s=o.map((s=>(console.error(s),s.line=s.fullPath?V(U,s.fullPath):null,s.path=s.fullPath?s.fullPath.join(\".\"):null,s.level=\"error\",s.type=\"thrown\",s.source=\"resolver\",Object.defineProperty(s,\"message\",{enumerable:!0,value:s.message}),s)));u.newThrownErrBatch(s)}return i.updateResolved(s)}))};let Io=[];const Po=io()((()=>{const s=Io.reduce(((s,{path:o,system:i})=>(s.has(i)||s.set(i,[]),s.get(i).push(o),s)),new Map);Io=[],s.forEach((async(s,o)=>{if(!o)return void console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\");if(!o.fn.resolveSubtree)return void console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\");const{errActions:i,errSelectors:a,fn:{resolveSubtree:u,fetch:_,AST:w={}},specSelectors:x,specActions:C}=o,j=w.getLineNumberForPath??xs()(void 0),L=x.specStr(),{modelPropertyMacro:B,parameterMacro:$,requestInterceptor:V,responseInterceptor:U}=o.getConfigs();try{const o=await s.reduce((async(s,o)=>{let{resultMap:w,specWithCurrentSubtrees:C}=await s;const{errors:z,spec:Y}=await u(C,o,{baseDoc:String(new URL(x.url(),document.baseURI)),modelPropertyMacro:B,parameterMacro:$,requestInterceptor:V,responseInterceptor:U});if(a.allErrors().size&&i.clearBy((s=>\"thrown\"!==s.get(\"type\")||\"resolver\"!==s.get(\"source\")||!s.get(\"fullPath\")?.every(((s,i)=>s===o[i]||void 0===o[i])))),Array.isArray(z)&&z.length>0){let s=z.map((s=>(s.line=s.fullPath?j(L,s.fullPath):null,s.path=s.fullPath?s.fullPath.join(\".\"):null,s.level=\"error\",s.type=\"thrown\",s.source=\"resolver\",Object.defineProperty(s,\"message\",{enumerable:!0,value:s.message}),s)));i.newThrownErrBatch(s)}return Y&&x.isOAS3()&&\"components\"===o[0]&&\"securitySchemes\"===o[1]&&await Promise.all(Object.values(Y).filter((s=>\"openIdConnect\"===s?.type)).map((async s=>{const o={url:s.openIdConnectUrl,requestInterceptor:V,responseInterceptor:U};try{const i=await _(o);i instanceof Error||i.status>=400?console.error(i.statusText+\" \"+o.url):s.openIdConnectData=JSON.parse(i.text)}catch(s){console.error(s)}}))),co()(w,o,Y),C=uo()(o,Y,C),{resultMap:w,specWithCurrentSubtrees:C}}),Promise.resolve({resultMap:(x.specResolvedSubtree([])||(0,ze.Map)()).toJS(),specWithCurrentSubtrees:x.specJS()}));C.updateResolvedSubtree([],o.resultMap)}catch(s){console.error(s)}}))}),35),requestResolvedSubtree=s=>o=>{Io.find((({path:i,system:a})=>a===o&&i.toString()===s.toString()))||(Io.push({path:s,system:o}),Po())};function changeParam(s,o,i,a,u){return{type:mo,payload:{path:s,value:a,paramName:o,paramIn:i,isXml:u}}}function changeParamByIdentity(s,o,i,a){return{type:mo,payload:{path:s,param:o,value:i,isXml:a}}}const updateResolvedSubtree=(s,o)=>({type:Co,payload:{path:s,value:o}}),invalidateResolvedSubtreeCache=()=>({type:Co,payload:{path:[],value:(0,ze.Map)()}}),validateParams=(s,o)=>({type:yo,payload:{pathMethod:s,isOAS3:o}}),updateEmptyParamInclusion=(s,o,i,a)=>({type:go,payload:{pathMethod:s,paramName:o,paramIn:i,includeEmptyValue:a}});function clearValidateParams(s){return{type:xo,payload:{pathMethod:s}}}function changeConsumesValue(s,o){return{type:ko,payload:{path:s,value:o,key:\"consumes_value\"}}}function changeProducesValue(s,o){return{type:ko,payload:{path:s,value:o,key:\"produces_value\"}}}const setResponse=(s,o,i)=>({payload:{path:s,method:o,res:i},type:vo}),setRequest=(s,o,i)=>({payload:{path:s,method:o,req:i},type:bo}),setMutatedRequest=(s,o,i)=>({payload:{path:s,method:o,req:i},type:_o}),logRequest=s=>({payload:s,type:So}),executeRequest=s=>({fn:o,specActions:i,specSelectors:a,getConfigs:u,oas3Selectors:_})=>{let{pathName:w,method:x,operation:C}=s,{requestInterceptor:j,responseInterceptor:L}=u(),B=C.toJS();if(C&&C.get(\"parameters\")&&C.get(\"parameters\").filter((s=>s&&!0===s.get(\"allowEmptyValue\"))).forEach((o=>{if(a.parameterInclusionSettingFor([w,x],o.get(\"name\"),o.get(\"in\"))){s.parameters=s.parameters||{};const i=paramToValue(o,s.parameters);(!i||i&&0===i.size)&&(s.parameters[o.get(\"name\")]=\"\")}})),s.contextUrl=Nt()(a.url()).toString(),B&&B.operationId?s.operationId=B.operationId:B&&w&&x&&(s.operationId=o.opId(B,w,x)),a.isOAS3()){const o=`${w}:${x}`;s.server=_.selectedServer(o)||_.selectedServer();const i=_.serverVariables({server:s.server,namespace:o}).toJS(),a=_.serverVariables({server:s.server}).toJS();s.serverVariables=Object.keys(i).length?i:a,s.requestContentType=_.requestContentType(w,x),s.responseContentType=_.responseContentType(w,x)||\"*/*\";const u=_.requestBodyValue(w,x),C=_.requestBodyInclusionSetting(w,x);u&&u.toJS?s.requestBody=u.map((s=>ze.Map.isMap(s)?s.get(\"value\"):s)).filter(((s,o)=>(Array.isArray(s)?0!==s.length:!isEmptyValue(s))||C.get(o))).toJS():s.requestBody=u}let $=Object.assign({},s);$=o.buildRequest($),i.setRequest(s.pathName,s.method,$);s.requestInterceptor=async o=>{let a=await j.apply(void 0,[o]),u=Object.assign({},a);return i.setMutatedRequest(s.pathName,s.method,u),a},s.responseInterceptor=L;const V=Date.now();return o.execute(s).then((o=>{o.duration=Date.now()-V,i.setResponse(s.pathName,s.method,o)})).catch((o=>{\"Failed to fetch\"===o.message&&(o.name=\"\",o.message='**Failed to fetch.**  \\n**Possible Reasons:** \\n  - CORS \\n  - Network Failure \\n  - URL scheme must be \"http\" or \"https\" for CORS request.'),i.setResponse(s.pathName,s.method,{error:!0,err:o})}))},actions_execute=({path:s,method:o,...i}={})=>a=>{let{fn:{fetch:u},specSelectors:_,specActions:w}=a,x=_.specJsonWithResolvedSubtrees().toJS(),C=_.operationScheme(s,o),{requestContentType:j,responseContentType:L}=_.contentTypeValues([s,o]).toJS(),B=/xml/i.test(j),$=_.parameterValues([s,o],B).toJS();return w.executeRequest({...i,fetch:u,spec:x,pathName:s,method:o,parameters:$,requestContentType:j,scheme:C,responseContentType:L})};function clearResponse(s,o){return{type:Eo,payload:{path:s,method:o}}}function clearRequest(s,o){return{type:wo,payload:{path:s,method:o}}}function setScheme(s,o,i){return{type:Ao,payload:{scheme:s,path:o,method:i}}}const To={[po]:(s,o)=>\"string\"==typeof o.payload?s.set(\"spec\",o.payload):s,[ho]:(s,o)=>s.set(\"url\",o.payload+\"\"),[fo]:(s,o)=>s.set(\"json\",fromJSOrdered(o.payload)),[Oo]:(s,o)=>s.setIn([\"resolved\"],fromJSOrdered(o.payload)),[Co]:(s,o)=>{const{value:i,path:a}=o.payload;return s.setIn([\"resolvedSubtrees\",...a],fromJSOrdered(i))},[mo]:(s,{payload:o})=>{let{path:i,paramName:a,paramIn:u,param:_,value:w,isXml:x}=o,C=_?paramToIdentifier(_):`${u}.${a}`;const j=x?\"value_xml\":\"value\";return s.setIn([\"meta\",\"paths\",...i,\"parameters\",C,j],(0,ze.fromJS)(w))},[go]:(s,{payload:o})=>{let{pathMethod:i,paramName:a,paramIn:u,includeEmptyValue:_}=o;if(!a||!u)return console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\"),s;const w=`${u}.${a}`;return s.setIn([\"meta\",\"paths\",...i,\"parameter_inclusions\",w],_)},[yo]:(s,{payload:{pathMethod:o,isOAS3:i}})=>{const a=Ns(s).getIn([\"paths\",...o]),u=parameterValues(s,o).toJS();return s.updateIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)({}),(_=>a.get(\"parameters\",(0,ze.List)()).reduce(((a,_)=>{const w=paramToValue(_,u),x=parameterInclusionSettingFor(s,o,_.get(\"name\"),_.get(\"in\")),C=((s,o,{isOAS3:i=!1,bypassRequiredCheck:a=!1}={})=>{let u=s.get(\"required\"),{schema:_,parameterContentMediaType:w}=getParameterSchema(s,{isOAS3:i});return validateValueBySchema(o,_,u,a,w)})(_,w,{bypassRequiredCheck:x,isOAS3:i});return a.setIn([paramToIdentifier(_),\"errors\"],(0,ze.fromJS)(C))}),_)))},[xo]:(s,{payload:{pathMethod:o}})=>s.updateIn([\"meta\",\"paths\",...o,\"parameters\"],(0,ze.fromJS)([]),(s=>s.map((s=>s.set(\"errors\",(0,ze.fromJS)([])))))),[vo]:(s,{payload:{res:o,path:i,method:a}})=>{let u;u=o.error?Object.assign({error:!0,name:o.err.name,message:o.err.message,statusCode:o.err.statusCode},o.err.response):o,u.headers=u.headers||{};let _=s.setIn([\"responses\",i,a],fromJSOrdered(u));return lt.Blob&&u.data instanceof lt.Blob&&(_=_.setIn([\"responses\",i,a,\"text\"],u.data)),_},[bo]:(s,{payload:{req:o,path:i,method:a}})=>s.setIn([\"requests\",i,a],fromJSOrdered(o)),[_o]:(s,{payload:{req:o,path:i,method:a}})=>s.setIn([\"mutatedRequests\",i,a],fromJSOrdered(o)),[ko]:(s,{payload:{path:o,value:i,key:a}})=>{let u=[\"paths\",...o],_=[\"meta\",\"paths\",...o];return s.getIn([\"json\",...u])||s.getIn([\"resolved\",...u])||s.getIn([\"resolvedSubtrees\",...u])?s.setIn([..._,a],(0,ze.fromJS)(i)):s},[Eo]:(s,{payload:{path:o,method:i}})=>s.deleteIn([\"responses\",o,i]),[wo]:(s,{payload:{path:o,method:i}})=>s.deleteIn([\"requests\",o,i]),[Ao]:(s,{payload:{scheme:o,path:i,method:a}})=>i&&a?s.setIn([\"scheme\",i,a],o):i||a?void 0:s.setIn([\"scheme\",\"_defaultScheme\"],o)},wrap_actions_updateSpec=(s,{specActions:o})=>(...i)=>{s(...i),o.parseToJson(...i)},wrap_actions_updateJsonSpec=(s,{specActions:o})=>(...i)=>{s(...i),o.invalidateResolvedSubtreeCache();const[a]=i,u=An()(a,[\"paths\"])||{};Object.keys(u).forEach((s=>{const i=An()(u,[s]);as()(i)&&i.$ref&&o.requestResolvedSubtree([\"paths\",s])})),o.requestResolvedSubtree([\"components\",\"securitySchemes\"])},wrap_actions_executeRequest=(s,{specActions:o})=>i=>(o.logRequest(i),s(i)),wrap_actions_validateParams=(s,{specSelectors:o})=>i=>s(i,o.isOAS3()),plugins_spec=()=>({statePlugins:{spec:{wrapActions:{...Y},reducers:{...To},actions:{...z},selectors:{...U}}}});var No=function(){var extendStatics=function(s,o){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var i in o)o.hasOwnProperty(i)&&(s[i]=o[i])},extendStatics(s,o)};return function(s,o){function __(){this.constructor=s}extendStatics(s,o),s.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}}(),Mo=Object.prototype.hasOwnProperty;function module_helpers_hasOwnProperty(s,o){return Mo.call(s,o)}function _objectKeys(s){if(Array.isArray(s)){for(var o=new Array(s.length),i=0;i<o.length;i++)o[i]=\"\"+i;return o}if(Object.keys)return Object.keys(s);var a=[];for(var u in s)module_helpers_hasOwnProperty(s,u)&&a.push(u);return a}function _deepClone(s){switch(typeof s){case\"object\":return JSON.parse(JSON.stringify(s));case\"undefined\":return null;default:return s}}function helpers_isInteger(s){for(var o,i=0,a=s.length;i<a;){if(!((o=s.charCodeAt(i))>=48&&o<=57))return!1;i++}return!0}function escapePathComponent(s){return-1===s.indexOf(\"/\")&&-1===s.indexOf(\"~\")?s:s.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")}function unescapePathComponent(s){return s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}function hasUndefined(s){if(void 0===s)return!0;if(s)if(Array.isArray(s)){for(var o=0,i=s.length;o<i;o++)if(hasUndefined(s[o]))return!0}else if(\"object\"==typeof s)for(var a=_objectKeys(s),u=a.length,_=0;_<u;_++)if(hasUndefined(s[a[_]]))return!0;return!1}function patchErrorMessageFormatter(s,o){var i=[s];for(var a in o){var u=\"object\"==typeof o[a]?JSON.stringify(o[a],null,2):o[a];void 0!==u&&i.push(a+\": \"+u)}return i.join(\"\\n\")}var Ro=function(s){function PatchError(o,i,a,u,_){var w=this.constructor,x=s.call(this,patchErrorMessageFormatter(o,{name:i,index:a,operation:u,tree:_}))||this;return x.name=i,x.index=a,x.operation=u,x.tree=_,Object.setPrototypeOf(x,w.prototype),x.message=patchErrorMessageFormatter(o,{name:i,index:a,operation:u,tree:_}),x}return No(PatchError,s),PatchError}(Error),Do=Ro,Lo=_deepClone,Fo={add:function(s,o,i){return s[o]=this.value,{newDocument:i}},remove:function(s,o,i){var a=s[o];return delete s[o],{newDocument:i,removed:a}},replace:function(s,o,i){var a=s[o];return s[o]=this.value,{newDocument:i,removed:a}},move:function(s,o,i){var a=getValueByPointer(i,this.path);a&&(a=_deepClone(a));var u=applyOperation(i,{op:\"remove\",path:this.from}).removed;return applyOperation(i,{op:\"add\",path:this.path,value:u}),{newDocument:i,removed:a}},copy:function(s,o,i){var a=getValueByPointer(i,this.from);return applyOperation(i,{op:\"add\",path:this.path,value:_deepClone(a)}),{newDocument:i}},test:function(s,o,i){return{newDocument:i,test:_areEquals(s[o],this.value)}},_get:function(s,o,i){return this.value=s[o],{newDocument:i}}},Bo={add:function(s,o,i){return helpers_isInteger(o)?s.splice(o,0,this.value):s[o]=this.value,{newDocument:i,index:o}},remove:function(s,o,i){return{newDocument:i,removed:s.splice(o,1)[0]}},replace:function(s,o,i){var a=s[o];return s[o]=this.value,{newDocument:i,removed:a}},move:Fo.move,copy:Fo.copy,test:Fo.test,_get:Fo._get};function getValueByPointer(s,o){if(\"\"==o)return s;var i={op:\"_get\",path:o};return applyOperation(s,i),i.value}function applyOperation(s,o,i,a,u,_){if(void 0===i&&(i=!1),void 0===a&&(a=!0),void 0===u&&(u=!0),void 0===_&&(_=0),i&&(\"function\"==typeof i?i(o,0,s,o.path):validator(o,0)),\"\"===o.path){var w={newDocument:s};if(\"add\"===o.op)return w.newDocument=o.value,w;if(\"replace\"===o.op)return w.newDocument=o.value,w.removed=s,w;if(\"move\"===o.op||\"copy\"===o.op)return w.newDocument=getValueByPointer(s,o.from),\"move\"===o.op&&(w.removed=s),w;if(\"test\"===o.op){if(w.test=_areEquals(s,o.value),!1===w.test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w.newDocument=s,w}if(\"remove\"===o.op)return w.removed=s,w.newDocument=null,w;if(\"_get\"===o.op)return o.value=s,w;if(i)throw new Do(\"Operation `op` property is not one of operations defined in RFC-6902\",\"OPERATION_OP_INVALID\",_,o,s);return w}a||(s=_deepClone(s));var x=(o.path||\"\").split(\"/\"),C=s,j=1,L=x.length,B=void 0,$=void 0,V=void 0;for(V=\"function\"==typeof i?i:validator;;){if(($=x[j])&&-1!=$.indexOf(\"~\")&&($=unescapePathComponent($)),u&&(\"__proto__\"==$||\"prototype\"==$&&j>0&&\"constructor\"==x[j-1]))throw new TypeError(\"JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README\");if(i&&void 0===B&&(void 0===C[$]?B=x.slice(0,j).join(\"/\"):j==L-1&&(B=o.path),void 0!==B&&V(o,0,s,B)),j++,Array.isArray(C)){if(\"-\"===$)$=C.length;else{if(i&&!helpers_isInteger($))throw new Do(\"Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index\",\"OPERATION_PATH_ILLEGAL_ARRAY_INDEX\",_,o,s);helpers_isInteger($)&&($=~~$)}if(j>=L){if(i&&\"add\"===o.op&&$>C.length)throw new Do(\"The specified index MUST NOT be greater than the number of elements in the array\",\"OPERATION_VALUE_OUT_OF_BOUNDS\",_,o,s);if(!1===(w=Bo[o.op].call(o,C,$,s)).test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w}}else if(j>=L){if(!1===(w=Fo[o.op].call(o,C,$,s)).test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",_,o,s);return w}if(C=C[$],i&&j<L&&(!C||\"object\"!=typeof C))throw new Do(\"Cannot perform operation at the desired path\",\"OPERATION_PATH_UNRESOLVABLE\",_,o,s)}}function applyPatch(s,o,i,a,u){if(void 0===a&&(a=!0),void 0===u&&(u=!0),i&&!Array.isArray(o))throw new Do(\"Patch sequence must be an array\",\"SEQUENCE_NOT_AN_ARRAY\");a||(s=_deepClone(s));for(var _=new Array(o.length),w=0,x=o.length;w<x;w++)_[w]=applyOperation(s,o[w],i,!0,u,w),s=_[w].newDocument;return _.newDocument=s,_}function applyReducer(s,o,i){var a=applyOperation(s,o);if(!1===a.test)throw new Do(\"Test operation failed\",\"TEST_OPERATION_FAILED\",i,o,s);return a.newDocument}function validator(s,o,i,a){if(\"object\"!=typeof s||null===s||Array.isArray(s))throw new Do(\"Operation is not an object\",\"OPERATION_NOT_AN_OBJECT\",o,s,i);if(!Fo[s.op])throw new Do(\"Operation `op` property is not one of operations defined in RFC-6902\",\"OPERATION_OP_INVALID\",o,s,i);if(\"string\"!=typeof s.path)throw new Do(\"Operation `path` property is not a string\",\"OPERATION_PATH_INVALID\",o,s,i);if(0!==s.path.indexOf(\"/\")&&s.path.length>0)throw new Do('Operation `path` property must start with \"/\"',\"OPERATION_PATH_INVALID\",o,s,i);if((\"move\"===s.op||\"copy\"===s.op)&&\"string\"!=typeof s.from)throw new Do(\"Operation `from` property is not present (applicable in `move` and `copy` operations)\",\"OPERATION_FROM_REQUIRED\",o,s,i);if((\"add\"===s.op||\"replace\"===s.op||\"test\"===s.op)&&void 0===s.value)throw new Do(\"Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)\",\"OPERATION_VALUE_REQUIRED\",o,s,i);if((\"add\"===s.op||\"replace\"===s.op||\"test\"===s.op)&&hasUndefined(s.value))throw new Do(\"Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)\",\"OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED\",o,s,i);if(i)if(\"add\"==s.op){var u=s.path.split(\"/\").length,_=a.split(\"/\").length;if(u!==_+1&&u!==_)throw new Do(\"Cannot perform an `add` operation at the desired path\",\"OPERATION_PATH_CANNOT_ADD\",o,s,i)}else if(\"replace\"===s.op||\"remove\"===s.op||\"_get\"===s.op){if(s.path!==a)throw new Do(\"Cannot perform the operation at a path that does not exist\",\"OPERATION_PATH_UNRESOLVABLE\",o,s,i)}else if(\"move\"===s.op||\"copy\"===s.op){var w=validate([{op:\"_get\",path:s.from,value:void 0}],i);if(w&&\"OPERATION_PATH_UNRESOLVABLE\"===w.name)throw new Do(\"Cannot perform the operation from a path that does not exist\",\"OPERATION_FROM_UNRESOLVABLE\",o,s,i)}}function validate(s,o,i){try{if(!Array.isArray(s))throw new Do(\"Patch sequence must be an array\",\"SEQUENCE_NOT_AN_ARRAY\");if(o)applyPatch(_deepClone(o),_deepClone(s),i||!0);else{i=i||validator;for(var a=0;a<s.length;a++)i(s[a],a,o,void 0)}}catch(s){if(s instanceof Do)return s;throw s}}function _areEquals(s,o){if(s===o)return!0;if(s&&o&&\"object\"==typeof s&&\"object\"==typeof o){var i,a,u,_=Array.isArray(s),w=Array.isArray(o);if(_&&w){if((a=s.length)!=o.length)return!1;for(i=a;0!=i--;)if(!_areEquals(s[i],o[i]))return!1;return!0}if(_!=w)return!1;var x=Object.keys(s);if((a=x.length)!==Object.keys(o).length)return!1;for(i=a;0!=i--;)if(!o.hasOwnProperty(x[i]))return!1;for(i=a;0!=i--;)if(!_areEquals(s[u=x[i]],o[u]))return!1;return!0}return s!=s&&o!=o}var $o=new WeakMap,qo=function qo(s){this.observers=new Map,this.obj=s},Vo=function Vo(s,o){this.callback=s,this.observer=o};function unobserve(s,o){o.unobserve()}function observe(s,o){var i,a=function getMirror(s){return $o.get(s)}(s);if(a){var u=function getObserverFromMirror(s,o){return s.observers.get(o)}(a,o);i=u&&u.observer}else a=new qo(s),$o.set(s,a);if(i)return i;if(i={},a.value=_deepClone(s),o){i.callback=o,i.next=null;var dirtyCheck=function(){generate(i)},fastCheck=function(){clearTimeout(i.next),i.next=setTimeout(dirtyCheck)};\"undefined\"!=typeof window&&(window.addEventListener(\"mouseup\",fastCheck),window.addEventListener(\"keyup\",fastCheck),window.addEventListener(\"mousedown\",fastCheck),window.addEventListener(\"keydown\",fastCheck),window.addEventListener(\"change\",fastCheck))}return i.patches=[],i.object=s,i.unobserve=function(){generate(i),clearTimeout(i.next),function removeObserverFromMirror(s,o){s.observers.delete(o.callback)}(a,i),\"undefined\"!=typeof window&&(window.removeEventListener(\"mouseup\",fastCheck),window.removeEventListener(\"keyup\",fastCheck),window.removeEventListener(\"mousedown\",fastCheck),window.removeEventListener(\"keydown\",fastCheck),window.removeEventListener(\"change\",fastCheck))},a.observers.set(o,new Vo(o,i)),i}function generate(s,o){void 0===o&&(o=!1);var i=$o.get(s.object);_generate(i.value,s.object,s.patches,\"\",o),s.patches.length&&applyPatch(i.value,s.patches);var a=s.patches;return a.length>0&&(s.patches=[],s.callback&&s.callback(a)),a}function _generate(s,o,i,a,u){if(o!==s){\"function\"==typeof o.toJSON&&(o=o.toJSON());for(var _=_objectKeys(o),w=_objectKeys(s),x=!1,C=w.length-1;C>=0;C--){var j=s[B=w[C]];if(!module_helpers_hasOwnProperty(o,B)||void 0===o[B]&&void 0!==j&&!1===Array.isArray(o))Array.isArray(s)===Array.isArray(o)?(u&&i.push({op:\"test\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(j)}),i.push({op:\"remove\",path:a+\"/\"+escapePathComponent(B)}),x=!0):(u&&i.push({op:\"test\",path:a,value:s}),i.push({op:\"replace\",path:a,value:o}),!0);else{var L=o[B];\"object\"==typeof j&&null!=j&&\"object\"==typeof L&&null!=L&&Array.isArray(j)===Array.isArray(L)?_generate(j,L,i,a+\"/\"+escapePathComponent(B),u):j!==L&&(u&&i.push({op:\"test\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(j)}),i.push({op:\"replace\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(L)}))}}if(x||_.length!=w.length)for(C=0;C<_.length;C++){var B;module_helpers_hasOwnProperty(s,B=_[C])||void 0===o[B]||i.push({op:\"add\",path:a+\"/\"+escapePathComponent(B),value:_deepClone(o[B])})}}}function compare(s,o,i){void 0===i&&(i=!1);var a=[];return _generate(s,o,a,\"\",i),a}Object.assign({},Z,ee,{JsonPatchError:Ro,deepClone:_deepClone,escapePathComponent,unescapePathComponent});var Uo=__webpack_require__(14744),zo=__webpack_require__.n(Uo);const Wo={add:function add(s,o){return{op:\"add\",path:s,value:o}},replace,remove:function remove(s){return{op:\"remove\",path:s}},merge:function lib_merge(s,o){return{type:\"mutation\",op:\"merge\",path:s,value:o}},mergeDeep:function mergeDeep(s,o){return{type:\"mutation\",op:\"mergeDeep\",path:s,value:o}},context:function context(s,o){return{type:\"context\",path:s,value:o}},getIn:function lib_getIn(s,o){return o.reduce(((s,o)=>void 0!==o&&s?s[o]:s),s)},applyPatch:function lib_applyPatch(s,o,i){if(i=i||{},\"merge\"===(o={...o,path:o.path&&normalizeJSONPath(o.path)}).op){const i=getInByJsonPath(s,o.path);Object.assign(i,o.value),applyPatch(s,[replace(o.path,i)])}else if(\"mergeDeep\"===o.op){const i=getInByJsonPath(s,o.path),a=zo()(i,o.value);s=applyPatch(s,[replace(o.path,a)]).newDocument}else if(\"add\"===o.op&&\"\"===o.path&&lib_isObject(o.value)){applyPatch(s,Object.keys(o.value).reduce(((s,i)=>(s.push({op:\"add\",path:`/${normalizeJSONPath(i)}`,value:o.value[i]}),s)),[]))}else if(\"replace\"===o.op&&\"\"===o.path){let{value:a}=o;i.allowMetaPatches&&o.meta&&isAdditiveMutation(o)&&(Array.isArray(o.value)||lib_isObject(o.value))&&(a={...a,...o.meta}),s=a}else if(applyPatch(s,[o]),i.allowMetaPatches&&o.meta&&isAdditiveMutation(o)&&(Array.isArray(o.value)||lib_isObject(o.value))){const i={...getInByJsonPath(s,o.path),...o.meta};applyPatch(s,[replace(o.path,i)])}return s},parentPathMatch:function parentPathMatch(s,o){if(!Array.isArray(o))return!1;for(let i=0,a=o.length;i<a;i+=1)if(o[i]!==s[i])return!1;return!0},flatten,fullyNormalizeArray:function fullyNormalizeArray(s){return cleanArray(flatten(lib_normalizeArray(s)))},normalizeArray:lib_normalizeArray,isPromise:function isPromise(s){return lib_isObject(s)&&lib_isFunction(s.then)},forEachNew:function forEachNew(s,o){try{return forEachNewPatch(s,forEach,o)}catch(s){return s}},forEachNewPrimitive:function forEachNewPrimitive(s,o){try{return forEachNewPatch(s,forEachPrimitive,o)}catch(s){return s}},isJsonPatch,isContextPatch:function isContextPatch(s){return isPatch(s)&&\"context\"===s.type},isPatch,isMutation,isAdditiveMutation,isGenerator:function isGenerator(s){return\"[object GeneratorFunction]\"===Object.prototype.toString.call(s)},isFunction:lib_isFunction,isObject:lib_isObject,isError:function lib_isError(s){return s instanceof Error}};function normalizeJSONPath(s){return Array.isArray(s)?s.length<1?\"\":`/${s.map((s=>(s+\"\").replace(/~/g,\"~0\").replace(/\\//g,\"~1\"))).join(\"/\")}`:s}function replace(s,o,i){return{op:\"replace\",path:s,value:o,meta:i}}function forEachNewPatch(s,o,i){return cleanArray(flatten(s.filter(isAdditiveMutation).map((s=>o(s.value,i,s.path)))||[]))}function forEachPrimitive(s,o,i){return i=i||[],Array.isArray(s)?s.map(((s,a)=>forEachPrimitive(s,o,i.concat(a)))):lib_isObject(s)?Object.keys(s).map((a=>forEachPrimitive(s[a],o,i.concat(a)))):o(s,i[i.length-1],i)}function forEach(s,o,i){let a=[];if((i=i||[]).length>0){const u=o(s,i[i.length-1],i);u&&(a=a.concat(u))}if(Array.isArray(s)){const u=s.map(((s,a)=>forEach(s,o,i.concat(a))));u&&(a=a.concat(u))}else if(lib_isObject(s)){const u=Object.keys(s).map((a=>forEach(s[a],o,i.concat(a))));u&&(a=a.concat(u))}return a=flatten(a),a}function lib_normalizeArray(s){return Array.isArray(s)?s:[s]}function flatten(s){return[].concat(...s.map((s=>Array.isArray(s)?flatten(s):s)))}function cleanArray(s){return s.filter((s=>void 0!==s))}function lib_isObject(s){return s&&\"object\"==typeof s}function lib_isFunction(s){return s&&\"function\"==typeof s}function isJsonPatch(s){if(isPatch(s)){const{op:o}=s;return\"add\"===o||\"remove\"===o||\"replace\"===o}return!1}function isMutation(s){return isJsonPatch(s)||isPatch(s)&&\"mutation\"===s.type}function isAdditiveMutation(s){return isMutation(s)&&(\"add\"===s.op||\"replace\"===s.op||\"merge\"===s.op||\"mergeDeep\"===s.op)}function isPatch(s){return s&&\"object\"==typeof s}function getInByJsonPath(s,o){try{return getValueByPointer(s,o)}catch(s){return console.error(s),{}}}var Jo=__webpack_require__(48675);const Ho=class ApiDOMAggregateError extends Jo{constructor(s,o,i){if(super(s,o,i),this.name=this.constructor.name,\"string\"==typeof o&&(this.message=o),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(o).stack,null!=i&&\"object\"==typeof i&&Object.hasOwn(i,\"cause\")&&!(\"cause\"in this)){const{cause:s}=i;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}}};class ApiDOMError extends Error{static[Symbol.hasInstance](s){return super[Symbol.hasInstance](s)||Function.prototype[Symbol.hasInstance].call(Ho,s)}constructor(s,o){if(super(s,o),this.name=this.constructor.name,\"string\"==typeof s&&(this.message=s),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(s).stack,null!=o&&\"object\"==typeof o&&Object.hasOwn(o,\"cause\")&&!(\"cause\"in this)){const{cause:s}=o;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}}}const Ko=ApiDOMError;const Go=class ApiDOMStructuredError extends Ko{constructor(s,o){if(super(s,o),null!=o&&\"object\"==typeof o){const{cause:s,...i}=o;Object.assign(this,i)}}};var Yo=__webpack_require__(65606);function _isPlaceholder(s){return null!=s&&\"object\"==typeof s&&!0===s[\"@@functional/placeholder\"]}function _curry1(s){return function f1(o){return 0===arguments.length||_isPlaceholder(o)?f1:s.apply(this,arguments)}}function _curry2(s){return function f2(o,i){switch(arguments.length){case 0:return f2;case 1:return _isPlaceholder(o)?f2:_curry1((function(i){return s(o,i)}));default:return _isPlaceholder(o)&&_isPlaceholder(i)?f2:_isPlaceholder(o)?_curry1((function(o){return s(o,i)})):_isPlaceholder(i)?_curry1((function(i){return s(o,i)})):s(o,i)}}}function _curry3(s){return function f3(o,i,a){switch(arguments.length){case 0:return f3;case 1:return _isPlaceholder(o)?f3:_curry2((function(i,a){return s(o,i,a)}));case 2:return _isPlaceholder(o)&&_isPlaceholder(i)?f3:_isPlaceholder(o)?_curry2((function(o,a){return s(o,i,a)})):_isPlaceholder(i)?_curry2((function(i,a){return s(o,i,a)})):_curry1((function(a){return s(o,i,a)}));default:return _isPlaceholder(o)&&_isPlaceholder(i)&&_isPlaceholder(a)?f3:_isPlaceholder(o)&&_isPlaceholder(i)?_curry2((function(o,i){return s(o,i,a)})):_isPlaceholder(o)&&_isPlaceholder(a)?_curry2((function(o,a){return s(o,i,a)})):_isPlaceholder(i)&&_isPlaceholder(a)?_curry2((function(i,a){return s(o,i,a)})):_isPlaceholder(o)?_curry1((function(o){return s(o,i,a)})):_isPlaceholder(i)?_curry1((function(i){return s(o,i,a)})):_isPlaceholder(a)?_curry1((function(a){return s(o,i,a)})):s(o,i,a)}}}const Xo=Number.isInteger||function _isInteger(s){return(s|0)===s};function _isString(s){return\"[object String]\"===Object.prototype.toString.call(s)}function _nth(s,o){var i=s<0?o.length+s:s;return _isString(o)?o.charAt(i):o[i]}function _path(s,o){for(var i=o,a=0;a<s.length;a+=1){if(null==i)return;var u=s[a];i=Xo(u)?_nth(u,i):i[u]}return i}const Qo=_curry3((function pathSatisfies(s,o,i){return s(_path(o,i))}));function _cloneRegExp(s){return new RegExp(s.source,s.flags?s.flags:(s.global?\"g\":\"\")+(s.ignoreCase?\"i\":\"\")+(s.multiline?\"m\":\"\")+(s.sticky?\"y\":\"\")+(s.unicode?\"u\":\"\")+(s.dotAll?\"s\":\"\"))}function _arrayFromIterator(s){for(var o,i=[];!(o=s.next()).done;)i.push(o.value);return i}function _includesWith(s,o,i){for(var a=0,u=i.length;a<u;){if(s(o,i[a]))return!0;a+=1}return!1}function _has(s,o){return Object.prototype.hasOwnProperty.call(o,s)}const Zo=\"function\"==typeof Object.is?Object.is:function _objectIs(s,o){return s===o?0!==s||1/s==1/o:s!=s&&o!=o};var _i=Object.prototype.toString;const Ei=function(){return\"[object Arguments]\"===_i.call(arguments)?function _isArguments(s){return\"[object Arguments]\"===_i.call(s)}:function _isArguments(s){return _has(\"callee\",s)}}();var Oi=!{toString:null}.propertyIsEnumerable(\"toString\"),Pi=[\"constructor\",\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"],Mi=function(){return arguments.propertyIsEnumerable(\"length\")}(),Ri=function contains(s,o){for(var i=0;i<s.length;){if(s[i]===o)return!0;i+=1}return!1},Wi=\"function\"!=typeof Object.keys||Mi?_curry1((function keys(s){if(Object(s)!==s)return[];var o,i,a=[],u=Mi&&Ei(s);for(o in s)!_has(o,s)||u&&\"length\"===o||(a[a.length]=o);if(Oi)for(i=Pi.length-1;i>=0;)_has(o=Pi[i],s)&&!Ri(a,o)&&(a[a.length]=o),i-=1;return a})):_curry1((function keys(s){return Object(s)!==s?[]:Object.keys(s)}));const ea=Wi;const ra=_curry1((function type(s){return null===s?\"Null\":void 0===s?\"Undefined\":Object.prototype.toString.call(s).slice(8,-1)}));function _uniqContentEquals(s,o,i,a){var u=_arrayFromIterator(s);function eq(s,o){return _equals(s,o,i.slice(),a.slice())}return!_includesWith((function(s,o){return!_includesWith(eq,o,s)}),_arrayFromIterator(o),u)}function _equals(s,o,i,a){if(Zo(s,o))return!0;var u=ra(s);if(u!==ra(o))return!1;if(\"function\"==typeof s[\"fantasy-land/equals\"]||\"function\"==typeof o[\"fantasy-land/equals\"])return\"function\"==typeof s[\"fantasy-land/equals\"]&&s[\"fantasy-land/equals\"](o)&&\"function\"==typeof o[\"fantasy-land/equals\"]&&o[\"fantasy-land/equals\"](s);if(\"function\"==typeof s.equals||\"function\"==typeof o.equals)return\"function\"==typeof s.equals&&s.equals(o)&&\"function\"==typeof o.equals&&o.equals(s);switch(u){case\"Arguments\":case\"Array\":case\"Object\":if(\"function\"==typeof s.constructor&&\"Promise\"===function _functionName(s){var o=String(s).match(/^function (\\w*)/);return null==o?\"\":o[1]}(s.constructor))return s===o;break;case\"Boolean\":case\"Number\":case\"String\":if(typeof s!=typeof o||!Zo(s.valueOf(),o.valueOf()))return!1;break;case\"Date\":if(!Zo(s.valueOf(),o.valueOf()))return!1;break;case\"Error\":return s.name===o.name&&s.message===o.message;case\"RegExp\":if(s.source!==o.source||s.global!==o.global||s.ignoreCase!==o.ignoreCase||s.multiline!==o.multiline||s.sticky!==o.sticky||s.unicode!==o.unicode)return!1}for(var _=i.length-1;_>=0;){if(i[_]===s)return a[_]===o;_-=1}switch(u){case\"Map\":return s.size===o.size&&_uniqContentEquals(s.entries(),o.entries(),i.concat([s]),a.concat([o]));case\"Set\":return s.size===o.size&&_uniqContentEquals(s.values(),o.values(),i.concat([s]),a.concat([o]));case\"Arguments\":case\"Array\":case\"Object\":case\"Boolean\":case\"Number\":case\"String\":case\"Date\":case\"Error\":case\"RegExp\":case\"Int8Array\":case\"Uint8Array\":case\"Uint8ClampedArray\":case\"Int16Array\":case\"Uint16Array\":case\"Int32Array\":case\"Uint32Array\":case\"Float32Array\":case\"Float64Array\":case\"ArrayBuffer\":break;default:return!1}var w=ea(s);if(w.length!==ea(o).length)return!1;var x=i.concat([s]),C=a.concat([o]);for(_=w.length-1;_>=0;){var j=w[_];if(!_has(j,o)||!_equals(o[j],s[j],x,C))return!1;_-=1}return!0}const na=_curry2((function equals(s,o){return _equals(s,o,[],[])}));function _includes(s,o){return function _indexOf(s,o,i){var a,u;if(\"function\"==typeof s.indexOf)switch(typeof o){case\"number\":if(0===o){for(a=1/o;i<s.length;){if(0===(u=s[i])&&1/u===a)return i;i+=1}return-1}if(o!=o){for(;i<s.length;){if(\"number\"==typeof(u=s[i])&&u!=u)return i;i+=1}return-1}return s.indexOf(o,i);case\"string\":case\"boolean\":case\"function\":case\"undefined\":return s.indexOf(o,i);case\"object\":if(null===o)return s.indexOf(o,i)}for(;i<s.length;){if(na(s[i],o))return i;i+=1}return-1}(o,s,0)>=0}function _map(s,o){for(var i=0,a=o.length,u=Array(a);i<a;)u[i]=s(o[i]),i+=1;return u}function _quote(s){return'\"'+s.replace(/\\\\/g,\"\\\\\\\\\").replace(/[\\b]/g,\"\\\\b\").replace(/\\f/g,\"\\\\f\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/\\t/g,\"\\\\t\").replace(/\\v/g,\"\\\\v\").replace(/\\0/g,\"\\\\0\").replace(/\"/g,'\\\\\"')+'\"'}var ia=function pad(s){return(s<10?\"0\":\"\")+s};const aa=\"function\"==typeof Date.prototype.toISOString?function _toISOString(s){return s.toISOString()}:function _toISOString(s){return s.getUTCFullYear()+\"-\"+ia(s.getUTCMonth()+1)+\"-\"+ia(s.getUTCDate())+\"T\"+ia(s.getUTCHours())+\":\"+ia(s.getUTCMinutes())+\":\"+ia(s.getUTCSeconds())+\".\"+(s.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+\"Z\"};function _complement(s){return function(){return!s.apply(this,arguments)}}function _arrayReduce(s,o,i){for(var a=0,u=i.length;a<u;)o=s(o,i[a]),a+=1;return o}const ca=Array.isArray||function _isArray(s){return null!=s&&s.length>=0&&\"[object Array]\"===Object.prototype.toString.call(s)};function _dispatchable(s,o,i){return function(){if(0===arguments.length)return i();var a=arguments[arguments.length-1];if(!ca(a)){for(var u=0;u<s.length;){if(\"function\"==typeof a[s[u]])return a[s[u]].apply(a,Array.prototype.slice.call(arguments,0,-1));u+=1}if(function _isTransformer(s){return null!=s&&\"function\"==typeof s[\"@@transducer/step\"]}(a))return o.apply(null,Array.prototype.slice.call(arguments,0,-1))(a)}return i.apply(this,arguments)}}function _isObject(s){return\"[object Object]\"===Object.prototype.toString.call(s)}const _xfBase_init=function(){return this.xf[\"@@transducer/init\"]()},_xfBase_result=function(s){return this.xf[\"@@transducer/result\"](s)};var la=function(){function XFilter(s,o){this.xf=o,this.f=s}return XFilter.prototype[\"@@transducer/init\"]=_xfBase_init,XFilter.prototype[\"@@transducer/result\"]=_xfBase_result,XFilter.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)?this.xf[\"@@transducer/step\"](s,o):s},XFilter}();function _xfilter(s){return function(o){return new la(s,o)}}var ua=_curry2(_dispatchable([\"fantasy-land/filter\",\"filter\"],_xfilter,(function(s,o){return _isObject(o)?_arrayReduce((function(i,a){return s(o[a])&&(i[a]=o[a]),i}),{},ea(o)):function _filter(s,o){for(var i=0,a=o.length,u=[];i<a;)s(o[i])&&(u[u.length]=o[i]),i+=1;return u}(s,o)})));const da=ua;const ma=_curry2((function reject(s,o){return da(_complement(s),o)}));function _toString_toString(s,o){var i=function recur(i){var a=o.concat([s]);return _includes(i,a)?\"<Circular>\":_toString_toString(i,a)},mapPairs=function(s,o){return _map((function(o){return _quote(o)+\": \"+i(s[o])}),o.slice().sort())};switch(Object.prototype.toString.call(s)){case\"[object Arguments]\":return\"(function() { return arguments; }(\"+_map(i,s).join(\", \")+\"))\";case\"[object Array]\":return\"[\"+_map(i,s).concat(mapPairs(s,ma((function(s){return/^\\d+$/.test(s)}),ea(s)))).join(\", \")+\"]\";case\"[object Boolean]\":return\"object\"==typeof s?\"new Boolean(\"+i(s.valueOf())+\")\":s.toString();case\"[object Date]\":return\"new Date(\"+(isNaN(s.valueOf())?i(NaN):_quote(aa(s)))+\")\";case\"[object Map]\":return\"new Map(\"+i(Array.from(s))+\")\";case\"[object Null]\":return\"null\";case\"[object Number]\":return\"object\"==typeof s?\"new Number(\"+i(s.valueOf())+\")\":1/s==-1/0?\"-0\":s.toString(10);case\"[object Set]\":return\"new Set(\"+i(Array.from(s).sort())+\")\";case\"[object String]\":return\"object\"==typeof s?\"new String(\"+i(s.valueOf())+\")\":_quote(s);case\"[object Undefined]\":return\"undefined\";default:if(\"function\"==typeof s.toString){var a=s.toString();if(\"[object Object]\"!==a)return a}return\"{\"+mapPairs(s,ea(s)).join(\", \")+\"}\"}}const ga=_curry1((function toString(s){return _toString_toString(s,[])}));var ya=_curry2((function test(s,o){if(!function _isRegExp(s){return\"[object RegExp]\"===Object.prototype.toString.call(s)}(s))throw new TypeError(\"‘test’ requires a value of type RegExp as its first argument; received \"+ga(s));return _cloneRegExp(s).test(o)}));const va=ya;function _arity(s,o){switch(s){case 0:return function(){return o.apply(this,arguments)};case 1:return function(s){return o.apply(this,arguments)};case 2:return function(s,i){return o.apply(this,arguments)};case 3:return function(s,i,a){return o.apply(this,arguments)};case 4:return function(s,i,a,u){return o.apply(this,arguments)};case 5:return function(s,i,a,u,_){return o.apply(this,arguments)};case 6:return function(s,i,a,u,_,w){return o.apply(this,arguments)};case 7:return function(s,i,a,u,_,w,x){return o.apply(this,arguments)};case 8:return function(s,i,a,u,_,w,x,C){return o.apply(this,arguments)};case 9:return function(s,i,a,u,_,w,x,C,j){return o.apply(this,arguments)};case 10:return function(s,i,a,u,_,w,x,C,j,L){return o.apply(this,arguments)};default:throw new Error(\"First argument to _arity must be a non-negative integer no greater than ten\")}}function _pipe(s,o){return function(){return o.call(this,s.apply(this,arguments))}}const ba=_curry1((function isArrayLike(s){return!!ca(s)||!!s&&(\"object\"==typeof s&&(!_isString(s)&&(0===s.length||s.length>0&&(s.hasOwnProperty(0)&&s.hasOwnProperty(s.length-1)))))}));var _a=\"undefined\"!=typeof Symbol?Symbol.iterator:\"@@iterator\";function _createReduce(s,o,i){return function _reduce(a,u,_){if(ba(_))return s(a,u,_);if(null==_)return u;if(\"function\"==typeof _[\"fantasy-land/reduce\"])return o(a,u,_,\"fantasy-land/reduce\");if(null!=_[_a])return i(a,u,_[_a]());if(\"function\"==typeof _.next)return i(a,u,_);if(\"function\"==typeof _.reduce)return o(a,u,_,\"reduce\");throw new TypeError(\"reduce: list must be array or iterable\")}}function _xArrayReduce(s,o,i){for(var a=0,u=i.length;a<u;){if((o=s[\"@@transducer/step\"](o,i[a]))&&o[\"@@transducer/reduced\"]){o=o[\"@@transducer/value\"];break}a+=1}return s[\"@@transducer/result\"](o)}const Ea=_curry2((function bind(s,o){return _arity(s.length,(function(){return s.apply(o,arguments)}))}));function _xIterableReduce(s,o,i){for(var a=i.next();!a.done;){if((o=s[\"@@transducer/step\"](o,a.value))&&o[\"@@transducer/reduced\"]){o=o[\"@@transducer/value\"];break}a=i.next()}return s[\"@@transducer/result\"](o)}function _xMethodReduce(s,o,i,a){return s[\"@@transducer/result\"](i[a](Ea(s[\"@@transducer/step\"],s),o))}const wa=_createReduce(_xArrayReduce,_xMethodReduce,_xIterableReduce);var xa=function(){function XWrap(s){this.f=s}return XWrap.prototype[\"@@transducer/init\"]=function(){throw new Error(\"init not implemented on XWrap\")},XWrap.prototype[\"@@transducer/result\"]=function(s){return s},XWrap.prototype[\"@@transducer/step\"]=function(s,o){return this.f(s,o)},XWrap}();function _xwrap(s){return new xa(s)}var ka=_curry3((function(s,o,i){return wa(\"function\"==typeof s?_xwrap(s):s,o,i)}));const Ca=ka;function _checkForMethod(s,o){return function(){var i=arguments.length;if(0===i)return o();var a=arguments[i-1];return ca(a)||\"function\"!=typeof a[s]?o.apply(this,arguments):a[s].apply(a,Array.prototype.slice.call(arguments,0,i-1))}}var Aa=_curry3(_checkForMethod(\"slice\",(function slice(s,o,i){return Array.prototype.slice.call(i,s,o)})));const ja=Aa;const Ia=_curry1(_checkForMethod(\"tail\",ja(1,1/0)));function pipe(){if(0===arguments.length)throw new Error(\"pipe requires at least one argument\");return _arity(arguments[0].length,Ca(_pipe,arguments[0],Ia(arguments)))}const Na=_curry2((function defaultTo(s,o){return null==o||o!=o?s:o}));const Da=_curry2((function prop(s,o){if(null!=o)return Xo(s)?_nth(s,o):o[s]}));const La=_curry3((function propOr(s,o,i){return Na(s,Da(o,i))}));var Fa=_curry1((function(s){return _nth(-1,s)}));const Ba=Fa;function _curryN(s,o,i){return function(){for(var a=[],u=0,_=s,w=0,x=!1;w<o.length||u<arguments.length;){var C;w<o.length&&(!_isPlaceholder(o[w])||u>=arguments.length)?C=o[w]:(C=arguments[u],u+=1),a[w]=C,_isPlaceholder(C)?x=!0:_-=1,w+=1}return!x&&_<=0?i.apply(this,a):_arity(Math.max(0,_),_curryN(s,a,i))}}const $a=_curry2((function curryN(s,o){return 1===s?_curry1(o):_arity(s,_curryN(s,[],o))}));const za=_curry1((function curry(s){return $a(s.length,s)}));function _isFunction(s){var o=Object.prototype.toString.call(s);return\"[object Function]\"===o||\"[object AsyncFunction]\"===o||\"[object GeneratorFunction]\"===o||\"[object AsyncGeneratorFunction]\"===o}const Ja=_curry2((function invoker(s,o){return $a(s+1,(function(){var i=arguments[s];if(null!=i&&_isFunction(i[o]))return i[o].apply(i,Array.prototype.slice.call(arguments,0,s));throw new TypeError(ga(i)+' does not have a method named \"'+o+'\"')}))}));const Ha=Ja(1,\"split\");function dropLastWhile(s,o){for(var i=o.length-1;i>=0&&s(o[i]);)i-=1;return ja(0,i+1,o)}var Ga=function(){function XDropLastWhile(s,o){this.f=s,this.retained=[],this.xf=o}return XDropLastWhile.prototype[\"@@transducer/init\"]=_xfBase_init,XDropLastWhile.prototype[\"@@transducer/result\"]=function(s){return this.retained=null,this.xf[\"@@transducer/result\"](s)},XDropLastWhile.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)?this.retain(s,o):this.flush(s,o)},XDropLastWhile.prototype.flush=function(s,o){return s=wa(this.xf,s,this.retained),this.retained=[],this.xf[\"@@transducer/step\"](s,o)},XDropLastWhile.prototype.retain=function(s,o){return this.retained.push(o),s},XDropLastWhile}();function _xdropLastWhile(s){return function(o){return new Ga(s,o)}}const ec=_curry2(_dispatchable([],_xdropLastWhile,dropLastWhile));const rc=Ja(1,\"join\");const sc=_curry1((function flip(s){return $a(s.length,(function(o,i){var a=Array.prototype.slice.call(arguments,0);return a[0]=i,a[1]=o,s.apply(this,a)}))}))(_curry2(_includes));const oc=za((function(s,o){return pipe(Ha(\"\"),ec(sc(s)),rc(\"\"))(o)}));function _iterableReduce(s,o,i){for(var a=i.next();!a.done;)o=s(o,a.value),a=i.next();return o}function _methodReduce(s,o,i,a){return i[a](s,o)}const ic=_createReduce(_arrayReduce,_methodReduce,_iterableReduce);var ac=function(){function XMap(s,o){this.xf=o,this.f=s}return XMap.prototype[\"@@transducer/init\"]=_xfBase_init,XMap.prototype[\"@@transducer/result\"]=_xfBase_result,XMap.prototype[\"@@transducer/step\"]=function(s,o){return this.xf[\"@@transducer/step\"](s,this.f(o))},XMap}();const cc=_curry2(_dispatchable([\"fantasy-land/map\",\"map\"],(function _xmap(s){return function(o){return new ac(s,o)}}),(function map(s,o){switch(Object.prototype.toString.call(o)){case\"[object Function]\":return $a(o.length,(function(){return s.call(this,o.apply(this,arguments))}));case\"[object Object]\":return _arrayReduce((function(i,a){return i[a]=s(o[a]),i}),{},ea(o));default:return _map(s,o)}})));const lc=_curry2((function ap(s,o){return\"function\"==typeof o[\"fantasy-land/ap\"]?o[\"fantasy-land/ap\"](s):\"function\"==typeof s.ap?s.ap(o):\"function\"==typeof s?function(i){return s(i)(o(i))}:ic((function(s,i){return function _concat(s,o){var i;o=o||[];var a=(s=s||[]).length,u=o.length,_=[];for(i=0;i<a;)_[_.length]=s[i],i+=1;for(i=0;i<u;)_[_.length]=o[i],i+=1;return _}(s,cc(i,o))}),[],s)}));const pc=_curry2((function liftN(s,o){var i=$a(s,o);return $a(s,(function(){return _arrayReduce(lc,cc(i,arguments[0]),Array.prototype.slice.call(arguments,1))}))}));const hc=_curry1((function lift(s){return pc(s.length,s)}));const dc=hc(_curry1((function not(s){return!s})));const fc=_curry1((function always(s){return function(){return s}}));const gc=fc(void 0);const bc=na(gc());const _c=dc(bc);const Ec=_curry2((function max(s,o){if(s===o)return o;function safeMax(s,o){if(s>o!=o>s)return o>s?o:s}var i=safeMax(s,o);if(void 0!==i)return i;var a=safeMax(typeof s,typeof o);if(void 0!==a)return a===typeof s?s:o;var u=ga(s),_=safeMax(u,ga(o));return void 0!==_&&_===u?s:o}));var kc=_curry2((function pluck(s,o){return cc(Da(s),o)}));const Oc=kc;const jc=_curry1((function anyPass(s){return $a(Ca(Ec,0,Oc(\"length\",s)),(function(){for(var o=0,i=s.length;o<i;){if(s[o].apply(this,arguments))return!0;o+=1}return!1}))}));var identical=function(s,o){switch(arguments.length){case 0:return identical;case 1:return function unaryIdentical(o){return 0===arguments.length?unaryIdentical:Zo(s,o)};default:return Zo(s,o)}};const Ic=identical;const Pc=$a(1,pipe(ra,Ic(\"GeneratorFunction\")));const Nc=$a(1,pipe(ra,Ic(\"AsyncFunction\")));const Mc=jc([pipe(ra,Ic(\"Function\")),Pc,Nc]);var Rc=_curry3((function replace(s,o,i){return i.replace(s,o)}));const Lc=Rc;const Fc=$a(1,pipe(ra,Ic(\"RegExp\")));const qc=_curry3((function when(s,o,i){return s(i)?o(i):i}));const Jc=$a(1,pipe(ra,Ic(\"String\")));const Hc=qc(Jc,Lc(/[.*+?^${}()|[\\]\\\\-]/g,\"\\\\$&\"));var Kc=function checkValue(s,o){if(\"string\"!=typeof s&&!(s instanceof String))throw TypeError(\"`\".concat(o,\"` must be a string\"))};const Gc=function replaceAll(s,o,i){!function checkArguments(s,o,i){if(null==i||null==s||null==o)throw TypeError(\"Input values must not be `null` or `undefined`\")}(s,o,i),Kc(i,\"str\"),Kc(o,\"replaceValue\"),function checkSearchValue(s){if(!(\"string\"==typeof s||s instanceof String||s instanceof RegExp))throw TypeError(\"`searchValue` must be a string or an regexp\")}(s);var a=new RegExp(Fc(s)?s:Hc(s),\"g\");return Lc(a,o,i)};var Qc=$a(3,Gc),tl=Ja(2,\"replaceAll\");const sl=Mc(String.prototype.replaceAll)?tl:Qc,isWindows=()=>Qo(va(/^win/),[\"platform\"],Yo),getProtocol=s=>{try{const o=new URL(s);return oc(\":\",o.protocol)}catch{return}},ul=(pipe(getProtocol,_c),s=>{if(Yo.browser)return!1;const o=getProtocol(s);return bc(o)||\"file\"===o||/^[a-zA-Z]$/.test(o)}),isHttpUrl=s=>{const o=getProtocol(s);return\"http\"===o||\"https\"===o},toFileSystemPath=(s,o)=>{const i=[/%23/g,\"#\",/%24/g,\"$\",/%26/g,\"&\",/%2C/g,\",\",/%40/g,\"@\"],a=La(!1,\"keepFileProtocol\",o),u=La(isWindows,\"isWindows\",o);let _=decodeURI(s);for(let s=0;s<i.length;s+=2)_=_.replace(i[s],i[s+1]);let w=\"file://\"===_.substring(0,7).toLowerCase();return w&&(_=\"/\"===_[7]?_.substring(8):_.substring(7),u()&&\"/\"===_[1]&&(_=`${_[0]}:${_.substring(1)}`),a?_=`file:///${_}`:(w=!1,_=u()?_:`/${_}`)),u()&&!w&&(_=sl(\"/\",\"\\\\\",_),\":\\\\\"===_.substring(1,3)&&(_=_[0].toUpperCase()+_.substring(1))),_},getHash=s=>{const o=s.indexOf(\"#\");return-1!==o?s.substring(o):\"#\"},stripHash=s=>{const o=s.indexOf(\"#\");let i=s;return o>=0&&(i=s.substring(0,o)),i},url_cwd=()=>{if(Yo.browser)return stripHash(globalThis.location.href);const s=Yo.cwd(),o=Ba(s);return[\"/\",\"\\\\\"].includes(o)?s:s+(isWindows()?\"\\\\\":\"/\")},resolve=(s,o)=>{const i=new URL(o,new URL(s,\"resolve://\"));if(\"resolve:\"===i.protocol){const{pathname:s,search:o,hash:a}=i;return s+o+a}return i.toString()},sanitize=s=>{if(ul(s))return(s=>{const o=[/\\?/g,\"%3F\",/#/g,\"%23\"];let i=s;isWindows()&&(i=i.replace(/\\\\/g,\"/\")),i=encodeURI(i);for(let s=0;s<o.length;s+=2)i=i.replace(o[s],o[s+1]);return i})(toFileSystemPath(s));try{return new URL(s).toString()}catch{return encodeURI(decodeURI(s)).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\")}},unsanitize=s=>ul(s)?toFileSystemPath(s):decodeURI(s),{fetch:yl,Response:vl,Headers:_l,Request:Sl,FormData:El,File:wl,Blob:xl}=globalThis;function _array_like_to_array(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=new Array(o);i<o;i++)a[i]=s[i];return a}function legacy_defineProperties(s,o){for(var i=0;i<o.length;i++){var a=o[i];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(s,a.key,a)}}function _instanceof(s,o){return null!=o&&\"undefined\"!=typeof Symbol&&o[Symbol.hasInstance]?!!o[Symbol.hasInstance](s):s instanceof o}function _sliced_to_array(s,o){return function _array_with_holes(s){if(Array.isArray(s))return s}(s)||function _iterable_to_array_limit(s,o){var i=null==s?null:\"undefined\"!=typeof Symbol&&s[Symbol.iterator]||s[\"@@iterator\"];if(null!=i){var a,u,_=[],w=!0,x=!1;try{for(i=i.call(s);!(w=(a=i.next()).done)&&(_.push(a.value),!o||_.length!==o);w=!0);}catch(s){x=!0,u=s}finally{try{w||null==i.return||i.return()}finally{if(x)throw u}}return _}}(s,o)||function _unsupported_iterable_to_array(s,o){if(!s)return;if(\"string\"==typeof s)return _array_like_to_array(s,o);var i=Object.prototype.toString.call(s).slice(8,-1);\"Object\"===i&&s.constructor&&(i=s.constructor.name);if(\"Map\"===i||\"Set\"===i)return Array.from(i);if(\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return _array_like_to_array(s,o)}(s,o)||function _non_iterable_rest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _type_of(s){return s&&\"undefined\"!=typeof Symbol&&s.constructor===Symbol?\"symbol\":typeof s}void 0===globalThis.fetch&&(globalThis.fetch=yl),void 0===globalThis.Headers&&(globalThis.Headers=_l),void 0===globalThis.Request&&(globalThis.Request=Sl),void 0===globalThis.Response&&(globalThis.Response=vl),void 0===globalThis.FormData&&(globalThis.FormData=El),void 0===globalThis.File&&(globalThis.File=wl),void 0===globalThis.Blob&&(globalThis.Blob=xl);var __typeError=function(s){throw TypeError(s)},__accessCheck=function(s,o,i){return o.has(s)||__typeError(\"Cannot \"+i)},__privateGet=function(s,o,i){return __accessCheck(s,o,\"read from private field\"),i?i.call(s):o.get(s)},__privateAdd=function(s,o,i){return o.has(s)?__typeError(\"Cannot add the same private member more than once\"):_instanceof(o,WeakSet)?o.add(s):o.set(s,i)},__privateSet=function(s,o,i,a){return __accessCheck(s,o,\"write to private field\"),a?a.call(s,i):o.set(s,i),i},to_string=function(s){return Object.prototype.toString.call(s)},is_typed_array=function(s){return ArrayBuffer.isView(s)&&!_instanceof(s,DataView)},kl=Array.isArray,Ol=Object.getOwnPropertyDescriptor,Cl=Object.prototype.propertyIsEnumerable,Al=Object.getOwnPropertySymbols,Il=Object.prototype.hasOwnProperty;function own_enumerable_keys(s){for(var o=Object.keys(s),i=Al(s),a=0;a<i.length;a++)Cl.call(s,i[a])&&o.push(i[a]);return o}function is_writable(s,o){var i;return!(null===(i=Ol(s,o))||void 0===i?void 0:i.writable)}function legacy_copy(s,o){if(\"object\"===(void 0===s?\"undefined\":_type_of(s))&&null!==s){var i;if(kl(s))i=[];else if(\"[object Date]\"===to_string(s))i=new Date(s.getTime?s.getTime():s);else if(function(s){return\"[object RegExp]\"===to_string(s)}(s))i=new RegExp(s);else if(function(s){return\"[object Error]\"===to_string(s)}(s))i={message:s.message};else if(function(s){return\"[object Boolean]\"===to_string(s)}(s)||function(s){return\"[object Number]\"===to_string(s)}(s)||function(s){return\"[object String]\"===to_string(s)}(s))i=Object(s);else{if(is_typed_array(s))return s.slice();i=Object.create(Object.getPrototypeOf(s))}var a=o.includeSymbols?own_enumerable_keys:Object.keys,u=!0,_=!1,w=void 0;try{for(var x,C=a(s)[Symbol.iterator]();!(u=(x=C.next()).done);u=!0){var j=x.value;i[j]=s[j]}}catch(s){_=!0,w=s}finally{try{u||null==C.return||C.return()}finally{if(_)throw w}}return i}return s}var Pl,Tl,Nl={includeSymbols:!1,immutable:!1};function walk(s,o){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Nl,a=[],u=[],_=!0,w=i.includeSymbols?own_enumerable_keys:Object.keys,x=!!i.immutable;return function walker(s){var C=x?legacy_copy(s,i):s,j={},L=!0,B={node:C,node_:s,path:[].concat(a),parent:u[u.length-1],parents:u,key:a[a.length-1],isRoot:0===a.length,level:a.length,circular:void 0,isLeaf:!1,notLeaf:!0,notRoot:!0,isFirst:!1,isLast:!1,update:function update(s){var o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];B.isRoot||(B.parent.node[B.key]=s),B.node=s,o&&(L=!1)},delete:function _delete(s){delete B.parent.node[B.key],s&&(L=!1)},remove:function remove(s){kl(B.parent.node)?B.parent.node.splice(B.key,1):delete B.parent.node[B.key],s&&(L=!1)},keys:null,before:function before(s){j.before=s},after:function after(s){j.after=s},pre:function pre(s){j.pre=s},post:function post(s){j.post=s},stop:function stop(){_=!1},block:function block(){L=!1}};if(!_)return B;function update_state(){if(\"object\"===_type_of(B.node)&&null!==B.node){B.keys&&B.node_===B.node||(B.keys=w(B.node)),B.isLeaf=0===B.keys.length;for(var o=0;o<u.length;o++)if(u[o].node_===s){B.circular=u[o];break}}else B.isLeaf=!0,B.keys=null;B.notLeaf=!B.isLeaf,B.notRoot=!B.isRoot}update_state();var $=o.call(B,B.node);if(void 0!==$&&B.update&&B.update($),j.before&&j.before.call(B,B.node),!L)return B;if(\"object\"===_type_of(B.node)&&null!==B.node&&!B.circular){var V;u.push(B),update_state();var U=!0,z=!1,Y=void 0;try{for(var Z,ee=Object.entries(null!==(V=B.keys)&&void 0!==V?V:[])[Symbol.iterator]();!(U=(Z=ee.next()).done);U=!0){var ie,ae=_sliced_to_array(Z.value,2),ce=ae[0],le=ae[1];a.push(le),j.pre&&j.pre.call(B,B.node[le],le);var pe=walker(B.node[le]);x&&Il.call(B.node,le)&&!is_writable(B.node,le)&&(B.node[le]=pe.node),pe.isLast=!!(null===(ie=B.keys)||void 0===ie?void 0:ie.length)&&+ce==B.keys.length-1,pe.isFirst=0==+ce,j.post&&j.post.call(B,pe),a.pop()}}catch(s){z=!0,Y=s}finally{try{U||null==ee.return||ee.return()}finally{if(z)throw Y}}u.pop()}return j.after&&j.after.call(B,B.node),B}(s).node}var Ml=function(){function Traverse(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Nl;!function _class_call_check(s,o){if(!(s instanceof o))throw new TypeError(\"Cannot call a class as a function\")}(this,Traverse),__privateAdd(this,Pl),__privateAdd(this,Tl),__privateSet(this,Pl,s),__privateSet(this,Tl,o)}return function _create_class(s,o,i){return o&&legacy_defineProperties(s.prototype,o),i&&legacy_defineProperties(s,i),s}(Traverse,[{key:\"get\",value:function get(s){for(var o=__privateGet(this,Pl),i=0;o&&i<s.length;i++){var a=s[i];if(!Il.call(o,a)||!__privateGet(this,Tl).includeSymbols&&\"symbol\"===(void 0===a?\"undefined\":_type_of(a)))return;o=o[a]}return o}},{key:\"has\",value:function has(s){for(var o=__privateGet(this,Pl),i=0;o&&i<s.length;i++){var a=s[i];if(!Il.call(o,a)||!__privateGet(this,Tl).includeSymbols&&\"symbol\"===(void 0===a?\"undefined\":_type_of(a)))return!1;o=o[a]}return!0}},{key:\"set\",value:function set(s,o){var i=__privateGet(this,Pl),a=0;for(a=0;a<s.length-1;a++){var u=s[a];Il.call(i,u)||(i[u]={}),i=i[u]}return i[s[a]]=o,o}},{key:\"map\",value:function map(s){return walk(__privateGet(this,Pl),s,{immutable:!0,includeSymbols:!!__privateGet(this,Tl).includeSymbols})}},{key:\"forEach\",value:function forEach(s){return __privateSet(this,Pl,walk(__privateGet(this,Pl),s,__privateGet(this,Tl))),__privateGet(this,Pl)}},{key:\"reduce\",value:function reduce(s,o){var i=1===arguments.length,a=i?__privateGet(this,Pl):o;return this.forEach((function(o){this.isRoot&&i||(a=s.call(this,a,o))})),a}},{key:\"paths\",value:function paths(){var s=[];return this.forEach((function(){s.push(this.path)})),s}},{key:\"nodes\",value:function nodes(){var s=[];return this.forEach((function(){s.push(this.node)})),s}},{key:\"clone\",value:function clone(){var s=[],o=[],i=__privateGet(this,Tl);return is_typed_array(__privateGet(this,Pl))?__privateGet(this,Pl).slice():function clone(a){for(var u=0;u<s.length;u++)if(s[u]===a)return o[u];if(\"object\"===(void 0===a?\"undefined\":_type_of(a))&&null!==a){var _=legacy_copy(a,i);s.push(a),o.push(_);var w=i.includeSymbols?own_enumerable_keys:Object.keys,x=!0,C=!1,j=void 0;try{for(var L,B=w(a)[Symbol.iterator]();!(x=(L=B.next()).done);x=!0){var $=L.value;_[$]=clone(a[$])}}catch(s){C=!0,j=s}finally{try{x||null==B.return||B.return()}finally{if(C)throw j}}return s.pop(),o.pop(),_}return a}(__privateGet(this,Pl))}}]),Traverse}();Pl=new WeakMap,Tl=new WeakMap;var traverse=function(s,o){return new Ml(s,o)};traverse.get=function(s,o,i){return new Ml(s,i).get(o)},traverse.set=function(s,o,i,a){return new Ml(s,a).set(o,i)},traverse.has=function(s,o,i){return new Ml(s,i).has(o)},traverse.map=function(s,o,i){return new Ml(s,i).map(o)},traverse.forEach=function(s,o,i){return new Ml(s,i).forEach(o)},traverse.reduce=function(s,o,i,a){return new Ml(s,a).reduce(o,i)},traverse.paths=function(s,o){return new Ml(s,o).paths()},traverse.nodes=function(s,o){return new Ml(s,o).nodes()},traverse.clone=function(s,o){return new Ml(s,o).clone()};var Rl=traverse;const Dl=\"application/json, application/yaml\",Ll=\"https://swagger.io\",Fl=Object.freeze({url:\"/\"}),Bl=3e3,$l=[\"properties\"],Vl=[\"properties\"],Ul=[\"definitions\",\"parameters\",\"responses\",\"securityDefinitions\",\"components/schemas\",\"components/responses\",\"components/parameters\",\"components/securitySchemes\"],zl=[\"schema/example\",\"items/example\"];function isFreelyNamed(s){const o=s[s.length-1],i=s[s.length-2],a=s.join(\"/\");return $l.indexOf(o)>-1&&-1===Vl.indexOf(i)||Ul.indexOf(a)>-1||zl.some((s=>a.indexOf(s)>-1))}function absolutifyPointer(s,o){const[i,a]=s.split(\"#\"),u=null!=o?o:\"\",_=null!=i?i:\"\";let w;if(isHttpUrl(u))w=resolve(u,_);else{const s=resolve(Ll,u),o=resolve(s,_).replace(Ll,\"\");w=_.startsWith(\"/\")?o:o.substring(1)}return a?`${w}#${a}`:w}const Wl=/^([a-z]+:\\/\\/|\\/\\/)/i;class JSONRefError extends Go{}const Jl={},Hl=new WeakMap,Kl=[s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"examples\"===s[5],s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"content\"===s[5]&&\"example\"===s[7],s=>\"paths\"===s[0]&&\"responses\"===s[3]&&\"content\"===s[5]&&\"examples\"===s[7]&&\"value\"===s[9],s=>\"paths\"===s[0]&&\"requestBody\"===s[3]&&\"content\"===s[4]&&\"example\"===s[6],s=>\"paths\"===s[0]&&\"requestBody\"===s[3]&&\"content\"===s[4]&&\"examples\"===s[6]&&\"value\"===s[8],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"example\"===s[4],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"example\"===s[5],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"examples\"===s[4]&&\"value\"===s[6],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"examples\"===s[5]&&\"value\"===s[7],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"content\"===s[4]&&\"example\"===s[6],s=>\"paths\"===s[0]&&\"parameters\"===s[2]&&\"content\"===s[4]&&\"examples\"===s[6]&&\"value\"===s[8],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"content\"===s[4]&&\"example\"===s[7],s=>\"paths\"===s[0]&&\"parameters\"===s[3]&&\"content\"===s[5]&&\"examples\"===s[7]&&\"value\"===s[9]],Gl={key:\"$ref\",plugin:(s,o,i,a)=>{const u=a.getInstance(),_=i.slice(0,-1);if(isFreelyNamed(_)||(s=>Kl.some((o=>o(s))))(_))return;const{baseDoc:w}=a.getContext(i);if(\"string\"!=typeof s)return new JSONRefError(\"$ref: must be a string (JSON-Ref)\",{$ref:s,baseDoc:w,fullPath:i});const x=refs_split(s),C=x[0],j=x[1]||\"\";let L,B,$;try{L=w||C?absoluteify(C,w):null}catch(o){return wrapError(o,{pointer:j,$ref:s,basePath:L,fullPath:i})}if(function pointerAlreadyInPath(s,o,i,a){let u=Hl.get(a);u||(u={},Hl.set(a,u));const _=function arrayToJsonPointer(s){if(0===s.length)return\"\";return`/${s.map(escapeJsonPointerToken).join(\"/\")}`}(i),w=`${o||\"<specmap-base>\"}#${s}`,x=_.replace(/allOf\\/\\d+\\/?/g,\"\"),C=a.contextTree.get([]).baseDoc;if(o===C&&pointerIsAParent(x,s))return!0;let j=\"\";const L=i.some((s=>(j=`${j}/${escapeJsonPointerToken(s)}`,u[j]&&u[j].some((s=>pointerIsAParent(s,w)||pointerIsAParent(w,s))))));if(L)return!0;return void(u[x]=(u[x]||[]).concat(w))}(j,L,_,a)&&!u.useCircularStructures){const o=absolutifyPointer(s,L);return s===o?null:Wo.replace(i,o)}if(null==L?($=jsonPointerToArray(j),B=a.get($),void 0===B&&(B=new JSONRefError(`Could not resolve reference: ${s}`,{pointer:j,$ref:s,baseDoc:w,fullPath:i}))):(B=extractFromDoc(L,j),B=null!=B.__value?B.__value:B.catch((o=>{throw wrapError(o,{pointer:j,$ref:s,baseDoc:w,fullPath:i})}))),B instanceof Error)return[Wo.remove(i),B];const V=absolutifyPointer(s,L),U=Wo.replace(_,B,{$$ref:V});if(L&&L!==w)return[U,Wo.context(_,{baseDoc:L})];try{if(!function patchValueAlreadyInPath(s,o){const i=[s];return o.path.reduce(((s,o)=>(i.push(s[o]),s[o])),s),pointToAncestor(o.value);function pointToAncestor(s){return Wo.isObject(s)&&(i.indexOf(s)>=0||Object.keys(s).some((o=>pointToAncestor(s[o]))))}}(a.state,U)||u.useCircularStructures)return U}catch(s){return null}}},Yl=Object.assign(Gl,{docCache:Jl,absoluteify,clearCache:function clearCache(s){void 0!==s?delete Jl[s]:Object.keys(Jl).forEach((s=>{delete Jl[s]}))},JSONRefError,wrapError,getDoc,split:refs_split,extractFromDoc,fetchJSON:function fetchJSON(s){return fetch(s,{headers:{Accept:Dl},loadSpec:!0}).then((s=>s.text())).then((s=>fn.load(s)))},extract,jsonPointerToArray,unescapeJsonPointerToken}),Xl=Yl;function absoluteify(s,o){if(!Wl.test(s)){if(!o)throw new JSONRefError(`Tried to resolve a relative URL, without having a basePath. path: '${s}' basePath: '${o}'`);return resolve(o,s)}return s}function wrapError(s,o){let i;return i=s&&s.response&&s.response.body?`${s.response.body.code} ${s.response.body.message}`:s.message,new JSONRefError(`Could not resolve reference: ${i}`,{...o,cause:s})}function refs_split(s){return(s+\"\").split(\"#\")}function extractFromDoc(s,o){const i=Jl[s];if(i&&!Wo.isPromise(i))try{const s=extract(o,i);return Object.assign(Promise.resolve(s),{__value:s})}catch(s){return Promise.reject(s)}return getDoc(s).then((s=>extract(o,s)))}function getDoc(s){const o=Jl[s];return o?Wo.isPromise(o)?o:Promise.resolve(o):(Jl[s]=Yl.fetchJSON(s).then((o=>(Jl[s]=o,o))),Jl[s])}function extract(s,o){const i=jsonPointerToArray(s);if(i.length<1)return o;const a=Wo.getIn(o,i);if(void 0===a)throw new JSONRefError(`Could not resolve pointer: ${s} does not exist in document`,{pointer:s});return a}function jsonPointerToArray(s){if(\"string\"!=typeof s)throw new TypeError(\"Expected a string, got a \"+typeof s);return\"/\"===s[0]&&(s=s.substr(1)),\"\"===s?[]:s.split(\"/\").map(unescapeJsonPointerToken)}function unescapeJsonPointerToken(s){if(\"string\"!=typeof s)return s;return new URLSearchParams(`=${s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")}`).get(\"\")}function escapeJsonPointerToken(s){return new URLSearchParams([[\"\",s.replace(/~/g,\"~0\").replace(/\\//g,\"~1\")]]).toString().slice(1)}const pointerBoundaryChar=s=>!s||\"/\"===s||\"#\"===s;function pointerIsAParent(s,o){if(pointerBoundaryChar(o))return!0;const i=s.charAt(o.length),a=o.slice(-1);return 0===s.indexOf(o)&&(!i||\"/\"===i||\"#\"===i)&&\"#\"!==a}const Ql={key:\"allOf\",plugin:(s,o,i,a,u)=>{if(u.meta&&u.meta.$$ref)return;const _=i.slice(0,-1);if(isFreelyNamed(_))return;if(!Array.isArray(s)){const s=new TypeError(\"allOf must be an array\");return s.fullPath=i,s}let w=!1,x=u.value;if(_.forEach((s=>{x&&(x=x[s])})),x={...x},0===Object.keys(x).length)return;delete x.allOf;const C=[];return C.push(a.replace(_,{})),s.forEach(((s,o)=>{if(!a.isObject(s)){if(w)return null;w=!0;const s=new TypeError(\"Elements in allOf must be objects\");return s.fullPath=i,C.push(s)}C.push(a.mergeDeep(_,s));const u=function generateAbsoluteRefPatches(s,o,{specmap:i,getBaseUrlForNodePath:a=s=>i.getContext([...o,...s]).baseDoc,targetKeys:u=[\"$ref\",\"$$ref\"]}={}){const _=[];return Rl(s).forEach((function callback(){if(u.includes(this.key)&&\"string\"==typeof this.node){const s=this.path,u=o.concat(this.path),w=absolutifyPointer(this.node,a(s));_.push(i.replace(u,w))}})),_}(s,i.slice(0,-1),{getBaseUrlForNodePath:s=>a.getContext([...i,o,...s]).baseDoc,specmap:a});C.push(...u)})),x.example&&C.push(a.remove([].concat(_,\"example\"))),C.push(a.mergeDeep(_,x)),x.$$ref||C.push(a.remove([].concat(_,\"$$ref\"))),C}},Zl={key:\"parameters\",plugin:(s,o,i,a)=>{if(Array.isArray(s)&&s.length){const o=Object.assign([],s),u=i.slice(0,-1),_={...Wo.getIn(a.spec,u)};for(let u=0;u<s.length;u+=1){const w=s[u];try{o[u].default=a.parameterMacro(_,w)}catch(s){const o=new Error(s);return o.fullPath=i,o}}return Wo.replace(i,o)}return Wo.replace(i,s)}},eu={key:\"properties\",plugin:(s,o,i,a)=>{const u={...s};for(const o in s)try{u[o].default=a.modelPropertyMacro(u[o])}catch(s){const o=new Error(s);return o.fullPath=i,o}return Wo.replace(i,u)}};class ContextTree{constructor(s){this.root=context_tree_createNode(s||{})}set(s,o){const i=this.getParent(s,!0);if(!i)return void context_tree_updateNode(this.root,o,null);const a=s[s.length-1],{children:u}=i;u[a]?context_tree_updateNode(u[a],o,i):u[a]=context_tree_createNode(o,i)}get(s){if((s=s||[]).length<1)return this.root.value;let o,i,a=this.root;for(let u=0;u<s.length&&(i=s[u],o=a.children,o[i]);u+=1)a=o[i];return a&&a.protoValue}getParent(s,o){return!s||s.length<1?null:s.length<2?this.root:s.slice(0,-1).reduce(((s,i)=>{if(!s)return s;const{children:a}=s;return!a[i]&&o&&(a[i]=context_tree_createNode(null,s)),a[i]}),this.root)}}function context_tree_createNode(s,o){return context_tree_updateNode({children:{}},s,o)}function context_tree_updateNode(s,o,i){return s.value=o||{},s.protoValue=i?{...i.protoValue,...s.value}:s.value,Object.keys(s.children).forEach((o=>{const i=s.children[o];s.children[o]=context_tree_updateNode(i,i.value,s)})),s}const specmap_noop=()=>{};class SpecMap{static getPluginName(s){return s.pluginName}static getPatchesOfType(s,o){return s.filter(o)}constructor(s){Object.assign(this,{spec:\"\",debugLevel:\"info\",plugins:[],pluginHistory:{},errors:[],mutations:[],promisedPatches:[],state:{},patches:[],context:{},contextTree:new ContextTree,showDebug:!1,allPatches:[],pluginProp:\"specMap\",libMethods:Object.assign(Object.create(this),Wo,{getInstance:()=>this}),allowMetaPatches:!1},s),this.get=this._get.bind(this),this.getContext=this._getContext.bind(this),this.hasRun=this._hasRun.bind(this),this.wrappedPlugins=this.plugins.map(this.wrapPlugin.bind(this)).filter(Wo.isFunction),this.patches.push(Wo.add([],this.spec)),this.patches.push(Wo.context([],this.context)),this.updatePatches(this.patches)}debug(s,...o){this.debugLevel===s&&console.log(...o)}verbose(s,...o){\"verbose\"===this.debugLevel&&console.log(`[${s}]   `,...o)}wrapPlugin(s,o){const{pathDiscriminator:i}=this;let a,u=null;return s[this.pluginProp]?(u=s,a=s[this.pluginProp]):Wo.isFunction(s)?a=s:Wo.isObject(s)&&(a=function createKeyBasedPlugin(s){const isSubPath=(s,o)=>!Array.isArray(s)||s.every(((s,i)=>s===o[i]));return function*generator(o,a){const u={};for(const[s,i]of o.filter(Wo.isAdditiveMutation).entries()){if(!(s<Bl))return;yield*traverse(i.value,i.path,i)}function*traverse(o,_,w){if(Wo.isObject(o)){const x=_.length-1,C=_[x],j=_.indexOf(\"properties\"),L=\"properties\"===C&&x===j,B=a.allowMetaPatches&&u[o.$$ref];for(const x of Object.keys(o)){const C=o[x],j=_.concat(x),$=Wo.isObject(C),V=o.$$ref;if(B||$&&(a.allowMetaPatches&&V&&isSubPath(i,j)&&(u[V]=!0),yield*traverse(C,j,w)),!L&&x===s.key){const o=isSubPath(i,_);i&&!o||(yield s.plugin(C,x,j,a,w))}}}else s.key===_[_.length-1]&&(yield s.plugin(o,s.key,_,a))}}}(s)),Object.assign(a.bind(u),{pluginName:s.name||o,isGenerator:Wo.isGenerator(a)})}nextPlugin(){return this.wrappedPlugins.find((s=>this.getMutationsForPlugin(s).length>0))}nextPromisedPatch(){if(this.promisedPatches.length>0)return Promise.race(this.promisedPatches.map((s=>s.value)))}getPluginHistory(s){const o=this.constructor.getPluginName(s);return this.pluginHistory[o]||[]}getPluginRunCount(s){return this.getPluginHistory(s).length}getPluginHistoryTip(s){const o=this.getPluginHistory(s);return o&&o[o.length-1]||{}}getPluginMutationIndex(s){const o=this.getPluginHistoryTip(s).mutationIndex;return\"number\"!=typeof o?-1:o}updatePluginHistory(s,o){const i=this.constructor.getPluginName(s);this.pluginHistory[i]=this.pluginHistory[i]||[],this.pluginHistory[i].push(o)}updatePatches(s){Wo.normalizeArray(s).forEach((s=>{if(s instanceof Error)this.errors.push(s);else try{if(!Wo.isObject(s))return void this.debug(\"updatePatches\",\"Got a non-object patch\",s);if(this.showDebug&&this.allPatches.push(s),Wo.isPromise(s.value))return this.promisedPatches.push(s),void this.promisedPatchThen(s);if(Wo.isContextPatch(s))return void this.setContext(s.path,s.value);Wo.isMutation(s)&&this.updateMutations(s)}catch(s){console.error(s),this.errors.push(s)}}))}updateMutations(s){\"object\"==typeof s.value&&!Array.isArray(s.value)&&this.allowMetaPatches&&(s.value={...s.value});const o=Wo.applyPatch(this.state,s,{allowMetaPatches:this.allowMetaPatches});o&&(this.mutations.push(s),this.state=o)}removePromisedPatch(s){const o=this.promisedPatches.indexOf(s);o<0?this.debug(\"Tried to remove a promisedPatch that isn't there!\"):this.promisedPatches.splice(o,1)}promisedPatchThen(s){return s.value=s.value.then((o=>{const i={...s,value:o};this.removePromisedPatch(s),this.updatePatches(i)})).catch((o=>{this.removePromisedPatch(s),this.updatePatches(o)})),s.value}getMutations(s,o){return s=s||0,\"number\"!=typeof o&&(o=this.mutations.length),this.mutations.slice(s,o)}getCurrentMutations(){return this.getMutationsForPlugin(this.getCurrentPlugin())}getMutationsForPlugin(s){const o=this.getPluginMutationIndex(s);return this.getMutations(o+1)}getCurrentPlugin(){return this.currentPlugin}getLib(){return this.libMethods}_get(s){return Wo.getIn(this.state,s)}_getContext(s){return this.contextTree.get(s)}setContext(s,o){return this.contextTree.set(s,o)}_hasRun(s){return this.getPluginRunCount(this.getCurrentPlugin())>(s||0)}dispatch(){const s=this,o=this.nextPlugin();if(!o){const s=this.nextPromisedPatch();if(s)return s.then((()=>this.dispatch())).catch((()=>this.dispatch()));const o={spec:this.state,errors:this.errors};return this.showDebug&&(o.patches=this.allPatches),Promise.resolve(o)}if(s.pluginCount=s.pluginCount||new WeakMap,s.pluginCount.set(o,(s.pluginCount.get(o)||0)+1),s.pluginCount[o]>100)return Promise.resolve({spec:s.state,errors:s.errors.concat(new Error(\"We've reached a hard limit of 100 plugin runs\"))});if(o!==this.currentPlugin&&this.promisedPatches.length){const s=this.promisedPatches.map((s=>s.value));return Promise.all(s.map((s=>s.then(specmap_noop,specmap_noop)))).then((()=>this.dispatch()))}return function executePlugin(){s.currentPlugin=o;const i=s.getCurrentMutations(),a=s.mutations.length-1;try{if(o.isGenerator)for(const a of o(i,s.getLib()))updatePatches(a);else{updatePatches(o(i,s.getLib()))}}catch(s){console.error(s),updatePatches([Object.assign(Object.create(s),{plugin:o})])}finally{s.updatePluginHistory(o,{mutationIndex:a})}return s.dispatch()}();function updatePatches(i){i&&(i=Wo.fullyNormalizeArray(i),s.updatePatches(i,o))}}}const tu={refs:Xl,allOf:Ql,parameters:Zl,properties:eu};function makeFetchJSON(s,o={}){const{requestInterceptor:i,responseInterceptor:a}=o,u=s.withCredentials?\"include\":\"same-origin\";return o=>s({url:o,loadSpec:!0,requestInterceptor:i,responseInterceptor:a,headers:{Accept:Dl},credentials:u}).then((s=>s.body))}function isFile(s,o){return o||\"undefined\"==typeof navigator||(o=navigator),o&&\"ReactNative\"===o.product?!(!s||\"object\"!=typeof s||\"string\"!=typeof s.uri):\"undefined\"!=typeof File&&s instanceof File||(\"undefined\"!=typeof Blob&&s instanceof Blob||(!!ArrayBuffer.isView(s)||null!==s&&\"object\"==typeof s&&\"function\"==typeof s.pipe))}function isArrayOfFile(s,o){return Array.isArray(s)&&s.some((s=>isFile(s,o)))}class FileWithData extends File{constructor(s,o=\"\",i={}){super([s],o,i),this.data=s}valueOf(){return this.data}toString(){return this.valueOf()}}const isRfc3986Reserved=s=>\":/?#[]@!$&'()*+,;=\".indexOf(s)>-1,isRfc3986Unreserved=s=>/^[a-z0-9\\-._~]+$/i.test(s);function encodeCharacters(s,o=\"reserved\"){return[...s].map((s=>{if(isRfc3986Unreserved(s))return s;if(isRfc3986Reserved(s)&&\"unsafe\"===o)return s;const i=new TextEncoder;return Array.from(i.encode(s)).map((s=>`0${s.toString(16).toUpperCase()}`.slice(-2))).map((s=>`%${s}`)).join(\"\")})).join(\"\")}function stylize(s){const{value:o}=s;return Array.isArray(o)?function encodeArray({key:s,value:o,style:i,explode:a,escape:u}){if(\"simple\"===i)return o.map((s=>valueEncoder(s,u))).join(\",\");if(\"label\"===i)return`.${o.map((s=>valueEncoder(s,u))).join(\".\")}`;if(\"matrix\"===i)return o.map((s=>valueEncoder(s,u))).reduce(((o,i)=>!o||a?`${o||\"\"};${s}=${i}`:`${o},${i}`),\"\");if(\"form\"===i){const i=a?`&${s}=`:\",\";return o.map((s=>valueEncoder(s,u))).join(i)}if(\"spaceDelimited\"===i){const i=a?`${s}=`:\"\";return o.map((s=>valueEncoder(s,u))).join(` ${i}`)}if(\"pipeDelimited\"===i){const i=a?`${s}=`:\"\";return o.map((s=>valueEncoder(s,u))).join(`|${i}`)}return}(s):\"object\"==typeof o?function encodeObject({key:s,value:o,style:i,explode:a,escape:u}){const _=Object.keys(o);if(\"simple\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s},`:\"\"}${i}${a?\"=\":\",\"}${_}`}),\"\");if(\"label\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s}.`:\".\"}${i}${a?\"=\":\".\"}${_}`}),\"\");if(\"matrix\"===i&&a)return _.reduce(((s,i)=>`${s?`${s};`:\";\"}${i}=${valueEncoder(o[i],u)}`),\"\");if(\"matrix\"===i)return _.reduce(((i,a)=>{const _=valueEncoder(o[a],u);return`${i?`${i},`:`;${s}=`}${a},${_}`}),\"\");if(\"form\"===i)return _.reduce(((s,i)=>{const _=valueEncoder(o[i],u);return`${s?`${s}${a?\"&\":\",\"}`:\"\"}${i}${a?\"=\":\",\"}${_}`}),\"\");return}(s):function encodePrimitive({key:s,value:o,style:i,escape:a}){if(\"simple\"===i)return valueEncoder(o,a);if(\"label\"===i)return`.${valueEncoder(o,a)}`;if(\"matrix\"===i)return`;${s}=${valueEncoder(o,a)}`;if(\"form\"===i)return valueEncoder(o,a);if(\"deepObject\"===i)return valueEncoder(o,a);return}(s)}function valueEncoder(s,o=!1){return Array.isArray(s)||null!==s&&\"object\"==typeof s?s=JSON.stringify(s):\"number\"!=typeof s&&\"boolean\"!=typeof s||(s=String(s)),o&&\"string\"==typeof s&&s.length>0?encodeCharacters(s,o):null!=s?s:\"\"}const ru={form:\",\",spaceDelimited:\"%20\",pipeDelimited:\"|\"},nu={csv:\",\",ssv:\"%20\",tsv:\"%09\",pipes:\"|\"};function formatKeyValue(s,o,i=!1){const{collectionFormat:a,allowEmptyValue:u,serializationOption:_,encoding:w}=o,x=\"object\"!=typeof o||Array.isArray(o)?o:o.value,C=i?s=>s.toString():s=>encodeURIComponent(s),j=C(s);if(void 0===x&&u)return[[j,\"\"]];if(isFile(x)||isArrayOfFile(x))return[[j,x]];if(_)return formatKeyValueBySerializationOption(s,x,i,_);if(w){if([typeof w.style,typeof w.explode,typeof w.allowReserved].some((s=>\"undefined\"!==s))){const{style:o,explode:a,allowReserved:u}=w;return formatKeyValueBySerializationOption(s,x,i,{style:o,explode:a,allowReserved:u})}if(\"string\"==typeof w.contentType){if(w.contentType.startsWith(\"application/json\")){const s=C(\"string\"==typeof x?x:JSON.stringify(x));return[[j,new FileWithData(s,\"blob\",{type:w.contentType})]]}const s=C(String(x));return[[j,new FileWithData(s,\"blob\",{type:w.contentType})]]}return\"object\"!=typeof x?[[j,C(x)]]:Array.isArray(x)&&x.every((s=>\"object\"!=typeof s))?[[j,x.map(C).join(\",\")]]:[[j,C(JSON.stringify(x))]]}return\"object\"!=typeof x?[[j,C(x)]]:Array.isArray(x)?\"multi\"===a?[[j,x.map(C)]]:[[j,x.map(C).join(nu[a||\"csv\"])]]:[[j,\"\"]]}function formatKeyValueBySerializationOption(s,o,i,a){const u=a.style||\"form\",_=void 0===a.explode?\"form\"===u:a.explode,w=!i&&(a&&a.allowReserved?\"unsafe\":\"reserved\"),encodeFn=s=>valueEncoder(s,w),x=i?s=>s:s=>encodeFn(s);return\"object\"!=typeof o?[[x(s),encodeFn(o)]]:Array.isArray(o)?_?[[x(s),o.map(encodeFn)]]:[[x(s),o.map(encodeFn).join(ru[u])]]:\"deepObject\"===u?Object.keys(o).map((i=>[x(`${s}[${i}]`),encodeFn(o[i])])):_?Object.keys(o).map((s=>[x(s),encodeFn(o[s])])):[[x(s),Object.keys(o).map((s=>[`${x(s)},${encodeFn(o[s])}`])).join(\",\")]]}function encodeFormOrQuery(s){return((s,{encode:o=!0}={})=>{const buildNestedParams=(s,o,i)=>(Array.isArray(i)?i.reduce(((i,a)=>buildNestedParams(s,o,a)),s):i instanceof Date?s.append(o,i.toISOString()):\"object\"==typeof i?Object.entries(i).reduce(((i,[a,u])=>buildNestedParams(s,`${o}[${a}]`,u)),s):s.append(o,i),s),i=Object.entries(s).reduce(((s,[o,i])=>buildNestedParams(s,o,i)),new URLSearchParams),a=String(i);return o?a:decodeURIComponent(a)})(Object.keys(s).reduce(((o,i)=>{for(const[a,u]of formatKeyValue(i,s[i]))o[a]=u instanceof FileWithData?u.valueOf():u;return o}),{}),{encode:!1})}function serializeRequest(s={}){const{url:o=\"\",query:i,form:a}=s;if(a){const o=Object.keys(a).some((s=>{const{value:o}=a[s];return isFile(o)||isArrayOfFile(o)})),i=s.headers[\"content-type\"]||s.headers[\"Content-Type\"];if(o||/multipart\\/form-data/i.test(i)){const o=function request_buildFormData(s){return Object.entries(s).reduce(((s,[o,i])=>{for(const[a,u]of formatKeyValue(o,i,!0))if(Array.isArray(u))for(const o of u)if(ArrayBuffer.isView(o)){const i=new Blob([o]);s.append(a,i)}else s.append(a,o);else if(ArrayBuffer.isView(u)){const o=new Blob([u]);s.append(a,o)}else s.append(a,u);return s}),new FormData)}(s.form);s.formdata=o,s.body=o}else s.body=encodeFormOrQuery(a);delete s.form}if(i){const[a,u]=o.split(\"?\");let _=\"\";if(u){const s=new URLSearchParams(u);Object.keys(i).forEach((o=>s.delete(o))),_=String(s)}const w=((...s)=>{const o=s.filter((s=>s)).join(\"&\");return o?`?${o}`:\"\"})(_,encodeFormOrQuery(i));s.url=a+w,delete s.query}return s}function serializeHeaders(s={}){return\"function\"!=typeof s.entries?{}:Array.from(s.entries()).reduce(((s,[o,i])=>(s[o]=function serializeHeaderValue(s){return s.includes(\", \")?s.split(\", \"):s}(i),s)),{})}function serializeResponse(s,o,{loadSpec:i=!1}={}){const a={ok:s.ok,url:s.url||o,status:s.status,statusText:s.statusText,headers:serializeHeaders(s.headers)},u=a.headers[\"content-type\"],_=i||((s=\"\")=>/(json|xml|yaml|text)\\b/.test(s))(u);return(_?s.text:s.blob||s.buffer).call(s).then((s=>{if(a.text=s,a.data=s,_)try{const o=function parseBody(s,o){return o&&(0===o.indexOf(\"application/json\")||o.indexOf(\"+json\")>0)?JSON.parse(s):fn.load(s)}(s,u);a.body=o,a.obj=o}catch(s){a.parseError=s}return a}))}async function http_http(s,o={}){\"object\"==typeof s&&(s=(o=s).url),o.headers=o.headers||{},(o=serializeRequest(o)).headers&&Object.keys(o.headers).forEach((s=>{const i=o.headers[s];\"string\"==typeof i&&(o.headers[s]=i.replace(/\\n+/g,\" \"))})),o.requestInterceptor&&(o=await o.requestInterceptor(o)||o);const i=o.headers[\"content-type\"]||o.headers[\"Content-Type\"];let a;/multipart\\/form-data/i.test(i)&&(delete o.headers[\"content-type\"],delete o.headers[\"Content-Type\"]);try{a=await(o.userFetch||fetch)(o.url,o),a=await serializeResponse(a,s,o),o.responseInterceptor&&(a=await o.responseInterceptor(a)||a)}catch(s){if(!a)throw s;const o=new Error(a.statusText||`response status is ${a.status}`);throw o.status=a.status,o.statusCode=a.status,o.responseError=s,o}if(!a.ok){const s=new Error(a.statusText||`response status is ${a.status}`);throw s.status=a.status,s.statusCode=a.status,s.response=a,s}return a}const options_retrievalURI=s=>{var o,i;const{baseDoc:a,url:u}=s,_=null!==(o=null!=a?a:u)&&void 0!==o?o:\"\";return\"string\"==typeof(null===(i=globalThis.document)||void 0===i?void 0:i.baseURI)?String(new URL(_,globalThis.document.baseURI)):_},options_httpClient=s=>{const{fetch:o,http:i}=s;return o||i||http_http};async function resolveGenericStrategy(s){const{spec:o,mode:i,allowMetaPatches:a=!0,pathDiscriminator:u,modelPropertyMacro:_,parameterMacro:w,requestInterceptor:x,responseInterceptor:C,skipNormalization:j=!1,useCircularStructures:L,strategies:B}=s,$=options_retrievalURI(s),V=options_httpClient(s),U=B.find((s=>s.match(o)));return async function doResolve(s){$&&(tu.refs.docCache[$]=s);tu.refs.fetchJSON=makeFetchJSON(V,{requestInterceptor:x,responseInterceptor:C});const o=[tu.refs];\"function\"==typeof w&&o.push(tu.parameters);\"function\"==typeof _&&o.push(tu.properties);\"strict\"!==i&&o.push(tu.allOf);const B=await function mapSpec(s){return new SpecMap(s).dispatch()}({spec:s,context:{baseDoc:$},plugins:o,allowMetaPatches:a,pathDiscriminator:u,parameterMacro:w,modelPropertyMacro:_,useCircularStructures:L});j||(B.spec=U.normalize(B.spec));return B}(o)}const su=_curry2((function and(s,o){return s&&o}));const ou=_curry2((function both(s,o){return _isFunction(s)?function _both(){return s.apply(this,arguments)&&o.apply(this,arguments)}:hc(su)(s,o)}));const iu=na(null);const au=dc(iu);function isOfTypeObject_typeof(s){return isOfTypeObject_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},isOfTypeObject_typeof(s)}const cu=function isOfTypeObject(s){return\"object\"===isOfTypeObject_typeof(s)};const lu=$a(1,ou(au,cu));var uu=pipe(ra,Ic(\"Object\")),pu=pipe(ga,na(ga(Object))),hu=Qo(ou(Mc,pu),[\"constructor\"]),du=$a(1,(function(s){if(!lu(s)||!uu(s))return!1;var o=Object.getPrototypeOf(s);return!!iu(o)||hu(o)}));const fu=du,replace_special_chars_with_underscore=s=>s.replace(/\\W/gi,\"_\");function opId(s,o,i=\"\",{v2OperationIdCompatibilityMode:a}={}){if(!s||\"object\"!=typeof s)return null;return(s.operationId||\"\").replace(/\\s/g,\"\").length?replace_special_chars_with_underscore(s.operationId):function idFromPathMethod(s,o,{v2OperationIdCompatibilityMode:i}={}){if(i){let i=`${o.toLowerCase()}_${s}`.replace(/[\\s!@#$%^&*()_+=[{\\]};:<>|./?,\\\\'\"\"-]/g,\"_\");return i=i||`${s.substring(1)}_${o}`,i.replace(/((_){2,})/g,\"_\").replace(/^(_)*/g,\"\").replace(/([_])*$/g,\"\")}return`${o.toLowerCase()}${replace_special_chars_with_underscore(s)}`}(o,i,{v2OperationIdCompatibilityMode:a})}function normalize_normalize(s){const{spec:o}=s,{paths:i}=o,a={};if(!i||o.$$normalized)return s;for(const s in i){const u=i[s];if(null==u||![\"object\",\"function\"].includes(typeof u))continue;const _=u.parameters;for(const i in u){const w=u[i];if(null==w||![\"object\",\"function\"].includes(typeof w))continue;const x=opId(w,s,i);if(x){a[x]?a[x].push(w):a[x]=[w];const s=a[x];if(s.length>1)s.forEach(((s,o)=>{s.__originalOperationId=s.__originalOperationId||s.operationId,s.operationId=`${x}${o+1}`}));else if(void 0!==w.operationId){const o=s[0];o.__originalOperationId=o.__originalOperationId||w.operationId,o.operationId=x}}if(\"parameters\"!==i){const s=[],i={};for(const a in o)\"produces\"!==a&&\"consumes\"!==a&&\"security\"!==a||(i[a]=o[a],s.push(i));if(_&&(i.parameters=_,s.push(i)),s.length)for(const o of s)for(const s in o)if(Array.isArray(w[s])){if(\"parameters\"===s)for(const i of o[s]){w[s].some((s=>!(!fu(s)&&!fu(i))&&(s===i||[\"name\",\"$ref\",\"$$ref\"].some((o=>\"string\"==typeof s[o]&&\"string\"==typeof i[o]&&s[o]===i[o])))))||w[s].push(i)}}else w[s]=o[s]}}}return o.$$normalized=!0,s}const mu={name:\"generic\",match:()=>!0,normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>resolveGenericStrategy(s)},gu=mu;const isOpenAPI30=s=>{try{const{openapi:o}=s;return\"string\"==typeof o&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(o)}catch{return!1}},isOpenAPI31=s=>{try{const{openapi:o}=s;return\"string\"==typeof o&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(o)}catch{return!1}},isOpenAPI3=s=>isOpenAPI30(s)||isOpenAPI31(s),yu={name:\"openapi-2\",match:s=>(s=>{try{const{swagger:o}=s;return\"2.0\"===o}catch{return!1}})(s),normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>async function resolveOpenAPI2Strategy(s){return resolveGenericStrategy(s)}(s)},vu=yu;const bu={name:\"openapi-3-0\",match:s=>isOpenAPI30(s),normalize(s){const{spec:o}=normalize_normalize({spec:s});return o},resolve:async s=>async function resolveOpenAPI30Strategy(s){return resolveGenericStrategy(s)}(s)},_u=bu;var Su=__webpack_require__(34035);function _reduced(s){return s&&s[\"@@transducer/reduced\"]?s:{\"@@transducer/value\":s,\"@@transducer/reduced\":!0}}var Eu=function(){function XAll(s,o){this.xf=o,this.f=s,this.all=!0}return XAll.prototype[\"@@transducer/init\"]=_xfBase_init,XAll.prototype[\"@@transducer/result\"]=function(s){return this.all&&(s=this.xf[\"@@transducer/step\"](s,!0)),this.xf[\"@@transducer/result\"](s)},XAll.prototype[\"@@transducer/step\"]=function(s,o){return this.f(o)||(this.all=!1,s=_reduced(this.xf[\"@@transducer/step\"](s,!1))),s},XAll}();function _xall(s){return function(o){return new Eu(s,o)}}var wu=_curry2(_dispatchable([\"all\"],_xall,(function all(s,o){for(var i=0;i<o.length;){if(!s(o[i]))return!1;i+=1}return!0})));const xu=wu;class Annotation extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"annotation\"}get code(){return this.attributes.get(\"code\")}set code(s){this.attributes.set(\"code\",s)}}const ku=Annotation;class Comment extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"comment\"}}const Ou=Comment;class ParseResult extends Su.wE{constructor(s,o,i){super(s,o,i),this.element=\"parseResult\"}get api(){return this.children.filter((s=>s.classes.contains(\"api\"))).first}get results(){return this.children.filter((s=>s.classes.contains(\"result\")))}get result(){return this.results.first}get annotations(){return this.children.filter((s=>\"annotation\"===s.element))}get warnings(){return this.children.filter((s=>\"annotation\"===s.element&&s.classes.contains(\"warning\")))}get errors(){return this.children.filter((s=>\"annotation\"===s.element&&s.classes.contains(\"error\")))}get isEmpty(){return this.children.reject((s=>\"annotation\"===s.element)).isEmpty}replaceResult(s){const{result:o}=this;if(bc(o))return!1;const i=this.content.findIndex((s=>s===o));return-1!==i&&(this.content[i]=s,!0)}}const Cu=ParseResult;class SourceMap extends Su.wE{constructor(s,o,i){super(s,o,i),this.element=\"sourceMap\"}get positionStart(){return this.children.filter((s=>s.classes.contains(\"position\"))).get(0)}get positionEnd(){return this.children.filter((s=>s.classes.contains(\"position\"))).get(1)}set position(s){if(void 0===s)return;const o=new Su.wE([s.start.row,s.start.column,s.start.char]),i=new Su.wE([s.end.row,s.end.column,s.end.char]);o.classes.push(\"position\"),i.classes.push(\"position\"),this.push(o).push(i)}}const Au=SourceMap,hasMethod=(s,o)=>\"object\"==typeof o&&null!==o&&s in o&&\"function\"==typeof o[s],hasBasicElementProps=s=>\"object\"==typeof s&&null!=s&&\"_storedElement\"in s&&\"string\"==typeof s._storedElement&&\"_content\"in s,primitiveEq=(s,o)=>\"object\"==typeof o&&null!==o&&\"primitive\"in o&&(\"function\"==typeof o.primitive&&o.primitive()===s),hasClass=(s,o)=>\"object\"==typeof o&&null!==o&&\"classes\"in o&&(Array.isArray(o.classes)||o.classes instanceof Su.wE)&&o.classes.includes(s),isElementType=(s,o)=>\"object\"==typeof o&&null!==o&&\"element\"in o&&o.element===s,helpers=s=>s({hasMethod,hasBasicElementProps,primitiveEq,isElementType,hasClass}),ju=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Hg||s(i)&&o(void 0,i))),Iu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Om||s(i)&&o(\"string\",i))),Pu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.kT||s(i)&&o(\"number\",i))),Tu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.Os||s(i)&&o(\"null\",i))),Nu=helpers((({hasBasicElementProps:s,primitiveEq:o})=>i=>i instanceof Su.bd||s(i)&&o(\"boolean\",i))),Mu=helpers((({hasBasicElementProps:s,primitiveEq:o,hasMethod:i})=>a=>a instanceof Su.Sh||s(a)&&o(\"object\",a)&&i(\"keys\",a)&&i(\"values\",a)&&i(\"items\",a))),Ru=helpers((({hasBasicElementProps:s,primitiveEq:o,hasMethod:i})=>a=>a instanceof Su.wE&&!(a instanceof Su.Sh)||s(a)&&o(\"array\",a)&&i(\"push\",a)&&i(\"unshift\",a)&&i(\"map\",a)&&i(\"reduce\",a))),Du=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.Pr||s(a)&&o(\"member\",a)&&i(void 0,a))),Lu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.Ft||s(a)&&o(\"link\",a)&&i(void 0,a))),Fu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Su.sI||s(a)&&o(\"ref\",a)&&i(void 0,a))),Bu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof ku||s(a)&&o(\"annotation\",a)&&i(\"array\",a))),$u=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ou||s(a)&&o(\"comment\",a)&&i(\"string\",a))),qu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Cu||s(a)&&o(\"parseResult\",a)&&i(\"array\",a))),Vu=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Au||s(a)&&o(\"sourceMap\",a)&&i(\"array\",a))),isPrimitiveElement=s=>isElementType(\"object\",s)||isElementType(\"array\",s)||isElementType(\"boolean\",s)||isElementType(\"number\",s)||isElementType(\"string\",s)||isElementType(\"null\",s)||isElementType(\"member\",s),hasElementSourceMap=s=>Vu(s.meta.get(\"sourceMap\")),includesSymbols=(s,o)=>{if(0===s.length)return!0;const i=o.attributes.get(\"symbols\");return!!Ru(i)&&xu(sc(i.toValue()),s)},includesClasses=(s,o)=>0===s.length||xu(sc(o.classes.toValue()),s);const es_T=function(){return!0};const es_F=function(){return!1},getVisitFn=(s,o,i)=>{const a=s[o];if(null!=a){if(!i&&\"function\"==typeof a)return a;const s=i?a.leave:a.enter;if(\"function\"==typeof s)return s}else{const a=i?s.leave:s.enter;if(null!=a){if(\"function\"==typeof a)return a;const s=a[o];if(\"function\"==typeof s)return s}}return null},Uu={},getNodeType=s=>null==s?void 0:s.type,isNode=s=>\"string\"==typeof getNodeType(s),cloneNode=s=>Object.create(Object.getPrototypeOf(s),Object.getOwnPropertyDescriptors(s)),mergeAll=(s,{visitFnGetter:o=getVisitFn,nodeTypeGetter:i=getNodeType,breakSymbol:a=Uu,deleteNodeSymbol:u=null,skipVisitingNodeSymbol:_=!1,exposeEdits:w=!1}={})=>{const x=Symbol(\"skip\"),C=new Array(s.length).fill(x);return{enter(j,L,B,$,V,U){let z=j,Y=!1;const Z={...U,replaceWith(s,o){U.replaceWith(s,o),z=s}};for(let j=0;j<s.length;j+=1)if(C[j]===x){const x=o(s[j],i(z),!1);if(\"function\"==typeof x){const o=x.call(s[j],z,L,B,$,V,Z);if(\"function\"==typeof(null==o?void 0:o.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:s[j],visitFn:x});if(o===_)C[j]=z;else if(o===a)C[j]=a;else{if(o===u)return o;if(void 0!==o){if(!w)return o;z=o,Y=!0}}}}return Y?z:void 0},leave(u,w,j,L,B,$){let V=u;const U={...$,replaceWith(s,o){$.replaceWith(s,o),V=s}};for(let u=0;u<s.length;u+=1)if(C[u]===x){const x=o(s[u],i(V),!0);if(\"function\"==typeof x){const o=x.call(s[u],V,w,j,L,B,U);if(\"function\"==typeof(null==o?void 0:o.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:s[u],visitFn:x});if(o===a)C[u]=a;else if(void 0!==o&&o!==_)return o}}else C[u]===V&&(C[u]=x)}}};mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")]=(s,{visitFnGetter:o=getVisitFn,nodeTypeGetter:i=getNodeType,breakSymbol:a=Uu,deleteNodeSymbol:u=null,skipVisitingNodeSymbol:_=!1,exposeEdits:w=!1}={})=>{const x=Symbol(\"skip\"),C=new Array(s.length).fill(x);return{async enter(j,L,B,$,V,U){let z=j,Y=!1;const Z={...U,replaceWith(s,o){U.replaceWith(s,o),z=s}};for(let j=0;j<s.length;j+=1)if(C[j]===x){const x=o(s[j],i(z),!1);if(\"function\"==typeof x){const o=await x.call(s[j],z,L,B,$,V,Z);if(o===_)C[j]=z;else if(o===a)C[j]=a;else{if(o===u)return o;if(void 0!==o){if(!w)return o;z=o,Y=!0}}}}return Y?z:void 0},async leave(u,w,j,L,B,$){let V=u;const U={...$,replaceWith(s,o){$.replaceWith(s,o),V=s}};for(let u=0;u<s.length;u+=1)if(C[u]===x){const x=o(s[u],i(V),!0);if(\"function\"==typeof x){const o=await x.call(s[u],V,w,j,L,B,U);if(o===a)C[u]=a;else if(void 0!==o&&o!==_)return o}}else C[u]===V&&(C[u]=x)}}};const visit=(s,o,{keyMap:i=null,state:a={},breakSymbol:u=Uu,deleteNodeSymbol:_=null,skipVisitingNodeSymbol:w=!1,visitFnGetter:x=getVisitFn,nodeTypeGetter:C=getNodeType,nodePredicate:j=isNode,nodeCloneFn:L=cloneNode,detectCycles:B=!0}={})=>{const $=i||{};let V,U,z=Array.isArray(s),Y=[s],Z=-1,ee=[],ie=s;const ae=[],ce=[];do{Z+=1;const s=Z===Y.length;let i;const de=s&&0!==ee.length;if(s){if(i=0===ce.length?void 0:ae.pop(),ie=U,U=ce.pop(),de)if(z){ie=ie.slice();let s=0;for(const[o,i]of ee){const a=o-s;i===_?(ie.splice(a,1),s+=1):ie[a]=i}}else{ie=L(ie);for(const[s,o]of ee)ie[s]=o}Z=V.index,Y=V.keys,ee=V.edits,z=V.inArray,V=V.prev}else if(U!==_&&void 0!==U){if(i=z?Z:Y[Z],ie=U[i],ie===_||void 0===ie)continue;ae.push(i)}let fe;if(!Array.isArray(ie)){var le;if(!j(ie))throw new Go(`Invalid AST Node:  ${String(ie)}`,{node:ie});if(B&&ce.includes(ie)){ae.pop();continue}const _=x(o,C(ie),s);if(_){for(const[s,i]of Object.entries(a))o[s]=i;const u={replaceWith(o,a){\"function\"==typeof a?a(o,ie,i,U,ae,ce):U&&(U[i]=o),s||(ie=o)}};fe=_.call(o,ie,i,U,ae,ce,u)}if(\"function\"==typeof(null===(le=fe)||void 0===le?void 0:le.then))throw new Go(\"Async visitor not supported in sync mode\",{visitor:o,visitFn:_});if(fe===u)break;if(fe===w){if(!s){ae.pop();continue}}else if(void 0!==fe&&(ee.push([i,fe]),!s)){if(!j(fe)){ae.pop();continue}ie=fe}}var pe;if(void 0===fe&&de&&ee.push([i,ie]),!s)V={inArray:z,index:Z,keys:Y,edits:ee,prev:V},z=Array.isArray(ie),Y=z?ie:null!==(pe=$[C(ie)])&&void 0!==pe?pe:[],Z=-1,ee=[],U!==_&&void 0!==U&&ce.push(U),U=ie}while(void 0!==V);return 0!==ee.length?ee[ee.length-1][1]:s};visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,{keyMap:i=null,state:a={},breakSymbol:u=Uu,deleteNodeSymbol:_=null,skipVisitingNodeSymbol:w=!1,visitFnGetter:x=getVisitFn,nodeTypeGetter:C=getNodeType,nodePredicate:j=isNode,nodeCloneFn:L=cloneNode,detectCycles:B=!0}={})=>{const $=i||{};let V,U,z=Array.isArray(s),Y=[s],Z=-1,ee=[],ie=s;const ae=[],ce=[];do{Z+=1;const s=Z===Y.length;let i;const pe=s&&0!==ee.length;if(s){if(i=0===ce.length?void 0:ae.pop(),ie=U,U=ce.pop(),pe)if(z){ie=ie.slice();let s=0;for(const[o,i]of ee){const a=o-s;i===_?(ie.splice(a,1),s+=1):ie[a]=i}}else{ie=L(ie);for(const[s,o]of ee)ie[s]=o}Z=V.index,Y=V.keys,ee=V.edits,z=V.inArray,V=V.prev}else if(U!==_&&void 0!==U){if(i=z?Z:Y[Z],ie=U[i],ie===_||void 0===ie)continue;ae.push(i)}let de;if(!Array.isArray(ie)){if(!j(ie))throw new Go(`Invalid AST Node: ${String(ie)}`,{node:ie});if(B&&ce.includes(ie)){ae.pop();continue}const _=x(o,C(ie),s);if(_){for(const[s,i]of Object.entries(a))o[s]=i;const u={replaceWith(o,a){\"function\"==typeof a?a(o,ie,i,U,ae,ce):U&&(U[i]=o),s||(ie=o)}};de=await _.call(o,ie,i,U,ae,ce,u)}if(de===u)break;if(de===w){if(!s){ae.pop();continue}}else if(void 0!==de&&(ee.push([i,de]),!s)){if(!j(de)){ae.pop();continue}ie=de}}var le;if(void 0===de&&pe&&ee.push([i,ie]),!s)V={inArray:z,index:Z,keys:Y,edits:ee,prev:V},z=Array.isArray(ie),Y=z?ie:null!==(le=$[C(ie)])&&void 0!==le?le:[],Z=-1,ee=[],U!==_&&void 0!==U&&ce.push(U),U=ie}while(void 0!==V);return 0!==ee.length?ee[ee.length-1][1]:s};const zu=class CloneError extends Go{value;constructor(s,o){super(s,o),void 0!==o&&(this.value=o.value)}};const Wu=class DeepCloneError extends zu{};const Ju=class ShallowCloneError extends zu{},cloneDeep=(s,o={})=>{const{visited:i=new WeakMap}=o,a={...o,visited:i};if(i.has(s))return i.get(s);if(s instanceof Su.KeyValuePair){const{key:o,value:u}=s,_=ju(o)?cloneDeep(o,a):o,w=ju(u)?cloneDeep(u,a):u,x=new Su.KeyValuePair(_,w);return i.set(s,x),x}if(s instanceof Su.ot){const mapper=s=>cloneDeep(s,a),o=[...s].map(mapper),u=new Su.ot(o);return i.set(s,u),u}if(s instanceof Su.G6){const mapper=s=>cloneDeep(s,a),o=[...s].map(mapper),u=new Su.G6(o);return i.set(s,u),u}if(ju(s)){const o=cloneShallow(s);if(i.set(s,o),s.content)if(ju(s.content))o.content=cloneDeep(s.content,a);else if(s.content instanceof Su.KeyValuePair)o.content=cloneDeep(s.content,a);else if(Array.isArray(s.content)){const mapper=s=>cloneDeep(s,a);o.content=s.content.map(mapper)}else o.content=s.content;else o.content=s.content;return o}throw new Wu(\"Value provided to cloneDeep function couldn't be cloned\",{value:s})};cloneDeep.safe=s=>{try{return cloneDeep(s)}catch{return s}};const cloneShallowKeyValuePair=s=>{const{key:o,value:i}=s;return new Su.KeyValuePair(o,i)},cloneShallowElement=s=>{const o=new s.constructor;if(o.element=s.element,s.meta.length>0&&(o._meta=cloneDeep(s.meta)),s.attributes.length>0&&(o._attributes=cloneDeep(s.attributes)),ju(s.content)){const i=s.content;o.content=cloneShallowElement(i)}else Array.isArray(s.content)?o.content=[...s.content]:s.content instanceof Su.KeyValuePair?o.content=cloneShallowKeyValuePair(s.content):o.content=s.content;return o},cloneShallow=s=>{if(s instanceof Su.KeyValuePair)return cloneShallowKeyValuePair(s);if(s instanceof Su.ot)return(s=>{const o=[...s];return new Su.ot(o)})(s);if(s instanceof Su.G6)return(s=>{const o=[...s];return new Su.G6(o)})(s);if(ju(s))return cloneShallowElement(s);throw new Ju(\"Value provided to cloneShallow function couldn't be cloned\",{value:s})};cloneShallow.safe=s=>{try{return cloneShallow(s)}catch{return s}};const visitor_getNodeType=s=>Mu(s)?\"ObjectElement\":Ru(s)?\"ArrayElement\":Du(s)?\"MemberElement\":Iu(s)?\"StringElement\":Nu(s)?\"BooleanElement\":Pu(s)?\"NumberElement\":Tu(s)?\"NullElement\":Lu(s)?\"LinkElement\":Fu(s)?\"RefElement\":void 0,visitor_cloneNode=s=>ju(s)?cloneShallow(s):cloneNode(s),Hu=pipe(visitor_getNodeType,Jc),Ku={ObjectElement:[\"content\"],ArrayElement:[\"content\"],MemberElement:[\"key\",\"value\"],StringElement:[],BooleanElement:[],NumberElement:[],NullElement:[],RefElement:[],LinkElement:[],Annotation:[],Comment:[],ParseResultElement:[\"content\"],SourceMap:[\"content\"]};class PredicateVisitor{result;predicate;returnOnTrue;returnOnFalse;constructor({predicate:s=es_F,returnOnTrue:o,returnOnFalse:i}={}){this.result=[],this.predicate=s,this.returnOnTrue=o,this.returnOnFalse=i}enter(s){return this.predicate(s)?(this.result.push(s),this.returnOnTrue):this.returnOnFalse}}const visitor_visit=(s,o,{keyMap:i=Ku,...a}={})=>visit(s,o,{keyMap:i,nodeTypeGetter:visitor_getNodeType,nodePredicate:Hu,nodeCloneFn:visitor_cloneNode,...a});visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,{keyMap:i=Ku,...a}={})=>visit[Symbol.for(\"nodejs.util.promisify.custom\")](s,o,{keyMap:i,nodeTypeGetter:visitor_getNodeType,nodePredicate:Hu,nodeCloneFn:visitor_cloneNode,...a});const nodeTypeGetter=s=>\"string\"==typeof(null==s?void 0:s.type)?s.type:visitor_getNodeType(s),Gu={EphemeralObject:[\"content\"],EphemeralArray:[\"content\"],...Ku},value_visitor_visit=(s,o,{keyMap:i=Gu,...a}={})=>visitor_visit(s,o,{keyMap:i,nodeTypeGetter,nodePredicate:es_T,detectCycles:!1,deleteNodeSymbol:Symbol.for(\"delete-node\"),skipVisitingNodeSymbol:Symbol.for(\"skip-visiting-node\"),...a});value_visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,{keyMap:o=Gu,...i}={})=>visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")](s,visitor,{keyMap:o,nodeTypeGetter,nodePredicate:es_T,detectCycles:!1,deleteNodeSymbol:Symbol.for(\"delete-node\"),skipVisitingNodeSymbol:Symbol.for(\"skip-visiting-node\"),...i});const Yu=class EphemeralArray{type=\"EphemeralArray\";content=[];reference=void 0;constructor(s){this.content=s,this.reference=[]}toReference(){return this.reference}toArray(){return this.reference.push(...this.content),this.reference}};const Xu=class EphemeralObject{type=\"EphemeralObject\";content=[];reference=void 0;constructor(s){this.content=s,this.reference={}}toReference(){return this.reference}toObject(){return Object.assign(this.reference,Object.fromEntries(this.content))}};class Visitor{ObjectElement={enter:s=>{if(this.references.has(s))return this.references.get(s).toReference();const o=new Xu(s.content);return this.references.set(s,o),o}};EphemeralObject={leave:s=>s.toObject()};MemberElement={enter:s=>[s.key,s.value]};ArrayElement={enter:s=>{if(this.references.has(s))return this.references.get(s).toReference();const o=new Yu(s.content);return this.references.set(s,o),o}};EphemeralArray={leave:s=>s.toArray()};references=new WeakMap;BooleanElement(s){return s.toValue()}NumberElement(s){return s.toValue()}StringElement(s){return s.toValue()}NullElement(){return null}RefElement(s,...o){var i;const a=o[3];return\"EphemeralObject\"===(null===(i=a[a.length-1])||void 0===i?void 0:i.type)?Symbol.for(\"delete-node\"):String(s.toValue())}LinkElement(s){return Iu(s.href)?s.href.toValue():\"\"}}const serializers_value=s=>ju(s)?Iu(s)||Pu(s)||Nu(s)||Tu(s)?s.toValue():value_visitor_visit(s,new Visitor):s;const Qu=_curry3((function mergeWithKey(s,o,i){var a,u={};for(a in i=i||{},o=o||{})_has(a,o)&&(u[a]=_has(a,i)?s(a,o[a],i[a]):o[a]);for(a in i)_has(a,i)&&!_has(a,u)&&(u[a]=i[a]);return u}));const Zu=_curry3((function mergeDeepWithKey(s,o,i){return Qu((function(o,i,a){return _isObject(i)&&_isObject(a)?mergeDeepWithKey(s,i,a):s(o,i,a)}),o,i)}));const ep=_curry2((function mergeDeepRight(s,o){return Zu((function(s,o,i){return i}),s,o)}));const tp=_curry2(_path);const rp=ja(0,-1);const np=_curry2((function apply(s,o){return s.apply(this,o)}));const sp=dc(Mc);var op=_curry1((function empty(s){return null!=s&&\"function\"==typeof s[\"fantasy-land/empty\"]?s[\"fantasy-land/empty\"]():null!=s&&null!=s.constructor&&\"function\"==typeof s.constructor[\"fantasy-land/empty\"]?s.constructor[\"fantasy-land/empty\"]():null!=s&&\"function\"==typeof s.empty?s.empty():null!=s&&null!=s.constructor&&\"function\"==typeof s.constructor.empty?s.constructor.empty():ca(s)?[]:_isString(s)?\"\":_isObject(s)?{}:Ei(s)?function(){return arguments}():function _isTypedArray(s){var o=Object.prototype.toString.call(s);return\"[object Uint8ClampedArray]\"===o||\"[object Int8Array]\"===o||\"[object Uint8Array]\"===o||\"[object Int16Array]\"===o||\"[object Uint16Array]\"===o||\"[object Int32Array]\"===o||\"[object Uint32Array]\"===o||\"[object Float32Array]\"===o||\"[object Float64Array]\"===o||\"[object BigInt64Array]\"===o||\"[object BigUint64Array]\"===o}(s)?s.constructor.from(\"\"):void 0}));const ip=op;const cp=_curry1((function isEmpty(s){return null!=s&&na(s,ip(s))}));const lp=$a(1,Mc(Array.isArray)?Array.isArray:pipe(ra,Ic(\"Array\")));const up=ou(lp,cp);var pp=$a(3,(function(s,o,i){var a=tp(s,i),u=tp(rp(s),i);if(!sp(a)&&!up(s)){var _=Ea(a,u);return np(_,o)}}));const hp=pp;class Namespace extends Su.g${constructor(){super(),this.register(\"annotation\",ku),this.register(\"comment\",Ou),this.register(\"parseResult\",Cu),this.register(\"sourceMap\",Au)}}const dp=new Namespace,createNamespace=s=>{const o=new Namespace;return fu(s)&&o.use(s),o},fp=dp,toolbox=()=>({predicates:{...ie},namespace:fp}),mp={toolboxCreator:toolbox,visitorOptions:{nodeTypeGetter:visitor_getNodeType,exposeEdits:!0}},dispatchPluginsSync=(s,o,i={})=>{if(0===o.length)return s;const a=ep(mp,i),{toolboxCreator:u,visitorOptions:_}=a,w=u(),x=o.map((s=>s(w))),C=mergeAll(x.map(La({},\"visitor\")),{..._});x.forEach(hp([\"pre\"],[]));const j=visitor_visit(s,C,_);return x.forEach(hp([\"post\"],[])),j};dispatchPluginsSync[Symbol.for(\"nodejs.util.promisify.custom\")]=async(s,o,i={})=>{if(0===o.length)return s;const a=ep(mp,i),{toolboxCreator:u,visitorOptions:_}=a,w=u(),x=o.map((s=>s(w))),C=mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")],j=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],L=C(x.map(La({},\"visitor\")),{..._});await Promise.allSettled(x.map(hp([\"pre\"],[])));const B=await j(s,L,_);return await Promise.allSettled(x.map(hp([\"post\"],[]))),B};const refract=(s,{Type:o,plugins:i=[]})=>{const a=new o(s);return ju(s)&&(s.meta.length>0&&(a.meta=cloneDeep(s.meta)),s.attributes.length>0&&(a.attributes=cloneDeep(s.attributes))),dispatchPluginsSync(a,i,{toolboxCreator:toolbox,visitorOptions:{nodeTypeGetter:visitor_getNodeType}})},createRefractor=s=>(o,i={})=>refract(o,{...i,Type:s});Su.Sh.refract=createRefractor(Su.Sh),Su.wE.refract=createRefractor(Su.wE),Su.Om.refract=createRefractor(Su.Om),Su.bd.refract=createRefractor(Su.bd),Su.Os.refract=createRefractor(Su.Os),Su.kT.refract=createRefractor(Su.kT),Su.Ft.refract=createRefractor(Su.Ft),Su.sI.refract=createRefractor(Su.sI),ku.refract=createRefractor(ku),Ou.refract=createRefractor(Ou),Cu.refract=createRefractor(Cu),Au.refract=createRefractor(Au);const computeEdges=(s,o=new WeakMap)=>(Du(s)?(o.set(s.key,s),computeEdges(s.key,o),o.set(s.value,s),computeEdges(s.value,o)):s.children.forEach((i=>{o.set(i,s),computeEdges(i,o)})),o);const gp=class Transcluder_Transcluder{element;edges;constructor({element:s}){this.element=s}transclude(s,o){var i;if(s===this.element)return o;if(s===o)return this.element;this.edges=null!==(i=this.edges)&&void 0!==i?i:computeEdges(this.element);const a=this.edges.get(s);return bc(a)?void 0:(Mu(a)?((s,o,i)=>{const a=i.get(s);Mu(a)&&(a.content=a.map(((u,_,w)=>w===s?(i.delete(s),i.set(o,a),o):w)))})(s,o,this.edges):Ru(a)?((s,o,i)=>{const a=i.get(s);Ru(a)&&(a.content=a.map((u=>u===s?(i.delete(s),i.set(o,a),o):u)))})(s,o,this.edges):Du(a)&&((s,o,i)=>{const a=i.get(s);Du(a)&&(a.key===s&&(a.key=o,i.delete(s),i.set(o,a)),a.value===s&&(a.value=o,i.delete(s),i.set(o,a)))})(s,o,this.edges),this.element)}},fromURIReference=s=>{const o=s.indexOf(\"#\");return(s=>{try{const o=s.startsWith(\"#\")?s.slice(1):s;return decodeURIComponent(o)}catch{return s}})(-1===o?\"#\":s.substring(o))},yp=function fnparser(){const s=Ep,o=Sp,i=this,a=\"parser.js: Parser(): \";i.ast=void 0,i.stats=void 0,i.trace=void 0,i.callbacks=[];let u,_,w,x,C,j,L,B=0,$=0,V=0,U=0,z=0,Y=new function systemData(){this.state=s.ACTIVE,this.phraseLength=0,this.refresh=()=>{this.state=s.ACTIVE,this.phraseLength=0}};i.parse=(Z,ee,ie,ae)=>{const ce=`${a}parse(): `;B=0,$=0,V=0,U=0,z=0,u=void 0,_=void 0,w=void 0,x=void 0,Y.refresh(),C=void 0,j=void 0,L=void 0,x=o.stringToChars(ie),u=Z.rules,_=Z.udts;const le=ee.toLowerCase();let pe;for(const s in u)if(u.hasOwnProperty(s)&&le===u[s].lower){pe=u[s].index;break}if(void 0===pe)throw new Error(`${ce}start rule name '${startRule}' not recognized`);(()=>{const s=`${a}initializeCallbacks(): `;let o,w;for(C=[],j=[],o=0;o<u.length;o+=1)C[o]=void 0;for(o=0;o<_.length;o+=1)j[o]=void 0;const x=[];for(o=0;o<u.length;o+=1)x.push(u[o].lower);for(o=0;o<_.length;o+=1)x.push(_[o].lower);for(const a in i.callbacks)if(i.callbacks.hasOwnProperty(a)){if(o=x.indexOf(a.toLowerCase()),o<0)throw new Error(`${s}syntax callback '${a}' not a rule or udt name`);if(w=i.callbacks[a]?i.callbacks[a]:void 0,\"function\"!=typeof w&&void 0!==w)throw new Error(`${s}syntax callback[${a}] must be function reference or falsy)`);o<u.length?C[o]=w:j[o-u.length]=w}})(),i.trace&&i.trace.init(u,_,x),i.stats&&i.stats.init(u,_),i.ast&&i.ast.init(u,_,x),L=ae,w=[{type:s.RNM,index:pe}],opExecute(0,0),w=void 0;let de=!1;switch(Y.state){case s.ACTIVE:throw new Error(`${ce}final state should never be 'ACTIVE'`);case s.NOMATCH:de=!1;break;case s.EMPTY:case s.MATCH:de=Y.phraseLength===x.length;break;default:throw new Error(\"unrecognized state\")}return{success:de,state:Y.state,stateName:s.idName(Y.state),length:x.length,matched:Y.phraseLength,maxMatched:z,maxTreeDepth:V,nodeHits:U}};const validateRnmCallbackResult=(o,i,u,_)=>{if(i.phraseLength>u){let s=`${a}opRNM(${o.name}): callback function error: `;throw s+=`sysData.phraseLength: ${i.phraseLength}`,s+=` must be <= remaining chars: ${u}`,new Error(s)}switch(i.state){case s.ACTIVE:if(!_)throw new Error(`${a}opRNM(${o.name}): callback function return error. ACTIVE state not allowed.`);break;case s.EMPTY:i.phraseLength=0;break;case s.MATCH:0===i.phraseLength&&(i.state=s.EMPTY);break;case s.NOMATCH:i.phraseLength=0;break;default:throw new Error(`${a}opRNM(${o.name}): callback function return error. Unrecognized return state: ${i.state}`)}},opUDT=(o,C)=>{let $,V,U;const z=w[o],Z=_[z.index];Y.UdtIndex=Z.index,B||(U=i.ast&&i.ast.udtDefined(z.index),U&&(V=u.length+z.index,$=i.ast.getLength(),i.ast.down(V,Z.name)));const ee=x.length-C;j[z.index](Y,x,C,L),((o,i,u)=>{if(i.phraseLength>u){let s=`${a}opUDT(${o.name}): callback function error: `;throw s+=`sysData.phraseLength: ${i.phraseLength}`,s+=` must be <= remaining chars: ${u}`,new Error(s)}switch(i.state){case s.ACTIVE:throw new Error(`${a}opUDT(${o.name}) ACTIVE state return not allowed.`);case s.EMPTY:if(!o.empty)throw new Error(`${a}opUDT(${o.name}) may not return EMPTY.`);i.phraseLength=0;break;case s.MATCH:if(0===i.phraseLength){if(!o.empty)throw new Error(`${a}opUDT(${o.name}) may not return EMPTY.`);i.state=s.EMPTY}break;case s.NOMATCH:i.phraseLength=0;break;default:throw new Error(`${a}opUDT(${o.name}): callback function return error. Unrecognized return state: ${i.state}`)}})(Z,Y,ee),B||U&&(Y.state===s.NOMATCH?i.ast.setLength($):i.ast.up(V,Z.name,C,Y.phraseLength))},opExecute=(o,_)=>{const j=`${a}opExecute(): `,Z=w[o];switch(U+=1,$>V&&(V=$),$+=1,Y.refresh(),i.trace&&i.trace.down(Z,_),Z.type){case s.ALT:((o,i)=>{const a=w[o];for(let o=0;o<a.children.length&&(opExecute(a.children[o],i),Y.state===s.NOMATCH);o+=1);})(o,_);break;case s.CAT:((o,a)=>{let u,_,x,C;const j=w[o];i.ast&&(_=i.ast.getLength()),u=!0,x=a,C=0;for(let o=0;o<j.children.length;o+=1){if(opExecute(j.children[o],x),Y.state===s.NOMATCH){u=!1;break}x+=Y.phraseLength,C+=Y.phraseLength}u?(Y.state=0===C?s.EMPTY:s.MATCH,Y.phraseLength=C):(Y.state=s.NOMATCH,Y.phraseLength=0,i.ast&&i.ast.setLength(_))})(o,_);break;case s.REP:((o,a)=>{let u,_,C,j;const L=w[o];if(0===L.max)return Y.state=s.EMPTY,void(Y.phraseLength=0);for(_=a,C=0,j=0,i.ast&&(u=i.ast.getLength());!(_>=x.length)&&(opExecute(o+1,_),Y.state!==s.NOMATCH)&&Y.state!==s.EMPTY&&(j+=1,C+=Y.phraseLength,_+=Y.phraseLength,j!==L.max););Y.state===s.EMPTY||j>=L.min?(Y.state=0===C?s.EMPTY:s.MATCH,Y.phraseLength=C):(Y.state=s.NOMATCH,Y.phraseLength=0,i.ast&&i.ast.setLength(u))})(o,_);break;case s.RNM:((o,a)=>{let _,j,$;const V=w[o],U=u[V.index],z=C[U.index];if(B||(j=i.ast&&i.ast.ruleDefined(V.index),j&&(_=i.ast.getLength(),i.ast.down(V.index,u[V.index].name))),z){const o=x.length-a;z(Y,x,a,L),validateRnmCallbackResult(U,Y,o,!0),Y.state===s.ACTIVE&&($=w,w=U.opcodes,opExecute(0,a),w=$,z(Y,x,a,L),validateRnmCallbackResult(U,Y,o,!1))}else $=w,w=U.opcodes,opExecute(0,a,Y),w=$;B||j&&(Y.state===s.NOMATCH?i.ast.setLength(_):i.ast.up(V.index,U.name,a,Y.phraseLength))})(o,_);break;case s.TRG:((o,i)=>{const a=w[o];Y.state=s.NOMATCH,i<x.length&&a.min<=x[i]&&x[i]<=a.max&&(Y.state=s.MATCH,Y.phraseLength=1)})(o,_);break;case s.TBS:((o,i)=>{const a=w[o],u=a.string.length;if(Y.state=s.NOMATCH,i+u<=x.length){for(let s=0;s<u;s+=1)if(x[i+s]!==a.string[s])return;Y.state=s.MATCH,Y.phraseLength=u}})(o,_);break;case s.TLS:((o,i)=>{let a;const u=w[o];Y.state=s.NOMATCH;const _=u.string.length;if(0!==_){if(i+_<=x.length){for(let s=0;s<_;s+=1)if(a=x[i+s],a>=65&&a<=90&&(a+=32),a!==u.string[s])return;Y.state=s.MATCH,Y.phraseLength=_}}else Y.state=s.EMPTY})(o,_);break;case s.UDT:opUDT(o,_);break;case s.AND:((o,i)=>{switch(B+=1,opExecute(o+1,i),B-=1,Y.phraseLength=0,Y.state){case s.EMPTY:case s.MATCH:Y.state=s.EMPTY;break;case s.NOMATCH:Y.state=s.NOMATCH;break;default:throw new Error(`opAND: invalid state ${Y.state}`)}})(o,_);break;case s.NOT:((o,i)=>{switch(B+=1,opExecute(o+1,i),B-=1,Y.phraseLength=0,Y.state){case s.EMPTY:case s.MATCH:Y.state=s.NOMATCH;break;case s.NOMATCH:Y.state=s.EMPTY;break;default:throw new Error(`opNOT: invalid state ${Y.state}`)}})(o,_);break;default:throw new Error(`${j}unrecognized operator`)}B||_+Y.phraseLength>z&&(z=_+Y.phraseLength),i.stats&&i.stats.collect(Z,Y),i.trace&&i.trace.up(Z,Y.state,_,Y.phraseLength),$-=1}},vp=function fnast(){const s=Ep,o=Sp,i=this;let a,u,_,w=0;const x=[],C=[],j=[];function indent(s){let o=\"\";for(;s-- >0;)o+=\" \";return o}i.callbacks=[],i.init=(s,o,L)=>{let B;C.length=0,j.length=0,w=0,a=s,u=o,_=L;const $=[];for(B=0;B<a.length;B+=1)$.push(a[B].lower);for(B=0;B<u.length;B+=1)$.push(u[B].lower);for(w=a.length+u.length,B=0;B<w;B+=1)x[B]=void 0;for(const s in i.callbacks)if(i.callbacks.hasOwnProperty(s)){const o=s.toLowerCase();if(B=$.indexOf(o),B<0)throw new Error(`parser.js: Ast()): init: node '${s}' not a rule or udt name`);x[B]=i.callbacks[s]}},i.ruleDefined=s=>!!x[s],i.udtDefined=s=>!!x[a.length+s],i.down=(o,i)=>{const a=j.length;return C.push(a),j.push({name:i,thisIndex:a,thatIndex:void 0,state:s.SEM_PRE,callbackIndex:o,phraseIndex:void 0,phraseLength:void 0,stack:C.length}),a},i.up=(o,i,a,u)=>{const _=j.length,w=C.pop();return j.push({name:i,thisIndex:_,thatIndex:w,state:s.SEM_POST,callbackIndex:o,phraseIndex:a,phraseLength:u,stack:C.length}),j[w].thatIndex=_,j[w].phraseIndex=a,j[w].phraseLength=u,_},i.translate=o=>{let i,a;for(let u=0;u<j.length;u+=1)a=j[u],i=x[a.callbackIndex],i&&(a.state===s.SEM_PRE?i(s.SEM_PRE,_,a.phraseIndex,a.phraseLength,o):i&&i(s.SEM_POST,_,a.phraseIndex,a.phraseLength,o))},i.setLength=s=>{j.length=s,C.length=s>0?j[s-1].stack:0},i.getLength=()=>j.length,i.toXml=()=>{let i=\"\",a=0;return i+='<?xml version=\"1.0\" encoding=\"utf-8\"?>\\n',i+=`<root nodes=\"${j.length/2}\" characters=\"${_.length}\">\\n`,i+=\"\\x3c!-- input string --\\x3e\\n\",i+=indent(a+2),i+=o.charsToString(_),i+=\"\\n\",j.forEach((u=>{u.state===s.SEM_PRE?(a+=1,i+=indent(a),i+=`<node name=\"${u.name}\" index=\"${u.phraseIndex}\" length=\"${u.phraseLength}\">\\n`,i+=indent(a+2),i+=o.charsToString(_,u.phraseIndex,u.phraseLength),i+=\"\\n\"):(i+=indent(a),i+=`</node>\\x3c!-- name=\"${u.name}\" --\\x3e\\n`,a-=1)})),i+=\"</root>\\n\",i}},bp=function fntrace(){const s=Ep,o=Sp,i=\"parser.js: Trace(): \";let a,u,_,w=\"\",x=0;const C=this,indent=s=>{let o=\"\",i=0;if(s>=0)for(;s--;)i+=1,5===i?(o+=\"|\",i=0):o+=\".\";return o};C.init=(s,o,i)=>{u=s,_=o,a=i};const opName=a=>{let w;switch(a.type){case s.ALT:w=\"ALT\";break;case s.CAT:w=\"CAT\";break;case s.REP:w=a.max===1/0?`REP(${a.min},inf)`:`REP(${a.min},${a.max})`;break;case s.RNM:w=`RNM(${u[a.index].name})`;break;case s.TRG:w=`TRG(${a.min},${a.max})`;break;case s.TBS:w=a.string.length>6?`TBS(${o.charsToString(a.string,0,3)}...)`:`TBS(${o.charsToString(a.string,0,6)})`;break;case s.TLS:w=a.string.length>6?`TLS(${o.charsToString(a.string,0,3)}...)`:`TLS(${o.charsToString(a.string,0,6)})`;break;case s.UDT:w=`UDT(${_[a.index].name})`;break;case s.AND:w=\"AND\";break;case s.NOT:w=\"NOT\";break;default:throw new Error(`${i}Trace: opName: unrecognized opcode`)}return w};C.down=(s,i)=>{const u=indent(x),_=Math.min(100,a.length-i);let C=o.charsToString(a,i,_);_<a.length-i&&(C+=\"...\"),C=`${u}|-|[${opName(s)}]${C}\\n`,w+=C,x+=1},C.up=(u,_,C,j)=>{const L=`${i}trace.up: `;x-=1;const B=indent(x);let $,V,U;switch(_){case s.EMPTY:U=\"|E|\",V=\"''\";break;case s.MATCH:U=\"|M|\",$=Math.min(100,j),V=$<j?`'${o.charsToString(a,C,$)}...'`:`'${o.charsToString(a,C,$)}'`;break;case s.NOMATCH:U=\"|N|\",V=\"\";break;default:throw new Error(`${L} unrecognized state`)}V=`${B}${U}[${opName(u)}]${V}\\n`,w+=V},C.displayTrace=()=>w},_p=function fnstats(){const s=Ep;let o,i,a;const u=[],_=[],w=[];this.init=(s,a)=>{o=s,i=a,clear()},this.collect=(o,i)=>{incStat(a,i.state,i.phraseLength),incStat(u[o.type],i.state,i.phraseLength),o.type===s.RNM&&incStat(_[o.index],i.state,i.phraseLength),o.type===s.UDT&&incStat(w[o.index],i.state,i.phraseLength)},this.displayStats=()=>{let o=\"\";const i={match:0,empty:0,nomatch:0,total:0},displayRow=(s,o,a,u,_)=>{i.match+=o,i.empty+=a,i.nomatch+=u,i.total+=_;return`${s} | ${normalize(o)} | ${normalize(a)} | ${normalize(u)} | ${normalize(_)} |\\n`};return o+=\"          OPERATOR STATS\\n\",o+=\"      |   MATCH |   EMPTY | NOMATCH |   TOTAL |\\n\",o+=displayRow(\"  ALT\",u[s.ALT].match,u[s.ALT].empty,u[s.ALT].nomatch,u[s.ALT].total),o+=displayRow(\"  CAT\",u[s.CAT].match,u[s.CAT].empty,u[s.CAT].nomatch,u[s.CAT].total),o+=displayRow(\"  REP\",u[s.REP].match,u[s.REP].empty,u[s.REP].nomatch,u[s.REP].total),o+=displayRow(\"  RNM\",u[s.RNM].match,u[s.RNM].empty,u[s.RNM].nomatch,u[s.RNM].total),o+=displayRow(\"  TRG\",u[s.TRG].match,u[s.TRG].empty,u[s.TRG].nomatch,u[s.TRG].total),o+=displayRow(\"  TBS\",u[s.TBS].match,u[s.TBS].empty,u[s.TBS].nomatch,u[s.TBS].total),o+=displayRow(\"  TLS\",u[s.TLS].match,u[s.TLS].empty,u[s.TLS].nomatch,u[s.TLS].total),o+=displayRow(\"  UDT\",u[s.UDT].match,u[s.UDT].empty,u[s.UDT].nomatch,u[s.UDT].total),o+=displayRow(\"  AND\",u[s.AND].match,u[s.AND].empty,u[s.AND].nomatch,u[s.AND].total),o+=displayRow(\"  NOT\",u[s.NOT].match,u[s.NOT].empty,u[s.NOT].nomatch,u[s.NOT].total),o+=displayRow(\"TOTAL\",i.match,i.empty,i.nomatch,i.total),o},this.displayHits=s=>{let o=\"\";const displayRow=(s,o,i,u,_)=>{a.match+=s,a.empty+=o,a.nomatch+=i,a.total+=u;return`| ${normalize(s)} | ${normalize(o)} | ${normalize(i)} | ${normalize(u)} | ${_}\\n`};\"string\"==typeof s&&\"a\"===s.toLowerCase()[0]?(_.sort(sortAlpha),w.sort(sortAlpha),o+=\"    RULES/UDTS ALPHABETICALLY\\n\"):\"string\"==typeof s&&\"i\"===s.toLowerCase()[0]?(_.sort(sortIndex),w.sort(sortIndex),o+=\"    RULES/UDTS BY INDEX\\n\"):(_.sort(sortHits),w.sort(sortHits),o+=\"    RULES/UDTS BY HIT COUNT\\n\"),o+=\"|   MATCH |   EMPTY | NOMATCH |   TOTAL | NAME\\n\";for(let s=0;s<_.length;s+=1){let i=_[s];i.total&&(o+=displayRow(i.match,i.empty,i.nomatch,i.total,i.name))}for(let s=0;s<w.length;s+=1){let i=w[s];i.total&&(o+=displayRow(i.match,i.empty,i.nomatch,i.total,i.name))}return o};const normalize=s=>s<10?`      ${s}`:s<100?`     ${s}`:s<1e3?`    ${s}`:s<1e4?`   ${s}`:s<1e5?`  ${s}`:s<1e6?` ${s}`:`${s}`,sortAlpha=(s,o)=>s.lower<o.lower?-1:s.lower>o.lower?1:0,sortHits=(s,o)=>s.total<o.total?1:s.total>o.total?-1:sortAlpha(s,o),sortIndex=(s,o)=>s.index<o.index?-1:s.index>o.index?1:0,x=function fnempty(){this.empty=0,this.match=0,this.nomatch=0,this.total=0},clear=()=>{u.length=0,a=new x,u[s.ALT]=new x,u[s.CAT]=new x,u[s.REP]=new x,u[s.RNM]=new x,u[s.TRG]=new x,u[s.TBS]=new x,u[s.TLS]=new x,u[s.UDT]=new x,u[s.AND]=new x,u[s.NOT]=new x,_.length=0;for(let s=0;s<o.length;s+=1)_.push({empty:0,match:0,nomatch:0,total:0,name:o[s].name,lower:o[s].lower,index:o[s].index});if(i.length>0){w.length=0;for(let s=0;s<i.length;s+=1)w.push({empty:0,match:0,nomatch:0,total:0,name:i[s].name,lower:i[s].lower,index:i[s].index})}},incStat=(o,i)=>{switch(o.total+=1,i){case s.EMPTY:o.empty+=1;break;case s.MATCH:o.match+=1;break;case s.NOMATCH:o.nomatch+=1;break;default:throw new Error(`parser.js: Stats(): collect(): incStat(): unrecognized state: ${i}`)}}},Sp={stringToChars:s=>[...s].map((s=>s.codePointAt(0))),charsToString:(s,o,i)=>{let a=s;for(;!(void 0===o||o<0);){if(void 0===i){a=s.slice(o);break}if(i<=0)return\"\";a=s.slice(o,o+i);break}return String.fromCodePoint(...a)}},Ep={ALT:1,CAT:2,REP:3,RNM:4,TRG:5,TBS:6,TLS:7,UDT:11,AND:12,NOT:13,ACTIVE:100,MATCH:101,EMPTY:102,NOMATCH:103,SEM_PRE:200,SEM_POST:201,SEM_OK:300,idName:s=>{switch(s){case Ep.ALT:return\"ALT\";case Ep.CAT:return\"CAT\";case Ep.REP:return\"REP\";case Ep.RNM:return\"RNM\";case Ep.TRG:return\"TRG\";case Ep.TBS:return\"TBS\";case Ep.TLS:return\"TLS\";case Ep.UDT:return\"UDT\";case Ep.AND:return\"AND\";case Ep.NOT:return\"NOT\";case Ep.ACTIVE:return\"ACTIVE\";case Ep.EMPTY:return\"EMPTY\";case Ep.MATCH:return\"MATCH\";case Ep.NOMATCH:return\"NOMATCH\";case Ep.SEM_PRE:return\"SEM_PRE\";case Ep.SEM_POST:return\"SEM_POST\";case Ep.SEM_OK:return\"SEM_OK\";default:return\"UNRECOGNIZED STATE\"}}};function grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"json-pointer\",lower:\"json-pointer\",index:0,isBkr:!1},this.rules[1]={name:\"reference-token\",lower:\"reference-token\",index:1,isBkr:!1},this.rules[2]={name:\"unescaped\",lower:\"unescaped\",index:2,isBkr:!1},this.rules[3]={name:\"escaped\",lower:\"escaped\",index:3,isBkr:!1},this.rules[4]={name:\"array-location\",lower:\"array-location\",index:4,isBkr:!1},this.rules[5]={name:\"array-index\",lower:\"array-index\",index:5,isBkr:!1},this.rules[6]={name:\"array-dash\",lower:\"array-dash\",index:6,isBkr:!1},this.rules[7]={name:\"slash\",lower:\"slash\",index:7,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:3,min:0,max:1/0},this.rules[0].opcodes[1]={type:2,children:[2,3]},this.rules[0].opcodes[2]={type:4,index:7},this.rules[0].opcodes[3]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:3,min:0,max:1/0},this.rules[1].opcodes[1]={type:1,children:[2,3]},this.rules[1].opcodes[2]={type:4,index:2},this.rules[1].opcodes[3]={type:4,index:3},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:1,children:[1,2,3]},this.rules[2].opcodes[1]={type:5,min:0,max:46},this.rules[2].opcodes[2]={type:5,min:48,max:125},this.rules[2].opcodes[3]={type:5,min:127,max:1114111},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:2,children:[1,2]},this.rules[3].opcodes[1]={type:7,string:[126]},this.rules[3].opcodes[2]={type:1,children:[3,4]},this.rules[3].opcodes[3]={type:7,string:[48]},this.rules[3].opcodes[4]={type:7,string:[49]},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:1,children:[1,2]},this.rules[4].opcodes[1]={type:4,index:5},this.rules[4].opcodes[2]={type:4,index:6},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,2]},this.rules[5].opcodes[1]={type:6,string:[48]},this.rules[5].opcodes[2]={type:2,children:[3,4]},this.rules[5].opcodes[3]={type:5,min:49,max:57},this.rules[5].opcodes[4]={type:3,min:0,max:1/0},this.rules[5].opcodes[5]={type:5,min:48,max:57},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:7,string:[45]},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:7,string:[47]},this.toString=function toString(){let s=\"\";return s+=\"; JavaScript Object Notation (JSON) Pointer ABNF syntax\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6901\\n\",s+=\"json-pointer    = *( slash reference-token ) ; MODIFICATION: surrogate text rule used\\n\",s+=\"reference-token = *( unescaped / escaped )\\n\",s+=\"unescaped       = %x00-2E / %x30-7D / %x7F-10FFFF\\n\",s+=\"                ; %x2F ('/') and %x7E ('~') are excluded from 'unescaped'\\n\",s+='escaped         = \"~\" ( \"0\" / \"1\" )\\n',s+=\"                ; representing '~' and '/', respectively\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6901#section-4\\n\",s+=\"array-location  = array-index / array-dash\\n\",s+=\"array-index     = %x30 / ( %x31-39 *(%x30-39) )\\n\",s+='                ; \"0\", or digits without a leading \"0\"\\n',s+='array-dash      = \"-\"\\n',s+=\"\\n\",s+=\"; Surrogate named rules\\n\",s+='slash           = \"/\"\\n','; JavaScript Object Notation (JSON) Pointer ABNF syntax\\n; https://datatracker.ietf.org/doc/html/rfc6901\\njson-pointer    = *( slash reference-token ) ; MODIFICATION: surrogate text rule used\\nreference-token = *( unescaped / escaped )\\nunescaped       = %x00-2E / %x30-7D / %x7F-10FFFF\\n                ; %x2F (\\'/\\') and %x7E (\\'~\\') are excluded from \\'unescaped\\'\\nescaped         = \"~\" ( \"0\" / \"1\" )\\n                ; representing \\'~\\' and \\'/\\', respectively\\n\\n; https://datatracker.ietf.org/doc/html/rfc6901#section-4\\narray-location  = array-index / array-dash\\narray-index     = %x30 / ( %x31-39 *(%x30-39) )\\n                ; \"0\", or digits without a leading \"0\"\\narray-dash      = \"-\"\\n\\n; Surrogate named rules\\nslash           = \"/\"\\n'}}class JSONPointerError extends Error{constructor(s,o=void 0){if(super(s,o),this.name=this.constructor.name,\"string\"==typeof s&&(this.message=s),\"function\"==typeof Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error(s).stack,null!=o&&\"object\"==typeof o&&Object.prototype.hasOwnProperty.call(o,\"cause\")&&!(\"cause\"in this)){const{cause:s}=o;this.cause=s,s instanceof Error&&\"stack\"in s&&(this.stack=`${this.stack}\\nCAUSE: ${s.stack}`)}if(null!=o&&\"object\"==typeof o){const{cause:s,...i}=o;Object.assign(this,i)}}}const wp=JSONPointerError;const xp=class JSONPointerParseError extends wp{},callbacks_cst=s=>(o,i,a,u,_)=>{if(\"object\"!=typeof _||null===_||Array.isArray(_))throw new xp(\"parser's user data must be an object\");if(o===Ep.SEM_PRE){const o={type:s,text:Sp.charsToString(i,a,u),start:a,length:u,children:[]};if(_.stack.length>0){_.stack[_.stack.length-1].children.push(o)}else _.root=o;_.stack.push(o)}o===Ep.SEM_POST&&_.stack.pop()};const kp=class CSTTranslator_CSTTranslator extends vp{constructor(){super(),this.callbacks[\"json-pointer\"]=callbacks_cst(\"json-pointer\"),this.callbacks[\"reference-token\"]=callbacks_cst(\"reference-token\"),this.callbacks.slash=callbacks_cst(\"text\")}getTree(){const s={stack:[],root:null};return this.translate(s),delete s.stack,s}},es_unescape=s=>{if(\"string\"!=typeof s)throw new TypeError(\"Reference token must be a string\");return s.replace(/~1/g,\"/\").replace(/~0/g,\"~\")};const Op=class ASTTranslator extends kp{getTree(){const{root:s}=super.getTree();return s.children.filter((({type:s})=>\"reference-token\"===s)).map((({text:s})=>es_unescape(s)))}};const Cp=class Expectations extends Array{toString(){return this.map((s=>`\"${String(s)}\"`)).join(\", \")}};const Ap=class Trace extends bp{inferExpectations(){const s=this.displayTrace().split(\"\\n\"),o=new Set;let i=-1;for(let a=0;a<s.length;a++){const u=s[a];if(u.includes(\"M|\")){const s=u.match(/]'(.*)'$/);s&&s[1]&&(i=a)}if(a>i){const s=u.match(/N\\|\\[TLS\\(([^)]+)\\)]/);s&&o.add(s[1])}}return new Cp(...o)}},jp=new grammar,es_parse=(s,{translator:o=new Op,stats:i=!1,trace:a=!1}={})=>{if(\"string\"!=typeof s)throw new TypeError(\"JSON Pointer must be a string\");try{const u=new yp;o&&(u.ast=o),i&&(u.stats=new _p),a&&(u.trace=new Ap);const _=u.parse(jp,\"json-pointer\",s);return{result:_,tree:_.success&&o?u.ast.getTree():void 0,stats:u.stats,trace:u.trace}}catch(o){throw new xp(\"Unexpected error during JSON Pointer parsing\",{cause:o,jsonPointer:s})}};new grammar,new yp,new grammar,new yp;const Ip=new grammar,Pp=new yp,array_index=s=>{if(\"string\"!=typeof s)return!1;try{return Pp.parse(Ip,\"array-index\",s).success}catch{return!1}},Tp=new grammar,Np=new yp,array_dash=s=>{if(\"string\"!=typeof s)return!1;try{return Np.parse(Tp,\"array-dash\",s).success}catch{return!1}},es_escape=s=>{if(\"string\"!=typeof s&&\"number\"!=typeof s)throw new TypeError(\"Reference token must be a string or number\");return String(s).replace(/~/g,\"~0\").replace(/\\//g,\"~1\")};const Mp=class JSONPointerCompileError extends wp{},es_compile=s=>{if(!Array.isArray(s))throw new TypeError(\"Reference tokens must be a list of strings or numbers\");try{return 0===s.length?\"\":`/${s.map((s=>{if(\"string\"!=typeof s&&\"number\"!=typeof s)throw new TypeError(\"Reference token must be a string or number\");return es_escape(String(s))})).join(\"/\")}`}catch(o){throw new Mp(\"Unexpected error during JSON Pointer compilation\",{cause:o,referenceTokens:s})}};const Rp=class TraceBuilder{#e;#t;#r;constructor(s,o={}){this.#e=s,this.#e.steps=[],this.#e.failed=!1,this.#e.failedAt=-1,this.#e.message=`JSON Pointer \"${o.jsonPointer}\" was successfully evaluated against the provided value`,this.#e.context={...o,realm:o.realm.name},this.#t=[],this.#r=o.realm}step({referenceToken:s,input:o,output:i,success:a=!0,reason:u}){const _=this.#t.length;this.#t.push(s);const w={referenceToken:s,referenceTokenPosition:_,input:o,inputType:this.#r.isObject(o)?\"object\":this.#r.isArray(o)?\"array\":\"unrecognized\",output:i,success:a};u&&(w.reason=u),this.#e.steps.push(w),a||(this.#e.failed=!0,this.#e.failedAt=_,this.#e.message=u)}};const Dp=class EvaluationRealm{name=\"\";isArray(s){throw new wp(\"Realm.isArray(node) must be implemented in a subclass\")}isObject(s){throw new wp(\"Realm.isObject(node) must be implemented in a subclass\")}sizeOf(s){throw new wp(\"Realm.sizeOf(node) must be implemented in a subclass\")}has(s,o){throw new wp(\"Realm.has(node) must be implemented in a subclass\")}evaluate(s,o){throw new wp(\"Realm.evaluate(node) must be implemented in a subclass\")}};const Lp=class JSONPointerEvaluateError extends wp{};const Fp=class JSONPointerIndexError extends Lp{};const Bp=class JSONEvaluationRealm extends Dp{name=\"json\";isArray(s){return Array.isArray(s)}isObject(s){return\"object\"==typeof s&&null!==s&&!this.isArray(s)}sizeOf(s){return this.isArray(s)?s.length:this.isObject(s)?Object.keys(s).length:0}has(s,o){if(this.isArray(s)){const i=Number(o),a=i>>>0;if(i!==a)throw new Fp(`Invalid array index \"${o}\": index must be an unsinged 32-bit integer`,{referenceToken:o,currentValue:s,realm:this.name});return a<this.sizeOf(s)&&Object.prototype.hasOwnProperty.call(s,i)}return!!this.isObject(s)&&Object.prototype.hasOwnProperty.call(s,o)}evaluate(s,o){return this.isArray(s)?s[Number(o)]:s[o]}};const $p=class JSONPointerTypeError extends Lp{};const qp=class JSONPointerKeyError extends Lp{},es_evaluate=(s,o,{strictArrays:i=!0,strictObjects:a=!0,realm:u=new Bp,trace:_=!0}={})=>{const{result:w,tree:x,trace:C}=es_parse(o,{trace:!!_}),j=\"object\"==typeof _&&null!==_?new Rp(_,{jsonPointer:o,referenceTokens:x,strictArrays:i,strictObjects:a,realm:u,value:s}):null;try{let _;if(!w.success){let i=`Invalid JSON Pointer: \"${o}\". Syntax error at position ${w.maxMatched}`;throw i+=C?`, expected ${C.inferExpectations()}`:\"\",new Lp(i,{jsonPointer:o,currentValue:s,realm:u.name})}return x.reduce(((s,w,C)=>{if(u.isArray(s)){if(array_dash(w)){if(i)throw new Fp(`Invalid array index \"-\" at position ${C} in \"${o}\". The \"-\" token always refers to a nonexistent element during evaluation`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,String(u.sizeOf(s))),null==j||j.step({referenceToken:w,input:s,output:_}),_}if(!array_index(w))throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index MUST be \"0\", or digits without a leading \"0\"`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});const a=Number(w);if(!Number.isSafeInteger(a))throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index must be a safe integer`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});if(!u.has(s,w)&&i)throw new Fp(`Invalid array index \"${w}\" at position ${C} in \"${o}\": index not found in array`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,w),null==j||j.step({referenceToken:w,input:s,output:_}),_}if(u.isObject(s)){if(!u.has(s,w)&&a)throw new qp(`Invalid object key \"${w}\" at position ${C} in \"${o}\": key not found in object`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name});return _=u.evaluate(s,w),null==j||j.step({referenceToken:w,input:s,output:_}),_}throw new $p(`Invalid reference token \"${w}\" at position ${C} in \"${o}\": cannot be applied to a non-object/non-array value`,{jsonPointer:o,referenceTokens:x,referenceToken:w,referenceTokenPosition:C,currentValue:s,realm:u.name})}),s)}catch(s){if(null==j||j.step({referenceToken:s.referenceToken,input:s.currentValue,success:!1,reason:s.message}),s instanceof Lp)throw s;throw new Lp(\"Unexpected error during JSON Pointer evaluation\",{cause:s,jsonPointer:o,referenceTokens:x})}};const Vp=class ApiDOMEvaluationRealm extends Dp{name=\"apidom\";isArray(s){return Ru(s)}isObject(s){return Mu(s)}sizeOf(s){return this.isArray(s)||this.isObject(s)?s.length:0}has(s,o){if(this.isArray(s)){const i=Number(o),a=i>>>0;if(i!==a)throw new Fp(`Invalid array index \"${o}\": index must be an unsinged 32-bit integer`,{referenceToken:o,currentValue:s,realm:this.name});return a<this.sizeOf(s)}if(this.isObject(s)){const i=s.keys(),a=new Set(i);if(i.length!==a.size)throw new qp(`Object key \"${o}\" is not unique — JSON Pointer requires unique member names`,{referenceToken:o,currentValue:s,realm:this.name});return s.hasKey(o)}return!1}evaluate(s,o){return this.isArray(s)?s.get(Number(o)):s.get(o)}},apidom_evaluate=(s,o,i={})=>es_evaluate(s,o,{...i,realm:new Vp});class Callback extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"callback\"}}const Up=Callback;class Components extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"components\"}get schemas(){return this.get(\"schemas\")}set schemas(s){this.set(\"schemas\",s)}get responses(){return this.get(\"responses\")}set responses(s){this.set(\"responses\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get requestBodies(){return this.get(\"requestBodies\")}set requestBodies(s){this.set(\"requestBodies\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get securitySchemes(){return this.get(\"securitySchemes\")}set securitySchemes(s){this.set(\"securitySchemes\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}get callbacks(){return this.get(\"callbacks\")}set callbacks(s){this.set(\"callbacks\",s)}}const zp=Components;class Contact extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"contact\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}get email(){return this.get(\"email\")}set email(s){this.set(\"email\",s)}}const Wp=Contact;class Discriminator extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"discriminator\"}get propertyName(){return this.get(\"propertyName\")}set propertyName(s){this.set(\"propertyName\",s)}get mapping(){return this.get(\"mapping\")}set mapping(s){this.set(\"mapping\",s)}}const Jp=Discriminator;class Encoding extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"encoding\"}get contentType(){return this.get(\"contentType\")}set contentType(s){this.set(\"contentType\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowedReserved(){return this.get(\"allowedReserved\")}set allowedReserved(s){this.set(\"allowedReserved\",s)}}const Hp=Encoding;class Example extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"example\"}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get value(){return this.get(\"value\")}set value(s){this.set(\"value\",s)}get externalValue(){return this.get(\"externalValue\")}set externalValue(s){this.set(\"externalValue\",s)}}const Kp=Example;class ExternalDocumentation extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"externalDocumentation\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}}const Gp=ExternalDocumentation;class Header extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"header\"}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get allowEmptyValue(){return this.get(\"allowEmptyValue\")}set allowEmptyValue(s){this.set(\"allowEmptyValue\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowReserved(){return this.get(\"allowReserved\")}set allowReserved(s){this.set(\"allowReserved\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}}Object.defineProperty(Header.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0});const Yp=Header;class Info extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"info\",this.classes.push(\"info\")}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get termsOfService(){return this.get(\"termsOfService\")}set termsOfService(s){this.set(\"termsOfService\",s)}get contact(){return this.get(\"contact\")}set contact(s){this.set(\"contact\",s)}get license(){return this.get(\"license\")}set license(s){this.set(\"license\",s)}get version(){return this.get(\"version\")}set version(s){this.set(\"version\",s)}}const Xp=Info;class License extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"license\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}}const Qp=License;class Link extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"link\"}get operationRef(){return this.get(\"operationRef\")}set operationRef(s){this.set(\"operationRef\",s)}get operationId(){return this.get(\"operationId\")}set operationId(s){this.set(\"operationId\",s)}get operation(){var s,o;return Iu(this.operationRef)?null===(s=this.operationRef)||void 0===s?void 0:s.meta.get(\"operation\"):Iu(this.operationId)?null===(o=this.operationId)||void 0===o?void 0:o.meta.get(\"operation\"):void 0}set operation(s){this.set(\"operation\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get server(){return this.get(\"server\")}set server(s){this.set(\"server\",s)}}const Zp=Link;class MediaType extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"mediaType\"}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get encoding(){return this.get(\"encoding\")}set encoding(s){this.set(\"encoding\",s)}}const th=MediaType;class OAuthFlow extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"oAuthFlow\"}get authorizationUrl(){return this.get(\"authorizationUrl\")}set authorizationUrl(s){this.set(\"authorizationUrl\",s)}get tokenUrl(){return this.get(\"tokenUrl\")}set tokenUrl(s){this.set(\"tokenUrl\",s)}get refreshUrl(){return this.get(\"refreshUrl\")}set refreshUrl(s){this.set(\"refreshUrl\",s)}get scopes(){return this.get(\"scopes\")}set scopes(s){this.set(\"scopes\",s)}}const rh=OAuthFlow;class OAuthFlows extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"oAuthFlows\"}get implicit(){return this.get(\"implicit\")}set implicit(s){this.set(\"implicit\",s)}get password(){return this.get(\"password\")}set password(s){this.set(\"password\",s)}get clientCredentials(){return this.get(\"clientCredentials\")}set clientCredentials(s){this.set(\"clientCredentials\",s)}get authorizationCode(){return this.get(\"authorizationCode\")}set authorizationCode(s){this.set(\"authorizationCode\",s)}}const uh=OAuthFlows;class Openapi extends Su.Om{constructor(s,o,i){super(s,o,i),this.element=\"openapi\",this.classes.push(\"spec-version\"),this.classes.push(\"version\")}}const dh=Openapi;class OpenApi3_0 extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"openApi3_0\",this.classes.push(\"api\")}get openapi(){return this.get(\"openapi\")}set openapi(s){this.set(\"openapi\",s)}get info(){return this.get(\"info\")}set info(s){this.set(\"info\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get paths(){return this.get(\"paths\")}set paths(s){this.set(\"paths\",s)}get components(){return this.get(\"components\")}set components(s){this.set(\"components\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}}const fh=OpenApi3_0;class Operation extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"operation\"}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}set externalDocs(s){this.set(\"externalDocs\",s)}get externalDocs(){return this.get(\"externalDocs\")}get operationId(){return this.get(\"operationId\")}set operationId(s){this.set(\"operationId\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}get responses(){return this.get(\"responses\")}set responses(s){this.set(\"responses\",s)}get callbacks(){return this.get(\"callbacks\")}set callbacks(s){this.set(\"callbacks\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get servers(){return this.get(\"severs\")}set servers(s){this.set(\"servers\",s)}}const vh=Operation;class Parameter extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"parameter\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get in(){return this.get(\"in\")}set in(s){this.set(\"in\",s)}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}get deprecated(){return this.hasKey(\"deprecated\")?this.get(\"deprecated\"):new Su.bd(!1)}set deprecated(s){this.set(\"deprecated\",s)}get allowEmptyValue(){return this.get(\"allowEmptyValue\")}set allowEmptyValue(s){this.set(\"allowEmptyValue\",s)}get style(){return this.get(\"style\")}set style(s){this.set(\"style\",s)}get explode(){return this.get(\"explode\")}set explode(s){this.set(\"explode\",s)}get allowReserved(){return this.get(\"allowReserved\")}set allowReserved(s){this.set(\"allowReserved\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}}Object.defineProperty(Parameter.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0});const _h=Parameter;class PathItem extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"pathItem\"}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get GET(){return this.get(\"get\")}set GET(s){this.set(\"GET\",s)}get PUT(){return this.get(\"put\")}set PUT(s){this.set(\"PUT\",s)}get POST(){return this.get(\"post\")}set POST(s){this.set(\"POST\",s)}get DELETE(){return this.get(\"delete\")}set DELETE(s){this.set(\"DELETE\",s)}get OPTIONS(){return this.get(\"options\")}set OPTIONS(s){this.set(\"OPTIONS\",s)}get HEAD(){return this.get(\"head\")}set HEAD(s){this.set(\"HEAD\",s)}get PATCH(){return this.get(\"patch\")}set PATCH(s){this.set(\"PATCH\",s)}get TRACE(){return this.get(\"trace\")}set TRACE(s){this.set(\"TRACE\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get parameters(){return this.get(\"parameters\")}set parameters(s){this.set(\"parameters\",s)}}const wh=PathItem;class Paths extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"paths\"}}const Oh=Paths;class Reference extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"reference\",this.classes.push(\"openapi-reference\")}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}}const jh=Reference;class RequestBody extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"requestBody\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}get required(){return this.hasKey(\"required\")?this.get(\"required\"):new Su.bd(!1)}set required(s){this.set(\"required\",s)}}const Ih=RequestBody;class Response_Response extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"response\"}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get headers(){return this.get(\"headers\")}set headers(s){this.set(\"headers\",s)}get contentProp(){return this.get(\"content\")}set contentProp(s){this.set(\"content\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}}const Ph=Response_Response;class Responses extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"responses\"}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}}const Rh=Responses;const Dh=class UnsupportedOperationError extends Ko{};class JSONSchema extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft4\"}get idProp(){return this.get(\"id\")}set idProp(s){this.set(\"id\",s)}get $schema(){return this.get(\"$schema\")}set $schema(s){this.set(\"$schema\",s)}get multipleOf(){return this.get(\"multipleOf\")}set multipleOf(s){this.set(\"multipleOf\",s)}get maximum(){return this.get(\"maximum\")}set maximum(s){this.set(\"maximum\",s)}get exclusiveMaximum(){return this.get(\"exclusiveMaximum\")}set exclusiveMaximum(s){this.set(\"exclusiveMaximum\",s)}get minimum(){return this.get(\"minimum\")}set minimum(s){this.set(\"minimum\",s)}get exclusiveMinimum(){return this.get(\"exclusiveMinimum\")}set exclusiveMinimum(s){this.set(\"exclusiveMinimum\",s)}get maxLength(){return this.get(\"maxLength\")}set maxLength(s){this.set(\"maxLength\",s)}get minLength(){return this.get(\"minLength\")}set minLength(s){this.set(\"minLength\",s)}get pattern(){return this.get(\"pattern\")}set pattern(s){this.set(\"pattern\",s)}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get maxItems(){return this.get(\"maxItems\")}set maxItems(s){this.set(\"maxItems\",s)}get minItems(){return this.get(\"minItems\")}set minItems(s){this.set(\"minItems\",s)}get uniqueItems(){return this.get(\"uniqueItems\")}set uniqueItems(s){this.set(\"uniqueItems\",s)}get maxProperties(){return this.get(\"maxProperties\")}set maxProperties(s){this.set(\"maxProperties\",s)}get minProperties(){return this.get(\"minProperties\")}set minProperties(s){this.set(\"minProperties\",s)}get required(){return this.get(\"required\")}set required(s){this.set(\"required\",s)}get properties(){return this.get(\"properties\")}set properties(s){this.set(\"properties\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get patternProperties(){return this.get(\"patternProperties\")}set patternProperties(s){this.set(\"patternProperties\",s)}get dependencies(){return this.get(\"dependencies\")}set dependencies(s){this.set(\"dependencies\",s)}get enum(){return this.get(\"enum\")}set enum(s){this.set(\"enum\",s)}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get allOf(){return this.get(\"allOf\")}set allOf(s){this.set(\"allOf\",s)}get anyOf(){return this.get(\"anyOf\")}set anyOf(s){this.set(\"anyOf\",s)}get oneOf(){return this.get(\"oneOf\")}set oneOf(s){this.set(\"oneOf\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get definitions(){return this.get(\"definitions\")}set definitions(s){this.set(\"definitions\",s)}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}get format(){return this.get(\"format\")}set format(s){this.set(\"format\",s)}get base(){return this.get(\"base\")}set base(s){this.set(\"base\",s)}get links(){return this.get(\"links\")}set links(s){this.set(\"links\",s)}get media(){return this.get(\"media\")}set media(s){this.set(\"media\",s)}get readOnly(){return this.get(\"readOnly\")}set readOnly(s){this.set(\"readOnly\",s)}}const Lh=JSONSchema;class JSONReference extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"JSONReference\",this.classes.push(\"json-reference\")}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}}const Fh=JSONReference;class Media extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"media\"}get binaryEncoding(){return this.get(\"binaryEncoding\")}set binaryEncoding(s){this.set(\"binaryEncoding\",s)}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}}const Jh=Media;class LinkDescription extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"linkDescription\"}get href(){return this.get(\"href\")}set href(s){this.set(\"href\",s)}get rel(){return this.get(\"rel\")}set rel(s){this.set(\"rel\",s)}get title(){return this.get(\"title\")}set title(s){this.set(\"title\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get mediaType(){return this.get(\"mediaType\")}set mediaType(s){this.set(\"mediaType\",s)}get method(){return this.get(\"method\")}set method(s){this.set(\"method\",s)}get encType(){return this.get(\"encType\")}set encType(s){this.set(\"encType\",s)}get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}}const Hh=LinkDescription;const Kh=_curry2((function mapObjIndexed(s,o){return _arrayReduce((function(i,a){return i[a]=s(o[a],a,o),i}),{},ea(o))}));const Gh=_curry1((function isNil(s){return null==s}));var Qh=_curry2((function hasPath(s,o){if(0===s.length||Gh(o))return!1;for(var i=o,a=0;a<s.length;){if(Gh(i)||!_has(s[a],i))return!1;i=i[s[a]],a+=1}return!0}));const td=Qh;var sd=_curry2((function has(s,o){return td([s],o)}));const id=sd;const cd=_curry3((function propSatisfies(s,o,i){return s(Da(o,i))}));var ld=function(){function XDropWhile(s,o){this.xf=o,this.f=s}return XDropWhile.prototype[\"@@transducer/init\"]=_xfBase_init,XDropWhile.prototype[\"@@transducer/result\"]=_xfBase_result,XDropWhile.prototype[\"@@transducer/step\"]=function(s,o){if(this.f){if(this.f(o))return s;this.f=null}return this.xf[\"@@transducer/step\"](s,o)},XDropWhile}();function _xdropWhile(s){return function(o){return new ld(s,o)}}const ud=_curry2(_dispatchable([\"dropWhile\"],_xdropWhile,(function dropWhile(s,o){for(var i=0,a=o.length;i<a&&s(o[i]);)i+=1;return ja(i,1/0,o)})));const dd=za((function(s,o){return pipe(Ha(\"\"),ud(sc(s)),rc(\"\"))(o)})),dereference=(s,o)=>{const i=Na(s,o);return Kh((s=>{if(fu(s)&&id(\"$ref\",s)&&cd(Jc,\"$ref\",s)){const o=tp([\"$ref\"],s),a=dd(\"#/\",o);return tp(a.split(\"/\"),i)}return fu(s)?dereference(s,i):s}),s)},emptyElement=s=>{const o=s.meta.length>0?cloneDeep(s.meta):void 0,i=s.attributes.length>0?cloneDeep(s.attributes):void 0;return new s.constructor(void 0,o,i)},cloneUnlessOtherwiseSpecified=(s,o)=>o.clone&&o.isMergeableElement(s)?deepmerge(emptyElement(s),s,o):s,md={clone:!0,isMergeableElement:s=>Mu(s)||Ru(s),arrayElementMerge:(s,o,i)=>s.concat(o)[\"fantasy-land/map\"]((s=>cloneUnlessOtherwiseSpecified(s,i))),objectElementMerge:(s,o,i)=>{const a=Mu(s)?emptyElement(s):emptyElement(o);return Mu(s)&&s.forEach(((s,o,u)=>{const _=cloneShallow(u);_.value=cloneUnlessOtherwiseSpecified(s,i),a.content.push(_)})),o.forEach(((o,u,_)=>{const w=serializers_value(u);let x;if(Mu(s)&&s.hasKey(w)&&i.isMergeableElement(o)){const a=s.get(w);x=cloneShallow(_),x.value=((s,o)=>{if(\"function\"!=typeof o.customMerge)return deepmerge;const i=o.customMerge(s,o);return\"function\"==typeof i?i:deepmerge})(u,i)(a,o)}else x=cloneShallow(_),x.value=cloneUnlessOtherwiseSpecified(o,i);a.remove(w),a.content.push(x)})),a},customMerge:void 0,customMetaMerge:void 0,customAttributesMerge:void 0},deepmerge=(s,o,i)=>{var a,u,_;const w={...md,...i};w.isMergeableElement=null!==(a=w.isMergeableElement)&&void 0!==a?a:md.isMergeableElement,w.arrayElementMerge=null!==(u=w.arrayElementMerge)&&void 0!==u?u:md.arrayElementMerge,w.objectElementMerge=null!==(_=w.objectElementMerge)&&void 0!==_?_:md.objectElementMerge;const x=Ru(o);if(!(x===Ru(s)))return cloneUnlessOtherwiseSpecified(o,w);const C=x&&\"function\"==typeof w.arrayElementMerge?w.arrayElementMerge(s,o,w):w.objectElementMerge(s,o,w);return C.meta=(s=>\"function\"!=typeof s.customMetaMerge?s=>cloneDeep(s):s.customMetaMerge)(w)(s.meta,o.meta),C.attributes=(s=>\"function\"!=typeof s.customAttributesMerge?s=>cloneDeep(s):s.customAttributesMerge)(w)(s.attributes,o.attributes),C};deepmerge.all=(s,o)=>{if(!Array.isArray(s))throw new TypeError(\"First argument of deepmerge should be an array.\");return 0===s.length?new Su.Sh:s.reduce(((s,i)=>deepmerge(s,i,o)),emptyElement(s[0]))};const yd=deepmerge;const vd=class Visitor_Visitor{element;constructor(s){Object.assign(this,s)}copyMetaAndAttributes(s,o){(s.meta.length>0||o.meta.length>0)&&(o.meta=yd(o.meta,s.meta),hasElementSourceMap(s)&&o.meta.set(\"sourceMap\",s.meta.get(\"sourceMap\"))),(s.attributes.length>0||s.meta.length>0)&&(o.attributes=yd(o.attributes,s.attributes))}};const _d=class FallbackVisitor extends vd{enter(s){return this.element=cloneDeep(s),Uu}},copyProps=(s,o,i=[])=>{const a=Object.getOwnPropertyDescriptors(o);for(let s of i)delete a[s];Object.defineProperties(s,a)},protoChain=(s,o=[s])=>{const i=Object.getPrototypeOf(s);return null===i?o:protoChain(i,[...o,i])},hardMixProtos=(s,o,i=[])=>{var a;const u=null!==(a=((...s)=>{if(0===s.length)return;let o;const i=s.map((s=>protoChain(s)));for(;i.every((s=>s.length>0));){const s=i.map((s=>s.pop())),a=s[0];if(!s.every((s=>s===a)))break;o=a}return o})(...s))&&void 0!==a?a:Object.prototype,_=Object.create(u),w=protoChain(u);for(let o of s){let s=protoChain(o);for(let o=s.length-1;o>=0;o--){let a=s[o];-1===w.indexOf(a)&&(copyProps(_,a,[\"constructor\",...i]),w.push(a))}}return _.constructor=o,_},unique=s=>s.filter(((o,i)=>s.indexOf(o)==i)),getIngredientWithProp=(s,o)=>{const i=o.map((s=>protoChain(s)));let a=0,u=!0;for(;u;){u=!1;for(let _=o.length-1;_>=0;_--){const o=i[_][a];if(null!=o&&(u=!0,null!=Object.getOwnPropertyDescriptor(o,s)))return i[_][0]}a++}},proxyMix=(s,o=Object.prototype)=>new Proxy({},{getPrototypeOf:()=>o,setPrototypeOf(){throw Error(\"Cannot set prototype of Proxies created by ts-mixer\")},getOwnPropertyDescriptor:(o,i)=>Object.getOwnPropertyDescriptor(getIngredientWithProp(i,s)||{},i),defineProperty(){throw new Error(\"Cannot define new properties on Proxies created by ts-mixer\")},has:(i,a)=>void 0!==getIngredientWithProp(a,s)||void 0!==o[a],get:(i,a)=>(getIngredientWithProp(a,s)||o)[a],set(o,i,a){const u=getIngredientWithProp(i,s);if(void 0===u)throw new Error(\"Cannot set new properties on Proxies created by ts-mixer\");return u[i]=a,!0},deleteProperty(){throw new Error(\"Cannot delete properties on Proxies created by ts-mixer\")},ownKeys:()=>s.map(Object.getOwnPropertyNames).reduce(((s,o)=>o.concat(s.filter((s=>o.indexOf(s)<0)))))}),Sd=null,Ed=\"copy\",wd=\"copy\",xd=\"deep\",kd=new WeakMap,getMixinsForClass=s=>kd.get(s),mergeObjectsOfDecorators=(s,o)=>{var i,a;const u=unique([...Object.getOwnPropertyNames(s),...Object.getOwnPropertyNames(o)]),_={};for(let w of u)_[w]=unique([...null!==(i=null==s?void 0:s[w])&&void 0!==i?i:[],...null!==(a=null==o?void 0:o[w])&&void 0!==a?a:[]]);return _},mergePropertyAndMethodDecorators=(s,o)=>{var i,a,u,_;return{property:mergeObjectsOfDecorators(null!==(i=null==s?void 0:s.property)&&void 0!==i?i:{},null!==(a=null==o?void 0:o.property)&&void 0!==a?a:{}),method:mergeObjectsOfDecorators(null!==(u=null==s?void 0:s.method)&&void 0!==u?u:{},null!==(_=null==o?void 0:o.method)&&void 0!==_?_:{})}},mergeDecorators=(s,o)=>{var i,a,u,_,w,x;return{class:unique([...null!==(i=null==s?void 0:s.class)&&void 0!==i?i:[],...null!==(a=null==o?void 0:o.class)&&void 0!==a?a:[]]),static:mergePropertyAndMethodDecorators(null!==(u=null==s?void 0:s.static)&&void 0!==u?u:{},null!==(_=null==o?void 0:o.static)&&void 0!==_?_:{}),instance:mergePropertyAndMethodDecorators(null!==(w=null==s?void 0:s.instance)&&void 0!==w?w:{},null!==(x=null==o?void 0:o.instance)&&void 0!==x?x:{})}},Od=new Map,deepDecoratorSearch=(...s)=>{const o=((...s)=>{var o;const i=new Set,a=new Set([...s]);for(;a.size>0;)for(let s of a){const u=protoChain(s.prototype).map((s=>s.constructor)),_=[...u,...null!==(o=getMixinsForClass(s))&&void 0!==o?o:[]].filter((s=>!i.has(s)));for(let s of _)a.add(s);i.add(s),a.delete(s)}return[...i]})(...s).map((s=>Od.get(s))).filter((s=>!!s));return 0==o.length?{}:1==o.length?o[0]:o.reduce(((s,o)=>mergeDecorators(s,o)))},getDecoratorsForClass=s=>{let o=Od.get(s);return o||(o={},Od.set(s,o)),o};function Mixin(...s){var o,i,a;const u=s.map((s=>s.prototype)),_=Sd;if(null!==_){const s=u.map((s=>s[_])).filter((s=>\"function\"==typeof s)),combinedInitFunction=function(...o){for(let i of s)i.apply(this,o)},o={[_]:combinedInitFunction};u.push(o)}function MixedClass(...o){for(const i of s)copyProps(this,new i(...o));null!==_&&\"function\"==typeof this[_]&&this[_].apply(this,o)}var w,x;MixedClass.prototype=\"copy\"===wd?hardMixProtos(u,MixedClass):(w=u,x=MixedClass,proxyMix([...w,{constructor:x}])),Object.setPrototypeOf(MixedClass,\"copy\"===Ed?hardMixProtos(s,null,[\"prototype\"]):proxyMix(s,Function.prototype));let C=MixedClass;if(\"none\"!==xd){const u=\"deep\"===xd?deepDecoratorSearch(...s):((...s)=>{const o=s.map((s=>getDecoratorsForClass(s)));return 0===o.length?{}:1===o.length?o[0]:o.reduce(((s,o)=>mergeDecorators(s,o)))})(...s);for(let s of null!==(o=null==u?void 0:u.class)&&void 0!==o?o:[]){const o=s(C);o&&(C=o)}applyPropAndMethodDecorators(null!==(i=null==u?void 0:u.static)&&void 0!==i?i:{},C),applyPropAndMethodDecorators(null!==(a=null==u?void 0:u.instance)&&void 0!==a?a:{},C.prototype)}var j,L;return j=C,L=s,kd.set(j,L),C}const applyPropAndMethodDecorators=(s,o)=>{const i=s.property,a=s.method;if(i)for(let s in i)for(let a of i[s])a(o,s);if(a)for(let s in a)for(let i of a[s])i(o,s,Object.getOwnPropertyDescriptor(o,s))};const Cd=_curry1((function allPass(s){return $a(Ca(Ec,0,Oc(\"length\",s)),(function(){for(var o=0,i=s.length;o<i;){if(!s[o].apply(this,arguments))return!1;o+=1}return!0}))}));const Ad=_curry1((function isNotEmpty(s){return!cp(s)}));const Id=_curry2((function or(s,o){return s||o}));var Td=dc($a(1,ou(au,_curry2((function either(s,o){return _isFunction(s)?function _either(){return s.apply(this,arguments)||o.apply(this,arguments)}:hc(Id)(s,o)}))(cu,Mc))));const Nd=Cd([Jc,Td,Ad]);const Md=_curry2((function pick(s,o){for(var i={},a=0;a<s.length;)s[a]in o&&(i[s[a]]=o[s[a]]),a+=1;return i}));const Rd=class SpecificationVisitor extends vd{specObj;passingOptionsNames=[\"specObj\",\"parent\"];constructor({specObj:s,...o}){super({...o}),this.specObj=s}retrievePassingOptions(){return Md(this.passingOptionsNames,this)}retrieveFixedFields(s){const o=tp([\"visitors\",...s,\"fixedFields\"],this.specObj);return\"object\"==typeof o&&null!==o?Object.keys(o):[]}retrieveVisitor(s){return Qo(Mc,[\"visitors\",...s],this.specObj)?tp([\"visitors\",...s],this.specObj):tp([\"visitors\",...s,\"$visitor\"],this.specObj)}retrieveVisitorInstance(s,o={}){const i=this.retrievePassingOptions();return new(this.retrieveVisitor(s))({...i,...o})}toRefractedElement(s,o,i={}){const a=this.retrieveVisitorInstance(s,i);return a instanceof _d&&(null==a?void 0:a.constructor)===_d?cloneDeep(o):(visitor_visit(o,a,i),a.element)}};const Dd=class FixedFieldsVisitor extends Rd{specPath;ignoredFields;constructor({specPath:s,ignoredFields:o,...i}){super({...i}),this.specPath=s,this.ignoredFields=o||[]}ObjectElement(s){const o=this.specPath(s),i=this.retrieveFixedFields(o);return s.forEach(((s,a,u)=>{if(Iu(a)&&i.includes(serializers_value(a))&&!this.ignoredFields.includes(serializers_value(a))){const i=this.toRefractedElement([...o,\"fixedFields\",serializers_value(a)],s),_=new Su.Pr(cloneDeep(a),i);this.copyMetaAndAttributes(u,_),_.classes.push(\"fixed-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(a))||this.element.content.push(cloneDeep(u))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Ld=class ParentSchemaAwareVisitor{parent;constructor({parent:s}){this.parent=s}},Fd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Lh||s(a)&&o(\"JSONSchemaDraft4\",a)&&i(\"object\",a))),Bd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Fh||s(a)&&o(\"JSONReference\",a)&&i(\"object\",a))),$d=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Jh||s(a)&&o(\"media\",a)&&i(\"object\",a))),Vd=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Hh||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a)));class JSONSchemaVisitor extends(Mixin(Dd,Ld,_d)){constructor(s){super(s),this.element=new Lh,this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-04/schema#\"}ObjectElement(s){return this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element,Dd.prototype.ObjectElement.call(this,s)}handleDialectIdentifier(s){if(bc(this.parent)&&!Iu(s.get(\"$schema\")))this.element.setMetaProperty(\"inheritedDialectIdentifier\",this.defaultDialectIdentifier);else if(Fd(this.parent)&&!Iu(s.get(\"$schema\"))){const s=Na(serializers_value(this.parent.meta.get(\"inheritedDialectIdentifier\")),serializers_value(this.parent.$schema));this.element.setMetaProperty(\"inheritedDialectIdentifier\",s)}}handleSchemaIdentifier(s,o=\"id\"){const i=void 0!==this.parent?cloneDeep(this.parent.getMetaProperty(\"ancestorsSchemaIdentifiers\",[])):new Su.wE,a=serializers_value(s.get(o));Nd(a)&&i.push(a),this.element.setMetaProperty(\"ancestorsSchemaIdentifiers\",i)}}const Ud=JSONSchemaVisitor,isJSONReferenceLikeElement=s=>Mu(s)&&s.hasKey(\"$ref\");class ItemsVisitor extends(Mixin(Rd,Ld,_d)){ObjectElement(s){const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"];return this.element=this.toRefractedElement(o,s),Uu}ArrayElement(s){return this.element=new Su.wE,this.element.classes.push(\"json-schema-items\"),s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Wd=ItemsVisitor;const Jd=class RequiredVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-required\"),o}};const Hd=class PatternedFieldsVisitor extends Rd{specPath;ignoredFields;fieldPatternPredicate=es_F;constructor({specPath:s,ignoredFields:o,fieldPatternPredicate:i,...a}){super({...a}),this.specPath=s,this.ignoredFields=o||[],\"function\"==typeof i&&(this.fieldPatternPredicate=i)}ObjectElement(s){return s.forEach(((s,o,i)=>{if(!this.ignoredFields.includes(serializers_value(o))&&this.fieldPatternPredicate(serializers_value(o))){const a=this.specPath(s),u=this.toRefractedElement(a,s),_=new Su.Pr(cloneDeep(o),u);this.copyMetaAndAttributes(i,_),_.classes.push(\"patterned-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(o))||this.element.content.push(cloneDeep(i))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Kd=class MapVisitor extends Hd{constructor(s){super(s),this.fieldPatternPredicate=Nd}};class PropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-properties\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Gd=PropertiesVisitor;class PatternPropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-patternProperties\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Yd=PatternPropertiesVisitor;class DependenciesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-dependencies\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const Xd=DependenciesVisitor;const Qd=class EnumVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-enum\"),o}};const Zd=class TypeVisitor extends _d{StringElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-type\"),o}ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-type\"),o}};class AllOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-allOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const ef=AllOfVisitor;class AnyOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-anyOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const rf=AnyOfVisitor;class OneOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-oneOf\")}ArrayElement(s){return s.forEach((s=>{const o=isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const of=OneOfVisitor;class DefinitionsVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-definitions\"),this.specPath=s=>isJSONReferenceLikeElement(s)?[\"document\",\"objects\",\"JSONReference\"]:[\"document\",\"objects\",\"JSONSchema\"]}}const af=DefinitionsVisitor;class LinksVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-links\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"LinkDescription\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const cf=LinksVisitor;class JSONReferenceVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Fh,this.specPath=fc([\"document\",\"objects\",\"JSONReference\"])}ObjectElement(s){const o=Dd.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const lf=JSONReferenceVisitor;const uf=class $RefVisitor extends _d{StringElement(s){const o=this.enter(s);return this.element.classes.push(\"reference-value\"),o}};const hf=_curry3((function ifElse(s,o,i){return $a(Math.max(s.length,o.length,i.length),(function _ifElse(){return s.apply(this,arguments)?o.apply(this,arguments):i.apply(this,arguments)}))}));const df=_curry1((function comparator(s){return function(o,i){return s(o,i)?-1:s(i,o)?1:0}}));var mf=_curry2((function sort(s,o){return Array.prototype.slice.call(o,0).sort(s)}));const gf=mf;var yf=_curry1((function(s){return _nth(0,s)}));const bf=yf;const _f=_curry1(_reduced);const Sf=dc(Gh);const xf=ou(lp,Ad);function _toConsumableArray(s){return function _arrayWithoutHoles(s){if(Array.isArray(s))return _arrayLikeToArray(s)}(s)||function _iterableToArray(s){if(\"undefined\"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s[\"@@iterator\"])return Array.from(s)}(s)||function _unsupportedIterableToArray(s,o){if(s){if(\"string\"==typeof s)return _arrayLikeToArray(s,o);var i={}.toString.call(s).slice(8,-1);return\"Object\"===i&&s.constructor&&(i=s.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(s):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?_arrayLikeToArray(s,o):void 0}}(s)||function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function _arrayLikeToArray(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=Array(o);i<o;i++)a[i]=s[i];return a}var kf=pipe(gf(df((function(s,o){return s.length>o.length}))),bf,Da(\"length\")),Of=za((function(s,o,i){var a=i.apply(void 0,_toConsumableArray(s));return Sf(a)?_f(a):o}));const Cf=hf(xf,(function dispatchImpl(s){var o=kf(s);return $a(o,(function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return Ca(Of(i),void 0,s)}))}),gc);const jf=class AlternatingVisitor extends Rd{alternator;constructor({alternator:s,...o}){super({...o}),this.alternator=s}enter(s){const o=this.alternator.map((({predicate:s,specPath:o})=>hf(s,fc(o),gc))),i=Cf(o)(s);return this.element=this.toRefractedElement(i,s),Uu}};const Pf=class SchemaOrReferenceVisitor extends jf{constructor(s){super(s),this.alternator=[{predicate:isJSONReferenceLikeElement,specPath:[\"document\",\"objects\",\"JSONReference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"JSONSchema\"]}]}};class MediaVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Jh,this.specPath=fc([\"document\",\"objects\",\"Media\"])}}const Tf=MediaVisitor;class LinkDescriptionVisitor extends(Mixin(Dd,_d)){constructor(s){super(s),this.element=new Hh,this.specPath=fc([\"document\",\"objects\",\"LinkDescription\"])}}const Nf=LinkDescriptionVisitor,Rf={visitors:{value:_d,JSONSchemaOrJSONReferenceVisitor:Pf,document:{objects:{JSONSchema:{$visitor:Ud,fixedFields:{id:{$ref:\"#/visitors/value\"},$schema:{$ref:\"#/visitors/value\"},multipleOf:{$ref:\"#/visitors/value\"},maximum:{$ref:\"#/visitors/value\"},exclusiveMaximum:{$ref:\"#/visitors/value\"},minimum:{$ref:\"#/visitors/value\"},exclusiveMinimum:{$ref:\"#/visitors/value\"},maxLength:{$ref:\"#/visitors/value\"},minLength:{$ref:\"#/visitors/value\"},pattern:{$ref:\"#/visitors/value\"},additionalItems:Pf,items:Wd,maxItems:{$ref:\"#/visitors/value\"},minItems:{$ref:\"#/visitors/value\"},uniqueItems:{$ref:\"#/visitors/value\"},maxProperties:{$ref:\"#/visitors/value\"},minProperties:{$ref:\"#/visitors/value\"},required:Jd,properties:Gd,additionalProperties:Pf,patternProperties:Yd,dependencies:Xd,enum:Qd,type:Zd,allOf:ef,anyOf:rf,oneOf:of,not:Pf,definitions:af,title:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},default:{$ref:\"#/visitors/value\"},format:{$ref:\"#/visitors/value\"},base:{$ref:\"#/visitors/value\"},links:cf,media:{$ref:\"#/visitors/document/objects/Media\"},readOnly:{$ref:\"#/visitors/value\"}}},JSONReference:{$visitor:lf,fixedFields:{$ref:uf}},Media:{$visitor:Tf,fixedFields:{binaryEncoding:{$ref:\"#/visitors/value\"},type:{$ref:\"#/visitors/value\"}}},LinkDescription:{$visitor:Nf,fixedFields:{href:{$ref:\"#/visitors/value\"},rel:{$ref:\"#/visitors/value\"},title:{$ref:\"#/visitors/value\"},targetSchema:Pf,mediaType:{$ref:\"#/visitors/value\"},method:{$ref:\"#/visitors/value\"},encType:{$ref:\"#/visitors/value\"},schema:Pf}}}}}},traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},Df={JSONSchemaDraft4Element:[\"content\"],JSONReferenceElement:[\"content\"],MediaElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},Ff={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft4\",Lh),o.register(\"jSONReference\",Fh),o.register(\"media\",Jh),o.register(\"linkDescription\",Hh),o}},Vf=Ff,refractor_toolbox=()=>{const s=createNamespace(Vf);return{predicates:{...ae,isStringElement:Iu},namespace:s}},refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=Rf}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:refractor_toolbox,visitorOptions:{keyMap:Df,nodeTypeGetter:traversal_visitor_getNodeType}})},refractor_createRefractor=s=>(o,i={})=>refractor_refract(o,{specPath:s,...i});Lh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),Fh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONReference\",\"$visitor\"]),Jh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Media\",\"$visitor\"]),Hh.refract=refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const Wf=class Schema_Schema extends Lh{constructor(s,o,i){super(s,o,i),this.element=\"schema\",this.classes.push(\"json-schema-draft-4\")}get idProp(){throw new Dh(\"idProp getter in Schema class is not not supported.\")}set idProp(s){throw new Dh(\"idProp setter in Schema class is not not supported.\")}get $schema(){throw new Dh(\"$schema getter in Schema class is not not supported.\")}set $schema(s){throw new Dh(\"$schema setter in Schema class is not not supported.\")}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get patternProperties(){throw new Dh(\"patternProperties getter in Schema class is not not supported.\")}set patternProperties(s){throw new Dh(\"patternProperties setter in Schema class is not not supported.\")}get dependencies(){throw new Dh(\"dependencies getter in Schema class is not not supported.\")}set dependencies(s){throw new Dh(\"dependencies setter in Schema class is not not supported.\")}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get definitions(){throw new Dh(\"definitions getter in Schema class is not not supported.\")}set definitions(s){throw new Dh(\"definitions setter in Schema class is not not supported.\")}get base(){throw new Dh(\"base getter in Schema class is not not supported.\")}set base(s){throw new Dh(\"base setter in Schema class is not not supported.\")}get links(){throw new Dh(\"links getter in Schema class is not not supported.\")}set links(s){throw new Dh(\"links setter in Schema class is not not supported.\")}get media(){throw new Dh(\"media getter in Schema class is not not supported.\")}set media(s){throw new Dh(\"media setter in Schema class is not not supported.\")}get nullable(){return this.get(\"nullable\")}set nullable(s){this.set(\"nullable\",s)}get discriminator(){return this.get(\"discriminator\")}set discriminator(s){this.set(\"discriminator\",s)}get writeOnly(){return this.get(\"writeOnly\")}set writeOnly(s){this.set(\"writeOnly\",s)}get xml(){return this.get(\"xml\")}set xml(s){this.set(\"xml\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}get deprecated(){return this.get(\"deprecated\")}set deprecated(s){this.set(\"deprecated\",s)}};class SecurityRequirement extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"securityRequirement\"}}const Jf=SecurityRequirement;class SecurityScheme extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"securityScheme\"}get type(){return this.get(\"type\")}set type(s){this.set(\"type\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get in(){return this.get(\"in\")}set in(s){this.set(\"in\",s)}get scheme(){return this.get(\"scheme\")}set scheme(s){this.set(\"scheme\",s)}get bearerFormat(){return this.get(\"bearerFormat\")}set bearerFormat(s){this.set(\"bearerFormat\",s)}get flows(){return this.get(\"flows\")}set flows(s){this.set(\"flows\",s)}get openIdConnectUrl(){return this.get(\"openIdConnectUrl\")}set openIdConnectUrl(s){this.set(\"openIdConnectUrl\",s)}}const Hf=SecurityScheme;class Server extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"server\"}get url(){return this.get(\"url\")}set url(s){this.set(\"url\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get variables(){return this.get(\"variables\")}set variables(s){this.set(\"variables\",s)}}const Gf=Server;class ServerVariable extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"serverVariable\"}get enum(){return this.get(\"enum\")}set enum(s){this.set(\"enum\",s)}get default(){return this.get(\"default\")}set default(s){this.set(\"default\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}}const Xf=ServerVariable;class Tag extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"tag\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}}const Qf=Tag;class Xml extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"xml\"}get name(){return this.get(\"name\")}set name(s){this.set(\"name\",s)}get namespace(){return this.get(\"namespace\")}set namespace(s){this.set(\"namespace\",s)}get prefix(){return this.get(\"prefix\")}set prefix(s){this.set(\"prefix\",s)}get attribute(){return this.get(\"attribute\")}set attribute(s){this.set(\"attribute\",s)}get wrapped(){return this.get(\"wrapped\")}set wrapped(s){this.set(\"wrapped\",s)}}const em=Xml;const tm=class visitors_Visitor_Visitor{element;constructor(s={}){Object.assign(this,s)}copyMetaAndAttributes(s,o){(s.meta.length>0||o.meta.length>0)&&(o.meta=yd(o.meta,s.meta),hasElementSourceMap(s)&&o.meta.set(\"sourceMap\",s.meta.get(\"sourceMap\"))),(s.attributes.length>0||s.meta.length>0)&&(o.attributes=yd(o.attributes,s.attributes))}};const rm=class FallbackVisitor_FallbackVisitor extends tm{enter(s){return this.element=cloneDeep(s),Uu}};const nm=class SpecificationVisitor_SpecificationVisitor extends tm{specObj;passingOptionsNames=[\"specObj\",\"openApiGenericElement\",\"openApiSemanticElement\"];openApiGenericElement;openApiSemanticElement;constructor({specObj:s,passingOptionsNames:o,openApiGenericElement:i,openApiSemanticElement:a,...u}){super({...u}),this.specObj=s,this.openApiGenericElement=i,this.openApiSemanticElement=a,Array.isArray(o)&&(this.passingOptionsNames=o)}retrievePassingOptions(){return Md(this.passingOptionsNames,this)}retrieveFixedFields(s){const o=tp([\"visitors\",...s,\"fixedFields\"],this.specObj);return\"object\"==typeof o&&null!==o?Object.keys(o):[]}retrieveVisitor(s){return Qo(Mc,[\"visitors\",...s],this.specObj)?tp([\"visitors\",...s],this.specObj):tp([\"visitors\",...s,\"$visitor\"],this.specObj)}retrieveVisitorInstance(s,o={}){const i=this.retrievePassingOptions();return new(this.retrieveVisitor(s))({...i,...o})}toRefractedElement(s,o,i={}){const a=this.retrieveVisitorInstance(s,i);return a instanceof rm&&(null==a?void 0:a.constructor)===rm?cloneDeep(o):(visitor_visit(o,a,i),a.element)}};var sm=function(){function XTake(s,o){this.xf=o,this.n=s,this.i=0}return XTake.prototype[\"@@transducer/init\"]=_xfBase_init,XTake.prototype[\"@@transducer/result\"]=_xfBase_result,XTake.prototype[\"@@transducer/step\"]=function(s,o){this.i+=1;var i=0===this.n?s:this.xf[\"@@transducer/step\"](s,o);return this.n>=0&&this.i>=this.n?_reduced(i):i},XTake}();function _xtake(s){return function(o){return new sm(s,o)}}const om=_curry2(_dispatchable([\"take\"],_xtake,(function take(s,o){return ja(0,s<0?1/0:s,o)})));var im=_curry2((function(s,o){return na(om(s.length,o),s)}));const am=im,isReferenceLikeElement=s=>Mu(s)&&s.hasKey(\"$ref\"),cm=Mu,lm=Mu,isOpenApiExtension=s=>Iu(s.key)&&am(\"x-\",serializers_value(s.key));const um=class FixedFieldsVisitor_FixedFieldsVisitor extends nm{specPath;ignoredFields;canSupportSpecificationExtensions=!0;specificationExtensionPredicate=isOpenApiExtension;constructor({specPath:s,ignoredFields:o,canSupportSpecificationExtensions:i,specificationExtensionPredicate:a,...u}){super({...u}),this.specPath=s,this.ignoredFields=o||[],\"boolean\"==typeof i&&(this.canSupportSpecificationExtensions=i),\"function\"==typeof a&&(this.specificationExtensionPredicate=a)}ObjectElement(s){const o=this.specPath(s),i=this.retrieveFixedFields(o);return s.forEach(((s,a,u)=>{if(Iu(a)&&i.includes(serializers_value(a))&&!this.ignoredFields.includes(serializers_value(a))){const i=this.toRefractedElement([...o,\"fixedFields\",serializers_value(a)],s),_=new Su.Pr(cloneDeep(a),i);this.copyMetaAndAttributes(u,_),_.classes.push(\"fixed-field\"),this.element.content.push(_)}else if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(u)){const s=this.toRefractedElement([\"document\",\"extension\"],u);this.element.content.push(s)}else this.ignoredFields.includes(serializers_value(a))||this.element.content.push(cloneDeep(u))})),this.copyMetaAndAttributes(s,this.element),Uu}};class OpenApi3_0Visitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new fh,this.specPath=fc([\"document\",\"objects\",\"OpenApi\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){return um.prototype.ObjectElement.call(this,s)}}const pm=OpenApi3_0Visitor;class OpenapiVisitor extends(Mixin(nm,rm)){StringElement(s){const o=new dh(serializers_value(s));return this.copyMetaAndAttributes(s,o),this.element=o,Uu}}const hm=OpenapiVisitor;const dm=class SpecificationExtensionVisitor extends nm{MemberElement(s){return this.element=cloneDeep(s),this.element.classes.push(\"specification-extension\"),Uu}};class InfoVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Xp,this.specPath=fc([\"document\",\"objects\",\"Info\"]),this.canSupportSpecificationExtensions=!0}}const fm=InfoVisitor;const mm=class VersionVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"api-version\"),this.element.classes.push(\"version\"),o}};class ContactVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Wp,this.specPath=fc([\"document\",\"objects\",\"Contact\"]),this.canSupportSpecificationExtensions=!0}}const gm=ContactVisitor;class LicenseVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Qp,this.specPath=fc([\"document\",\"objects\",\"License\"]),this.canSupportSpecificationExtensions=!0}}const ym=LicenseVisitor;class LinkVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Zp,this.specPath=fc([\"document\",\"objects\",\"Link\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return(Iu(this.element.operationId)||Iu(this.element.operationRef))&&this.element.classes.push(\"reference-element\"),o}}const vm=LinkVisitor;const bm=class OperationRefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};const _m=class OperationIdVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};const Sm=class PatternedFieldsVisitor_PatternedFieldsVisitor extends nm{specPath;ignoredFields;fieldPatternPredicate=es_F;canSupportSpecificationExtensions=!1;specificationExtensionPredicate=isOpenApiExtension;constructor({specPath:s,ignoredFields:o,fieldPatternPredicate:i,canSupportSpecificationExtensions:a,specificationExtensionPredicate:u,..._}){super({..._}),this.specPath=s,this.ignoredFields=o||[],\"function\"==typeof i&&(this.fieldPatternPredicate=i),\"boolean\"==typeof a&&(this.canSupportSpecificationExtensions=a),\"function\"==typeof u&&(this.specificationExtensionPredicate=u)}ObjectElement(s){return s.forEach(((s,o,i)=>{if(this.canSupportSpecificationExtensions&&this.specificationExtensionPredicate(i)){const s=this.toRefractedElement([\"document\",\"extension\"],i);this.element.content.push(s)}else if(!this.ignoredFields.includes(serializers_value(o))&&this.fieldPatternPredicate(serializers_value(o))){const a=this.specPath(s),u=this.toRefractedElement(a,s),_=new Su.Pr(cloneDeep(o),u);this.copyMetaAndAttributes(i,_),_.classes.push(\"patterned-field\"),this.element.content.push(_)}else this.ignoredFields.includes(serializers_value(o))||this.element.content.push(cloneDeep(i))})),this.copyMetaAndAttributes(s,this.element),Uu}};const Em=class MapVisitor_MapVisitor extends Sm{constructor(s){super(s),this.fieldPatternPredicate=Nd}};class LinkParameters extends Su.Sh{static primaryClass=\"link-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(LinkParameters.primaryClass)}}const wm=LinkParameters;class ParametersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new wm,this.specPath=fc([\"value\"])}}const xm=ParametersVisitor;class ServerVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Gf,this.specPath=fc([\"document\",\"objects\",\"Server\"]),this.canSupportSpecificationExtensions=!0}}const km=ServerVisitor;const Om=class UrlVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"server-url\"),o}};class Servers extends Su.wE{static primaryClass=\"servers\";constructor(s,o,i){super(s,o,i),this.classes.push(Servers.primaryClass)}}const Cm=Servers;class ServersVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Cm}ArrayElement(s){return s.forEach((s=>{const o=cm(s)?[\"document\",\"objects\",\"Server\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Am=ServersVisitor;class ServerVariableVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Xf,this.specPath=fc([\"document\",\"objects\",\"ServerVariable\"]),this.canSupportSpecificationExtensions=!0}}const jm=ServerVariableVisitor;class ServerVariables extends Su.Sh{static primaryClass=\"server-variables\";constructor(s,o,i){super(s,o,i),this.classes.push(ServerVariables.primaryClass)}}const Im=ServerVariables;class VariablesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Im,this.specPath=fc([\"document\",\"objects\",\"ServerVariable\"])}}const Pm=VariablesVisitor;class MediaTypeVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new th,this.specPath=fc([\"document\",\"objects\",\"MediaType\"]),this.canSupportSpecificationExtensions=!0}}const Tm=MediaTypeVisitor;const Nm=class AlternatingVisitor_AlternatingVisitor extends nm{alternator;constructor({alternator:s,...o}){super({...o}),this.alternator=s||[]}enter(s){const o=this.alternator.map((({predicate:s,specPath:o})=>hf(s,fc(o),gc))),i=Cf(o)(s);return this.element=this.toRefractedElement(i,s),Uu}},Mm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Up||s(a)&&o(\"callback\",a)&&i(\"object\",a))),Rm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof zp||s(a)&&o(\"components\",a)&&i(\"object\",a))),Dm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Wp||s(a)&&o(\"contact\",a)&&i(\"object\",a))),Lm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Kp||s(a)&&o(\"example\",a)&&i(\"object\",a))),Fm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gp||s(a)&&o(\"externalDocumentation\",a)&&i(\"object\",a))),Bm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Yp||s(a)&&o(\"header\",a)&&i(\"object\",a))),$m=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xp||s(a)&&o(\"info\",a)&&i(\"object\",a))),qm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Qp||s(a)&&o(\"license\",a)&&i(\"object\",a))),Vm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Zp||s(a)&&o(\"link\",a)&&i(\"object\",a))),Um=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof dh||s(a)&&o(\"openapi\",a)&&i(\"string\",a))),zm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof fh||s(u)&&o(\"openApi3_0\",u)&&i(\"object\",u)&&a(\"api\",u))),Wm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof vh||s(a)&&o(\"operation\",a)&&i(\"object\",a))),Jm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof _h||s(a)&&o(\"parameter\",a)&&i(\"object\",a))),Hm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof wh||s(a)&&o(\"pathItem\",a)&&i(\"object\",a))),Km=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Oh||s(a)&&o(\"paths\",a)&&i(\"object\",a))),Gm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof jh||s(a)&&o(\"reference\",a)&&i(\"object\",a))),Ym=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ih||s(a)&&o(\"requestBody\",a)&&i(\"object\",a))),Xm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ph||s(a)&&o(\"response\",a)&&i(\"object\",a))),Qm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Rh||s(a)&&o(\"responses\",a)&&i(\"object\",a))),Zm=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Wf||s(a)&&o(\"schema\",a)&&i(\"object\",a))),isBooleanJsonSchemaElement=s=>Nu(s)&&s.classes.includes(\"boolean-json-schema\"),eg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Jf||s(a)&&o(\"securityRequirement\",a)&&i(\"object\",a))),rg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Hf||s(a)&&o(\"securityScheme\",a)&&i(\"object\",a))),ng=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gf||s(a)&&o(\"server\",a)&&i(\"object\",a))),sg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xf||s(a)&&o(\"serverVariable\",a)&&i(\"object\",a))),og=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof th||s(a)&&o(\"mediaType\",a)&&i(\"object\",a))),lg=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof Cm||s(u)&&o(\"array\",u)&&i(\"array\",u)&&a(\"servers\",u)));class SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const pg=SchemaVisitor;class ExamplesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"examples\"),this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Example\"],this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"example\")})),o}}const fg=ExamplesVisitor;class MediaTypeExamples extends Su.Sh{static primaryClass=\"media-type-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(MediaTypeExamples.primaryClass),this.classes.push(\"examples\")}}const mg=MediaTypeExamples;const gg=class ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new mg}};class MediaTypeEncoding extends Su.Sh{static primaryClass=\"media-type-encoding\";constructor(s,o,i){super(s,o,i),this.classes.push(MediaTypeEncoding.primaryClass)}}const yg=MediaTypeEncoding;class EncodingVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new yg,this.specPath=fc([\"document\",\"objects\",\"Encoding\"])}}const _g=EncodingVisitor;class SecurityRequirementVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Jf,this.specPath=fc([\"value\"])}}const xg=SecurityRequirementVisitor;class Security extends Su.wE{static primaryClass=\"security\";constructor(s,o,i){super(s,o,i),this.classes.push(Security.primaryClass)}}const kg=Security;class SecurityVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new kg}ArrayElement(s){return s.forEach((s=>{if(Mu(s)){const o=this.toRefractedElement([\"document\",\"objects\",\"SecurityRequirement\"],s);this.element.push(o)}else this.element.push(cloneDeep(s))})),this.copyMetaAndAttributes(s,this.element),Uu}}const qg=SecurityVisitor;class ComponentsVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new zp,this.specPath=fc([\"document\",\"objects\",\"Components\"]),this.canSupportSpecificationExtensions=!0}}const Vg=ComponentsVisitor;class TagVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Qf,this.specPath=fc([\"document\",\"objects\",\"Tag\"]),this.canSupportSpecificationExtensions=!0}}const Ug=TagVisitor;class ReferenceVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new jh,this.specPath=fc([\"document\",\"objects\",\"Reference\"]),this.canSupportSpecificationExtensions=!1}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const zg=ReferenceVisitor;const Wg=class $RefVisitor_$RefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class ParameterVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new _h,this.specPath=fc([\"document\",\"objects\",\"Parameter\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),o}}const Kg=ParameterVisitor;class SchemaVisitor_SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const Yg=SchemaVisitor_SchemaVisitor;class HeaderVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Yp,this.specPath=fc([\"document\",\"objects\",\"Header\"]),this.canSupportSpecificationExtensions=!0}}const Xg=HeaderVisitor;class header_SchemaVisitor_SchemaVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Schema\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}}const Zg=header_SchemaVisitor_SchemaVisitor;class HeaderExamples extends Su.Sh{static primaryClass=\"header-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(HeaderExamples.primaryClass),this.classes.push(\"examples\")}}const ey=HeaderExamples;const ty=class header_ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new ey}};class ContentVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"content\"),this.specPath=fc([\"document\",\"objects\",\"MediaType\"])}}const ry=ContentVisitor;class HeaderContent extends Su.Sh{static primaryClass=\"header-content\";constructor(s,o,i){super(s,o,i),this.classes.push(HeaderContent.primaryClass),this.classes.push(\"content\")}}const ny=HeaderContent;const sy=class ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new ny}};class schema_SchemaVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Wf,this.specPath=fc([\"document\",\"objects\",\"Schema\"]),this.canSupportSpecificationExtensions=!0}}const oy=schema_SchemaVisitor,iy=Rf.visitors.document.objects.JSONSchema.fixedFields.allOf;const ay=class AllOfVisitor_AllOfVisitor extends iy{ArrayElement(s){const o=iy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},cy=Rf.visitors.document.objects.JSONSchema.fixedFields.anyOf;const ly=class AnyOfVisitor_AnyOfVisitor extends cy{ArrayElement(s){const o=cy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},uy=Rf.visitors.document.objects.JSONSchema.fixedFields.oneOf;const py=class OneOfVisitor_OneOfVisitor extends uy{ArrayElement(s){const o=uy.prototype.ArrayElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},hy=Rf.visitors.document.objects.JSONSchema.fixedFields.items;const dy=class ItemsVisitor_ItemsVisitor extends hy{ObjectElement(s){const o=hy.prototype.ObjectElement.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}ArrayElement(s){return this.enter(s)}},fy=Rf.visitors.document.objects.JSONSchema.fixedFields.properties;const my=class PropertiesVisitor_PropertiesVisitor extends fy{ObjectElement(s){const o=fy.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}},gy=Rf.visitors.document.objects.JSONSchema.fixedFields.type;const yy=class TypeVisitor_TypeVisitor extends gy{ArrayElement(s){return this.enter(s)}},vy=Rf.visitors.JSONSchemaOrJSONReferenceVisitor;const by=class SchemaOrReferenceVisitor_SchemaOrReferenceVisitor extends vy{ObjectElement(s){const o=vy.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"schema\"),o}};class DiscriminatorVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Jp,this.specPath=fc([\"document\",\"objects\",\"Discriminator\"]),this.canSupportSpecificationExtensions=!1}}const _y=DiscriminatorVisitor;class DiscriminatorMapping extends Su.Sh{static primaryClass=\"discriminator-mapping\";constructor(s,o,i){super(s,o,i),this.classes.push(DiscriminatorMapping.primaryClass)}}const Sy=DiscriminatorMapping;class MappingVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Sy,this.specPath=fc([\"value\"])}}const Ey=MappingVisitor;class XmlVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new em,this.specPath=fc([\"document\",\"objects\",\"XML\"]),this.canSupportSpecificationExtensions=!0}}const wy=XmlVisitor;class ParameterExamples extends Su.Sh{static primaryClass=\"parameter-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(ParameterExamples.primaryClass),this.classes.push(\"examples\")}}const xy=ParameterExamples;const ky=class parameter_ExamplesVisitor_ExamplesVisitor extends fg{constructor(s){super(s),this.element=new xy}};class ParameterContent extends Su.Sh{static primaryClass=\"parameter-content\";constructor(s,o,i){super(s,o,i),this.classes.push(ParameterContent.primaryClass),this.classes.push(\"content\")}}const Oy=ParameterContent;const Cy=class parameter_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new Oy}};class ComponentsSchemas extends Su.Sh{static primaryClass=\"components-schemas\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsSchemas.primaryClass)}}const Ay=ComponentsSchemas;class SchemasVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ay,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Schema\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"schema\")})),o}}const jy=SchemasVisitor;class ComponentsResponses extends Su.Sh{static primaryClass=\"components-responses\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsResponses.primaryClass)}}const Iy=ComponentsResponses;class ResponsesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Iy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Response\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"response\")})),this.element.filter(Xm).forEach(((s,o)=>{s.setMetaProperty(\"http-status-code\",serializers_value(o))})),o}}const Py=ResponsesVisitor;class ComponentsParameters extends Su.Sh{static primaryClass=\"components-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsParameters.primaryClass),this.classes.push(\"parameters\")}}const Ty=ComponentsParameters;class ParametersVisitor_ParametersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ty,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Parameter\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"parameter\")})),o}}const Ny=ParametersVisitor_ParametersVisitor;class ComponentsExamples extends Su.Sh{static primaryClass=\"components-examples\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsExamples.primaryClass),this.classes.push(\"examples\")}}const My=ComponentsExamples;class components_ExamplesVisitor_ExamplesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new My,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Example\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"example\")})),o}}const Ry=components_ExamplesVisitor_ExamplesVisitor;class ComponentsRequestBodies extends Su.Sh{static primaryClass=\"components-request-bodies\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsRequestBodies.primaryClass)}}const Dy=ComponentsRequestBodies;class RequestBodiesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Dy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"RequestBody\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"requestBody\")})),o}}const Ly=RequestBodiesVisitor;class ComponentsHeaders extends Su.Sh{static primaryClass=\"components-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsHeaders.primaryClass)}}const Fy=ComponentsHeaders;class HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Fy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const By=HeadersVisitor;class ComponentsSecuritySchemes extends Su.Sh{static primaryClass=\"components-security-schemes\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsSecuritySchemes.primaryClass)}}const $y=ComponentsSecuritySchemes;class SecuritySchemesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new $y,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"SecurityScheme\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"securityScheme\")})),o}}const qy=SecuritySchemesVisitor;class ComponentsLinks extends Su.Sh{static primaryClass=\"components-links\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsLinks.primaryClass)}}const Vy=ComponentsLinks;class LinksVisitor_LinksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Vy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Link\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"link\")})),o}}const Uy=LinksVisitor_LinksVisitor;class ComponentsCallbacks extends Su.Sh{static primaryClass=\"components-callbacks\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsCallbacks.primaryClass)}}const zy=ComponentsCallbacks;class CallbacksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new zy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Callback\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"callback\")})),o}}const Wy=CallbacksVisitor;class ExampleVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Kp,this.specPath=fc([\"document\",\"objects\",\"Example\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.externalValue)&&this.element.classes.push(\"reference-element\"),o}}const Jy=ExampleVisitor;const Hy=class ExternalValueVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class ExternalDocumentationVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Gp,this.specPath=fc([\"document\",\"objects\",\"ExternalDocumentation\"]),this.canSupportSpecificationExtensions=!0}}const Ky=ExternalDocumentationVisitor;class encoding_EncodingVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Hp,this.specPath=fc([\"document\",\"objects\",\"Encoding\"]),this.canSupportSpecificationExtensions=!0}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.headers)&&this.element.headers.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const Gy=encoding_EncodingVisitor;class EncodingHeaders extends Su.Sh{static primaryClass=\"encoding-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(EncodingHeaders.primaryClass)}}const Yy=EncodingHeaders;class HeadersVisitor_HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Yy,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.forEach(((s,o)=>{if(!Bm(s))return;const i=serializers_value(o);s.setMetaProperty(\"headerName\",i)})),o}}const Xy=HeadersVisitor_HeadersVisitor;class PathsVisitor extends(Mixin(Sm,rm)){constructor(s){super(s),this.element=new Oh,this.specPath=fc([\"document\",\"objects\",\"PathItem\"]),this.canSupportSpecificationExtensions=!0,this.fieldPatternPredicate=es_T}ObjectElement(s){const o=Sm.prototype.ObjectElement.call(this,s);return this.element.filter(Hm).forEach(((s,o)=>{o.classes.push(\"openapi-path-template\"),o.classes.push(\"path-template\"),s.setMetaProperty(\"path\",cloneDeep(o))})),o}}const Qy=PathsVisitor;class RequestBodyVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ih,this.specPath=fc([\"document\",\"objects\",\"RequestBody\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),o}}const Zy=RequestBodyVisitor;class RequestBodyContent extends Su.Sh{static primaryClass=\"request-body-content\";constructor(s,o,i){super(s,o,i),this.classes.push(RequestBodyContent.primaryClass),this.classes.push(\"content\")}}const ev=RequestBodyContent;const tv=class request_body_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new ev}};class CallbackVisitor extends(Mixin(Sm,rm)){constructor(s){super(s),this.element=new Up,this.specPath=fc([\"document\",\"objects\",\"PathItem\"]),this.canSupportSpecificationExtensions=!0,this.fieldPatternPredicate=s=>/{(?<expression>[^}]{1,2083})}/.test(String(s))}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Hm).forEach(((s,o)=>{s.setMetaProperty(\"runtime-expression\",serializers_value(o))})),o}}const rv=CallbackVisitor;class ResponseVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ph,this.specPath=fc([\"document\",\"objects\",\"Response\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return Mu(this.element.contentProp)&&this.element.contentProp.filter(og).forEach(((s,o)=>{s.setMetaProperty(\"media-type\",serializers_value(o))})),Mu(this.element.headers)&&this.element.headers.filter(Bm).forEach(((s,o)=>{s.setMetaProperty(\"header-name\",serializers_value(o))})),o}}const nv=ResponseVisitor;class ResponseHeaders extends Su.Sh{static primaryClass=\"response-headers\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseHeaders.primaryClass)}}const sv=ResponseHeaders;class response_HeadersVisitor_HeadersVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new sv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Header\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"header\")})),this.element.forEach(((s,o)=>{if(!Bm(s))return;const i=serializers_value(o);s.setMetaProperty(\"header-name\",i)})),o}}const ov=response_HeadersVisitor_HeadersVisitor;class ResponseContent extends Su.Sh{static primaryClass=\"response-content\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseContent.primaryClass),this.classes.push(\"content\")}}const iv=ResponseContent;const av=class response_ContentVisitor_ContentVisitor extends ry{constructor(s){super(s),this.element=new iv}};class ResponseLinks extends Su.Sh{static primaryClass=\"response-links\";constructor(s,o,i){super(s,o,i),this.classes.push(ResponseLinks.primaryClass)}}const cv=ResponseLinks;class response_LinksVisitor_LinksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new cv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Link\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"link\")})),o}}const lv=response_LinksVisitor_LinksVisitor;function _isNumber(s){return\"[object Number]\"===Object.prototype.toString.call(s)}var uv=_curry2((function range(s,o){if(!_isNumber(s)||!_isNumber(o))throw new TypeError(\"Both arguments to range must be numbers\");for(var i=Array(s<o?o-s:0),a=s<0?o+Math.abs(s):o-s,u=0;u<a;)i[u]=u+s,u+=1;return i}));const pv=uv;function hasOrAdd(s,o,i){var a,u=typeof s;switch(u){case\"string\":case\"number\":return 0===s&&1/s==-1/0?!!i._items[\"-0\"]||(o&&(i._items[\"-0\"]=!0),!1):null!==i._nativeSet?o?(a=i._nativeSet.size,i._nativeSet.add(s),i._nativeSet.size===a):i._nativeSet.has(s):u in i._items?s in i._items[u]||(o&&(i._items[u][s]=!0),!1):(o&&(i._items[u]={},i._items[u][s]=!0),!1);case\"boolean\":if(u in i._items){var _=s?1:0;return!!i._items[u][_]||(o&&(i._items[u][_]=!0),!1)}return o&&(i._items[u]=s?[!1,!0]:[!0,!1]),!1;case\"function\":return null!==i._nativeSet?o?(a=i._nativeSet.size,i._nativeSet.add(s),i._nativeSet.size===a):i._nativeSet.has(s):u in i._items?!!_includes(s,i._items[u])||(o&&i._items[u].push(s),!1):(o&&(i._items[u]=[s]),!1);case\"undefined\":return!!i._items[u]||(o&&(i._items[u]=!0),!1);case\"object\":if(null===s)return!!i._items.null||(o&&(i._items.null=!0),!1);default:return(u=Object.prototype.toString.call(s))in i._items?!!_includes(s,i._items[u])||(o&&i._items[u].push(s),!1):(o&&(i._items[u]=[s]),!1)}}const hv=function(){function _Set(){this._nativeSet=\"function\"==typeof Set?new Set:null,this._items={}}return _Set.prototype.add=function(s){return!hasOrAdd(s,!0,this)},_Set.prototype.has=function(s){return hasOrAdd(s,!1,this)},_Set}();var dv=_curry2((function difference(s,o){for(var i=[],a=0,u=s.length,_=o.length,w=new hv,x=0;x<_;x+=1)w.add(o[x]);for(;a<u;)w.add(s[a])&&(i[i.length]=s[a]),a+=1;return i}));const fv=dv;class MixedFieldsVisitor extends(Mixin(um,Sm)){specPathFixedFields;specPathPatternedFields;constructor({specPathFixedFields:s,specPathPatternedFields:o,...i}){super({...i}),this.specPathFixedFields=s,this.specPathPatternedFields=o}ObjectElement(s){const{specPath:o,ignoredFields:i}=this;try{this.specPath=this.specPathFixedFields;const o=this.retrieveFixedFields(this.specPath(s));this.ignoredFields=[...i,...fv(s.keys(),o)],um.prototype.ObjectElement.call(this,s),this.specPath=this.specPathPatternedFields,this.ignoredFields=o,Sm.prototype.ObjectElement.call(this,s)}catch(s){throw this.specPath=o,s}return Uu}}const mv=MixedFieldsVisitor;class responses_ResponsesVisitor extends(Mixin(mv,rm)){constructor(s){super(s),this.element=new Rh,this.specPathFixedFields=fc([\"document\",\"objects\",\"Responses\"]),this.canSupportSpecificationExtensions=!0,this.specPathPatternedFields=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Response\"],this.fieldPatternPredicate=s=>new RegExp(`^(1XX|2XX|3XX|4XX|5XX|${pv(100,600).join(\"|\")})$`).test(String(s))}ObjectElement(s){const o=mv.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"response\")})),this.element.filter(Xm).forEach(((s,o)=>{const i=cloneDeep(o);this.fieldPatternPredicate(serializers_value(i))&&s.setMetaProperty(\"http-status-code\",i)})),o}}const gv=responses_ResponsesVisitor;class DefaultVisitor extends(Mixin(Nm,rm)){constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"Response\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)?this.element.setMetaProperty(\"referenced-element\",\"response\"):Xm(this.element)&&this.element.setMetaProperty(\"http-status-code\",\"default\"),o}}const yv=DefaultVisitor;class OperationVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new vh,this.specPath=fc([\"document\",\"objects\",\"Operation\"])}}const vv=OperationVisitor;class OperationTags extends Su.wE{static primaryClass=\"operation-tags\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationTags.primaryClass)}}const bv=OperationTags;const _v=class TagsVisitor extends rm{constructor(s){super(s),this.element=new bv}ArrayElement(s){return this.element=this.element.concat(cloneDeep(s)),Uu}};class OperationParameters extends Su.wE{static primaryClass=\"operation-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationParameters.primaryClass),this.classes.push(\"parameters\")}}const Sv=OperationParameters;class open_api_3_0_ParametersVisitor_ParametersVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"parameters\")}ArrayElement(s){return s.forEach((s=>{const o=isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Parameter\"],i=this.toRefractedElement(o,s);Gm(i)&&i.setMetaProperty(\"referenced-element\",\"parameter\"),this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Ev=open_api_3_0_ParametersVisitor_ParametersVisitor;const wv=class operation_ParametersVisitor_ParametersVisitor extends Ev{constructor(s){super(s),this.element=new Sv}};const xv=class RequestBodyVisitor_RequestBodyVisitor extends Nm{constructor(s){super(s),this.alternator=[{predicate:isReferenceLikeElement,specPath:[\"document\",\"objects\",\"Reference\"]},{predicate:es_T,specPath:[\"document\",\"objects\",\"RequestBody\"]}]}ObjectElement(s){const o=Nm.prototype.enter.call(this,s);return Gm(this.element)&&this.element.setMetaProperty(\"referenced-element\",\"requestBody\"),o}};class OperationCallbacks extends Su.Sh{static primaryClass=\"operation-callbacks\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationCallbacks.primaryClass)}}const kv=OperationCallbacks;class CallbacksVisitor_CallbacksVisitor extends(Mixin(Em,rm)){specPath;constructor(s){super(s),this.element=new kv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"Callback\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(Gm).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"callback\")})),o}}const Ov=CallbacksVisitor_CallbacksVisitor;class OperationSecurity extends Su.wE{static primaryClass=\"operation-security\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationSecurity.primaryClass),this.classes.push(\"security\")}}const Cv=OperationSecurity;class SecurityVisitor_SecurityVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Cv}ArrayElement(s){return s.forEach((s=>{const o=Mu(s)?[\"document\",\"objects\",\"SecurityRequirement\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Av=SecurityVisitor_SecurityVisitor;class OperationServers extends Su.wE{static primaryClass=\"operation-servers\";constructor(s,o,i){super(s,o,i),this.classes.push(OperationServers.primaryClass),this.classes.push(\"servers\")}}const jv=OperationServers;const Iv=class ServersVisitor_ServersVisitor extends Am{constructor(s){super(s),this.element=new jv}};class PathItemVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new wh,this.specPath=fc([\"document\",\"objects\",\"PathItem\"])}ObjectElement(s){const o=um.prototype.ObjectElement.call(this,s);return this.element.filter(Wm).forEach(((s,o)=>{const i=cloneDeep(o);i.content=serializers_value(i).toUpperCase(),s.setMetaProperty(\"http-method\",i)})),Iu(this.element.$ref)&&this.element.classes.push(\"reference-element\"),o}}const Pv=PathItemVisitor;const Tv=class path_item_$RefVisitor_$RefVisitor extends rm{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class PathItemServers extends Su.wE{static primaryClass=\"path-item-servers\";constructor(s,o,i){super(s,o,i),this.classes.push(PathItemServers.primaryClass),this.classes.push(\"servers\")}}const Nv=PathItemServers;const Mv=class path_item_ServersVisitor_ServersVisitor extends Am{constructor(s){super(s),this.element=new Nv}};class PathItemParameters extends Su.wE{static primaryClass=\"path-item-parameters\";constructor(s,o,i){super(s,o,i),this.classes.push(PathItemParameters.primaryClass),this.classes.push(\"parameters\")}}const Rv=PathItemParameters;const Dv=class path_item_ParametersVisitor_ParametersVisitor extends Ev{constructor(s){super(s),this.element=new Rv}};class SecuritySchemeVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Hf,this.specPath=fc([\"document\",\"objects\",\"SecurityScheme\"]),this.canSupportSpecificationExtensions=!0}}const Lv=SecuritySchemeVisitor;class OAuthFlowsVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new uh,this.specPath=fc([\"document\",\"objects\",\"OAuthFlows\"]),this.canSupportSpecificationExtensions=!0}}const Fv=OAuthFlowsVisitor;class OAuthFlowVisitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new rh,this.specPath=fc([\"document\",\"objects\",\"OAuthFlow\"]),this.canSupportSpecificationExtensions=!0}}const Bv=OAuthFlowVisitor;class OAuthFlowScopes extends Su.Sh{static primaryClass=\"oauth-flow-scopes\";constructor(s,o,i){super(s,o,i),this.classes.push(OAuthFlowScopes.primaryClass)}}const $v=OAuthFlowScopes;class ScopesVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new $v,this.specPath=fc([\"value\"])}}const qv=ScopesVisitor;class Tags extends Su.wE{static primaryClass=\"tags\";constructor(s,o,i){super(s,o,i),this.classes.push(Tags.primaryClass)}}const Vv=Tags;class TagsVisitor_TagsVisitor extends(Mixin(nm,rm)){constructor(s){super(s),this.element=new Vv}ArrayElement(s){return s.forEach((s=>{const o=lm(s)?[\"document\",\"objects\",\"Tag\"]:[\"value\"],i=this.toRefractedElement(o,s);this.element.push(i)})),this.copyMetaAndAttributes(s,this.element),Uu}}const Uv=TagsVisitor_TagsVisitor,{fixedFields:zv}=Rf.visitors.document.objects.JSONSchema,Wv={visitors:{value:rm,document:{objects:{OpenApi:{$visitor:pm,fixedFields:{openapi:hm,info:{$ref:\"#/visitors/document/objects/Info\"},servers:Am,paths:{$ref:\"#/visitors/document/objects/Paths\"},components:{$ref:\"#/visitors/document/objects/Components\"},security:qg,tags:Uv,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Info:{$visitor:fm,fixedFields:{title:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},termsOfService:{$ref:\"#/visitors/value\"},contact:{$ref:\"#/visitors/document/objects/Contact\"},license:{$ref:\"#/visitors/document/objects/License\"},version:mm}},Contact:{$visitor:gm,fixedFields:{name:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"},email:{$ref:\"#/visitors/value\"}}},License:{$visitor:ym,fixedFields:{name:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"}}},Server:{$visitor:km,fixedFields:{url:Om,description:{$ref:\"#/visitors/value\"},variables:Pm}},ServerVariable:{$visitor:jm,fixedFields:{enum:{$ref:\"#/visitors/value\"},default:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"}}},Components:{$visitor:Vg,fixedFields:{schemas:jy,responses:Py,parameters:Ny,examples:Ry,requestBodies:Ly,headers:By,securitySchemes:qy,links:Uy,callbacks:Wy}},Paths:{$visitor:Qy},PathItem:{$visitor:Pv,fixedFields:{$ref:Tv,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},get:{$ref:\"#/visitors/document/objects/Operation\"},put:{$ref:\"#/visitors/document/objects/Operation\"},post:{$ref:\"#/visitors/document/objects/Operation\"},delete:{$ref:\"#/visitors/document/objects/Operation\"},options:{$ref:\"#/visitors/document/objects/Operation\"},head:{$ref:\"#/visitors/document/objects/Operation\"},patch:{$ref:\"#/visitors/document/objects/Operation\"},trace:{$ref:\"#/visitors/document/objects/Operation\"},servers:Mv,parameters:Dv}},Operation:{$visitor:vv,fixedFields:{tags:_v,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},operationId:{$ref:\"#/visitors/value\"},parameters:wv,requestBody:xv,responses:{$ref:\"#/visitors/document/objects/Responses\"},callbacks:Ov,deprecated:{$ref:\"#/visitors/value\"},security:Av,servers:Iv}},ExternalDocumentation:{$visitor:Ky,fixedFields:{description:{$ref:\"#/visitors/value\"},url:{$ref:\"#/visitors/value\"}}},Parameter:{$visitor:Kg,fixedFields:{name:{$ref:\"#/visitors/value\"},in:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},required:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"},allowEmptyValue:{$ref:\"#/visitors/value\"},style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"},schema:Yg,example:{$ref:\"#/visitors/value\"},examples:ky,content:Cy}},RequestBody:{$visitor:Zy,fixedFields:{description:{$ref:\"#/visitors/value\"},content:tv,required:{$ref:\"#/visitors/value\"}}},MediaType:{$visitor:Tm,fixedFields:{schema:pg,example:{$ref:\"#/visitors/value\"},examples:gg,encoding:_g}},Encoding:{$visitor:Gy,fixedFields:{contentType:{$ref:\"#/visitors/value\"},headers:Xy,style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"}}},Responses:{$visitor:gv,fixedFields:{default:yv}},Response:{$visitor:nv,fixedFields:{description:{$ref:\"#/visitors/value\"},headers:ov,content:av,links:lv}},Callback:{$visitor:rv},Example:{$visitor:Jy,fixedFields:{summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},value:{$ref:\"#/visitors/value\"},externalValue:Hy}},Link:{$visitor:vm,fixedFields:{operationRef:bm,operationId:_m,parameters:xm,requestBody:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},server:{$ref:\"#/visitors/document/objects/Server\"}}},Header:{$visitor:Xg,fixedFields:{description:{$ref:\"#/visitors/value\"},required:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"},allowEmptyValue:{$ref:\"#/visitors/value\"},style:{$ref:\"#/visitors/value\"},explode:{$ref:\"#/visitors/value\"},allowReserved:{$ref:\"#/visitors/value\"},schema:Zg,example:{$ref:\"#/visitors/value\"},examples:ty,content:sy}},Tag:{$visitor:Ug,fixedFields:{name:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Reference:{$visitor:zg,fixedFields:{$ref:Wg}},JSONSchema:{$ref:\"#/visitors/document/objects/Schema\"},JSONReference:{$ref:\"#/visitors/document/objects/Reference\"},Schema:{$visitor:oy,fixedFields:{title:zv.title,multipleOf:zv.multipleOf,maximum:zv.maximum,exclusiveMaximum:zv.exclusiveMaximum,minimum:zv.minimum,exclusiveMinimum:zv.exclusiveMinimum,maxLength:zv.maxLength,minLength:zv.minLength,pattern:zv.pattern,maxItems:zv.maxItems,minItems:zv.minItems,uniqueItems:zv.uniqueItems,maxProperties:zv.maxProperties,minProperties:zv.minProperties,required:zv.required,enum:zv.enum,type:yy,allOf:ay,anyOf:ly,oneOf:py,not:by,items:dy,properties:my,additionalProperties:by,description:zv.description,format:zv.format,default:zv.default,nullable:{$ref:\"#/visitors/value\"},discriminator:{$ref:\"#/visitors/document/objects/Discriminator\"},writeOnly:{$ref:\"#/visitors/value\"},xml:{$ref:\"#/visitors/document/objects/XML\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},example:{$ref:\"#/visitors/value\"},deprecated:{$ref:\"#/visitors/value\"}}},Discriminator:{$visitor:_y,fixedFields:{propertyName:{$ref:\"#/visitors/value\"},mapping:Ey}},XML:{$visitor:wy,fixedFields:{name:{$ref:\"#/visitors/value\"},namespace:{$ref:\"#/visitors/value\"},prefix:{$ref:\"#/visitors/value\"},attribute:{$ref:\"#/visitors/value\"},wrapped:{$ref:\"#/visitors/value\"}}},SecurityScheme:{$visitor:Lv,fixedFields:{type:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"},name:{$ref:\"#/visitors/value\"},in:{$ref:\"#/visitors/value\"},scheme:{$ref:\"#/visitors/value\"},bearerFormat:{$ref:\"#/visitors/value\"},flows:{$ref:\"#/visitors/document/objects/OAuthFlows\"},openIdConnectUrl:{$ref:\"#/visitors/value\"}}},OAuthFlows:{$visitor:Fv,fixedFields:{implicit:{$ref:\"#/visitors/document/objects/OAuthFlow\"},password:{$ref:\"#/visitors/document/objects/OAuthFlow\"},clientCredentials:{$ref:\"#/visitors/document/objects/OAuthFlow\"},authorizationCode:{$ref:\"#/visitors/document/objects/OAuthFlow\"}}},OAuthFlow:{$visitor:Bv,fixedFields:{authorizationUrl:{$ref:\"#/visitors/value\"},tokenUrl:{$ref:\"#/visitors/value\"},refreshUrl:{$ref:\"#/visitors/value\"},scopes:qv}},SecurityRequirement:{$visitor:xg}},extension:{$visitor:dm}}}},src_traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},Jv={CallbackElement:[\"content\"],ComponentsElement:[\"content\"],ContactElement:[\"content\"],DiscriminatorElement:[\"content\"],Encoding:[\"content\"],Example:[\"content\"],ExternalDocumentationElement:[\"content\"],HeaderElement:[\"content\"],InfoElement:[\"content\"],LicenseElement:[\"content\"],MediaTypeElement:[\"content\"],OAuthFlowElement:[\"content\"],OAuthFlowsElement:[\"content\"],OpenApi3_0Element:[\"content\"],OperationElement:[\"content\"],ParameterElement:[\"content\"],PathItemElement:[\"content\"],PathsElement:[\"content\"],ReferenceElement:[\"content\"],RequestBodyElement:[\"content\"],ResponseElement:[\"content\"],ResponsesElement:[\"content\"],SchemaElement:[\"content\"],SecurityRequirementElement:[\"content\"],SecuritySchemeElement:[\"content\"],ServerElement:[\"content\"],ServerVariableElement:[\"content\"],TagElement:[\"content\"],...Ku},Hv={namespace:s=>{const{base:o}=s;return o.register(\"callback\",Up),o.register(\"components\",zp),o.register(\"contact\",Wp),o.register(\"discriminator\",Jp),o.register(\"encoding\",Hp),o.register(\"example\",Kp),o.register(\"externalDocumentation\",Gp),o.register(\"header\",Yp),o.register(\"info\",Xp),o.register(\"license\",Qp),o.register(\"link\",Zp),o.register(\"mediaType\",th),o.register(\"oAuthFlow\",rh),o.register(\"oAuthFlows\",uh),o.register(\"openapi\",dh),o.register(\"openApi3_0\",fh),o.register(\"operation\",vh),o.register(\"parameter\",_h),o.register(\"pathItem\",wh),o.register(\"paths\",Oh),o.register(\"reference\",jh),o.register(\"requestBody\",Ih),o.register(\"response\",Ph),o.register(\"responses\",Rh),o.register(\"schema\",Wf),o.register(\"securityRequirement\",Jf),o.register(\"securityScheme\",Hf),o.register(\"server\",Gf),o.register(\"serverVariable\",Xf),o.register(\"tag\",Qf),o.register(\"xml\",em),o}},Kv=Hv,src_refractor_toolbox=()=>{const s=createNamespace(Kv);return{predicates:{...ce,isElement:ju,isStringElement:Iu,isArrayElement:Ru,isObjectElement:Mu,isMemberElement:Du,includesClasses,hasElementSourceMap},namespace:s}},src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"],plugins:i=[]}={})=>{const a=(0,Su.e)(s),u=dereference(Wv),_=new(tp(o,u))({specObj:u});return visitor_visit(a,_),dispatchPluginsSync(_.element,i,{toolboxCreator:src_refractor_toolbox,visitorOptions:{keyMap:Jv,nodeTypeGetter:src_traversal_visitor_getNodeType}})},src_refractor_createRefractor=s=>(o,i={})=>src_refractor_refract(o,{specPath:s,...i});Up.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Callback\",\"$visitor\"]),zp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Components\",\"$visitor\"]),Wp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Contact\",\"$visitor\"]),Kp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Example\",\"$visitor\"]),Jp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Discriminator\",\"$visitor\"]),Hp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Encoding\",\"$visitor\"]),Gp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ExternalDocumentation\",\"$visitor\"]),Yp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Header\",\"$visitor\"]),Xp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Info\",\"$visitor\"]),Qp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"License\",\"$visitor\"]),Zp.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Link\",\"$visitor\"]),th.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"MediaType\",\"$visitor\"]),rh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlow\",\"$visitor\"]),uh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlows\",\"$visitor\"]),dh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"openapi\"]),fh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"]),vh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Operation\",\"$visitor\"]),_h.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Parameter\",\"$visitor\"]),wh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"PathItem\",\"$visitor\"]),Oh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Paths\",\"$visitor\"]),jh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Reference\",\"$visitor\"]),Ih.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"RequestBody\",\"$visitor\"]),Ph.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Response\",\"$visitor\"]),Rh.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Responses\",\"$visitor\"]),Wf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Schema\",\"$visitor\"]),Jf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityRequirement\",\"$visitor\"]),Hf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityScheme\",\"$visitor\"]),Gf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Server\",\"$visitor\"]),Xf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ServerVariable\",\"$visitor\"]),Qf.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Tag\",\"$visitor\"]),em.refract=src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"XML\",\"$visitor\"]);const Gv=class Callback_Callback extends Up{};const Yv=class Components_Components extends zp{get pathItems(){return this.get(\"pathItems\")}set pathItems(s){this.set(\"pathItems\",s)}};const Xv=class Contact_Contact extends Wp{};const Qv=class Discriminator_Discriminator extends Jp{};const Zv=class Encoding_Encoding extends Hp{};const eb=class Example_Example extends Kp{};const tb=class ExternalDocumentation_ExternalDocumentation extends Gp{};const nb=class Header_Header extends Yp{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const pb=class Info_Info extends Xp{get license(){return this.get(\"license\")}set license(s){this.set(\"license\",s)}get summary(){return this.get(\"summary\")}set summary(s){this.set(\"summary\",s)}};class JsonSchemaDialect extends Su.Om{static default=new JsonSchemaDialect(\"https://spec.openapis.org/oas/3.1/dialect/base\");constructor(s,o,i){super(s,o,i),this.element=\"jsonSchemaDialect\"}}const mb=JsonSchemaDialect;const yb=class License_License extends Qp{get identifier(){return this.get(\"identifier\")}set identifier(s){this.set(\"identifier\",s)}};const _b=class Link_Link extends Zp{};const Sb=class MediaType_MediaType extends th{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const wb=class OAuthFlow_OAuthFlow extends rh{};const Ob=class OAuthFlows_OAuthFlows extends uh{};const Ab=class Openapi_Openapi extends dh{};class OpenApi3_1 extends Su.Sh{constructor(s,o,i){super(s,o,i),this.element=\"openApi3_1\",this.classes.push(\"api\")}get openapi(){return this.get(\"openapi\")}set openapi(s){this.set(\"openapi\",s)}get info(){return this.get(\"info\")}set info(s){this.set(\"info\",s)}get jsonSchemaDialect(){return this.get(\"jsonSchemaDialect\")}set jsonSchemaDialect(s){this.set(\"jsonSchemaDialect\",s)}get servers(){return this.get(\"servers\")}set servers(s){this.set(\"servers\",s)}get paths(){return this.get(\"paths\")}set paths(s){this.set(\"paths\",s)}get components(){return this.get(\"components\")}set components(s){this.set(\"components\",s)}get security(){return this.get(\"security\")}set security(s){this.set(\"security\",s)}get tags(){return this.get(\"tags\")}set tags(s){this.set(\"tags\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get webhooks(){return this.get(\"webhooks\")}set webhooks(s){this.set(\"webhooks\",s)}}const Ib=OpenApi3_1;const Pb=class Operation_Operation extends vh{get requestBody(){return this.get(\"requestBody\")}set requestBody(s){this.set(\"requestBody\",s)}};const Mb=class Parameter_Parameter extends _h{get schema(){return this.get(\"schema\")}set schema(s){this.set(\"schema\",s)}};const Rb=class PathItem_PathItem extends wh{get GET(){return this.get(\"get\")}set GET(s){this.set(\"GET\",s)}get PUT(){return this.get(\"put\")}set PUT(s){this.set(\"PUT\",s)}get POST(){return this.get(\"post\")}set POST(s){this.set(\"POST\",s)}get DELETE(){return this.get(\"delete\")}set DELETE(s){this.set(\"DELETE\",s)}get OPTIONS(){return this.get(\"options\")}set OPTIONS(s){this.set(\"OPTIONS\",s)}get HEAD(){return this.get(\"head\")}set HEAD(s){this.set(\"HEAD\",s)}get PATCH(){return this.get(\"patch\")}set PATCH(s){this.set(\"PATCH\",s)}get TRACE(){return this.get(\"trace\")}set TRACE(s){this.set(\"TRACE\",s)}};const Lb=class Paths_Paths extends Oh{};class Reference_Reference extends jh{}Object.defineProperty(Reference_Reference.prototype,\"description\",{get(){return this.get(\"description\")},set(s){this.set(\"description\",s)},enumerable:!0}),Object.defineProperty(Reference_Reference.prototype,\"summary\",{get(){return this.get(\"summary\")},set(s){this.set(\"summary\",s)},enumerable:!0});const qb=Reference_Reference;const zb=class RequestBody_RequestBody extends Ih{};const Qb=class elements_Response_Response extends Ph{};const e_=class Responses_Responses extends Rh{};const t_=class JSONSchema_JSONSchema extends Lh{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft6\"}get idProp(){throw new Dh(\"id keyword from Core vocabulary has been renamed to $id.\")}set idProp(s){throw new Dh(\"id keyword from Core vocabulary has been renamed to $id.\")}get $id(){return this.get(\"$id\")}set $id(s){this.set(\"$id\",s)}get exclusiveMaximum(){return this.get(\"exclusiveMaximum\")}set exclusiveMaximum(s){this.set(\"exclusiveMaximum\",s)}get exclusiveMinimum(){return this.get(\"exclusiveMinimum\")}set exclusiveMinimum(s){this.set(\"exclusiveMinimum\",s)}get containsProp(){return this.get(\"contains\")}set containsProp(s){this.set(\"contains\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get propertyNames(){return this.get(\"propertyNames\")}set propertyNames(s){this.set(\"propertyNames\",s)}get const(){return this.get(\"const\")}set const(s){this.set(\"const\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get examples(){return this.get(\"examples\")}set examples(s){this.set(\"examples\",s)}};const r_=class LinkDescription_LinkDescription extends Hh{get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get schema(){throw new Dh(\"schema keyword from Hyper-Schema vocabulary has been renamed to submissionSchema.\")}set schema(s){throw new Dh(\"schema keyword from Hyper-Schema vocabulary has been renamed to submissionSchema.\")}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}get method(){throw new Dh(\"method keyword from Hyper-Schema vocabulary has been removed.\")}set method(s){throw new Dh(\"method keyword from Hyper-Schema vocabulary has been removed.\")}get encType(){throw new Dh(\"encType keyword from Hyper-Schema vocabulary has been renamed to submissionEncType.\")}set encType(s){throw new Dh(\"encType keyword from Hyper-Schema vocabulary has been renamed to submissionEncType.\")}get submissionEncType(){return this.get(\"submissionEncType\")}set submissionEncType(s){this.set(\"submissionEncType\",s)}};var n_=_curry3((function assocPath(s,o,i){if(0===s.length)return o;var a=s[0];if(s.length>1){var u=!Gh(i)&&_has(a,i)&&\"object\"==typeof i[a]?i[a]:Xo(s[1])?[]:{};o=assocPath(Array.prototype.slice.call(s,1),o,u)}return function _assoc(s,o,i){if(Xo(s)&&ca(i)){var a=[].concat(i);return a[s]=o,a}var u={};for(var _ in i)u[_]=i[_];return u[s]=o,u}(a,o,i)}));const s_=n_;var o_=_curry3((function remove(s,o,i){var a=Array.prototype.slice.call(i,0);return a.splice(s,o),a}));const i_=o_;var a_=_curry3((function assoc(s,o,i){return s_([s],o,i)}));const c_=a_;var l_=_curry2((function dissocPath(s,o){if(null==o)return o;switch(s.length){case 0:return o;case 1:return function _dissoc(s,o){if(null==o)return o;if(Xo(s)&&ca(o))return i_(s,1,o);var i={};for(var a in o)i[a]=o[a];return delete i[s],i}(s[0],o);default:var i=s[0],a=Array.prototype.slice.call(s,1);return null==o[i]?function _shallowCloneObject(s,o){if(Xo(s)&&ca(o))return[].concat(o);var i={};for(var a in o)i[a]=o[a];return i}(i,o):c_(i,dissocPath(a,o[i]),o)}}));const u_=l_;const p_=class json_schema_JSONSchemaVisitor extends Ud{constructor(s){super(s),this.element=new t_}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-06/schema#\"}BooleanElement(s){const o=this.enter(s);return this.element.classes.push(\"boolean-json-schema\"),o}handleSchemaIdentifier(s,o=\"$id\"){return super.handleSchemaIdentifier(s,o)}};const h_=class json_schema_ItemsVisitor_ItemsVisitor extends Wd{BooleanElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}};const d_=class json_schema_ExamplesVisitor_ExamplesVisitor extends _d{ArrayElement(s){const o=this.enter(s);return this.element.classes.push(\"json-schema-examples\"),o}};const f_=class link_description_LinkDescriptionVisitor extends Nf{constructor(s){super(s),this.element=new r_}},m_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],p_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"id\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$id\"],Rf.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],h_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"const\"],Rf.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"examples\"],d_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],f_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"schema\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],Rf.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"method\"]),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"encType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionEncType\"],Rf.visitors.value))(Rf),g_={JSONSchemaDraft6Element:[\"content\"],JSONReferenceElement:[\"content\"],MediaElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},y_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof t_||s(a)&&o(\"JSONSchemaDraft6\",a)&&i(\"object\",a))),v_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof r_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),b_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft6\",t_),o.register(\"jSONReference\",Fh),o.register(\"media\",Jh),o.register(\"linkDescription\",r_),o}},S_=b_,apidom_ns_json_schema_draft_6_src_refractor_toolbox=()=>{const s=createNamespace(S_);return{predicates:{...le,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_draft_6_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=m_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_draft_6_src_refractor_toolbox,visitorOptions:{keyMap:g_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_draft_6_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_draft_6_src_refractor_refract(o,{specPath:s,...i});t_.refract=apidom_ns_json_schema_draft_6_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),r_.refract=apidom_ns_json_schema_draft_6_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const E_=class elements_JSONSchema_JSONSchema extends t_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchemaDraft7\"}get $comment(){return this.get(\"$comment\")}set $comment(s){this.set(\"$comment\",s)}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get if(){return this.get(\"if\")}set if(s){this.set(\"if\",s)}get then(){return this.get(\"then\")}set then(s){this.set(\"then\",s)}get else(){return this.get(\"else\")}set else(s){this.set(\"else\",s)}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get contentEncoding(){return this.get(\"contentEncoding\")}set contentEncoding(s){this.set(\"contentEncoding\",s)}get contentMediaType(){return this.get(\"contentMediaType\")}set contentMediaType(s){this.set(\"contentMediaType\",s)}get media(){throw new Dh('media keyword from Hyper-Schema vocabulary has been moved to validation vocabulary as \"contentMediaType\" / \"contentEncoding\"')}set media(s){throw new Dh('media keyword from Hyper-Schema vocabulary has been moved to validation vocabulary as \"contentMediaType\" / \"contentEncoding\"')}get writeOnly(){return this.get(\"writeOnly\")}set writeOnly(s){this.set(\"writeOnly\",s)}};const w_=class elements_LinkDescription_LinkDescription extends r_{get anchor(){return this.get(\"anchor\")}set anchor(s){this.set(\"anchor\",s)}get anchorPointer(){return this.get(\"anchorPointer\")}set anchorPointer(s){this.set(\"anchorPointer\",s)}get templatePointers(){return this.get(\"templatePointers\")}set templatePointers(s){this.set(\"templatePointers\",s)}get templateRequired(){return this.get(\"templateRequired\")}set templateRequired(s){this.set(\"templateRequired\",s)}get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get mediaType(){throw new Dh(\"mediaType keyword from Hyper-Schema vocabulary has been renamed to targetMediaType.\")}set mediaType(s){throw new Dh(\"mediaType keyword from Hyper-Schema vocabulary has been renamed to targetMediaType.\")}get targetMediaType(){return this.get(\"targetMediaType\")}set targetMediaType(s){this.set(\"targetMediaType\",s)}get targetHints(){return this.get(\"targetHints\")}set targetHints(s){this.set(\"targetHints\",s)}get description(){return this.get(\"description\")}set description(s){this.set(\"description\",s)}get $comment(){return this.get(\"$comment\")}set $comment(s){this.set(\"$comment\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}get submissionEncType(){throw new Dh(\"submissionEncType keyword from Hyper-Schema vocabulary has been renamed to submissionMediaType.\")}set submissionEncType(s){throw new Dh(\"submissionEncType keyword from Hyper-Schema vocabulary has been renamed to submissionMediaType.\")}get submissionMediaType(){return this.get(\"submissionMediaType\")}set submissionMediaType(s){this.set(\"submissionMediaType\",s)}};const x_=class visitors_json_schema_JSONSchemaVisitor extends p_{constructor(s){super(s),this.element=new E_}get defaultDialectIdentifier(){return\"http://json-schema.org/draft-07/schema#\"}};const k_=class json_schema_link_description_LinkDescriptionVisitor extends f_{constructor(s){super(s),this.element=new w_}},O_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],x_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$comment\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"media\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentEncoding\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentMediaType\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"writeOnly\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],k_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"anchor\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"anchorPointer\"],m_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"mediaType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetMediaType\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetHints\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"description\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"$comment\"],m_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],m_.visitors.JSONSchemaOrJSONReferenceVisitor),u_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionEncType\"]),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionMediaType\"],m_.visitors.value))(m_),C_={JSONSchemaDraft7Element:[\"content\"],JSONReferenceElement:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},A_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof E_||s(a)&&o(\"JSONSchemaDraft7\",a)&&i(\"object\",a))),j_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof w_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),I_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchemaDraft7\",E_),o.register(\"jSONReference\",Fh),o.register(\"linkDescription\",w_),o}},P_=I_,apidom_ns_json_schema_draft_7_src_refractor_toolbox=()=>{const s=createNamespace(P_);return{predicates:{...pe,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_draft_7_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=O_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_draft_7_src_refractor_toolbox,visitorOptions:{keyMap:C_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_draft_7_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_draft_7_src_refractor_refract(o,{specPath:s,...i});E_.refract=apidom_ns_json_schema_draft_7_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),w_.refract=apidom_ns_json_schema_draft_7_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const T_=class src_elements_JSONSchema_JSONSchema extends E_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchema201909\"}get $vocabulary(){return this.get(\"$vocabulary\")}set $vocabulary(s){this.set(\"$vocabulary\",s)}get $anchor(){return this.get(\"$anchor\")}set $anchor(s){this.set(\"$anchor\",s)}get $recursiveAnchor(){return this.get(\"$recursiveAnchor\")}set $recursiveAnchor(s){this.set(\"$recursiveAnchor\",s)}get $recursiveRef(){return this.get(\"$recursiveRef\")}set $recursiveRef(s){this.set(\"$recursiveRef\",s)}get $ref(){return this.get(\"$ref\")}set $ref(s){this.set(\"$ref\",s)}get $defs(){return this.get(\"$defs\")}set $defs(s){this.set(\"$defs\",s)}get definitions(){throw new Dh(\"definitions keyword from Validation vocabulary has been renamed to $defs.\")}set definitions(s){throw new Dh(\"definitions keyword from Validation vocabulary has been renamed to $defs.\")}get not(){return this.get(\"not\")}set not(s){this.set(\"not\",s)}get if(){return this.get(\"if\")}set if(s){this.set(\"if\",s)}get then(){return this.get(\"then\")}set then(s){this.set(\"then\",s)}get else(){return this.get(\"else\")}set else(s){this.set(\"else\",s)}get dependentSchemas(){return this.get(\"dependentSchemas\")}set dependentSchemas(s){this.set(\"dependentSchemas\",s)}get dependencies(){throw new Dh(\"dependencies keyword from Validation vocabulary has been renamed to dependentSchemas.\")}set dependencies(s){throw new Dh(\"dependencies keyword from Validation vocabulary has been renamed to dependentSchemas.\")}get items(){return this.get(\"items\")}set items(s){this.set(\"items\",s)}get containsProp(){return this.get(\"contains\")}set containsProp(s){this.set(\"contains\",s)}get additionalProperties(){return this.get(\"additionalProperties\")}set additionalProperties(s){this.set(\"additionalProperties\",s)}get additionalItems(){return this.get(\"additionalItems\")}set additionalItems(s){this.set(\"additionalItems\",s)}get propertyNames(){return this.get(\"propertyNames\")}set propertyNames(s){this.set(\"propertyNames\",s)}get unevaluatedItems(){return this.get(\"unevaluatedItems\")}set unevaluatedItems(s){this.set(\"unevaluatedItems\",s)}get unevaluatedProperties(){return this.get(\"unevaluatedProperties\")}set unevaluatedProperties(s){this.set(\"unevaluatedProperties\",s)}get maxContains(){return this.get(\"maxContains\")}set maxContains(s){this.set(\"maxContains\",s)}get minContains(){return this.get(\"minContains\")}set minContains(s){this.set(\"minContains\",s)}get dependentRequired(){return this.get(\"dependentRequired\")}set dependentRequired(s){this.set(\"dependentRequired\",s)}get deprecated(){return this.get(\"deprecated\")}set deprecated(s){this.set(\"deprecated\",s)}get contentSchema(){return this.get(\"contentSchema\")}set contentSchema(s){this.set(\"contentSchema\",s)}};const N_=class src_elements_LinkDescription_LinkDescription extends w_{get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}};const M_=class refractor_visitors_json_schema_JSONSchemaVisitor extends x_{constructor(s){super(s),this.element=new T_}get defaultDialectIdentifier(){return\"https://json-schema.org/draft/2019-09/schema\"}ObjectElement(s){this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element;const o=Dd.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&(this.element.classes.push(\"reference-element\"),this.element.setMetaProperty(\"referenced-element\",\"schema\")),o}};const R_=class $vocabularyVisitor extends _d{ObjectElement(s){const o=super.enter(s);return this.element.classes.push(\"json-schema-$vocabulary\"),o}};const D_=class $refVisitor extends _d{StringElement(s){const o=super.enter(s);return this.element.classes.push(\"reference-value\"),o}};class $defsVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-$defs\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const L_=$defsVisitor;class json_schema_AllOfVisitor_AllOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-allOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const F_=json_schema_AllOfVisitor_AllOfVisitor;class json_schema_AnyOfVisitor_AnyOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-anyOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const B_=json_schema_AnyOfVisitor_AnyOfVisitor;class json_schema_OneOfVisitor_OneOfVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-oneOf\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const $_=json_schema_OneOfVisitor_OneOfVisitor;class DependentSchemasVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-dependentSchemas\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const q_=DependentSchemasVisitor;class visitors_json_schema_ItemsVisitor_ItemsVisitor extends(Mixin(Rd,Ld,_d)){ObjectElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}ArrayElement(s){return this.element=new Su.wE,this.element.classes.push(\"json-schema-items\"),s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}BooleanElement(s){return this.element=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s),Uu}}const V_=visitors_json_schema_ItemsVisitor_ItemsVisitor;class json_schema_PropertiesVisitor_PropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-properties\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const U_=json_schema_PropertiesVisitor_PropertiesVisitor;class PatternPropertiesVisitor_PatternPropertiesVisitor extends(Mixin(Kd,Ld,_d)){constructor(s){super(s),this.element=new Su.Sh,this.element.classes.push(\"json-schema-patternProperties\"),this.specPath=fc([\"document\",\"objects\",\"JSONSchema\"])}}const z_=PatternPropertiesVisitor_PatternPropertiesVisitor;const W_=class DependentRequiredVisitor extends _d{ObjectElement(s){const o=super.enter(s);return this.element.classes.push(\"json-schema-dependentRequired\"),o}};const J_=class visitors_json_schema_link_description_LinkDescriptionVisitor extends k_{constructor(s){super(s),this.element=new N_}},H_=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$vocabulary\"],R_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$anchor\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveAnchor\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveRef\"],O_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"JSONReference\",\"$visitor\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$ref\"],D_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"definitions\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$defs\"],L_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"allOf\"],F_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"anyOf\"],B_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"oneOf\"],$_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"not\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],M_),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependencies\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependentSchemas\"],q_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],V_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"properties\"],U_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"patternProperties\"],z_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalProperties\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalItems\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedItems\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedProperties\"],M_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"maxContains\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"minContains\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"dependentRequired\"],W_),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"deprecated\"],O_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],J_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],M_),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],M_))(O_),K_={JSONSchema201909Element:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},G_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof T_||s(a)&&o(\"JSONSchema201909\",a)&&i(\"object\",a))),Y_=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof N_||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),X_={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchema201909\",T_),o.register(\"linkDescription\",N_),o}},Q_=X_,apidom_ns_json_schema_2019_09_src_refractor_toolbox=()=>{const s=createNamespace(Q_);return{predicates:{...de,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_2019_09_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=H_}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_2019_09_src_refractor_toolbox,visitorOptions:{keyMap:K_,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_2019_09_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_2019_09_src_refractor_refract(o,{specPath:s,...i});T_.refract=apidom_ns_json_schema_2019_09_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),N_.refract=apidom_ns_json_schema_2019_09_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const Z_=class apidom_ns_json_schema_2020_12_src_elements_JSONSchema_JSONSchema extends T_{constructor(s,o,i){super(s,o,i),this.element=\"JSONSchema202012\"}get $dynamicAnchor(){return this.get(\"$dynamicAnchor\")}set $dynamicAnchor(s){this.set(\"$dynamicAnchor\",s)}get $recursiveAnchor(){throw new Dh(\"$recursiveAnchor keyword from Core vocabulary has been renamed to $dynamicAnchor.\")}set $recursiveAnchor(s){throw new Dh(\"$recursiveAnchor keyword from Core vocabulary has been renamed to $dynamicAnchor.\")}get $dynamicRef(){return this.get(\"$dynamicRef\")}set $dynamicRef(s){this.set(\"$dynamicRef\",s)}get $recursiveRef(){throw new Dh(\"$recursiveRef keyword from Core vocabulary has been renamed to $dynamicRef.\")}set $recursiveRef(s){throw new Dh(\"$recursiveRef keyword from Core vocabulary has been renamed to $dynamicRef.\")}get prefixItems(){return this.get(\"prefixItems\")}set prefixItems(s){this.set(\"prefixItems\",s)}};const eS=class apidom_ns_json_schema_2020_12_src_elements_LinkDescription_LinkDescription extends N_{get targetSchema(){return this.get(\"targetSchema\")}set targetSchema(s){this.set(\"targetSchema\",s)}get hrefSchema(){return this.get(\"hrefSchema\")}set hrefSchema(s){this.set(\"hrefSchema\",s)}get headerSchema(){return this.get(\"headerSchema\")}set headerSchema(s){this.set(\"headerSchema\",s)}get submissionSchema(){return this.get(\"submissionSchema\")}set submissionSchema(s){this.set(\"submissionSchema\",s)}};const tS=class src_refractor_visitors_json_schema_JSONSchemaVisitor extends M_{constructor(s){super(s),this.element=new Z_}get defaultDialectIdentifier(){return\"https://json-schema.org/draft/2020-12/schema\"}};class PrefixItemsVisitor extends(Mixin(Rd,Ld,_d)){constructor(s){super(s),this.element=new Su.wE,this.element.classes.push(\"json-schema-prefixItems\")}ArrayElement(s){return s.forEach((s=>{const o=this.toRefractedElement([\"document\",\"objects\",\"JSONSchema\"],s);this.element.push(o)})),this.copyMetaAndAttributes(s,this.element),Uu}}const rS=PrefixItemsVisitor;const nS=class refractor_visitors_json_schema_link_description_LinkDescriptionVisitor extends J_{constructor(s){super(s),this.element=new eS}},sS=pipe(s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],tS),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveAnchor\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$dynamicAnchor\"],H_.visitors.value),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$recursiveRef\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"$dynamicRef\"],H_.visitors.value),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"not\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"if\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"then\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"else\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"prefixItems\"],rS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"items\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contains\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalProperties\"],tS),u_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"additionalItems\"]),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"propertyNames\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedItems\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"unevaluatedProperties\"],tS),s_([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"fixedFields\",\"contentSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"],nS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"targetSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"hrefSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"headerSchema\"],tS),s_([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"fixedFields\",\"submissionSchema\"],tS))(H_),oS={JSONSchema202012Element:[\"content\"],LinkDescriptionElement:[\"content\"],...Ku},iS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Z_||s(a)&&o(\"JSONSchema202012\",a)&&i(\"object\",a))),aS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof eS||s(a)&&o(\"linkDescription\",a)&&i(\"object\",a))),cS={namespace:s=>{const{base:o}=s;return o.register(\"jSONSchema202012\",Z_),o.register(\"linkDescription\",eS),o}},lS=cS,apidom_ns_json_schema_2020_12_src_refractor_toolbox=()=>{const s=createNamespace(lS);return{predicates:{...fe,isStringElement:Iu},namespace:s}},apidom_ns_json_schema_2020_12_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"],plugins:i=[],specificationObj:a=sS}={})=>{const u=(0,Su.e)(s),_=dereference(a),w=new(tp(o,_))({specObj:_});return visitor_visit(u,w),dispatchPluginsSync(w.element,i,{toolboxCreator:apidom_ns_json_schema_2020_12_src_refractor_toolbox,visitorOptions:{keyMap:oS,nodeTypeGetter:traversal_visitor_getNodeType}})},apidom_ns_json_schema_2020_12_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_json_schema_2020_12_src_refractor_refract(o,{specPath:s,...i});Z_.refract=apidom_ns_json_schema_2020_12_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"JSONSchema\",\"$visitor\"]),eS.refract=apidom_ns_json_schema_2020_12_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"LinkDescription\",\"$visitor\"]);const uS=class elements_Schema_Schema extends Z_{constructor(s,o,i){super(s,o,i),this.element=\"schema\"}get discriminator(){return this.get(\"discriminator\")}set discriminator(s){this.set(\"discriminator\",s)}get xml(){return this.get(\"xml\")}set xml(s){this.set(\"xml\",s)}get externalDocs(){return this.get(\"externalDocs\")}set externalDocs(s){this.set(\"externalDocs\",s)}get example(){return this.get(\"example\")}set example(s){this.set(\"example\",s)}};const pS=class SecurityRequirement_SecurityRequirement extends Jf{};const hS=class SecurityScheme_SecurityScheme extends Hf{};const dS=class Server_Server extends Gf{};const fS=class ServerVariable_ServerVariable extends Xf{};const mS=class Tag_Tag extends Qf{};const gS=class Xml_Xml extends em{};class OpenApi3_1Visitor extends(Mixin(um,rm)){constructor(s){super(s),this.element=new Ib,this.specPath=fc([\"document\",\"objects\",\"OpenApi\"]),this.canSupportSpecificationExtensions=!0,this.openApiSemanticElement=this.element}ObjectElement(s){return this.openApiGenericElement=s,um.prototype.ObjectElement.call(this,s)}}const yS=OpenApi3_1Visitor,vS=Wv.visitors.document.objects.Info.$visitor;const bS=class info_InfoVisitor extends vS{constructor(s){super(s),this.element=new pb}},_S=Wv.visitors.document.objects.Contact.$visitor;const SS=class contact_ContactVisitor extends _S{constructor(s){super(s),this.element=new Xv}},ES=Wv.visitors.document.objects.License.$visitor;const wS=class license_LicenseVisitor extends ES{constructor(s){super(s),this.element=new yb}},xS=Wv.visitors.document.objects.Link.$visitor;const kS=class link_LinkVisitor extends xS{constructor(s){super(s),this.element=new _b}};class JsonSchemaDialectVisitor extends(Mixin(nm,rm)){StringElement(s){const o=new mb(serializers_value(s));return this.copyMetaAndAttributes(s,o),this.element=o,Uu}}const OS=JsonSchemaDialectVisitor,CS=Wv.visitors.document.objects.Server.$visitor;const AS=class server_ServerVisitor extends CS{constructor(s){super(s),this.element=new dS}},jS=Wv.visitors.document.objects.ServerVariable.$visitor;const IS=class server_variable_ServerVariableVisitor extends jS{constructor(s){super(s),this.element=new fS}},PS=Wv.visitors.document.objects.MediaType.$visitor;const TS=class media_type_MediaTypeVisitor extends PS{constructor(s){super(s),this.element=new Sb}},NS=Wv.visitors.document.objects.SecurityRequirement.$visitor;const MS=class security_requirement_SecurityRequirementVisitor extends NS{constructor(s){super(s),this.element=new pS}},RS=Wv.visitors.document.objects.Components.$visitor;const DS=class components_ComponentsVisitor extends RS{constructor(s){super(s),this.element=new Yv}},LS=Wv.visitors.document.objects.Tag.$visitor;const FS=class tag_TagVisitor extends LS{constructor(s){super(s),this.element=new mS}},BS=Wv.visitors.document.objects.Reference.$visitor;const $S=class reference_ReferenceVisitor extends BS{constructor(s){super(s),this.element=new qb}},qS=Wv.visitors.document.objects.Parameter.$visitor;const VS=class parameter_ParameterVisitor extends qS{constructor(s){super(s),this.element=new Mb}},US=Wv.visitors.document.objects.Header.$visitor;const zS=class header_HeaderVisitor extends US{constructor(s){super(s),this.element=new nb}},WS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Gv||s(a)&&o(\"callback\",a)&&i(\"object\",a))),JS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Yv||s(a)&&o(\"components\",a)&&i(\"object\",a))),HS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Xv||s(a)&&o(\"contact\",a)&&i(\"object\",a))),KS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof eb||s(a)&&o(\"example\",a)&&i(\"object\",a))),GS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof tb||s(a)&&o(\"externalDocumentation\",a)&&i(\"object\",a))),YS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof nb||s(a)&&o(\"header\",a)&&i(\"object\",a))),XS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof pb||s(a)&&o(\"info\",a)&&i(\"object\",a))),QS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof mb||s(a)&&o(\"jsonSchemaDialect\",a)&&i(\"string\",a))),ZS=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof yb||s(a)&&o(\"license\",a)&&i(\"object\",a))),eE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof _b||s(a)&&o(\"link\",a)&&i(\"object\",a))),tE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Ab||s(a)&&o(\"openapi\",a)&&i(\"string\",a))),rE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i,hasClass:a})=>u=>u instanceof Ib||s(u)&&o(\"openApi3_1\",u)&&i(\"object\",u)&&a(\"api\",u))),nE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Pb||s(a)&&o(\"operation\",a)&&i(\"object\",a))),sE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Mb||s(a)&&o(\"parameter\",a)&&i(\"object\",a))),oE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Rb||s(a)&&o(\"pathItem\",a)&&i(\"object\",a))),isPathItemElementExternal=s=>{if(!oE(s))return!1;if(!Iu(s.$ref))return!1;const o=serializers_value(s.$ref);return\"string\"==typeof o&&o.length>0&&!o.startsWith(\"#\")},iE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Lb||s(a)&&o(\"paths\",a)&&i(\"object\",a))),aE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof qb||s(a)&&o(\"reference\",a)&&i(\"object\",a))),isReferenceElementExternal=s=>{if(!aE(s))return!1;if(!Iu(s.$ref))return!1;const o=serializers_value(s.$ref);return\"string\"==typeof o&&o.length>0&&!o.startsWith(\"#\")},cE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof zb||s(a)&&o(\"requestBody\",a)&&i(\"object\",a))),lE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Qb||s(a)&&o(\"response\",a)&&i(\"object\",a))),uE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof e_||s(a)&&o(\"responses\",a)&&i(\"object\",a))),pE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof uS||s(a)&&o(\"schema\",a)&&i(\"object\",a))),predicates_isBooleanJsonSchemaElement=s=>Nu(s)&&s.classes.includes(\"boolean-json-schema\"),hE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof pS||s(a)&&o(\"securityRequirement\",a)&&i(\"object\",a))),dE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof hS||s(a)&&o(\"securityScheme\",a)&&i(\"object\",a))),fE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof dS||s(a)&&o(\"server\",a)&&i(\"object\",a))),mE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof fS||s(a)&&o(\"serverVariable\",a)&&i(\"object\",a))),gE=helpers((({hasBasicElementProps:s,isElementType:o,primitiveEq:i})=>a=>a instanceof Sb||s(a)&&o(\"mediaType\",a)&&i(\"object\",a)));class open_api_3_1_schema_SchemaVisitor extends(Mixin(um,Ld,rm)){constructor(s){super(s),this.element=new uS,this.specPath=fc([\"document\",\"objects\",\"Schema\"]),this.canSupportSpecificationExtensions=!0,this.jsonSchemaDefaultDialect=mb.default,this.passingOptionsNames.push(\"parent\")}ObjectElement(s){this.handleDialectIdentifier(s),this.handleSchemaIdentifier(s),this.parent=this.element;const o=um.prototype.ObjectElement.call(this,s);return Iu(this.element.$ref)&&(this.element.classes.push(\"reference-element\"),this.element.setMetaProperty(\"referenced-element\",\"schema\")),o}BooleanElement(s){return tS.prototype.BooleanElement.call(this,s)}get defaultDialectIdentifier(){let s;return s=void 0!==this.openApiSemanticElement&&QS(this.openApiSemanticElement.jsonSchemaDialect)?serializers_value(this.openApiSemanticElement.jsonSchemaDialect):void 0!==this.openApiGenericElement&&Iu(this.openApiGenericElement.get(\"jsonSchemaDialect\"))?serializers_value(this.openApiGenericElement.get(\"jsonSchemaDialect\")):serializers_value(this.jsonSchemaDefaultDialect),s}handleDialectIdentifier(s){return tS.prototype.handleDialectIdentifier.call(this,s)}handleSchemaIdentifier(s){return tS.prototype.handleSchemaIdentifier.call(this,s)}}const yE=open_api_3_1_schema_SchemaVisitor;const vE=class $defsVisitor_$defsVisitor extends L_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const bE=class schema_AllOfVisitor_AllOfVisitor extends F_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const _E=class schema_AnyOfVisitor_AnyOfVisitor extends B_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const SE=class schema_OneOfVisitor_OneOfVisitor extends $_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const EE=class DependentSchemasVisitor_DependentSchemasVisitor extends q_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const wE=class PrefixItemsVisitor_PrefixItemsVisitor extends rS{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const xE=class schema_PropertiesVisitor_PropertiesVisitor extends U_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}};const kE=class schema_PatternPropertiesVisitor_PatternPropertiesVisitor extends z_{constructor(s){super(s),this.passingOptionsNames.push(\"parent\")}},OE=Wv.visitors.document.objects.Discriminator.$visitor;const CE=class distriminator_DiscriminatorVisitor extends OE{constructor(s){super(s),this.element=new Qv,this.canSupportSpecificationExtensions=!0}},AE=Wv.visitors.document.objects.XML.$visitor;const jE=class xml_XmlVisitor extends AE{constructor(s){super(s),this.element=new gS}};class SchemasVisitor_SchemasVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new Ay,this.specPath=fc([\"document\",\"objects\",\"Schema\"])}}const IE=SchemasVisitor_SchemasVisitor;class ComponentsPathItems extends Su.Sh{static primaryClass=\"components-path-items\";constructor(s,o,i){super(s,o,i),this.classes.push(ComponentsPathItems.primaryClass)}}const PE=ComponentsPathItems;class PathItemsVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new PE,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),o}}const TE=PathItemsVisitor,NE=Wv.visitors.document.objects.Example.$visitor;const ME=class example_ExampleVisitor extends NE{constructor(s){super(s),this.element=new eb}},RE=Wv.visitors.document.objects.ExternalDocumentation.$visitor;const DE=class external_documentation_ExternalDocumentationVisitor extends RE{constructor(s){super(s),this.element=new tb}},LE=Wv.visitors.document.objects.Encoding.$visitor;const FE=class open_api_3_1_encoding_EncodingVisitor extends LE{constructor(s){super(s),this.element=new Zv}},BE=Wv.visitors.document.objects.Paths.$visitor;const $E=class paths_PathsVisitor extends BE{constructor(s){super(s),this.element=new Lb}},qE=Wv.visitors.document.objects.RequestBody.$visitor;const VE=class request_body_RequestBodyVisitor extends qE{constructor(s){super(s),this.element=new zb}},UE=Wv.visitors.document.objects.Callback.$visitor;const zE=class callback_CallbackVisitor extends UE{constructor(s){super(s),this.element=new Gv,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=UE.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),o}},WE=Wv.visitors.document.objects.Response.$visitor;const JE=class response_ResponseVisitor extends WE{constructor(s){super(s),this.element=new Qb}},HE=Wv.visitors.document.objects.Responses.$visitor;const KE=class open_api_3_1_responses_ResponsesVisitor extends HE{constructor(s){super(s),this.element=new e_}},GE=Wv.visitors.document.objects.Operation.$visitor;const YE=class operation_OperationVisitor extends GE{constructor(s){super(s),this.element=new Pb}},XE=Wv.visitors.document.objects.PathItem.$visitor;const QE=class path_item_PathItemVisitor extends XE{constructor(s){super(s),this.element=new Rb}},ZE=Wv.visitors.document.objects.SecurityScheme.$visitor;const ew=class security_scheme_SecuritySchemeVisitor extends ZE{constructor(s){super(s),this.element=new hS}},tw=Wv.visitors.document.objects.OAuthFlows.$visitor;const rw=class oauth_flows_OAuthFlowsVisitor extends tw{constructor(s){super(s),this.element=new Ob}},nw=Wv.visitors.document.objects.OAuthFlow.$visitor;const sw=class oauth_flow_OAuthFlowVisitor extends nw{constructor(s){super(s),this.element=new wb}};class Webhooks extends Su.Sh{static primaryClass=\"webhooks\";constructor(s,o,i){super(s,o,i),this.classes.push(Webhooks.primaryClass)}}const ow=Webhooks;class WebhooksVisitor extends(Mixin(Em,rm)){constructor(s){super(s),this.element=new ow,this.specPath=s=>isReferenceLikeElement(s)?[\"document\",\"objects\",\"Reference\"]:[\"document\",\"objects\",\"PathItem\"]}ObjectElement(s){const o=Em.prototype.ObjectElement.call(this,s);return this.element.filter(aE).forEach((s=>{s.setMetaProperty(\"referenced-element\",\"pathItem\")})),this.element.filter(oE).forEach(((s,o)=>{s.setMetaProperty(\"webhook-name\",serializers_value(o))})),o}}const iw=WebhooksVisitor,{JSONSchema:aw,LinkDescription:cw}=sS.visitors.document.objects,lw={visitors:{value:Wv.visitors.value,document:{objects:{OpenApi:{$visitor:yS,fixedFields:{openapi:Wv.visitors.document.objects.OpenApi.fixedFields.openapi,info:{$ref:\"#/visitors/document/objects/Info\"},jsonSchemaDialect:OS,servers:Wv.visitors.document.objects.OpenApi.fixedFields.servers,paths:{$ref:\"#/visitors/document/objects/Paths\"},webhooks:iw,components:{$ref:\"#/visitors/document/objects/Components\"},security:Wv.visitors.document.objects.OpenApi.fixedFields.security,tags:Wv.visitors.document.objects.OpenApi.fixedFields.tags,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Info:{$visitor:bS,fixedFields:{title:Wv.visitors.document.objects.Info.fixedFields.title,description:Wv.visitors.document.objects.Info.fixedFields.description,summary:{$ref:\"#/visitors/value\"},termsOfService:Wv.visitors.document.objects.Info.fixedFields.termsOfService,contact:{$ref:\"#/visitors/document/objects/Contact\"},license:{$ref:\"#/visitors/document/objects/License\"},version:Wv.visitors.document.objects.Info.fixedFields.version}},Contact:{$visitor:SS,fixedFields:{name:Wv.visitors.document.objects.Contact.fixedFields.name,url:Wv.visitors.document.objects.Contact.fixedFields.url,email:Wv.visitors.document.objects.Contact.fixedFields.email}},License:{$visitor:wS,fixedFields:{name:Wv.visitors.document.objects.License.fixedFields.name,identifier:{$ref:\"#/visitors/value\"},url:Wv.visitors.document.objects.License.fixedFields.url}},Server:{$visitor:AS,fixedFields:{url:Wv.visitors.document.objects.Server.fixedFields.url,description:Wv.visitors.document.objects.Server.fixedFields.description,variables:Wv.visitors.document.objects.Server.fixedFields.variables}},ServerVariable:{$visitor:IS,fixedFields:{enum:Wv.visitors.document.objects.ServerVariable.fixedFields.enum,default:Wv.visitors.document.objects.ServerVariable.fixedFields.default,description:Wv.visitors.document.objects.ServerVariable.fixedFields.description}},Components:{$visitor:DS,fixedFields:{schemas:IE,responses:Wv.visitors.document.objects.Components.fixedFields.responses,parameters:Wv.visitors.document.objects.Components.fixedFields.parameters,examples:Wv.visitors.document.objects.Components.fixedFields.examples,requestBodies:Wv.visitors.document.objects.Components.fixedFields.requestBodies,headers:Wv.visitors.document.objects.Components.fixedFields.headers,securitySchemes:Wv.visitors.document.objects.Components.fixedFields.securitySchemes,links:Wv.visitors.document.objects.Components.fixedFields.links,callbacks:Wv.visitors.document.objects.Components.fixedFields.callbacks,pathItems:TE}},Paths:{$visitor:$E},PathItem:{$visitor:QE,fixedFields:{$ref:Wv.visitors.document.objects.PathItem.fixedFields.$ref,summary:Wv.visitors.document.objects.PathItem.fixedFields.summary,description:Wv.visitors.document.objects.PathItem.fixedFields.description,get:{$ref:\"#/visitors/document/objects/Operation\"},put:{$ref:\"#/visitors/document/objects/Operation\"},post:{$ref:\"#/visitors/document/objects/Operation\"},delete:{$ref:\"#/visitors/document/objects/Operation\"},options:{$ref:\"#/visitors/document/objects/Operation\"},head:{$ref:\"#/visitors/document/objects/Operation\"},patch:{$ref:\"#/visitors/document/objects/Operation\"},trace:{$ref:\"#/visitors/document/objects/Operation\"},servers:Wv.visitors.document.objects.PathItem.fixedFields.servers,parameters:Wv.visitors.document.objects.PathItem.fixedFields.parameters}},Operation:{$visitor:YE,fixedFields:{tags:Wv.visitors.document.objects.Operation.fixedFields.tags,summary:Wv.visitors.document.objects.Operation.fixedFields.summary,description:Wv.visitors.document.objects.Operation.fixedFields.description,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},operationId:Wv.visitors.document.objects.Operation.fixedFields.operationId,parameters:Wv.visitors.document.objects.Operation.fixedFields.parameters,requestBody:Wv.visitors.document.objects.Operation.fixedFields.requestBody,responses:{$ref:\"#/visitors/document/objects/Responses\"},callbacks:Wv.visitors.document.objects.Operation.fixedFields.callbacks,deprecated:Wv.visitors.document.objects.Operation.fixedFields.deprecated,security:Wv.visitors.document.objects.Operation.fixedFields.security,servers:Wv.visitors.document.objects.Operation.fixedFields.servers}},ExternalDocumentation:{$visitor:DE,fixedFields:{description:Wv.visitors.document.objects.ExternalDocumentation.fixedFields.description,url:Wv.visitors.document.objects.ExternalDocumentation.fixedFields.url}},Parameter:{$visitor:VS,fixedFields:{name:Wv.visitors.document.objects.Parameter.fixedFields.name,in:Wv.visitors.document.objects.Parameter.fixedFields.in,description:Wv.visitors.document.objects.Parameter.fixedFields.description,required:Wv.visitors.document.objects.Parameter.fixedFields.required,deprecated:Wv.visitors.document.objects.Parameter.fixedFields.deprecated,allowEmptyValue:Wv.visitors.document.objects.Parameter.fixedFields.allowEmptyValue,style:Wv.visitors.document.objects.Parameter.fixedFields.style,explode:Wv.visitors.document.objects.Parameter.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Parameter.fixedFields.allowReserved,schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.Parameter.fixedFields.example,examples:Wv.visitors.document.objects.Parameter.fixedFields.examples,content:Wv.visitors.document.objects.Parameter.fixedFields.content}},RequestBody:{$visitor:VE,fixedFields:{description:Wv.visitors.document.objects.RequestBody.fixedFields.description,content:Wv.visitors.document.objects.RequestBody.fixedFields.content,required:Wv.visitors.document.objects.RequestBody.fixedFields.required}},MediaType:{$visitor:TS,fixedFields:{schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.MediaType.fixedFields.example,examples:Wv.visitors.document.objects.MediaType.fixedFields.examples,encoding:Wv.visitors.document.objects.MediaType.fixedFields.encoding}},Encoding:{$visitor:FE,fixedFields:{contentType:Wv.visitors.document.objects.Encoding.fixedFields.contentType,headers:Wv.visitors.document.objects.Encoding.fixedFields.headers,style:Wv.visitors.document.objects.Encoding.fixedFields.style,explode:Wv.visitors.document.objects.Encoding.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Encoding.fixedFields.allowReserved}},Responses:{$visitor:KE,fixedFields:{default:Wv.visitors.document.objects.Responses.fixedFields.default}},Response:{$visitor:JE,fixedFields:{description:Wv.visitors.document.objects.Response.fixedFields.description,headers:Wv.visitors.document.objects.Response.fixedFields.headers,content:Wv.visitors.document.objects.Response.fixedFields.content,links:Wv.visitors.document.objects.Response.fixedFields.links}},Callback:{$visitor:zE},Example:{$visitor:ME,fixedFields:{summary:Wv.visitors.document.objects.Example.fixedFields.summary,description:Wv.visitors.document.objects.Example.fixedFields.description,value:Wv.visitors.document.objects.Example.fixedFields.value,externalValue:Wv.visitors.document.objects.Example.fixedFields.externalValue}},Link:{$visitor:kS,fixedFields:{operationRef:Wv.visitors.document.objects.Link.fixedFields.operationRef,operationId:Wv.visitors.document.objects.Link.fixedFields.operationId,parameters:Wv.visitors.document.objects.Link.fixedFields.parameters,requestBody:Wv.visitors.document.objects.Link.fixedFields.requestBody,description:Wv.visitors.document.objects.Link.fixedFields.description,server:{$ref:\"#/visitors/document/objects/Server\"}}},Header:{$visitor:zS,fixedFields:{description:Wv.visitors.document.objects.Header.fixedFields.description,required:Wv.visitors.document.objects.Header.fixedFields.required,deprecated:Wv.visitors.document.objects.Header.fixedFields.deprecated,allowEmptyValue:Wv.visitors.document.objects.Header.fixedFields.allowEmptyValue,style:Wv.visitors.document.objects.Header.fixedFields.style,explode:Wv.visitors.document.objects.Header.fixedFields.explode,allowReserved:Wv.visitors.document.objects.Header.fixedFields.allowReserved,schema:{$ref:\"#/visitors/document/objects/Schema\"},example:Wv.visitors.document.objects.Header.fixedFields.example,examples:Wv.visitors.document.objects.Header.fixedFields.examples,content:Wv.visitors.document.objects.Header.fixedFields.content}},Tag:{$visitor:FS,fixedFields:{name:Wv.visitors.document.objects.Tag.fixedFields.name,description:Wv.visitors.document.objects.Tag.fixedFields.description,externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"}}},Reference:{$visitor:$S,fixedFields:{$ref:Wv.visitors.document.objects.Reference.fixedFields.$ref,summary:{$ref:\"#/visitors/value\"},description:{$ref:\"#/visitors/value\"}}},JSONSchema:{$ref:\"#/visitors/document/objects/Schema\"},LinkDescription:{...cw},Schema:{$visitor:yE,fixedFields:{...aw.fixedFields,$defs:vE,allOf:bE,anyOf:_E,oneOf:SE,not:{$ref:\"#/visitors/document/objects/Schema\"},if:{$ref:\"#/visitors/document/objects/Schema\"},then:{$ref:\"#/visitors/document/objects/Schema\"},else:{$ref:\"#/visitors/document/objects/Schema\"},dependentSchemas:EE,prefixItems:wE,items:{$ref:\"#/visitors/document/objects/Schema\"},contains:{$ref:\"#/visitors/document/objects/Schema\"},properties:xE,patternProperties:kE,additionalProperties:{$ref:\"#/visitors/document/objects/Schema\"},propertyNames:{$ref:\"#/visitors/document/objects/Schema\"},unevaluatedItems:{$ref:\"#/visitors/document/objects/Schema\"},unevaluatedProperties:{$ref:\"#/visitors/document/objects/Schema\"},contentSchema:{$ref:\"#/visitors/document/objects/Schema\"},discriminator:{$ref:\"#/visitors/document/objects/Discriminator\"},xml:{$ref:\"#/visitors/document/objects/XML\"},externalDocs:{$ref:\"#/visitors/document/objects/ExternalDocumentation\"},example:{$ref:\"#/visitors/value\"}}},Discriminator:{$visitor:CE,fixedFields:{propertyName:Wv.visitors.document.objects.Discriminator.fixedFields.propertyName,mapping:Wv.visitors.document.objects.Discriminator.fixedFields.mapping}},XML:{$visitor:jE,fixedFields:{name:Wv.visitors.document.objects.XML.fixedFields.name,namespace:Wv.visitors.document.objects.XML.fixedFields.namespace,prefix:Wv.visitors.document.objects.XML.fixedFields.prefix,attribute:Wv.visitors.document.objects.XML.fixedFields.attribute,wrapped:Wv.visitors.document.objects.XML.fixedFields.wrapped}},SecurityScheme:{$visitor:ew,fixedFields:{type:Wv.visitors.document.objects.SecurityScheme.fixedFields.type,description:Wv.visitors.document.objects.SecurityScheme.fixedFields.description,name:Wv.visitors.document.objects.SecurityScheme.fixedFields.name,in:Wv.visitors.document.objects.SecurityScheme.fixedFields.in,scheme:Wv.visitors.document.objects.SecurityScheme.fixedFields.scheme,bearerFormat:Wv.visitors.document.objects.SecurityScheme.fixedFields.bearerFormat,flows:{$ref:\"#/visitors/document/objects/OAuthFlows\"},openIdConnectUrl:Wv.visitors.document.objects.SecurityScheme.fixedFields.openIdConnectUrl}},OAuthFlows:{$visitor:rw,fixedFields:{implicit:{$ref:\"#/visitors/document/objects/OAuthFlow\"},password:{$ref:\"#/visitors/document/objects/OAuthFlow\"},clientCredentials:{$ref:\"#/visitors/document/objects/OAuthFlow\"},authorizationCode:{$ref:\"#/visitors/document/objects/OAuthFlow\"}}},OAuthFlow:{$visitor:sw,fixedFields:{authorizationUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.authorizationUrl,tokenUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.tokenUrl,refreshUrl:Wv.visitors.document.objects.OAuthFlow.fixedFields.refreshUrl,scopes:Wv.visitors.document.objects.OAuthFlow.fixedFields.scopes}},SecurityRequirement:{$visitor:MS}},extension:{$visitor:Wv.visitors.document.extension.$visitor}}}},apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType=s=>{if(ju(s))return`${s.element.charAt(0).toUpperCase()+s.element.slice(1)}Element`},uw={CallbackElement:[\"content\"],ComponentsElement:[\"content\"],ContactElement:[\"content\"],DiscriminatorElement:[\"content\"],Encoding:[\"content\"],Example:[\"content\"],ExternalDocumentationElement:[\"content\"],HeaderElement:[\"content\"],InfoElement:[\"content\"],LicenseElement:[\"content\"],MediaTypeElement:[\"content\"],OAuthFlowElement:[\"content\"],OAuthFlowsElement:[\"content\"],OpenApi3_1Element:[\"content\"],OperationElement:[\"content\"],ParameterElement:[\"content\"],PathItemElement:[\"content\"],PathsElement:[\"content\"],ReferenceElement:[\"content\"],RequestBodyElement:[\"content\"],ResponseElement:[\"content\"],ResponsesElement:[\"content\"],SchemaElement:[\"content\"],SecurityRequirementElement:[\"content\"],SecuritySchemeElement:[\"content\"],ServerElement:[\"content\"],ServerVariableElement:[\"content\"],TagElement:[\"content\"],...Ku},pw={namespace:s=>{const{base:o}=s;return o.register(\"callback\",Gv),o.register(\"components\",Yv),o.register(\"contact\",Xv),o.register(\"discriminator\",Qv),o.register(\"encoding\",Zv),o.register(\"example\",eb),o.register(\"externalDocumentation\",tb),o.register(\"header\",nb),o.register(\"info\",pb),o.register(\"jsonSchemaDialect\",mb),o.register(\"license\",yb),o.register(\"link\",_b),o.register(\"mediaType\",Sb),o.register(\"oAuthFlow\",wb),o.register(\"oAuthFlows\",Ob),o.register(\"openapi\",Ab),o.register(\"openApi3_1\",Ib),o.register(\"operation\",Pb),o.register(\"parameter\",Mb),o.register(\"pathItem\",Rb),o.register(\"paths\",Lb),o.register(\"reference\",qb),o.register(\"requestBody\",zb),o.register(\"response\",Qb),o.register(\"responses\",e_),o.register(\"schema\",uS),o.register(\"securityRequirement\",pS),o.register(\"securityScheme\",hS),o.register(\"server\",dS),o.register(\"serverVariable\",fS),o.register(\"tag\",mS),o.register(\"xml\",gS),o}},hw=pw,ancestorLineageToJSONPointer=s=>{const o=s.reduce(((o,i,a)=>{if(Du(i)){const s=String(serializers_value(i.key));o.push(s)}else if(Ru(s[a-2])){const u=String(s[a-2].content.indexOf(i));o.push(u)}return o}),[]);return es_compile(o)},apidom_ns_openapi_3_1_src_refractor_toolbox=()=>{const s=createNamespace(hw);return{predicates:{...ye,isElement:ju,isStringElement:Iu,isArrayElement:Ru,isObjectElement:Mu,isMemberElement:Du,isServersElement:lg,includesClasses,hasElementSourceMap},ancestorLineageToJSONPointer,namespace:s}},apidom_ns_openapi_3_1_src_refractor_refract=(s,{specPath:o=[\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"],plugins:i=[]}={})=>{const a=(0,Su.e)(s),u=dereference(lw),_=new(tp(o,u))({specObj:u});return visitor_visit(a,_),dispatchPluginsSync(_.element,i,{toolboxCreator:apidom_ns_openapi_3_1_src_refractor_toolbox,visitorOptions:{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}})},apidom_ns_openapi_3_1_src_refractor_createRefractor=s=>(o,i={})=>apidom_ns_openapi_3_1_src_refractor_refract(o,{specPath:s,...i});Gv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Callback\",\"$visitor\"]),Yv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Components\",\"$visitor\"]),Xv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Contact\",\"$visitor\"]),eb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Example\",\"$visitor\"]),Qv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Discriminator\",\"$visitor\"]),Zv.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Encoding\",\"$visitor\"]),tb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ExternalDocumentation\",\"$visitor\"]),nb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Header\",\"$visitor\"]),pb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Info\",\"$visitor\"]),mb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"jsonSchemaDialect\"]),yb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"License\",\"$visitor\"]),_b.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Link\",\"$visitor\"]),Sb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"MediaType\",\"$visitor\"]),wb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlow\",\"$visitor\"]),Ob.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OAuthFlows\",\"$visitor\"]),Ab.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"fixedFields\",\"openapi\"]),Ib.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"OpenApi\",\"$visitor\"]),Pb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Operation\",\"$visitor\"]),Mb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Parameter\",\"$visitor\"]),Rb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"PathItem\",\"$visitor\"]),Lb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Paths\",\"$visitor\"]),qb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Reference\",\"$visitor\"]),zb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"RequestBody\",\"$visitor\"]),Qb.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Response\",\"$visitor\"]),e_.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Responses\",\"$visitor\"]),uS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Schema\",\"$visitor\"]),pS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityRequirement\",\"$visitor\"]),hS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"SecurityScheme\",\"$visitor\"]),dS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Server\",\"$visitor\"]),fS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"ServerVariable\",\"$visitor\"]),mS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"Tag\",\"$visitor\"]),gS.refract=apidom_ns_openapi_3_1_src_refractor_createRefractor([\"visitors\",\"document\",\"objects\",\"XML\",\"$visitor\"]);const dw=class NotImplementedError extends Dh{};const fw=class MediaTypes extends Array{unknownMediaType=\"application/octet-stream\";filterByFormat(){throw new dw(\"filterByFormat method in MediaTypes class is not yet implemented.\")}findBy(){throw new dw(\"findBy method in MediaTypes class is not yet implemented.\")}latest(){throw new dw(\"latest method in MediaTypes class is not yet implemented.\")}};class OpenAPIMediaTypes extends fw{filterByFormat(s=\"generic\"){const o=\"generic\"===s?\"openapi;version\":s;return this.filter((s=>s.includes(o)))}findBy(s=\"3.1.0\",o=\"generic\"){const i=\"generic\"===o?`vnd.oai.openapi;version=${s}`:`vnd.oai.openapi+${o};version=${s}`;return this.find((s=>s.includes(i)))||this.unknownMediaType}latest(s=\"generic\"){return Ba(this.filterByFormat(s))}}const mw=new OpenAPIMediaTypes(\"application/vnd.oai.openapi;version=3.1.0\",\"application/vnd.oai.openapi+json;version=3.1.0\",\"application/vnd.oai.openapi+yaml;version=3.1.0\");const gw=class src_Reference_Reference{uri;depth;value;refSet;errors;constructor({uri:s,depth:o=0,refSet:i,value:a}){this.uri=s,this.value=a,this.depth=o,this.refSet=i,this.errors=[]}};const yw=class ReferenceSet{rootRef;refs;circular;constructor({refs:s=[],circular:o=!1}={}){this.refs=[],this.circular=o,s.forEach(this.add.bind(this))}get size(){return this.refs.length}add(s){return this.has(s)||(this.refs.push(s),this.rootRef=void 0===this.rootRef?s:this.rootRef,s.refSet=this),this}merge(s){for(const o of s.values())this.add(o);return this}has(s){const o=Jc(s)?s:s.uri;return _c(this.find((s=>s.uri===o)))}find(s){return this.refs.find(s)}*values(){yield*this.refs}clean(){this.refs.forEach((s=>{s.refSet=void 0})),this.rootRef=void 0,this.refs.length=0}};function _identity(s){return s}const vw=_curry1(_identity),bw={parse:{mediaType:\"text/plain\",parsers:[],parserOpts:{}},resolve:{baseURI:\"\",resolvers:[],resolverOpts:{},strategies:[],strategyOpts:{},internal:!0,external:!0,maxDepth:1/0},dereference:{strategies:[],strategyOpts:{},refSet:null,maxDepth:1/0,circular:\"ignore\",circularReplacer:vw,immutable:!0},bundle:{strategies:[],refSet:null,maxDepth:1/0}};const _w=_curry2((function lens(s,o){return function(i){return function(a){return cc((function(s){return o(s,a)}),i(s(a)))}}}));var Identity=function(s){return{value:s,map:function(o){return Identity(o(s))}}},Sw=_curry3((function over(s,o,i){return s((function(s){return Identity(o(s))}))(i).value}));const Ew=Sw;const ww=na(\"\"),xw=_w(tp([\"resolve\",\"baseURI\"]),s_([\"resolve\",\"baseURI\"])),baseURIDefault=s=>ww(s)?url_cwd():s,util_merge=(s,o)=>{const i=ep(s,o);return Ew(xw,baseURIDefault,i)};const kw=class File_File{uri;mediaType;data;parseResult;constructor({uri:s,mediaType:o=\"text/plain\",data:i,parseResult:a}){this.uri=s,this.mediaType=o,this.data=i,this.parseResult=a}get extension(){return Jc(this.uri)?(s=>{const o=s.lastIndexOf(\".\");return o>=0?s.substring(o).toLowerCase():\"\"})(this.uri):\"\"}toString(){if(\"string\"==typeof this.data)return this.data;if(this.data instanceof ArrayBuffer||[\"ArrayBuffer\"].includes(ra(this.data))||ArrayBuffer.isView(this.data)){return new TextDecoder(\"utf-8\").decode(this.data)}return String(this.data)}};const Ow=class PluginError extends Ko{plugin;constructor(s,o){super(s,{cause:o.cause}),this.plugin=o.plugin}},plugins_filter=async(s,o,i)=>{const a=await Promise.all(i.map(hp([s],o)));return i.filter(((s,o)=>a[o]))},run=async(s,o,i)=>{let a;for(const u of i)try{const i=await u[s].call(u,...o);return{plugin:u,result:i}}catch(s){a=new Ow(\"Error while running plugin\",{cause:s,plugin:u})}return Promise.reject(a)};const Cw=class DereferenceError extends Ko{};const Aw=class UnmatchedDereferenceStrategyError extends Cw{},dereferenceApiDOM=async(s,o)=>{let i=s,a=!1;if(!qu(s)){const o=cloneShallow(s);o.classes.push(\"result\"),i=new Cu([o]),a=!0}const u=new kw({uri:o.resolve.baseURI,parseResult:i,mediaType:o.parse.mediaType}),_=await plugins_filter(\"canDereference\",[u,o],o.dereference.strategies);if(cp(_))throw new Aw(u.uri);try{const{result:s}=await run(\"dereference\",[u,o],_);return a?s.get(0):s}catch(s){throw new Cw(`Error while dereferencing file \"${u.uri}\"`,{cause:s})}};const jw=class ParseError extends Ko{};const Iw=class ParserError extends jw{};const Pw=class Parser_Parser{name;allowEmpty;sourceMap;fileExtensions;mediaTypes;constructor({name:s,allowEmpty:o=!0,sourceMap:i=!1,fileExtensions:a=[],mediaTypes:u=[]}){this.name=s,this.allowEmpty=o,this.sourceMap=i,this.fileExtensions=a,this.mediaTypes=u}};const Tw=class BinaryParser extends Pw{constructor(s){super({...null!=s?s:{},name:\"binary\"})}canParse(s){return 0===this.fileExtensions.length||this.fileExtensions.includes(s.extension)}parse(s){try{const o=unescape(encodeURIComponent(s.toString())),i=btoa(o),a=new Cu;if(0!==i.length){const s=new Su.Om(i);s.classes.push(\"result\"),a.push(s)}return a}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Nw=class ResolveStrategy{name;constructor({name:s}){this.name=s}};const Mw=class OpenAPI3_1ResolveStrategy extends Nw{constructor(s){super({...null!=s?s:{},name:\"openapi-3-1\"})}canResolve(s,o){const i=o.dereference.strategies.find((s=>\"openapi-3-1\"===s.name));return void 0!==i&&i.canDereference(s,o)}async resolve(s,o){const i=o.dereference.strategies.find((s=>\"openapi-3-1\"===s.name));if(void 0===i)throw new Aw('\"openapi-3-1\" dereference strategy is not available.');const a=new yw,u=util_merge(o,{resolve:{internal:!1},dereference:{refSet:a}});return await i.dereference(s,u),a}};const Rw=class Resolver{name;constructor({name:s}){this.name=s}};const Dw=class HTTPResolver extends Rw{timeout;redirects;withCredentials;constructor(s){const{name:o=\"http-resolver\",timeout:i=5e3,redirects:a=5,withCredentials:u=!1}=null!=s?s:{};super({name:o}),this.timeout=i,this.redirects=a,this.withCredentials=u}canRead(s){return isHttpUrl(s.uri)}};const Lw=class ResolveError extends Ko{};const Fw=class ResolverError extends Lw{},{AbortController:Bw,AbortSignal:$w}=globalThis;void 0===globalThis.AbortController&&(globalThis.AbortController=Bw),void 0===globalThis.AbortSignal&&(globalThis.AbortSignal=$w);const qw=class HTTPResolverSwaggerClient extends Dw{swaggerHTTPClient=http_http;swaggerHTTPClientConfig;constructor({swaggerHTTPClient:s=http_http,swaggerHTTPClientConfig:o={},...i}={}){super({...i,name:\"http-swagger-client\"}),this.swaggerHTTPClient=s,this.swaggerHTTPClientConfig=o}getHttpClient(){return this.swaggerHTTPClient}async read(s){const o=this.getHttpClient(),i=new AbortController,{signal:a}=i,u=setTimeout((()=>{i.abort()}),this.timeout),_=this.getHttpClient().withCredentials||this.withCredentials?\"include\":\"same-origin\",w=0===this.redirects?\"error\":\"follow\",x=this.redirects>0?this.redirects:void 0;try{return(await o({url:s.uri,signal:a,userFetch:async(s,o)=>{let i=await fetch(s,o);try{i.headers.delete(\"Content-Type\")}catch{i=new Response(i.body,{...i,headers:new Headers(i.headers)}),i.headers.delete(\"Content-Type\")}return i},credentials:_,redirect:w,follow:x,...this.swaggerHTTPClientConfig})).text.arrayBuffer()}catch(o){throw new Fw(`Error downloading \"${s.uri}\"`,{cause:o})}finally{clearTimeout(u)}}},transformers_from=(s,o=fp)=>{if(Jc(s))try{return o.fromRefract(JSON.parse(s))}catch{}return fu(s)&&id(\"element\",s)?o.fromRefract(s):o.toElement(s)};const Vw=class JSONParser extends Pw{constructor(s={}){super({name:\"json-swagger-client\",mediaTypes:[\"application/json\"],...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{return JSON.parse(s.toString()),!0}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"json-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();if(this.allowEmpty&&\"\"===i.trim())return o;try{const s=transformers_from(JSON.parse(i));return s.classes.push(\"result\"),o.push(s),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Uw=class YAMLParser extends Pw{constructor(s={}){super({name:\"yaml-1-2-swagger-client\",mediaTypes:[\"text/yaml\",\"application/yaml\"],...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{return fn.load(s.toString(),{schema:rn}),!0}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"yaml-1-2-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();try{const s=fn.load(i,{schema:rn});if(this.allowEmpty&&void 0===s)return o;const a=transformers_from(s);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const zw=class OpenAPIJSON3_1Parser extends Pw{detectionRegExp=/\"openapi\"\\s*:\\s*\"(?<version_json>3\\.1\\.(?:[1-9]\\d*|0))\"/;constructor(s={}){super({name:\"openapi-json-3-1-swagger-client\",mediaTypes:new OpenAPIMediaTypes(...mw.filterByFormat(\"generic\"),...mw.filterByFormat(\"json\")),...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{const o=s.toString();return JSON.parse(o),this.detectionRegExp.test(o)}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"openapi-json-3-1-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();if(this.allowEmpty&&\"\"===i.trim())return o;try{const s=JSON.parse(i),a=Ib.refract(s,this.refractorOpts);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Ww=class OpenAPIYAML31Parser extends Pw{detectionRegExp=/(?<YAML>^([\"']?)openapi\\2\\s*:\\s*([\"']?)(?<version_yaml>3\\.1\\.(?:[1-9]\\d*|0))\\3(?:\\s+|$))|(?<JSON>\"openapi\"\\s*:\\s*\"(?<version_json>3\\.1\\.(?:[1-9]\\d*|0))\")/m;constructor(s={}){super({name:\"openapi-yaml-3-1-swagger-client\",mediaTypes:new OpenAPIMediaTypes(...mw.filterByFormat(\"generic\"),...mw.filterByFormat(\"yaml\")),...s})}async canParse(s){const o=0===this.fileExtensions.length||this.fileExtensions.includes(s.extension),i=this.mediaTypes.includes(s.mediaType);if(!o)return!1;if(i)return!0;if(!i)try{const o=s.toString();return fn.load(o),this.detectionRegExp.test(o)}catch(s){return!1}return!1}async parse(s){if(this.sourceMap)throw new Iw(\"openapi-yaml-3-1-swagger-client parser plugin doesn't support sourceMaps option\");const o=new Cu,i=s.toString();try{const s=fn.load(i,{schema:rn});if(this.allowEmpty&&void 0===s)return o;const a=Ib.refract(s,this.refractorOpts);return a.classes.push(\"result\"),o.push(a),o}catch(o){throw new Iw(`Error parsing \"${s.uri}\"`,{cause:o})}}};const Jw=_curry3((function propEq(s,o,i){return na(s,Da(o,i))}));const Hw=class DereferenceStrategy{name;constructor({name:s}){this.name=s}};const Kw=_curry2((function none(s,o){return xu(_complement(s),o)}));var Gw=__webpack_require__(8068);const Yw=class ElementIdentityError extends Go{value;constructor(s,o){super(s,o),void 0!==o&&(this.value=o.value)}};class IdentityManager{uuid;identityMap;constructor({length:s=6}={}){this.uuid=new Gw({length:s}),this.identityMap=new WeakMap}identify(s){if(!ju(s))throw new Yw(\"Cannot not identify the element. `element` is neither structurally compatible nor a subclass of an Element class.\",{value:s});if(s.meta.hasKey(\"id\")&&Iu(s.meta.get(\"id\"))&&!s.meta.get(\"id\").equals(\"\"))return s.id;if(this.identityMap.has(s))return this.identityMap.get(s);const o=new Su.Om(this.generateId());return this.identityMap.set(s,o),o}forget(s){return!!this.identityMap.has(s)&&(this.identityMap.delete(s),!0)}generateId(){return this.uuid.randomUUID()}}new IdentityManager;const Xw=_curry3((function pathOr(s,o,i){return Na(s,_path(o,i))})),traversal_find=(s,o)=>{const i=new PredicateVisitor({predicate:s,returnOnTrue:Uu});return visitor_visit(o,i),Xw(void 0,[0],i.result)};const Qw=class JsonSchema$anchorError extends Ko{};const Zw=class EvaluationJsonSchema$anchorError extends Qw{};const ex=class InvalidJsonSchema$anchorError extends Qw{constructor(s){super(`Invalid JSON Schema $anchor \"${s}\".`)}},isAnchor=s=>/^[A-Za-z_][A-Za-z_0-9.-]*$/.test(s),uriToAnchor=s=>{const o=getHash(s);return dd(\"#\",o)},$anchor_evaluate=(s,o)=>{const i=(s=>{if(!isAnchor(s))throw new ex(s);return s})(s),a=traversal_find((s=>pE(s)&&serializers_value(s.$anchor)===i),o);if(bc(a))throw new Zw(`Evaluation failed on token: \"${i}\"`);return a},traversal_filter=(s,o)=>{const i=new PredicateVisitor({predicate:s});return visitor_visit(o,i),new Su.G6(i.result)};const tx=class JsonSchemaUriError extends Ko{};const rx=class EvaluationJsonSchemaUriError extends tx{},resolveSchema$refField=(s,o)=>{if(void 0===o.$ref)return;const i=getHash(serializers_value(o.$ref)),a=serializers_value(o.meta.get(\"ancestorsSchemaIdentifiers\")),u=Ca(((s,o)=>resolve(s,sanitize(stripHash(o)))),s,[...a,serializers_value(o.$ref)]);return`${u}${\"#\"===i?\"\":i}`},refractToSchemaElement=s=>{if(refractToSchemaElement.cache.has(s))return refractToSchemaElement.cache.get(s);const o=uS.refract(s);return refractToSchemaElement.cache.set(s,o),o};refractToSchemaElement.cache=new WeakMap;const maybeRefractToSchemaElement=s=>isPrimitiveElement(s)?refractToSchemaElement(s):s,uri_evaluate=(s,o)=>{const{cache:i}=uri_evaluate,a=stripHash(s),isSchemaElementWith$id=s=>pE(s)&&void 0!==s.$id;if(!i.has(o)){const s=traversal_filter(isSchemaElementWith$id,o);i.set(o,Array.from(s))}const u=i.get(o).find((s=>{const o=((s,o)=>{if(void 0===o.$id)return;const i=serializers_value(o.meta.get(\"ancestorsSchemaIdentifiers\"));return Ca(((s,o)=>resolve(s,sanitize(stripHash(o)))),s,i)})(a,s);return o===a}));if(bc(u))throw new rx(`Evaluation failed on URI: \"${s}\"`);return isAnchor(uriToAnchor(s))?$anchor_evaluate(uriToAnchor(s),u):apidom_evaluate(u,fromURIReference(s))};uri_evaluate.cache=new WeakMap;const nx=class MaximumDereferenceDepthError extends Cw{};const sx=class MaximumResolveDepthError extends Lw{};const ox=class UnmatchedResolverError extends Fw{},apidom_reference_src_parse=async(s,o)=>{const i=new kw({uri:sanitize(stripHash(s)),mediaType:o.parse.mediaType}),a=await(async(s,o)=>{const i=o.resolve.resolvers.map((s=>{const i=Object.create(s);return Object.assign(i,o.resolve.resolverOpts)})),a=await plugins_filter(\"canRead\",[s,o],i);if(cp(a))throw new ox(s.uri);try{const{result:o}=await run(\"read\",[s],a);return o}catch(o){throw new Lw(`Error while reading file \"${s.uri}\"`,{cause:o})}})(i,o);return(async(s,o)=>{const i=o.parse.parsers.map((s=>{const i=Object.create(s);return Object.assign(i,o.parse.parserOpts)})),a=await plugins_filter(\"canParse\",[s,o],i);if(cp(a))throw new ox(s.uri);try{const{plugin:i,result:u}=await run(\"parse\",[s,o],a);return!i.allowEmpty&&u.isEmpty?Promise.reject(new jw(`Error while parsing file \"${s.uri}\". File is empty.`)):u}catch(o){throw new jw(`Error while parsing file \"${s.uri}\"`,{cause:o})}})(new kw({...i,data:a}),o)};class AncestorLineage extends Array{includesCycle(s){return this.filter((o=>o.has(s))).length>1}includes(s,o){return s instanceof Set?super.includes(s,o):this.some((o=>o.has(s)))}findItem(s){for(const o of this)for(const i of o)if(ju(i)&&s(i))return i}}const ix=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],ax=new IdentityManager,mutationReplacer=(s,o,i,a)=>{Du(a)?a.value=s:Array.isArray(a)&&(a[i]=s)};class OpenAPI3_1DereferenceVisitor{indirections;namespace;reference;options;ancestors;refractCache;constructor({reference:s,namespace:o,options:i,indirections:a=[],ancestors:u=new AncestorLineage,refractCache:_=new Map}){this.indirections=a,this.namespace=o,this.reference=s,this.options=i,this.ancestors=new AncestorLineage(...u),this.refractCache=_}toBaseURI(s){return resolve(this.reference.uri,sanitize(stripHash(s)))}async toReference(s){if(this.reference.depth>=this.options.resolve.maxDepth)throw new sx(`Maximum resolution depth of ${this.options.resolve.maxDepth} has been exceeded by file \"${this.reference.uri}\"`);const o=this.toBaseURI(s),{refSet:i}=this.reference;if(i.has(o))return i.find(Jw(o,\"uri\"));const a=await apidom_reference_src_parse(unsanitize(o),{...this.options,parse:{...this.options.parse,mediaType:\"text/plain\"}}),u=new gw({uri:o,value:cloneDeep(a),depth:this.reference.depth+1});if(i.add(u),this.options.dereference.immutable){const s=new gw({uri:`immutable://${o}`,value:a,depth:this.reference.depth+1});i.add(s)}return u}toAncestorLineage(s){const o=new Set(s.filter(ju));return[new AncestorLineage(...this.ancestors,o),o]}async ReferenceElement(s,o,i,a,u,_){if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]),C=this.toBaseURI(serializers_value(s.$ref)),j=stripHash(this.reference.uri)===C,L=!j;if(!this.options.resolve.internal&&j)return!1;if(!this.options.resolve.external&&L)return!1;const B=await this.toReference(serializers_value(s.$ref)),$=resolve(C,serializers_value(s.$ref));this.indirections.push(s);const V=fromURIReference($);let U=apidom_evaluate(B.value.result,V);if(U.id=ax.identify(U),isPrimitiveElement(U)){const o=serializers_value(s.meta.get(\"referenced-element\")),i=`${o}-${serializers_value(ax.identify(U))}`;if(this.refractCache.has(i))U=this.refractCache.get(i);else if(isReferenceLikeElement(U))U=qb.refract(U),U.setMetaProperty(\"referenced-element\",o),this.refractCache.set(i,U);else{U=this.namespace.getElementClass(o).refract(U),this.refractCache.set(i,U)}}if(s===U)throw new Ko(\"Recursive Reference Object detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(U)){if(B.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var z,Y;const o=new Su.sI(U.id,{type:\"reference\",uri:B.uri,$ref:serializers_value(s.$ref)}),a=(null!==(z=null===(Y=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===Y?void 0:Y.circularReplacer)&&void 0!==z?z:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const Z=stripHash(B.refSet.rootRef.uri)!==B.uri,ee=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((L||Z||aE(U)||ee)&&!w.includesCycle(U)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:B,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});U=await ix(U,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}this.indirections.pop();const ie=cloneShallow(U);return ie.setMetaProperty(\"id\",ax.generateId()),ie.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref),description:serializers_value(s.description),summary:serializers_value(s.summary)}),ie.setMetaProperty(\"ref-origin\",B.uri),ie.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),Mu(U)&&Mu(ie)&&(s.hasKey(\"description\")&&\"description\"in U&&(ie.remove(\"description\"),ie.set(\"description\",s.get(\"description\"))),s.hasKey(\"summary\")&&\"summary\"in U&&(ie.remove(\"summary\"),ie.set(\"summary\",s.get(\"summary\")))),_.replaceWith(ie,mutationReplacer),!i&&ie}async PathItemElement(s,o,i,a,u,_){if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]),C=this.toBaseURI(serializers_value(s.$ref)),j=stripHash(this.reference.uri)===C,L=!j;if(!this.options.resolve.internal&&j)return;if(!this.options.resolve.external&&L)return;const B=await this.toReference(serializers_value(s.$ref)),$=resolve(C,serializers_value(s.$ref));this.indirections.push(s);const V=fromURIReference($);let U=apidom_evaluate(B.value.result,V);if(U.id=ax.identify(U),isPrimitiveElement(U)){const s=`path-item-${serializers_value(ax.identify(U))}`;this.refractCache.has(s)?U=this.refractCache.get(s):(U=Rb.refract(U),this.refractCache.set(s,U))}if(s===U)throw new Ko(\"Recursive Path Item Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(U)){if(B.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var z,Y;const o=new Su.sI(U.id,{type:\"path-item\",uri:B.uri,$ref:serializers_value(s.$ref)}),a=(null!==(z=null===(Y=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===Y?void 0:Y.circularReplacer)&&void 0!==z?z:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const Z=stripHash(B.refSet.rootRef.uri)!==B.uri,ee=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((L||Z||oE(U)&&Iu(U.$ref)||ee)&&!w.includesCycle(U)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:B,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});U=await ix(U,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}if(this.indirections.pop(),oE(U)){const o=new Rb([...U.content],cloneDeep(U.meta),cloneDeep(U.attributes));o.setMetaProperty(\"id\",ax.generateId()),s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",B.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),U=o}return _.replaceWith(U,mutationReplacer),i?void 0:U}async LinkElement(s,o,i,a,u,_){if(!Iu(s.operationRef)&&!Iu(s.operationId))return;if(Iu(s.operationRef)&&Iu(s.operationId))throw new Ko(\"LinkElement operationRef and operationId fields are mutually exclusive.\");let w;if(Iu(s.operationRef)){var x;const o=fromURIReference(serializers_value(s.operationRef)),a=this.toBaseURI(serializers_value(s.operationRef)),u=stripHash(this.reference.uri)===a,C=!u;if(!this.options.resolve.internal&&u)return;if(!this.options.resolve.external&&C)return;const j=await this.toReference(serializers_value(s.operationRef));if(w=apidom_evaluate(j.value.result,o),isPrimitiveElement(w)){const s=`operation-${serializers_value(ax.identify(w))}`;this.refractCache.has(s)?w=this.refractCache.get(s):(w=Pb.refract(w),this.refractCache.set(s,w))}w=cloneShallow(w),w.setMetaProperty(\"ref-origin\",j.uri);const L=cloneShallow(s);return null===(x=L.operationRef)||void 0===x||x.meta.set(\"operation\",w),_.replaceWith(L,mutationReplacer),i?void 0:L}if(Iu(s.operationId)){var C;const o=serializers_value(s.operationId),a=await this.toReference(unsanitize(this.reference.uri));if(w=traversal_find((s=>nE(s)&&ju(s.operationId)&&s.operationId.equals(o)),a.value.result),bc(w))throw new Ko(`OperationElement(operationId=${o}) not found.`);const u=cloneShallow(s);return null===(C=u.operationId)||void 0===C||C.meta.set(\"operation\",w),_.replaceWith(u,mutationReplacer),i?void 0:u}}async ExampleElement(s,o,i,a,u,_){if(!Iu(s.externalValue))return;if(s.hasKey(\"value\")&&Iu(s.externalValue))throw new Ko(\"ExampleElement value and externalValue fields are mutually exclusive.\");const w=this.toBaseURI(serializers_value(s.externalValue)),x=stripHash(this.reference.uri)===w,C=!x;if(!this.options.resolve.internal&&x)return;if(!this.options.resolve.external&&C)return;const j=await this.toReference(serializers_value(s.externalValue)),L=cloneShallow(j.value.result);L.setMetaProperty(\"ref-origin\",j.uri);const B=cloneShallow(s);return B.value=L,_.replaceWith(B,mutationReplacer),i?void 0:B}async SchemaElement(s,o,i,a,u,_){if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[w,x]=this.toAncestorLineage([...u,i]);let C=await this.toReference(unsanitize(this.reference.uri)),{uri:j}=C;const L=resolveSchema$refField(j,s),B=stripHash(L),$=new kw({uri:B}),V=Kw((s=>s.canRead($)),this.options.resolve.resolvers),U=!V;let z,Y=stripHash(this.reference.uri)===L,Z=!Y;this.indirections.push(s);try{if(V||U){j=this.toBaseURI(L);const s=L,o=maybeRefractToSchemaElement(C.value.result);if(z=uri_evaluate(s,o),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z),!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return}else{if(j=this.toBaseURI(L),Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=fromURIReference(L),o=maybeRefractToSchemaElement(C.value.result);z=apidom_evaluate(o,s),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}}catch(s){if(!(U&&s instanceof rx))throw s;if(isAnchor(uriToAnchor(L))){if(Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=uriToAnchor(L),o=maybeRefractToSchemaElement(C.value.result);z=$anchor_evaluate(s,o),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}else{if(j=this.toBaseURI(L),Y=stripHash(this.reference.uri)===j,Z=!Y,!this.options.resolve.internal&&Y)return;if(!this.options.resolve.external&&Z)return;C=await this.toReference(unsanitize(L));const s=fromURIReference(L),o=maybeRefractToSchemaElement(C.value.result);z=apidom_evaluate(o,s),z=maybeRefractToSchemaElement(z),z.id=ax.identify(z)}}if(s===z)throw new Ko(\"Recursive Schema Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(w.includes(z)){if(C.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var ee,ie;const o=new Su.sI(z.id,{type:\"json-schema\",uri:C.uri,$ref:serializers_value(s.$ref)}),a=(null!==(ee=null===(ie=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===ie?void 0:ie.circularReplacer)&&void 0!==ee?ee:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,mutationReplacer),!i&&a}}const ae=stripHash(C.refSet.rootRef.uri)!==C.uri,ce=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((Z||ae||pE(z)&&Iu(z.$ref)||ce)&&!w.includesCycle(z)){x.add(s);const o=new OpenAPI3_1DereferenceVisitor({reference:C,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:w});z=await ix(z,o,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),x.delete(s)}if(this.indirections.pop(),predicates_isBooleanJsonSchemaElement(z)){const o=cloneDeep(z);return o.setMetaProperty(\"id\",ax.generateId()),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",C.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),_.replaceWith(o,mutationReplacer),!i&&o}if(pE(z)){const o=new uS([...z.content],cloneDeep(z.meta),cloneDeep(z.attributes));o.setMetaProperty(\"id\",ax.generateId()),s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",C.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(ax.identify(s))),z=o}return _.replaceWith(z,mutationReplacer),i?void 0:z}}const cx=OpenAPI3_1DereferenceVisitor,lx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")];const ux=class OpenAPI3_1DereferenceStrategy extends Hw{constructor(s){super({...null!=s?s:{},name:\"openapi-3-1\"})}canDereference(s){var o;return\"text/plain\"!==s.mediaType?mw.includes(s.mediaType):rE(null===(o=s.parseResult)||void 0===o?void 0:o.result)}async dereference(s,o){var i;const a=createNamespace(hw),u=null!==(i=o.dereference.refSet)&&void 0!==i?i:new yw,_=new yw;let w,x=u;u.has(s.uri)?w=u.find(Jw(s.uri,\"uri\")):(w=new gw({uri:s.uri,value:s.parseResult}),u.add(w)),o.dereference.immutable&&(u.refs.map((s=>new gw({...s,value:cloneDeep(s.value)}))).forEach((s=>_.add(s))),w=_.find((o=>o.uri===s.uri)),x=_);const C=new cx({reference:w,namespace:a,options:o}),j=await lx(x.rootRef.value,C,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});return o.dereference.immutable&&_.refs.filter((s=>s.uri.startsWith(\"immutable://\"))).map((s=>new gw({...s,uri:s.uri.replace(/^immutable:\\/\\//,\"\")}))).forEach((s=>u.add(s))),null===o.dereference.refSet&&u.clean(),_.clean(),j}},to_path=s=>{const o=(s=>s.slice(2))(s);return o.reduce(((s,i,a)=>{if(Du(i)){const o=String(serializers_value(i.key));s.push(o)}else if(Ru(o[a-2])){const u=o[a-2].content.indexOf(i);s.push(u)}return s}),[])};const px=class ModelPropertyMacroVisitor{modelPropertyMacro;options;SchemaElement={leave:(s,o,i,a,u)=>{void 0!==s.properties&&Mu(s.properties)&&s.properties.forEach((o=>{if(Mu(o))try{const s=this.modelPropertyMacro(serializers_value(o));o.set(\"default\",s)}catch(o){var a,_;const w=new Error(o,{cause:o});w.fullPath=[...to_path([...u,i,s]),\"properties\"],null===(a=this.options.dereference.dereferenceOpts)||void 0===a||null===(a=a.errors)||void 0===a||null===(_=a.push)||void 0===_||_.call(a,w)}}))}};constructor({modelPropertyMacro:s,options:o}){this.modelPropertyMacro=s,this.options=o}};const hx=class all_of_AllOfVisitor{options;SchemaElement={leave(s,o,i,a,u){if(void 0===s.allOf)return;if(!Ru(s.allOf)){var _,w;const o=new TypeError(\"allOf must be an array\");return o.fullPath=[...to_path([...u,i,s]),\"allOf\"],void(null===(_=this.options.dereference.dereferenceOpts)||void 0===_||null===(_=_.errors)||void 0===_||null===(w=_.push)||void 0===w||w.call(_,o))}if(s.allOf.isEmpty)return void s.remove(\"allOf\");if(!s.allOf.content.every(pE)){var x,C;const o=new TypeError(\"Elements in allOf must be objects\");return o.fullPath=[...to_path([...u,i,s]),\"allOf\"],void(null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,o))}for(;s.hasKey(\"allOf\");){const{allOf:o}=s;s.remove(\"allOf\");const i=yd.all([...o.content,s]);if(s.hasKey(\"$$ref\")||i.remove(\"$$ref\"),s.hasKey(\"example\")){const o=i.getMember(\"example\");o&&(o.value=s.get(\"example\"))}if(s.hasKey(\"examples\")){const o=i.getMember(\"examples\");o&&(o.value=s.get(\"examples\"))}s.content=i.content}}};constructor({options:s}){this.options=s}};const dx=class ParameterMacroVisitor{parameterMacro;options;#n;OperationElement={enter:s=>{this.#n=s},leave:()=>{this.#n=void 0}};ParameterElement={leave:(s,o,i,a,u)=>{const _=this.#n?serializers_value(this.#n):null,w=serializers_value(s);try{const o=this.parameterMacro(_,w);s.set(\"default\",o)}catch(s){var x,C;const o=new Error(s,{cause:s});o.fullPath=to_path([...u,i]),null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,o)}}};constructor({parameterMacro:s,options:o}){this.parameterMacro=s,this.options=o}},get_root_cause=s=>{if(null==s.cause)return s;let{cause:o}=s;for(;null!=o.cause;)o=o.cause;return o};const fx=class SchemaRefError extends Go{},{wrapError:mx}=Xl,gx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")],yx=new IdentityManager,dereference_mutationReplacer=(s,o,i,a)=>{Du(a)?a.value=s:Array.isArray(a)&&(a[i]=s)};class OpenAPI3_1SwaggerClientDereferenceVisitor extends cx{useCircularStructures;allowMetaPatches;basePath;constructor({allowMetaPatches:s=!0,useCircularStructures:o=!1,basePath:i=null,...a}){super(a),this.allowMetaPatches=s,this.useCircularStructures=o,this.basePath=i}async ReferenceElement(s,o,i,a,u,_){try{if(this.indirections.includes(s))return!1;const[o,a]=this.toAncestorLineage([...u,i]),j=this.toBaseURI(serializers_value(s.$ref)),L=stripHash(this.reference.uri)===j,B=!L;if(!this.options.resolve.internal&&L)return!1;if(!this.options.resolve.external&&B)return!1;const $=await this.toReference(serializers_value(s.$ref)),V=resolve(j,serializers_value(s.$ref));this.indirections.push(s);const U=fromURIReference(V);let z=apidom_evaluate($.value.result,U);if(z.id=yx.identify(z),isPrimitiveElement(z)){const o=serializers_value(s.meta.get(\"referenced-element\")),i=`${o}-${serializers_value(yx.identify(z))}`;if(this.refractCache.has(i))z=this.refractCache.get(i);else if(isReferenceLikeElement(z))z=qb.refract(z),z.setMetaProperty(\"referenced-element\",o),this.refractCache.set(i,z);else{z=this.namespace.getElementClass(o).refract(z),this.refractCache.set(i,z)}}if(s===z)throw new Ko(\"Recursive Reference Object detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(z)){if($.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(z.id,{type:\"reference\",uri:$.uri,$ref:serializers_value(s.$ref),baseURI:V,referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(o,dereference_mutationReplacer),!i&&a}}const Y=stripHash($.refSet.rootRef.uri)!==$.uri,Z=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((B||Y||aE(z)||Z)&&!o.includesCycle(z)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:$,namespace:this.namespace,indirections:[...this.indirections],options:this.options,refractCache:this.refractCache,ancestors:o,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});z=await gx(z,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}this.indirections.pop();const ee=cloneShallow(z);if(ee.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref),description:serializers_value(s.description),summary:serializers_value(s.summary)}),ee.setMetaProperty(\"ref-origin\",$.uri),ee.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),Mu(z)&&(s.hasKey(\"description\")&&\"description\"in z&&(ee.remove(\"description\"),ee.set(\"description\",s.get(\"description\"))),s.hasKey(\"summary\")&&\"summary\"in z&&(ee.remove(\"summary\"),ee.set(\"summary\",s.get(\"summary\")))),this.allowMetaPatches&&Mu(ee)&&!ee.hasKey(\"$$ref\")){const s=resolve(j,V);ee.set(\"$$ref\",s)}return _.replaceWith(ee,dereference_mutationReplacer),!i&&ee}catch(o){var j,L,B;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),pointer:fromURIReference(serializers_value(s.$ref)),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"]});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async PathItemElement(s,o,i,a,u,_){try{if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;if(includesClasses([\"cycle\"],s.$ref))return!1;const[o,a]=this.toAncestorLineage([...u,i]),j=this.toBaseURI(serializers_value(s.$ref)),L=stripHash(this.reference.uri)===j,B=!L;if(!this.options.resolve.internal&&L)return;if(!this.options.resolve.external&&B)return;const $=await this.toReference(serializers_value(s.$ref)),V=resolve(j,serializers_value(s.$ref));this.indirections.push(s);const U=fromURIReference(V);let z=apidom_evaluate($.value.result,U);if(z.id=yx.identify(z),isPrimitiveElement(z)){const s=`path-item-${serializers_value(yx.identify(z))}`;this.refractCache.has(s)?z=this.refractCache.get(s):(z=Rb.refract(z),this.refractCache.set(s,z))}if(s===z)throw new Ko(\"Recursive Path Item Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(z)){if($.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(z.id,{type:\"path-item\",uri:$.uri,$ref:serializers_value(s.$ref),baseURI:V,referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(o,dereference_mutationReplacer),!i&&a}}const Y=stripHash($.refSet.rootRef.uri)!==$.uri,Z=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((B||Y||oE(z)&&Iu(z.$ref)||Z)&&!o.includesCycle(z)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:$,namespace:this.namespace,indirections:[...this.indirections],options:this.options,ancestors:o,allowMetaPatches:this.allowMetaPatches,useCircularStructures:this.useCircularStructures,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});z=await gx(z,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}if(this.indirections.pop(),oE(z)){const o=new Rb([...z.content],cloneDeep(z.meta),cloneDeep(z.attributes));if(s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",$.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),this.allowMetaPatches&&void 0===o.get(\"$$ref\")){const s=resolve(j,V);o.set(\"$$ref\",s)}z=o}return _.replaceWith(z,dereference_mutationReplacer),i?void 0:z}catch(o){var j,L,B;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),pointer:fromURIReference(serializers_value(s.$ref)),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"]});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async SchemaElement(s,o,i,a,u,_){try{if(!Iu(s.$ref))return;if(this.indirections.includes(s))return!1;const[o,a]=this.toAncestorLineage([...u,i]);let j=await this.toReference(unsanitize(this.reference.uri)),{uri:L}=j;const B=resolveSchema$refField(L,s),$=stripHash(B),V=new kw({uri:$}),U=!this.options.resolve.resolvers.some((s=>s.canRead(V))),z=!U;let Y,Z=stripHash(this.reference.uri)===B,ee=!Z;this.indirections.push(s);try{if(U||z){L=this.toBaseURI(B);const s=B,o=maybeRefractToSchemaElement(j.value.result);if(Y=uri_evaluate(s,o),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y),!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return}else{if(L=this.toBaseURI(B),Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=fromURIReference(B),o=maybeRefractToSchemaElement(j.value.result);Y=apidom_evaluate(o,s),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}}catch(s){if(!(z&&s instanceof rx))throw s;if(isAnchor(uriToAnchor(B))){if(Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=uriToAnchor(B),o=maybeRefractToSchemaElement(j.value.result);Y=$anchor_evaluate(s,o),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}else{if(L=this.toBaseURI(serializers_value(B)),Z=stripHash(this.reference.uri)===L,ee=!Z,!this.options.resolve.internal&&Z)return;if(!this.options.resolve.external&&ee)return;j=await this.toReference(unsanitize(B));const s=fromURIReference(B),o=maybeRefractToSchemaElement(j.value.result);Y=apidom_evaluate(o,s),Y=maybeRefractToSchemaElement(Y),Y.id=yx.identify(Y)}}if(s===Y)throw new Ko(\"Recursive Schema Object reference detected\");if(this.indirections.length>this.options.dereference.maxDepth)throw new nx(`Maximum dereference depth of \"${this.options.dereference.maxDepth}\" has been exceeded in file \"${this.reference.uri}\"`);if(o.includes(Y)){if(j.refSet.circular=!0,\"error\"===this.options.dereference.circular)throw new Ko(\"Circular reference detected\");if(\"replace\"===this.options.dereference.circular){var w,x;const o=new Su.sI(Y.id,{type:\"json-schema\",uri:j.uri,$ref:serializers_value(s.$ref),baseURI:resolve(L,B),referencingElement:s}),a=(null!==(w=null===(x=this.options.dereference.strategyOpts[\"openapi-3-1\"])||void 0===x?void 0:x.circularReplacer)&&void 0!==w?w:this.options.dereference.circularReplacer)(o);return _.replaceWith(a,dereference_mutationReplacer),!i&&a}}const ie=stripHash(j.refSet.rootRef.uri)!==j.uri,ae=[\"error\",\"replace\"].includes(this.options.dereference.circular);if((ee||ie||pE(Y)&&Iu(Y.$ref)||ae)&&!o.includesCycle(Y)){var C;a.add(s);const _=new OpenAPI3_1SwaggerClientDereferenceVisitor({reference:j,namespace:this.namespace,indirections:[...this.indirections],options:this.options,useCircularStructures:this.useCircularStructures,allowMetaPatches:this.allowMetaPatches,ancestors:o,basePath:null!==(C=this.basePath)&&void 0!==C?C:[...to_path([...u,i,s]),\"$ref\"]});Y=await gx(Y,_,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}),a.delete(s)}if(this.indirections.pop(),predicates_isBooleanJsonSchemaElement(Y)){const o=cloneDeep(Y);return o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",j.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),_.replaceWith(o,dereference_mutationReplacer),!i&&o}if(pE(Y)){const o=new uS([...Y.content],cloneDeep(Y.meta),cloneDeep(Y.attributes));if(s.forEach(((s,i,a)=>{o.remove(serializers_value(i)),o.content.push(a)})),o.remove(\"$ref\"),o.setMetaProperty(\"ref-fields\",{$ref:serializers_value(s.$ref)}),o.setMetaProperty(\"ref-origin\",j.uri),o.setMetaProperty(\"ref-referencing-element-id\",cloneDeep(yx.identify(s))),this.allowMetaPatches&&void 0===o.get(\"$$ref\")){const s=resolve(L,B);o.set(\"$$ref\",s)}Y=o}return _.replaceWith(Y,dereference_mutationReplacer),i?void 0:Y}catch(o){var j,L,B;const a=get_root_cause(o),_=new fx(`Could not resolve reference: ${a.message}`,{baseDoc:this.reference.uri,$ref:serializers_value(s.$ref),fullPath:null!==(j=this.basePath)&&void 0!==j?j:[...to_path([...u,i,s]),\"$ref\"],cause:a});return void(null===(L=this.options.dereference.dereferenceOpts)||void 0===L||null===(L=L.errors)||void 0===L||null===(B=L.push)||void 0===B||B.call(L,_))}}async LinkElement(){}async ExampleElement(s,o,i,a,u,_){try{return await super.ExampleElement(s,o,i,a,u,_)}catch(o){var w,x,C;const a=get_root_cause(o),_=mx(a,{baseDoc:this.reference.uri,externalValue:serializers_value(s.externalValue),fullPath:null!==(w=this.basePath)&&void 0!==w?w:[...to_path([...u,i,s]),\"externalValue\"]});return void(null===(x=this.options.dereference.dereferenceOpts)||void 0===x||null===(x=x.errors)||void 0===x||null===(C=x.push)||void 0===C||C.call(x,_))}}}const vx=OpenAPI3_1SwaggerClientDereferenceVisitor,bx=mergeAll[Symbol.for(\"nodejs.util.promisify.custom\")];const _x=class RootVisitor{constructor({parameterMacro:s,modelPropertyMacro:o,mode:i,options:a,...u}){const _=[];_.push(new vx({...u,options:a})),\"function\"==typeof o&&_.push(new px({modelPropertyMacro:o,options:a})),\"strict\"!==i&&_.push(new hx({options:a})),\"function\"==typeof s&&_.push(new dx({parameterMacro:s,options:a}));const w=bx(_,{nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});Object.assign(this,w)}},Sx=visitor_visit[Symbol.for(\"nodejs.util.promisify.custom\")];const Ex=class OpenAPI3_1SwaggerClientDereferenceStrategy extends ux{allowMetaPatches;parameterMacro;modelPropertyMacro;mode;ancestors;constructor({allowMetaPatches:s=!1,parameterMacro:o=null,modelPropertyMacro:i=null,mode:a=\"non-strict\",ancestors:u=[],..._}={}){super({..._}),this.name=\"openapi-3-1-swagger-client\",this.allowMetaPatches=s,this.parameterMacro=o,this.modelPropertyMacro=i,this.mode=a,this.ancestors=[...u]}async dereference(s,o){var i;const a=createNamespace(hw),u=null!==(i=o.dereference.refSet)&&void 0!==i?i:new yw,_=new yw;let w,x=u;u.has(s.uri)?w=u.find((o=>o.uri===s.uri)):(w=new gw({uri:s.uri,value:s.parseResult}),u.add(w)),o.dereference.immutable&&(u.refs.map((s=>new gw({...s,value:cloneDeep(s.value)}))).forEach((s=>_.add(s))),w=_.find((o=>o.uri===s.uri)),x=_);const C=new _x({reference:w,namespace:a,options:o,allowMetaPatches:this.allowMetaPatches,ancestors:this.ancestors,modelPropertyMacro:this.modelPropertyMacro,mode:this.mode,parameterMacro:this.parameterMacro}),j=await Sx(x.rootRef.value,C,{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType});return o.dereference.immutable&&_.refs.filter((s=>s.uri.startsWith(\"immutable://\"))).map((s=>new gw({...s,uri:s.uri.replace(/^immutable:\\/\\//,\"\")}))).forEach((s=>u.add(s))),null===o.dereference.refSet&&u.clean(),_.clean(),j}},circularReplacer=s=>{const o=serializers_value(s.meta.get(\"baseURI\")),i=s.meta.get(\"referencingElement\");return new Su.Sh({$ref:o},cloneDeep(i.meta),cloneDeep(i.attributes))},resolveOpenAPI31Strategy=async s=>{const{spec:o,timeout:i,redirects:a,requestInterceptor:u,responseInterceptor:_,pathDiscriminator:w=[],allowMetaPatches:x=!1,useCircularStructures:C=!1,skipNormalization:j=!1,parameterMacro:L=null,modelPropertyMacro:B=null,mode:$=\"non-strict\",strategies:V}=s;try{const{cache:U}=resolveOpenAPI31Strategy,z=V.find((s=>s.match(o))),Y=isHttpUrl(url_cwd())?url_cwd():Ll,Z=options_retrievalURI(s),ee=resolve(Y,Z);let ie;U.has(o)?ie=U.get(o):(ie=Ib.refract(o),ie.classes.push(\"result\"),U.set(o,ie));const ae=new Cu([ie]),ce=es_compile(w),le=\"\"===ce?\"\":`#${ce}`,pe=apidom_evaluate(ie,ce),de=new gw({uri:ee,value:ae}),fe=new yw({refs:[de]});\"\"!==ce&&(fe.rootRef=void 0);const ye=[new Set([pe])],be=[],_e=await(async(s,o={})=>{const i=util_merge(bw,o);return dereferenceApiDOM(s,i)})(pe,{resolve:{baseURI:`${ee}${le}`,resolvers:[new qw({timeout:i||1e4,redirects:a||10})],resolverOpts:{swaggerHTTPClientConfig:{requestInterceptor:u,responseInterceptor:_}},strategies:[new Mw]},parse:{mediaType:mw.latest(),parsers:[new zw({allowEmpty:!1,sourceMap:!1}),new Ww({allowEmpty:!1,sourceMap:!1}),new Vw({allowEmpty:!1,sourceMap:!1}),new Uw({allowEmpty:!1,sourceMap:!1}),new Tw({allowEmpty:!1,sourceMap:!1})]},dereference:{maxDepth:100,strategies:[new Ex({allowMetaPatches:x,useCircularStructures:C,parameterMacro:L,modelPropertyMacro:B,mode:$,ancestors:ye})],refSet:fe,dereferenceOpts:{errors:be},immutable:!1,circular:C?\"ignore\":\"replace\",circularReplacer:C?bw.dereference.circularReplacer:circularReplacer}}),Se=((s,o,i)=>new gp({element:i}).transclude(s,o))(pe,_e,ie),we=j?Se:z.normalize(Se);return{spec:serializers_value(we),errors:be}}catch(s){if(s instanceof Lp)return{spec:o,errors:[]};throw s}};resolveOpenAPI31Strategy.cache=new WeakMap;const wx=resolveOpenAPI31Strategy;function _clone(s,o,i){if(i||(i=new xx),function _isPrimitive(s){var o=typeof s;return null==s||\"object\"!=o&&\"function\"!=o}(s))return s;var a=function copy(a){var u=i.get(s);if(u)return u;for(var _ in i.set(s,a),s)Object.prototype.hasOwnProperty.call(s,_)&&(a[_]=o?_clone(s[_],!0,i):s[_]);return a};switch(ra(s)){case\"Object\":return a(Object.create(Object.getPrototypeOf(s)));case\"Array\":return a(Array(s.length));case\"Date\":return new Date(s.valueOf());case\"RegExp\":return _cloneRegExp(s);case\"Int8Array\":case\"Uint8Array\":case\"Uint8ClampedArray\":case\"Int16Array\":case\"Uint16Array\":case\"Int32Array\":case\"Uint32Array\":case\"Float32Array\":case\"Float64Array\":case\"BigInt64Array\":case\"BigUint64Array\":return s.slice();default:return s}}var xx=function(){function _ObjectMap(){this.map={},this.length=0}return _ObjectMap.prototype.set=function(s,o){var i=this.hash(s),a=this.map[i];a||(this.map[i]=a=[]),a.push([s,o]),this.length+=1},_ObjectMap.prototype.hash=function(s){var o=[];for(var i in s)o.push(Object.prototype.toString.call(s[i]));return o.join()},_ObjectMap.prototype.get=function(s){if(this.length<=180)for(var o in this.map)for(var i=this.map[o],a=0;a<i.length;a+=1){if((_=i[a])[0]===s)return _[1]}else{var u=this.hash(s);if(i=this.map[u])for(a=0;a<i.length;a+=1){var _;if((_=i[a])[0]===s)return _[1]}}},_ObjectMap}(),kx=function(){function XReduceBy(s,o,i,a){this.valueFn=s,this.valueAcc=o,this.keyFn=i,this.xf=a,this.inputs={}}return XReduceBy.prototype[\"@@transducer/init\"]=_xfBase_init,XReduceBy.prototype[\"@@transducer/result\"]=function(s){var o;for(o in this.inputs)if(_has(o,this.inputs)&&(s=this.xf[\"@@transducer/step\"](s,this.inputs[o]))[\"@@transducer/reduced\"]){s=s[\"@@transducer/value\"];break}return this.inputs=null,this.xf[\"@@transducer/result\"](s)},XReduceBy.prototype[\"@@transducer/step\"]=function(s,o){var i=this.keyFn(o);return this.inputs[i]=this.inputs[i]||[i,_clone(this.valueAcc,!1)],this.inputs[i][1]=this.valueFn(this.inputs[i][1],o),s},XReduceBy}();function _xreduceBy(s,o,i){return function(a){return new kx(s,o,i,a)}}var Ox=_curryN(4,[],_dispatchable([],_xreduceBy,(function reduceBy(s,o,i,a){var u=_xwrap((function(a,u){var _=i(u),w=s(_has(_,a)?a[_]:_clone(o,!1),u);return w&&w[\"@@transducer/reduced\"]?_reduced(a):(a[_]=w,a)}));return wa(u,{},a)})));const Cx=_curry2(_checkForMethod(\"groupBy\",Ox((function(s,o){return s.push(o),s}),[])));const Ax=class NormalizeStorage{internalStore;constructor(s,o,i){this.storageElement=s,this.storageField=o,this.storageSubField=i}get store(){if(!this.internalStore){let s=this.storageElement.get(this.storageField);Mu(s)||(s=new Su.Sh,this.storageElement.set(this.storageField,s));let o=s.get(this.storageSubField);Ru(o)||(o=new Su.wE,s.set(this.storageSubField,o)),this.internalStore=o}return this.internalStore}append(s){this.includes(s)||this.store.push(s)}includes(s){return this.store.includes(s)}},removeSpaces=s=>s.replace(/\\s/g,\"\"),normalize_operation_ids_replaceSpecialCharsWithUnderscore=s=>s.replace(/\\W/gi,\"_\"),normalizeOperationId=(s,o,i)=>{const a=removeSpaces(s);return a.length>0?normalize_operation_ids_replaceSpecialCharsWithUnderscore(a):((s,o)=>`${normalize_operation_ids_replaceSpecialCharsWithUnderscore(removeSpaces(o.toLowerCase()))}${normalize_operation_ids_replaceSpecialCharsWithUnderscore(removeSpaces(s))}`)(o,i)},normalize_operation_ids=({storageField:s=\"x-normalized\",operationIdNormalizer:o=normalizeOperationId}={})=>i=>{const{predicates:a,ancestorLineageToJSONPointer:u,namespace:_}=i,w=[],x=[],C=[];let j;return{visitor:{OpenApi3_1Element:{enter(o){j=new Ax(o,s,\"operation-ids\")},leave(){const s=Cx((s=>serializers_value(s.operationId)),x);Object.entries(s).forEach((([s,o])=>{Array.isArray(o)&&(o.length<=1||o.forEach(((o,i)=>{const a=`${s}${i+1}`;o.operationId=new _.elements.String(a)})))})),C.forEach((s=>{if(void 0===s.operationId)return;const o=String(serializers_value(s.operationId)),i=x.find((s=>serializers_value(s.meta.get(\"originalOperationId\"))===o));void 0!==i&&(s.operationId=cloneDeep.safe(i.operationId),s.meta.set(\"originalOperationId\",o),s.set(\"__originalOperationId\",o))})),x.length=0,C.length=0,j=void 0}},PathItemElement:{enter(s){const o=Na(\"path\",serializers_value(s.meta.get(\"path\")));w.push(o)},leave(){w.pop()}},OperationElement:{enter(s,i,a,C,L){if(void 0===s.operationId)return;const B=u([...L,a,s]);if(j.includes(B))return;const $=String(serializers_value(s.operationId)),V=Ba(w),U=Na(\"method\",serializers_value(s.meta.get(\"http-method\"))),z=o($,V,U);$!==z&&(s.operationId=new _.elements.String(z),s.set(\"__originalOperationId\",$),s.meta.set(\"originalOperationId\",$),x.push(s),j.append(B))}},LinkElement:{leave(s){a.isLinkElement(s)&&void 0!==s.operationId&&C.push(s)}}}}};var jx=function(){function XUniqWith(s,o){this.xf=o,this.pred=s,this.items=[]}return XUniqWith.prototype[\"@@transducer/init\"]=_xfBase_init,XUniqWith.prototype[\"@@transducer/result\"]=_xfBase_result,XUniqWith.prototype[\"@@transducer/step\"]=function(s,o){return _includesWith(this.pred,o,this.items)?s:(this.items.push(o),this.xf[\"@@transducer/step\"](s,o))},XUniqWith}();function _xuniqWith(s){return function(o){return new jx(s,o)}}var Ix=_curry2(_dispatchable([],_xuniqWith,(function(s,o){for(var i,a=0,u=o.length,_=[];a<u;)_includesWith(s,i=o[a],_)||(_[_.length]=i),a+=1;return _})));const Px=Ix,normalize_parameters=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o,parameterEquals=(s,o)=>!!i.isParameterElement(s)&&(!!i.isParameterElement(o)&&(!!i.isStringElement(s.name)&&(!!i.isStringElement(s.in)&&(!!i.isStringElement(o.name)&&(!!i.isStringElement(o.in)&&(serializers_value(s.name)===serializers_value(o.name)&&serializers_value(s.in)===serializers_value(o.in))))))),u=[];let _;return{visitor:{OpenApi3_1Element:{enter(o){_=new Ax(o,s,\"parameters\")},leave(){_=void 0}},PathItemElement:{enter(s,o,a,_,w){if(w.some(i.isComponentsElement))return;const{parameters:x}=s;i.isArrayElement(x)?u.push([...x.content]):u.push([])},leave(){u.pop()}},OperationElement:{leave(s,o,i,w,x){const C=Ba(u);if(!Array.isArray(C)||0===C.length)return;const j=a([...x,i,s]);if(_.includes(j))return;const L=Xw([],[\"parameters\",\"content\"],s),B=Px(parameterEquals,[...L,...C]);s.parameters=new Sv(B),_.append(j)}}}}},normalize_security_requirements=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u,_;return{visitor:{OpenApi3_1Element:{enter(o){_=new Ax(o,s,\"security-requirements\"),i.isArrayElement(o.security)&&(u=o.security)},leave(){_=void 0,u=void 0}},OperationElement:{leave(s,o,w,x,C){if(C.some(i.isComponentsElement))return;const j=a([...C,w,s]);if(_.includes(j))return;var L;void 0===s.security&&void 0!==u&&(s.security=new Cv(null===(L=u)||void 0===L?void 0:L.content),_.append(j))}}}}},normalize_parameter_examples=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u;return{visitor:{OpenApi3_1Element:{enter(o){u=new Ax(o,s,\"parameter-examples\")},leave(){u=void 0}},ParameterElement:{leave(s,o,_,w,x){var C,j;if(x.some(i.isComponentsElement))return;if(void 0===s.schema||!i.isSchemaElement(s.schema))return;if(void 0===(null===(C=s.schema)||void 0===C?void 0:C.example)&&void 0===(null===(j=s.schema)||void 0===j?void 0:j.examples))return;const L=a([...x,_,s]);if(!u.includes(L)){if(void 0!==s.examples&&i.isObjectElement(s.examples)){const o=s.examples.map((s=>cloneDeep.safe(s.value)));return void 0!==s.schema.examples&&(s.schema.set(\"examples\",o),u.append(L)),void(void 0!==s.schema.example&&(s.schema.set(\"example\",o[0]),u.append(L)))}void 0!==s.example&&(void 0!==s.schema.examples&&(s.schema.set(\"examples\",[cloneDeep(s.example)]),u.append(L)),void 0!==s.schema.example&&(s.schema.set(\"example\",cloneDeep(s.example)),u.append(L)))}}}}}},normalize_header_examples=({storageField:s=\"x-normalized\"}={})=>o=>{const{predicates:i,ancestorLineageToJSONPointer:a}=o;let u;return{visitor:{OpenApi3_1Element:{enter(o){u=new Ax(o,s,\"header-examples\")},leave(){u=void 0}},HeaderElement:{leave(s,o,_,w,x){var C,j;if(x.some(i.isComponentsElement))return;if(void 0===s.schema||!i.isSchemaElement(s.schema))return;if(void 0===(null===(C=s.schema)||void 0===C?void 0:C.example)&&void 0===(null===(j=s.schema)||void 0===j?void 0:j.examples))return;const L=a([...x,_,s]);if(!u.includes(L)){if(void 0!==s.examples&&i.isObjectElement(s.examples)){const o=s.examples.map((s=>cloneDeep.safe(s.value)));return void 0!==s.schema.examples&&(s.schema.set(\"examples\",o),u.append(L)),void(void 0!==s.schema.example&&(s.schema.set(\"example\",o[0]),u.append(L)))}void 0!==s.example&&(void 0!==s.schema.examples&&(s.schema.set(\"examples\",[cloneDeep(s.example)]),u.append(L)),void 0!==s.schema.example&&(s.schema.set(\"example\",cloneDeep(s.example)),u.append(L)))}}}}}},openapi_3_1_apidom_normalize=s=>{if(!Mu(s))return s;const o=[normalize_operation_ids({operationIdNormalizer:(s,o,i)=>opId({operationId:s},o,i,{v2OperationIdCompatibilityMode:!1})}),normalize_parameters(),normalize_security_requirements(),normalize_parameter_examples(),normalize_header_examples()];return dispatchPluginsSync(s,o,{toolboxCreator:apidom_ns_openapi_3_1_src_refractor_toolbox,visitorOptions:{keyMap:uw,nodeTypeGetter:apidom_ns_openapi_3_1_src_traversal_visitor_getNodeType}})},Tx={name:\"openapi-3-1-apidom\",match:s=>isOpenAPI31(s),normalize(s){if(!ju(s)&&fu(s)&&!s.$$normalized){const i=(o=openapi_3_1_apidom_normalize,s=>{const i=Ib.refract(s);i.classes.push(\"result\");const a=o(i),u=serializers_value(a);return wx.cache.set(u,a),serializers_value(a)})(s);return i.$$normalized=!0,i}var o;return ju(s)?openapi_3_1_apidom_normalize(s):s},resolve:async s=>wx(s)},Nx=Tx,makeResolve=s=>async o=>(async s=>{const{spec:o,requestInterceptor:i,responseInterceptor:a}=s,u=options_retrievalURI(s),_=options_httpClient(s),w=o||await makeFetchJSON(_,{requestInterceptor:i,responseInterceptor:a})(u),x={...s,spec:w};return s.strategies.find((s=>s.match(w))).resolve(x)})({...s,...o}),Mx=makeResolve({strategies:[_u,vu,gu]});const server_url_template=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-url-template\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},callbacks_server_variable=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-variable\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},server_variable_name=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"server-variable-name\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},callbacks_literals=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"literals\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},Rx=new function server_url_templating_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"server-url-template\",lower:\"server-url-template\",index:0,isBkr:!1},this.rules[1]={name:\"server-variable\",lower:\"server-variable\",index:1,isBkr:!1},this.rules[2]={name:\"server-variable-name\",lower:\"server-variable-name\",index:2,isBkr:!1},this.rules[3]={name:\"literals\",lower:\"literals\",index:3,isBkr:!1},this.rules[4]={name:\"DIGIT\",lower:\"digit\",index:4,isBkr:!1},this.rules[5]={name:\"HEXDIG\",lower:\"hexdig\",index:5,isBkr:!1},this.rules[6]={name:\"pct-encoded\",lower:\"pct-encoded\",index:6,isBkr:!1},this.rules[7]={name:\"ucschar\",lower:\"ucschar\",index:7,isBkr:!1},this.rules[8]={name:\"iprivate\",lower:\"iprivate\",index:8,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:3,min:1,max:1/0},this.rules[0].opcodes[1]={type:1,children:[2,3]},this.rules[0].opcodes[2]={type:4,index:3},this.rules[0].opcodes[3]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:2,children:[1,2,3]},this.rules[1].opcodes[1]={type:7,string:[123]},this.rules[1].opcodes[2]={type:4,index:2},this.rules[1].opcodes[3]={type:7,string:[125]},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:3,min:1,max:1/0},this.rules[2].opcodes[1]={type:1,children:[2,3,4]},this.rules[2].opcodes[2]={type:5,min:0,max:122},this.rules[2].opcodes[3]={type:6,string:[124]},this.rules[2].opcodes[4]={type:5,min:126,max:1114111},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:3,min:1,max:1/0},this.rules[3].opcodes[1]={type:1,children:[2,3,4,5,6,7,8,9,10,11,12,13]},this.rules[3].opcodes[2]={type:6,string:[33]},this.rules[3].opcodes[3]={type:5,min:35,max:36},this.rules[3].opcodes[4]={type:5,min:38,max:59},this.rules[3].opcodes[5]={type:6,string:[61]},this.rules[3].opcodes[6]={type:5,min:63,max:91},this.rules[3].opcodes[7]={type:6,string:[93]},this.rules[3].opcodes[8]={type:6,string:[95]},this.rules[3].opcodes[9]={type:5,min:97,max:122},this.rules[3].opcodes[10]={type:6,string:[126]},this.rules[3].opcodes[11]={type:4,index:7},this.rules[3].opcodes[12]={type:4,index:8},this.rules[3].opcodes[13]={type:4,index:6},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:5,min:48,max:57},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,2,3,4,5,6,7]},this.rules[5].opcodes[1]={type:4,index:4},this.rules[5].opcodes[2]={type:7,string:[97]},this.rules[5].opcodes[3]={type:7,string:[98]},this.rules[5].opcodes[4]={type:7,string:[99]},this.rules[5].opcodes[5]={type:7,string:[100]},this.rules[5].opcodes[6]={type:7,string:[101]},this.rules[5].opcodes[7]={type:7,string:[102]},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:2,children:[1,2,3]},this.rules[6].opcodes[1]={type:7,string:[37]},this.rules[6].opcodes[2]={type:4,index:5},this.rules[6].opcodes[3]={type:4,index:5},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]},this.rules[7].opcodes[1]={type:5,min:160,max:55295},this.rules[7].opcodes[2]={type:5,min:63744,max:64975},this.rules[7].opcodes[3]={type:5,min:65008,max:65519},this.rules[7].opcodes[4]={type:5,min:65536,max:131069},this.rules[7].opcodes[5]={type:5,min:131072,max:196605},this.rules[7].opcodes[6]={type:5,min:196608,max:262141},this.rules[7].opcodes[7]={type:5,min:262144,max:327677},this.rules[7].opcodes[8]={type:5,min:327680,max:393213},this.rules[7].opcodes[9]={type:5,min:393216,max:458749},this.rules[7].opcodes[10]={type:5,min:458752,max:524285},this.rules[7].opcodes[11]={type:5,min:524288,max:589821},this.rules[7].opcodes[12]={type:5,min:589824,max:655357},this.rules[7].opcodes[13]={type:5,min:655360,max:720893},this.rules[7].opcodes[14]={type:5,min:720896,max:786429},this.rules[7].opcodes[15]={type:5,min:786432,max:851965},this.rules[7].opcodes[16]={type:5,min:851968,max:917501},this.rules[7].opcodes[17]={type:5,min:921600,max:983037},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:1,children:[1,2,3]},this.rules[8].opcodes[1]={type:5,min:57344,max:63743},this.rules[8].opcodes[2]={type:5,min:983040,max:1048573},this.rules[8].opcodes[3]={type:5,min:1048576,max:1114109},this.toString=function toString(){let s=\"\";return s+=\"; OpenAPI Server URL templating ABNF syntax\\n\",s+=\"server-url-template    = 1*( literals / server-variable ) ; variant of https://www.rfc-editor.org/rfc/rfc6570#section-2\\n\",s+='server-variable        = \"{\" server-variable-name \"}\"\\n',s+=\"server-variable-name   = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\",s+=\"\\n\",s+=\"; https://www.rfc-editor.org/rfc/rfc6570#section-2.1\\n\",s+=\"; https://www.rfc-editor.org/errata/eid6937\\n\",s+=\"literals               = 1*( %x21 / %x23-24 / %x26-3B / %x3D / %x3F-5B\\n\",s+=\"                       / %x5D / %x5F / %x61-7A / %x7E / ucschar / iprivate\\n\",s+=\"                       / pct-encoded)\\n\",s+=\"                            ; any Unicode character except: CTL, SP,\\n\",s+='                            ;  DQUOTE, \"%\" (aside from pct-encoded),\\n',s+='                            ;  \"<\", \">\", \"\\\\\", \"^\", \"`\", \"{\", \"|\", \"}\"\\n',s+=\"\\n\",s+=\"; https://www.rfc-editor.org/rfc/rfc6570#section-1.5\\n\",s+=\"DIGIT          =  %x30-39             ; 0-9\\n\",s+='HEXDIG         =  DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" ; case-insensitive\\n',s+=\"\\n\",s+='pct-encoded    =  \"%\" HEXDIG HEXDIG\\n',s+=\"\\n\",s+=\"ucschar        =  %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\\n\",s+=\"               /  %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\\n\",s+=\"               /  %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\\n\",s+=\"               /  %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\\n\",s+=\"               /  %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\\n\",s+=\"               /  %xD0000-DFFFD / %xE1000-EFFFD\\n\",s+=\"\\n\",s+=\"iprivate       =  %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD\\n\",'; OpenAPI Server URL templating ABNF syntax\\nserver-url-template    = 1*( literals / server-variable ) ; variant of https://www.rfc-editor.org/rfc/rfc6570#section-2\\nserver-variable        = \"{\" server-variable-name \"}\"\\nserver-variable-name   = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\\n; https://www.rfc-editor.org/rfc/rfc6570#section-2.1\\n; https://www.rfc-editor.org/errata/eid6937\\nliterals               = 1*( %x21 / %x23-24 / %x26-3B / %x3D / %x3F-5B\\n                       / %x5D / %x5F / %x61-7A / %x7E / ucschar / iprivate\\n                       / pct-encoded)\\n                            ; any Unicode character except: CTL, SP,\\n                            ;  DQUOTE, \"%\" (aside from pct-encoded),\\n                            ;  \"<\", \">\", \"\\\\\", \"^\", \"`\", \"{\", \"|\", \"}\"\\n\\n; https://www.rfc-editor.org/rfc/rfc6570#section-1.5\\nDIGIT          =  %x30-39             ; 0-9\\nHEXDIG         =  DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\" ; case-insensitive\\n\\npct-encoded    =  \"%\" HEXDIG HEXDIG\\n\\nucschar        =  %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF\\n               /  %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD\\n               /  %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD\\n               /  %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD\\n               /  %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD\\n               /  %xD0000-DFFFD / %xE1000-EFFFD\\n\\niprivate       =  %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD\\n'}},openapi_server_url_templating_es_parse=s=>{const o=new yp;o.ast=new vp,o.ast.callbacks[\"server-url-template\"]=server_url_template,o.ast.callbacks[\"server-variable\"]=callbacks_server_variable,o.ast.callbacks[\"server-variable-name\"]=server_variable_name,o.ast.callbacks.literals=callbacks_literals;return{result:o.parse(Rx,\"server-url-template\",s),ast:o.ast}},openapi_server_url_templating_es_test=(s,{strict:o=!1}={})=>{try{const i=openapi_server_url_templating_es_parse(s);if(!i.result.success)return!1;const a=[];i.ast.translate(a);const u=a.some((([s])=>\"server-variable\"===s));if(!o&&!u)try{return new URL(s,\"https://vladimirgorej.com\"),!0}catch{return!1}return!o||u}catch{return!1}},encodeServerVariable=s=>(s=>{try{return\"string\"==typeof s&&decodeURIComponent(s)!==s}catch{return!1}})(s)?s:encodeURIComponent(s).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\"),Dx=[\"literals\",\"server-variable-name\"],es_substitute=(s,o,i={})=>{const a={...{encoder:encodeServerVariable},...i},u=openapi_server_url_templating_es_parse(s);if(!u.result.success)return s;const _=[];u.ast.translate(_);const w=_.filter((([s])=>Dx.includes(s))).map((([s,i])=>\"server-variable-name\"===s?Object.hasOwn(o,i)?a.encoder(o[i],i):`{${i}}`:i));return w.join(\"\")};function path_templating_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"path-template\",lower:\"path-template\",index:0,isBkr:!1},this.rules[1]={name:\"path-segment\",lower:\"path-segment\",index:1,isBkr:!1},this.rules[2]={name:\"slash\",lower:\"slash\",index:2,isBkr:!1},this.rules[3]={name:\"path-literal\",lower:\"path-literal\",index:3,isBkr:!1},this.rules[4]={name:\"template-expression\",lower:\"template-expression\",index:4,isBkr:!1},this.rules[5]={name:\"template-expression-param-name\",lower:\"template-expression-param-name\",index:5,isBkr:!1},this.rules[6]={name:\"pchar\",lower:\"pchar\",index:6,isBkr:!1},this.rules[7]={name:\"unreserved\",lower:\"unreserved\",index:7,isBkr:!1},this.rules[8]={name:\"pct-encoded\",lower:\"pct-encoded\",index:8,isBkr:!1},this.rules[9]={name:\"sub-delims\",lower:\"sub-delims\",index:9,isBkr:!1},this.rules[10]={name:\"ALPHA\",lower:\"alpha\",index:10,isBkr:!1},this.rules[11]={name:\"DIGIT\",lower:\"digit\",index:11,isBkr:!1},this.rules[12]={name:\"HEXDIG\",lower:\"hexdig\",index:12,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:2,children:[1,2,6]},this.rules[0].opcodes[1]={type:4,index:2},this.rules[0].opcodes[2]={type:3,min:0,max:1/0},this.rules[0].opcodes[3]={type:2,children:[4,5]},this.rules[0].opcodes[4]={type:4,index:1},this.rules[0].opcodes[5]={type:4,index:2},this.rules[0].opcodes[6]={type:3,min:0,max:1},this.rules[0].opcodes[7]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:3,min:1,max:1/0},this.rules[1].opcodes[1]={type:1,children:[2,3]},this.rules[1].opcodes[2]={type:4,index:3},this.rules[1].opcodes[3]={type:4,index:4},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:7,string:[47]},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:3,min:1,max:1/0},this.rules[3].opcodes[1]={type:4,index:6},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:2,children:[1,2,3]},this.rules[4].opcodes[1]={type:7,string:[123]},this.rules[4].opcodes[2]={type:4,index:5},this.rules[4].opcodes[3]={type:7,string:[125]},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:3,min:1,max:1/0},this.rules[5].opcodes[1]={type:1,children:[2,3,4]},this.rules[5].opcodes[2]={type:5,min:0,max:122},this.rules[5].opcodes[3]={type:6,string:[124]},this.rules[5].opcodes[4]={type:5,min:126,max:1114111},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:1,children:[1,2,3,4,5]},this.rules[6].opcodes[1]={type:4,index:7},this.rules[6].opcodes[2]={type:4,index:8},this.rules[6].opcodes[3]={type:4,index:9},this.rules[6].opcodes[4]={type:7,string:[58]},this.rules[6].opcodes[5]={type:7,string:[64]},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2,3,4,5,6]},this.rules[7].opcodes[1]={type:4,index:10},this.rules[7].opcodes[2]={type:4,index:11},this.rules[7].opcodes[3]={type:7,string:[45]},this.rules[7].opcodes[4]={type:7,string:[46]},this.rules[7].opcodes[5]={type:7,string:[95]},this.rules[7].opcodes[6]={type:7,string:[126]},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:2,children:[1,2,3]},this.rules[8].opcodes[1]={type:7,string:[37]},this.rules[8].opcodes[2]={type:4,index:12},this.rules[8].opcodes[3]={type:4,index:12},this.rules[9].opcodes=[],this.rules[9].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11]},this.rules[9].opcodes[1]={type:7,string:[33]},this.rules[9].opcodes[2]={type:7,string:[36]},this.rules[9].opcodes[3]={type:7,string:[38]},this.rules[9].opcodes[4]={type:7,string:[39]},this.rules[9].opcodes[5]={type:7,string:[40]},this.rules[9].opcodes[6]={type:7,string:[41]},this.rules[9].opcodes[7]={type:7,string:[42]},this.rules[9].opcodes[8]={type:7,string:[43]},this.rules[9].opcodes[9]={type:7,string:[44]},this.rules[9].opcodes[10]={type:7,string:[59]},this.rules[9].opcodes[11]={type:7,string:[61]},this.rules[10].opcodes=[],this.rules[10].opcodes[0]={type:1,children:[1,2]},this.rules[10].opcodes[1]={type:5,min:65,max:90},this.rules[10].opcodes[2]={type:5,min:97,max:122},this.rules[11].opcodes=[],this.rules[11].opcodes[0]={type:5,min:48,max:57},this.rules[12].opcodes=[],this.rules[12].opcodes[0]={type:1,children:[1,2,3,4,5,6,7]},this.rules[12].opcodes[1]={type:4,index:11},this.rules[12].opcodes[2]={type:7,string:[97]},this.rules[12].opcodes[3]={type:7,string:[98]},this.rules[12].opcodes[4]={type:7,string:[99]},this.rules[12].opcodes[5]={type:7,string:[100]},this.rules[12].opcodes[6]={type:7,string:[101]},this.rules[12].opcodes[7]={type:7,string:[102]},this.toString=function toString(){let s=\"\";return s+=\"; OpenAPI Path Templating ABNF syntax\\n\",s+=\"; variant of https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\n\",s+=\"path-template                  = slash *( path-segment slash ) [ path-segment ]\\n\",s+=\"path-segment                   = 1*( path-literal / template-expression )\\n\",s+='slash                          = \"/\"\\n',s+=\"path-literal                   = 1*pchar\\n\",s+='template-expression            = \"{\" template-expression-param-name \"}\"\\n',s+=\"template-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\n\",s+='pchar               = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\\n',s+='unreserved          = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.3\\n\",s+='pct-encoded         = \"%\" HEXDIG HEXDIG\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.1\\n\",s+='sub-delims          = \"!\" / \"$\" / \"&\" / \"\\'\" / \"(\" / \")\"\\n',s+='                    / \"*\" / \"+\" / \",\" / \";\" / \"=\"\\n',s+=\"                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.2\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\n\",s+=\"ALPHA               = %x41-5A / %x61-7A   ; A-Z / a-z\\n\",s+=\"DIGIT               = %x30-39            ; 0-9\\n\",s+='HEXDIG              = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\\n','; OpenAPI Path Templating ABNF syntax\\n; variant of https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\npath-template                  = slash *( path-segment slash ) [ path-segment ]\\npath-segment                   = 1*( path-literal / template-expression )\\nslash                          = \"/\"\\npath-literal                   = 1*pchar\\ntemplate-expression            = \"{\" template-expression-param-name \"}\"\\ntemplate-expression-param-name = 1*( %x00-7A / %x7C / %x7E-10FFFF ) ; every UTF8 character except { and } (from OpenAPI)\\n\\n; https://datatracker.ietf.org/doc/html/rfc3986#section-3.3\\npchar               = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\\nunreserved          = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.3\\npct-encoded         = \"%\" HEXDIG HEXDIG\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.1\\nsub-delims          = \"!\" / \"$\" / \"&\" / \"\\'\" / \"(\" / \")\"\\n                    / \"*\" / \"+\" / \",\" / \";\" / \"=\"\\n                    ; https://datatracker.ietf.org/doc/html/rfc3986#section-2.2\\n\\n; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\nALPHA               = %x41-5A / %x61-7A   ; A-Z / a-z\\nDIGIT               = %x30-39            ; 0-9\\nHEXDIG              = DIGIT / \"A\" / \"B\" / \"C\" / \"D\" / \"E\" / \"F\"\\n'}}const callbacks_slash=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"slash\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),path_template=(s,o,i,a,u)=>{if(s===Ep.SEM_PRE){if(!1===Array.isArray(u))throw new Error(\"parser's user data must be an array\");u.push([\"path-template\",Sp.charsToString(o,i,a)])}return Ep.SEM_OK},path_literal=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"path-literal\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),template_expression=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"template-expression\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),template_expression_param_name=(s,o,i,a,u)=>(s===Ep.SEM_PRE?u.push([\"template-expression-param-name\",Sp.charsToString(o,i,a)]):Ep.SEM_POST,Ep.SEM_OK),Lx=new path_templating_grammar,openapi_path_templating_es_parse=s=>{const o=new yp;o.ast=new vp,o.ast.callbacks[\"path-template\"]=path_template,o.ast.callbacks.slash=callbacks_slash,o.ast.callbacks[\"path-literal\"]=path_literal,o.ast.callbacks[\"template-expression\"]=template_expression,o.ast.callbacks[\"template-expression-param-name\"]=template_expression_param_name;return{result:o.parse(Lx,\"path-template\",s),ast:o.ast}},encodePathComponent=s=>(s=>{try{return\"string\"==typeof s&&decodeURIComponent(s)!==s}catch{return!1}})(s)?s:encodeURIComponent(s).replace(/%5B/g,\"[\").replace(/%5D/g,\"]\"),Fx=[\"slash\",\"path-literal\",\"template-expression-param-name\"],es_resolve=(s,o,i={})=>{const a={...{encoder:encodePathComponent},...i},u=openapi_path_templating_es_parse(s);if(!u.result.success)return s;const _=[];u.ast.translate(_);const w=_.filter((([s])=>Fx.includes(s))).map((([s,i])=>\"template-expression-param-name\"===s?Object.prototype.hasOwnProperty.call(o,i)?a.encoder(o[i],i):`{${i}}`:i));return w.join(\"\")},Bx=(new path_templating_grammar,new yp,{body:function bodyBuilder({req:s,value:o}){void 0!==o&&(s.body=o)},header:function headerBuilder({req:s,parameter:o,value:i}){s.headers=s.headers||{},void 0!==i&&(s.headers[o.name]=i)},query:function queryBuilder({req:s,value:o,parameter:i}){s.query=s.query||{},!1===o&&\"boolean\"===i.type&&(o=\"false\");0===o&&[\"number\",\"integer\"].indexOf(i.type)>-1&&(o=\"0\");if(o)s.query[i.name]={collectionFormat:i.collectionFormat,value:o};else if(i.allowEmptyValue&&void 0!==o){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}},path:function pathBuilder({req:s,value:o,parameter:i,baseURL:a}){if(void 0!==o){const u=s.url.replace(a,\"\"),_=es_resolve(u,{[i.name]:o});s.url=a+_}},formData:function formDataBuilder({req:s,value:o,parameter:i}){!1===o&&\"boolean\"===i.type&&(o=\"false\");0===o&&[\"number\",\"integer\"].indexOf(i.type)>-1&&(o=\"0\");if(o)s.form=s.form||{},s.form[i.name]={collectionFormat:i.collectionFormat,value:o};else if(i.allowEmptyValue&&void 0!==o){s.form=s.form||{};const o=i.name;s.form[o]=s.form[o]||{},s.form[o].allowEmptyValue=!0}}});function serialize(s,o){return o.includes(\"application/json\")?\"string\"==typeof s?s:(Array.isArray(s)&&(s=s.map((s=>{try{return JSON.parse(s)}catch(o){return s}}))),JSON.stringify(s)):String(s)}function grammar_grammar(){this.grammarObject=\"grammarObject\",this.rules=[],this.rules[0]={name:\"lenient-cookie-string\",lower:\"lenient-cookie-string\",index:0,isBkr:!1},this.rules[1]={name:\"lenient-cookie-entry\",lower:\"lenient-cookie-entry\",index:1,isBkr:!1},this.rules[2]={name:\"lenient-cookie-pair\",lower:\"lenient-cookie-pair\",index:2,isBkr:!1},this.rules[3]={name:\"lenient-cookie-pair-invalid\",lower:\"lenient-cookie-pair-invalid\",index:3,isBkr:!1},this.rules[4]={name:\"lenient-cookie-name\",lower:\"lenient-cookie-name\",index:4,isBkr:!1},this.rules[5]={name:\"lenient-cookie-value\",lower:\"lenient-cookie-value\",index:5,isBkr:!1},this.rules[6]={name:\"lenient-quoted-value\",lower:\"lenient-quoted-value\",index:6,isBkr:!1},this.rules[7]={name:\"lenient-quoted-char\",lower:\"lenient-quoted-char\",index:7,isBkr:!1},this.rules[8]={name:\"lenient-cookie-octet\",lower:\"lenient-cookie-octet\",index:8,isBkr:!1},this.rules[9]={name:\"cookie-string\",lower:\"cookie-string\",index:9,isBkr:!1},this.rules[10]={name:\"cookie-pair\",lower:\"cookie-pair\",index:10,isBkr:!1},this.rules[11]={name:\"cookie-name\",lower:\"cookie-name\",index:11,isBkr:!1},this.rules[12]={name:\"cookie-value\",lower:\"cookie-value\",index:12,isBkr:!1},this.rules[13]={name:\"cookie-octet\",lower:\"cookie-octet\",index:13,isBkr:!1},this.rules[14]={name:\"OWS\",lower:\"ows\",index:14,isBkr:!1},this.rules[15]={name:\"token\",lower:\"token\",index:15,isBkr:!1},this.rules[16]={name:\"tchar\",lower:\"tchar\",index:16,isBkr:!1},this.rules[17]={name:\"CHAR\",lower:\"char\",index:17,isBkr:!1},this.rules[18]={name:\"CTL\",lower:\"ctl\",index:18,isBkr:!1},this.rules[19]={name:\"separators\",lower:\"separators\",index:19,isBkr:!1},this.rules[20]={name:\"SP\",lower:\"sp\",index:20,isBkr:!1},this.rules[21]={name:\"HT\",lower:\"ht\",index:21,isBkr:!1},this.rules[22]={name:\"ALPHA\",lower:\"alpha\",index:22,isBkr:!1},this.rules[23]={name:\"DIGIT\",lower:\"digit\",index:23,isBkr:!1},this.rules[24]={name:\"DQUOTE\",lower:\"dquote\",index:24,isBkr:!1},this.rules[25]={name:\"WSP\",lower:\"wsp\",index:25,isBkr:!1},this.rules[26]={name:\"HTAB\",lower:\"htab\",index:26,isBkr:!1},this.rules[27]={name:\"CRLF\",lower:\"crlf\",index:27,isBkr:!1},this.rules[28]={name:\"CR\",lower:\"cr\",index:28,isBkr:!1},this.rules[29]={name:\"LF\",lower:\"lf\",index:29,isBkr:!1},this.udts=[],this.rules[0].opcodes=[],this.rules[0].opcodes[0]={type:2,children:[1,2]},this.rules[0].opcodes[1]={type:4,index:1},this.rules[0].opcodes[2]={type:3,min:0,max:1/0},this.rules[0].opcodes[3]={type:2,children:[4,5,6]},this.rules[0].opcodes[4]={type:7,string:[59]},this.rules[0].opcodes[5]={type:4,index:14},this.rules[0].opcodes[6]={type:4,index:1},this.rules[1].opcodes=[],this.rules[1].opcodes[0]={type:1,children:[1,2]},this.rules[1].opcodes[1]={type:4,index:2},this.rules[1].opcodes[2]={type:4,index:3},this.rules[2].opcodes=[],this.rules[2].opcodes[0]={type:2,children:[1,2,3,4,5,6,7]},this.rules[2].opcodes[1]={type:4,index:14},this.rules[2].opcodes[2]={type:4,index:4},this.rules[2].opcodes[3]={type:4,index:14},this.rules[2].opcodes[4]={type:7,string:[61]},this.rules[2].opcodes[5]={type:4,index:14},this.rules[2].opcodes[6]={type:4,index:5},this.rules[2].opcodes[7]={type:4,index:14},this.rules[3].opcodes=[],this.rules[3].opcodes[0]={type:2,children:[1,2,4]},this.rules[3].opcodes[1]={type:4,index:14},this.rules[3].opcodes[2]={type:3,min:1,max:1/0},this.rules[3].opcodes[3]={type:4,index:16},this.rules[3].opcodes[4]={type:4,index:14},this.rules[4].opcodes=[],this.rules[4].opcodes[0]={type:3,min:1,max:1/0},this.rules[4].opcodes[1]={type:1,children:[2,3,4]},this.rules[4].opcodes[2]={type:5,min:33,max:58},this.rules[4].opcodes[3]={type:6,string:[60]},this.rules[4].opcodes[4]={type:5,min:62,max:126},this.rules[5].opcodes=[],this.rules[5].opcodes[0]={type:1,children:[1,6]},this.rules[5].opcodes[1]={type:2,children:[2,3]},this.rules[5].opcodes[2]={type:4,index:6},this.rules[5].opcodes[3]={type:3,min:0,max:1},this.rules[5].opcodes[4]={type:3,min:0,max:1/0},this.rules[5].opcodes[5]={type:4,index:8},this.rules[5].opcodes[6]={type:3,min:0,max:1/0},this.rules[5].opcodes[7]={type:4,index:8},this.rules[6].opcodes=[],this.rules[6].opcodes[0]={type:2,children:[1,2,4]},this.rules[6].opcodes[1]={type:4,index:24},this.rules[6].opcodes[2]={type:3,min:0,max:1/0},this.rules[6].opcodes[3]={type:4,index:7},this.rules[6].opcodes[4]={type:4,index:24},this.rules[7].opcodes=[],this.rules[7].opcodes[0]={type:1,children:[1,2]},this.rules[7].opcodes[1]={type:5,min:32,max:33},this.rules[7].opcodes[2]={type:5,min:35,max:126},this.rules[8].opcodes=[],this.rules[8].opcodes[0]={type:1,children:[1,2,3]},this.rules[8].opcodes[1]={type:5,min:33,max:43},this.rules[8].opcodes[2]={type:5,min:45,max:58},this.rules[8].opcodes[3]={type:5,min:60,max:126},this.rules[9].opcodes=[],this.rules[9].opcodes[0]={type:2,children:[1,2]},this.rules[9].opcodes[1]={type:4,index:10},this.rules[9].opcodes[2]={type:3,min:0,max:1/0},this.rules[9].opcodes[3]={type:2,children:[4,5,6]},this.rules[9].opcodes[4]={type:7,string:[59]},this.rules[9].opcodes[5]={type:4,index:20},this.rules[9].opcodes[6]={type:4,index:10},this.rules[10].opcodes=[],this.rules[10].opcodes[0]={type:2,children:[1,2,3]},this.rules[10].opcodes[1]={type:4,index:11},this.rules[10].opcodes[2]={type:7,string:[61]},this.rules[10].opcodes[3]={type:4,index:12},this.rules[11].opcodes=[],this.rules[11].opcodes[0]={type:4,index:15},this.rules[12].opcodes=[],this.rules[12].opcodes[0]={type:1,children:[1,6]},this.rules[12].opcodes[1]={type:2,children:[2,3,5]},this.rules[12].opcodes[2]={type:4,index:24},this.rules[12].opcodes[3]={type:3,min:0,max:1/0},this.rules[12].opcodes[4]={type:4,index:13},this.rules[12].opcodes[5]={type:4,index:24},this.rules[12].opcodes[6]={type:3,min:0,max:1/0},this.rules[12].opcodes[7]={type:4,index:13},this.rules[13].opcodes=[],this.rules[13].opcodes[0]={type:1,children:[1,2,3,4,5]},this.rules[13].opcodes[1]={type:6,string:[33]},this.rules[13].opcodes[2]={type:5,min:35,max:43},this.rules[13].opcodes[3]={type:5,min:45,max:58},this.rules[13].opcodes[4]={type:5,min:60,max:91},this.rules[13].opcodes[5]={type:5,min:93,max:126},this.rules[14].opcodes=[],this.rules[14].opcodes[0]={type:3,min:0,max:1/0},this.rules[14].opcodes[1]={type:2,children:[2,4]},this.rules[14].opcodes[2]={type:3,min:0,max:1},this.rules[14].opcodes[3]={type:4,index:27},this.rules[14].opcodes[4]={type:4,index:25},this.rules[15].opcodes=[],this.rules[15].opcodes[0]={type:3,min:1,max:1/0},this.rules[15].opcodes[1]={type:4,index:16},this.rules[16].opcodes=[],this.rules[16].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]},this.rules[16].opcodes[1]={type:7,string:[33]},this.rules[16].opcodes[2]={type:7,string:[35]},this.rules[16].opcodes[3]={type:7,string:[36]},this.rules[16].opcodes[4]={type:7,string:[37]},this.rules[16].opcodes[5]={type:7,string:[38]},this.rules[16].opcodes[6]={type:7,string:[39]},this.rules[16].opcodes[7]={type:7,string:[42]},this.rules[16].opcodes[8]={type:7,string:[43]},this.rules[16].opcodes[9]={type:7,string:[45]},this.rules[16].opcodes[10]={type:7,string:[46]},this.rules[16].opcodes[11]={type:7,string:[94]},this.rules[16].opcodes[12]={type:7,string:[95]},this.rules[16].opcodes[13]={type:7,string:[96]},this.rules[16].opcodes[14]={type:7,string:[124]},this.rules[16].opcodes[15]={type:7,string:[126]},this.rules[16].opcodes[16]={type:4,index:23},this.rules[16].opcodes[17]={type:4,index:22},this.rules[17].opcodes=[],this.rules[17].opcodes[0]={type:5,min:1,max:127},this.rules[18].opcodes=[],this.rules[18].opcodes[0]={type:1,children:[1,2]},this.rules[18].opcodes[1]={type:5,min:0,max:31},this.rules[18].opcodes[2]={type:6,string:[127]},this.rules[19].opcodes=[],this.rules[19].opcodes[0]={type:1,children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]},this.rules[19].opcodes[1]={type:7,string:[40]},this.rules[19].opcodes[2]={type:7,string:[41]},this.rules[19].opcodes[3]={type:7,string:[60]},this.rules[19].opcodes[4]={type:7,string:[62]},this.rules[19].opcodes[5]={type:7,string:[64]},this.rules[19].opcodes[6]={type:7,string:[44]},this.rules[19].opcodes[7]={type:7,string:[59]},this.rules[19].opcodes[8]={type:7,string:[58]},this.rules[19].opcodes[9]={type:7,string:[92]},this.rules[19].opcodes[10]={type:6,string:[34]},this.rules[19].opcodes[11]={type:7,string:[47]},this.rules[19].opcodes[12]={type:7,string:[91]},this.rules[19].opcodes[13]={type:7,string:[93]},this.rules[19].opcodes[14]={type:7,string:[63]},this.rules[19].opcodes[15]={type:7,string:[61]},this.rules[19].opcodes[16]={type:7,string:[123]},this.rules[19].opcodes[17]={type:7,string:[125]},this.rules[19].opcodes[18]={type:4,index:20},this.rules[19].opcodes[19]={type:4,index:21},this.rules[20].opcodes=[],this.rules[20].opcodes[0]={type:6,string:[32]},this.rules[21].opcodes=[],this.rules[21].opcodes[0]={type:6,string:[9]},this.rules[22].opcodes=[],this.rules[22].opcodes[0]={type:1,children:[1,2]},this.rules[22].opcodes[1]={type:5,min:65,max:90},this.rules[22].opcodes[2]={type:5,min:97,max:122},this.rules[23].opcodes=[],this.rules[23].opcodes[0]={type:5,min:48,max:57},this.rules[24].opcodes=[],this.rules[24].opcodes[0]={type:6,string:[34]},this.rules[25].opcodes=[],this.rules[25].opcodes[0]={type:1,children:[1,2]},this.rules[25].opcodes[1]={type:4,index:20},this.rules[25].opcodes[2]={type:4,index:26},this.rules[26].opcodes=[],this.rules[26].opcodes[0]={type:6,string:[9]},this.rules[27].opcodes=[],this.rules[27].opcodes[0]={type:2,children:[1,2]},this.rules[27].opcodes[1]={type:4,index:28},this.rules[27].opcodes[2]={type:4,index:29},this.rules[28].opcodes=[],this.rules[28].opcodes[0]={type:6,string:[13]},this.rules[29].opcodes=[],this.rules[29].opcodes[0]={type:6,string:[10]},this.toString=function toString(){let s=\"\";return s+=\"; Lenient version of https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\n\",s+='lenient-cookie-string        = lenient-cookie-entry *( \";\" OWS lenient-cookie-entry )\\n',s+=\"lenient-cookie-entry         = lenient-cookie-pair / lenient-cookie-pair-invalid\\n\",s+='lenient-cookie-pair          = OWS lenient-cookie-name OWS \"=\" OWS lenient-cookie-value OWS\\n',s+='lenient-cookie-pair-invalid  = OWS 1*tchar OWS ; Allow for standalone entries like \"fizz\" to be ignored\\n',s+='lenient-cookie-name          = 1*( %x21-3A / %x3C / %x3E-7E ) ; Allow all printable US-ASCII except \"=\"\\n',s+=\"lenient-cookie-value         = lenient-quoted-value [ *lenient-cookie-octet ] / *lenient-cookie-octet\\n\",s+=\"lenient-quoted-value         = DQUOTE *( lenient-quoted-char ) DQUOTE\\n\",s+=\"lenient-quoted-char          = %x20-21 / %x23-7E ; Allow all printable US-ASCII except DQUOTE\\n\",s+=\"lenient-cookie-octet         = %x21-2B / %x2D-3A / %x3C-7E\\n\",s+=\"                             ; Allow all printable characters except CTLs, semicolon and SP\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\n\",s+='cookie-string     = cookie-pair *( \";\" SP cookie-pair )\\n',s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1\\n\",s+=\"; https://www.rfc-editor.org/errata/eid5518\\n\",s+='cookie-pair       = cookie-name \"=\" cookie-value\\n',s+=\"cookie-name       = token\\n\",s+=\"cookie-value      = ( DQUOTE *cookie-octet DQUOTE ) / *cookie-octet\\n\",s+=\"                  ; https://www.rfc-editor.org/errata/eid8242\\n\",s+=\"cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\\n\",s+=\"                       ; US-ASCII characters excluding CTLs,\\n\",s+=\"                       ; whitespace, DQUOTE, comma, semicolon,\\n\",s+=\"                       ; and backslash\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc6265#section-2.2\\n\",s+='OWS            = *( [ CRLF ] WSP ) ; \"optional\" whitespace\\n',s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc9110#section-5.6.2\\n\",s+=\"token          = 1*(tchar)\\n\",s+='tchar          = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"\\'\" / \"*\"\\n',s+='                 / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\\n',s+=\"                 / DIGIT / ALPHA\\n\",s+=\"                 ; any VCHAR, except delimiters\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc2616#section-2.2\\n\",s+=\"CHAR           = %x01-7F ; any US-ASCII character (octets 0 - 127)\\n\",s+=\"CTL            = %x00-1F / %x7F ; any US-ASCII control character\\n\",s+='separators     = \"(\" / \")\" / \"<\" / \">\" / \"@\" / \",\" / \";\" / \":\" / \"\\\\\" / %x22 / \"/\" / \"[\" / \"]\" / \"?\" / \"=\" / \"{\" / \"}\" / SP / HT\\n',s+=\"SP             = %x20 ; US-ASCII SP, space (32)\\n\",s+=\"HT             = %x09 ; US-ASCII HT, horizontal-tab (9)\\n\",s+=\"\\n\",s+=\"; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\n\",s+=\"ALPHA          =  %x41-5A / %x61-7A ; A-Z / a-z\\n\",s+=\"DIGIT          =  %x30-39 ; 0-9\\n\",s+='DQUOTE         =  %x22 ; \" (Double Quote)\\n',s+=\"WSP            =  SP / HTAB ; white space\\n\",s+=\"HTAB           =  %x09 ; horizontal tab\\n\",s+=\"CRLF           =  CR LF ; Internet standard newline\\n\",s+=\"CR             =  %x0D ; carriage return\\n\",s+=\"LF             =  %x0A ; linefeed\\n\",'; Lenient version of https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\nlenient-cookie-string        = lenient-cookie-entry *( \";\" OWS lenient-cookie-entry )\\nlenient-cookie-entry         = lenient-cookie-pair / lenient-cookie-pair-invalid\\nlenient-cookie-pair          = OWS lenient-cookie-name OWS \"=\" OWS lenient-cookie-value OWS\\nlenient-cookie-pair-invalid  = OWS 1*tchar OWS ; Allow for standalone entries like \"fizz\" to be ignored\\nlenient-cookie-name          = 1*( %x21-3A / %x3C / %x3E-7E ) ; Allow all printable US-ASCII except \"=\"\\nlenient-cookie-value         = lenient-quoted-value [ *lenient-cookie-octet ] / *lenient-cookie-octet\\nlenient-quoted-value         = DQUOTE *( lenient-quoted-char ) DQUOTE\\nlenient-quoted-char          = %x20-21 / %x23-7E ; Allow all printable US-ASCII except DQUOTE\\nlenient-cookie-octet         = %x21-2B / %x2D-3A / %x3C-7E\\n                             ; Allow all printable characters except CTLs, semicolon and SP\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-4.2.1\\ncookie-string     = cookie-pair *( \";\" SP cookie-pair )\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1\\n; https://www.rfc-editor.org/errata/eid5518\\ncookie-pair       = cookie-name \"=\" cookie-value\\ncookie-name       = token\\ncookie-value      = ( DQUOTE *cookie-octet DQUOTE ) / *cookie-octet\\n                  ; https://www.rfc-editor.org/errata/eid8242\\ncookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\\n                       ; US-ASCII characters excluding CTLs,\\n                       ; whitespace, DQUOTE, comma, semicolon,\\n                       ; and backslash\\n\\n; https://datatracker.ietf.org/doc/html/rfc6265#section-2.2\\nOWS            = *( [ CRLF ] WSP ) ; \"optional\" whitespace\\n\\n; https://datatracker.ietf.org/doc/html/rfc9110#section-5.6.2\\ntoken          = 1*(tchar)\\ntchar          = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"\\'\" / \"*\"\\n                 / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\\n                 / DIGIT / ALPHA\\n                 ; any VCHAR, except delimiters\\n\\n; https://datatracker.ietf.org/doc/html/rfc2616#section-2.2\\nCHAR           = %x01-7F ; any US-ASCII character (octets 0 - 127)\\nCTL            = %x00-1F / %x7F ; any US-ASCII control character\\nseparators     = \"(\" / \")\" / \"<\" / \">\" / \"@\" / \",\" / \";\" / \":\" / \"\\\\\" / %x22 / \"/\" / \"[\" / \"]\" / \"?\" / \"=\" / \"{\" / \"}\" / SP / HT\\nSP             = %x20 ; US-ASCII SP, space (32)\\nHT             = %x09 ; US-ASCII HT, horizontal-tab (9)\\n\\n; https://datatracker.ietf.org/doc/html/rfc5234#appendix-B.1\\nALPHA          =  %x41-5A / %x61-7A ; A-Z / a-z\\nDIGIT          =  %x30-39 ; 0-9\\nDQUOTE         =  %x22 ; \" (Double Quote)\\nWSP            =  SP / HTAB ; white space\\nHTAB           =  %x09 ; horizontal tab\\nCRLF           =  CR LF ; Internet standard newline\\nCR             =  %x0D ; carriage return\\nLF             =  %x0A ; linefeed\\n'}}new grammar_grammar;const utils_percentEncodeChar=s=>{if(\"string\"!=typeof s||1!==[...s].length)throw new TypeError(\"Input must be a single character string.\");const o=s.codePointAt(0);return o<=127?`%${o.toString(16).toUpperCase().padStart(2,\"0\")}`:encodeURIComponent(s)},utils_isQuoted=s=>s.length>=2&&s.startsWith('\"')&&s.endsWith('\"'),utils_unquote=s=>utils_isQuoted(s)?s.slice(1,-1):s,utils_quote=s=>`\"${s}\"`,utils_identity=s=>s,$x=new yp,qx=new grammar_grammar,test_cookie_value=(s,{strict:o=!0,quoted:i=null}={})=>{try{const a=o?\"cookie-value\":\"lenient-cookie-value\",u=$x.parse(qx,a,s);return\"boolean\"==typeof i?u.success&&i===utils_isQuoted(s):u.success}catch{return!1}},base64_browser=s=>{const o=(new TextEncoder).encode(s).reduce(((s,o)=>s+String.fromCharCode(o)),\"\");return btoa(o)},cookie_value_strict_base64=(s,o=base64_browser)=>{const i=String(s);if(test_cookie_value(i))return i;const a=utils_isQuoted(i),u=o(a?utils_unquote(i):i);return a?utils_quote(u):u},base64url_browser=s=>(s=>s.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=+$/g,\"\"))(base64_browser(s)),cookie_value_strict_base64url=s=>cookie_value_strict_base64(s,base64url_browser),Vx=new yp,Ux=new grammar_grammar,test_cookie_name=(s,{strict:o=!0}={})=>{try{const i=o?\"cookie-name\":\"lenient-cookie-name\";return Vx.parse(Ux,i,s).success}catch{return!1}},cookie_name_strict=s=>{if(!test_cookie_name(s))throw new TypeError(`Invalid cookie name: ${s}`)},cookie_value_strict=s=>{if(!test_cookie_value(s))throw new TypeError(`Invalid cookie value: ${s}`)},zx={encoders:{name:utils_identity,value:cookie_value_strict_base64url},validators:{name:cookie_name_strict,value:cookie_value_strict}},set_cookie_serialize=(s,o,i={})=>{const a={...zx,...i,encoders:{...zx.encoders,...i.encoders},validators:{...zx.validators,...i.validators}},u=a.encoders.name(s),_=a.encoders.value(o);return a.validators.name(u),a.validators.value(_),`${u}=${_}`},cookie_serialize=(s,o={})=>(Array.isArray(s)?s:\"object\"==typeof s&&null!==s?Object.entries(s):[]).map((([s,i])=>set_cookie_serialize(s,i,o))).join(\"; \"),Wx=new yp,Jx=new grammar_grammar,cookie_value_strict_percent=s=>{const o=String(s);if(test_cookie_value(o))return o;const i=utils_isQuoted(o),a=i?utils_unquote(o):o;let u=\"\";for(const s of a)u+=Wx.parse(Jx,\"cookie-octet\",s).success?s:utils_percentEncodeChar(s);return i?utils_quote(u):u},Hx=(new yp,new grammar_grammar,s=>{if(!test_cookie_name(s,{strict:!1}))throw new TypeError(`Invalid cookie name: ${s}`)}),valuePercentEncoder=s=>cookie_value_strict_percent(s).replace(/[=&]/gu,(s=>\"=\"===s?\"%3D\":\"%26\")),helpers_cookie_serialize=(s,o={})=>cookie_serialize(s,ep({encoders:{name:utils_identity,value:valuePercentEncoder},validators:{name:Hx,value:cookie_value_strict}},o));function parameter_builders_path({req:s,value:o,parameter:i,baseURL:a}){const{name:u,style:_,explode:w,content:x}=i;if(void 0===o)return;const C=s.url.replace(a,\"\");let j;if(x){const s=Object.keys(x)[0];j=es_resolve(C,{[u]:o},{encoder:o=>encodeCharacters(serialize(o,s))})}else j=es_resolve(C,{[u]:o},{encoder:s=>stylize({key:i.name,value:s,style:_||\"simple\",explode:null!=w&&w,escape:\"reserved\"})});s.url=a+j}function query({req:s,value:o,parameter:i}){if(s.query=s.query||{},void 0!==o&&i.content){const a=serialize(o,Object.keys(i.content)[0]);if(a)s.query[i.name]=a;else if(i.allowEmptyValue){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}}else if(!1===o&&(o=\"false\"),0===o&&(o=\"0\"),o){const{style:a,explode:u,allowReserved:_}=i;s.query[i.name]={value:o,serializationOption:{style:a,explode:u,allowReserved:_}}}else if(i.allowEmptyValue&&void 0!==o){const o=i.name;s.query[o]=s.query[o]||{},s.query[o].allowEmptyValue=!0}}const Kx=[\"accept\",\"authorization\",\"content-type\"];function parameter_builders_header({req:s,parameter:o,value:i}){if(s.headers=s.headers||{},!(Kx.indexOf(o.name.toLowerCase())>-1))if(void 0!==i&&o.content){const a=Object.keys(o.content)[0];s.headers[o.name]=serialize(i,a)}else void 0===i||Array.isArray(i)&&0===i.length||(s.headers[o.name]=stylize({key:o.name,value:i,style:o.style||\"simple\",explode:void 0!==o.explode&&o.explode,escape:!1}))}function cookie({req:s,parameter:o,value:i}){const{name:a}=o;if(s.headers=s.headers||{},void 0!==i&&o.content){const u=serialize(i,Object.keys(o.content)[0]);s.headers.Cookie=helpers_cookie_serialize({[a]:u})}else if(void 0!==i&&(!Array.isArray(i)||0!==i.length)){var u;const _=stylize({key:o.name,value:i,escape:!1,style:o.style||\"form\",explode:null!==(u=o.explode)&&void 0!==u&&u}),w=Array.isArray(i)&&o.explode?`${a}=${_}`:_;s.headers.Cookie=helpers_cookie_serialize({[a]:w})}}const Gx=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:window,{btoa:Yx}=Gx,Xx=Yx;function buildRequest(s,o){const{operation:i,requestBody:a,securities:u,spec:_,attachContentTypeForEmptyPayload:w}=s;let{requestContentType:x}=s;o=function applySecurities({request:s,securities:o={},operation:i={},spec:a}){var u;const _={...s},{authorized:w={}}=o,x=i.security||a.security||[],C=w&&!!Object.keys(w).length,j=(null==a||null===(u=a.components)||void 0===u?void 0:u.securitySchemes)||{};if(_.headers=_.headers||{},_.query=_.query||{},!Object.keys(o).length||!C||!x||Array.isArray(i.security)&&!i.security.length)return s;return x.forEach((s=>{Object.keys(s).forEach((s=>{const o=w[s],i=j[s];if(!o)return;const a=o.value||o,{type:u}=i;if(o)if(\"apiKey\"===u)\"query\"===i.in&&(_.query[i.name]=a),\"header\"===i.in&&(_.headers[i.name]=a),\"cookie\"===i.in&&(_.cookies[i.name]=a);else if(\"http\"===u){if(/^basic$/i.test(i.scheme)){const s=a.username||\"\",o=a.password||\"\",i=Xx(`${s}:${o}`);_.headers.Authorization=`Basic ${i}`}/^bearer$/i.test(i.scheme)&&(_.headers.Authorization=`Bearer ${a}`)}else if(\"oauth2\"===u||\"openIdConnect\"===u){const s=o.token||{},a=s[i[\"x-tokenName\"]||\"access_token\"];let u=s.token_type;u&&\"bearer\"!==u.toLowerCase()||(u=\"Bearer\"),_.headers.Authorization=`${u} ${a}`}}))})),_}({request:o,securities:u,operation:i,spec:_});const C=i.requestBody||{},j=Object.keys(C.content||{}),L=x&&j.indexOf(x)>-1;if(a||w){if(x&&L)o.headers[\"Content-Type\"]=x;else if(!x){const s=j[0];s&&(o.headers[\"Content-Type\"]=s,x=s)}}else x&&L&&(o.headers[\"Content-Type\"]=x);if(!s.responseContentType&&i.responses){const s=Object.entries(i.responses).filter((([s,o])=>{const i=parseInt(s,10);return i>=200&&i<300&&fu(o.content)})).reduce(((s,[,o])=>s.concat(Object.keys(o.content))),[]);s.length>0&&(o.headers.accept=s.join(\", \"))}if(a)if(x){if(j.indexOf(x)>-1)if(\"application/x-www-form-urlencoded\"===x||\"multipart/form-data\"===x)if(\"object\"==typeof a){var B,$;const s=null!==(B=null===($=C.content[x])||void 0===$?void 0:$.encoding)&&void 0!==B?B:{};o.form={},Object.keys(a).forEach((i=>{let u;try{u=JSON.parse(a[i])}catch{u=a[i]}o.form[i]={value:u,encoding:s[i]||{}}}))}else if(\"string\"==typeof a){var V,U;const s=null!==(V=null===(U=C.content[x])||void 0===U?void 0:U.encoding)&&void 0!==V?V:{};try{o.form={};const i=JSON.parse(a);Object.entries(i).forEach((([i,a])=>{o.form[i]={value:a,encoding:s[i]||{}}}))}catch{o.form=a}}else o.form=a;else o.body=a}else o.body=a;return o}function build_request_buildRequest(s,o){const{spec:i,operation:a,securities:u,requestContentType:_,responseContentType:w,attachContentTypeForEmptyPayload:x}=s;if(o=function build_request_applySecurities({request:s,securities:o={},operation:i={},spec:a}){const u={...s},{authorized:_={},specSecurity:w=[]}=o,x=i.security||w,C=_&&!!Object.keys(_).length,j=a.securityDefinitions;if(u.headers=u.headers||{},u.query=u.query||{},!Object.keys(o).length||!C||!x||Array.isArray(i.security)&&!i.security.length)return s;return x.forEach((s=>{Object.keys(s).forEach((s=>{const o=_[s];if(!o)return;const{token:i}=o,a=o.value||o,w=j[s],{type:x}=w,C=w[\"x-tokenName\"]||\"access_token\",L=i&&i[C];let B=i&&i.token_type;if(o)if(\"apiKey\"===x){const s=\"query\"===w.in?\"query\":\"headers\";u[s]=u[s]||{},u[s][w.name]=a}else if(\"basic\"===x)if(a.header)u.headers.authorization=a.header;else{const s=a.username||\"\",o=a.password||\"\";a.base64=Xx(`${s}:${o}`),u.headers.authorization=`Basic ${a.base64}`}else\"oauth2\"===x&&L&&(B=B&&\"bearer\"!==B.toLowerCase()?B:\"Bearer\",u.headers.authorization=`${B} ${L}`)}))})),u}({request:o,securities:u,operation:a,spec:i}),o.body||o.form||x)_?o.headers[\"Content-Type\"]=_:Array.isArray(a.consumes)?[o.headers[\"Content-Type\"]]=a.consumes:Array.isArray(i.consumes)?[o.headers[\"Content-Type\"]]=i.consumes:a.parameters&&a.parameters.filter((s=>\"file\"===s.type)).length?o.headers[\"Content-Type\"]=\"multipart/form-data\":a.parameters&&a.parameters.filter((s=>\"formData\"===s.in)).length&&(o.headers[\"Content-Type\"]=\"application/x-www-form-urlencoded\");else if(_){const s=a.parameters&&a.parameters.filter((s=>\"body\"===s.in)).length>0,i=a.parameters&&a.parameters.filter((s=>\"formData\"===s.in)).length>0;(s||i)&&(o.headers[\"Content-Type\"]=_)}return!w&&Array.isArray(a.produces)&&a.produces.length>0&&(o.headers.accept=a.produces.join(\", \")),o}function idFromPathMethodLegacy(s,o){return`${o.toLowerCase()}-${s}`}const arrayOrEmpty=s=>Array.isArray(s)?s:[],findObjectOrArraySchema=(s,{recurse:o=!0,depth:i=1}={})=>{if(fu(s)){if(\"object\"===s.type||\"array\"===s.type||Array.isArray(s.type)&&(s.type.includes(\"object\")||s.type.includes(\"array\")))return s;if(!(i>Bl)&&o){const a=Array.isArray(s.oneOf)?s.oneOf.find((s=>findObjectOrArraySchema(s,{recurse:o,depth:i+1}))):void 0;if(a)return a;const u=Array.isArray(s.anyOf)?s.anyOf.find((s=>findObjectOrArraySchema(s,{recurse:o,depth:i+1}))):void 0;if(u)return u}}},parseJsonObjectOrArray=({value:s,silentFail:o=!1})=>{try{const i=JSON.parse(s);if(fu(i)||Array.isArray(i))return i;if(!o)throw new Error(\"Expected JSON serialized object or array\")}catch{if(!o)throw new Error(\"Could not parse parameter value string as JSON Object or JSON Array\")}return s},parseURIReference=s=>{try{return new URL(s)}catch{const o=new URL(s,Ll),i=String(s).startsWith(\"/\")?o.pathname:o.pathname.substring(1);return{hash:o.hash,host:\"\",hostname:\"\",href:\"\",origin:\"\",password:\"\",pathname:i,port:\"\",protocol:\"\",search:o.search,searchParams:o.searchParams}}};class OperationNotFoundError extends Go{}const Qx={buildRequest:execute_buildRequest};function execute_execute({http:s,fetch:o,spec:i,operationId:a,pathName:u,method:_,parameters:w,securities:x,...C}){const j=s||o||http_http;u&&_&&!a&&(a=idFromPathMethodLegacy(u,_));const L=Qx.buildRequest({spec:i,operationId:a,parameters:w,securities:x,http:j,...C});return L.body&&(fu(L.body)||Array.isArray(L.body))&&(L.body=JSON.stringify(L.body)),j(L)}function execute_buildRequest(s){const{spec:o,operationId:i,responseContentType:a,scheme:u,requestInterceptor:_,responseInterceptor:w,contextUrl:x,userFetch:C,server:j,serverVariables:L,http:B,signal:$,serverVariableEncoder:V}=s;let{parameters:U,parameterBuilders:z,baseURL:Y}=s;const Z=isOpenAPI3(o);z||(z=Z?be:Bx);let ee={url:\"\",credentials:B&&B.withCredentials?\"include\":\"same-origin\",headers:{},cookies:{}};$&&(ee.signal=$),_&&(ee.requestInterceptor=_),w&&(ee.responseInterceptor=w),C&&(ee.userFetch=C);const ie=function getOperationRaw(s,o){return s&&s.paths?function findOperation(s,o){return function eachOperation(s,o,i){if(!s||\"object\"!=typeof s||!s.paths||\"object\"!=typeof s.paths)return null;const{paths:a}=s;for(const u in a)for(const _ in a[u]){if(\"PARAMETERS\"===_.toUpperCase())continue;const w=a[u][_];if(!w||\"object\"!=typeof w)continue;const x={spec:s,pathName:u,method:_.toUpperCase(),operation:w},C=o(x);if(i&&C)return x}}(s,o,!0)||null}(s,(({pathName:s,method:i,operation:a})=>{if(!a||\"object\"!=typeof a)return!1;const u=a.operationId;return[opId(a,s,i),idFromPathMethodLegacy(s,i),u].some((s=>s&&s===o))})):null}(o,i);if(!ie)throw new OperationNotFoundError(`Operation ${i} not found`);const{operation:ae={},method:ce,pathName:le}=ie;if(Y=null!=Y?Y:function baseUrl(s){const o=isOpenAPI3(s.spec);return o?function oas3BaseUrl({spec:s,pathName:o,method:i,server:a,contextUrl:u,serverVariables:_={},serverVariableEncoder:w}){var x,C;let j,L=[],B=\"\";const $=null==s||null===(x=s.paths)||void 0===x||null===(x=x[o])||void 0===x||null===(x=x[(i||\"\").toLowerCase()])||void 0===x?void 0:x.servers,V=null==s||null===(C=s.paths)||void 0===C||null===(C=C[o])||void 0===C?void 0:C.servers,U=null==s?void 0:s.servers;L=isNonEmptyServerList($)?$:isNonEmptyServerList(V)?V:isNonEmptyServerList(U)?U:[Fl],a&&(j=L.find((s=>s.url===a)),j&&(B=a));B||([j]=L,B=j.url);if(openapi_server_url_templating_es_test(B,{strict:!0})){const s=Object.entries({...j.variables}).reduce(((s,[o,i])=>(s[o]=i.default,s)),{});B=es_substitute(B,{...s,..._},{encoder:\"function\"==typeof w?w:vw})}return function buildOas3UrlWithContext(s=\"\",o=\"\"){const i=parseURIReference(s&&o?resolve(o,s):s),a=parseURIReference(o),u=stripNonAlpha(i.protocol)||stripNonAlpha(a.protocol),_=i.host||a.host,w=i.pathname;let x;x=u&&_?`${u}://${_+w}`:w;return\"/\"===x[x.length-1]?x.slice(0,-1):x}(B,u)}(s):function swagger2BaseUrl({spec:s,scheme:o,contextUrl:i=\"\"}){const a=parseURIReference(i),u=Array.isArray(s.schemes)?s.schemes[0]:null,_=o||u||stripNonAlpha(a.protocol)||\"http\",w=s.host||a.host||\"\",x=s.basePath||\"\";let C;C=_&&w?`${_}://${w+x}`:x;return\"/\"===C[C.length-1]?C.slice(0,-1):C}(s)}({spec:o,scheme:u,contextUrl:x,server:j,serverVariables:L,pathName:le,method:ce,serverVariableEncoder:V}),ee.url+=Y,!i)return delete ee.cookies,ee;ee.url+=le,ee.method=`${ce}`.toUpperCase(),U=U||{};const pe=o.paths[le]||{};a&&(ee.headers.accept=a);const de=(s=>{const o={};s.forEach((s=>{o[s.in]||(o[s.in]={}),o[s.in][s.name]=s}));const i=[];return Object.keys(o).forEach((s=>{Object.keys(o[s]).forEach((a=>{i.push(o[s][a])}))})),i})([].concat(arrayOrEmpty(ae.parameters)).concat(arrayOrEmpty(pe.parameters)));de.forEach((s=>{const i=z[s.in];let a;if(\"body\"===s.in&&s.schema&&s.schema.properties&&(a=U),a=s&&s.name&&U[s.name],void 0===a?a=s&&s.name&&U[`${s.in}.${s.name}`]:((s,o)=>o.filter((o=>o.name===s)))(s.name,de).length>1&&console.warn(`Parameter '${s.name}' is ambiguous because the defined spec has more than one parameter with the name: '${s.name}' and the passed-in parameter values did not define an 'in' value.`),null!==a){if(void 0!==s.default&&void 0===a&&(a=s.default),void 0===a&&s.required&&!s.allowEmptyValue)throw new Error(`Required parameter ${s.name} is not provided`);Z&&\"string\"==typeof a&&(id(\"type\",s.schema)&&\"string\"==typeof s.schema.type&&findObjectOrArraySchema(s.schema,{recurse:!1})?a=parseJsonObjectOrArray({value:a,silentFail:!1}):(id(\"type\",s.schema)&&Array.isArray(s.schema.type)&&findObjectOrArraySchema(s.schema,{recurse:!1})||!id(\"type\",s.schema)&&findObjectOrArraySchema(s.schema,{recurse:!0}))&&(a=parseJsonObjectOrArray({value:a,silentFail:!0}))),i&&i({req:ee,parameter:s,value:a,operation:ae,spec:o,baseURL:Y})}}));const fe={...s,operation:ae};if(ee=Z?buildRequest(fe,ee):build_request_buildRequest(fe,ee),ee.cookies&&Object.keys(ee.cookies).length>0){const s=helpers_cookie_serialize(ee.cookies);Nd(ee.headers.Cookie)?ee.headers.Cookie+=`; ${s}`:ee.headers.Cookie=s}return ee.cookies&&delete ee.cookies,serializeRequest(ee)}const stripNonAlpha=s=>s?s.replace(/\\W/g,\"\"):null;const isNonEmptyServerList=s=>Array.isArray(s)&&s.length>0;const makeResolveSubtree=s=>async(o,i,a={})=>(async(s,o,i={})=>{const{returnEntireTree:a,baseDoc:u,requestInterceptor:_,responseInterceptor:w,parameterMacro:x,modelPropertyMacro:C,useCircularStructures:j,strategies:L}=i,B={spec:s,pathDiscriminator:o,baseDoc:u,requestInterceptor:_,responseInterceptor:w,parameterMacro:x,modelPropertyMacro:C,useCircularStructures:j,strategies:L},$=L.find((o=>o.match(s))).normalize(s),V=await Mx({spec:$,...B,allowMetaPatches:!0,skipNormalization:!isOpenAPI31(s)});return!a&&Array.isArray(o)&&o.length&&(V.spec=o.reduce(((s,o)=>null==s?void 0:s[o]),V.spec)||null),V})(o,i,{...s,...a}),Zx=(makeResolveSubtree({strategies:[_u,vu,gu]}),(s,o)=>(...i)=>{s(...i);const a=o.getConfigs().withCredentials;o.fn.fetch.withCredentials=a});function swagger_client({configs:s,getConfigs:o}){return{fn:{fetch:(i=http_http,a=s.preFetch,u=s.postFetch,u=u||(s=>s),a=a||(s=>s),s=>(\"string\"==typeof s&&(s={url:s}),s=serializeRequest(s),s=a(s),u(i(s)))),buildRequest:execute_buildRequest,execute:execute_execute,resolve:makeResolve({strategies:[Nx,_u,vu,gu]}),resolveSubtree:async(s,i,a={})=>{const u=o(),_={modelPropertyMacro:u.modelPropertyMacro,parameterMacro:u.parameterMacro,requestInterceptor:u.requestInterceptor,responseInterceptor:u.responseInterceptor,strategies:[Nx,_u,vu,gu]};return makeResolveSubtree(_)(s,i,a)},serializeRes:serializeResponse,opId},statePlugins:{configs:{wrapActions:{loaded:Zx}}}};var i,a,u}function util(){return{fn:{shallowEqualKeys,sanitizeUrl}}}var tk=__webpack_require__(40961),rk=(__webpack_require__(78418),Re.version.startsWith(\"19\")),nk=Symbol.for(rk?\"react.transitional.element\":\"react.element\"),sk=Symbol.for(\"react.portal\"),ok=Symbol.for(\"react.fragment\"),lk=Symbol.for(\"react.strict_mode\"),uk=Symbol.for(\"react.profiler\"),pk=Symbol.for(\"react.consumer\"),fk=Symbol.for(\"react.context\"),mk=Symbol.for(\"react.forward_ref\"),yk=Symbol.for(\"react.suspense\"),vk=Symbol.for(\"react.suspense_list\"),_k=Symbol.for(\"react.memo\"),wk=Symbol.for(\"react.lazy\"),xk=mk,Ak=_k;function typeOf(s){if(\"object\"==typeof s&&null!==s){const{$$typeof:o}=s;switch(o){case nk:switch(s=s.type){case ok:case uk:case lk:case yk:case vk:return s;default:switch(s=s&&s.$$typeof){case fk:case mk:case wk:case _k:case pk:return s;default:return o}}case sk:return o}}}function pureFinalPropsSelectorFactory(s,o,i,a,{areStatesEqual:u,areOwnPropsEqual:_,areStatePropsEqual:w}){let x,C,j,L,B,$=!1;function handleSubsequentCalls($,V){const U=!_(V,C),z=!u($,x,V,C);return x=$,C=V,U&&z?function handleNewPropsAndNewState(){return j=s(x,C),o.dependsOnOwnProps&&(L=o(a,C)),B=i(j,L,C),B}():U?function handleNewProps(){return s.dependsOnOwnProps&&(j=s(x,C)),o.dependsOnOwnProps&&(L=o(a,C)),B=i(j,L,C),B}():z?function handleNewState(){const o=s(x,C),a=!w(o,j);return j=o,a&&(B=i(j,L,C)),B}():B}return function pureFinalPropsSelector(u,_){return $?handleSubsequentCalls(u,_):function handleFirstCall(u,_){return x=u,C=_,j=s(x,C),L=o(a,C),B=i(j,L,C),$=!0,B}(u,_)}}function wrapMapToPropsConstant(s){return function initConstantSelector(o){const i=s(o);function constantSelector(){return i}return constantSelector.dependsOnOwnProps=!1,constantSelector}}function getDependsOnOwnProps(s){return s.dependsOnOwnProps?Boolean(s.dependsOnOwnProps):1!==s.length}function wrapMapToPropsFunc(s,o){return function initProxySelector(o,{displayName:i}){const a=function mapToPropsProxy(s,o){return a.dependsOnOwnProps?a.mapToProps(s,o):a.mapToProps(s,void 0)};return a.dependsOnOwnProps=!0,a.mapToProps=function detectFactoryAndVerify(o,i){a.mapToProps=s,a.dependsOnOwnProps=getDependsOnOwnProps(s);let u=a(o,i);return\"function\"==typeof u&&(a.mapToProps=u,a.dependsOnOwnProps=getDependsOnOwnProps(u),u=a(o,i)),u},a}}function createInvalidArgFactory(s,o){return(i,a)=>{throw new Error(`Invalid value of type ${typeof s} for ${o} argument when connecting component ${a.wrappedComponentName}.`)}}function defaultMergeProps(s,o,i){return{...i,...s,...o}}function defaultNoopBatch(s){s()}var Bk={notify(){},get:()=>[]};function createSubscription(s,o){let i,a=Bk,u=0,_=!1;function handleChangeWrapper(){w.onStateChange&&w.onStateChange()}function trySubscribe(){u++,i||(i=o?o.addNestedSub(handleChangeWrapper):s.subscribe(handleChangeWrapper),a=function createListenerCollection(){let s=null,o=null;return{clear(){s=null,o=null},notify(){defaultNoopBatch((()=>{let o=s;for(;o;)o.callback(),o=o.next}))},get(){const o=[];let i=s;for(;i;)o.push(i),i=i.next;return o},subscribe(i){let a=!0;const u=o={callback:i,next:null,prev:o};return u.prev?u.prev.next=u:s=u,function unsubscribe(){a&&null!==s&&(a=!1,u.next?u.next.prev=u.prev:o=u.prev,u.prev?u.prev.next=u.next:s=u.next)}}}}())}function tryUnsubscribe(){u--,i&&0===u&&(i(),i=void 0,a.clear(),a=Bk)}const w={addNestedSub:function addNestedSub(s){trySubscribe();const o=a.subscribe(s);let i=!1;return()=>{i||(i=!0,o(),tryUnsubscribe())}},notifyNestedSubs:function notifyNestedSubs(){a.notify()},handleChangeWrapper,isSubscribed:function isSubscribed(){return _},trySubscribe:function trySubscribeSelf(){_||(_=!0,trySubscribe())},tryUnsubscribe:function tryUnsubscribeSelf(){_&&(_=!1,tryUnsubscribe())},getListeners:()=>a};return w}var qk=(()=>!(\"undefined\"==typeof window||void 0===window.document||void 0===window.document.createElement))(),Vk=(()=>\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product)(),zk=(()=>qk||Vk?Re.useLayoutEffect:Re.useEffect)();function is(s,o){return s===o?0!==s||0!==o||1/s==1/o:s!=s&&o!=o}function shallowEqual(s,o){if(is(s,o))return!0;if(\"object\"!=typeof s||null===s||\"object\"!=typeof o||null===o)return!1;const i=Object.keys(s),a=Object.keys(o);if(i.length!==a.length)return!1;for(let a=0;a<i.length;a++)if(!Object.prototype.hasOwnProperty.call(o,i[a])||!is(s[i[a]],o[i[a]]))return!1;return!0}var eO={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},tO={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},rO={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},nO={[xk]:{$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},[Ak]:rO};function getStatics(s){return function isMemo(s){return typeOf(s)===_k}(s)?rO:nO[s.$$typeof]||eO}var sO=Object.defineProperty,oO=Object.getOwnPropertyNames,iO=Object.getOwnPropertySymbols,aO=Object.getOwnPropertyDescriptor,cO=Object.getPrototypeOf,lO=Object.prototype;function hoistNonReactStatics(s,o){if(\"string\"!=typeof o){if(lO){const i=cO(o);i&&i!==lO&&hoistNonReactStatics(s,i)}let i=oO(o);iO&&(i=i.concat(iO(o)));const a=getStatics(s),u=getStatics(o);for(let _=0;_<i.length;++_){const w=i[_];if(!(tO[w]||u&&u[w]||a&&a[w])){const i=aO(o,w);try{sO(s,w,i)}catch(s){}}}}return s}var uO=Symbol.for(\"react-redux-context\"),pO=\"undefined\"!=typeof globalThis?globalThis:{};function getContext(){if(!Re.createContext)return{};const s=pO[uO]??=new Map;let o=s.get(Re.createContext);return o||(o=Re.createContext(null),s.set(Re.createContext,o)),o}var hO=getContext(),dO=[null,null];function captureWrapperProps(s,o,i,a,u,_){s.current=a,i.current=!1,u.current&&(u.current=null,_())}function strictEqual(s,o){return s===o}var fO=function connect(s,o,i,{pure:a,areStatesEqual:u=strictEqual,areOwnPropsEqual:_=shallowEqual,areStatePropsEqual:w=shallowEqual,areMergedPropsEqual:x=shallowEqual,forwardRef:C=!1,context:j=hO}={}){const L=j,B=function mapStateToPropsFactory(s){return s?\"function\"==typeof s?wrapMapToPropsFunc(s):createInvalidArgFactory(s,\"mapStateToProps\"):wrapMapToPropsConstant((()=>({})))}(s),$=function mapDispatchToPropsFactory(s){return s&&\"object\"==typeof s?wrapMapToPropsConstant((o=>function react_redux_bindActionCreators(s,o){const i={};for(const a in s){const u=s[a];\"function\"==typeof u&&(i[a]=(...s)=>o(u(...s)))}return i}(s,o))):s?\"function\"==typeof s?wrapMapToPropsFunc(s):createInvalidArgFactory(s,\"mapDispatchToProps\"):wrapMapToPropsConstant((s=>({dispatch:s})))}(o),V=function mergePropsFactory(s){return s?\"function\"==typeof s?function wrapMergePropsFunc(s){return function initMergePropsProxy(o,{displayName:i,areMergedPropsEqual:a}){let u,_=!1;return function mergePropsProxy(o,i,w){const x=s(o,i,w);return _?a(x,u)||(u=x):(_=!0,u=x),u}}}(s):createInvalidArgFactory(s,\"mergeProps\"):()=>defaultMergeProps}(i),U=Boolean(s);return s=>{const o=s.displayName||s.name||\"Component\",i=`Connect(${o})`,a={shouldHandleStateChanges:U,displayName:i,wrappedComponentName:o,WrappedComponent:s,initMapStateToProps:B,initMapDispatchToProps:$,initMergeProps:V,areStatesEqual:u,areStatePropsEqual:w,areOwnPropsEqual:_,areMergedPropsEqual:x};function ConnectFunction(o){const[i,u,_]=Re.useMemo((()=>{const{reactReduxForwardedRef:s,...i}=o;return[o.context,s,i]}),[o]),w=Re.useMemo((()=>L),[i,L]),x=Re.useContext(w),C=Boolean(o.store)&&Boolean(o.store.getState)&&Boolean(o.store.dispatch),j=Boolean(x)&&Boolean(x.store);const B=C?o.store:x.store,$=j?x.getServerState:B.getState,V=Re.useMemo((()=>function finalPropsSelectorFactory(s,{initMapStateToProps:o,initMapDispatchToProps:i,initMergeProps:a,...u}){return pureFinalPropsSelectorFactory(o(s,u),i(s,u),a(s,u),s,u)}(B.dispatch,a)),[B]),[z,Y]=Re.useMemo((()=>{if(!U)return dO;const s=createSubscription(B,C?void 0:x.subscription),o=s.notifyNestedSubs.bind(s);return[s,o]}),[B,C,x]),Z=Re.useMemo((()=>C?x:{...x,subscription:z}),[C,x,z]),ee=Re.useRef(void 0),ie=Re.useRef(_),ae=Re.useRef(void 0),ce=Re.useRef(!1),le=Re.useRef(!1),pe=Re.useRef(void 0);zk((()=>(le.current=!0,()=>{le.current=!1})),[]);const de=Re.useMemo((()=>()=>ae.current&&_===ie.current?ae.current:V(B.getState(),_)),[B,_]),fe=Re.useMemo((()=>s=>z?function subscribeUpdates(s,o,i,a,u,_,w,x,C,j,L){if(!s)return()=>{};let B=!1,$=null;const checkForUpdates=()=>{if(B||!x.current)return;const s=o.getState();let i,V;try{i=a(s,u.current)}catch(s){V=s,$=s}V||($=null),i===_.current?w.current||j():(_.current=i,C.current=i,w.current=!0,L())};return i.onStateChange=checkForUpdates,i.trySubscribe(),checkForUpdates(),()=>{if(B=!0,i.tryUnsubscribe(),i.onStateChange=null,$)throw $}}(U,B,z,V,ie,ee,ce,le,ae,Y,s):()=>{}),[z]);let ye;!function useIsomorphicLayoutEffectWithArgs(s,o,i){zk((()=>s(...o)),i)}(captureWrapperProps,[ie,ee,ce,_,ae,Y]);try{ye=Re.useSyncExternalStore(fe,de,$?()=>V($(),_):de)}catch(s){throw pe.current&&(s.message+=`\\nThe error may be correlated with this previous error:\\n${pe.current.stack}\\n\\n`),s}zk((()=>{pe.current=void 0,ae.current=void 0,ee.current=ye}));const be=Re.useMemo((()=>Re.createElement(s,{...ye,ref:u})),[u,s,ye]);return Re.useMemo((()=>U?Re.createElement(w.Provider,{value:Z},be):be),[w,be,Z])}const j=Re.memo(ConnectFunction);if(j.WrappedComponent=s,j.displayName=ConnectFunction.displayName=i,C){const o=Re.forwardRef((function forwardConnectRef(s,o){return Re.createElement(j,{...s,reactReduxForwardedRef:o})}));return o.displayName=i,o.WrappedComponent=s,hoistNonReactStatics(o,s)}return hoistNonReactStatics(j,s)}};var mO=function Provider(s){const{children:o,context:i,serverState:a,store:u}=s,_=Re.useMemo((()=>{const s=createSubscription(u);return{store:u,subscription:s,getServerState:a?()=>a:void 0}}),[u,a]),w=Re.useMemo((()=>u.getState()),[u]);zk((()=>{const{subscription:s}=_;return s.onStateChange=s.notifyNestedSubs,s.trySubscribe(),w!==u.getState()&&s.notifyNestedSubs(),()=>{s.tryUnsubscribe(),s.onStateChange=void 0}}),[_,w]);const x=i||hO;return Re.createElement(x.Provider,{value:_},o)};var gO=__webpack_require__(83488),yO=__webpack_require__.n(gO);const withSystem=s=>o=>{const{fn:i}=s();class WithSystem extends Re.Component{render(){return Re.createElement(o,Mn()({},s(),this.props,this.context))}}return WithSystem.displayName=`WithSystem(${i.getDisplayName(o)})`,WithSystem},withRoot=(s,o)=>i=>{const{fn:a}=s();class WithRoot extends Re.Component{render(){return Re.createElement(mO,{store:o},Re.createElement(i,Mn()({},this.props,this.context)))}}return WithRoot.displayName=`WithRoot(${a.getDisplayName(i)})`,WithRoot},withConnect=(s,o,i)=>compose(i?withRoot(s,i):yO(),fO(((i,a)=>{const u={...a,...s()},_=o.prototype?.mapStateToProps||(s=>({state:s}));return _(i,u)})),withSystem(s))(o),handleProps=(s,o,i,a)=>{for(const u in o){const _=o[u];\"function\"==typeof _&&_(i[u],a[u],s())}},withMappedContainer=(s,o,i)=>(o,a)=>{const{fn:u}=s(),_=i(o,\"root\");class WithMappedContainer extends Re.Component{constructor(o,i){super(o,i),handleProps(s,a,o,{})}UNSAFE_componentWillReceiveProps(o){handleProps(s,a,o,this.props)}render(){const s=Gt()(this.props,a?Object.keys(a):[]);return Re.createElement(_,s)}}return WithMappedContainer.displayName=`WithMappedContainer(${u.getDisplayName(_)})`,WithMappedContainer},render=(s,o,i,a)=>u=>{const _=i(s,o,a)(\"App\",\"root\"),{createRoot:w}=tk;w(u).render(Re.createElement(_,null))},getComponent=(s,o,i)=>(a,u,_={})=>{if(\"string\"!=typeof a)throw new TypeError(\"Need a string, to fetch a component. Was given a \"+typeof a);const w=i(a);return w?u?\"root\"===u?withConnect(s,w,o()):withConnect(s,w):w:(_.failSilently||s().log.warn(\"Could not find component:\",a),null)},getDisplayName=s=>s.displayName||s.name||\"Component\",view=({getComponents:s,getStore:o,getSystem:i})=>{const a=(u=getComponent(i,o,s),It(u,((...s)=>JSON.stringify(s))));var u;const _=(s=>utils_memoizeN(s,((...s)=>s)))(withMappedContainer(i,0,a));return{rootInjects:{getComponent:a,makeMappedContainer:_,render:render(i,o,getComponent,s)},fn:{getDisplayName}}},view_legacy=({React:s,getSystem:o,getStore:i,getComponents:a})=>{const u={},_=parseInt(s?.version,10);return _>=16&&_<18&&(u.render=((s,o,i,a)=>u=>{const _=i(s,o,a)(\"App\",\"root\");tk.render(Re.createElement(_,null),u)})(o,i,getComponent,a)),{rootInjects:u}};function downloadUrlPlugin(s){let{fn:o}=s;const i={download:s=>({errActions:i,specSelectors:a,specActions:u,getConfigs:_})=>{let{fetch:w}=o;const x=_();function next(o){if(o instanceof Error||o.status>=400)return u.updateLoadingStatus(\"failed\"),i.newThrownErr(Object.assign(new Error((o.message||o.statusText)+\" \"+s),{source:\"fetch\"})),void(!o.status&&o instanceof Error&&function checkPossibleFailReasons(){try{let o;if(\"URL\"in lt?o=new URL(s):(o=document.createElement(\"a\"),o.href=s),\"https:\"!==o.protocol&&\"https:\"===lt.location.protocol){const s=Object.assign(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${o.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:\"fetch\"});return void i.newThrownErr(s)}if(o.origin!==lt.location.origin){const s=Object.assign(new Error(`Possible cross-origin (CORS) issue? The URL origin (${o.origin}) does not match the page (${lt.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:\"fetch\"});i.newThrownErr(s)}}catch(s){return}}());u.updateLoadingStatus(\"success\"),u.updateSpec(o.text),a.url()!==s&&u.updateUrl(s)}s=s||a.url(),u.updateLoadingStatus(\"loading\"),i.clear({source:\"fetch\"}),w({url:s,loadSpec:!0,requestInterceptor:x.requestInterceptor||(s=>s),responseInterceptor:x.responseInterceptor||(s=>s),credentials:\"same-origin\",headers:{Accept:\"application/json,*/*\"}}).then(next,next)},updateLoadingStatus:s=>{let o=[null,\"loading\",\"failed\",\"success\",\"failedConfig\"];return-1===o.indexOf(s)&&console.error(`Error: ${s} is not one of ${JSON.stringify(o)}`),{type:\"spec_update_loading_status\",payload:s}}};let a={loadingStatus:Vt((s=>s||(0,ze.Map)()),(s=>s.get(\"loadingStatus\")||null))};return{statePlugins:{spec:{actions:i,reducers:{spec_update_loading_status:(s,o)=>\"string\"==typeof o.payload?s.set(\"loadingStatus\",o.payload):s},selectors:a}}}}function arrayLikeToArray_arrayLikeToArray(s,o){(null==o||o>s.length)&&(o=s.length);for(var i=0,a=Array(o);i<o;i++)a[i]=s[i];return a}function toConsumableArray_toConsumableArray(s){return function arrayWithoutHoles_arrayWithoutHoles(s){if(Array.isArray(s))return arrayLikeToArray_arrayLikeToArray(s)}(s)||function iterableToArray_iterableToArray(s){if(\"undefined\"!=typeof Symbol&&null!=s[Symbol.iterator]||null!=s[\"@@iterator\"])return Array.from(s)}(s)||function unsupportedIterableToArray_unsupportedIterableToArray(s,o){if(s){if(\"string\"==typeof s)return arrayLikeToArray_arrayLikeToArray(s,o);var i={}.toString.call(s).slice(8,-1);return\"Object\"===i&&s.constructor&&(i=s.constructor.name),\"Map\"===i||\"Set\"===i?Array.from(s):\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?arrayLikeToArray_arrayLikeToArray(s,o):void 0}}(s)||function nonIterableSpread_nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function typeof_typeof(s){return typeof_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(s){return typeof s}:function(s){return s&&\"function\"==typeof Symbol&&s.constructor===Symbol&&s!==Symbol.prototype?\"symbol\":typeof s},typeof_typeof(s)}function toPropertyKey(s){var o=function toPrimitive(s,o){if(\"object\"!=typeof_typeof(s)||!s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||\"default\");if(\"object\"!=typeof_typeof(a))return a;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===o?String:Number)(s)}(s,\"string\");return\"symbol\"==typeof_typeof(o)?o:o+\"\"}function defineProperty_defineProperty(s,o,i){return(o=toPropertyKey(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}function extends_extends(){return extends_extends=Object.assign?Object.assign.bind():function(s){for(var o=1;o<arguments.length;o++){var i=arguments[o];for(var a in i)({}).hasOwnProperty.call(i,a)&&(s[a]=i[a])}return s},extends_extends.apply(null,arguments)}function create_element_ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?create_element_ownKeys(Object(i),!0).forEach((function(o){defineProperty_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):create_element_ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}var vO={};function createStyleObject(s){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;return function getClassNameCombinations(s){if(0===s.length||1===s.length)return s;var o=s.join(\".\");return vO[o]||(vO[o]=function powerSetPermutations(s){var o=s.length;return 0===o||1===o?s:2===o?[s[0],s[1],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0])]:3===o?[s[0],s[1],s[2],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2]),\"\".concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0])]:o>=4?[s[0],s[1],s[2],s[3],\"\".concat(s[0],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[3]),\"\".concat(s[3],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[1],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[0],\".\").concat(s[2],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[0],\".\").concat(s[3],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[2],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[0],\".\").concat(s[3],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[1],\".\").concat(s[2],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[1],\".\").concat(s[3],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[1],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[0],\".\").concat(s[3],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[0],\".\").concat(s[3]),\"\".concat(s[2],\".\").concat(s[1],\".\").concat(s[3],\".\").concat(s[0]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[2],\".\").concat(s[3],\".\").concat(s[1],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[1],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[0],\".\").concat(s[2],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[0],\".\").concat(s[2]),\"\".concat(s[3],\".\").concat(s[1],\".\").concat(s[2],\".\").concat(s[0]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[0],\".\").concat(s[1]),\"\".concat(s[3],\".\").concat(s[2],\".\").concat(s[1],\".\").concat(s[0])]:void 0}(s)),vO[o]}(s.filter((function(s){return\"token\"!==s}))).reduce((function(s,o){return _objectSpread(_objectSpread({},s),i[o])}),o)}function createClassNameString(s){return s.join(\" \")}function createElement(s){var o=s.node,i=s.stylesheet,a=s.style,u=void 0===a?{}:a,_=s.useInlineStyles,w=s.key,x=o.properties,C=o.type,j=o.tagName,L=o.value;if(\"text\"===C)return L;if(j){var B,$=function createChildren(s,o){var i=0;return function(a){return i+=1,a.map((function(a,u){return createElement({node:a,stylesheet:s,useInlineStyles:o,key:\"code-segment-\".concat(i,\"-\").concat(u)})}))}}(i,_);if(_){var V=Object.keys(i).reduce((function(s,o){return o.split(\".\").forEach((function(o){s.includes(o)||s.push(o)})),s}),[]),U=x.className&&x.className.includes(\"token\")?[\"token\"]:[],z=x.className&&U.concat(x.className.filter((function(s){return!V.includes(s)})));B=_objectSpread(_objectSpread({},x),{},{className:createClassNameString(z)||void 0,style:createStyleObject(x.className,Object.assign({},x.style,u),i)})}else B=_objectSpread(_objectSpread({},x),{},{className:createClassNameString(x.className)});var Y=$(o.children);return Re.createElement(j,extends_extends({key:w},B),Y)}}var bO=[\"language\",\"children\",\"style\",\"customStyle\",\"codeTagProps\",\"useInlineStyles\",\"showLineNumbers\",\"showInlineLineNumbers\",\"startingLineNumber\",\"lineNumberContainerStyle\",\"lineNumberStyle\",\"wrapLines\",\"wrapLongLines\",\"lineProps\",\"renderer\",\"PreTag\",\"CodeTag\",\"code\",\"astGenerator\"];function highlight_ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function highlight_objectSpread(s){for(var o=1;o<arguments.length;o++){var i=null!=arguments[o]?arguments[o]:{};o%2?highlight_ownKeys(Object(i),!0).forEach((function(o){defineProperty_defineProperty(s,o,i[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):highlight_ownKeys(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}var _O=/\\n/g;function AllLineNumbers(s){var o=s.codeString,i=s.codeStyle,a=s.containerStyle,u=void 0===a?{float:\"left\",paddingRight:\"10px\"}:a,_=s.numberStyle,w=void 0===_?{}:_,x=s.startingLineNumber;return Re.createElement(\"code\",{style:Object.assign({},i,u)},function getAllLineNumbers(s){var o=s.lines,i=s.startingLineNumber,a=s.style;return o.map((function(s,o){var u=o+i;return Re.createElement(\"span\",{key:\"line-\".concat(o),className:\"react-syntax-highlighter-line-number\",style:\"function\"==typeof a?a(u):a},\"\".concat(u,\"\\n\"))}))}({lines:o.replace(/\\n$/,\"\").split(\"\\n\"),style:w,startingLineNumber:x}))}function getInlineLineNumber(s,o){return{type:\"element\",tagName:\"span\",properties:{key:\"line-number--\".concat(s),className:[\"comment\",\"linenumber\",\"react-syntax-highlighter-line-number\"],style:o},children:[{type:\"text\",value:s}]}}function assembleLineNumberStyles(s,o,i){var a,u={display:\"inline-block\",minWidth:(a=i,\"\".concat(a.toString().length,\".25em\")),paddingRight:\"1em\",textAlign:\"right\",userSelect:\"none\"},_=\"function\"==typeof s?s(o):s;return highlight_objectSpread(highlight_objectSpread({},u),_)}function createLineElement(s){var o=s.children,i=s.lineNumber,a=s.lineNumberStyle,u=s.largestLineNumber,_=s.showInlineLineNumbers,w=s.lineProps,x=void 0===w?{}:w,C=s.className,j=void 0===C?[]:C,L=s.showLineNumbers,B=s.wrapLongLines,$=s.wrapLines,V=void 0!==$&&$?highlight_objectSpread({},\"function\"==typeof x?x(i):x):{};if(V.className=V.className?[].concat(toConsumableArray_toConsumableArray(V.className.trim().split(/\\s+/)),toConsumableArray_toConsumableArray(j)):j,i&&_){var U=assembleLineNumberStyles(a,i,u);o.unshift(getInlineLineNumber(i,U))}return B&L&&(V.style=highlight_objectSpread({display:\"flex\"},V.style)),{type:\"element\",tagName:\"span\",properties:V,children:o}}function flattenCodeTree(s){for(var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=0;a<s.length;a++){var u=s[a];if(\"text\"===u.type)i.push(createLineElement({children:[u],className:toConsumableArray_toConsumableArray(new Set(o))}));else if(u.children){var _=o.concat(u.properties.className);flattenCodeTree(u.children,_).forEach((function(s){return i.push(s)}))}}return i}function processLines(s,o,i,a,u,_,w,x,C){var j,L=flattenCodeTree(s.value),B=[],$=-1,V=0;function createLine(s,_){var j=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return o||j.length>0?function createWrappedLine(s,_){return createLineElement({children:s,lineNumber:_,lineNumberStyle:x,largestLineNumber:w,showInlineLineNumbers:u,lineProps:i,className:arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],showLineNumbers:a,wrapLongLines:C,wrapLines:o})}(s,_,j):function createUnwrappedLine(s,o){if(a&&o&&u){var i=assembleLineNumberStyles(x,o,w);s.unshift(getInlineLineNumber(o,i))}return s}(s,_)}for(var U=function _loop(){var s=L[V],o=s.children[0].value,i=function getNewLines(s){return s.match(_O)}(o);if(i){var u=o.split(\"\\n\");u.forEach((function(o,i){var w=a&&B.length+_,x={type:\"text\",value:\"\".concat(o,\"\\n\")};if(0===i){var C=createLine(L.slice($+1,V).concat(createLineElement({children:[x],className:s.properties.className})),w);B.push(C)}else if(i===u.length-1){var j=L[V+1]&&L[V+1].children&&L[V+1].children[0],U={type:\"text\",value:\"\".concat(o)};if(j){var z=createLineElement({children:[U],className:s.properties.className});L.splice(V+1,0,z)}else{var Y=createLine([U],w,s.properties.className);B.push(Y)}}else{var Z=createLine([x],w,s.properties.className);B.push(Z)}})),$=V}V++};V<L.length;)U();if($!==L.length-1){var z=L.slice($+1,L.length);if(z&&z.length){var Y=createLine(z,a&&B.length+_);B.push(Y)}}return o?B:(j=[]).concat.apply(j,B)}function defaultRenderer(s){var o=s.rows,i=s.stylesheet,a=s.useInlineStyles;return o.map((function(s,o){return createElement({node:s,stylesheet:i,useInlineStyles:a,key:\"code-segement\".concat(o)})}))}function isHighlightJs(s){return s&&void 0!==s.highlightAuto}var SO=__webpack_require__(43768),EO=function highlight(s,o){return function SyntaxHighlighter(i){var a=i.language,u=i.children,_=i.style,w=void 0===_?o:_,x=i.customStyle,C=void 0===x?{}:x,j=i.codeTagProps,L=void 0===j?{className:a?\"language-\".concat(a):void 0,style:highlight_objectSpread(highlight_objectSpread({},w['code[class*=\"language-\"]']),w['code[class*=\"language-'.concat(a,'\"]')])}:j,B=i.useInlineStyles,$=void 0===B||B,V=i.showLineNumbers,U=void 0!==V&&V,z=i.showInlineLineNumbers,Y=void 0===z||z,Z=i.startingLineNumber,ee=void 0===Z?1:Z,ie=i.lineNumberContainerStyle,ae=i.lineNumberStyle,ce=void 0===ae?{}:ae,le=i.wrapLines,pe=i.wrapLongLines,de=void 0!==pe&&pe,fe=i.lineProps,ye=void 0===fe?{}:fe,be=i.renderer,_e=i.PreTag,Se=void 0===_e?\"pre\":_e,we=i.CodeTag,xe=void 0===we?\"code\":we,Pe=i.code,Te=void 0===Pe?(Array.isArray(u)?u[0]:u)||\"\":Pe,$e=i.astGenerator,qe=function _objectWithoutProperties(s,o){if(null==s)return{};var i,a,u=function _objectWithoutPropertiesLoose(s,o){if(null==s)return{};var i={};for(var a in s)if({}.hasOwnProperty.call(s,a)){if(-1!==o.indexOf(a))continue;i[a]=s[a]}return i}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],-1===o.indexOf(i)&&{}.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}(i,bO);$e=$e||s;var ze=U?Re.createElement(AllLineNumbers,{containerStyle:ie,codeStyle:L.style||{},numberStyle:ce,startingLineNumber:ee,codeString:Te}):null,We=w.hljs||w['pre[class*=\"language-\"]']||{backgroundColor:\"#fff\"},He=isHighlightJs($e)?\"hljs\":\"prismjs\",Ye=$?Object.assign({},qe,{style:Object.assign({},We,C)}):Object.assign({},qe,{className:qe.className?\"\".concat(He,\" \").concat(qe.className):He,style:Object.assign({},C)});if(L.style=highlight_objectSpread(de?{whiteSpace:\"pre-wrap\"}:{whiteSpace:\"pre\"},L.style),!$e)return Re.createElement(Se,Ye,ze,Re.createElement(xe,L,Te));(void 0===le&&be||de)&&(le=!0),be=be||defaultRenderer;var Xe=[{type:\"text\",value:Te}],Qe=function getCodeTree(s){var o=s.astGenerator,i=s.language,a=s.code,u=s.defaultCodeValue;if(isHighlightJs(o)){var _=function(s,o){return-1!==s.listLanguages().indexOf(o)}(o,i);return\"text\"===i?{value:u,language:\"text\"}:_?o.highlight(i,a):o.highlightAuto(a)}try{return i&&\"text\"!==i?{value:o.highlight(a,i)}:{value:u}}catch(s){return{value:u}}}({astGenerator:$e,language:a,code:Te,defaultCodeValue:Xe});null===Qe.language&&(Qe.value=Xe);var et=Qe.value.length;1===et&&\"text\"===Qe.value[0].type&&(et=Qe.value[0].value.split(\"\\n\").length);var tt=processLines(Qe,le,ye,U,Y,ee,et+ee,ce,de);return Re.createElement(Se,Ye,Re.createElement(xe,L,!Y&&ze,be({rows:tt,stylesheet:w,useInlineStyles:$})))}}(SO,{});EO.registerLanguage=SO.registerLanguage;const wO=EO;var xO=__webpack_require__(95089);const kO=__webpack_require__.n(xO)();var OO=__webpack_require__(65772);const CO=__webpack_require__.n(OO)();var AO=__webpack_require__(17285);const jO=__webpack_require__.n(AO)();var IO=__webpack_require__(35344);const PO=__webpack_require__.n(IO)();var TO=__webpack_require__(17533);const NO=__webpack_require__.n(TO)();var MO=__webpack_require__(73402);const RO=__webpack_require__.n(MO)();var DO=__webpack_require__(26571);const LO=__webpack_require__.n(DO)(),after_load=()=>{wO.registerLanguage(\"json\",CO),wO.registerLanguage(\"js\",kO),wO.registerLanguage(\"xml\",jO),wO.registerLanguage(\"yaml\",NO),wO.registerLanguage(\"http\",RO),wO.registerLanguage(\"bash\",PO),wO.registerLanguage(\"powershell\",LO),wO.registerLanguage(\"javascript\",kO)},FO={hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#333\",color:\"white\"},\"hljs-name\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-code\":{fontStyle:\"italic\",color:\"#888\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-tag\":{color:\"#62c8f3\"},\"hljs-variable\":{color:\"#ade5fc\"},\"hljs-template-variable\":{color:\"#ade5fc\"},\"hljs-selector-id\":{color:\"#ade5fc\"},\"hljs-selector-class\":{color:\"#ade5fc\"},\"hljs-string\":{color:\"#a2fca2\"},\"hljs-bullet\":{color:\"#d36363\"},\"hljs-type\":{color:\"#ffa\"},\"hljs-title\":{color:\"#ffa\"},\"hljs-section\":{color:\"#ffa\"},\"hljs-attribute\":{color:\"#ffa\"},\"hljs-quote\":{color:\"#ffa\"},\"hljs-built_in\":{color:\"#ffa\"},\"hljs-builtin-name\":{color:\"#ffa\"},\"hljs-number\":{color:\"#d36363\"},\"hljs-symbol\":{color:\"#d36363\"},\"hljs-keyword\":{color:\"#fcc28c\"},\"hljs-selector-tag\":{color:\"#fcc28c\"},\"hljs-literal\":{color:\"#fcc28c\"},\"hljs-comment\":{color:\"#888\"},\"hljs-deletion\":{color:\"#333\",backgroundColor:\"#fc9b9b\"},\"hljs-regexp\":{color:\"#c6b4f0\"},\"hljs-link\":{color:\"#c6b4f0\"},\"hljs-meta\":{color:\"#fc9b9b\"},\"hljs-addition\":{backgroundColor:\"#a2fca2\",color:\"#333\"}},BO={agate:FO,arta:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#222\",color:\"#aaa\"},\"hljs-subst\":{color:\"#aaa\"},\"hljs-section\":{color:\"#fff\",fontWeight:\"bold\"},\"hljs-comment\":{color:\"#444\"},\"hljs-quote\":{color:\"#444\"},\"hljs-meta\":{color:\"#444\"},\"hljs-string\":{color:\"#ffcc33\"},\"hljs-symbol\":{color:\"#ffcc33\"},\"hljs-bullet\":{color:\"#ffcc33\"},\"hljs-regexp\":{color:\"#ffcc33\"},\"hljs-number\":{color:\"#00cc66\"},\"hljs-addition\":{color:\"#00cc66\"},\"hljs-built_in\":{color:\"#32aaee\"},\"hljs-builtin-name\":{color:\"#32aaee\"},\"hljs-literal\":{color:\"#32aaee\"},\"hljs-type\":{color:\"#32aaee\"},\"hljs-template-variable\":{color:\"#32aaee\"},\"hljs-attribute\":{color:\"#32aaee\"},\"hljs-link\":{color:\"#32aaee\"},\"hljs-keyword\":{color:\"#6644aa\"},\"hljs-selector-tag\":{color:\"#6644aa\"},\"hljs-name\":{color:\"#6644aa\"},\"hljs-selector-id\":{color:\"#6644aa\"},\"hljs-selector-class\":{color:\"#6644aa\"},\"hljs-title\":{color:\"#bb1166\"},\"hljs-variable\":{color:\"#bb1166\"},\"hljs-deletion\":{color:\"#bb1166\"},\"hljs-template-tag\":{color:\"#bb1166\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-emphasis\":{fontStyle:\"italic\"}},monokai:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#272822\",color:\"#ddd\"},\"hljs-tag\":{color:\"#f92672\"},\"hljs-keyword\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-selector-tag\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-literal\":{color:\"#f92672\",fontWeight:\"bold\"},\"hljs-strong\":{color:\"#f92672\"},\"hljs-name\":{color:\"#f92672\"},\"hljs-code\":{color:\"#66d9ef\"},\"hljs-class .hljs-title\":{color:\"white\"},\"hljs-attribute\":{color:\"#bf79db\"},\"hljs-symbol\":{color:\"#bf79db\"},\"hljs-regexp\":{color:\"#bf79db\"},\"hljs-link\":{color:\"#bf79db\"},\"hljs-string\":{color:\"#a6e22e\"},\"hljs-bullet\":{color:\"#a6e22e\"},\"hljs-subst\":{color:\"#a6e22e\"},\"hljs-title\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-section\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-emphasis\":{color:\"#a6e22e\"},\"hljs-type\":{color:\"#a6e22e\",fontWeight:\"bold\"},\"hljs-built_in\":{color:\"#a6e22e\"},\"hljs-builtin-name\":{color:\"#a6e22e\"},\"hljs-selector-attr\":{color:\"#a6e22e\"},\"hljs-selector-pseudo\":{color:\"#a6e22e\"},\"hljs-addition\":{color:\"#a6e22e\"},\"hljs-variable\":{color:\"#a6e22e\"},\"hljs-template-tag\":{color:\"#a6e22e\"},\"hljs-template-variable\":{color:\"#a6e22e\"},\"hljs-comment\":{color:\"#75715e\"},\"hljs-quote\":{color:\"#75715e\"},\"hljs-deletion\":{color:\"#75715e\"},\"hljs-meta\":{color:\"#75715e\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-selector-id\":{fontWeight:\"bold\"}},nord:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#2E3440\",color:\"#D8DEE9\"},\"hljs-subst\":{color:\"#D8DEE9\"},\"hljs-selector-tag\":{color:\"#81A1C1\"},\"hljs-selector-id\":{color:\"#8FBCBB\",fontWeight:\"bold\"},\"hljs-selector-class\":{color:\"#8FBCBB\"},\"hljs-selector-attr\":{color:\"#8FBCBB\"},\"hljs-selector-pseudo\":{color:\"#88C0D0\"},\"hljs-addition\":{backgroundColor:\"rgba(163, 190, 140, 0.5)\"},\"hljs-deletion\":{backgroundColor:\"rgba(191, 97, 106, 0.5)\"},\"hljs-built_in\":{color:\"#8FBCBB\"},\"hljs-type\":{color:\"#8FBCBB\"},\"hljs-class\":{color:\"#8FBCBB\"},\"hljs-function\":{color:\"#88C0D0\"},\"hljs-function > .hljs-title\":{color:\"#88C0D0\"},\"hljs-keyword\":{color:\"#81A1C1\"},\"hljs-literal\":{color:\"#81A1C1\"},\"hljs-symbol\":{color:\"#81A1C1\"},\"hljs-number\":{color:\"#B48EAD\"},\"hljs-regexp\":{color:\"#EBCB8B\"},\"hljs-string\":{color:\"#A3BE8C\"},\"hljs-title\":{color:\"#8FBCBB\"},\"hljs-params\":{color:\"#D8DEE9\"},\"hljs-bullet\":{color:\"#81A1C1\"},\"hljs-code\":{color:\"#8FBCBB\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-formula\":{color:\"#8FBCBB\"},\"hljs-strong\":{fontWeight:\"bold\"},\"hljs-link:hover\":{textDecoration:\"underline\"},\"hljs-quote\":{color:\"#4C566A\"},\"hljs-comment\":{color:\"#4C566A\"},\"hljs-doctag\":{color:\"#8FBCBB\"},\"hljs-meta\":{color:\"#5E81AC\"},\"hljs-meta-keyword\":{color:\"#5E81AC\"},\"hljs-meta-string\":{color:\"#A3BE8C\"},\"hljs-attr\":{color:\"#8FBCBB\"},\"hljs-attribute\":{color:\"#D8DEE9\"},\"hljs-builtin-name\":{color:\"#81A1C1\"},\"hljs-name\":{color:\"#81A1C1\"},\"hljs-section\":{color:\"#88C0D0\"},\"hljs-tag\":{color:\"#81A1C1\"},\"hljs-variable\":{color:\"#D8DEE9\"},\"hljs-template-variable\":{color:\"#D8DEE9\"},\"hljs-template-tag\":{color:\"#5E81AC\"},\"abnf .hljs-attribute\":{color:\"#88C0D0\"},\"abnf .hljs-symbol\":{color:\"#EBCB8B\"},\"apache .hljs-attribute\":{color:\"#88C0D0\"},\"apache .hljs-section\":{color:\"#81A1C1\"},\"arduino .hljs-built_in\":{color:\"#88C0D0\"},\"aspectj .hljs-meta\":{color:\"#D08770\"},\"aspectj > .hljs-title\":{color:\"#88C0D0\"},\"bnf .hljs-attribute\":{color:\"#8FBCBB\"},\"clojure .hljs-name\":{color:\"#88C0D0\"},\"clojure .hljs-symbol\":{color:\"#EBCB8B\"},\"coq .hljs-built_in\":{color:\"#88C0D0\"},\"cpp .hljs-meta-string\":{color:\"#8FBCBB\"},\"css .hljs-built_in\":{color:\"#88C0D0\"},\"css .hljs-keyword\":{color:\"#D08770\"},\"diff .hljs-meta\":{color:\"#8FBCBB\"},\"ebnf .hljs-attribute\":{color:\"#8FBCBB\"},\"glsl .hljs-built_in\":{color:\"#88C0D0\"},\"groovy .hljs-meta:not(:first-child)\":{color:\"#D08770\"},\"haxe .hljs-meta\":{color:\"#D08770\"},\"java .hljs-meta\":{color:\"#D08770\"},\"ldif .hljs-attribute\":{color:\"#8FBCBB\"},\"lisp .hljs-name\":{color:\"#88C0D0\"},\"lua .hljs-built_in\":{color:\"#88C0D0\"},\"moonscript .hljs-built_in\":{color:\"#88C0D0\"},\"nginx .hljs-attribute\":{color:\"#88C0D0\"},\"nginx .hljs-section\":{color:\"#5E81AC\"},\"pf .hljs-built_in\":{color:\"#88C0D0\"},\"processing .hljs-built_in\":{color:\"#88C0D0\"},\"scss .hljs-keyword\":{color:\"#81A1C1\"},\"stylus .hljs-keyword\":{color:\"#81A1C1\"},\"swift .hljs-meta\":{color:\"#D08770\"},\"vim .hljs-built_in\":{color:\"#88C0D0\",fontStyle:\"italic\"},\"yaml .hljs-meta\":{color:\"#D08770\"}},obsidian:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",background:\"#282b2e\",color:\"#e0e2e4\"},\"hljs-keyword\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-selector-tag\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-literal\":{color:\"#93c763\",fontWeight:\"bold\"},\"hljs-selector-id\":{color:\"#93c763\"},\"hljs-number\":{color:\"#ffcd22\"},\"hljs-attribute\":{color:\"#668bb0\"},\"hljs-code\":{color:\"white\"},\"hljs-class .hljs-title\":{color:\"white\"},\"hljs-section\":{color:\"white\",fontWeight:\"bold\"},\"hljs-regexp\":{color:\"#d39745\"},\"hljs-link\":{color:\"#d39745\"},\"hljs-meta\":{color:\"#557182\"},\"hljs-tag\":{color:\"#8cbbad\"},\"hljs-name\":{color:\"#8cbbad\",fontWeight:\"bold\"},\"hljs-bullet\":{color:\"#8cbbad\"},\"hljs-subst\":{color:\"#8cbbad\"},\"hljs-emphasis\":{color:\"#8cbbad\"},\"hljs-type\":{color:\"#8cbbad\",fontWeight:\"bold\"},\"hljs-built_in\":{color:\"#8cbbad\"},\"hljs-selector-attr\":{color:\"#8cbbad\"},\"hljs-selector-pseudo\":{color:\"#8cbbad\"},\"hljs-addition\":{color:\"#8cbbad\"},\"hljs-variable\":{color:\"#8cbbad\"},\"hljs-template-tag\":{color:\"#8cbbad\"},\"hljs-template-variable\":{color:\"#8cbbad\"},\"hljs-string\":{color:\"#ec7600\"},\"hljs-symbol\":{color:\"#ec7600\"},\"hljs-comment\":{color:\"#818e96\"},\"hljs-quote\":{color:\"#818e96\"},\"hljs-deletion\":{color:\"#818e96\"},\"hljs-selector-class\":{color:\"#A082BD\"},\"hljs-doctag\":{fontWeight:\"bold\"},\"hljs-title\":{fontWeight:\"bold\"},\"hljs-strong\":{fontWeight:\"bold\"}},\"tomorrow-night\":{\"hljs-comment\":{color:\"#969896\"},\"hljs-quote\":{color:\"#969896\"},\"hljs-variable\":{color:\"#cc6666\"},\"hljs-template-variable\":{color:\"#cc6666\"},\"hljs-tag\":{color:\"#cc6666\"},\"hljs-name\":{color:\"#cc6666\"},\"hljs-selector-id\":{color:\"#cc6666\"},\"hljs-selector-class\":{color:\"#cc6666\"},\"hljs-regexp\":{color:\"#cc6666\"},\"hljs-deletion\":{color:\"#cc6666\"},\"hljs-number\":{color:\"#de935f\"},\"hljs-built_in\":{color:\"#de935f\"},\"hljs-builtin-name\":{color:\"#de935f\"},\"hljs-literal\":{color:\"#de935f\"},\"hljs-type\":{color:\"#de935f\"},\"hljs-params\":{color:\"#de935f\"},\"hljs-meta\":{color:\"#de935f\"},\"hljs-link\":{color:\"#de935f\"},\"hljs-attribute\":{color:\"#f0c674\"},\"hljs-string\":{color:\"#b5bd68\"},\"hljs-symbol\":{color:\"#b5bd68\"},\"hljs-bullet\":{color:\"#b5bd68\"},\"hljs-addition\":{color:\"#b5bd68\"},\"hljs-title\":{color:\"#81a2be\"},\"hljs-section\":{color:\"#81a2be\"},\"hljs-keyword\":{color:\"#b294bb\"},\"hljs-selector-tag\":{color:\"#b294bb\"},hljs:{display:\"block\",overflowX:\"auto\",background:\"#1d1f21\",color:\"#c5c8c6\",padding:\"0.5em\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-strong\":{fontWeight:\"bold\"}},idea:{hljs:{display:\"block\",overflowX:\"auto\",padding:\"0.5em\",color:\"#000\",background:\"#fff\"},\"hljs-subst\":{fontWeight:\"normal\",color:\"#000\"},\"hljs-title\":{fontWeight:\"normal\",color:\"#000\"},\"hljs-comment\":{color:\"#808080\",fontStyle:\"italic\"},\"hljs-quote\":{color:\"#808080\",fontStyle:\"italic\"},\"hljs-meta\":{color:\"#808000\"},\"hljs-tag\":{background:\"#efefef\"},\"hljs-section\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-name\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-literal\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-keyword\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-tag\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-type\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-id\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-selector-class\":{fontWeight:\"bold\",color:\"#000080\"},\"hljs-attribute\":{fontWeight:\"bold\",color:\"#0000ff\"},\"hljs-number\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-regexp\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-link\":{fontWeight:\"normal\",color:\"#0000ff\"},\"hljs-string\":{color:\"#008000\",fontWeight:\"bold\"},\"hljs-symbol\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-bullet\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-formula\":{color:\"#000\",background:\"#d0eded\",fontStyle:\"italic\"},\"hljs-doctag\":{textDecoration:\"underline\"},\"hljs-variable\":{color:\"#660e7a\"},\"hljs-template-variable\":{color:\"#660e7a\"},\"hljs-addition\":{background:\"#baeeba\"},\"hljs-deletion\":{background:\"#ffc8bd\"},\"hljs-emphasis\":{fontStyle:\"italic\"},\"hljs-strong\":{fontWeight:\"bold\"}}},$O=FO,components_SyntaxHighlighter=({language:s,className:o=\"\",getConfigs:i,syntaxHighlighting:a={},children:u=\"\"})=>{const _=i().syntaxHighlight.theme,{styles:w,defaultStyle:x}=a,C=w?.[_]??x;return Re.createElement(wO,{language:s,className:o,style:C},u)};var qO=__webpack_require__(5419),VO=__webpack_require__.n(qO);const components_HighlightCode=({fileName:s=\"response.txt\",className:o,downloadable:i,getComponent:a,canCopy:u,language:_,children:w})=>{const x=(0,Re.useRef)(null),C=a(\"SyntaxHighlighter\",!0),handlePreventYScrollingBeyondElement=s=>{const{target:o,deltaY:i}=s,{scrollHeight:a,offsetHeight:u,scrollTop:_}=o;a>u&&(0===_&&i<0||u+_>=a&&i>0)&&s.preventDefault()};return(0,Re.useEffect)((()=>{const s=Array.from(x.current.childNodes).filter((s=>!!s.nodeType&&s.classList.contains(\"microlight\")));return s.forEach((s=>s.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{s.forEach((s=>s.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[w,o,_]),Re.createElement(\"div\",{className:\"highlight-code\",ref:x},u&&Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:w},Re.createElement(\"button\",null))),i?Re.createElement(\"button\",{className:\"download-contents\",onClick:()=>{VO()(w,s)}},\"Download\"):null,Re.createElement(C,{language:_,className:Jn()(o,\"microlight\"),renderPlainText:({children:s,PlainTextViewer:i})=>Re.createElement(i,{className:o},s)},w))},components_PlainTextViewer=({className:s=\"\",children:o})=>Re.createElement(\"pre\",{className:Jn()(\"microlight\",s)},o),wrap_components_SyntaxHighlighter=(s,o)=>({renderPlainText:i,children:a,...u})=>{const _=o.getConfigs().syntaxHighlight.activated,w=o.getComponent(\"PlainTextViewer\");return _||\"function\"!=typeof i?_?Re.createElement(s,u,a):Re.createElement(w,null,a):i({children:a,PlainTextViewer:w})},SyntaxHighlightingPlugin1=()=>({afterLoad:after_load,rootInjects:{syntaxHighlighting:{styles:BO,defaultStyle:$O}},components:{SyntaxHighlighter:components_SyntaxHighlighter,HighlightCode:components_HighlightCode,PlainTextViewer:components_PlainTextViewer}}),SyntaxHighlightingPlugin2=()=>({wrapComponents:{SyntaxHighlighter:wrap_components_SyntaxHighlighter}}),syntax_highlighting=()=>[SyntaxHighlightingPlugin1,SyntaxHighlightingPlugin2],versions_after_load=()=>{const{GIT_DIRTY:s,GIT_COMMIT:o,PACKAGE_VERSION:i,BUILD_TIME:a}={PACKAGE_VERSION:\"5.22.0\",GIT_COMMIT:\"g0a438f23\",GIT_DIRTY:!0,BUILD_TIME:\"Wed, 21 May 2025 12:43:49 GMT\"};lt.versions=lt.versions||{},lt.versions.swaggerUI={version:i,gitRevision:o,gitDirty:s,buildTimestamp:a}},versions=()=>({afterLoad:versions_after_load});var UO=__webpack_require__(47248),zO=__webpack_require__.n(UO);const WO=console.error,withErrorBoundary=s=>o=>{const{getComponent:i,fn:a}=s(),u=i(\"ErrorBoundary\"),_=a.getDisplayName(o);class WithErrorBoundary extends Re.Component{render(){return Re.createElement(u,{targetName:_,getComponent:i,fn:a},Re.createElement(o,Mn()({},this.props,this.context)))}}var w;return WithErrorBoundary.displayName=`WithErrorBoundary(${_})`,(w=o).prototype&&w.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=o.prototype.mapStateToProps),WithErrorBoundary},fallback=({name:s})=>Re.createElement(\"div\",{className:\"fallback\"},\"😱 \",Re.createElement(\"i\",null,\"Could not render \",\"t\"===s?\"this component\":s,\", see the console.\"));class ErrorBoundary extends Re.Component{static defaultProps={targetName:\"this component\",getComponent:()=>fallback,fn:{componentDidCatch:WO},children:null};static getDerivedStateFromError(s){return{hasError:!0,error:s}}constructor(...s){super(...s),this.state={hasError:!1,error:null}}componentDidCatch(s,o){this.props.fn.componentDidCatch(s,o)}render(){const{getComponent:s,targetName:o,children:i}=this.props;if(this.state.hasError){const i=s(\"Fallback\");return Re.createElement(i,{name:o})}return i}}const JO=ErrorBoundary,safe_render=({componentList:s=[],fullOverride:o=!1}={})=>({getSystem:i})=>{const a=o?s:[\"App\",\"BaseLayout\",\"VersionPragmaFilter\",\"InfoContainer\",\"ServersContainer\",\"SchemesContainer\",\"AuthorizeBtnContainer\",\"FilterContainer\",\"Operations\",\"OperationContainer\",\"parameters\",\"responses\",\"OperationServers\",\"Models\",\"ModelWrapper\",...s],u=zO()(a,Array(a.length).fill(((s,{fn:o})=>o.withErrorBoundary(s))));return{fn:{componentDidCatch:WO,withErrorBoundary:withErrorBoundary(i)},components:{ErrorBoundary:JO,Fallback:fallback},wrapComponents:u}};class App extends Re.Component{getLayout(){const{getComponent:s,layoutSelectors:o}=this.props,i=o.current(),a=s(i,!0);return a||(()=>Re.createElement(\"h1\",null,' No layout defined for \"',i,'\" '))}render(){const s=this.getLayout();return Re.createElement(s,null)}}const HO=App;class AuthorizationPopup extends Re.Component{close=()=>{let{authActions:s}=this.props;s.showDefinitions(!1)};render(){let{authSelectors:s,authActions:o,getComponent:i,errSelectors:a,specSelectors:u,fn:{AST:_={}}}=this.props,w=s.shownDefinitions();const x=i(\"auths\"),C=i(\"CloseIcon\");return Re.createElement(\"div\",{className:\"dialog-ux\"},Re.createElement(\"div\",{className:\"backdrop-ux\"}),Re.createElement(\"div\",{className:\"modal-ux\"},Re.createElement(\"div\",{className:\"modal-dialog-ux\"},Re.createElement(\"div\",{className:\"modal-ux-inner\"},Re.createElement(\"div\",{className:\"modal-ux-header\"},Re.createElement(\"h3\",null,\"Available authorizations\"),Re.createElement(\"button\",{type:\"button\",className:\"close-modal\",onClick:this.close},Re.createElement(C,null))),Re.createElement(\"div\",{className:\"modal-ux-content\"},w.valueSeq().map(((w,C)=>Re.createElement(x,{key:C,AST:_,definitions:w,getComponent:i,errSelectors:a,authSelectors:s,authActions:o,specSelectors:u}))))))))}}class AuthorizeBtn extends Re.Component{render(){let{isAuthorized:s,showPopup:o,onClick:i,getComponent:a}=this.props;const u=a(\"authorizationPopup\",!0),_=a(\"LockAuthIcon\",!0),w=a(\"UnlockAuthIcon\",!0);return Re.createElement(\"div\",{className:\"auth-wrapper\"},Re.createElement(\"button\",{className:s?\"btn authorize locked\":\"btn authorize unlocked\",onClick:i},Re.createElement(\"span\",null,\"Authorize\"),s?Re.createElement(_,null):Re.createElement(w,null)),o&&Re.createElement(u,null))}}class AuthorizeBtnContainer extends Re.Component{render(){const{authActions:s,authSelectors:o,specSelectors:i,getComponent:a}=this.props,u=i.securityDefinitions(),_=o.definitionsToAuthorize(),w=a(\"authorizeBtn\");return u?Re.createElement(w,{onClick:()=>s.showDefinitions(_),isAuthorized:!!o.authorized().size,showPopup:!!o.shownDefinitions(),getComponent:a}):null}}class AuthorizeOperationBtn extends Re.Component{onClick=s=>{s.stopPropagation();let{onClick:o}=this.props;o&&o()};render(){let{isAuthorized:s,getComponent:o}=this.props;const i=o(\"LockAuthOperationIcon\",!0),a=o(\"UnlockAuthOperationIcon\",!0);return Re.createElement(\"button\",{className:\"authorization__btn\",\"aria-label\":s?\"authorization button locked\":\"authorization button unlocked\",onClick:this.onClick},s?Re.createElement(i,{className:\"locked\"}):Re.createElement(a,{className:\"unlocked\"}))}}class Auths extends Re.Component{constructor(s,o){super(s,o),this.state={}}onAuthChange=s=>{let{name:o}=s;this.setState({[o]:s})};submitAuth=s=>{s.preventDefault();let{authActions:o}=this.props;o.authorizeWithPersistOption(this.state)};logoutClick=s=>{s.preventDefault();let{authActions:o,definitions:i}=this.props,a=i.map(((s,o)=>o)).toArray();this.setState(a.reduce(((s,o)=>(s[o]=\"\",s)),{})),o.logoutWithPersistOption(a)};close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};render(){let{definitions:s,getComponent:o,authSelectors:i,errSelectors:a}=this.props;const u=o(\"AuthItem\"),_=o(\"oauth2\",!0),w=o(\"Button\");let x=i.authorized(),C=s.filter(((s,o)=>!!x.get(o))),j=s.filter((s=>\"oauth2\"!==s.get(\"type\"))),L=s.filter((s=>\"oauth2\"===s.get(\"type\")));return Re.createElement(\"div\",{className:\"auth-container\"},!!j.size&&Re.createElement(\"form\",{onSubmit:this.submitAuth},j.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray(),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},j.size===C.size?Re.createElement(w,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(w,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),Re.createElement(w,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),L&&L.size?Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"scope-def\"},Re.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),Re.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),s.filter((s=>\"oauth2\"===s.get(\"type\"))).map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(_,{authorized:x,schema:s,name:o})))).toArray()):null)}}class auth_item_Auths extends Re.Component{render(){let{schema:s,name:o,getComponent:i,onAuthChange:a,authorized:u,errSelectors:_,authSelectors:w}=this.props;const x=i(\"apiKeyAuth\"),C=i(\"basicAuth\");let j;const L=s.get(\"type\");switch(L){case\"apiKey\":j=Re.createElement(x,{key:o,schema:s,name:o,errSelectors:_,authorized:u,getComponent:i,onChange:a,authSelectors:w});break;case\"basic\":j=Re.createElement(C,{key:o,schema:s,name:o,errSelectors:_,authorized:u,getComponent:i,onChange:a,authSelectors:w});break;default:j=Re.createElement(\"div\",{key:o},\"Unknown security definition type \",L)}return Re.createElement(\"div\",{key:`${o}-jump`},j)}}class AuthError extends Re.Component{render(){let{error:s}=this.props,o=s.get(\"level\"),i=s.get(\"message\"),a=s.get(\"source\");return Re.createElement(\"div\",{className:\"errors\"},Re.createElement(\"b\",null,a,\" \",o),Re.createElement(\"span\",null,i))}}class ApiKeyAuth extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a}=this.props,u=this.getValue();this.state={name:i,schema:a,value:u}}getValue(){let{name:s,authorized:o}=this.props;return o&&o.getIn([s,\"value\"])}onChange=s=>{let{onChange:o}=this.props,i=s.target.value,a=Object.assign({},this.state,{value:i});this.setState(a),o(a)};render(){let{schema:s,getComponent:o,errSelectors:i,name:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"Markdown\",!0),L=o(\"JumpToPath\",!0),B=u.selectAuthPath(a);let $=this.getValue(),V=i.allErrors().filter((s=>s.get(\"authId\")===a));return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a||s.get(\"name\")),\" (apiKey)\",Re.createElement(L,{path:B})),$&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"p\",null,\"Name: \",Re.createElement(\"code\",null,s.get(\"name\")))),Re.createElement(w,null,Re.createElement(\"p\",null,\"In: \",Re.createElement(\"code\",null,s.get(\"in\")))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"api_key_value\"},\"Value:\"),$?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"api_key_value\",type:\"text\",onChange:this.onChange,autoFocus:!0}))),V.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}}class BasicAuth extends Re.Component{constructor(s,o){super(s,o);let{schema:i,name:a}=this.props,u=this.getValue().username;this.state={name:a,schema:i,value:u?{username:u}:{}}}getValue(){let{authorized:s,name:o}=this.props;return s&&s.getIn([o,\"value\"])||{}}onChange=s=>{let{onChange:o}=this.props,{value:i,name:a}=s.target,u=this.state.value;u[a]=i,this.setState({value:u}),o(this.state)};render(){let{schema:s,getComponent:o,name:i,errSelectors:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"JumpToPath\",!0),L=o(\"Markdown\",!0),B=u.selectAuthPath(i);let $=this.getValue().username,V=a.allErrors().filter((s=>s.get(\"authId\")===i));return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,\"Basic authorization\",Re.createElement(j,{path:B})),$&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(L,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth_username\"},\"Username:\"),$?Re.createElement(\"code\",null,\" \",$,\" \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth_username\",type:\"text\",required:\"required\",name:\"username\",onChange:this.onChange,autoFocus:!0}))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth_password\"},\"Password:\"),$?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth_password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",onChange:this.onChange}))),V.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}}function example_Example(s){const{example:o,showValue:i,getComponent:a}=s,u=a(\"Markdown\",!0),_=a(\"HighlightCode\",!0);return o&&ze.Map.isMap(o)?Re.createElement(\"div\",{className:\"example\"},o.get(\"description\")?Re.createElement(\"section\",{className:\"example__section\"},Re.createElement(\"div\",{className:\"example__section-header\"},\"Example Description\"),Re.createElement(\"p\",null,Re.createElement(u,{source:o.get(\"description\")}))):null,i&&o.has(\"value\")?Re.createElement(\"section\",{className:\"example__section\"},Re.createElement(\"div\",{className:\"example__section-header\"},\"Example Value\"),Re.createElement(_,null,stringify(o.get(\"value\")))):null):null}class ExamplesSelect extends Re.PureComponent{static defaultProps={examples:(0,ze.Map)({}),onSelect:(...s)=>console.log(\"DEBUG: ExamplesSelect was not given an onSelect callback\",...s),currentExampleKey:null,showLabels:!0};_onSelect=(s,{isSyntheticChange:o=!1}={})=>{\"function\"==typeof this.props.onSelect&&this.props.onSelect(s,{isSyntheticChange:o})};_onDomSelect=s=>{if(\"function\"==typeof this.props.onSelect){const o=s.target.selectedOptions[0].getAttribute(\"value\");this._onSelect(o,{isSyntheticChange:!1})}};getCurrentExample=()=>{const{examples:s,currentExampleKey:o}=this.props,i=s.get(o),a=s.keySeq().first(),u=s.get(a);return i||u||(0,ze.Map)({})};componentDidMount(){const{onSelect:s,examples:o}=this.props;if(\"function\"==typeof s){const s=o.first(),i=o.keyOf(s);this._onSelect(i,{isSyntheticChange:!0})}}UNSAFE_componentWillReceiveProps(s){const{currentExampleKey:o,examples:i}=s;if(i!==this.props.examples&&!i.has(o)){const s=i.first(),o=i.keyOf(s);this._onSelect(o,{isSyntheticChange:!0})}}render(){const{examples:s,currentExampleKey:o,isValueModified:i,isModifiedValueAvailable:a,showLabels:u}=this.props;return Re.createElement(\"div\",{className:\"examples-select\"},u?Re.createElement(\"span\",{className:\"examples-select__section-label\"},\"Examples: \"):null,Re.createElement(\"select\",{className:\"examples-select-element\",onChange:this._onDomSelect,value:a&&i?\"__MODIFIED__VALUE__\":o||\"\"},a?Re.createElement(\"option\",{value:\"__MODIFIED__VALUE__\"},\"[Modified value]\"):null,s.map(((s,o)=>Re.createElement(\"option\",{key:o,value:o},ze.Map.isMap(s)&&s.get(\"summary\")||o))).valueSeq()))}}const stringifyUnlessList=s=>ze.List.isList(s)?s:stringify(s);class ExamplesSelectValueRetainer extends Re.PureComponent{static defaultProps={userHasEditedBody:!1,examples:(0,ze.Map)({}),currentNamespace:\"__DEFAULT__NAMESPACE__\",setRetainRequestBodyValueFlag:()=>{},onSelect:(...s)=>console.log(\"ExamplesSelectValueRetainer: no `onSelect` function was provided\",...s),updateValue:(...s)=>console.log(\"ExamplesSelectValueRetainer: no `updateValue` function was provided\",...s)};constructor(s){super(s);const o=this._getCurrentExampleValue();this.state={[s.currentNamespace]:(0,ze.Map)({lastUserEditedValue:this.props.currentUserInputValue,lastDownstreamValue:o,isModifiedValueSelected:this.props.userHasEditedBody||this.props.currentUserInputValue!==o})}}componentWillUnmount(){this.props.setRetainRequestBodyValueFlag(!1)}_getStateForCurrentNamespace=()=>{const{currentNamespace:s}=this.props;return(this.state[s]||(0,ze.Map)()).toObject()};_setStateForCurrentNamespace=s=>{const{currentNamespace:o}=this.props;return this._setStateForNamespace(o,s)};_setStateForNamespace=(s,o)=>{const i=(this.state[s]||(0,ze.Map)()).mergeDeep(o);return this.setState({[s]:i})};_isCurrentUserInputSameAsExampleValue=()=>{const{currentUserInputValue:s}=this.props;return this._getCurrentExampleValue()===s};_getValueForExample=(s,o)=>{const{examples:i}=o||this.props;return stringifyUnlessList((i||(0,ze.Map)({})).getIn([s,\"value\"]))};_getCurrentExampleValue=s=>{const{currentKey:o}=s||this.props;return this._getValueForExample(o,s||this.props)};_onExamplesSelect=(s,{isSyntheticChange:o}={},...i)=>{const{onSelect:a,updateValue:u,currentUserInputValue:_,userHasEditedBody:w}=this.props,{lastUserEditedValue:x}=this._getStateForCurrentNamespace(),C=this._getValueForExample(s);if(\"__MODIFIED__VALUE__\"===s)return u(stringifyUnlessList(x)),this._setStateForCurrentNamespace({isModifiedValueSelected:!0});\"function\"==typeof a&&a(s,{isSyntheticChange:o},...i),this._setStateForCurrentNamespace({lastDownstreamValue:C,isModifiedValueSelected:o&&w||!!_&&_!==C}),o||\"function\"==typeof u&&u(stringifyUnlessList(C))};UNSAFE_componentWillReceiveProps(s){const{currentUserInputValue:o,examples:i,onSelect:a,userHasEditedBody:u}=s,{lastUserEditedValue:_,lastDownstreamValue:w}=this._getStateForCurrentNamespace(),x=this._getValueForExample(s.currentKey,s),C=i.filter((s=>ze.Map.isMap(s)&&(s.get(\"value\")===o||stringify(s.get(\"value\"))===o)));if(C.size){let o;o=C.has(s.currentKey)?s.currentKey:C.keySeq().first(),a(o,{isSyntheticChange:!0})}else o!==this.props.currentUserInputValue&&o!==_&&o!==w&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(s.currentNamespace,{lastUserEditedValue:s.currentUserInputValue,isModifiedValueSelected:u||o!==x}))}render(){const{currentUserInputValue:s,examples:o,currentKey:i,getComponent:a,userHasEditedBody:u}=this.props,{lastDownstreamValue:_,lastUserEditedValue:w,isModifiedValueSelected:x}=this._getStateForCurrentNamespace(),C=a(\"ExamplesSelect\");return Re.createElement(C,{examples:o,currentExampleKey:i,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!w&&w!==_,isValueModified:void 0!==s&&x&&s!==this._getCurrentExampleValue()||u})}}function oauth2_authorize_authorize({auth:s,authActions:o,errActions:i,configs:a,authConfigs:u={},currentServer:_}){let{schema:w,scopes:x,name:C,clientId:j}=s,L=w.get(\"flow\"),B=[];switch(L){case\"password\":return void o.authorizePassword(s);case\"application\":case\"clientCredentials\":case\"client_credentials\":return void o.authorizeApplication(s);case\"accessCode\":case\"authorizationCode\":case\"authorization_code\":B.push(\"response_type=code\");break;case\"implicit\":B.push(\"response_type=token\")}\"string\"==typeof j&&B.push(\"client_id=\"+encodeURIComponent(j));let $=a.oauth2RedirectUrl;if(void 0===$)return void i.newAuthErr({authId:C,source:\"validation\",level:\"error\",message:\"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"});B.push(\"redirect_uri=\"+encodeURIComponent($));let V=[];if(Array.isArray(x)?V=x:We().List.isList(x)&&(V=x.toArray()),V.length>0){let s=u.scopeSeparator||\" \";B.push(\"scope=\"+encodeURIComponent(V.join(s)))}let U=utils_btoa(new Date);if(B.push(\"state=\"+encodeURIComponent(U)),void 0!==u.realm&&B.push(\"realm=\"+encodeURIComponent(u.realm)),(\"authorizationCode\"===L||\"authorization_code\"===L||\"accessCode\"===L)&&u.usePkceWithAuthorizationCodeGrant){const o=function generateCodeVerifier(){return b64toB64UrlEncoded(xt()(32).toString(\"base64\"))}(),i=function createCodeChallenge(s){return b64toB64UrlEncoded(Ot()(\"sha256\").update(s).digest(\"base64\"))}(o);B.push(\"code_challenge=\"+i),B.push(\"code_challenge_method=S256\"),s.codeVerifier=o}let{additionalQueryStringParams:z}=u;for(let s in z)void 0!==z[s]&&B.push([s,z[s]].map(encodeURIComponent).join(\"=\"));const Y=w.get(\"authorizationUrl\");let Z;Z=_?Nt()(sanitizeUrl(Y),_,!0).toString():sanitizeUrl(Y);let ee,ie=[Z,B.join(\"&\")].join(\"string\"!=typeof Y||Y.includes(\"?\")?\"&\":\"?\");ee=\"implicit\"===L?o.preAuthorizeImplicit:u.useBasicAuthenticationWithAccessCodeGrant?o.authorizeAccessCodeWithBasicAuthentication:o.authorizeAccessCodeWithFormParams,o.authPopup(ie,{auth:s,state:U,redirectUrl:$,callback:ee,errCb:i.newAuthErr})}class Oauth2 extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a,authorized:u,authSelectors:_}=this.props,w=u&&u.get(i),x=_.getConfigs()||{},C=w&&w.get(\"username\")||\"\",j=w&&w.get(\"clientId\")||x.clientId||\"\",L=w&&w.get(\"clientSecret\")||x.clientSecret||\"\",B=w&&w.get(\"passwordType\")||\"basic\",$=w&&w.get(\"scopes\")||x.scopes||[];\"string\"==typeof $&&($=$.split(x.scopeSeparator||\" \")),this.state={appName:x.appName,name:i,schema:a,scopes:$,clientId:j,clientSecret:L,username:C,password:\"\",passwordType:B}}close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};authorize=()=>{let{authActions:s,errActions:o,getConfigs:i,authSelectors:a,oas3Selectors:u}=this.props,_=i(),w=a.getConfigs();o.clear({authId:name,type:\"auth\",source:\"auth\"}),oauth2_authorize_authorize({auth:this.state,currentServer:u.serverEffectiveValue(u.selectedServer()),authActions:s,errActions:o,configs:_,authConfigs:w})};onScopeChange=s=>{let{target:o}=s,{checked:i}=o,a=o.dataset.value;if(i&&-1===this.state.scopes.indexOf(a)){let s=this.state.scopes.concat([a]);this.setState({scopes:s})}else!i&&this.state.scopes.indexOf(a)>-1&&this.setState({scopes:this.state.scopes.filter((s=>s!==a))})};onInputChange=s=>{let{target:{dataset:{name:o},value:i}}=s,a={[o]:i};this.setState(a)};selectScopes=s=>{s.target.dataset.all?this.setState({scopes:Array.from((this.props.schema.get(\"allowedScopes\")||this.props.schema.get(\"scopes\")).keys())}):this.setState({scopes:[]})};logout=s=>{s.preventDefault();let{authActions:o,errActions:i,name:a}=this.props;i.clear({authId:a,type:\"auth\",source:\"auth\"}),o.logoutWithPersistOption([a])};render(){let{schema:s,getComponent:o,authSelectors:i,errSelectors:a,name:u,specSelectors:_}=this.props;const w=o(\"Input\"),x=o(\"Row\"),C=o(\"Col\"),j=o(\"Button\"),L=o(\"authError\"),B=o(\"JumpToPath\",!0),$=o(\"Markdown\",!0),V=o(\"InitializedInput\"),{isOAS3:U}=_;let z=U()?s.get(\"openIdConnectUrl\"):null;const Y=\"implicit\",Z=\"password\",ee=U()?z?\"authorization_code\":\"authorizationCode\":\"accessCode\",ie=U()?z?\"client_credentials\":\"clientCredentials\":\"application\",ae=i.selectAuthPath(u);let ce=!!(i.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,le=s.get(\"flow\"),pe=le===ee&&ce?le+\" with PKCE\":le,de=s.get(\"allowedScopes\")||s.get(\"scopes\"),fe=!!i.authorized().get(u),ye=a.allErrors().filter((s=>s.get(\"authId\")===u)),be=!ye.filter((s=>\"validation\"===s.get(\"source\"))).size,_e=s.get(\"description\");return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,u,\" (OAuth2, \",pe,\") \",Re.createElement(B,{path:ae})),this.state.appName?Re.createElement(\"h5\",null,\"Application: \",this.state.appName,\" \"):null,_e&&Re.createElement($,{source:s.get(\"description\")}),fe&&Re.createElement(\"h6\",null,\"Authorized\"),z&&Re.createElement(\"p\",null,\"OpenID Connect URL: \",Re.createElement(\"code\",null,z)),(le===Y||le===ee)&&Re.createElement(\"p\",null,\"Authorization URL: \",Re.createElement(\"code\",null,s.get(\"authorizationUrl\"))),(le===Z||le===ee||le===ie)&&Re.createElement(\"p\",null,\"Token URL:\",Re.createElement(\"code\",null,\" \",s.get(\"tokenUrl\"))),Re.createElement(\"p\",{className:\"flow\"},\"Flow: \",Re.createElement(\"code\",null,pe)),le!==Z?null:Re.createElement(x,null,Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"oauth_username\"},\"username:\"),fe?Re.createElement(\"code\",null,\" \",this.state.username,\" \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"input\",{id:\"oauth_username\",type:\"text\",\"data-name\":\"username\",onChange:this.onInputChange,autoFocus:!0}))),Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"oauth_password\"},\"password:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"input\",{id:\"oauth_password\",type:\"password\",\"data-name\":\"password\",onChange:this.onInputChange}))),Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:\"password_type\"},\"Client credentials location:\"),fe?Re.createElement(\"code\",null,\" \",this.state.passwordType,\" \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(\"select\",{id:\"password_type\",\"data-name\":\"passwordType\",onChange:this.onInputChange},Re.createElement(\"option\",{value:\"basic\"},\"Authorization header\"),Re.createElement(\"option\",{value:\"request-body\"},\"Request body\"))))),(le===ie||le===Y||le===ee||le===Z)&&(!fe||fe&&this.state.clientId)&&Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:`client_id_${le}`},\"client_id:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(V,{id:`client_id_${le}`,type:\"text\",required:le===Z,initialValue:this.state.clientId,\"data-name\":\"clientId\",onChange:this.onInputChange}))),(le===ie||le===ee||le===Z)&&Re.createElement(x,null,Re.createElement(\"label\",{htmlFor:`client_secret_${le}`},\"client_secret:\"),fe?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(C,{tablet:10,desktop:10},Re.createElement(V,{id:`client_secret_${le}`,initialValue:this.state.clientSecret,type:\"password\",\"data-name\":\"clientSecret\",onChange:this.onInputChange}))),!fe&&de&&de.size?Re.createElement(\"div\",{className:\"scopes\"},Re.createElement(\"h2\",null,\"Scopes:\",Re.createElement(\"a\",{onClick:this.selectScopes,\"data-all\":!0},\"select all\"),Re.createElement(\"a\",{onClick:this.selectScopes},\"select none\")),de.map(((s,o)=>Re.createElement(x,{key:o},Re.createElement(\"div\",{className:\"checkbox\"},Re.createElement(w,{\"data-value\":o,id:`${o}-${le}-checkbox-${this.state.name}`,disabled:fe,checked:this.state.scopes.includes(o),type:\"checkbox\",onChange:this.onScopeChange}),Re.createElement(\"label\",{htmlFor:`${o}-${le}-checkbox-${this.state.name}`},Re.createElement(\"span\",{className:\"item\"}),Re.createElement(\"div\",{className:\"text\"},Re.createElement(\"p\",{className:\"name\"},o),Re.createElement(\"p\",{className:\"description\"},s))))))).toArray()):null,ye.valueSeq().map(((s,o)=>Re.createElement(L,{error:s,key:o}))),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},be&&(fe?Re.createElement(j,{className:\"btn modal-btn auth authorize\",onClick:this.logout,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(j,{className:\"btn modal-btn auth authorize\",onClick:this.authorize,\"aria-label\":\"Apply given OAuth2 credentials\"},\"Authorize\")),Re.createElement(j,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\")))}}class Clear extends Re.Component{onClick=()=>{let{specActions:s,path:o,method:i}=this.props;s.clearResponse(o,i),s.clearRequest(o,i)};render(){return Re.createElement(\"button\",{className:\"btn btn-clear opblock-control__btn\",onClick:this.onClick},\"Clear\")}}const live_response_Headers=({headers:s})=>Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Response headers\"),Re.createElement(\"pre\",{className:\"microlight\"},s)),Duration=({duration:s})=>Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Request duration\"),Re.createElement(\"pre\",{className:\"microlight\"},s,\" ms\"));class LiveResponse extends Re.Component{shouldComponentUpdate(s){return this.props.response!==s.response||this.props.path!==s.path||this.props.method!==s.method||this.props.displayRequestDuration!==s.displayRequestDuration}render(){const{response:s,getComponent:o,getConfigs:i,displayRequestDuration:a,specSelectors:u,path:_,method:w}=this.props,{showMutatedRequest:x,requestSnippetsEnabled:C}=i(),j=x?u.mutatedRequestFor(_,w):u.requestFor(_,w),L=s.get(\"status\"),B=j.get(\"url\"),$=s.get(\"headers\").toJS(),V=s.get(\"notDocumented\"),U=s.get(\"error\"),z=s.get(\"text\"),Y=s.get(\"duration\"),Z=Object.keys($),ee=$[\"content-type\"]||$[\"Content-Type\"],ie=o(\"responseBody\"),ae=Z.map((s=>{var o=Array.isArray($[s])?$[s].join():$[s];return Re.createElement(\"span\",{className:\"headerline\",key:s},\" \",s,\": \",o,\" \")})),ce=0!==ae.length,le=o(\"Markdown\",!0),pe=o(\"RequestSnippets\",!0),de=o(\"curl\",!0);return Re.createElement(\"div\",null,j&&C?Re.createElement(pe,{request:j}):Re.createElement(de,{request:j}),B&&Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"request-url\"},Re.createElement(\"h4\",null,\"Request URL\"),Re.createElement(\"pre\",{className:\"microlight\"},B))),Re.createElement(\"h4\",null,\"Server response\"),Re.createElement(\"table\",{className:\"responses-table live-responses-table\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"responses-header\"},Re.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),Re.createElement(\"td\",{className:\"col_header response-col_description\"},\"Details\"))),Re.createElement(\"tbody\",null,Re.createElement(\"tr\",{className:\"response\"},Re.createElement(\"td\",{className:\"response-col_status\"},L,V?Re.createElement(\"div\",{className:\"response-undocumented\"},Re.createElement(\"i\",null,\" Undocumented \")):null),Re.createElement(\"td\",{className:\"response-col_description\"},U?Re.createElement(le,{source:`${\"\"!==s.get(\"name\")?`${s.get(\"name\")}: `:\"\"}${s.get(\"message\")}`}):null,z?Re.createElement(ie,{content:z,contentType:ee,url:B,headers:$,getConfigs:i,getComponent:o}):null,ce?Re.createElement(live_response_Headers,{headers:ae}):null,a&&Y?Re.createElement(Duration,{duration:Y}):null)))))}}class OnlineValidatorBadge extends Re.Component{constructor(s,o){super(s,o);let{getConfigs:i}=s,{validatorUrl:a}=i();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===a?\"https://validator.swagger.io/validator\":a}}getDefinitionUrl=()=>{let{specSelectors:s}=this.props;return new(Nt())(s.url(),lt.location).toString()};UNSAFE_componentWillReceiveProps(s){let{getConfigs:o}=s,{validatorUrl:i}=o();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===i?\"https://validator.swagger.io/validator\":i})}render(){let{getConfigs:s}=this.props,{spec:o}=s(),i=sanitizeUrl(this.state.validatorUrl);return\"object\"==typeof o&&Object.keys(o).length?null:this.state.url&&requiresValidationURL(this.state.validatorUrl)&&requiresValidationURL(this.state.url)?Re.createElement(\"span\",{className:\"float-right\"},Re.createElement(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:`${i}/debug?url=${encodeURIComponent(this.state.url)}`},Re.createElement(ValidatorImage,{src:`${i}?url=${encodeURIComponent(this.state.url)}`,alt:\"Online validator badge\"}))):null}}class ValidatorImage extends Re.Component{constructor(s){super(s),this.state={loaded:!1,error:!1}}componentDidMount(){const s=new Image;s.onload=()=>{this.setState({loaded:!0})},s.onerror=()=>{this.setState({error:!0})},s.src=this.props.src}UNSAFE_componentWillReceiveProps(s){if(s.src!==this.props.src){const o=new Image;o.onload=()=>{this.setState({loaded:!0})},o.onerror=()=>{this.setState({error:!0})},o.src=s.src}}render(){return this.state.error?Re.createElement(\"img\",{alt:\"Error\"}):this.state.loaded?Re.createElement(\"img\",{src:this.props.src,alt:this.props.alt}):null}}class Operations extends Re.Component{render(){let{specSelectors:s}=this.props;const o=s.taggedOperations();return 0===o.size?Re.createElement(\"h3\",null,\" No operations defined in spec!\"):Re.createElement(\"div\",null,o.map(this.renderOperationTag).toArray(),o.size<1?Re.createElement(\"h3\",null,\" No operations defined in spec! \"):null)}renderOperationTag=(s,o)=>{const{specSelectors:i,getComponent:a,oas3Selectors:u,layoutSelectors:_,layoutActions:w,getConfigs:x}=this.props,C=i.validOperationMethods(),j=a(\"OperationContainer\",!0),L=a(\"OperationTag\"),B=s.get(\"operations\");return Re.createElement(L,{key:\"operation-\"+o,tagObj:s,tag:o,oas3Selectors:u,layoutSelectors:_,layoutActions:w,getConfigs:x,getComponent:a,specUrl:i.url()},Re.createElement(\"div\",{className:\"operation-tag-content\"},B.map((s=>{const i=s.get(\"path\"),a=s.get(\"method\"),u=We().List([\"paths\",i,a]);return-1===C.indexOf(a)?null:Re.createElement(j,{key:`${i}-${a}`,specPath:u,op:s,path:i,method:a,tag:o})})).toArray()))}}class OperationTag extends Re.Component{static defaultProps={tagObj:We().fromJS({}),tag:\"\"};render(){const{tagObj:s,tag:o,children:i,oas3Selectors:a,layoutSelectors:u,layoutActions:_,getConfigs:w,getComponent:x,specUrl:C}=this.props;let{docExpansion:j,deepLinking:L}=w();const B=x(\"Collapse\"),$=x(\"Markdown\",!0),V=x(\"DeepLink\"),U=x(\"Link\"),z=x(\"ArrowUpIcon\"),Y=x(\"ArrowDownIcon\");let Z,ee=s.getIn([\"tagDetails\",\"description\"],null),ie=s.getIn([\"tagDetails\",\"externalDocs\",\"description\"]),ae=s.getIn([\"tagDetails\",\"externalDocs\",\"url\"]);Z=isFunc(a)&&isFunc(a.selectedServer)?safeBuildUrl(ae,C,{selectedServer:a.selectedServer()}):ae;let ce=[\"operations-tag\",o],le=u.isShown(ce,\"full\"===j||\"list\"===j);return Re.createElement(\"div\",{className:le?\"opblock-tag-section is-open\":\"opblock-tag-section\"},Re.createElement(\"h3\",{onClick:()=>_.show(ce,!le),className:ee?\"opblock-tag\":\"opblock-tag no-desc\",id:ce.map((s=>escapeDeepLinkPath(s))).join(\"-\"),\"data-tag\":o,\"data-is-open\":le},Re.createElement(V,{enabled:L,isShown:le,path:createDeepLinkPath(o),text:o}),ee?Re.createElement(\"small\",null,Re.createElement($,{source:ee})):Re.createElement(\"small\",null),Z?Re.createElement(\"div\",{className:\"info__externaldocs\"},Re.createElement(\"small\",null,Re.createElement(U,{href:sanitizeUrl(Z),onClick:s=>s.stopPropagation(),target:\"_blank\"},ie||Z))):null,Re.createElement(\"button\",{\"aria-expanded\":le,className:\"expand-operation\",title:le?\"Collapse operation\":\"Expand operation\",onClick:()=>_.show(ce,!le)},le?Re.createElement(z,{className:\"arrow\"}):Re.createElement(Y,{className:\"arrow\"}))),Re.createElement(B,{isOpened:le},i))}}class operation_Operation extends Re.PureComponent{static defaultProps={operation:null,response:null,request:null,specPath:(0,ze.List)(),summary:\"\"};render(){let{specPath:s,response:o,request:i,toggleShown:a,onTryoutClick:u,onResetClick:_,onCancelClick:w,onExecute:x,fn:C,getComponent:j,getConfigs:L,specActions:B,specSelectors:$,authActions:V,authSelectors:U,oas3Actions:z,oas3Selectors:Y}=this.props,Z=this.props.operation,{deprecated:ee,isShown:ie,path:ae,method:ce,op:le,tag:pe,operationId:de,allowTryItOut:fe,displayRequestDuration:ye,tryItOutEnabled:be,executeInProgress:_e}=Z.toJS(),{description:Se,externalDocs:we,schemes:xe}=le;const Pe=we?safeBuildUrl(we.url,$.url(),{selectedServer:Y.selectedServer()}):\"\";let Te=Z.getIn([\"op\"]),$e=Te.get(\"responses\"),qe=function getList(s,o){if(!We().Iterable.isIterable(s))return We().List();let i=s.getIn(Array.isArray(o)?o:[o]);return We().List.isList(i)?i:We().List()}(Te,[\"parameters\"]),ze=$.operationScheme(ae,ce),He=[\"operations\",pe,de],Ye=getExtensions(Te);const Xe=j(\"responses\"),Qe=j(\"parameters\"),et=j(\"execute\"),tt=j(\"clear\"),rt=j(\"Collapse\"),nt=j(\"Markdown\",!0),st=j(\"schemes\"),ot=j(\"OperationServers\"),it=j(\"OperationExt\"),at=j(\"OperationSummary\"),ct=j(\"Link\"),{showExtensions:lt}=L();if($e&&o&&o.size>0){let s=!$e.get(String(o.get(\"status\")))&&!$e.get(\"default\");o=o.set(\"notDocumented\",s)}let ut=[ae,ce];const pt=$.validationErrors([ae,ce]);return Re.createElement(\"div\",{className:ee?\"opblock opblock-deprecated\":ie?`opblock opblock-${ce} is-open`:`opblock opblock-${ce}`,id:escapeDeepLinkPath(He.join(\"-\"))},Re.createElement(at,{operationProps:Z,isShown:ie,toggleShown:a,getComponent:j,authActions:V,authSelectors:U,specPath:s}),Re.createElement(rt,{isOpened:ie},Re.createElement(\"div\",{className:\"opblock-body\"},Te&&Te.size||null===Te?null:Re.createElement(rolling_load,{height:\"32px\",width:\"32px\",className:\"opblock-loading-animation\"}),ee&&Re.createElement(\"h4\",{className:\"opblock-title_normal\"},\" Warning: Deprecated\"),Se&&Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"div\",{className:\"opblock-description\"},Re.createElement(nt,{source:Se}))),Pe?Re.createElement(\"div\",{className:\"opblock-external-docs-wrapper\"},Re.createElement(\"h4\",{className:\"opblock-title_normal\"},\"Find more details\"),Re.createElement(\"div\",{className:\"opblock-external-docs\"},we.description&&Re.createElement(\"span\",{className:\"opblock-external-docs__description\"},Re.createElement(nt,{source:we.description})),Re.createElement(ct,{target:\"_blank\",className:\"opblock-external-docs__link\",href:sanitizeUrl(Pe)},Pe))):null,Te&&Te.size?Re.createElement(Qe,{parameters:qe,specPath:s.push(\"parameters\"),operation:Te,onChangeKey:ut,onTryoutClick:u,onResetClick:_,onCancelClick:w,tryItOutEnabled:be,allowTryItOut:fe,fn:C,getComponent:j,specActions:B,specSelectors:$,pathMethod:[ae,ce],getConfigs:L,oas3Actions:z,oas3Selectors:Y}):null,be?Re.createElement(ot,{getComponent:j,path:ae,method:ce,operationServers:Te.get(\"servers\"),pathServers:$.paths().getIn([ae,\"servers\"]),getSelectedServer:Y.selectedServer,setSelectedServer:z.setSelectedServer,setServerVariableValue:z.setServerVariableValue,getServerVariable:Y.serverVariableValue,getEffectiveServerValue:Y.serverEffectiveValue}):null,be&&fe&&xe&&xe.size?Re.createElement(\"div\",{className:\"opblock-schemes\"},Re.createElement(st,{schemes:xe,path:ae,method:ce,specActions:B,currentScheme:ze})):null,!be||!fe||pt.length<=0?null:Re.createElement(\"div\",{className:\"validation-errors errors-wrapper\"},\"Please correct the following validation errors and try again.\",Re.createElement(\"ul\",null,pt.map(((s,o)=>Re.createElement(\"li\",{key:o},\" \",s,\" \"))))),Re.createElement(\"div\",{className:be&&o&&fe?\"btn-group\":\"execute-wrapper\"},be&&fe?Re.createElement(et,{operation:Te,specActions:B,specSelectors:$,oas3Selectors:Y,oas3Actions:z,path:ae,method:ce,onExecute:x,disabled:_e}):null,be&&o&&fe?Re.createElement(tt,{specActions:B,path:ae,method:ce}):null),_e?Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"div\",{className:\"loading\"})):null,$e?Re.createElement(Xe,{responses:$e,request:i,tryItOutResponse:o,getComponent:j,getConfigs:L,specSelectors:$,oas3Actions:z,oas3Selectors:Y,specActions:B,produces:$.producesOptionsFor([ae,ce]),producesValue:$.currentProducesFor([ae,ce]),specPath:s.push(\"responses\"),path:ae,method:ce,displayRequestDuration:ye,fn:C}):null,lt&&Ye.size?Re.createElement(it,{extensions:Ye,getComponent:j}):null)))}}class OperationContainer extends Re.PureComponent{constructor(s,o){super(s,o);const{tryItOutEnabled:i}=s.getConfigs();this.state={tryItOutEnabled:i,executeInProgress:!1}}static defaultProps={showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1};mapStateToProps(s,o){const{op:i,layoutSelectors:a,getConfigs:u}=o,{docExpansion:_,deepLinking:w,displayOperationId:x,displayRequestDuration:C,supportedSubmitMethods:j}=u(),L=a.showSummary(),B=i.getIn([\"operation\",\"__originalOperationId\"])||i.getIn([\"operation\",\"operationId\"])||opId(i.get(\"operation\"),o.path,o.method)||i.get(\"id\"),$=[\"operations\",o.tag,B],V=j.indexOf(o.method)>=0&&(void 0===o.allowTryItOut?o.specSelectors.allowTryItOutFor(o.path,o.method):o.allowTryItOut),U=i.getIn([\"operation\",\"security\"])||o.specSelectors.security();return{operationId:B,isDeepLinkingEnabled:w,showSummary:L,displayOperationId:x,displayRequestDuration:C,allowTryItOut:V,security:U,isAuthorized:o.authSelectors.isAuthorized(U),isShown:a.isShown($,\"full\"===_),jumpToKey:`paths.${o.path}.${o.method}`,response:o.specSelectors.responseFor(o.path,o.method),request:o.specSelectors.requestFor(o.path,o.method)}}componentDidMount(){const{isShown:s}=this.props,o=this.getResolvedSubtree();s&&void 0===o&&this.requestResolvedSubtree()}UNSAFE_componentWillReceiveProps(s){const{response:o,isShown:i}=s,a=this.getResolvedSubtree();o!==this.props.response&&this.setState({executeInProgress:!1}),i&&void 0===a&&this.requestResolvedSubtree()}toggleShown=()=>{let{layoutActions:s,tag:o,operationId:i,isShown:a}=this.props;const u=this.getResolvedSubtree();a||void 0!==u||this.requestResolvedSubtree(),s.show([\"operations\",o,i],!a)};onCancelClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onTryoutClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onResetClick=s=>{const o=this.props.oas3Selectors.selectDefaultRequestBodyValue(...s);this.props.oas3Actions.setRequestBodyValue({value:o,pathMethod:s})};onExecute=()=>{this.setState({executeInProgress:!0})};getResolvedSubtree=()=>{const{specSelectors:s,path:o,method:i,specPath:a}=this.props;return a?s.specResolvedSubtree(a.toJS()):s.specResolvedSubtree([\"paths\",o,i])};requestResolvedSubtree=()=>{const{specActions:s,path:o,method:i,specPath:a}=this.props;return a?s.requestResolvedSubtree(a.toJS()):s.requestResolvedSubtree([\"paths\",o,i])};render(){let{op:s,tag:o,path:i,method:a,security:u,isAuthorized:_,operationId:w,showSummary:x,isShown:C,jumpToKey:j,allowTryItOut:L,response:B,request:$,displayOperationId:V,displayRequestDuration:U,isDeepLinkingEnabled:z,specPath:Y,specSelectors:Z,specActions:ee,getComponent:ie,getConfigs:ae,layoutSelectors:ce,layoutActions:le,authActions:pe,authSelectors:de,oas3Actions:fe,oas3Selectors:ye,fn:be}=this.props;const _e=ie(\"operation\"),Se=this.getResolvedSubtree()||(0,ze.Map)(),we=(0,ze.fromJS)({op:Se,tag:o,path:i,summary:s.getIn([\"operation\",\"summary\"])||\"\",deprecated:Se.get(\"deprecated\")||s.getIn([\"operation\",\"deprecated\"])||!1,method:a,security:u,isAuthorized:_,operationId:w,originalOperationId:Se.getIn([\"operation\",\"__originalOperationId\"]),showSummary:x,isShown:C,jumpToKey:j,allowTryItOut:L,request:$,displayOperationId:V,displayRequestDuration:U,isDeepLinkingEnabled:z,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return Re.createElement(_e,{operation:we,response:B,request:$,isShown:C,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onResetClick:this.onResetClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:Y,specActions:ee,specSelectors:Z,oas3Actions:fe,oas3Selectors:ye,layoutActions:le,layoutSelectors:ce,authActions:pe,authSelectors:de,getComponent:ie,getConfigs:ae,fn:be})}}var KO=__webpack_require__(13222),GO=__webpack_require__.n(KO);class OperationSummary extends Re.PureComponent{static defaultProps={operationProps:null,specPath:(0,ze.List)(),summary:\"\"};render(){let{isShown:s,toggleShown:o,getComponent:i,authActions:a,authSelectors:u,operationProps:_,specPath:w}=this.props,{summary:x,isAuthorized:C,method:j,op:L,showSummary:B,path:$,operationId:V,originalOperationId:U,displayOperationId:z}=_.toJS(),{summary:Y}=L,Z=_.get(\"security\");const ee=i(\"authorizeOperationBtn\",!0),ie=i(\"OperationSummaryMethod\"),ae=i(\"OperationSummaryPath\"),ce=i(\"JumpToPath\",!0),le=i(\"CopyToClipboardBtn\",!0),pe=i(\"ArrowUpIcon\"),de=i(\"ArrowDownIcon\"),fe=Z&&!!Z.count(),ye=fe&&1===Z.size&&Z.first().isEmpty(),be=!fe||ye;return Re.createElement(\"div\",{className:`opblock-summary opblock-summary-${j}`},Re.createElement(\"button\",{\"aria-expanded\":s,className:\"opblock-summary-control\",onClick:o},Re.createElement(ie,{method:j}),Re.createElement(\"div\",{className:\"opblock-summary-path-description-wrapper\"},Re.createElement(ae,{getComponent:i,operationProps:_,specPath:w}),B?Re.createElement(\"div\",{className:\"opblock-summary-description\"},GO()(Y||x)):null),z&&(U||V)?Re.createElement(\"span\",{className:\"opblock-summary-operation-id\"},U||V):null),Re.createElement(le,{textToCopy:`${w.get(1)}`}),be?null:Re.createElement(ee,{isAuthorized:C,onClick:()=>{const s=u.definitionsForRequirements(Z);a.showDefinitions(s)}}),Re.createElement(ce,{path:w}),Re.createElement(\"button\",{\"aria-label\":`${j} ${$.replace(/\\//g,\"​/\")}`,className:\"opblock-control-arrow\",\"aria-expanded\":s,tabIndex:\"-1\",onClick:o},s?Re.createElement(pe,{className:\"arrow\"}):Re.createElement(de,{className:\"arrow\"})))}}class OperationSummaryMethod extends Re.PureComponent{static defaultProps={operationProps:null};render(){let{method:s}=this.props;return Re.createElement(\"span\",{className:\"opblock-summary-method\"},s.toUpperCase())}}class OperationSummaryPath extends Re.PureComponent{render(){let{getComponent:s,operationProps:o}=this.props,{deprecated:i,isShown:a,path:u,tag:_,operationId:w,isDeepLinkingEnabled:x}=o.toJS();const C=u.split(/(?=\\/)/g);for(let s=1;s<C.length;s+=2)C.splice(s,0,Re.createElement(\"wbr\",{key:s}));const j=s(\"DeepLink\");return Re.createElement(\"span\",{className:i?\"opblock-summary-path__deprecated\":\"opblock-summary-path\",\"data-path\":u},Re.createElement(j,{enabled:x,isShown:a,path:createDeepLinkPath(`${_}/${w}`),text:C}))}}const operation_extensions=({extensions:s,getComponent:o})=>{let i=o(\"OperationExtRow\");return Re.createElement(\"div\",{className:\"opblock-section\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",null,\"Extensions\")),Re.createElement(\"div\",{className:\"table-container\"},Re.createElement(\"table\",null,Re.createElement(\"thead\",null,Re.createElement(\"tr\",null,Re.createElement(\"td\",{className:\"col_header\"},\"Field\"),Re.createElement(\"td\",{className:\"col_header\"},\"Value\"))),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,o])=>Re.createElement(i,{key:`${s}-${o}`,xKey:s,xVal:o})))))))},operation_extension_row=({xKey:s,xVal:o})=>{const i=o?o.toJS?o.toJS():o:null;return Re.createElement(\"tr\",null,Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,JSON.stringify(i)))};function createHtmlReadyId(s,o=\"_\"){return s.replace(/[^\\w-]/g,o)}class responses_Responses extends Re.Component{static defaultProps={tryItOutResponse:null,produces:(0,ze.fromJS)([\"application/json\"]),displayRequestDuration:!1};onChangeProducesWrapper=s=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],s);onResponseContentTypeChange=({controlsAcceptHeader:s,value:o})=>{const{oas3Actions:i,path:a,method:u}=this.props;s&&i.setResponseContentType({value:o,path:a,method:u})};render(){let{responses:s,tryItOutResponse:o,getComponent:i,getConfigs:a,specSelectors:u,fn:_,producesValue:w,displayRequestDuration:x,specPath:C,path:j,method:L,oas3Selectors:B,oas3Actions:$}=this.props,V=function defaultStatusCode(s){let o=s.keySeq();return o.contains(jt)?jt:o.filter((s=>\"2\"===(s+\"\")[0])).sort().first()}(s);const U=i(\"contentType\"),z=i(\"liveResponse\"),Y=i(\"response\");let Z=this.props.produces&&this.props.produces.size?this.props.produces:responses_Responses.defaultProps.produces;const ee=u.isOAS3()?function getAcceptControllingResponse(s){if(!We().OrderedMap.isOrderedMap(s))return null;if(!s.size)return null;const o=s.find(((s,o)=>o.startsWith(\"2\")&&Object.keys(s.get(\"content\")||{}).length>0)),i=s.get(\"default\")||We().OrderedMap(),a=(i.get(\"content\")||We().OrderedMap()).keySeq().toJS().length?i:null;return o||a}(s):null,ie=createHtmlReadyId(`${L}${j}_responses`),ae=`${ie}_select`;return Re.createElement(\"div\",{className:\"responses-wrapper\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",null,\"Responses\"),u.isOAS3()?null:Re.createElement(\"label\",{htmlFor:ae},Re.createElement(\"span\",null,\"Response content type\"),Re.createElement(U,{value:w,ariaControls:ie,ariaLabel:\"Response content type\",className:\"execute-content-type\",contentTypes:Z,controlId:ae,onChange:this.onChangeProducesWrapper}))),Re.createElement(\"div\",{className:\"responses-inner\"},o?Re.createElement(\"div\",null,Re.createElement(z,{response:o,getComponent:i,getConfigs:a,specSelectors:u,path:this.props.path,method:this.props.method,displayRequestDuration:x}),Re.createElement(\"h4\",null,\"Responses\")):null,Re.createElement(\"table\",{\"aria-live\":\"polite\",className:\"responses-table\",id:ie,role:\"region\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"responses-header\"},Re.createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),Re.createElement(\"td\",{className:\"col_header response-col_description\"},\"Description\"),u.isOAS3()?Re.createElement(\"td\",{className:\"col col_header response-col_links\"},\"Links\"):null)),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,x])=>{let U=o&&o.get(\"status\")==s?\"response_current\":\"\";return Re.createElement(Y,{key:s,path:j,method:L,specPath:C.push(s),isDefault:V===s,fn:_,className:U,code:s,response:x,specSelectors:u,controlsAcceptHeader:x===ee,onContentTypeChange:this.onResponseContentTypeChange,contentType:w,getConfigs:a,activeExamplesKey:B.activeExamplesMember(j,L,\"responses\",s),oas3Actions:$,getComponent:i})})).toArray()))))}}function getKnownSyntaxHighlighterLanguage(s){const o=function canJsonParse(s){try{return!!JSON.parse(s)}catch(s){return null}}(s);return o?\"json\":null}class response_Response extends Re.Component{constructor(s,o){super(s,o),this.state={responseContentType:\"\"}}static defaultProps={response:(0,ze.fromJS)({}),onContentTypeChange:()=>{}};_onContentTypeChange=s=>{const{onContentTypeChange:o,controlsAcceptHeader:i}=this.props;this.setState({responseContentType:s}),o({value:s,controlsAcceptHeader:i})};getTargetExamplesKey=()=>{const{response:s,contentType:o,activeExamplesKey:i}=this.props,a=this.state.responseContentType||o,u=s.getIn([\"content\",a],(0,ze.Map)({})).get(\"examples\",null).keySeq().first();return i||u};render(){let{path:s,method:o,code:i,response:a,className:u,specPath:_,fn:w,getComponent:x,getConfigs:C,specSelectors:j,contentType:L,controlsAcceptHeader:B,oas3Actions:$}=this.props,{inferSchema:V,getSampleSchema:U}=w,z=j.isOAS3();const{showExtensions:Y}=C();let Z=Y?getExtensions(a):null,ee=a.get(\"headers\"),ie=a.get(\"links\");const ae=x(\"ResponseExtension\"),ce=x(\"headers\"),le=x(\"HighlightCode\",!0),pe=x(\"modelExample\"),de=x(\"Markdown\",!0),fe=x(\"operationLink\"),ye=x(\"contentType\"),be=x(\"ExamplesSelect\"),_e=x(\"Example\");var Se,we;const xe=this.state.responseContentType||L,Pe=a.getIn([\"content\",xe],(0,ze.Map)({})),Te=Pe.get(\"examples\",null);if(z){const s=Pe.get(\"schema\");Se=s?V(s.toJS()):null,we=s?(0,ze.List)([\"content\",this.state.responseContentType,\"schema\"]):_}else Se=a.get(\"schema\"),we=a.has(\"schema\")?_.push(\"schema\"):_;let $e,qe,We=!1,He={includeReadOnly:!0};if(z)if(qe=Pe.get(\"schema\")?.toJS(),ze.Map.isMap(Te)&&!Te.isEmpty()){const s=this.getTargetExamplesKey(),getMediaTypeExample=s=>ze.Map.isMap(s)?s.get(\"value\"):void 0;$e=getMediaTypeExample(Te.get(s,(0,ze.Map)({}))),void 0===$e&&($e=getMediaTypeExample(Te.values().next().value)),We=!0}else void 0!==Pe.get(\"example\")&&($e=Pe.get(\"example\"),We=!0);else{qe=Se,He={...He,includeWriteOnly:!0};const s=a.getIn([\"examples\",xe]);s&&($e=s,We=!0)}const Ye=((s,o)=>{if(null==s)return null;const i=getKnownSyntaxHighlighterLanguage(s)?\"json\":null;return Re.createElement(\"div\",null,Re.createElement(o,{className:\"example\",language:i},stringify(s)))})(U(qe,xe,He,We?$e:void 0),le);return Re.createElement(\"tr\",{className:\"response \"+(u||\"\"),\"data-code\":i},Re.createElement(\"td\",{className:\"response-col_status\"},i),Re.createElement(\"td\",{className:\"response-col_description\"},Re.createElement(\"div\",{className:\"response-col_description__inner\"},Re.createElement(de,{source:a.get(\"description\")})),Y&&Z.size?Z.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null,z&&a.get(\"content\")?Re.createElement(\"section\",{className:\"response-controls\"},Re.createElement(\"div\",{className:Jn()(\"response-control-media-type\",{\"response-control-media-type--accept-controller\":B})},Re.createElement(\"small\",{className:\"response-control-media-type__title\"},\"Media type\"),Re.createElement(ye,{value:this.state.responseContentType,contentTypes:a.get(\"content\")?a.get(\"content\").keySeq():(0,ze.Seq)(),onChange:this._onContentTypeChange,ariaLabel:\"Media Type\"}),B?Re.createElement(\"small\",{className:\"response-control-media-type__accept-message\"},\"Controls \",Re.createElement(\"code\",null,\"Accept\"),\" header.\"):null),ze.Map.isMap(Te)&&!Te.isEmpty()?Re.createElement(\"div\",{className:\"response-control-examples\"},Re.createElement(\"small\",{className:\"response-control-examples__title\"},\"Examples\"),Re.createElement(be,{examples:Te,currentExampleKey:this.getTargetExamplesKey(),onSelect:a=>$.setActiveExamplesMember({name:a,pathMethod:[s,o],contextType:\"responses\",contextName:i}),showLabels:!1})):null):null,Ye||Se?Re.createElement(pe,{specPath:we,getComponent:x,getConfigs:C,specSelectors:j,schema:fromJSOrdered(Se),example:Ye,includeReadOnly:!0}):null,z&&Te?Re.createElement(_e,{example:Te.get(this.getTargetExamplesKey(),(0,ze.Map)({})),getComponent:x,getConfigs:C,omitValue:!0}):null,ee?Re.createElement(ce,{headers:ee,getComponent:x}):null),z?Re.createElement(\"td\",{className:\"response-col_links\"},ie?ie.toSeq().entrySeq().map((([s,o])=>Re.createElement(fe,{key:s,name:s,link:o,getComponent:x}))):Re.createElement(\"i\",null,\"No links\")):null)}}const response_extension=({xKey:s,xVal:o})=>Re.createElement(\"div\",{className:\"response__extension\"},s,\": \",String(o));var YO=__webpack_require__(26657),XO=__webpack_require__.n(YO),QO=__webpack_require__(80218),ZO=__webpack_require__.n(QO);class ResponseBody extends Re.PureComponent{state={parsedContent:null};updateParsedContent=s=>{const{content:o}=this.props;if(s!==o)if(o&&o instanceof Blob){var i=new FileReader;i.onload=()=>{this.setState({parsedContent:i.result})},i.readAsText(o)}else this.setState({parsedContent:o.toString()})};componentDidMount(){this.updateParsedContent(null)}componentDidUpdate(s){this.updateParsedContent(s.content)}render(){let{content:s,contentType:o,url:i,headers:a={},getComponent:u}=this.props;const{parsedContent:_}=this.state,w=u(\"HighlightCode\",!0),x=\"response_\"+(new Date).getTime();let C,j;if(i=i||\"\",(/^application\\/octet-stream/i.test(o)||a[\"Content-Disposition\"]&&/attachment/i.test(a[\"Content-Disposition\"])||a[\"content-disposition\"]&&/attachment/i.test(a[\"content-disposition\"])||a[\"Content-Description\"]&&/File Transfer/i.test(a[\"Content-Description\"])||a[\"content-description\"]&&/File Transfer/i.test(a[\"content-description\"]))&&(s.size>0||s.length>0))if(\"Blob\"in window){let u=o||\"text/html\",_=s instanceof Blob?s:new Blob([s],{type:u}),w=window.URL.createObjectURL(_),x=[u,i.substr(i.lastIndexOf(\"/\")+1),w].join(\":\"),C=a[\"content-disposition\"]||a[\"Content-Disposition\"];if(void 0!==C){let s=function extractFileNameFromContentDispositionHeader(s){let o;if([/filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,/filename\\*=[^']+'\\w*'([^;]+);?/i,/filename=\"([^;]*);?\"/i,/filename=([^;]*);?/i].some((i=>(o=i.exec(s),null!==o))),null!==o&&o.length>1)try{return decodeURIComponent(o[1])}catch(s){console.error(s)}return null}(C);null!==s&&(x=s)}j=lt.navigator&&lt.navigator.msSaveOrOpenBlob?Re.createElement(\"div\",null,Re.createElement(\"a\",{href:w,onClick:()=>lt.navigator.msSaveOrOpenBlob(_,x)},\"Download file\")):Re.createElement(\"div\",null,Re.createElement(\"a\",{href:w,download:x},\"Download file\"))}else j=Re.createElement(\"pre\",{className:\"microlight\"},\"Download headers detected but your browser does not support downloading binary via XHR (Blob).\");else if(/json/i.test(o)){let o=null;getKnownSyntaxHighlighterLanguage(s)&&(o=\"json\");try{C=JSON.stringify(JSON.parse(s),null,\"  \")}catch(o){C=\"can't parse JSON.  Raw result:\\n\\n\"+s}j=Re.createElement(w,{language:o,downloadable:!0,fileName:`${x}.json`,canCopy:!0},C)}else/xml/i.test(o)?(C=XO()(s,{textNodesOnSameLine:!0,indentor:\"  \"}),j=Re.createElement(w,{downloadable:!0,fileName:`${x}.xml`,canCopy:!0},C)):j=\"text/html\"===ZO()(o)||/text\\/plain/.test(o)?Re.createElement(w,{downloadable:!0,fileName:`${x}.html`,canCopy:!0},s):\"text/csv\"===ZO()(o)||/text\\/csv/.test(o)?Re.createElement(w,{downloadable:!0,fileName:`${x}.csv`,canCopy:!0},s):/^image\\//i.test(o)?o.includes(\"svg\")?Re.createElement(\"div\",null,\" \",s,\" \"):Re.createElement(\"img\",{src:window.URL.createObjectURL(s)}):/^audio\\//i.test(o)?Re.createElement(\"pre\",{className:\"microlight\"},Re.createElement(\"audio\",{controls:!0,key:i},Re.createElement(\"source\",{src:i,type:o}))):\"string\"==typeof s?Re.createElement(w,{downloadable:!0,fileName:`${x}.txt`,canCopy:!0},s):s.size>0?_?Re.createElement(\"div\",null,Re.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; displaying content as text.\"),Re.createElement(w,{downloadable:!0,fileName:`${x}.txt`,canCopy:!0},_)):Re.createElement(\"p\",{className:\"i\"},\"Unrecognized response type; unable to display.\"):null;return j?Re.createElement(\"div\",null,Re.createElement(\"h5\",null,\"Response body\"),j):null}}class Parameters extends Re.Component{constructor(s){super(s),this.state={callbackVisible:!1,parametersVisible:!0}}static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]};onChange=(s,o,i)=>{let{specActions:{changeParamByIdentity:a},onChangeKey:u}=this.props;a(u,s,o,i)};onChangeConsumesWrapper=s=>{let{specActions:{changeConsumesValue:o},onChangeKey:i}=this.props;o(i,s)};toggleTab=s=>\"parameters\"===s?this.setState({parametersVisible:!0,callbackVisible:!1}):\"callbacks\"===s?this.setState({callbackVisible:!0,parametersVisible:!1}):void 0;onChangeMediaType=({value:s,pathMethod:o})=>{let{specActions:i,oas3Selectors:a,oas3Actions:u}=this.props;const _=a.hasUserEditedBody(...o),w=a.shouldRetainRequestBodyValue(...o);u.setRequestContentType({value:s,pathMethod:o}),u.initRequestBodyValidateError({pathMethod:o}),_||(w||u.setRequestBodyValue({value:void 0,pathMethod:o}),i.clearResponse(...o),i.clearRequest(...o),i.clearValidateParams(o))};render(){let{onTryoutClick:s,onResetClick:o,parameters:i,allowTryItOut:a,tryItOutEnabled:u,specPath:_,fn:w,getComponent:x,getConfigs:C,specSelectors:j,specActions:L,pathMethod:B,oas3Actions:$,oas3Selectors:V,operation:U}=this.props;const z=x(\"parameterRow\"),Y=x(\"TryItOutButton\"),Z=x(\"contentType\"),ee=x(\"Callbacks\",!0),ie=x(\"RequestBody\",!0),ae=u&&a,ce=j.isOAS3(),le=`${createHtmlReadyId(`${B[1]}${B[0]}_requests`)}_select`,pe=U.get(\"requestBody\"),de=Object.values(i.reduce(((s,o)=>{if(ze.Map.isMap(o)){const i=o.get(\"in\");s[i]??=[],s[i].push(o)}return s}),{})).reduce(((s,o)=>s.concat(o)),[]);return Re.createElement(\"div\",{className:\"opblock-section\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},ce?Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"div\",{onClick:()=>this.toggleTab(\"parameters\"),className:`tab-item ${this.state.parametersVisible&&\"active\"}`},Re.createElement(\"h4\",{className:\"opblock-title\"},Re.createElement(\"span\",null,\"Parameters\"))),U.get(\"callbacks\")?Re.createElement(\"div\",{onClick:()=>this.toggleTab(\"callbacks\"),className:`tab-item ${this.state.callbackVisible&&\"active\"}`},Re.createElement(\"h4\",{className:\"opblock-title\"},Re.createElement(\"span\",null,\"Callbacks\"))):null):Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"h4\",{className:\"opblock-title\"},\"Parameters\")),a?Re.createElement(Y,{isOAS3:j.isOAS3(),hasUserEditedBody:V.hasUserEditedBody(...B),enabled:u,onCancelClick:this.props.onCancelClick,onTryoutClick:s,onResetClick:()=>o(B)}):null),this.state.parametersVisible?Re.createElement(\"div\",{className:\"parameters-container\"},de.length?Re.createElement(\"div\",{className:\"table-container\"},Re.createElement(\"table\",{className:\"parameters\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",null,Re.createElement(\"th\",{className:\"col_header parameters-col_name\"},\"Name\"),Re.createElement(\"th\",{className:\"col_header parameters-col_description\"},\"Description\"))),Re.createElement(\"tbody\",null,de.map(((s,o)=>Re.createElement(z,{fn:w,specPath:_.push(o.toString()),getComponent:x,getConfigs:C,rawParam:s,param:j.parameterWithMetaByIdentity(B,s),key:`${s.get(\"in\")}.${s.get(\"name\")}`,onChange:this.onChange,onChangeConsumes:this.onChangeConsumesWrapper,specSelectors:j,specActions:L,oas3Actions:$,oas3Selectors:V,pathMethod:B,isExecute:ae})))))):Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"p\",null,\"No parameters\"))):null,this.state.callbackVisible?Re.createElement(\"div\",{className:\"callbacks-container opblock-description-wrapper\"},Re.createElement(ee,{callbacks:(0,ze.Map)(U.get(\"callbacks\")),specPath:_.slice(0,-1).push(\"callbacks\")})):null,ce&&pe&&this.state.parametersVisible&&Re.createElement(\"div\",{className:\"opblock-section opblock-section-request-body\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"h4\",{className:`opblock-title parameter__name ${pe.get(\"required\")&&\"required\"}`},\"Request body\"),Re.createElement(\"label\",{id:le},Re.createElement(Z,{value:V.requestContentType(...B),contentTypes:pe.get(\"content\",(0,ze.List)()).keySeq(),onChange:s=>{this.onChangeMediaType({value:s,pathMethod:B})},className:\"body-param-content-type\",ariaLabel:\"Request content type\",controlId:le}))),Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(ie,{setRetainRequestBodyValueFlag:s=>$.setRetainRequestBodyValueFlag({value:s,pathMethod:B}),userHasEditedBody:V.hasUserEditedBody(...B),specPath:_.slice(0,-1).push(\"requestBody\"),requestBody:pe,requestBodyValue:V.requestBodyValue(...B),requestBodyInclusionSetting:V.requestBodyInclusionSetting(...B),requestBodyErrors:V.requestBodyErrors(...B),isExecute:ae,getConfigs:C,activeExamplesKey:V.activeExamplesMember(...B,\"requestBody\",\"requestBody\"),updateActiveExamplesKey:s=>{this.props.oas3Actions.setActiveExamplesMember({name:s,pathMethod:this.props.pathMethod,contextType:\"requestBody\",contextName:\"requestBody\"})},onChange:(s,o)=>{if(o){const i=V.requestBodyValue(...B),a=ze.Map.isMap(i)?i:(0,ze.Map)();return $.setRequestBodyValue({pathMethod:B,value:a.setIn(o,s)})}$.setRequestBodyValue({value:s,pathMethod:B})},onChangeIncludeEmpty:(s,o)=>{$.setRequestBodyInclusion({pathMethod:B,value:o,name:s})},contentType:V.requestContentType(...B)}))))}}const parameter_extension=({xKey:s,xVal:o})=>Re.createElement(\"div\",{className:\"parameter__extension\"},s,\": \",String(o)),eC={onChange:()=>{},isIncludedOptions:{}};class ParameterIncludeEmpty extends Re.Component{static defaultProps=eC;componentDidMount(){const{isIncludedOptions:s,onChange:o}=this.props,{shouldDispatchInit:i,defaultValue:a}=s;i&&o(a)}onCheckboxChange=s=>{const{onChange:o}=this.props;o(s.target.checked)};render(){let{isIncluded:s,isDisabled:o}=this.props;return Re.createElement(\"div\",null,Re.createElement(\"label\",{htmlFor:\"include_empty_value\",className:Jn()(\"parameter__empty_value_toggle\",{disabled:o})},Re.createElement(\"input\",{id:\"include_empty_value\",type:\"checkbox\",disabled:o,checked:!o&&s,onChange:this.onCheckboxChange}),\"Send empty value\"))}}class ParameterRow extends Re.Component{constructor(s,o){super(s,o),this.setDefaultValue()}UNSAFE_componentWillReceiveProps(s){let o,{specSelectors:i,pathMethod:a,rawParam:u}=s,_=i.isOAS3(),w=i.parameterWithMetaByIdentity(a,u)||new ze.Map;if(w=w.isEmpty()?u:w,_){let{schema:s}=getParameterSchema(w,{isOAS3:_});o=s?s.get(\"enum\"):void 0}else o=w?w.get(\"enum\"):void 0;let x,C=w?w.get(\"value\"):void 0;void 0!==C?x=C:u.get(\"required\")&&o&&o.size&&(x=o.first()),void 0!==x&&x!==C&&this.onChangeWrapper(function numberToString(s){return\"number\"==typeof s?s.toString():s}(x)),this.setDefaultValue()}onChangeWrapper=(s,o=!1)=>{let i,{onChange:a,rawParam:u}=this.props;return i=\"\"===s||s&&0===s.size?null:s,a(u,i,o)};_onExampleSelect=s=>{this.props.oas3Actions.setActiveExamplesMember({name:s,pathMethod:this.props.pathMethod,contextType:\"parameters\",contextName:this.getParamKey()})};onChangeIncludeEmpty=s=>{let{specActions:o,param:i,pathMethod:a}=this.props;const u=i.get(\"name\"),_=i.get(\"in\");return o.updateEmptyParamInclusion(a,u,_,s)};setDefaultValue=()=>{let{specSelectors:s,pathMethod:o,rawParam:i,oas3Selectors:a,fn:u}=this.props;const _=s.parameterWithMetaByIdentity(o,i)||(0,ze.Map)();let{schema:w}=getParameterSchema(_,{isOAS3:s.isOAS3()});const x=_.get(\"content\",(0,ze.Map)()).keySeq().first(),C=w?u.getSampleSchema(w.toJS(),x,{includeWriteOnly:!0}):null;if(_&&void 0===_.get(\"value\")&&\"body\"!==_.get(\"in\")){let i;if(s.isSwagger2())i=void 0!==_.get(\"x-example\")?_.get(\"x-example\"):void 0!==_.getIn([\"schema\",\"example\"])?_.getIn([\"schema\",\"example\"]):w&&w.getIn([\"default\"]);else if(s.isOAS3()){w=this.composeJsonSchema(w);const s=a.activeExamplesMember(...o,\"parameters\",this.getParamKey());i=void 0!==_.getIn([\"examples\",s,\"value\"])?_.getIn([\"examples\",s,\"value\"]):void 0!==_.getIn([\"content\",x,\"example\"])?_.getIn([\"content\",x,\"example\"]):void 0!==_.get(\"example\")?_.get(\"example\"):void 0!==(w&&w.get(\"example\"))?w&&w.get(\"example\"):void 0!==(w&&w.get(\"default\"))?w&&w.get(\"default\"):_.get(\"default\")}void 0===i||ze.List.isList(i)||(i=stringify(i));const j=u.jsonSchema202012.foldType(immutableToJS(w?.get(\"type\"))),L=u.jsonSchema202012.foldType(immutableToJS(w?.getIn([\"items\",\"type\"])));void 0!==i?this.onChangeWrapper(i):\"object\"===j&&C&&!_.get(\"examples\")?this.onChangeWrapper(ze.List.isList(C)?C:stringify(C)):\"array\"===j&&\"object\"===L&&C&&!_.get(\"examples\")&&this.onChangeWrapper(ze.List.isList(C)?C:(0,ze.List)(JSON.parse(C)))}};getParamKey(){const{param:s}=this.props;return s?`${s.get(\"name\")}-${s.get(\"in\")}`:null}composeJsonSchema(s){const{fn:o}=this.props,i=s.get(\"oneOf\")?.get(0)?.toJS(),a=s.get(\"anyOf\")?.get(0)?.toJS();return(0,ze.fromJS)(o.mergeJsonSchema(s.toJS(),i??a??{}))}render(){let{param:s,rawParam:o,getComponent:i,getConfigs:a,isExecute:u,fn:_,onChangeConsumes:w,specSelectors:x,pathMethod:C,specPath:j,oas3Selectors:L}=this.props,B=x.isOAS3();const{showExtensions:$,showCommonExtensions:V}=a();if(s||(s=o),!o)return null;const U=i(\"JsonSchemaForm\"),z=i(\"ParamBody\");let Y=s.get(\"in\"),Z=\"body\"!==Y?null:Re.createElement(z,{getComponent:i,getConfigs:a,fn:_,param:s,consumes:x.consumesOptionsFor(C),consumesValue:x.contentTypeValues(C).get(\"requestContentType\"),onChange:this.onChangeWrapper,onChangeConsumes:w,isExecute:u,specSelectors:x,pathMethod:C});const ee=i(\"modelExample\"),ie=i(\"Markdown\",!0),ae=i(\"ParameterExt\"),ce=i(\"ParameterIncludeEmpty\"),le=i(\"ExamplesSelectValueRetainer\"),pe=i(\"Example\");let{schema:de}=getParameterSchema(s,{isOAS3:B}),fe=x.parameterWithMetaByIdentity(C,o)||(0,ze.Map)();B&&(de=this.composeJsonSchema(de));let ye=de?de.get(\"format\"):null,be=\"formData\"===Y,_e=\"FormData\"in lt,Se=s.get(\"required\");const we=_.jsonSchema202012.getType(immutableToJS(de)),xe=_.jsonSchema202012.foldType(immutableToJS(de?.get(\"type\"))),Pe=_.jsonSchema202012.foldType(immutableToJS(de?.getIn([\"items\",\"type\"]))),Te=!Z&&\"object\"===xe,$e=!Z&&\"object\"===Pe;let qe,We,He,Ye,Xe=fe?fe.get(\"value\"):\"\",Qe=V?getCommonExtensions(de):null,et=$?getExtensions(s):null,tt=!1;void 0!==s&&de&&(qe=de.get(\"items\")),void 0!==qe?(We=qe.get(\"enum\"),He=qe.get(\"default\")):de&&(We=de.get(\"enum\")),We&&We.size&&We.size>0&&(tt=!0),void 0!==s&&(de&&(He=de.get(\"default\")),void 0===He&&(He=s.get(\"default\")),Ye=s.get(\"example\"),void 0===Ye&&(Ye=s.get(\"x-example\")));const rt=Z?null:Re.createElement(U,{fn:_,getComponent:i,value:Xe,required:Se,disabled:!u,description:s.get(\"name\"),onChange:this.onChangeWrapper,errors:fe.get(\"errors\"),schema:de});return Re.createElement(\"tr\",{\"data-param-name\":s.get(\"name\"),\"data-param-in\":s.get(\"in\")},Re.createElement(\"td\",{className:\"parameters-col_name\"},Re.createElement(\"div\",{className:Se?\"parameter__name required\":\"parameter__name\"},s.get(\"name\"),Se?Re.createElement(\"span\",null,\" *\"):null),Re.createElement(\"div\",{className:\"parameter__type\"},we,ye&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",ye,\")\")),Re.createElement(\"div\",{className:\"parameter__deprecated\"},B&&s.get(\"deprecated\")?\"deprecated\":null),Re.createElement(\"div\",{className:\"parameter__in\"},\"(\",s.get(\"in\"),\")\")),Re.createElement(\"td\",{className:\"parameters-col_description\"},s.get(\"description\")?Re.createElement(ie,{source:s.get(\"description\")}):null,!Z&&u||!tt?null:Re.createElement(ie,{className:\"parameter__enum\",source:\"<i>Available values</i> : \"+We.map((function(s){return s})).toArray().map(String).join(\", \")}),!Z&&u||void 0===He?null:Re.createElement(ie,{className:\"parameter__default\",source:\"<i>Default value</i> : \"+He}),!Z&&u||void 0===Ye?null:Re.createElement(ie,{source:\"<i>Example</i> : \"+Ye}),be&&!_e&&Re.createElement(\"div\",null,\"Error: your browser does not support FormData\"),B&&s.get(\"examples\")?Re.createElement(\"section\",{className:\"parameter-controls\"},Re.createElement(le,{examples:s.get(\"examples\"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:i,defaultToFirstExample:!0,currentKey:L.activeExamplesMember(...C,\"parameters\",this.getParamKey()),currentUserInputValue:Xe})):null,Te||$e?Re.createElement(ee,{getComponent:i,specPath:j.push(\"schema\"),getConfigs:a,isExecute:u,specSelectors:x,schema:de,example:rt}):rt,Z&&de?Re.createElement(ee,{getComponent:i,specPath:j.push(\"schema\"),getConfigs:a,isExecute:u,specSelectors:x,schema:de,example:Z,includeWriteOnly:!0}):null,!Z&&u&&s.get(\"allowEmptyValue\")?Re.createElement(ce,{onChange:this.onChangeIncludeEmpty,isIncluded:x.parameterInclusionSettingFor(C,s.get(\"name\"),s.get(\"in\")),isDisabled:!isEmptyValue(Xe)}):null,B&&s.get(\"examples\")?Re.createElement(pe,{example:s.getIn([\"examples\",L.activeExamplesMember(...C,\"parameters\",this.getParamKey())]),getComponent:i,getConfigs:a}):null,V&&Qe.size?Qe.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null,$&&et.size?et.entrySeq().map((([s,o])=>Re.createElement(ae,{key:`${s}-${o}`,xKey:s,xVal:o}))):null))}}class Execute extends Re.Component{handleValidateParameters=()=>{let{specSelectors:s,specActions:o,path:i,method:a}=this.props;return o.validateParams([i,a]),s.validateBeforeExecute([i,a])};handleValidateRequestBody=()=>{let{path:s,method:o,specSelectors:i,oas3Selectors:a,oas3Actions:u}=this.props,_={missingBodyValue:!1,missingRequiredKeys:[]};u.clearRequestBodyValidateError({path:s,method:o});let w=i.getOAS3RequiredRequestBodyContentType([s,o]),x=a.requestBodyValue(s,o),C=a.validateBeforeExecute([s,o]),j=a.requestContentType(s,o);if(!C)return _.missingBodyValue=!0,u.setRequestBodyValidateError({path:s,method:o,validationErrors:_}),!1;if(!w)return!0;let L=a.validateShallowRequired({oas3RequiredRequestBodyContentType:w,oas3RequestContentType:j,oas3RequestBodyValue:x});return!L||L.length<1||(L.forEach((s=>{_.missingRequiredKeys.push(s)})),u.setRequestBodyValidateError({path:s,method:o,validationErrors:_}),!1)};handleValidationResultPass=()=>{let{specActions:s,operation:o,path:i,method:a}=this.props;this.props.onExecute&&this.props.onExecute(),s.execute({operation:o,path:i,method:a})};handleValidationResultFail=()=>{let{specActions:s,path:o,method:i}=this.props;s.clearValidateParams([o,i]),setTimeout((()=>{s.validateParams([o,i])}),40)};handleValidationResult=s=>{s?this.handleValidationResultPass():this.handleValidationResultFail()};onClick=()=>{let s=this.handleValidateParameters(),o=this.handleValidateRequestBody(),i=s&&o;this.handleValidationResult(i)};onChangeProducesWrapper=s=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],s);render(){const{disabled:s}=this.props;return Re.createElement(\"button\",{className:\"btn execute opblock-control__btn\",onClick:this.onClick,disabled:s},\"Execute\")}}class headers_Headers extends Re.Component{render(){let{headers:s,getComponent:o}=this.props;const i=o(\"Property\"),a=o(\"Markdown\",!0);return s&&s.size?Re.createElement(\"div\",{className:\"headers-wrapper\"},Re.createElement(\"h4\",{className:\"headers__title\"},\"Headers:\"),Re.createElement(\"table\",{className:\"headers\"},Re.createElement(\"thead\",null,Re.createElement(\"tr\",{className:\"header-row\"},Re.createElement(\"th\",{className:\"header-col\"},\"Name\"),Re.createElement(\"th\",{className:\"header-col\"},\"Description\"),Re.createElement(\"th\",{className:\"header-col\"},\"Type\"))),Re.createElement(\"tbody\",null,s.entrySeq().map((([s,o])=>{if(!We().Map.isMap(o))return null;const u=o.get(\"description\"),_=o.getIn([\"schema\"])?o.getIn([\"schema\",\"type\"]):o.getIn([\"type\"]),w=o.getIn([\"schema\",\"example\"]);return Re.createElement(\"tr\",{key:s},Re.createElement(\"td\",{className:\"header-col\"},s),Re.createElement(\"td\",{className:\"header-col\"},u?Re.createElement(a,{source:u}):null),Re.createElement(\"td\",{className:\"header-col\"},_,\" \",w?Re.createElement(i,{propKey:\"Example\",propVal:w,propClass:\"header-example\"}):null))})).toArray()))):null}}class Errors extends Re.Component{render(){let{editorActions:s,errSelectors:o,layoutSelectors:i,layoutActions:a,getComponent:u}=this.props;const _=u(\"Collapse\");if(s&&s.jumpToLine)var w=s.jumpToLine;let x=o.allErrors().filter((s=>\"thrown\"===s.get(\"type\")||\"error\"===s.get(\"level\")));if(!x||x.count()<1)return null;let C=i.isShown([\"errorPane\"],!0),j=x.sortBy((s=>s.get(\"line\")));return Re.createElement(\"pre\",{className:\"errors-wrapper\"},Re.createElement(\"hgroup\",{className:\"error\"},Re.createElement(\"h4\",{className:\"errors__title\"},\"Errors\"),Re.createElement(\"button\",{className:\"btn errors__clear-btn\",onClick:()=>a.show([\"errorPane\"],!C)},C?\"Hide\":\"Show\")),Re.createElement(_,{isOpened:C,animated:!0},Re.createElement(\"div\",{className:\"errors\"},j.map(((s,o)=>{let i=s.get(\"type\");return\"thrown\"===i||\"auth\"===i?Re.createElement(ThrownErrorItem,{key:o,error:s.get(\"error\")||s,jumpToLine:w}):\"spec\"===i?Re.createElement(SpecErrorItem,{key:o,error:s,jumpToLine:w}):void 0})))))}}const ThrownErrorItem=({error:s,jumpToLine:o})=>{if(!s)return null;let i=s.get(\"line\");return Re.createElement(\"div\",{className:\"error-wrapper\"},s?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,s.get(\"source\")&&s.get(\"level\")?toTitleCase(s.get(\"source\"))+\" \"+s.get(\"level\"):\"\",s.get(\"path\")?Re.createElement(\"small\",null,\" at \",s.get(\"path\")):null),Re.createElement(\"span\",{className:\"message thrown\"},s.get(\"message\")),Re.createElement(\"div\",{className:\"error-line\"},i&&o?Re.createElement(\"a\",{onClick:o.bind(null,i)},\"Jump to line \",i):null)):null)},SpecErrorItem=({error:s,jumpToLine:o=null})=>{let i=null;return s.get(\"path\")?i=ze.List.isList(s.get(\"path\"))?Re.createElement(\"small\",null,\"at \",s.get(\"path\").join(\".\")):Re.createElement(\"small\",null,\"at \",s.get(\"path\")):s.get(\"line\")&&!o&&(i=Re.createElement(\"small\",null,\"on line \",s.get(\"line\"))),Re.createElement(\"div\",{className:\"error-wrapper\"},s?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,toTitleCase(s.get(\"source\"))+\" \"+s.get(\"level\"),\" \",i),Re.createElement(\"span\",{className:\"message\"},s.get(\"message\")),Re.createElement(\"div\",{className:\"error-line\"},o?Re.createElement(\"a\",{onClick:o.bind(null,s.get(\"line\"))},\"Jump to line \",s.get(\"line\")):null)):null)};function toTitleCase(s){return(s||\"\").split(\" \").map((s=>s[0].toUpperCase()+s.slice(1))).join(\" \")}const content_type_noop=()=>{};class ContentType extends Re.Component{static defaultProps={onChange:content_type_noop,value:null,contentTypes:(0,ze.fromJS)([\"application/json\"])};componentDidMount(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}UNSAFE_componentWillReceiveProps(s){s.contentTypes&&s.contentTypes.size&&(s.contentTypes.includes(s.value)||s.onChange(s.contentTypes.first()))}onChangeWrapper=s=>this.props.onChange(s.target.value);render(){let{ariaControls:s,ariaLabel:o,className:i,contentTypes:a,controlId:u,value:_}=this.props;return a&&a.size?Re.createElement(\"div\",{className:\"content-type-wrapper \"+(i||\"\")},Re.createElement(\"select\",{\"aria-controls\":s,\"aria-label\":o,className:\"content-type\",id:u,onChange:this.onChangeWrapper,value:_||\"\"},a.map((s=>Re.createElement(\"option\",{key:s,value:s},s))).toArray())):null}}function xclass(...s){return s.filter((s=>!!s)).join(\" \").trim()}class Container extends Re.Component{render(){let{fullscreen:s,full:o,...i}=this.props;if(s)return Re.createElement(\"section\",i);let a=\"swagger-container\"+(o?\"-full\":\"\");return Re.createElement(\"section\",Mn()({},i,{className:xclass(i.className,a)}))}}const tC={mobile:\"\",tablet:\"-tablet\",desktop:\"-desktop\",large:\"-hd\"};class Col extends Re.Component{render(){const{hide:s,keepContents:o,mobile:i,tablet:a,desktop:u,large:_,...w}=this.props;if(s&&!o)return Re.createElement(\"span\",null);let x=[];for(let s in tC){if(!Object.prototype.hasOwnProperty.call(tC,s))continue;let o=tC[s];if(s in this.props){let i=this.props[s];if(i<1){x.push(\"none\"+o);continue}x.push(\"block\"+o),x.push(\"col-\"+i+o)}}s&&x.push(\"hidden\");let C=xclass(w.className,...x);return Re.createElement(\"section\",Mn()({},w,{className:C}))}}class Row extends Re.Component{render(){return Re.createElement(\"div\",Mn()({},this.props,{className:xclass(this.props.className,\"wrapper\")}))}}class Button extends Re.Component{static defaultProps={className:\"\"};render(){return Re.createElement(\"button\",Mn()({},this.props,{className:xclass(this.props.className,\"button\")}))}}const TextArea=s=>Re.createElement(\"textarea\",s),Input=s=>Re.createElement(\"input\",s);class Select extends Re.Component{static defaultProps={multiple:!1,allowEmptyValue:!0};constructor(s,o){let i;super(s,o),i=s.value?s.value:s.multiple?[\"\"]:\"\",this.state={value:i}}onChange=s=>{let o,{onChange:i,multiple:a}=this.props,u=[].slice.call(s.target.options);o=a?u.filter((function(s){return s.selected})).map((function(s){return s.value})):s.target.value,this.setState({value:o}),i&&i(o)};UNSAFE_componentWillReceiveProps(s){s.value!==this.props.value&&this.setState({value:s.value})}render(){let{allowedValues:s,multiple:o,allowEmptyValue:i,disabled:a}=this.props,u=this.state.value?.toJS?.()||this.state.value;return Re.createElement(\"select\",{className:this.props.className,multiple:o,value:u,onChange:this.onChange,disabled:a},i?Re.createElement(\"option\",{value:\"\"},\"--\"):null,s.map((function(s,o){return Re.createElement(\"option\",{key:o,value:String(s)},String(s))})))}}class layout_utils_Link extends Re.Component{render(){return Re.createElement(\"a\",Mn()({},this.props,{rel:\"noopener noreferrer\",className:xclass(this.props.className,\"link\")}))}}const NoMargin=({children:s})=>Re.createElement(\"div\",{className:\"no-margin\"},\" \",s,\" \");class Collapse extends Re.Component{static defaultProps={isOpened:!1,animated:!1};renderNotAnimated(){return this.props.isOpened?Re.createElement(NoMargin,null,this.props.children):Re.createElement(\"noscript\",null)}render(){let{animated:s,isOpened:o,children:i}=this.props;return s?(i=o?i:null,Re.createElement(NoMargin,null,i)):this.renderNotAnimated()}}class Overview extends Re.Component{constructor(...s){super(...s),this.setTagShown=this._setTagShown.bind(this)}_setTagShown(s,o){this.props.layoutActions.show(s,o)}showOp(s,o){let{layoutActions:i}=this.props;i.show(s,o)}render(){let{specSelectors:s,layoutSelectors:o,layoutActions:i,getComponent:a}=this.props,u=s.taggedOperations();const _=a(\"Collapse\");return Re.createElement(\"div\",null,Re.createElement(\"h4\",{className:\"overview-title\"},\"Overview\"),u.map(((s,a)=>{let u=s.get(\"operations\"),w=[\"overview-tags\",a],x=o.isShown(w,!0);return Re.createElement(\"div\",{key:\"overview-\"+a},Re.createElement(\"h4\",{onClick:()=>i.show(w,!x),className:\"link overview-tag\"},\" \",x?\"-\":\"+\",a),Re.createElement(_,{isOpened:x,animated:!0},u.map((s=>{let{path:a,method:u,id:_}=s.toObject(),w=\"operations\",x=_,C=o.isShown([w,x]);return Re.createElement(OperationLink,{key:_,path:a,method:u,id:a+\"-\"+u,shown:C,showOpId:x,showOpIdPrefix:w,href:`#operation-${x}`,onClick:i.show})})).toArray()))})).toArray(),u.size<1&&Re.createElement(\"h3\",null,\" No operations defined in spec! \"))}}class OperationLink extends Re.Component{constructor(s){super(s),this.onClick=this._onClick.bind(this)}_onClick(){let{showOpId:s,showOpIdPrefix:o,onClick:i,shown:a}=this.props;i([o,s],!a)}render(){let{id:s,method:o,shown:i,href:a}=this.props;return Re.createElement(layout_utils_Link,{href:a,onClick:this.onClick,className:\"block opblock-link \"+(i?\"shown\":\"\")},Re.createElement(\"div\",null,Re.createElement(\"small\",{className:`bold-label-${o}`},o.toUpperCase()),Re.createElement(\"span\",{className:\"bold-label\"},s)))}}class InitializedInput extends Re.Component{componentDidMount(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}render(){const{value:s,defaultValue:o,initialValue:i,...a}=this.props;return Re.createElement(\"input\",Mn()({},a,{ref:s=>this.inputRef=s}))}}class InfoBasePath extends Re.Component{render(){const{host:s,basePath:o}=this.props;return Re.createElement(\"pre\",{className:\"base-url\"},\"[ Base URL: \",s,o,\" ]\")}}class InfoUrl extends Re.PureComponent{render(){const{url:s,getComponent:o}=this.props,i=o(\"Link\");return Re.createElement(i,{target:\"_blank\",href:sanitizeUrl(s)},Re.createElement(\"span\",{className:\"url\"},\" \",s))}}class info_Info extends Re.Component{render(){const{info:s,url:o,host:i,basePath:a,getComponent:u,externalDocs:_,selectedServer:w,url:x}=this.props,C=s.get(\"version\"),j=s.get(\"description\"),L=s.get(\"title\"),B=safeBuildUrl(s.get(\"termsOfService\"),x,{selectedServer:w}),$=s.get(\"contact\"),V=s.get(\"license\"),U=safeBuildUrl(_&&_.get(\"url\"),x,{selectedServer:w}),z=_&&_.get(\"description\"),Y=u(\"Markdown\",!0),Z=u(\"Link\"),ee=u(\"VersionStamp\"),ie=u(\"OpenAPIVersion\"),ae=u(\"InfoUrl\"),ce=u(\"InfoBasePath\"),le=u(\"License\"),pe=u(\"Contact\");return Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"hgroup\",{className:\"main\"},Re.createElement(\"h2\",{className:\"title\"},L,Re.createElement(\"span\",null,C&&Re.createElement(ee,{version:C}),Re.createElement(ie,{oasVersion:\"2.0\"}))),i||a?Re.createElement(ce,{host:i,basePath:a}):null,o&&Re.createElement(ae,{getComponent:u,url:o})),Re.createElement(\"div\",{className:\"description\"},Re.createElement(Y,{source:j})),B&&Re.createElement(\"div\",{className:\"info__tos\"},Re.createElement(Z,{target:\"_blank\",href:sanitizeUrl(B)},\"Terms of service\")),$?.size>0&&Re.createElement(pe,{getComponent:u,data:$,selectedServer:w,url:o}),V?.size>0&&Re.createElement(le,{getComponent:u,license:V,selectedServer:w,url:o}),U?Re.createElement(Z,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(U)},z||U):null)}}const rC=info_Info;class InfoContainer extends Re.Component{render(){const{specSelectors:s,getComponent:o,oas3Selectors:i}=this.props,a=s.info(),u=s.url(),_=s.basePath(),w=s.host(),x=s.externalDocs(),C=i.selectedServer(),j=o(\"info\");return Re.createElement(\"div\",null,a&&a.count()?Re.createElement(j,{info:a,url:u,host:w,basePath:_,externalDocs:x,getComponent:o,selectedServer:C}):null)}}class contact_Contact extends Re.Component{render(){const{data:s,getComponent:o,selectedServer:i,url:a}=this.props,u=s.get(\"name\",\"the developer\"),_=safeBuildUrl(s.get(\"url\"),a,{selectedServer:i}),w=s.get(\"email\"),x=o(\"Link\");return Re.createElement(\"div\",{className:\"info__contact\"},_&&Re.createElement(\"div\",null,Re.createElement(x,{href:sanitizeUrl(_),target:\"_blank\"},u,\" - Website\")),w&&Re.createElement(x,{href:sanitizeUrl(`mailto:${w}`)},_?`Send email to ${u}`:`Contact ${u}`))}}const nC=contact_Contact;class license_License extends Re.Component{render(){const{license:s,getComponent:o,selectedServer:i,url:a}=this.props,u=s.get(\"name\",\"License\"),_=safeBuildUrl(s.get(\"url\"),a,{selectedServer:i}),w=o(\"Link\");return Re.createElement(\"div\",{className:\"info__license\"},_?Re.createElement(\"div\",{className:\"info__license__url\"},Re.createElement(w,{target:\"_blank\",href:sanitizeUrl(_)},u)):Re.createElement(\"span\",null,u))}}const sC=license_License;class JumpToPath extends Re.Component{render(){return null}}class CopyToClipboardBtn extends Re.Component{render(){let{getComponent:s}=this.props;const o=s(\"CopyIcon\");return Re.createElement(\"div\",{className:\"view-line-link copy-to-clipboard\",title:\"Copy to clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:this.props.textToCopy},Re.createElement(o,null)))}}class Footer extends Re.Component{render(){return Re.createElement(\"div\",{className:\"footer\"})}}class FilterContainer extends Re.Component{onFilterChange=s=>{const{target:{value:o}}=s;this.props.layoutActions.updateFilter(o)};render(){const{specSelectors:s,layoutSelectors:o,getComponent:i}=this.props,a=i(\"Col\"),u=\"loading\"===s.loadingStatus(),_=\"failed\"===s.loadingStatus(),w=o.currentFilter(),x=[\"operation-filter-input\"];return _&&x.push(\"failed\"),u&&x.push(\"loading\"),Re.createElement(\"div\",null,!1===w?null:Re.createElement(\"div\",{className:\"filter-container\"},Re.createElement(a,{className:\"filter wrapper\",mobile:12},Re.createElement(\"input\",{className:x.join(\" \"),placeholder:\"Filter by tag\",type:\"text\",onChange:this.onFilterChange,value:\"string\"==typeof w?w:\"\",disabled:u}))))}}const oC=Function.prototype;class ParamBody extends Re.PureComponent{static defaultProp={consumes:(0,ze.fromJS)([\"application/json\"]),param:(0,ze.fromJS)({}),onChange:oC,onChangeConsumes:oC};constructor(s,o){super(s,o),this.state={isEditBox:!1,value:\"\"}}componentDidMount(){this.updateValues.call(this,this.props)}UNSAFE_componentWillReceiveProps(s){this.updateValues.call(this,s)}updateValues=s=>{let{param:o,isExecute:i,consumesValue:a=\"\"}=s,u=/xml/i.test(a),_=/json/i.test(a),w=u?o.get(\"value_xml\"):o.get(\"value\");if(void 0!==w){let s=!w&&_?\"{}\":w;this.setState({value:s}),this.onChange(s,{isXml:u,isEditBox:i})}else u?this.onChange(this.sample(\"xml\"),{isXml:u,isEditBox:i}):this.onChange(this.sample(),{isEditBox:i})};sample=s=>{let{param:o,fn:i}=this.props,a=i.inferSchema(o.toJS());return i.getSampleSchema(a,s,{includeWriteOnly:!0})};onChange=(s,{isEditBox:o,isXml:i})=>{this.setState({value:s,isEditBox:o}),this._onChange(s,i)};_onChange=(s,o)=>{(this.props.onChange||oC)(s,o)};handleOnChange=s=>{const{consumesValue:o}=this.props,i=/xml/i.test(o),a=s.target.value;this.onChange(a,{isXml:i,isEditBox:this.state.isEditBox})};toggleIsEditBox=()=>this.setState((s=>({isEditBox:!s.isEditBox})));render(){let{onChangeConsumes:s,param:o,isExecute:i,specSelectors:a,pathMethod:u,getComponent:_}=this.props;const w=_(\"Button\"),x=_(\"TextArea\"),C=_(\"HighlightCode\",!0),j=_(\"contentType\");let L=(a?a.parameterWithMetaByIdentity(u,o):o).get(\"errors\",(0,ze.List)()),B=a.contentTypeValues(u).get(\"requestContentType\"),$=this.props.consumes&&this.props.consumes.size?this.props.consumes:ParamBody.defaultProp.consumes,{value:V,isEditBox:U}=this.state,z=null;getKnownSyntaxHighlighterLanguage(V)&&(z=\"json\");const Y=`${createHtmlReadyId(`${u[1]}${u[0]}_parameters`)}_select`;return Re.createElement(\"div\",{className:\"body-param\",\"data-param-name\":o.get(\"name\"),\"data-param-in\":o.get(\"in\")},U&&i?Re.createElement(x,{className:\"body-param__text\"+(L.count()?\" invalid\":\"\"),value:V,onChange:this.handleOnChange}):V&&Re.createElement(C,{className:\"body-param__example\",language:z},V),Re.createElement(\"div\",{className:\"body-param-options\"},i?Re.createElement(\"div\",{className:\"body-param-edit\"},Re.createElement(w,{className:U?\"btn cancel body-param__example-edit\":\"btn edit body-param__example-edit\",onClick:this.toggleIsEditBox},U?\"Cancel\":\"Edit\")):null,Re.createElement(\"label\",{htmlFor:Y},Re.createElement(\"span\",null,\"Parameter content type\"),Re.createElement(j,{value:B,contentTypes:$,onChange:s,className:\"body-param-content-type\",ariaLabel:\"Parameter content type\",controlId:Y}))))}}class Curl extends Re.Component{render(){const{request:s,getComponent:o}=this.props,i=requestSnippetGenerator_curl_bash(s),a=o(\"SyntaxHighlighter\",!0);return Re.createElement(\"div\",{className:\"curl-command\"},Re.createElement(\"h4\",null,\"Curl\"),Re.createElement(\"div\",{className:\"copy-to-clipboard\"},Re.createElement(Hn.CopyToClipboard,{text:i},Re.createElement(\"button\",null))),Re.createElement(\"div\",null,Re.createElement(a,{language:\"bash\",className:\"curl microlight\",renderPlainText:({children:s,PlainTextViewer:o})=>Re.createElement(o,{className:\"curl\"},s)},i)))}}const property=({propKey:s,propVal:o,propClass:i})=>Re.createElement(\"span\",{className:i},Re.createElement(\"br\",null),s,\": \",String(o));class TryItOutButton extends Re.Component{static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1};render(){const{onTryoutClick:s,onCancelClick:o,onResetClick:i,enabled:a,hasUserEditedBody:u,isOAS3:_}=this.props,w=_&&u;return Re.createElement(\"div\",{className:w?\"try-out btn-group\":\"try-out\"},a?Re.createElement(\"button\",{className:\"btn try-out__btn cancel\",onClick:o},\"Cancel\"):Re.createElement(\"button\",{className:\"btn try-out__btn\",onClick:s},\"Try it out \"),w&&Re.createElement(\"button\",{className:\"btn try-out__btn reset\",onClick:i},\"Reset\"))}}class VersionPragmaFilter extends Re.PureComponent{static defaultProps={alsoShow:null,children:null,bypass:!1};render(){const{bypass:s,isSwagger2:o,isOAS3:i,alsoShow:a}=this.props;return s?Re.createElement(\"div\",null,this.props.children):o&&i?Re.createElement(\"div\",{className:\"version-pragma\"},a,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,Re.createElement(\"code\",null,\"swagger\"),\" and \",Re.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),Re.createElement(\"p\",null,\"Supported version fields are \",Re.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",Re.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\")))):o||i?Re.createElement(\"div\",null,this.props.children):Re.createElement(\"div\",{className:\"version-pragma\"},a,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),Re.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",Re.createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",Re.createElement(\"code\",null,\"openapi: 3.0.4\"),\").\"))))}}const version_stamp=({version:s})=>Re.createElement(\"small\",null,Re.createElement(\"pre\",{className:\"version\"},\" \",s,\" \")),openapi_version=({oasVersion:s})=>Re.createElement(\"small\",{className:\"version-stamp\"},Re.createElement(\"pre\",{className:\"version\"},\"OAS \",s)),deep_link=({enabled:s,path:o,text:i})=>Re.createElement(\"a\",{className:\"nostyle\",onClick:s?s=>s.preventDefault():null,href:s?`#/${o}`:null},Re.createElement(\"span\",null,i)),svg_assets=()=>Re.createElement(\"div\",null,Re.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",className:\"svg-assets\"},Re.createElement(\"defs\",null,Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"unlocked\"},Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"locked\"},Re.createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"close\"},Re.createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow\"},Re.createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-down\"},Re.createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-up\"},Re.createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"jump-to\"},Re.createElement(\"path\",{d:\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"expand\"},Re.createElement(\"path\",{d:\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"})),Re.createElement(\"symbol\",{viewBox:\"0 0 15 16\",id:\"copy\"},Re.createElement(\"g\",{transform:\"translate(2, -1)\"},Re.createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"}))))));var iC;function decodeEntity(s){return(iC=iC||document.createElement(\"textarea\")).innerHTML=\"&\"+s+\";\",iC.value}var aC=Object.prototype.hasOwnProperty;function index_browser_has(s,o){return!!s&&aC.call(s,o)}function index_browser_assign(s){return[].slice.call(arguments,1).forEach((function(o){if(o){if(\"object\"!=typeof o)throw new TypeError(o+\"must be object\");Object.keys(o).forEach((function(i){s[i]=o[i]}))}})),s}var cC=/\\\\([\\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;function unescapeMd(s){return s.indexOf(\"\\\\\")<0?s:s.replace(cC,\"$1\")}function isValidEntityCode(s){return!(s>=55296&&s<=57343)&&(!(s>=64976&&s<=65007)&&(!!(65535&~s&&65534!=(65535&s))&&(!(s>=0&&s<=8)&&(11!==s&&(!(s>=14&&s<=31)&&(!(s>=127&&s<=159)&&!(s>1114111)))))))}function fromCodePoint(s){if(s>65535){var o=55296+((s-=65536)>>10),i=56320+(1023&s);return String.fromCharCode(o,i)}return String.fromCharCode(s)}var lC=/&([a-z#][a-z0-9]{1,31});/gi,uC=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function replaceEntityPattern(s,o){var i=0,a=decodeEntity(o);return o!==a?a:35===o.charCodeAt(0)&&uC.test(o)&&isValidEntityCode(i=\"x\"===o[1].toLowerCase()?parseInt(o.slice(2),16):parseInt(o.slice(1),10))?fromCodePoint(i):s}function replaceEntities(s){return s.indexOf(\"&\")<0?s:s.replace(lC,replaceEntityPattern)}var pC=/[&<>\"]/,hC=/[&<>\"]/g,dC={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"};function replaceUnsafeChar(s){return dC[s]}function escapeHtml(s){return pC.test(s)?s.replace(hC,replaceUnsafeChar):s}var fC={};function nextToken(s,o){return++o>=s.length-2?o:\"paragraph_open\"===s[o].type&&s[o].tight&&\"inline\"===s[o+1].type&&0===s[o+1].content.length&&\"paragraph_close\"===s[o+2].type&&s[o+2].tight?nextToken(s,o+2):o}fC.blockquote_open=function(){return\"<blockquote>\\n\"},fC.blockquote_close=function(s,o){return\"</blockquote>\"+mC(s,o)},fC.code=function(s,o){return s[o].block?\"<pre><code>\"+escapeHtml(s[o].content)+\"</code></pre>\"+mC(s,o):\"<code>\"+escapeHtml(s[o].content)+\"</code>\"},fC.fence=function(s,o,i,a,u){var _,w,x=s[o],C=\"\",j=i.langPrefix;if(x.params){if(w=(_=x.params.split(/\\s+/g)).join(\" \"),index_browser_has(u.rules.fence_custom,_[0]))return u.rules.fence_custom[_[0]](s,o,i,a,u);C=' class=\"'+j+escapeHtml(replaceEntities(unescapeMd(w)))+'\"'}return\"<pre><code\"+C+\">\"+(i.highlight&&i.highlight.apply(i.highlight,[x.content].concat(_))||escapeHtml(x.content))+\"</code></pre>\"+mC(s,o)},fC.fence_custom={},fC.heading_open=function(s,o){return\"<h\"+s[o].hLevel+\">\"},fC.heading_close=function(s,o){return\"</h\"+s[o].hLevel+\">\\n\"},fC.hr=function(s,o,i){return(i.xhtmlOut?\"<hr />\":\"<hr>\")+mC(s,o)},fC.bullet_list_open=function(){return\"<ul>\\n\"},fC.bullet_list_close=function(s,o){return\"</ul>\"+mC(s,o)},fC.list_item_open=function(){return\"<li>\"},fC.list_item_close=function(){return\"</li>\\n\"},fC.ordered_list_open=function(s,o){var i=s[o];return\"<ol\"+(i.order>1?' start=\"'+i.order+'\"':\"\")+\">\\n\"},fC.ordered_list_close=function(s,o){return\"</ol>\"+mC(s,o)},fC.paragraph_open=function(s,o){return s[o].tight?\"\":\"<p>\"},fC.paragraph_close=function(s,o){var i=!(s[o].tight&&o&&\"inline\"===s[o-1].type&&!s[o-1].content);return(s[o].tight?\"\":\"</p>\")+(i?mC(s,o):\"\")},fC.link_open=function(s,o,i){var a=s[o].title?' title=\"'+escapeHtml(replaceEntities(s[o].title))+'\"':\"\",u=i.linkTarget?' target=\"'+i.linkTarget+'\"':\"\";return'<a href=\"'+escapeHtml(s[o].href)+'\"'+a+u+\">\"},fC.link_close=function(){return\"</a>\"},fC.image=function(s,o,i){var a=' src=\"'+escapeHtml(s[o].src)+'\"',u=s[o].title?' title=\"'+escapeHtml(replaceEntities(s[o].title))+'\"':\"\";return\"<img\"+a+(' alt=\"'+(s[o].alt?escapeHtml(replaceEntities(unescapeMd(s[o].alt))):\"\")+'\"')+u+(i.xhtmlOut?\" /\":\"\")+\">\"},fC.table_open=function(){return\"<table>\\n\"},fC.table_close=function(){return\"</table>\\n\"},fC.thead_open=function(){return\"<thead>\\n\"},fC.thead_close=function(){return\"</thead>\\n\"},fC.tbody_open=function(){return\"<tbody>\\n\"},fC.tbody_close=function(){return\"</tbody>\\n\"},fC.tr_open=function(){return\"<tr>\"},fC.tr_close=function(){return\"</tr>\\n\"},fC.th_open=function(s,o){var i=s[o];return\"<th\"+(i.align?' style=\"text-align:'+i.align+'\"':\"\")+\">\"},fC.th_close=function(){return\"</th>\"},fC.td_open=function(s,o){var i=s[o];return\"<td\"+(i.align?' style=\"text-align:'+i.align+'\"':\"\")+\">\"},fC.td_close=function(){return\"</td>\"},fC.strong_open=function(){return\"<strong>\"},fC.strong_close=function(){return\"</strong>\"},fC.em_open=function(){return\"<em>\"},fC.em_close=function(){return\"</em>\"},fC.del_open=function(){return\"<del>\"},fC.del_close=function(){return\"</del>\"},fC.ins_open=function(){return\"<ins>\"},fC.ins_close=function(){return\"</ins>\"},fC.mark_open=function(){return\"<mark>\"},fC.mark_close=function(){return\"</mark>\"},fC.sub=function(s,o){return\"<sub>\"+escapeHtml(s[o].content)+\"</sub>\"},fC.sup=function(s,o){return\"<sup>\"+escapeHtml(s[o].content)+\"</sup>\"},fC.hardbreak=function(s,o,i){return i.xhtmlOut?\"<br />\\n\":\"<br>\\n\"},fC.softbreak=function(s,o,i){return i.breaks?i.xhtmlOut?\"<br />\\n\":\"<br>\\n\":\"\\n\"},fC.text=function(s,o){return escapeHtml(s[o].content)},fC.htmlblock=function(s,o){return s[o].content},fC.htmltag=function(s,o){return s[o].content},fC.abbr_open=function(s,o){return'<abbr title=\"'+escapeHtml(replaceEntities(s[o].title))+'\">'},fC.abbr_close=function(){return\"</abbr>\"},fC.footnote_ref=function(s,o){var i=Number(s[o].id+1).toString(),a=\"fnref\"+i;return s[o].subId>0&&(a+=\":\"+s[o].subId),'<sup class=\"footnote-ref\"><a href=\"#fn'+i+'\" id=\"'+a+'\">['+i+\"]</a></sup>\"},fC.footnote_block_open=function(s,o,i){return(i.xhtmlOut?'<hr class=\"footnotes-sep\" />\\n':'<hr class=\"footnotes-sep\">\\n')+'<section class=\"footnotes\">\\n<ol class=\"footnotes-list\">\\n'},fC.footnote_block_close=function(){return\"</ol>\\n</section>\\n\"},fC.footnote_open=function(s,o){return'<li id=\"fn'+Number(s[o].id+1).toString()+'\"  class=\"footnote-item\">'},fC.footnote_close=function(){return\"</li>\\n\"},fC.footnote_anchor=function(s,o){var i=\"fnref\"+Number(s[o].id+1).toString();return s[o].subId>0&&(i+=\":\"+s[o].subId),' <a href=\"#'+i+'\" class=\"footnote-backref\">↩</a>'},fC.dl_open=function(){return\"<dl>\\n\"},fC.dt_open=function(){return\"<dt>\"},fC.dd_open=function(){return\"<dd>\"},fC.dl_close=function(){return\"</dl>\\n\"},fC.dt_close=function(){return\"</dt>\\n\"},fC.dd_close=function(){return\"</dd>\\n\"};var mC=fC.getBreak=function getBreak(s,o){return(o=nextToken(s,o))<s.length&&\"list_item_close\"===s[o].type?\"\":\"\\n\"};function Renderer(){this.rules=index_browser_assign({},fC),this.getBreak=fC.getBreak}function Ruler(){this.__rules__=[],this.__cache__=null}function StateInline(s,o,i,a,u){this.src=s,this.env=a,this.options=i,this.parser=o,this.tokens=u,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\"\",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent=\"\",this.labelUnmatchedScopes=0}function parseLinkLabel(s,o){var i,a,u,_=-1,w=s.posMax,x=s.pos,C=s.isInLabel;if(s.isInLabel)return-1;if(s.labelUnmatchedScopes)return s.labelUnmatchedScopes--,-1;for(s.pos=o+1,s.isInLabel=!0,i=1;s.pos<w;){if(91===(u=s.src.charCodeAt(s.pos)))i++;else if(93===u&&0===--i){a=!0;break}s.parser.skipToken(s)}return a?(_=s.pos,s.labelUnmatchedScopes=0):s.labelUnmatchedScopes=i-1,s.pos=x,s.isInLabel=C,_}function parseAbbr(s,o,i,a){var u,_,w,x,C,j;if(42!==s.charCodeAt(0))return-1;if(91!==s.charCodeAt(1))return-1;if(-1===s.indexOf(\"]:\"))return-1;if((_=parseLinkLabel(u=new StateInline(s,o,i,a,[]),1))<0||58!==s.charCodeAt(_+1))return-1;for(x=u.posMax,w=_+2;w<x&&10!==u.src.charCodeAt(w);w++);return C=s.slice(2,_),0===(j=s.slice(_+2,w).trim()).length?-1:(a.abbreviations||(a.abbreviations={}),void 0===a.abbreviations[\":\"+C]&&(a.abbreviations[\":\"+C]=j),w)}function normalizeLink(s){var o=replaceEntities(s);try{o=decodeURI(o)}catch(s){}return encodeURI(o)}function parseLinkDestination(s,o){var i,a,u,_=o,w=s.posMax;if(60===s.src.charCodeAt(o)){for(o++;o<w;){if(10===(i=s.src.charCodeAt(o)))return!1;if(62===i)return u=normalizeLink(unescapeMd(s.src.slice(_+1,o))),!!s.parser.validateLink(u)&&(s.pos=o+1,s.linkContent=u,!0);92===i&&o+1<w?o+=2:o++}return!1}for(a=0;o<w&&32!==(i=s.src.charCodeAt(o))&&!(i<32||127===i);)if(92===i&&o+1<w)o+=2;else{if(40===i&&++a>1)break;if(41===i&&--a<0)break;o++}return _!==o&&(u=unescapeMd(s.src.slice(_,o)),!!s.parser.validateLink(u)&&(s.linkContent=u,s.pos=o,!0))}function parseLinkTitle(s,o){var i,a=o,u=s.posMax,_=s.src.charCodeAt(o);if(34!==_&&39!==_&&40!==_)return!1;for(o++,40===_&&(_=41);o<u;){if((i=s.src.charCodeAt(o))===_)return s.pos=o+1,s.linkContent=unescapeMd(s.src.slice(a+1,o)),!0;92===i&&o+1<u?o+=2:o++}return!1}function normalizeReference(s){return s.trim().replace(/\\s+/g,\" \").toUpperCase()}function parseReference(s,o,i,a){var u,_,w,x,C,j,L,B,$;if(91!==s.charCodeAt(0))return-1;if(-1===s.indexOf(\"]:\"))return-1;if((_=parseLinkLabel(u=new StateInline(s,o,i,a,[]),0))<0||58!==s.charCodeAt(_+1))return-1;for(x=u.posMax,w=_+2;w<x&&(32===(C=u.src.charCodeAt(w))||10===C);w++);if(!parseLinkDestination(u,w))return-1;for(L=u.linkContent,j=w=u.pos,w+=1;w<x&&(32===(C=u.src.charCodeAt(w))||10===C);w++);for(w<x&&j!==w&&parseLinkTitle(u,w)?(B=u.linkContent,w=u.pos):(B=\"\",w=j);w<x&&32===u.src.charCodeAt(w);)w++;return w<x&&10!==u.src.charCodeAt(w)?-1:($=normalizeReference(s.slice(1,_)),void 0===a.references[$]&&(a.references[$]={title:B,href:L}),w)}Renderer.prototype.renderInline=function(s,o,i){for(var a=this.rules,u=s.length,_=0,w=\"\";u--;)w+=a[s[_].type](s,_++,o,i,this);return w},Renderer.prototype.render=function(s,o,i){for(var a=this.rules,u=s.length,_=-1,w=\"\";++_<u;)\"inline\"===s[_].type?w+=this.renderInline(s[_].children,o,i):w+=a[s[_].type](s,_,o,i,this);return w},Ruler.prototype.__find__=function(s){for(var o=this.__rules__.length,i=-1;o--;)if(this.__rules__[++i].name===s)return i;return-1},Ruler.prototype.__compile__=function(){var s=this,o=[\"\"];s.__rules__.forEach((function(s){s.enabled&&s.alt.forEach((function(s){o.indexOf(s)<0&&o.push(s)}))})),s.__cache__={},o.forEach((function(o){s.__cache__[o]=[],s.__rules__.forEach((function(i){i.enabled&&(o&&i.alt.indexOf(o)<0||s.__cache__[o].push(i.fn))}))}))},Ruler.prototype.at=function(s,o,i){var a=this.__find__(s),u=i||{};if(-1===a)throw new Error(\"Parser rule not found: \"+s);this.__rules__[a].fn=o,this.__rules__[a].alt=u.alt||[],this.__cache__=null},Ruler.prototype.before=function(s,o,i,a){var u=this.__find__(s),_=a||{};if(-1===u)throw new Error(\"Parser rule not found: \"+s);this.__rules__.splice(u,0,{name:o,enabled:!0,fn:i,alt:_.alt||[]}),this.__cache__=null},Ruler.prototype.after=function(s,o,i,a){var u=this.__find__(s),_=a||{};if(-1===u)throw new Error(\"Parser rule not found: \"+s);this.__rules__.splice(u+1,0,{name:o,enabled:!0,fn:i,alt:_.alt||[]}),this.__cache__=null},Ruler.prototype.push=function(s,o,i){var a=i||{};this.__rules__.push({name:s,enabled:!0,fn:o,alt:a.alt||[]}),this.__cache__=null},Ruler.prototype.enable=function(s,o){s=Array.isArray(s)?s:[s],o&&this.__rules__.forEach((function(s){s.enabled=!1})),s.forEach((function(s){var o=this.__find__(s);if(o<0)throw new Error(\"Rules manager: invalid rule name \"+s);this.__rules__[o].enabled=!0}),this),this.__cache__=null},Ruler.prototype.disable=function(s){(s=Array.isArray(s)?s:[s]).forEach((function(s){var o=this.__find__(s);if(o<0)throw new Error(\"Rules manager: invalid rule name \"+s);this.__rules__[o].enabled=!1}),this),this.__cache__=null},Ruler.prototype.getRules=function(s){return null===this.__cache__&&this.__compile__(),this.__cache__[s]||[]},StateInline.prototype.pushPending=function(){this.tokens.push({type:\"text\",content:this.pending,level:this.pendingLevel}),this.pending=\"\"},StateInline.prototype.push=function(s){this.pending&&this.pushPending(),this.tokens.push(s),this.pendingLevel=this.level},StateInline.prototype.cacheSet=function(s,o){for(var i=this.cache.length;i<=s;i++)this.cache.push(0);this.cache[s]=o},StateInline.prototype.cacheGet=function(s){return s<this.cache.length?this.cache[s]:0};var gC=\" \\n()[]'\\\".,!?-\";function regEscape(s){return s.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,\"\\\\$1\")}var yC=/\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/,vC=/\\((c|tm|r|p)\\)/gi,bC={c:\"©\",r:\"®\",p:\"§\",tm:\"™\"};function replaceScopedAbbr(s){return s.indexOf(\"(\")<0?s:s.replace(vC,(function(s,o){return bC[o.toLowerCase()]}))}var _C=/['\"]/,SC=/['\"]/g,EC=/[-\\s()\\[\\]]/;function isLetter(s,o){return!(o<0||o>=s.length)&&!EC.test(s[o])}function replaceAt(s,o,i){return s.substr(0,o)+i+s.substr(o+1)}var wC=[[\"block\",function block(s){s.inlineMode?s.tokens.push({type:\"inline\",content:s.src.replace(/\\n/g,\" \").trim(),level:0,lines:[0,1],children:[]}):s.block.parse(s.src,s.options,s.env,s.tokens)}],[\"abbr\",function abbr(s){var o,i,a,u,_=s.tokens;if(!s.inlineMode)for(o=1,i=_.length-1;o<i;o++)if(\"paragraph_open\"===_[o-1].type&&\"inline\"===_[o].type&&\"paragraph_close\"===_[o+1].type){for(a=_[o].content;a.length&&!((u=parseAbbr(a,s.inline,s.options,s.env))<0);)a=a.slice(u).trim();_[o].content=a,a.length||(_[o-1].tight=!0,_[o+1].tight=!0)}}],[\"references\",function references(s){var o,i,a,u,_=s.tokens;if(s.env.references=s.env.references||{},!s.inlineMode)for(o=1,i=_.length-1;o<i;o++)if(\"inline\"===_[o].type&&\"paragraph_open\"===_[o-1].type&&\"paragraph_close\"===_[o+1].type){for(a=_[o].content;a.length&&!((u=parseReference(a,s.inline,s.options,s.env))<0);)a=a.slice(u).trim();_[o].content=a,a.length||(_[o-1].tight=!0,_[o+1].tight=!0)}}],[\"inline\",function inline(s){var o,i,a,u=s.tokens;for(i=0,a=u.length;i<a;i++)\"inline\"===(o=u[i]).type&&s.inline.parse(o.content,s.options,s.env,o.children)}],[\"footnote_tail\",function footnote_block(s){var o,i,a,u,_,w,x,C,j,L=0,B=!1,$={};if(s.env.footnotes&&(s.tokens=s.tokens.filter((function(s){return\"footnote_reference_open\"===s.type?(B=!0,C=[],j=s.label,!1):\"footnote_reference_close\"===s.type?(B=!1,$[\":\"+j]=C,!1):(B&&C.push(s),!B)})),s.env.footnotes.list)){for(w=s.env.footnotes.list,s.tokens.push({type:\"footnote_block_open\",level:L++}),o=0,i=w.length;o<i;o++){for(s.tokens.push({type:\"footnote_open\",id:o,level:L++}),w[o].tokens?((x=[]).push({type:\"paragraph_open\",tight:!1,level:L++}),x.push({type:\"inline\",content:\"\",level:L,children:w[o].tokens}),x.push({type:\"paragraph_close\",tight:!1,level:--L})):w[o].label&&(x=$[\":\"+w[o].label]),s.tokens=s.tokens.concat(x),_=\"paragraph_close\"===s.tokens[s.tokens.length-1].type?s.tokens.pop():null,u=w[o].count>0?w[o].count:1,a=0;a<u;a++)s.tokens.push({type:\"footnote_anchor\",id:o,subId:a,level:L});_&&s.tokens.push(_),s.tokens.push({type:\"footnote_close\",level:--L})}s.tokens.push({type:\"footnote_block_close\",level:--L})}}],[\"abbr2\",function abbr2(s){var o,i,a,u,_,w,x,C,j,L,B,$,V=s.tokens;if(s.env.abbreviations)for(s.env.abbrRegExp||($=\"(^|[\"+gC.split(\"\").map(regEscape).join(\"\")+\"])(\"+Object.keys(s.env.abbreviations).map((function(s){return s.substr(1)})).sort((function(s,o){return o.length-s.length})).map(regEscape).join(\"|\")+\")($|[\"+gC.split(\"\").map(regEscape).join(\"\")+\"])\",s.env.abbrRegExp=new RegExp($,\"g\")),L=s.env.abbrRegExp,i=0,a=V.length;i<a;i++)if(\"inline\"===V[i].type)for(o=(u=V[i].children).length-1;o>=0;o--)if(\"text\"===(_=u[o]).type){for(C=0,w=_.content,L.lastIndex=0,j=_.level,x=[];B=L.exec(w);)L.lastIndex>C&&x.push({type:\"text\",content:w.slice(C,B.index+B[1].length),level:j}),x.push({type:\"abbr_open\",title:s.env.abbreviations[\":\"+B[2]],level:j++}),x.push({type:\"text\",content:B[2],level:j}),x.push({type:\"abbr_close\",level:--j}),C=L.lastIndex-B[3].length;x.length&&(C<w.length&&x.push({type:\"text\",content:w.slice(C),level:j}),V[i].children=u=[].concat(u.slice(0,o),x,u.slice(o+1)))}}],[\"replacements\",function index_browser_replace(s){var o,i,a,u,_;if(s.options.typographer)for(_=s.tokens.length-1;_>=0;_--)if(\"inline\"===s.tokens[_].type)for(o=(u=s.tokens[_].children).length-1;o>=0;o--)\"text\"===(i=u[o]).type&&(a=replaceScopedAbbr(a=i.content),yC.test(a)&&(a=a.replace(/\\+-/g,\"±\").replace(/\\.{2,}/g,\"…\").replace(/([?!])…/g,\"$1..\").replace(/([?!]){4,}/g,\"$1$1$1\").replace(/,{2,}/g,\",\").replace(/(^|[^-])---([^-]|$)/gm,\"$1—$2\").replace(/(^|\\s)--(\\s|$)/gm,\"$1–$2\").replace(/(^|[^-\\s])--([^-\\s]|$)/gm,\"$1–$2\")),i.content=a)}],[\"smartquotes\",function smartquotes(s){var o,i,a,u,_,w,x,C,j,L,B,$,V,U,z,Y,Z;if(s.options.typographer)for(Z=[],z=s.tokens.length-1;z>=0;z--)if(\"inline\"===s.tokens[z].type)for(Y=s.tokens[z].children,Z.length=0,o=0;o<Y.length;o++)if(\"text\"===(i=Y[o]).type&&!_C.test(i.text)){for(x=Y[o].level,V=Z.length-1;V>=0&&!(Z[V].level<=x);V--);Z.length=V+1,_=0,w=(a=i.content).length;e:for(;_<w&&(SC.lastIndex=_,u=SC.exec(a));)if(C=!isLetter(a,u.index-1),_=u.index+1,U=\"'\"===u[0],(j=!isLetter(a,_))||C){if(B=!j,$=!C)for(V=Z.length-1;V>=0&&(L=Z[V],!(Z[V].level<x));V--)if(L.single===U&&Z[V].level===x){L=Z[V],U?(Y[L.token].content=replaceAt(Y[L.token].content,L.pos,s.options.quotes[2]),i.content=replaceAt(i.content,u.index,s.options.quotes[3])):(Y[L.token].content=replaceAt(Y[L.token].content,L.pos,s.options.quotes[0]),i.content=replaceAt(i.content,u.index,s.options.quotes[1])),Z.length=V;continue e}B?Z.push({token:o,pos:u.index,single:U,level:x}):$&&U&&(i.content=replaceAt(i.content,u.index,\"’\"))}else U&&(i.content=replaceAt(i.content,u.index,\"’\"))}}]];function Core(){this.options={},this.ruler=new Ruler;for(var s=0;s<wC.length;s++)this.ruler.push(wC[s][0],wC[s][1])}function StateBlock(s,o,i,a,u){var _,w,x,C,j,L,B;for(this.src=s,this.parser=o,this.options=i,this.env=a,this.tokens=u,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType=\"root\",this.ddIndent=-1,this.level=0,this.result=\"\",L=0,B=!1,x=C=L=0,j=(w=this.src).length;C<j;C++){if(_=w.charCodeAt(C),!B){if(32===_){L++;continue}B=!0}10!==_&&C!==j-1||(10!==_&&C++,this.bMarks.push(x),this.eMarks.push(C),this.tShift.push(L),B=!1,L=0,x=C+1)}this.bMarks.push(w.length),this.eMarks.push(w.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function skipBulletListMarker(s,o){var i,a,u;return(a=s.bMarks[o]+s.tShift[o])>=(u=s.eMarks[o])||42!==(i=s.src.charCodeAt(a++))&&45!==i&&43!==i||a<u&&32!==s.src.charCodeAt(a)?-1:a}function skipOrderedListMarker(s,o){var i,a=s.bMarks[o]+s.tShift[o],u=s.eMarks[o];if(a+1>=u)return-1;if((i=s.src.charCodeAt(a++))<48||i>57)return-1;for(;;){if(a>=u)return-1;if(!((i=s.src.charCodeAt(a++))>=48&&i<=57)){if(41===i||46===i)break;return-1}}return a<u&&32!==s.src.charCodeAt(a)?-1:a}Core.prototype.process=function(s){var o,i,a;for(o=0,i=(a=this.ruler.getRules(\"\")).length;o<i;o++)a[o](s)},StateBlock.prototype.isEmpty=function isEmpty(s){return this.bMarks[s]+this.tShift[s]>=this.eMarks[s]},StateBlock.prototype.skipEmptyLines=function skipEmptyLines(s){for(var o=this.lineMax;s<o&&!(this.bMarks[s]+this.tShift[s]<this.eMarks[s]);s++);return s},StateBlock.prototype.skipSpaces=function skipSpaces(s){for(var o=this.src.length;s<o&&32===this.src.charCodeAt(s);s++);return s},StateBlock.prototype.skipChars=function skipChars(s,o){for(var i=this.src.length;s<i&&this.src.charCodeAt(s)===o;s++);return s},StateBlock.prototype.skipCharsBack=function skipCharsBack(s,o,i){if(s<=i)return s;for(;s>i;)if(o!==this.src.charCodeAt(--s))return s+1;return s},StateBlock.prototype.getLines=function getLines(s,o,i,a){var u,_,w,x,C,j=s;if(s>=o)return\"\";if(j+1===o)return _=this.bMarks[j]+Math.min(this.tShift[j],i),w=a?this.eMarks[j]+1:this.eMarks[j],this.src.slice(_,w);for(x=new Array(o-s),u=0;j<o;j++,u++)(C=this.tShift[j])>i&&(C=i),C<0&&(C=0),_=this.bMarks[j]+C,w=j+1<o||a?this.eMarks[j]+1:this.eMarks[j],x[u]=this.src.slice(_,w);return x.join(\"\")};var xC={};[\"article\",\"aside\",\"button\",\"blockquote\",\"body\",\"canvas\",\"caption\",\"col\",\"colgroup\",\"dd\",\"div\",\"dl\",\"dt\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"iframe\",\"li\",\"map\",\"object\",\"ol\",\"output\",\"p\",\"pre\",\"progress\",\"script\",\"section\",\"style\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"tr\",\"thead\",\"ul\",\"video\"].forEach((function(s){xC[s]=!0}));var kC=/^<([a-zA-Z]{1,15})[\\s\\/>]/,OC=/^<\\/([a-zA-Z]{1,15})[\\s>]/;function index_browser_getLine(s,o){var i=s.bMarks[o]+s.blkIndent,a=s.eMarks[o];return s.src.substr(i,a-i)}function skipMarker(s,o){var i,a,u=s.bMarks[o]+s.tShift[o],_=s.eMarks[o];return u>=_||126!==(a=s.src.charCodeAt(u++))&&58!==a||u===(i=s.skipSpaces(u))||i>=_?-1:i}var CC=[[\"code\",function code(s,o,i){var a,u;if(s.tShift[o]-s.blkIndent<4)return!1;for(u=a=o+1;a<i;)if(s.isEmpty(a))a++;else{if(!(s.tShift[a]-s.blkIndent>=4))break;u=++a}return s.line=a,s.tokens.push({type:\"code\",content:s.getLines(o,u,4+s.blkIndent,!0),block:!0,lines:[o,s.line],level:s.level}),!0}],[\"fences\",function fences(s,o,i,a){var u,_,w,x,C,j=!1,L=s.bMarks[o]+s.tShift[o],B=s.eMarks[o];if(L+3>B)return!1;if(126!==(u=s.src.charCodeAt(L))&&96!==u)return!1;if(C=L,(_=(L=s.skipChars(L,u))-C)<3)return!1;if((w=s.src.slice(L,B).trim()).indexOf(\"`\")>=0)return!1;if(a)return!0;for(x=o;!(++x>=i)&&!((L=C=s.bMarks[x]+s.tShift[x])<(B=s.eMarks[x])&&s.tShift[x]<s.blkIndent);)if(s.src.charCodeAt(L)===u&&!(s.tShift[x]-s.blkIndent>=4||(L=s.skipChars(L,u))-C<_||(L=s.skipSpaces(L))<B)){j=!0;break}return _=s.tShift[o],s.line=x+(j?1:0),s.tokens.push({type:\"fence\",params:w,content:s.getLines(o+1,x,_,!0),lines:[o,s.line],level:s.level}),!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"blockquote\",function blockquote(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z=s.bMarks[o]+s.tShift[o],Y=s.eMarks[o];if(z>Y)return!1;if(62!==s.src.charCodeAt(z++))return!1;if(s.level>=s.options.maxNesting)return!1;if(a)return!0;for(32===s.src.charCodeAt(z)&&z++,C=s.blkIndent,s.blkIndent=0,x=[s.bMarks[o]],s.bMarks[o]=z,_=(z=z<Y?s.skipSpaces(z):z)>=Y,w=[s.tShift[o]],s.tShift[o]=z-s.bMarks[o],B=s.parser.ruler.getRules(\"blockquote\"),u=o+1;u<i&&!((z=s.bMarks[u]+s.tShift[u])>=(Y=s.eMarks[u]));u++)if(62!==s.src.charCodeAt(z++)){if(_)break;for(U=!1,$=0,V=B.length;$<V;$++)if(B[$](s,u,i,!0)){U=!0;break}if(U)break;x.push(s.bMarks[u]),w.push(s.tShift[u]),s.tShift[u]=-1337}else 32===s.src.charCodeAt(z)&&z++,x.push(s.bMarks[u]),s.bMarks[u]=z,_=(z=z<Y?s.skipSpaces(z):z)>=Y,w.push(s.tShift[u]),s.tShift[u]=z-s.bMarks[u];for(j=s.parentType,s.parentType=\"blockquote\",s.tokens.push({type:\"blockquote_open\",lines:L=[o,0],level:s.level++}),s.parser.tokenize(s,o,u),s.tokens.push({type:\"blockquote_close\",level:--s.level}),s.parentType=j,L[1]=s.line,$=0;$<w.length;$++)s.bMarks[$+o]=x[$],s.tShift[$+o]=w[$];return s.blkIndent=C,!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"hr\",function hr(s,o,i,a){var u,_,w,x=s.bMarks[o],C=s.eMarks[o];if((x+=s.tShift[o])>C)return!1;if(42!==(u=s.src.charCodeAt(x++))&&45!==u&&95!==u)return!1;for(_=1;x<C;){if((w=s.src.charCodeAt(x++))!==u&&32!==w)return!1;w===u&&_++}return!(_<3)&&(a||(s.line=o+1,s.tokens.push({type:\"hr\",lines:[o,s.line],level:s.level})),!0)},[\"paragraph\",\"blockquote\",\"list\"]],[\"list\",function index_browser_list(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z,Y,Z,ee,ie,ae,ce,le,pe,de,fe=!0;if((B=skipOrderedListMarker(s,o))>=0)z=!0;else{if(!((B=skipBulletListMarker(s,o))>=0))return!1;z=!1}if(s.level>=s.options.maxNesting)return!1;if(U=s.src.charCodeAt(B-1),a)return!0;for(Z=s.tokens.length,z?(L=s.bMarks[o]+s.tShift[o],V=Number(s.src.substr(L,B-L-1)),s.tokens.push({type:\"ordered_list_open\",order:V,lines:ie=[o,0],level:s.level++})):s.tokens.push({type:\"bullet_list_open\",lines:ie=[o,0],level:s.level++}),u=o,ee=!1,ce=s.parser.ruler.getRules(\"list\");!(!(u<i)||(($=(Y=s.skipSpaces(B))>=s.eMarks[u]?1:Y-B)>4&&($=1),$<1&&($=1),_=B-s.bMarks[u]+$,s.tokens.push({type:\"list_item_open\",lines:ae=[o,0],level:s.level++}),x=s.blkIndent,C=s.tight,w=s.tShift[o],j=s.parentType,s.tShift[o]=Y-s.bMarks[o],s.blkIndent=_,s.tight=!0,s.parentType=\"list\",s.parser.tokenize(s,o,i,!0),s.tight&&!ee||(fe=!1),ee=s.line-o>1&&s.isEmpty(s.line-1),s.blkIndent=x,s.tShift[o]=w,s.tight=C,s.parentType=j,s.tokens.push({type:\"list_item_close\",level:--s.level}),u=o=s.line,ae[1]=u,Y=s.bMarks[o],u>=i)||s.isEmpty(u)||s.tShift[u]<s.blkIndent);){for(de=!1,le=0,pe=ce.length;le<pe;le++)if(ce[le](s,u,i,!0)){de=!0;break}if(de)break;if(z){if((B=skipOrderedListMarker(s,u))<0)break}else if((B=skipBulletListMarker(s,u))<0)break;if(U!==s.src.charCodeAt(B-1))break}return s.tokens.push({type:z?\"ordered_list_close\":\"bullet_list_close\",level:--s.level}),ie[1]=u,s.line=u,fe&&function markTightParagraphs(s,o){var i,a,u=s.level+2;for(i=o+2,a=s.tokens.length-2;i<a;i++)s.tokens[i].level===u&&\"paragraph_open\"===s.tokens[i].type&&(s.tokens[i+2].tight=!0,s.tokens[i].tight=!0,i+=2)}(s,Z),!0},[\"paragraph\",\"blockquote\"]],[\"footnote\",function footnote(s,o,i,a){var u,_,w,x,C,j=s.bMarks[o]+s.tShift[o],L=s.eMarks[o];if(j+4>L)return!1;if(91!==s.src.charCodeAt(j))return!1;if(94!==s.src.charCodeAt(j+1))return!1;if(s.level>=s.options.maxNesting)return!1;for(x=j+2;x<L;x++){if(32===s.src.charCodeAt(x))return!1;if(93===s.src.charCodeAt(x))break}return x!==j+2&&(!(x+1>=L||58!==s.src.charCodeAt(++x))&&(a||(x++,s.env.footnotes||(s.env.footnotes={}),s.env.footnotes.refs||(s.env.footnotes.refs={}),C=s.src.slice(j+2,x-2),s.env.footnotes.refs[\":\"+C]=-1,s.tokens.push({type:\"footnote_reference_open\",label:C,level:s.level++}),u=s.bMarks[o],_=s.tShift[o],w=s.parentType,s.tShift[o]=s.skipSpaces(x)-x,s.bMarks[o]=x,s.blkIndent+=4,s.parentType=\"footnote\",s.tShift[o]<s.blkIndent&&(s.tShift[o]+=s.blkIndent,s.bMarks[o]-=s.blkIndent),s.parser.tokenize(s,o,i,!0),s.parentType=w,s.blkIndent-=4,s.tShift[o]=_,s.bMarks[o]=u,s.tokens.push({type:\"footnote_reference_close\",level:--s.level})),!0))},[\"paragraph\"]],[\"heading\",function heading(s,o,i,a){var u,_,w,x=s.bMarks[o]+s.tShift[o],C=s.eMarks[o];if(x>=C)return!1;if(35!==(u=s.src.charCodeAt(x))||x>=C)return!1;for(_=1,u=s.src.charCodeAt(++x);35===u&&x<C&&_<=6;)_++,u=s.src.charCodeAt(++x);return!(_>6||x<C&&32!==u)&&(a||(C=s.skipCharsBack(C,32,x),(w=s.skipCharsBack(C,35,x))>x&&32===s.src.charCodeAt(w-1)&&(C=w),s.line=o+1,s.tokens.push({type:\"heading_open\",hLevel:_,lines:[o,s.line],level:s.level}),x<C&&s.tokens.push({type:\"inline\",content:s.src.slice(x,C).trim(),level:s.level+1,lines:[o,s.line],children:[]}),s.tokens.push({type:\"heading_close\",hLevel:_,level:s.level})),!0)},[\"paragraph\",\"blockquote\"]],[\"lheading\",function lheading(s,o,i){var a,u,_,w=o+1;return!(w>=i)&&(!(s.tShift[w]<s.blkIndent)&&(!(s.tShift[w]-s.blkIndent>3)&&(!((u=s.bMarks[w]+s.tShift[w])>=(_=s.eMarks[w]))&&((45===(a=s.src.charCodeAt(u))||61===a)&&(u=s.skipChars(u,a),!((u=s.skipSpaces(u))<_)&&(u=s.bMarks[o]+s.tShift[o],s.line=w+1,s.tokens.push({type:\"heading_open\",hLevel:61===a?1:2,lines:[o,s.line],level:s.level}),s.tokens.push({type:\"inline\",content:s.src.slice(u,s.eMarks[o]).trim(),level:s.level+1,lines:[o,s.line-1],children:[]}),s.tokens.push({type:\"heading_close\",hLevel:61===a?1:2,level:s.level}),!0))))))}],[\"htmlblock\",function htmlblock(s,o,i,a){var u,_,w,x=s.bMarks[o],C=s.eMarks[o],j=s.tShift[o];if(x+=j,!s.options.html)return!1;if(j>3||x+2>=C)return!1;if(60!==s.src.charCodeAt(x))return!1;if(33===(u=s.src.charCodeAt(x+1))||63===u){if(a)return!0}else{if(47!==u&&!function isLetter$1(s){var o=32|s;return o>=97&&o<=122}(u))return!1;if(47===u){if(!(_=s.src.slice(x,C).match(OC)))return!1}else if(!(_=s.src.slice(x,C).match(kC)))return!1;if(!0!==xC[_[1].toLowerCase()])return!1;if(a)return!0}for(w=o+1;w<s.lineMax&&!s.isEmpty(w);)w++;return s.line=w,s.tokens.push({type:\"htmlblock\",level:s.level,lines:[o,s.line],content:s.getLines(o,w,0,!0)}),!0},[\"paragraph\",\"blockquote\"]],[\"table\",function table(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U;if(o+2>i)return!1;if(C=o+1,s.tShift[C]<s.blkIndent)return!1;if((w=s.bMarks[C]+s.tShift[C])>=s.eMarks[C])return!1;if(124!==(u=s.src.charCodeAt(w))&&45!==u&&58!==u)return!1;if(_=index_browser_getLine(s,o+1),!/^[-:| ]+$/.test(_))return!1;if((j=_.split(\"|\"))<=2)return!1;for(B=[],x=0;x<j.length;x++){if(!($=j[x].trim())){if(0===x||x===j.length-1)continue;return!1}if(!/^:?-+:?$/.test($))return!1;58===$.charCodeAt($.length-1)?B.push(58===$.charCodeAt(0)?\"center\":\"right\"):58===$.charCodeAt(0)?B.push(\"left\"):B.push(\"\")}if(-1===(_=index_browser_getLine(s,o).trim()).indexOf(\"|\"))return!1;if(j=_.replace(/^\\||\\|$/g,\"\").split(\"|\"),B.length!==j.length)return!1;if(a)return!0;for(s.tokens.push({type:\"table_open\",lines:V=[o,0],level:s.level++}),s.tokens.push({type:\"thead_open\",lines:[o,o+1],level:s.level++}),s.tokens.push({type:\"tr_open\",lines:[o,o+1],level:s.level++}),x=0;x<j.length;x++)s.tokens.push({type:\"th_open\",align:B[x],lines:[o,o+1],level:s.level++}),s.tokens.push({type:\"inline\",content:j[x].trim(),lines:[o,o+1],level:s.level,children:[]}),s.tokens.push({type:\"th_close\",level:--s.level});for(s.tokens.push({type:\"tr_close\",level:--s.level}),s.tokens.push({type:\"thead_close\",level:--s.level}),s.tokens.push({type:\"tbody_open\",lines:U=[o+2,0],level:s.level++}),C=o+2;C<i&&!(s.tShift[C]<s.blkIndent)&&-1!==(_=index_browser_getLine(s,C).trim()).indexOf(\"|\");C++){for(j=_.replace(/^\\||\\|$/g,\"\").split(\"|\"),s.tokens.push({type:\"tr_open\",level:s.level++}),x=0;x<j.length;x++)s.tokens.push({type:\"td_open\",align:B[x],level:s.level++}),L=j[x].substring(124===j[x].charCodeAt(0)?1:0,124===j[x].charCodeAt(j[x].length-1)?j[x].length-1:j[x].length).trim(),s.tokens.push({type:\"inline\",content:L,level:s.level,children:[]}),s.tokens.push({type:\"td_close\",level:--s.level});s.tokens.push({type:\"tr_close\",level:--s.level})}return s.tokens.push({type:\"tbody_close\",level:--s.level}),s.tokens.push({type:\"table_close\",level:--s.level}),V[1]=U[1]=C,s.line=C,!0},[\"paragraph\"]],[\"deflist\",function deflist(s,o,i,a){var u,_,w,x,C,j,L,B,$,V,U,z,Y,Z;if(a)return!(s.ddIndent<0)&&skipMarker(s,o)>=0;if(L=o+1,s.isEmpty(L)&&++L>i)return!1;if(s.tShift[L]<s.blkIndent)return!1;if((u=skipMarker(s,L))<0)return!1;if(s.level>=s.options.maxNesting)return!1;j=s.tokens.length,s.tokens.push({type:\"dl_open\",lines:C=[o,0],level:s.level++}),w=o,_=L;e:for(;;){for(Z=!0,Y=!1,s.tokens.push({type:\"dt_open\",lines:[w,w],level:s.level++}),s.tokens.push({type:\"inline\",content:s.getLines(w,w+1,s.blkIndent,!1).trim(),level:s.level+1,lines:[w,w],children:[]}),s.tokens.push({type:\"dt_close\",level:--s.level});;){if(s.tokens.push({type:\"dd_open\",lines:x=[L,0],level:s.level++}),z=s.tight,$=s.ddIndent,B=s.blkIndent,U=s.tShift[_],V=s.parentType,s.blkIndent=s.ddIndent=s.tShift[_]+2,s.tShift[_]=u-s.bMarks[_],s.tight=!0,s.parentType=\"deflist\",s.parser.tokenize(s,_,i,!0),s.tight&&!Y||(Z=!1),Y=s.line-_>1&&s.isEmpty(s.line-1),s.tShift[_]=U,s.tight=z,s.parentType=V,s.blkIndent=B,s.ddIndent=$,s.tokens.push({type:\"dd_close\",level:--s.level}),x[1]=L=s.line,L>=i)break e;if(s.tShift[L]<s.blkIndent)break e;if((u=skipMarker(s,L))<0)break;_=L}if(L>=i)break;if(w=L,s.isEmpty(w))break;if(s.tShift[w]<s.blkIndent)break;if((_=w+1)>=i)break;if(s.isEmpty(_)&&_++,_>=i)break;if(s.tShift[_]<s.blkIndent)break;if((u=skipMarker(s,_))<0)break}return s.tokens.push({type:\"dl_close\",level:--s.level}),C[1]=L,s.line=L,Z&&function markTightParagraphs$1(s,o){var i,a,u=s.level+2;for(i=o+2,a=s.tokens.length-2;i<a;i++)s.tokens[i].level===u&&\"paragraph_open\"===s.tokens[i].type&&(s.tokens[i+2].tight=!0,s.tokens[i].tight=!0,i+=2)}(s,j),!0},[\"paragraph\"]],[\"paragraph\",function paragraph(s,o){var i,a,u,_,w,x,C=o+1;if(C<(i=s.lineMax)&&!s.isEmpty(C))for(x=s.parser.ruler.getRules(\"paragraph\");C<i&&!s.isEmpty(C);C++)if(!(s.tShift[C]-s.blkIndent>3)){for(u=!1,_=0,w=x.length;_<w;_++)if(x[_](s,C,i,!0)){u=!0;break}if(u)break}return a=s.getLines(o,C,s.blkIndent,!1).trim(),s.line=C,a.length&&(s.tokens.push({type:\"paragraph_open\",tight:!1,lines:[o,s.line],level:s.level}),s.tokens.push({type:\"inline\",content:a,level:s.level+1,lines:[o,s.line],children:[]}),s.tokens.push({type:\"paragraph_close\",tight:!1,level:s.level})),!0}]];function ParserBlock(){this.ruler=new Ruler;for(var s=0;s<CC.length;s++)this.ruler.push(CC[s][0],CC[s][1],{alt:(CC[s][2]||[]).slice()})}ParserBlock.prototype.tokenize=function(s,o,i){for(var a,u=this.ruler.getRules(\"\"),_=u.length,w=o,x=!1;w<i&&(s.line=w=s.skipEmptyLines(w),!(w>=i))&&!(s.tShift[w]<s.blkIndent);){for(a=0;a<_&&!u[a](s,w,i,!1);a++);if(s.tight=!x,s.isEmpty(s.line-1)&&(x=!0),(w=s.line)<i&&s.isEmpty(w)){if(x=!0,++w<i&&\"list\"===s.parentType&&s.isEmpty(w))break;s.line=w}}};var AC=/[\\n\\t]/g,jC=/\\r[\\n\\u0085]|[\\u2424\\u2028\\u0085]/g,IC=/\\u00a0/g;function isTerminatorChar(s){switch(s){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}ParserBlock.prototype.parse=function(s,o,i,a){var u,_=0,w=0;if(!s)return[];(s=(s=s.replace(IC,\" \")).replace(jC,\"\\n\")).indexOf(\"\\t\")>=0&&(s=s.replace(AC,(function(o,i){var a;return 10===s.charCodeAt(i)?(_=i+1,w=0,o):(a=\"    \".slice((i-_-w)%4),w=i-_+1,a)}))),u=new StateBlock(s,this,o,i,a),this.tokenize(u,u.line,u.lineMax)};for(var PC=[],TC=0;TC<256;TC++)PC.push(0);function isAlphaNum(s){return s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122}function scanDelims(s,o){var i,a,u,_=o,w=!0,x=!0,C=s.posMax,j=s.src.charCodeAt(o);for(i=o>0?s.src.charCodeAt(o-1):-1;_<C&&s.src.charCodeAt(_)===j;)_++;return _>=C&&(w=!1),(u=_-o)>=4?w=x=!1:(32!==(a=_<C?s.src.charCodeAt(_):-1)&&10!==a||(w=!1),32!==i&&10!==i||(x=!1),95===j&&(isAlphaNum(i)&&(w=!1),isAlphaNum(a)&&(x=!1))),{can_open:w,can_close:x,delims:u}}\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach((function(s){PC[s.charCodeAt(0)]=1}));var NC=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var MC=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var RC=[\"coap\",\"doi\",\"javascript\",\"aaa\",\"aaas\",\"about\",\"acap\",\"cap\",\"cid\",\"crid\",\"data\",\"dav\",\"dict\",\"dns\",\"file\",\"ftp\",\"geo\",\"go\",\"gopher\",\"h323\",\"http\",\"https\",\"iax\",\"icap\",\"im\",\"imap\",\"info\",\"ipp\",\"iris\",\"iris.beep\",\"iris.xpc\",\"iris.xpcs\",\"iris.lwz\",\"ldap\",\"mailto\",\"mid\",\"msrp\",\"msrps\",\"mtqp\",\"mupdate\",\"news\",\"nfs\",\"ni\",\"nih\",\"nntp\",\"opaquelocktoken\",\"pop\",\"pres\",\"rtsp\",\"service\",\"session\",\"shttp\",\"sieve\",\"sip\",\"sips\",\"sms\",\"snmp\",\"soap.beep\",\"soap.beeps\",\"tag\",\"tel\",\"telnet\",\"tftp\",\"thismessage\",\"tn3270\",\"tip\",\"tv\",\"urn\",\"vemmi\",\"ws\",\"wss\",\"xcon\",\"xcon-userid\",\"xmlrpc.beep\",\"xmlrpc.beeps\",\"xmpp\",\"z39.50r\",\"z39.50s\",\"adiumxtra\",\"afp\",\"afs\",\"aim\",\"apt\",\"attachment\",\"aw\",\"beshare\",\"bitcoin\",\"bolo\",\"callto\",\"chrome\",\"chrome-extension\",\"com-eventbrite-attendee\",\"content\",\"cvs\",\"dlna-playsingle\",\"dlna-playcontainer\",\"dtn\",\"dvb\",\"ed2k\",\"facetime\",\"feed\",\"finger\",\"fish\",\"gg\",\"git\",\"gizmoproject\",\"gtalk\",\"hcp\",\"icon\",\"ipn\",\"irc\",\"irc6\",\"ircs\",\"itms\",\"jar\",\"jms\",\"keyparc\",\"lastfm\",\"ldaps\",\"magnet\",\"maps\",\"market\",\"message\",\"mms\",\"ms-help\",\"msnim\",\"mumble\",\"mvn\",\"notes\",\"oid\",\"palm\",\"paparazzi\",\"platform\",\"proxy\",\"psyc\",\"query\",\"res\",\"resource\",\"rmi\",\"rsync\",\"rtmp\",\"secondlife\",\"sftp\",\"sgn\",\"skype\",\"smb\",\"soldat\",\"spotify\",\"ssh\",\"steam\",\"svn\",\"teamspeak\",\"things\",\"udp\",\"unreal\",\"ut2004\",\"ventrilo\",\"view-source\",\"webcal\",\"wtai\",\"wyciwyg\",\"xfire\",\"xri\",\"ymsgr\"],DC=/^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,LC=/^<([a-zA-Z.\\-]{1,25}):([^<>\\x00-\\x20]*)>/;function replace$1(s,o){return s=s.source,o=o||\"\",function self(i,a){return i?(a=a.source||a,s=s.replace(i,a),self):new RegExp(s,o)}}var FC=replace$1(/(?:unquoted|single_quoted|double_quoted)/)(\"unquoted\",/[^\"'=<>`\\x00-\\x20]+/)(\"single_quoted\",/'[^']*'/)(\"double_quoted\",/\"[^\"]*\"/)(),BC=replace$1(/(?:\\s+attr_name(?:\\s*=\\s*attr_value)?)/)(\"attr_name\",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)(\"attr_value\",FC)(),$C=replace$1(/<[A-Za-z][A-Za-z0-9]*attribute*\\s*\\/?>/)(\"attribute\",BC)(),qC=replace$1(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)(\"open_tag\",$C)(\"close_tag\",/<\\/[A-Za-z][A-Za-z0-9]*\\s*>/)(\"comment\",/<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/)(\"processing\",/<[?].*?[?]>/)(\"declaration\",/<![A-Z]+\\s+[^>]*>/)(\"cdata\",/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/)();var VC=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,UC=/^&([a-z][a-z0-9]{1,31});/i;var zC=[[\"text\",function index_browser_text(s,o){for(var i=s.pos;i<s.posMax&&!isTerminatorChar(s.src.charCodeAt(i));)i++;return i!==s.pos&&(o||(s.pending+=s.src.slice(s.pos,i)),s.pos=i,!0)}],[\"newline\",function newline(s,o){var i,a,u=s.pos;if(10!==s.src.charCodeAt(u))return!1;if(i=s.pending.length-1,a=s.posMax,!o)if(i>=0&&32===s.pending.charCodeAt(i))if(i>=1&&32===s.pending.charCodeAt(i-1)){for(var _=i-2;_>=0;_--)if(32!==s.pending.charCodeAt(_)){s.pending=s.pending.substring(0,_+1);break}s.push({type:\"hardbreak\",level:s.level})}else s.pending=s.pending.slice(0,-1),s.push({type:\"softbreak\",level:s.level});else s.push({type:\"softbreak\",level:s.level});for(u++;u<a&&32===s.src.charCodeAt(u);)u++;return s.pos=u,!0}],[\"escape\",function index_browser_escape(s,o){var i,a=s.pos,u=s.posMax;if(92!==s.src.charCodeAt(a))return!1;if(++a<u){if((i=s.src.charCodeAt(a))<256&&0!==PC[i])return o||(s.pending+=s.src[a]),s.pos+=2,!0;if(10===i){for(o||s.push({type:\"hardbreak\",level:s.level}),a++;a<u&&32===s.src.charCodeAt(a);)a++;return s.pos=a,!0}}return o||(s.pending+=\"\\\\\"),s.pos++,!0}],[\"backticks\",function backticks(s,o){var i,a,u,_,w,x=s.pos;if(96!==s.src.charCodeAt(x))return!1;for(i=x,x++,a=s.posMax;x<a&&96===s.src.charCodeAt(x);)x++;for(u=s.src.slice(i,x),_=w=x;-1!==(_=s.src.indexOf(\"`\",w));){for(w=_+1;w<a&&96===s.src.charCodeAt(w);)w++;if(w-_===u.length)return o||s.push({type:\"code\",content:s.src.slice(x,_).replace(/[ \\n]+/g,\" \").trim(),block:!1,level:s.level}),s.pos=w,!0}return o||(s.pending+=u),s.pos+=u.length,!0}],[\"del\",function del(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(126!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(126!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),126===_)return!1;if(126===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&126===s.src.charCodeAt(a);)a++;if(a>C+3)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(126===s.src.charCodeAt(s.pos)&&126===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),126!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&126!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"del_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"del_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"ins\",function ins(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(43!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(43!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),43===_)return!1;if(43===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&43===s.src.charCodeAt(a);)a++;if(a!==C+2)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(43===s.src.charCodeAt(s.pos)&&43===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),43!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&43!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"ins_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"ins_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"mark\",function mark(s,o){var i,a,u,_,w,x=s.posMax,C=s.pos;if(61!==s.src.charCodeAt(C))return!1;if(o)return!1;if(C+4>=x)return!1;if(61!==s.src.charCodeAt(C+1))return!1;if(s.level>=s.options.maxNesting)return!1;if(_=C>0?s.src.charCodeAt(C-1):-1,w=s.src.charCodeAt(C+2),61===_)return!1;if(61===w)return!1;if(32===w||10===w)return!1;for(a=C+2;a<x&&61===s.src.charCodeAt(a);)a++;if(a!==C+2)return s.pos+=a-C,o||(s.pending+=s.src.slice(C,a)),!0;for(s.pos=C+2,u=1;s.pos+1<x;){if(61===s.src.charCodeAt(s.pos)&&61===s.src.charCodeAt(s.pos+1)&&(_=s.src.charCodeAt(s.pos-1),61!==(w=s.pos+2<x?s.src.charCodeAt(s.pos+2):-1)&&61!==_&&(32!==_&&10!==_?u--:32!==w&&10!==w&&u++,u<=0))){i=!0;break}s.parser.skipToken(s)}return i?(s.posMax=s.pos,s.pos=C+2,o||(s.push({type:\"mark_open\",level:s.level++}),s.parser.tokenize(s),s.push({type:\"mark_close\",level:--s.level})),s.pos=s.posMax+2,s.posMax=x,!0):(s.pos=C,!1)}],[\"emphasis\",function emphasis(s,o){var i,a,u,_,w,x,C,j=s.posMax,L=s.pos,B=s.src.charCodeAt(L);if(95!==B&&42!==B)return!1;if(o)return!1;if(i=(C=scanDelims(s,L)).delims,!C.can_open)return s.pos+=i,o||(s.pending+=s.src.slice(L,s.pos)),!0;if(s.level>=s.options.maxNesting)return!1;for(s.pos=L+i,x=[i];s.pos<j;)if(s.src.charCodeAt(s.pos)!==B)s.parser.skipToken(s);else{if(a=(C=scanDelims(s,s.pos)).delims,C.can_close){for(_=x.pop(),w=a;_!==w;){if(w<_){x.push(_-w);break}if(w-=_,0===x.length)break;s.pos+=_,_=x.pop()}if(0===x.length){i=_,u=!0;break}s.pos+=a;continue}C.can_open&&x.push(a),s.pos+=a}return u?(s.posMax=s.pos,s.pos=L+i,o||(2!==i&&3!==i||s.push({type:\"strong_open\",level:s.level++}),1!==i&&3!==i||s.push({type:\"em_open\",level:s.level++}),s.parser.tokenize(s),1!==i&&3!==i||s.push({type:\"em_close\",level:--s.level}),2!==i&&3!==i||s.push({type:\"strong_close\",level:--s.level})),s.pos=s.posMax+i,s.posMax=j,!0):(s.pos=L,!1)}],[\"sub\",function sub(s,o){var i,a,u=s.posMax,_=s.pos;if(126!==s.src.charCodeAt(_))return!1;if(o)return!1;if(_+2>=u)return!1;if(s.level>=s.options.maxNesting)return!1;for(s.pos=_+1;s.pos<u;){if(126===s.src.charCodeAt(s.pos)){i=!0;break}s.parser.skipToken(s)}return i&&_+1!==s.pos?(a=s.src.slice(_+1,s.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(s.pos=_,!1):(s.posMax=s.pos,s.pos=_+1,o||s.push({type:\"sub\",level:s.level,content:a.replace(NC,\"$1\")}),s.pos=s.posMax+1,s.posMax=u,!0):(s.pos=_,!1)}],[\"sup\",function sup(s,o){var i,a,u=s.posMax,_=s.pos;if(94!==s.src.charCodeAt(_))return!1;if(o)return!1;if(_+2>=u)return!1;if(s.level>=s.options.maxNesting)return!1;for(s.pos=_+1;s.pos<u;){if(94===s.src.charCodeAt(s.pos)){i=!0;break}s.parser.skipToken(s)}return i&&_+1!==s.pos?(a=s.src.slice(_+1,s.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(s.pos=_,!1):(s.posMax=s.pos,s.pos=_+1,o||s.push({type:\"sup\",level:s.level,content:a.replace(MC,\"$1\")}),s.pos=s.posMax+1,s.posMax=u,!0):(s.pos=_,!1)}],[\"links\",function links(s,o){var i,a,u,_,w,x,C,j,L=!1,B=s.pos,$=s.posMax,V=s.pos,U=s.src.charCodeAt(V);if(33===U&&(L=!0,U=s.src.charCodeAt(++V)),91!==U)return!1;if(s.level>=s.options.maxNesting)return!1;if(i=V+1,(a=parseLinkLabel(s,V))<0)return!1;if((x=a+1)<$&&40===s.src.charCodeAt(x)){for(x++;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x>=$)return!1;for(V=x,parseLinkDestination(s,x)?(_=s.linkContent,x=s.pos):_=\"\",V=x;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x<$&&V!==x&&parseLinkTitle(s,x))for(w=s.linkContent,x=s.pos;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);else w=\"\";if(x>=$||41!==s.src.charCodeAt(x))return s.pos=B,!1;x++}else{if(s.linkLevel>0)return!1;for(;x<$&&(32===(j=s.src.charCodeAt(x))||10===j);x++);if(x<$&&91===s.src.charCodeAt(x)&&(V=x+1,(x=parseLinkLabel(s,x))>=0?u=s.src.slice(V,x++):x=V-1),u||(void 0===u&&(x=a+1),u=s.src.slice(i,a)),!(C=s.env.references[normalizeReference(u)]))return s.pos=B,!1;_=C.href,w=C.title}return o||(s.pos=i,s.posMax=a,L?s.push({type:\"image\",src:_,title:w,alt:s.src.substr(i,a-i),level:s.level}):(s.push({type:\"link_open\",href:_,title:w,level:s.level++}),s.linkLevel++,s.parser.tokenize(s),s.linkLevel--,s.push({type:\"link_close\",level:--s.level}))),s.pos=x,s.posMax=$,!0}],[\"footnote_inline\",function footnote_inline(s,o){var i,a,u,_,w=s.posMax,x=s.pos;return!(x+2>=w)&&(94===s.src.charCodeAt(x)&&(91===s.src.charCodeAt(x+1)&&(!(s.level>=s.options.maxNesting)&&(i=x+2,!((a=parseLinkLabel(s,x+1))<0)&&(o||(s.env.footnotes||(s.env.footnotes={}),s.env.footnotes.list||(s.env.footnotes.list=[]),u=s.env.footnotes.list.length,s.pos=i,s.posMax=a,s.push({type:\"footnote_ref\",id:u,level:s.level}),s.linkLevel++,_=s.tokens.length,s.parser.tokenize(s),s.env.footnotes.list[u]={tokens:s.tokens.splice(_)},s.linkLevel--),s.pos=a+1,s.posMax=w,!0)))))}],[\"footnote_ref\",function footnote_ref(s,o){var i,a,u,_,w=s.posMax,x=s.pos;if(x+3>w)return!1;if(!s.env.footnotes||!s.env.footnotes.refs)return!1;if(91!==s.src.charCodeAt(x))return!1;if(94!==s.src.charCodeAt(x+1))return!1;if(s.level>=s.options.maxNesting)return!1;for(a=x+2;a<w;a++){if(32===s.src.charCodeAt(a))return!1;if(10===s.src.charCodeAt(a))return!1;if(93===s.src.charCodeAt(a))break}return a!==x+2&&(!(a>=w)&&(a++,i=s.src.slice(x+2,a-1),void 0!==s.env.footnotes.refs[\":\"+i]&&(o||(s.env.footnotes.list||(s.env.footnotes.list=[]),s.env.footnotes.refs[\":\"+i]<0?(u=s.env.footnotes.list.length,s.env.footnotes.list[u]={label:i,count:0},s.env.footnotes.refs[\":\"+i]=u):u=s.env.footnotes.refs[\":\"+i],_=s.env.footnotes.list[u].count,s.env.footnotes.list[u].count++,s.push({type:\"footnote_ref\",id:u,subId:_,level:s.level})),s.pos=a,s.posMax=w,!0)))}],[\"autolink\",function autolink(s,o){var i,a,u,_,w,x=s.pos;return 60===s.src.charCodeAt(x)&&(!((i=s.src.slice(x)).indexOf(\">\")<0)&&((a=i.match(LC))?!(RC.indexOf(a[1].toLowerCase())<0)&&(w=normalizeLink(_=a[0].slice(1,-1)),!!s.parser.validateLink(_)&&(o||(s.push({type:\"link_open\",href:w,level:s.level}),s.push({type:\"text\",content:_,level:s.level+1}),s.push({type:\"link_close\",level:s.level})),s.pos+=a[0].length,!0)):!!(u=i.match(DC))&&(w=normalizeLink(\"mailto:\"+(_=u[0].slice(1,-1))),!!s.parser.validateLink(w)&&(o||(s.push({type:\"link_open\",href:w,level:s.level}),s.push({type:\"text\",content:_,level:s.level+1}),s.push({type:\"link_close\",level:s.level})),s.pos+=u[0].length,!0))))}],[\"htmltag\",function htmltag(s,o){var i,a,u,_=s.pos;return!!s.options.html&&(u=s.posMax,!(60!==s.src.charCodeAt(_)||_+2>=u)&&(!(33!==(i=s.src.charCodeAt(_+1))&&63!==i&&47!==i&&!function isLetter$2(s){var o=32|s;return o>=97&&o<=122}(i))&&(!!(a=s.src.slice(_).match(qC))&&(o||s.push({type:\"htmltag\",content:s.src.slice(_,_+a[0].length),level:s.level}),s.pos+=a[0].length,!0))))}],[\"entity\",function entity(s,o){var i,a,u=s.pos,_=s.posMax;if(38!==s.src.charCodeAt(u))return!1;if(u+1<_)if(35===s.src.charCodeAt(u+1)){if(a=s.src.slice(u).match(VC))return o||(i=\"x\"===a[1][0].toLowerCase()?parseInt(a[1].slice(1),16):parseInt(a[1],10),s.pending+=isValidEntityCode(i)?fromCodePoint(i):fromCodePoint(65533)),s.pos+=a[0].length,!0}else if(a=s.src.slice(u).match(UC)){var w=decodeEntity(a[1]);if(a[1]!==w)return o||(s.pending+=w),s.pos+=a[0].length,!0}return o||(s.pending+=\"&\"),s.pos++,!0}]];function ParserInline(){this.ruler=new Ruler;for(var s=0;s<zC.length;s++)this.ruler.push(zC[s][0],zC[s][1]);this.validateLink=validateLink}function validateLink(s){var o=s.trim().toLowerCase();return-1===(o=replaceEntities(o)).indexOf(\":\")||-1===[\"vbscript\",\"javascript\",\"file\",\"data\"].indexOf(o.split(\":\")[0])}ParserInline.prototype.skipToken=function(s){var o,i,a=this.ruler.getRules(\"\"),u=a.length,_=s.pos;if((i=s.cacheGet(_))>0)s.pos=i;else{for(o=0;o<u;o++)if(a[o](s,!0))return void s.cacheSet(_,s.pos);s.pos++,s.cacheSet(_,s.pos)}},ParserInline.prototype.tokenize=function(s){for(var o,i,a=this.ruler.getRules(\"\"),u=a.length,_=s.posMax;s.pos<_;){for(i=0;i<u&&!(o=a[i](s,!1));i++);if(o){if(s.pos>=_)break}else s.pending+=s.src[s.pos++]}s.pending&&s.pushPending()},ParserInline.prototype.parse=function(s,o,i,a){var u=new StateInline(s,this,o,i,a);this.tokenize(u)};var WC={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"replacements\",\"smartquotes\",\"references\",\"abbr2\",\"footnote_tail\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"footnote\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\",\"table\"]},inline:{rules:[\"autolink\",\"backticks\",\"del\",\"emphasis\",\"entity\",\"escape\",\"footnote_ref\",\"htmltag\",\"links\",\"newline\",\"text\"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"abbr2\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\"]},inline:{rules:[\"autolink\",\"backticks\",\"emphasis\",\"entity\",\"escape\",\"htmltag\",\"links\",\"newline\",\"text\"]}}}};function StateCore(s,o,i){this.src=o,this.env=i,this.options=s.options,this.tokens=[],this.inlineMode=!1,this.inline=s.inline,this.block=s.block,this.renderer=s.renderer,this.typographer=s.typographer}function Remarkable(s,o){\"string\"!=typeof s&&(o=s,s=\"default\"),o&&null!=o.linkify&&console.warn(\"linkify option is removed. Use linkify plugin instead:\\n\\nimport Remarkable from 'remarkable';\\nimport linkify from 'remarkable/linkify';\\nnew Remarkable().use(linkify)\\n\"),this.inline=new ParserInline,this.block=new ParserBlock,this.core=new Core,this.renderer=new Renderer,this.ruler=new Ruler,this.options={},this.configure(WC[s]),this.set(o||{})}Remarkable.prototype.set=function(s){index_browser_assign(this.options,s)},Remarkable.prototype.configure=function(s){var o=this;if(!s)throw new Error(\"Wrong `remarkable` preset, check name/content\");s.options&&o.set(s.options),s.components&&Object.keys(s.components).forEach((function(i){s.components[i].rules&&o[i].ruler.enable(s.components[i].rules,!0)}))},Remarkable.prototype.use=function(s,o){return s(this,o),this},Remarkable.prototype.parse=function(s,o){var i=new StateCore(this,s,o);return this.core.process(i),i.tokens},Remarkable.prototype.render=function(s,o){return o=o||{},this.renderer.render(this.parse(s,o),this.options,o)},Remarkable.prototype.parseInline=function(s,o){var i=new StateCore(this,s,o);return i.inlineMode=!0,this.core.process(i),i.tokens},Remarkable.prototype.renderInline=function(s,o){return o=o||{},this.renderer.render(this.parseInline(s,o),this.options,o)};function indexOf(s,o){if(Array.prototype.indexOf)return s.indexOf(o);for(var i=0,a=s.length;i<a;i++)if(s[i]===o)return i;return-1}function utils_remove(s,o){for(var i=s.length-1;i>=0;i--)!0===o(s[i])&&s.splice(i,1)}function throwUnhandledCaseError(s){throw new Error(\"Unhandled case for value: '\".concat(s,\"'\"))}var JC=function(){function HtmlTag(s){void 0===s&&(s={}),this.tagName=\"\",this.attrs={},this.innerHTML=\"\",this.whitespaceRegex=/\\s+/,this.tagName=s.tagName||\"\",this.attrs=s.attrs||{},this.innerHTML=s.innerHtml||s.innerHTML||\"\"}return HtmlTag.prototype.setTagName=function(s){return this.tagName=s,this},HtmlTag.prototype.getTagName=function(){return this.tagName||\"\"},HtmlTag.prototype.setAttr=function(s,o){return this.getAttrs()[s]=o,this},HtmlTag.prototype.getAttr=function(s){return this.getAttrs()[s]},HtmlTag.prototype.setAttrs=function(s){return Object.assign(this.getAttrs(),s),this},HtmlTag.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},HtmlTag.prototype.setClass=function(s){return this.setAttr(\"class\",s)},HtmlTag.prototype.addClass=function(s){for(var o,i=this.getClass(),a=this.whitespaceRegex,u=i?i.split(a):[],_=s.split(a);o=_.shift();)-1===indexOf(u,o)&&u.push(o);return this.getAttrs().class=u.join(\" \"),this},HtmlTag.prototype.removeClass=function(s){for(var o,i=this.getClass(),a=this.whitespaceRegex,u=i?i.split(a):[],_=s.split(a);u.length&&(o=_.shift());){var w=indexOf(u,o);-1!==w&&u.splice(w,1)}return this.getAttrs().class=u.join(\" \"),this},HtmlTag.prototype.getClass=function(){return this.getAttrs().class||\"\"},HtmlTag.prototype.hasClass=function(s){return-1!==(\" \"+this.getClass()+\" \").indexOf(\" \"+s+\" \")},HtmlTag.prototype.setInnerHTML=function(s){return this.innerHTML=s,this},HtmlTag.prototype.setInnerHtml=function(s){return this.setInnerHTML(s)},HtmlTag.prototype.getInnerHTML=function(){return this.innerHTML||\"\"},HtmlTag.prototype.getInnerHtml=function(){return this.getInnerHTML()},HtmlTag.prototype.toAnchorString=function(){var s=this.getTagName(),o=this.buildAttrsStr();return[\"<\",s,o=o?\" \"+o:\"\",\">\",this.getInnerHtml(),\"</\",s,\">\"].join(\"\")},HtmlTag.prototype.buildAttrsStr=function(){if(!this.attrs)return\"\";var s=this.getAttrs(),o=[];for(var i in s)s.hasOwnProperty(i)&&o.push(i+'=\"'+s[i]+'\"');return o.join(\" \")},HtmlTag}();var HC=function(){function AnchorTagBuilder(s){void 0===s&&(s={}),this.newWindow=!1,this.truncate={},this.className=\"\",this.newWindow=s.newWindow||!1,this.truncate=s.truncate||{},this.className=s.className||\"\"}return AnchorTagBuilder.prototype.build=function(s){return new JC({tagName:\"a\",attrs:this.createAttrs(s),innerHtml:this.processAnchorText(s.getAnchorText())})},AnchorTagBuilder.prototype.createAttrs=function(s){var o={href:s.getAnchorHref()},i=this.createCssClass(s);return i&&(o.class=i),this.newWindow&&(o.target=\"_blank\",o.rel=\"noopener noreferrer\"),this.truncate&&this.truncate.length&&this.truncate.length<s.getAnchorText().length&&(o.title=s.getAnchorHref()),o},AnchorTagBuilder.prototype.createCssClass=function(s){var o=this.className;if(o){for(var i=[o],a=s.getCssClassSuffixes(),u=0,_=a.length;u<_;u++)i.push(o+\"-\"+a[u]);return i.join(\" \")}return\"\"},AnchorTagBuilder.prototype.processAnchorText=function(s){return s=this.doTruncate(s)},AnchorTagBuilder.prototype.doTruncate=function(s){var o=this.truncate;if(!o||!o.length)return s;var i=o.length,a=o.location;return\"smart\"===a?function truncateSmart(s,o,i){var a,u;null==i?(i=\"&hellip;\",u=3,a=8):(u=i.length,a=i.length);var buildUrl=function(s){var o=\"\";return s.scheme&&s.host&&(o+=s.scheme+\"://\"),s.host&&(o+=s.host),s.path&&(o+=\"/\"+s.path),s.query&&(o+=\"?\"+s.query),s.fragment&&(o+=\"#\"+s.fragment),o},buildSegment=function(s,o){var a=o/2,u=Math.ceil(a),_=-1*Math.floor(a),w=\"\";return _<0&&(w=s.substr(_)),s.substr(0,u)+i+w};if(s.length<=o)return s;var _=o-u,w=function(s){var o={},i=s,a=i.match(/^([a-z]+):\\/\\//i);return a&&(o.scheme=a[1],i=i.substr(a[0].length)),(a=i.match(/^(.*?)(?=(\\?|#|\\/|$))/i))&&(o.host=a[1],i=i.substr(a[0].length)),(a=i.match(/^\\/(.*?)(?=(\\?|#|$))/i))&&(o.path=a[1],i=i.substr(a[0].length)),(a=i.match(/^\\?(.*?)(?=(#|$))/i))&&(o.query=a[1],i=i.substr(a[0].length)),(a=i.match(/^#(.*?)$/i))&&(o.fragment=a[1]),o}(s);if(w.query){var x=w.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);x&&(w.query=w.query.substr(0,x[1].length),s=buildUrl(w))}if(s.length<=o)return s;if(w.host&&(w.host=w.host.replace(/^www\\./,\"\"),s=buildUrl(w)),s.length<=o)return s;var C=\"\";if(w.host&&(C+=w.host),C.length>=_)return w.host.length==o?(w.host.substr(0,o-u)+i).substr(0,_+a):buildSegment(C,_).substr(0,_+a);var j=\"\";if(w.path&&(j+=\"/\"+w.path),w.query&&(j+=\"?\"+w.query),j){if((C+j).length>=_)return(C+j).length==o?(C+j).substr(0,o):(C+buildSegment(j,_-C.length)).substr(0,_+a);C+=j}if(w.fragment){var L=\"#\"+w.fragment;if((C+L).length>=_)return(C+L).length==o?(C+L).substr(0,o):(C+buildSegment(L,_-C.length)).substr(0,_+a);C+=L}if(w.scheme&&w.host){var B=w.scheme+\"://\";if((C+B).length<_)return(B+C).substr(0,o)}if(C.length<=o)return C;var $=\"\";return _>0&&($=C.substr(-1*Math.floor(_/2))),(C.substr(0,Math.ceil(_/2))+i+$).substr(0,_+a)}(s,i):\"middle\"===a?function truncateMiddle(s,o,i){if(s.length<=o)return s;var a,u;null==i?(i=\"&hellip;\",a=8,u=3):(a=i.length,u=i.length);var _=o-u,w=\"\";return _>0&&(w=s.substr(-1*Math.floor(_/2))),(s.substr(0,Math.ceil(_/2))+i+w).substr(0,_+a)}(s,i):function truncateEnd(s,o,i){return function ellipsis(s,o,i){var a;return s.length>o&&(null==i?(i=\"&hellip;\",a=3):a=i.length,s=s.substring(0,o-a)+i),s}(s,o,i)}(s,i)},AnchorTagBuilder}(),KC=function(){function Match(s){this.__jsduckDummyDocProp=null,this.matchedText=\"\",this.offset=0,this.tagBuilder=s.tagBuilder,this.matchedText=s.matchedText,this.offset=s.offset}return Match.prototype.getMatchedText=function(){return this.matchedText},Match.prototype.setOffset=function(s){this.offset=s},Match.prototype.getOffset=function(){return this.offset},Match.prototype.getCssClassSuffixes=function(){return[this.getType()]},Match.prototype.buildTag=function(){return this.tagBuilder.build(this)},Match}(),extendStatics=function(s,o){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,o){s.__proto__=o}||function(s,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(s[i]=o[i])},extendStatics(s,o)};function tslib_es6_extends(s,o){if(\"function\"!=typeof o&&null!==o)throw new TypeError(\"Class extends value \"+String(o)+\" is not a constructor or null\");function __(){this.constructor=s}extendStatics(s,o),s.prototype=null===o?Object.create(o):(__.prototype=o.prototype,new __)}var __assign=function(){return __assign=Object.assign||function __assign(s){for(var o,i=1,a=arguments.length;i<a;i++)for(var u in o=arguments[i])Object.prototype.hasOwnProperty.call(o,u)&&(s[u]=o[u]);return s},__assign.apply(this,arguments)};Object.create;Object.create;\"function\"==typeof SuppressedError&&SuppressedError;var GC,YC=function(s){function EmailMatch(o){var i=s.call(this,o)||this;return i.email=\"\",i.email=o.email,i}return tslib_es6_extends(EmailMatch,s),EmailMatch.prototype.getType=function(){return\"email\"},EmailMatch.prototype.getEmail=function(){return this.email},EmailMatch.prototype.getAnchorHref=function(){return\"mailto:\"+this.email},EmailMatch.prototype.getAnchorText=function(){return this.email},EmailMatch}(KC),XC=function(s){function HashtagMatch(o){var i=s.call(this,o)||this;return i.serviceName=\"\",i.hashtag=\"\",i.serviceName=o.serviceName,i.hashtag=o.hashtag,i}return tslib_es6_extends(HashtagMatch,s),HashtagMatch.prototype.getType=function(){return\"hashtag\"},HashtagMatch.prototype.getServiceName=function(){return this.serviceName},HashtagMatch.prototype.getHashtag=function(){return this.hashtag},HashtagMatch.prototype.getAnchorHref=function(){var s=this.serviceName,o=this.hashtag;switch(s){case\"twitter\":return\"https://twitter.com/hashtag/\"+o;case\"facebook\":return\"https://www.facebook.com/hashtag/\"+o;case\"instagram\":return\"https://instagram.com/explore/tags/\"+o;case\"tiktok\":return\"https://www.tiktok.com/tag/\"+o;default:throw new Error(\"Unknown service name to point hashtag to: \"+s)}},HashtagMatch.prototype.getAnchorText=function(){return\"#\"+this.hashtag},HashtagMatch}(KC),QC=function(s){function MentionMatch(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.mention=\"\",i.mention=o.mention,i.serviceName=o.serviceName,i}return tslib_es6_extends(MentionMatch,s),MentionMatch.prototype.getType=function(){return\"mention\"},MentionMatch.prototype.getMention=function(){return this.mention},MentionMatch.prototype.getServiceName=function(){return this.serviceName},MentionMatch.prototype.getAnchorHref=function(){switch(this.serviceName){case\"twitter\":return\"https://twitter.com/\"+this.mention;case\"instagram\":return\"https://instagram.com/\"+this.mention;case\"soundcloud\":return\"https://soundcloud.com/\"+this.mention;case\"tiktok\":return\"https://www.tiktok.com/@\"+this.mention;default:throw new Error(\"Unknown service name to point mention to: \"+this.serviceName)}},MentionMatch.prototype.getAnchorText=function(){return\"@\"+this.mention},MentionMatch.prototype.getCssClassSuffixes=function(){var o=s.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&o.push(i),o},MentionMatch}(KC),ZC=function(s){function PhoneMatch(o){var i=s.call(this,o)||this;return i.number=\"\",i.plusSign=!1,i.number=o.number,i.plusSign=o.plusSign,i}return tslib_es6_extends(PhoneMatch,s),PhoneMatch.prototype.getType=function(){return\"phone\"},PhoneMatch.prototype.getPhoneNumber=function(){return this.number},PhoneMatch.prototype.getNumber=function(){return this.getPhoneNumber()},PhoneMatch.prototype.getAnchorHref=function(){return\"tel:\"+(this.plusSign?\"+\":\"\")+this.number},PhoneMatch.prototype.getAnchorText=function(){return this.matchedText},PhoneMatch}(KC),eA=function(s){function UrlMatch(o){var i=s.call(this,o)||this;return i.url=\"\",i.urlMatchType=\"scheme\",i.protocolUrlMatch=!1,i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.schemePrefixRegex=/^(https?:\\/\\/)?/i,i.wwwPrefixRegex=/^(https?:\\/\\/)?(www\\.)?/i,i.protocolRelativeRegex=/^\\/\\//,i.protocolPrepended=!1,i.urlMatchType=o.urlMatchType,i.url=o.url,i.protocolUrlMatch=o.protocolUrlMatch,i.protocolRelativeMatch=o.protocolRelativeMatch,i.stripPrefix=o.stripPrefix,i.stripTrailingSlash=o.stripTrailingSlash,i.decodePercentEncoding=o.decodePercentEncoding,i}return tslib_es6_extends(UrlMatch,s),UrlMatch.prototype.getType=function(){return\"url\"},UrlMatch.prototype.getUrlMatchType=function(){return this.urlMatchType},UrlMatch.prototype.getUrl=function(){var s=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(s=this.url=\"http://\"+s,this.protocolPrepended=!0),s},UrlMatch.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,\"&\")},UrlMatch.prototype.getAnchorText=function(){var s=this.getMatchedText();return this.protocolRelativeMatch&&(s=this.stripProtocolRelativePrefix(s)),this.stripPrefix.scheme&&(s=this.stripSchemePrefix(s)),this.stripPrefix.www&&(s=this.stripWwwPrefix(s)),this.stripTrailingSlash&&(s=this.removeTrailingSlash(s)),this.decodePercentEncoding&&(s=this.removePercentEncoding(s)),s},UrlMatch.prototype.stripSchemePrefix=function(s){return s.replace(this.schemePrefixRegex,\"\")},UrlMatch.prototype.stripWwwPrefix=function(s){return s.replace(this.wwwPrefixRegex,\"$1\")},UrlMatch.prototype.stripProtocolRelativePrefix=function(s){return s.replace(this.protocolRelativeRegex,\"\")},UrlMatch.prototype.removeTrailingSlash=function(s){return\"/\"===s.charAt(s.length-1)&&(s=s.slice(0,-1)),s},UrlMatch.prototype.removePercentEncoding=function(s){var o=s.replace(/%22/gi,\"&quot;\").replace(/%26/gi,\"&amp;\").replace(/%27/gi,\"&#39;\").replace(/%3C/gi,\"&lt;\").replace(/%3E/gi,\"&gt;\");try{return decodeURIComponent(o)}catch(s){return o}},UrlMatch}(KC),tA=function tA(s){this.__jsduckDummyDocProp=null,this.tagBuilder=s.tagBuilder},rA=/[A-Za-z]/,nA=/[\\d]/,sA=/[\\D]/,oA=/\\s/,iA=/['\"]/,aA=/[\\x00-\\x1F\\x7F]/,cA=/A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/.source,lA=cA+/\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/.source+/\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/.source,uA=/0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/.source,pA=lA+uA,hA=lA+uA,dA=new RegExp(\"[\".concat(hA,\"]\")),fA=\"(?:[\"+uA+\"]{1,3}\\\\.){3}[\"+uA+\"]{1,3}\",mA=\"[\"+hA+\"](?:[\"+hA+\"\\\\-_]{0,61}[\"+hA+\"])?\",getDomainLabelStr=function(s){return\"(?=(\"+mA+\"))\\\\\"+s},getDomainNameStr=function(s){return\"(?:\"+getDomainLabelStr(s)+\"(?:\\\\.\"+getDomainLabelStr(s+1)+\"){0,126}|\"+fA+\")\"},gA=(new RegExp(\"[\"+hA+\".\\\\-]*[\"+hA+\"\\\\-]\"),dA),yA=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,vA=new RegExp(\"[\".concat(hA,\"!#$%&'*+/=?^_`{|}~-]\")),bA=new RegExp(\"^\".concat(yA.source,\"$\")),_A=function(s){function EmailMatcher(){var o=null!==s&&s.apply(this,arguments)||this;return o.localPartCharRegex=vA,o.strictTldRegex=bA,o}return tslib_es6_extends(EmailMatcher,s),EmailMatcher.prototype.parseMatches=function(s){for(var o=this.tagBuilder,i=this.localPartCharRegex,a=this.strictTldRegex,u=[],_=s.length,w=new SA,x={m:\"a\",a:\"i\",i:\"l\",l:\"t\",t:\"o\",o:\":\"},C=0,j=0,L=w;C<_;){var B=s.charAt(C);switch(j){case 0:stateNonEmailAddress(B);break;case 1:stateMailTo(s.charAt(C-1),B);break;case 2:stateLocalPart(B);break;case 3:stateLocalPartDot(B);break;case 4:stateAtSign(B);break;case 5:stateDomainChar(B);break;case 6:stateDomainHyphen(B);break;case 7:stateDomainDot(B);break;default:throwUnhandledCaseError(j)}C++}return captureMatchIfValidAndReset(),u;function stateNonEmailAddress(s){\"m\"===s?beginEmailMatch(1):i.test(s)&&beginEmailMatch()}function stateMailTo(s,o){\":\"===s?i.test(o)?(j=2,L=new SA(__assign(__assign({},L),{hasMailtoPrefix:!0}))):resetToNonEmailMatchState():x[s]===o||(i.test(o)?j=2:\".\"===o?j=3:\"@\"===o?j=4:resetToNonEmailMatchState())}function stateLocalPart(s){\".\"===s?j=3:\"@\"===s?j=4:i.test(s)||resetToNonEmailMatchState()}function stateLocalPartDot(s){\".\"===s||\"@\"===s?resetToNonEmailMatchState():i.test(s)?j=2:resetToNonEmailMatchState()}function stateAtSign(s){gA.test(s)?j=5:resetToNonEmailMatchState()}function stateDomainChar(s){\".\"===s?j=7:\"-\"===s?j=6:gA.test(s)||captureMatchIfValidAndReset()}function stateDomainHyphen(s){\"-\"===s||\".\"===s?captureMatchIfValidAndReset():gA.test(s)?j=5:captureMatchIfValidAndReset()}function stateDomainDot(s){\".\"===s||\"-\"===s?captureMatchIfValidAndReset():gA.test(s)?(j=5,L=new SA(__assign(__assign({},L),{hasDomainDot:!0}))):captureMatchIfValidAndReset()}function beginEmailMatch(s){void 0===s&&(s=2),j=s,L=new SA({idx:C})}function resetToNonEmailMatchState(){j=0,L=w}function captureMatchIfValidAndReset(){if(L.hasDomainDot){var i=s.slice(L.idx,C);/[-.]$/.test(i)&&(i=i.slice(0,-1));var _=L.hasMailtoPrefix?i.slice(7):i;(function doesEmailHaveValidTld(s){var o=s.split(\".\").pop()||\"\",i=o.toLowerCase();return a.test(i)})(_)&&u.push(new YC({tagBuilder:o,matchedText:i,offset:L.idx,email:_}))}resetToNonEmailMatchState()}},EmailMatcher}(tA),SA=function SA(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.hasMailtoPrefix=!!s.hasMailtoPrefix,this.hasDomainDot=!!s.hasDomainDot},EA=function(){function UrlMatchValidator(){}return UrlMatchValidator.isValid=function(s,o){return!(o&&!this.isValidUriScheme(o)||this.urlMatchDoesNotHaveProtocolOrDot(s,o)||this.urlMatchDoesNotHaveAtLeastOneWordChar(s,o)&&!this.isValidIpAddress(s)||this.containsMultipleDots(s))},UrlMatchValidator.isValidIpAddress=function(s){var o=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==s.match(o)},UrlMatchValidator.containsMultipleDots=function(s){var o=s;return this.hasFullProtocolRegex.test(s)&&(o=s.split(\"://\")[1]),o.split(\"/\")[0].indexOf(\"..\")>-1},UrlMatchValidator.isValidUriScheme=function(s){var o=s.match(this.uriSchemeRegex),i=o&&o[0].toLowerCase();return\"javascript:\"!==i&&\"vbscript:\"!==i},UrlMatchValidator.urlMatchDoesNotHaveProtocolOrDot=function(s,o){return!(!s||o&&this.hasFullProtocolRegex.test(o)||-1!==s.indexOf(\".\"))},UrlMatchValidator.urlMatchDoesNotHaveAtLeastOneWordChar=function(s,o){return!(!s||!o)&&(!this.hasFullProtocolRegex.test(o)&&!this.hasWordCharAfterProtocolRegex.test(s))},UrlMatchValidator.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//,UrlMatchValidator.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,UrlMatchValidator.hasWordCharAfterProtocolRegex=new RegExp(\":[^\\\\s]*?[\"+cA+\"]\"),UrlMatchValidator.ipRegex=/[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/,UrlMatchValidator}(),wA=(GC=new RegExp(\"[/?#](?:[\"+hA+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]{}?!:,.;^✓]*[\"+hA+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]{}✓])?\"),new RegExp([\"(?:\",\"(\",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/.source,getDomainNameStr(2),\")\",\"|\",\"(\",\"(//)?\",/(?:www\\.)/.source,getDomainNameStr(6),\")\",\"|\",\"(\",\"(//)?\",getDomainNameStr(10)+\"\\\\.\",yA.source,\"(?![-\"+pA+\"])\",\")\",\")\",\"(?::[0-9]+)?\",\"(?:\"+GC.source+\")?\"].join(\"\"),\"gi\")),xA=new RegExp(\"[\"+hA+\"]\"),kA=function(s){function UrlMatcher(o){var i=s.call(this,o)||this;return i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.matcherRegex=wA,i.wordCharRegExp=xA,i.stripPrefix=o.stripPrefix,i.stripTrailingSlash=o.stripTrailingSlash,i.decodePercentEncoding=o.decodePercentEncoding,i}return tslib_es6_extends(UrlMatcher,s),UrlMatcher.prototype.parseMatches=function(s){for(var o,i=this.matcherRegex,a=this.stripPrefix,u=this.stripTrailingSlash,_=this.decodePercentEncoding,w=this.tagBuilder,x=[],_loop_1=function(){var i=o[0],j=o[1],L=o[4],B=o[5],$=o[9],V=o.index,U=B||$,z=s.charAt(V-1);if(!EA.isValid(i,j))return\"continue\";if(V>0&&\"@\"===z)return\"continue\";if(V>0&&U&&C.wordCharRegExp.test(z))return\"continue\";if(/\\?$/.test(i)&&(i=i.substr(0,i.length-1)),C.matchHasUnbalancedClosingParen(i))i=i.substr(0,i.length-1);else{var Y=C.matchHasInvalidCharAfterTld(i,j);Y>-1&&(i=i.substr(0,Y))}var Z=[\"http://\",\"https://\"].find((function(s){return!!j&&-1!==j.indexOf(s)}));if(Z){var ee=i.indexOf(Z);i=i.substr(ee),j=j.substr(ee),V+=ee}var ie=j?\"scheme\":L?\"www\":\"tld\",ae=!!j;x.push(new eA({tagBuilder:w,matchedText:i,offset:V,urlMatchType:ie,url:i,protocolUrlMatch:ae,protocolRelativeMatch:!!U,stripPrefix:a,stripTrailingSlash:u,decodePercentEncoding:_}))},C=this;null!==(o=i.exec(s));)_loop_1();return x},UrlMatcher.prototype.matchHasUnbalancedClosingParen=function(s){var o,i=s.charAt(s.length-1);if(\")\"===i)o=\"(\";else if(\"]\"===i)o=\"[\";else{if(\"}\"!==i)return!1;o=\"{\"}for(var a=0,u=0,_=s.length-1;u<_;u++){var w=s.charAt(u);w===o?a++:w===i&&(a=Math.max(a-1,0))}return 0===a},UrlMatcher.prototype.matchHasInvalidCharAfterTld=function(s,o){if(!s)return-1;var i=0;o&&(i=s.indexOf(\":\"),s=s.slice(i));var a=new RegExp(\"^((.?//)?[-.\"+hA+\"]*[-\"+hA+\"]\\\\.[-\"+hA+\"]+)\").exec(s);return null===a?-1:(i+=a[1].length,s=s.slice(a[1].length),/^[^-.A-Za-z0-9:\\/?#]/.test(s)?i:-1)},UrlMatcher}(tA),OA=new RegExp(\"[_\".concat(hA,\"]\")),CA=function(s){function HashtagMatcher(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.serviceName=o.serviceName,i}return tslib_es6_extends(HashtagMatcher,s),HashtagMatcher.prototype.parseMatches=function(s){for(var o=this.tagBuilder,i=this.serviceName,a=[],u=s.length,_=0,w=-1,x=0;_<u;){var C=s.charAt(_);switch(x){case 0:stateNone(C);break;case 1:stateNonHashtagWordChar(C);break;case 2:stateHashtagHashChar(C);break;case 3:stateHashtagTextChar(C);break;default:throwUnhandledCaseError(x)}_++}return captureMatchIfValid(),a;function stateNone(s){\"#\"===s?(x=2,w=_):dA.test(s)&&(x=1)}function stateNonHashtagWordChar(s){dA.test(s)||(x=0)}function stateHashtagHashChar(s){x=OA.test(s)?3:dA.test(s)?1:0}function stateHashtagTextChar(s){OA.test(s)||(captureMatchIfValid(),w=-1,x=dA.test(s)?1:0)}function captureMatchIfValid(){if(w>-1&&_-w<=140){var u=s.slice(w,_),x=new XC({tagBuilder:o,matchedText:u,offset:w,serviceName:i,hashtag:u.slice(1)});a.push(x)}}},HashtagMatcher}(tA),AA=[\"twitter\",\"facebook\",\"instagram\",\"tiktok\"],jA=new RegExp(\"\".concat(/(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/.source,\"|\").concat(/(0([1-9]{1}-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/.source),\"g\"),IA=function(s){function PhoneMatcher(){var o=null!==s&&s.apply(this,arguments)||this;return o.matcherRegex=jA,o}return tslib_es6_extends(PhoneMatcher,s),PhoneMatcher.prototype.parseMatches=function(s){for(var o,i=this.matcherRegex,a=this.tagBuilder,u=[];null!==(o=i.exec(s));){var _=o[0],w=_.replace(/[^0-9,;#]/g,\"\"),x=!(!o[1]&&!o[2]),C=0==o.index?\"\":s.substr(o.index-1,1),j=s.substr(o.index+_.length,1),L=!C.match(/\\d/)&&!j.match(/\\d/);this.testMatch(o[3])&&this.testMatch(_)&&L&&u.push(new ZC({tagBuilder:a,matchedText:_,offset:o.index,number:w,plusSign:x}))}return u},PhoneMatcher.prototype.testMatch=function(s){return sA.test(s)},PhoneMatcher}(tA),PA=new RegExp(\"@[_\".concat(hA,\"]{1,50}(?![_\").concat(hA,\"])\"),\"g\"),TA=new RegExp(\"@[_.\".concat(hA,\"]{1,30}(?![_\").concat(hA,\"])\"),\"g\"),NA=new RegExp(\"@[-_.\".concat(hA,\"]{1,50}(?![-_\").concat(hA,\"])\"),\"g\"),MA=new RegExp(\"@[_.\".concat(hA,\"]{1,23}[_\").concat(hA,\"](?![_\").concat(hA,\"])\"),\"g\"),RA=new RegExp(\"[^\"+hA+\"]\"),DA=function(s){function MentionMatcher(o){var i=s.call(this,o)||this;return i.serviceName=\"twitter\",i.matcherRegexes={twitter:PA,instagram:TA,soundcloud:NA,tiktok:MA},i.nonWordCharRegex=RA,i.serviceName=o.serviceName,i}return tslib_es6_extends(MentionMatcher,s),MentionMatcher.prototype.parseMatches=function(s){var o,i=this.serviceName,a=this.matcherRegexes[this.serviceName],u=this.nonWordCharRegex,_=this.tagBuilder,w=[];if(!a)return w;for(;null!==(o=a.exec(s));){var x=o.index,C=s.charAt(x-1);if(0===x||u.test(C)){var j=o[0].replace(/\\.+$/g,\"\"),L=j.slice(1);w.push(new QC({tagBuilder:_,matchedText:j,offset:x,serviceName:i,mention:L}))}}return w},MentionMatcher}(tA);function parseHtml(s,o){for(var i=o.onOpenTag,a=o.onCloseTag,u=o.onText,_=o.onComment,w=o.onDoctype,x=new LA,C=0,j=s.length,L=0,B=0,$=x;C<j;){var V=s.charAt(C);switch(L){case 0:stateData(V);break;case 1:stateTagOpen(V);break;case 2:stateEndTagOpen(V);break;case 3:stateTagName(V);break;case 4:stateBeforeAttributeName(V);break;case 5:stateAttributeName(V);break;case 6:stateAfterAttributeName(V);break;case 7:stateBeforeAttributeValue(V);break;case 8:stateAttributeValueDoubleQuoted(V);break;case 9:stateAttributeValueSingleQuoted(V);break;case 10:stateAttributeValueUnquoted(V);break;case 11:stateAfterAttributeValueQuoted(V);break;case 12:stateSelfClosingStartTag(V);break;case 13:stateMarkupDeclarationOpen(V);break;case 14:stateCommentStart(V);break;case 15:stateCommentStartDash(V);break;case 16:stateComment(V);break;case 17:stateCommentEndDash(V);break;case 18:stateCommentEnd(V);break;case 19:stateCommentEndBang(V);break;case 20:stateDoctype(V);break;default:throwUnhandledCaseError(L)}C++}function stateData(s){\"<\"===s&&startNewTag()}function stateTagOpen(s){\"!\"===s?L=13:\"/\"===s?(L=2,$=new LA(__assign(__assign({},$),{isClosing:!0}))):\"<\"===s?startNewTag():rA.test(s)?(L=3,$=new LA(__assign(__assign({},$),{isOpening:!0}))):(L=0,$=x)}function stateTagName(s){oA.test(s)?($=new LA(__assign(__assign({},$),{name:captureTagName()})),L=4):\"<\"===s?startNewTag():\"/\"===s?($=new LA(__assign(__assign({},$),{name:captureTagName()})),L=12):\">\"===s?($=new LA(__assign(__assign({},$),{name:captureTagName()})),emitTagAndPreviousTextNode()):rA.test(s)||nA.test(s)||\":\"===s||resetToDataState()}function stateEndTagOpen(s){\">\"===s?resetToDataState():rA.test(s)?L=3:resetToDataState()}function stateBeforeAttributeName(s){oA.test(s)||(\"/\"===s?L=12:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():\"=\"===s||iA.test(s)||aA.test(s)?resetToDataState():L=5)}function stateAttributeName(s){oA.test(s)?L=6:\"/\"===s?L=12:\"=\"===s?L=7:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():iA.test(s)&&resetToDataState()}function stateAfterAttributeName(s){oA.test(s)||(\"/\"===s?L=12:\"=\"===s?L=7:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():iA.test(s)?resetToDataState():L=5)}function stateBeforeAttributeValue(s){oA.test(s)||('\"'===s?L=8:\"'\"===s?L=9:/[>=`]/.test(s)?resetToDataState():\"<\"===s?startNewTag():L=10)}function stateAttributeValueDoubleQuoted(s){'\"'===s&&(L=11)}function stateAttributeValueSingleQuoted(s){\"'\"===s&&(L=11)}function stateAttributeValueUnquoted(s){oA.test(s)?L=4:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s&&startNewTag()}function stateAfterAttributeValueQuoted(s){oA.test(s)?L=4:\"/\"===s?L=12:\">\"===s?emitTagAndPreviousTextNode():\"<\"===s?startNewTag():(L=4,function reconsumeCurrentCharacter(){C--}())}function stateSelfClosingStartTag(s){\">\"===s?($=new LA(__assign(__assign({},$),{isClosing:!0})),emitTagAndPreviousTextNode()):L=4}function stateMarkupDeclarationOpen(o){\"--\"===s.substr(C,2)?(C+=2,$=new LA(__assign(__assign({},$),{type:\"comment\"})),L=14):\"DOCTYPE\"===s.substr(C,7).toUpperCase()?(C+=7,$=new LA(__assign(__assign({},$),{type:\"doctype\"})),L=20):resetToDataState()}function stateCommentStart(s){\"-\"===s?L=15:\">\"===s?resetToDataState():L=16}function stateCommentStartDash(s){\"-\"===s?L=18:\">\"===s?resetToDataState():L=16}function stateComment(s){\"-\"===s&&(L=17)}function stateCommentEndDash(s){L=\"-\"===s?18:16}function stateCommentEnd(s){\">\"===s?emitTagAndPreviousTextNode():\"!\"===s?L=19:\"-\"===s||(L=16)}function stateCommentEndBang(s){\"-\"===s?L=17:\">\"===s?emitTagAndPreviousTextNode():L=16}function stateDoctype(s){\">\"===s?emitTagAndPreviousTextNode():\"<\"===s&&startNewTag()}function resetToDataState(){L=0,$=x}function startNewTag(){L=1,$=new LA({idx:C})}function emitTagAndPreviousTextNode(){var o=s.slice(B,$.idx);o&&u(o,B),\"comment\"===$.type?_($.idx):\"doctype\"===$.type?w($.idx):($.isOpening&&i($.name,$.idx),$.isClosing&&a($.name,$.idx)),resetToDataState(),B=C+1}function captureTagName(){var o=$.idx+($.isClosing?2:1);return s.slice(o,C).toLowerCase()}B<C&&function emitText(){var o=s.slice(B,C);u(o,B),B=C+1}()}var LA=function LA(s){void 0===s&&(s={}),this.idx=void 0!==s.idx?s.idx:-1,this.type=s.type||\"tag\",this.name=s.name||\"\",this.isOpening=!!s.isOpening,this.isClosing=!!s.isClosing},FA=function(){function Autolinker(s){void 0===s&&(s={}),this.version=Autolinker.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:\"end\"},this.className=\"\",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(s.urls),this.email=\"boolean\"==typeof s.email?s.email:this.email,this.phone=\"boolean\"==typeof s.phone?s.phone:this.phone,this.hashtag=s.hashtag||this.hashtag,this.mention=s.mention||this.mention,this.newWindow=\"boolean\"==typeof s.newWindow?s.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(s.stripPrefix),this.stripTrailingSlash=\"boolean\"==typeof s.stripTrailingSlash?s.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=\"boolean\"==typeof s.decodePercentEncoding?s.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=s.sanitizeHtml||!1;var o=this.mention;if(!1!==o&&-1===[\"twitter\",\"instagram\",\"soundcloud\",\"tiktok\"].indexOf(o))throw new Error(\"invalid `mention` cfg '\".concat(o,\"' - see docs\"));var i=this.hashtag;if(!1!==i&&-1===AA.indexOf(i))throw new Error(\"invalid `hashtag` cfg '\".concat(i,\"' - see docs\"));this.truncate=this.normalizeTruncateCfg(s.truncate),this.className=s.className||this.className,this.replaceFn=s.replaceFn||this.replaceFn,this.context=s.context||this}return Autolinker.link=function(s,o){return new Autolinker(o).link(s)},Autolinker.parse=function(s,o){return new Autolinker(o).parse(s)},Autolinker.prototype.normalizeUrlsCfg=function(s){return null==s&&(s=!0),\"boolean\"==typeof s?{schemeMatches:s,wwwMatches:s,tldMatches:s}:{schemeMatches:\"boolean\"!=typeof s.schemeMatches||s.schemeMatches,wwwMatches:\"boolean\"!=typeof s.wwwMatches||s.wwwMatches,tldMatches:\"boolean\"!=typeof s.tldMatches||s.tldMatches}},Autolinker.prototype.normalizeStripPrefixCfg=function(s){return null==s&&(s=!0),\"boolean\"==typeof s?{scheme:s,www:s}:{scheme:\"boolean\"!=typeof s.scheme||s.scheme,www:\"boolean\"!=typeof s.www||s.www}},Autolinker.prototype.normalizeTruncateCfg=function(s){return\"number\"==typeof s?{length:s,location:\"end\"}:function defaults(s,o){for(var i in o)o.hasOwnProperty(i)&&void 0===s[i]&&(s[i]=o[i]);return s}(s||{},{length:Number.POSITIVE_INFINITY,location:\"end\"})},Autolinker.prototype.parse=function(s){var o=this,i=[\"a\",\"style\",\"script\"],a=0,u=[];return parseHtml(s,{onOpenTag:function(s){i.indexOf(s)>=0&&a++},onText:function(s,i){if(0===a){var _=function splitAndCapture(s,o){if(!o.global)throw new Error(\"`splitRegex` must have the 'g' flag set\");for(var i,a=[],u=0;i=o.exec(s);)a.push(s.substring(u,i.index)),a.push(i[0]),u=i.index+i[0].length;return a.push(s.substring(u)),a}(s,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),w=i;_.forEach((function(s,i){if(i%2==0){var a=o.parseText(s,w);u.push.apply(u,a)}w+=s.length}))}},onCloseTag:function(s){i.indexOf(s)>=0&&(a=Math.max(a-1,0))},onComment:function(s){},onDoctype:function(s){}}),u=this.compactMatches(u),u=this.removeUnwantedMatches(u)},Autolinker.prototype.compactMatches=function(s){s.sort((function(s,o){return s.getOffset()-o.getOffset()}));for(var o=0;o<s.length-1;){var i=s[o],a=i.getOffset(),u=i.getMatchedText().length,_=a+u;if(o+1<s.length){if(s[o+1].getOffset()===a){var w=s[o+1].getMatchedText().length>u?o:o+1;s.splice(w,1);continue}if(s[o+1].getOffset()<_){s.splice(o+1,1);continue}}o++}return s},Autolinker.prototype.removeUnwantedMatches=function(s){return this.hashtag||utils_remove(s,(function(s){return\"hashtag\"===s.getType()})),this.email||utils_remove(s,(function(s){return\"email\"===s.getType()})),this.phone||utils_remove(s,(function(s){return\"phone\"===s.getType()})),this.mention||utils_remove(s,(function(s){return\"mention\"===s.getType()})),this.urls.schemeMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"scheme\"===s.getUrlMatchType()})),this.urls.wwwMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"www\"===s.getUrlMatchType()})),this.urls.tldMatches||utils_remove(s,(function(s){return\"url\"===s.getType()&&\"tld\"===s.getUrlMatchType()})),s},Autolinker.prototype.parseText=function(s,o){void 0===o&&(o=0),o=o||0;for(var i=this.getMatchers(),a=[],u=0,_=i.length;u<_;u++){for(var w=i[u].parseMatches(s),x=0,C=w.length;x<C;x++)w[x].setOffset(o+w[x].getOffset());a.push.apply(a,w)}return a},Autolinker.prototype.link=function(s){if(!s)return\"\";this.sanitizeHtml&&(s=s.replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\"));for(var o=this.parse(s),i=[],a=0,u=0,_=o.length;u<_;u++){var w=o[u];i.push(s.substring(a,w.getOffset())),i.push(this.createMatchReturnVal(w)),a=w.getOffset()+w.getMatchedText().length}return i.push(s.substring(a)),i.join(\"\")},Autolinker.prototype.createMatchReturnVal=function(s){var o;return this.replaceFn&&(o=this.replaceFn.call(this.context,s)),\"string\"==typeof o?o:!1===o?s.getMatchedText():o instanceof JC?o.toAnchorString():s.buildTag().toAnchorString()},Autolinker.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var s=this.getTagBuilder(),o=[new CA({tagBuilder:s,serviceName:this.hashtag}),new _A({tagBuilder:s}),new IA({tagBuilder:s}),new DA({tagBuilder:s,serviceName:this.mention}),new kA({tagBuilder:s,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=o},Autolinker.prototype.getTagBuilder=function(){var s=this.tagBuilder;return s||(s=this.tagBuilder=new HC({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),s},Autolinker.version=\"3.16.2\",Autolinker.AnchorTagBuilder=HC,Autolinker.HtmlTag=JC,Autolinker.matcher={Email:_A,Hashtag:CA,Matcher:tA,Mention:DA,Phone:IA,Url:kA},Autolinker.match={Email:YC,Hashtag:XC,Match:KC,Mention:QC,Phone:ZC,Url:eA},Autolinker}();const BA=FA;var $A=/www|@|\\:\\/\\//;function isLinkOpen(s){return/^<a[>\\s]/i.test(s)}function isLinkClose(s){return/^<\\/a\\s*>/i.test(s)}function createLinkifier(){var s=[],o=new BA({stripPrefix:!1,url:!0,email:!0,replaceFn:function(o){switch(o.getType()){case\"url\":s.push({text:o.matchedText,url:o.getUrl()});break;case\"email\":s.push({text:o.matchedText,url:\"mailto:\"+o.getEmail().replace(/^mailto:/i,\"\")})}return!1}});return{links:s,autolinker:o}}function parseTokens(s){var o,i,a,u,_,w,x,C,j,L,B,$,V,U=s.tokens,z=null;for(i=0,a=U.length;i<a;i++)if(\"inline\"===U[i].type)for(B=0,o=(u=U[i].children).length-1;o>=0;o--)if(\"link_close\"!==(_=u[o]).type){if(\"htmltag\"===_.type&&(isLinkOpen(_.content)&&B>0&&B--,isLinkClose(_.content)&&B++),!(B>0)&&\"text\"===_.type&&$A.test(_.content)){if(z||($=(z=createLinkifier()).links,V=z.autolinker),w=_.content,$.length=0,V.link(w),!$.length)continue;for(x=[],L=_.level,C=0;C<$.length;C++)s.inline.validateLink($[C].url)&&((j=w.indexOf($[C].text))&&x.push({type:\"text\",content:w.slice(0,j),level:L}),x.push({type:\"link_open\",href:$[C].url,title:\"\",level:L++}),x.push({type:\"text\",content:$[C].text,level:L}),x.push({type:\"link_close\",level:--L}),w=w.slice(j+$[C].text.length));w.length&&x.push({type:\"text\",content:w,level:L}),U[i].children=u=[].concat(u.slice(0,o),x,u.slice(o+1))}}else for(o--;u[o].level!==_.level&&\"link_open\"!==u[o].type;)o--}function linkify(s){s.core.ruler.push(\"linkify\",parseTokens)}const{entries:qA,setPrototypeOf:VA,isFrozen:UA,getPrototypeOf:zA,getOwnPropertyDescriptor:WA}=Object;let{freeze:JA,seal:HA,create:KA}=Object,{apply:GA,construct:YA}=\"undefined\"!=typeof Reflect&&Reflect;JA||(JA=function freeze(s){return s}),HA||(HA=function seal(s){return s}),GA||(GA=function apply(s,o,i){return s.apply(o,i)}),YA||(YA=function construct(s,o){return new s(...o)});const XA=unapply(Array.prototype.forEach),QA=unapply(Array.prototype.lastIndexOf),ZA=unapply(Array.prototype.pop),ej=unapply(Array.prototype.push),fj=unapply(Array.prototype.splice),mj=unapply(String.prototype.toLowerCase),_j=unapply(String.prototype.toString),Cj=unapply(String.prototype.match),Aj=unapply(String.prototype.replace),Nj=unapply(String.prototype.indexOf),Bj=unapply(String.prototype.trim),$j=unapply(Object.prototype.hasOwnProperty),zj=unapply(RegExp.prototype.test),Jj=function unconstruct(s){return function(){for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return YA(s,i)}}(TypeError);function unapply(s){return function(o){for(var i=arguments.length,a=new Array(i>1?i-1:0),u=1;u<i;u++)a[u-1]=arguments[u];return GA(s,o,a)}}function addToSet(s,o){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:mj;VA&&VA(s,null);let a=o.length;for(;a--;){let u=o[a];if(\"string\"==typeof u){const s=i(u);s!==u&&(UA(o)||(o[a]=s),u=s)}s[u]=!0}return s}function purify_es_cleanArray(s){for(let o=0;o<s.length;o++){$j(s,o)||(s[o]=null)}return s}function clone(s){const o=KA(null);for(const[i,a]of qA(s)){$j(s,i)&&(Array.isArray(a)?o[i]=purify_es_cleanArray(a):a&&\"object\"==typeof a&&a.constructor===Object?o[i]=clone(a):o[i]=a)}return o}function lookupGetter(s,o){for(;null!==s;){const i=WA(s,o);if(i){if(i.get)return unapply(i.get);if(\"function\"==typeof i.value)return unapply(i.value)}s=zA(s)}return function fallbackValue(){return null}}const Kj=JA([\"a\",\"abbr\",\"acronym\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"big\",\"blink\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"center\",\"cite\",\"code\",\"col\",\"colgroup\",\"content\",\"data\",\"datalist\",\"dd\",\"decorator\",\"del\",\"details\",\"dfn\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"element\",\"em\",\"fieldset\",\"figcaption\",\"figure\",\"font\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meter\",\"nav\",\"nobr\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"select\",\"shadow\",\"small\",\"source\",\"spacer\",\"span\",\"strike\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\",\"tt\",\"u\",\"ul\",\"var\",\"video\",\"wbr\"]),Gj=JA([\"svg\",\"a\",\"altglyph\",\"altglyphdef\",\"altglyphitem\",\"animatecolor\",\"animatemotion\",\"animatetransform\",\"circle\",\"clippath\",\"defs\",\"desc\",\"ellipse\",\"filter\",\"font\",\"g\",\"glyph\",\"glyphref\",\"hkern\",\"image\",\"line\",\"lineargradient\",\"marker\",\"mask\",\"metadata\",\"mpath\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialgradient\",\"rect\",\"stop\",\"style\",\"switch\",\"symbol\",\"text\",\"textpath\",\"title\",\"tref\",\"tspan\",\"view\",\"vkern\"]),Xj=JA([\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\"]),eI=JA([\"animate\",\"color-profile\",\"cursor\",\"discard\",\"font-face\",\"font-face-format\",\"font-face-name\",\"font-face-src\",\"font-face-uri\",\"foreignobject\",\"hatch\",\"hatchpath\",\"mesh\",\"meshgradient\",\"meshpatch\",\"meshrow\",\"missing-glyph\",\"script\",\"set\",\"solidcolor\",\"unknown\",\"use\"]),tI=JA([\"math\",\"menclose\",\"merror\",\"mfenced\",\"mfrac\",\"mglyph\",\"mi\",\"mlabeledtr\",\"mmultiscripts\",\"mn\",\"mo\",\"mover\",\"mpadded\",\"mphantom\",\"mroot\",\"mrow\",\"ms\",\"mspace\",\"msqrt\",\"mstyle\",\"msub\",\"msup\",\"msubsup\",\"mtable\",\"mtd\",\"mtext\",\"mtr\",\"munder\",\"munderover\",\"mprescripts\"]),rI=JA([\"maction\",\"maligngroup\",\"malignmark\",\"mlongdiv\",\"mscarries\",\"mscarry\",\"msgroup\",\"mstack\",\"msline\",\"msrow\",\"semantics\",\"annotation\",\"annotation-xml\",\"mprescripts\",\"none\"]),nI=JA([\"#text\"]),sI=JA([\"accept\",\"action\",\"align\",\"alt\",\"autocapitalize\",\"autocomplete\",\"autopictureinpicture\",\"autoplay\",\"background\",\"bgcolor\",\"border\",\"capture\",\"cellpadding\",\"cellspacing\",\"checked\",\"cite\",\"class\",\"clear\",\"color\",\"cols\",\"colspan\",\"controls\",\"controlslist\",\"coords\",\"crossorigin\",\"datetime\",\"decoding\",\"default\",\"dir\",\"disabled\",\"disablepictureinpicture\",\"disableremoteplayback\",\"download\",\"draggable\",\"enctype\",\"enterkeyhint\",\"face\",\"for\",\"headers\",\"height\",\"hidden\",\"high\",\"href\",\"hreflang\",\"id\",\"inputmode\",\"integrity\",\"ismap\",\"kind\",\"label\",\"lang\",\"list\",\"loading\",\"loop\",\"low\",\"max\",\"maxlength\",\"media\",\"method\",\"min\",\"minlength\",\"multiple\",\"muted\",\"name\",\"nonce\",\"noshade\",\"novalidate\",\"nowrap\",\"open\",\"optimum\",\"pattern\",\"placeholder\",\"playsinline\",\"popover\",\"popovertarget\",\"popovertargetaction\",\"poster\",\"preload\",\"pubdate\",\"radiogroup\",\"readonly\",\"rel\",\"required\",\"rev\",\"reversed\",\"role\",\"rows\",\"rowspan\",\"spellcheck\",\"scope\",\"selected\",\"shape\",\"size\",\"sizes\",\"span\",\"srclang\",\"start\",\"src\",\"srcset\",\"step\",\"style\",\"summary\",\"tabindex\",\"title\",\"translate\",\"type\",\"usemap\",\"valign\",\"value\",\"width\",\"wrap\",\"xmlns\",\"slot\"]),oI=JA([\"accent-height\",\"accumulate\",\"additive\",\"alignment-baseline\",\"amplitude\",\"ascent\",\"attributename\",\"attributetype\",\"azimuth\",\"basefrequency\",\"baseline-shift\",\"begin\",\"bias\",\"by\",\"class\",\"clip\",\"clippathunits\",\"clip-path\",\"clip-rule\",\"color\",\"color-interpolation\",\"color-interpolation-filters\",\"color-profile\",\"color-rendering\",\"cx\",\"cy\",\"d\",\"dx\",\"dy\",\"diffuseconstant\",\"direction\",\"display\",\"divisor\",\"dur\",\"edgemode\",\"elevation\",\"end\",\"exponent\",\"fill\",\"fill-opacity\",\"fill-rule\",\"filter\",\"filterunits\",\"flood-color\",\"flood-opacity\",\"font-family\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-variant\",\"font-weight\",\"fx\",\"fy\",\"g1\",\"g2\",\"glyph-name\",\"glyphref\",\"gradientunits\",\"gradienttransform\",\"height\",\"href\",\"id\",\"image-rendering\",\"in\",\"in2\",\"intercept\",\"k\",\"k1\",\"k2\",\"k3\",\"k4\",\"kerning\",\"keypoints\",\"keysplines\",\"keytimes\",\"lang\",\"lengthadjust\",\"letter-spacing\",\"kernelmatrix\",\"kernelunitlength\",\"lighting-color\",\"local\",\"marker-end\",\"marker-mid\",\"marker-start\",\"markerheight\",\"markerunits\",\"markerwidth\",\"maskcontentunits\",\"maskunits\",\"max\",\"mask\",\"media\",\"method\",\"mode\",\"min\",\"name\",\"numoctaves\",\"offset\",\"operator\",\"opacity\",\"order\",\"orient\",\"orientation\",\"origin\",\"overflow\",\"paint-order\",\"path\",\"pathlength\",\"patterncontentunits\",\"patterntransform\",\"patternunits\",\"points\",\"preservealpha\",\"preserveaspectratio\",\"primitiveunits\",\"r\",\"rx\",\"ry\",\"radius\",\"refx\",\"refy\",\"repeatcount\",\"repeatdur\",\"restart\",\"result\",\"rotate\",\"scale\",\"seed\",\"shape-rendering\",\"slope\",\"specularconstant\",\"specularexponent\",\"spreadmethod\",\"startoffset\",\"stddeviation\",\"stitchtiles\",\"stop-color\",\"stop-opacity\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke\",\"stroke-width\",\"style\",\"surfacescale\",\"systemlanguage\",\"tabindex\",\"tablevalues\",\"targetx\",\"targety\",\"transform\",\"transform-origin\",\"text-anchor\",\"text-decoration\",\"text-rendering\",\"textlength\",\"type\",\"u1\",\"u2\",\"unicode\",\"values\",\"viewbox\",\"visibility\",\"version\",\"vert-adv-y\",\"vert-origin-x\",\"vert-origin-y\",\"width\",\"word-spacing\",\"wrap\",\"writing-mode\",\"xchannelselector\",\"ychannelselector\",\"x\",\"x1\",\"x2\",\"xmlns\",\"y\",\"y1\",\"y2\",\"z\",\"zoomandpan\"]),iI=JA([\"accent\",\"accentunder\",\"align\",\"bevelled\",\"close\",\"columnsalign\",\"columnlines\",\"columnspan\",\"denomalign\",\"depth\",\"dir\",\"display\",\"displaystyle\",\"encoding\",\"fence\",\"frame\",\"height\",\"href\",\"id\",\"largeop\",\"length\",\"linethickness\",\"lspace\",\"lquote\",\"mathbackground\",\"mathcolor\",\"mathsize\",\"mathvariant\",\"maxsize\",\"minsize\",\"movablelimits\",\"notation\",\"numalign\",\"open\",\"rowalign\",\"rowlines\",\"rowspacing\",\"rowspan\",\"rspace\",\"rquote\",\"scriptlevel\",\"scriptminsize\",\"scriptsizemultiplier\",\"selection\",\"separator\",\"separators\",\"stretchy\",\"subscriptshift\",\"supscriptshift\",\"symmetric\",\"voffset\",\"width\",\"xmlns\"]),aI=JA([\"xlink:href\",\"xml:id\",\"xlink:title\",\"xml:space\",\"xmlns:xlink\"]),cI=HA(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm),lI=HA(/<%[\\w\\W]*|[\\w\\W]*%>/gm),uI=HA(/\\$\\{[\\w\\W]*/gm),pI=HA(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/),hI=HA(/^aria-[\\-\\w]+$/),dI=HA(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i),fI=HA(/^(?:\\w+script|data):/i),mI=HA(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g),gI=HA(/^html$/i),yI=HA(/^[a-z][.\\w]*(-[.\\w]+)+$/i);var vI=Object.freeze({__proto__:null,ARIA_ATTR:hI,ATTR_WHITESPACE:mI,CUSTOM_ELEMENT:yI,DATA_ATTR:pI,DOCTYPE_NAME:gI,ERB_EXPR:lI,IS_ALLOWED_URI:dI,IS_SCRIPT_OR_DATA:fI,MUSTACHE_EXPR:cI,TMPLIT_EXPR:uI});const bI=1,_I=3,SI=7,EI=8,wI=9,xI=function getGlobal(){return\"undefined\"==typeof window?null:window};var kI=function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xI();const DOMPurify=s=>createDOMPurify(s);if(DOMPurify.version=\"3.2.4\",DOMPurify.removed=[],!s||!s.document||s.document.nodeType!==wI||!s.Element)return DOMPurify.isSupported=!1,DOMPurify;let{document:o}=s;const i=o,a=i.currentScript,{DocumentFragment:u,HTMLTemplateElement:_,Node:w,Element:x,NodeFilter:C,NamedNodeMap:j=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:L,DOMParser:B,trustedTypes:$}=s,V=x.prototype,U=lookupGetter(V,\"cloneNode\"),z=lookupGetter(V,\"remove\"),Y=lookupGetter(V,\"nextSibling\"),Z=lookupGetter(V,\"childNodes\"),ee=lookupGetter(V,\"parentNode\");if(\"function\"==typeof _){const s=o.createElement(\"template\");s.content&&s.content.ownerDocument&&(o=s.content.ownerDocument)}let ie,ae=\"\";const{implementation:ce,createNodeIterator:le,createDocumentFragment:pe,getElementsByTagName:de}=o,{importNode:fe}=i;let ye={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};DOMPurify.isSupported=\"function\"==typeof qA&&\"function\"==typeof ee&&ce&&void 0!==ce.createHTMLDocument;const{MUSTACHE_EXPR:be,ERB_EXPR:_e,TMPLIT_EXPR:Se,DATA_ATTR:we,ARIA_ATTR:xe,IS_SCRIPT_OR_DATA:Pe,ATTR_WHITESPACE:Te,CUSTOM_ELEMENT:Re}=vI;let{IS_ALLOWED_URI:$e}=vI,qe=null;const ze=addToSet({},[...Kj,...Gj,...Xj,...tI,...nI]);let We=null;const He=addToSet({},[...sI,...oI,...iI,...aI]);let Ye=Object.seal(KA(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Xe=null,Qe=null,et=!0,tt=!0,rt=!1,nt=!0,st=!1,ot=!0,it=!1,at=!1,ct=!1,lt=!1,ut=!1,pt=!1,ht=!0,dt=!1,mt=!0,gt=!1,yt={},vt=null;const bt=addToSet({},[\"annotation-xml\",\"audio\",\"colgroup\",\"desc\",\"foreignobject\",\"head\",\"iframe\",\"math\",\"mi\",\"mn\",\"mo\",\"ms\",\"mtext\",\"noembed\",\"noframes\",\"noscript\",\"plaintext\",\"script\",\"style\",\"svg\",\"template\",\"thead\",\"title\",\"video\",\"xmp\"]);let _t=null;const St=addToSet({},[\"audio\",\"video\",\"img\",\"source\",\"image\",\"track\"]);let Et=null;const wt=addToSet({},[\"alt\",\"class\",\"for\",\"id\",\"label\",\"name\",\"pattern\",\"placeholder\",\"role\",\"summary\",\"title\",\"value\",\"style\",\"xmlns\"]),xt=\"http://www.w3.org/1998/Math/MathML\",kt=\"http://www.w3.org/2000/svg\",Ot=\"http://www.w3.org/1999/xhtml\";let Ct=Ot,At=!1,jt=null;const It=addToSet({},[xt,kt,Ot],_j);let Pt=addToSet({},[\"mi\",\"mo\",\"mn\",\"ms\",\"mtext\"]),Tt=addToSet({},[\"annotation-xml\"]);const Nt=addToSet({},[\"title\",\"style\",\"font\",\"a\",\"script\"]);let Mt=null;const Rt=[\"application/xhtml+xml\",\"text/html\"];let Dt=null,Lt=null;const Ft=o.createElement(\"form\"),Bt=function isRegexOrFunction(s){return s instanceof RegExp||s instanceof Function},$t=function _parseConfig(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Lt||Lt!==s){if(s&&\"object\"==typeof s||(s={}),s=clone(s),Mt=-1===Rt.indexOf(s.PARSER_MEDIA_TYPE)?\"text/html\":s.PARSER_MEDIA_TYPE,Dt=\"application/xhtml+xml\"===Mt?_j:mj,qe=$j(s,\"ALLOWED_TAGS\")?addToSet({},s.ALLOWED_TAGS,Dt):ze,We=$j(s,\"ALLOWED_ATTR\")?addToSet({},s.ALLOWED_ATTR,Dt):He,jt=$j(s,\"ALLOWED_NAMESPACES\")?addToSet({},s.ALLOWED_NAMESPACES,_j):It,Et=$j(s,\"ADD_URI_SAFE_ATTR\")?addToSet(clone(wt),s.ADD_URI_SAFE_ATTR,Dt):wt,_t=$j(s,\"ADD_DATA_URI_TAGS\")?addToSet(clone(St),s.ADD_DATA_URI_TAGS,Dt):St,vt=$j(s,\"FORBID_CONTENTS\")?addToSet({},s.FORBID_CONTENTS,Dt):bt,Xe=$j(s,\"FORBID_TAGS\")?addToSet({},s.FORBID_TAGS,Dt):{},Qe=$j(s,\"FORBID_ATTR\")?addToSet({},s.FORBID_ATTR,Dt):{},yt=!!$j(s,\"USE_PROFILES\")&&s.USE_PROFILES,et=!1!==s.ALLOW_ARIA_ATTR,tt=!1!==s.ALLOW_DATA_ATTR,rt=s.ALLOW_UNKNOWN_PROTOCOLS||!1,nt=!1!==s.ALLOW_SELF_CLOSE_IN_ATTR,st=s.SAFE_FOR_TEMPLATES||!1,ot=!1!==s.SAFE_FOR_XML,it=s.WHOLE_DOCUMENT||!1,lt=s.RETURN_DOM||!1,ut=s.RETURN_DOM_FRAGMENT||!1,pt=s.RETURN_TRUSTED_TYPE||!1,ct=s.FORCE_BODY||!1,ht=!1!==s.SANITIZE_DOM,dt=s.SANITIZE_NAMED_PROPS||!1,mt=!1!==s.KEEP_CONTENT,gt=s.IN_PLACE||!1,$e=s.ALLOWED_URI_REGEXP||dI,Ct=s.NAMESPACE||Ot,Pt=s.MATHML_TEXT_INTEGRATION_POINTS||Pt,Tt=s.HTML_INTEGRATION_POINTS||Tt,Ye=s.CUSTOM_ELEMENT_HANDLING||{},s.CUSTOM_ELEMENT_HANDLING&&Bt(s.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ye.tagNameCheck=s.CUSTOM_ELEMENT_HANDLING.tagNameCheck),s.CUSTOM_ELEMENT_HANDLING&&Bt(s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ye.attributeNameCheck=s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),s.CUSTOM_ELEMENT_HANDLING&&\"boolean\"==typeof s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ye.allowCustomizedBuiltInElements=s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),st&&(tt=!1),ut&&(lt=!0),yt&&(qe=addToSet({},nI),We=[],!0===yt.html&&(addToSet(qe,Kj),addToSet(We,sI)),!0===yt.svg&&(addToSet(qe,Gj),addToSet(We,oI),addToSet(We,aI)),!0===yt.svgFilters&&(addToSet(qe,Xj),addToSet(We,oI),addToSet(We,aI)),!0===yt.mathMl&&(addToSet(qe,tI),addToSet(We,iI),addToSet(We,aI))),s.ADD_TAGS&&(qe===ze&&(qe=clone(qe)),addToSet(qe,s.ADD_TAGS,Dt)),s.ADD_ATTR&&(We===He&&(We=clone(We)),addToSet(We,s.ADD_ATTR,Dt)),s.ADD_URI_SAFE_ATTR&&addToSet(Et,s.ADD_URI_SAFE_ATTR,Dt),s.FORBID_CONTENTS&&(vt===bt&&(vt=clone(vt)),addToSet(vt,s.FORBID_CONTENTS,Dt)),mt&&(qe[\"#text\"]=!0),it&&addToSet(qe,[\"html\",\"head\",\"body\"]),qe.table&&(addToSet(qe,[\"tbody\"]),delete Xe.tbody),s.TRUSTED_TYPES_POLICY){if(\"function\"!=typeof s.TRUSTED_TYPES_POLICY.createHTML)throw Jj('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');if(\"function\"!=typeof s.TRUSTED_TYPES_POLICY.createScriptURL)throw Jj('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');ie=s.TRUSTED_TYPES_POLICY,ae=ie.createHTML(\"\")}else void 0===ie&&(ie=function _createTrustedTypesPolicy(s,o){if(\"object\"!=typeof s||\"function\"!=typeof s.createPolicy)return null;let i=null;const a=\"data-tt-policy-suffix\";o&&o.hasAttribute(a)&&(i=o.getAttribute(a));const u=\"dompurify\"+(i?\"#\"+i:\"\");try{return s.createPolicy(u,{createHTML:s=>s,createScriptURL:s=>s})}catch(s){return console.warn(\"TrustedTypes policy \"+u+\" could not be created.\"),null}}($,a)),null!==ie&&\"string\"==typeof ae&&(ae=ie.createHTML(\"\"));JA&&JA(s),Lt=s}},qt=addToSet({},[...Gj,...Xj,...eI]),Vt=addToSet({},[...tI,...rI]),Ut=function _forceRemove(s){ej(DOMPurify.removed,{element:s});try{ee(s).removeChild(s)}catch(o){z(s)}},zt=function _removeAttribute(s,o){try{ej(DOMPurify.removed,{attribute:o.getAttributeNode(s),from:o})}catch(s){ej(DOMPurify.removed,{attribute:null,from:o})}if(o.removeAttribute(s),\"is\"===s)if(lt||ut)try{Ut(o)}catch(s){}else try{o.setAttribute(s,\"\")}catch(s){}},Wt=function _initDocument(s){let i=null,a=null;if(ct)s=\"<remove></remove>\"+s;else{const o=Cj(s,/^[\\r\\n\\t ]+/);a=o&&o[0]}\"application/xhtml+xml\"===Mt&&Ct===Ot&&(s='<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>'+s+\"</body></html>\");const u=ie?ie.createHTML(s):s;if(Ct===Ot)try{i=(new B).parseFromString(u,Mt)}catch(s){}if(!i||!i.documentElement){i=ce.createDocument(Ct,\"template\",null);try{i.documentElement.innerHTML=At?ae:u}catch(s){}}const _=i.body||i.documentElement;return s&&a&&_.insertBefore(o.createTextNode(a),_.childNodes[0]||null),Ct===Ot?de.call(i,it?\"html\":\"body\")[0]:it?i.documentElement:_},Jt=function _createNodeIterator(s){return le.call(s.ownerDocument||s,s,C.SHOW_ELEMENT|C.SHOW_COMMENT|C.SHOW_TEXT|C.SHOW_PROCESSING_INSTRUCTION|C.SHOW_CDATA_SECTION,null)},Ht=function _isClobbered(s){return s instanceof L&&(\"string\"!=typeof s.nodeName||\"string\"!=typeof s.textContent||\"function\"!=typeof s.removeChild||!(s.attributes instanceof j)||\"function\"!=typeof s.removeAttribute||\"function\"!=typeof s.setAttribute||\"string\"!=typeof s.namespaceURI||\"function\"!=typeof s.insertBefore||\"function\"!=typeof s.hasChildNodes)},Kt=function _isNode(s){return\"function\"==typeof w&&s instanceof w};function _executeHooks(s,o,i){XA(s,(s=>{s.call(DOMPurify,o,i,Lt)}))}const Gt=function _sanitizeElements(s){let o=null;if(_executeHooks(ye.beforeSanitizeElements,s,null),Ht(s))return Ut(s),!0;const i=Dt(s.nodeName);if(_executeHooks(ye.uponSanitizeElement,s,{tagName:i,allowedTags:qe}),s.hasChildNodes()&&!Kt(s.firstElementChild)&&zj(/<[/\\w]/g,s.innerHTML)&&zj(/<[/\\w]/g,s.textContent))return Ut(s),!0;if(s.nodeType===SI)return Ut(s),!0;if(ot&&s.nodeType===EI&&zj(/<[/\\w]/g,s.data))return Ut(s),!0;if(!qe[i]||Xe[i]){if(!Xe[i]&&Xt(i)){if(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,i))return!1;if(Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(i))return!1}if(mt&&!vt[i]){const o=ee(s)||s.parentNode,i=Z(s)||s.childNodes;if(i&&o){for(let a=i.length-1;a>=0;--a){const u=U(i[a],!0);u.__removalCount=(s.__removalCount||0)+1,o.insertBefore(u,Y(s))}}}return Ut(s),!0}return s instanceof x&&!function _checkValidNamespace(s){let o=ee(s);o&&o.tagName||(o={namespaceURI:Ct,tagName:\"template\"});const i=mj(s.tagName),a=mj(o.tagName);return!!jt[s.namespaceURI]&&(s.namespaceURI===kt?o.namespaceURI===Ot?\"svg\"===i:o.namespaceURI===xt?\"svg\"===i&&(\"annotation-xml\"===a||Pt[a]):Boolean(qt[i]):s.namespaceURI===xt?o.namespaceURI===Ot?\"math\"===i:o.namespaceURI===kt?\"math\"===i&&Tt[a]:Boolean(Vt[i]):s.namespaceURI===Ot?!(o.namespaceURI===kt&&!Tt[a])&&!(o.namespaceURI===xt&&!Pt[a])&&!Vt[i]&&(Nt[i]||!qt[i]):!(\"application/xhtml+xml\"!==Mt||!jt[s.namespaceURI]))}(s)?(Ut(s),!0):\"noscript\"!==i&&\"noembed\"!==i&&\"noframes\"!==i||!zj(/<\\/no(script|embed|frames)/i,s.innerHTML)?(st&&s.nodeType===_I&&(o=s.textContent,XA([be,_e,Se],(s=>{o=Aj(o,s,\" \")})),s.textContent!==o&&(ej(DOMPurify.removed,{element:s.cloneNode()}),s.textContent=o)),_executeHooks(ye.afterSanitizeElements,s,null),!1):(Ut(s),!0)},Yt=function _isValidAttribute(s,i,a){if(ht&&(\"id\"===i||\"name\"===i)&&(a in o||a in Ft))return!1;if(tt&&!Qe[i]&&zj(we,i));else if(et&&zj(xe,i));else if(!We[i]||Qe[i]){if(!(Xt(s)&&(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,s)||Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(s))&&(Ye.attributeNameCheck instanceof RegExp&&zj(Ye.attributeNameCheck,i)||Ye.attributeNameCheck instanceof Function&&Ye.attributeNameCheck(i))||\"is\"===i&&Ye.allowCustomizedBuiltInElements&&(Ye.tagNameCheck instanceof RegExp&&zj(Ye.tagNameCheck,a)||Ye.tagNameCheck instanceof Function&&Ye.tagNameCheck(a))))return!1}else if(Et[i]);else if(zj($e,Aj(a,Te,\"\")));else if(\"src\"!==i&&\"xlink:href\"!==i&&\"href\"!==i||\"script\"===s||0!==Nj(a,\"data:\")||!_t[s]){if(rt&&!zj(Pe,Aj(a,Te,\"\")));else if(a)return!1}else;return!0},Xt=function _isBasicCustomElement(s){return\"annotation-xml\"!==s&&Cj(s,Re)},Qt=function _sanitizeAttributes(s){_executeHooks(ye.beforeSanitizeAttributes,s,null);const{attributes:o}=s;if(!o||Ht(s))return;const i={attrName:\"\",attrValue:\"\",keepAttr:!0,allowedAttributes:We,forceKeepAttr:void 0};let a=o.length;for(;a--;){const u=o[a],{name:_,namespaceURI:w,value:x}=u,C=Dt(_);let j=\"value\"===_?x:Bj(x);if(i.attrName=C,i.attrValue=j,i.keepAttr=!0,i.forceKeepAttr=void 0,_executeHooks(ye.uponSanitizeAttribute,s,i),j=i.attrValue,!dt||\"id\"!==C&&\"name\"!==C||(zt(_,s),j=\"user-content-\"+j),ot&&zj(/((--!?|])>)|<\\/(style|title)/i,j)){zt(_,s);continue}if(i.forceKeepAttr)continue;if(zt(_,s),!i.keepAttr)continue;if(!nt&&zj(/\\/>/i,j)){zt(_,s);continue}st&&XA([be,_e,Se],(s=>{j=Aj(j,s,\" \")}));const L=Dt(s.nodeName);if(Yt(L,C,j)){if(ie&&\"object\"==typeof $&&\"function\"==typeof $.getAttributeType)if(w);else switch($.getAttributeType(L,C)){case\"TrustedHTML\":j=ie.createHTML(j);break;case\"TrustedScriptURL\":j=ie.createScriptURL(j)}try{w?s.setAttributeNS(w,_,j):s.setAttribute(_,j),Ht(s)?Ut(s):ZA(DOMPurify.removed)}catch(s){}}}_executeHooks(ye.afterSanitizeAttributes,s,null)},Zt=function _sanitizeShadowDOM(s){let o=null;const i=Jt(s);for(_executeHooks(ye.beforeSanitizeShadowDOM,s,null);o=i.nextNode();)_executeHooks(ye.uponSanitizeShadowNode,o,null),Gt(o),Qt(o),o.content instanceof u&&_sanitizeShadowDOM(o.content);_executeHooks(ye.afterSanitizeShadowDOM,s,null)};return DOMPurify.sanitize=function(s){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=null,_=null,x=null,C=null;if(At=!s,At&&(s=\"\\x3c!--\\x3e\"),\"string\"!=typeof s&&!Kt(s)){if(\"function\"!=typeof s.toString)throw Jj(\"toString is not a function\");if(\"string\"!=typeof(s=s.toString()))throw Jj(\"dirty is not a string, aborting\")}if(!DOMPurify.isSupported)return s;if(at||$t(o),DOMPurify.removed=[],\"string\"==typeof s&&(gt=!1),gt){if(s.nodeName){const o=Dt(s.nodeName);if(!qe[o]||Xe[o])throw Jj(\"root node is forbidden and cannot be sanitized in-place\")}}else if(s instanceof w)a=Wt(\"\\x3c!----\\x3e\"),_=a.ownerDocument.importNode(s,!0),_.nodeType===bI&&\"BODY\"===_.nodeName||\"HTML\"===_.nodeName?a=_:a.appendChild(_);else{if(!lt&&!st&&!it&&-1===s.indexOf(\"<\"))return ie&&pt?ie.createHTML(s):s;if(a=Wt(s),!a)return lt?null:pt?ae:\"\"}a&&ct&&Ut(a.firstChild);const j=Jt(gt?s:a);for(;x=j.nextNode();)Gt(x),Qt(x),x.content instanceof u&&Zt(x.content);if(gt)return s;if(lt){if(ut)for(C=pe.call(a.ownerDocument);a.firstChild;)C.appendChild(a.firstChild);else C=a;return(We.shadowroot||We.shadowrootmode)&&(C=fe.call(i,C,!0)),C}let L=it?a.outerHTML:a.innerHTML;return it&&qe[\"!doctype\"]&&a.ownerDocument&&a.ownerDocument.doctype&&a.ownerDocument.doctype.name&&zj(gI,a.ownerDocument.doctype.name)&&(L=\"<!DOCTYPE \"+a.ownerDocument.doctype.name+\">\\n\"+L),st&&XA([be,_e,Se],(s=>{L=Aj(L,s,\" \")})),ie&&pt?ie.createHTML(L):L},DOMPurify.setConfig=function(){$t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),at=!0},DOMPurify.clearConfig=function(){Lt=null,at=!1},DOMPurify.isValidAttribute=function(s,o,i){Lt||$t({});const a=Dt(s),u=Dt(o);return Yt(a,u,i)},DOMPurify.addHook=function(s,o){\"function\"==typeof o&&ej(ye[s],o)},DOMPurify.removeHook=function(s,o){if(void 0!==o){const i=QA(ye[s],o);return-1===i?void 0:fj(ye[s],i,1)[0]}return ZA(ye[s])},DOMPurify.removeHooks=function(s){ye[s]=[]},DOMPurify.removeAllHooks=function(){ye={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},DOMPurify}();kI.addHook&&kI.addHook(\"beforeSanitizeElements\",(function(s){return s.href&&s.setAttribute(\"rel\",\"noopener noreferrer\"),s}));const OI=function Markdown({source:s,className:o=\"\",getConfigs:i=()=>({useUnsafeMarkdown:!1})}){if(\"string\"!=typeof s)return null;const a=new Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:\"_blank\"}).use(linkify);a.core.ruler.disable([\"replacements\",\"smartquotes\"]);const{useUnsafeMarkdown:u}=i(),_=a.render(s),w=sanitizer(_,{useUnsafeMarkdown:u});return s&&_&&w?Re.createElement(\"div\",{className:Jn()(o,\"markdown\"),dangerouslySetInnerHTML:{__html:w}}):null};function sanitizer(s,{useUnsafeMarkdown:o=!1}={}){const i=o,a=o?[]:[\"style\",\"class\"];return o&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn(\"useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0.\"),sanitizer.hasWarnedAboutDeprecation=!0),kI.sanitize(s,{ADD_ATTR:[\"target\"],FORBID_TAGS:[\"style\",\"form\"],ALLOW_DATA_ATTR:i,FORBID_ATTR:a})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends Re.Component{render(){const{errSelectors:s,specSelectors:o,getComponent:i}=this.props,a=i(\"SvgAssets\"),u=i(\"InfoContainer\",!0),_=i(\"VersionPragmaFilter\"),w=i(\"operations\",!0),x=i(\"Models\",!0),C=i(\"Webhooks\",!0),j=i(\"Row\"),L=i(\"Col\"),B=i(\"errors\",!0),$=i(\"ServersContainer\",!0),V=i(\"SchemesContainer\",!0),U=i(\"AuthorizeBtnContainer\",!0),z=i(\"FilterContainer\",!0),Y=o.isSwagger2(),Z=o.isOAS3(),ee=o.isOAS31(),ie=!o.specStr(),ae=o.loadingStatus();let ce=null;if(\"loading\"===ae&&(ce=Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"div\",{className:\"loading\"})))),\"failed\"===ae&&(ce=Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"h4\",{className:\"title\"},\"Failed to load API definition.\"),Re.createElement(B,null)))),\"failedConfig\"===ae){const o=s.lastError(),i=o?o.get(\"message\"):\"\";ce=Re.createElement(\"div\",{className:\"info failed-config\"},Re.createElement(\"div\",{className:\"loading-container\"},Re.createElement(\"h4\",{className:\"title\"},\"Failed to load remote configuration.\"),Re.createElement(\"p\",null,i)))}if(!ce&&ie&&(ce=Re.createElement(\"h4\",null,\"No API definition provided.\")),ce)return Re.createElement(\"div\",{className:\"swagger-ui\"},Re.createElement(\"div\",{className:\"loading-container\"},ce));const le=o.servers(),pe=o.schemes(),de=le&&le.size,fe=pe&&pe.size,ye=!!o.securityDefinitions();return Re.createElement(\"div\",{className:\"swagger-ui\"},Re.createElement(a,null),Re.createElement(_,{isSwagger2:Y,isOAS3:Z,alsoShow:Re.createElement(B,null)},Re.createElement(B,null),Re.createElement(j,{className:\"information-container\"},Re.createElement(L,{mobile:12},Re.createElement(u,null))),de||fe||ye?Re.createElement(\"div\",{className:\"scheme-container\"},Re.createElement(L,{className:\"schemes wrapper\",mobile:12},de||fe?Re.createElement(\"div\",{className:\"schemes-server-container\"},de?Re.createElement($,null):null,fe?Re.createElement(V,null):null):null,ye?Re.createElement(U,null):null)):null,Re.createElement(z,null),Re.createElement(j,null,Re.createElement(L,{mobile:12,desktop:12},Re.createElement(w,null))),ee&&Re.createElement(j,{className:\"webhooks-container\"},Re.createElement(L,{mobile:12,desktop:12},Re.createElement(C,null))),Re.createElement(j,null,Re.createElement(L,{mobile:12,desktop:12},Re.createElement(x,null)))))}}const core_components=()=>({components:{App:HO,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:rC,InfoContainer,InfoUrl,InfoBasePath,Contact:nC,License:sC,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:operation_Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,responses:responses_Responses,response:response_Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,Property:property,TryItOutButton,Markdown:OI,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example:example_Example,ExamplesSelect,ExamplesSelectValueRetainer}}),form_components=()=>({components:{..._e}}),base=()=>[configsPlugin,util,logs,view,view_legacy,plugins_spec,err,icons,plugins_layout,json_schema_5,json_schema_5_samples,core_components,form_components,swagger_client,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,syntax_highlighting,versions,safe_render()],CI=(0,ze.Map)();function onlyOAS3(s){return(o,i)=>(...a)=>{if(i.getSystem().specSelectors.isOAS3()){const o=s(...a);return\"function\"==typeof o?o(i):o}return o(...a)}}const AI=onlyOAS3(xs()(null)),jI=onlyOAS3(((s,o)=>s=>s.getSystem().specSelectors.findSchema(o))),II=onlyOAS3((()=>s=>{const o=s.getSystem().specSelectors.specJson().getIn([\"components\",\"schemas\"]);return ze.Map.isMap(o)?o:CI})),PI=onlyOAS3((()=>s=>s.getSystem().specSelectors.specJson().hasIn([\"servers\",0]))),TI=onlyOAS3(Vt(Ns,(s=>s.getIn([\"components\",\"securitySchemes\"])||null))),wrap_selectors_validOperationMethods=(s,o)=>(i,...a)=>o.specSelectors.isOAS3()?o.oas3Selectors.validOperationMethods():s(...a),NI=AI,MI=AI,RI=AI,DI=AI,LI=AI;const FI=function wrap_selectors_onlyOAS3(s){return(o,i)=>(...a)=>{if(i.getSystem().specSelectors.isOAS3()){let o=i.getState().getIn([\"spec\",\"resolvedSubtrees\",\"components\",\"securitySchemes\"]);return s(i,o,...a)}return o(...a)}}(Vt((s=>s),(({specSelectors:s})=>s.securityDefinitions()),((s,o)=>{let i=(0,ze.List)();return o?(o.entrySeq().forEach((([s,o])=>{const a=o?.get(\"type\");if(\"oauth2\"===a&&o.get(\"flows\").entrySeq().forEach((([a,u])=>{let _=(0,ze.fromJS)({flow:a,authorizationUrl:u.get(\"authorizationUrl\"),tokenUrl:u.get(\"tokenUrl\"),scopes:u.get(\"scopes\"),type:o.get(\"type\"),description:o.get(\"description\")});i=i.push(new ze.Map({[s]:_.filter((s=>void 0!==s))}))})),\"http\"!==a&&\"apiKey\"!==a||(i=i.push(new ze.Map({[s]:o}))),\"openIdConnect\"===a&&o.get(\"openIdConnectData\")){let a=o.get(\"openIdConnectData\");(a.get(\"grant_types_supported\")||[\"authorization_code\",\"implicit\"]).forEach((u=>{let _=a.get(\"scopes_supported\")&&a.get(\"scopes_supported\").reduce(((s,o)=>s.set(o,\"\")),new ze.Map),w=(0,ze.fromJS)({flow:u,authorizationUrl:a.get(\"authorization_endpoint\"),tokenUrl:a.get(\"token_endpoint\"),scopes:_,type:\"oauth2\",openIdConnectUrl:o.get(\"openIdConnectUrl\")});i=i.push(new ze.Map({[s]:w.filter((s=>void 0!==s))}))}))}})),i):i})));function OAS3ComponentWrapFactory(s){return(o,i)=>a=>\"function\"==typeof i.specSelectors?.isOAS3?i.specSelectors.isOAS3()?Re.createElement(s,Mn()({},a,i,{Ori:o})):Re.createElement(o,a):(console.warn(\"OAS3 wrapper: couldn't get spec\"),null)}const BI=(0,ze.Map)(),selectors_isSwagger2=()=>s=>function isSwagger2(s){const o=s.get(\"swagger\");return\"string\"==typeof o&&\"2.0\"===o}(s.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>s=>function isOAS30(s){const o=s.get(\"openapi\");return\"string\"==typeof o&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(o)}(s.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>s=>s.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(s){return(o,...i)=>a=>{if(a.specSelectors.isOAS3()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null}}const $I=selectors_onlyOAS3((()=>s=>s.specSelectors.specJson().get(\"servers\",BI))),findSchema=(s,o)=>{const i=s.getIn([\"resolvedSubtrees\",\"components\",\"schemas\",o],null),a=s.getIn([\"json\",\"components\",\"schemas\",o],null);return i||a||null},qI=selectors_onlyOAS3(((s,{callbacks:o,specPath:i})=>s=>{const a=s.specSelectors.validOperationMethods();return ze.Map.isMap(o)?o.reduce(((s,o,u)=>{if(!ze.Map.isMap(o))return s;const _=o.reduce(((s,o,_)=>{if(!ze.Map.isMap(o))return s;const w=o.entrySeq().filter((([s])=>a.includes(s))).map((([s,o])=>({operation:(0,ze.Map)({operation:o}),method:s,path:_,callbackName:u,specPath:i.concat([u,_,s])})));return s.concat(w)}),(0,ze.List)());return s.concat(_)}),(0,ze.List)()).groupBy((s=>s.callbackName)).map((s=>s.toArray())).toObject():{}})),callbacks=({callbacks:s,specPath:o,specSelectors:i,getComponent:a})=>{const u=i.callbacksOperations({callbacks:s,specPath:o}),_=Object.keys(u),w=a(\"OperationContainer\",!0);return 0===_.length?Re.createElement(\"span\",null,\"No callbacks\"):Re.createElement(\"div\",null,_.map((s=>Re.createElement(\"div\",{key:`${s}`},Re.createElement(\"h2\",null,s),u[s].map((o=>Re.createElement(w,{key:`${s}-${o.path}-${o.method}`,op:o.operation,tag:\"callbacks\",method:o.method,path:o.path,specPath:o.specPath,allowTryItOut:!1})))))))},getDefaultRequestBodyValue=(s,o,i,a)=>{const u=s.getIn([\"content\",o])??(0,ze.OrderedMap)(),_=u.get(\"schema\",(0,ze.OrderedMap)()).toJS(),w=void 0!==u.get(\"examples\"),x=u.get(\"example\"),C=w?u.getIn([\"examples\",i,\"value\"]):x;return stringify(a.getSampleSchema(_,o,{includeWriteOnly:!0},C))},components_request_body=({userHasEditedBody:s,requestBody:o,requestBodyValue:i,requestBodyInclusionSetting:a,requestBodyErrors:u,getComponent:_,getConfigs:w,specSelectors:x,fn:C,contentType:j,isExecute:L,specPath:B,onChange:$,onChangeIncludeEmpty:V,activeExamplesKey:U,updateActiveExamplesKey:z,setRetainRequestBodyValueFlag:Y})=>{const handleFile=s=>{$(s.target.files[0])},setIsIncludedOptions=s=>{let o={key:s,shouldDispatchInit:!1,defaultValue:!0};return\"no value\"===a.get(s,\"no value\")&&(o.shouldDispatchInit=!0),o},Z=_(\"Markdown\",!0),ee=_(\"modelExample\"),ie=_(\"RequestBodyEditor\"),ae=_(\"HighlightCode\",!0),ce=_(\"ExamplesSelectValueRetainer\"),le=_(\"Example\"),pe=_(\"ParameterIncludeEmpty\"),{showCommonExtensions:de}=w(),fe=o?.get(\"description\")??null,ye=o?.get(\"content\")??new ze.OrderedMap;j=j||ye.keySeq().first()||\"\";const be=ye.get(j)??(0,ze.OrderedMap)(),_e=be.get(\"schema\",(0,ze.OrderedMap)()),Se=be.get(\"examples\",null),we=Se?.map(((s,i)=>{const a=s?.get(\"value\",null);return a&&(s=s.set(\"value\",getDefaultRequestBodyValue(o,j,i,C),a)),s}));u=ze.List.isList(u)?u:(0,ze.List)();if(C.isFileUploadIntended(be?.get(\"schema\"),j)){const s=_(\"Input\");return L?Re.createElement(s,{type:\"file\",onChange:handleFile}):Re.createElement(\"i\",null,\"Example values are not available for \",Re.createElement(\"code\",null,j),\" media types.\")}if(!be.size)return null;if(C.hasSchemaType(be.get(\"schema\"),\"object\")&&(\"application/x-www-form-urlencoded\"===j||0===j.indexOf(\"multipart/\"))&&_e.get(\"properties\",(0,ze.OrderedMap)()).size>0){const s=_(\"JsonSchemaForm\"),o=_(\"ParameterExt\"),j=_e.get(\"properties\",(0,ze.OrderedMap)());return i=ze.Map.isMap(i)?i:(0,ze.OrderedMap)(),Re.createElement(\"div\",{className:\"table-container\"},fe&&Re.createElement(Z,{source:fe}),Re.createElement(\"table\",null,Re.createElement(\"tbody\",null,ze.Map.isMap(j)&&j.entrySeq().map((([j,U])=>{if(U.get(\"readOnly\"))return;const z=U.get(\"oneOf\")?.get(0)?.toJS(),Y=U.get(\"anyOf\")?.get(0)?.toJS();U=(0,ze.fromJS)(C.mergeJsonSchema(U.toJS(),z??Y??{}));let ie=de?getCommonExtensions(U):null;const ae=_e.get(\"required\",(0,ze.List)()).includes(j),ce=C.jsonSchema202012.getType(immutableToJS(U)),le=C.jsonSchema202012.foldType(immutableToJS(U?.get(\"type\"))),fe=C.jsonSchema202012.foldType(immutableToJS(U?.getIn([\"items\",\"type\"]))),ye=U.get(\"format\"),be=U.get(\"description\"),Se=i.getIn([j,\"value\"]),we=i.getIn([j,\"errors\"])||u,xe=a.get(j)||!1;let Pe=C.getSampleSchema(U,!1,{includeWriteOnly:!0});!1===Pe&&(Pe=\"false\"),0===Pe&&(Pe=\"0\"),\"string\"!=typeof Pe&&\"object\"===le&&(Pe=stringify(Pe)),\"string\"==typeof Pe&&\"array\"===le&&(Pe=JSON.parse(Pe));const Te=C.isFileUploadIntended(U),$e=Re.createElement(s,{fn:C,dispatchInitialValue:!Te,schema:U,description:j,getComponent:_,value:void 0===Se?Pe:Se,required:ae,errors:we,onChange:s=>{$(s,[j])}});return Re.createElement(\"tr\",{key:j,className:\"parameters\",\"data-property-name\":j},Re.createElement(\"td\",{className:\"parameters-col_name\"},Re.createElement(\"div\",{className:ae?\"parameter__name required\":\"parameter__name\"},j,ae?Re.createElement(\"span\",null,\" *\"):null),Re.createElement(\"div\",{className:\"parameter__type\"},ce,ye&&Re.createElement(\"span\",{className:\"prop-format\"},\"($\",ye,\")\"),de&&ie.size?ie.entrySeq().map((([s,i])=>Re.createElement(o,{key:`${s}-${i}`,xKey:s,xVal:i}))):null),Re.createElement(\"div\",{className:\"parameter__deprecated\"},U.get(\"deprecated\")?\"deprecated\":null)),Re.createElement(\"td\",{className:\"parameters-col_description\"},Re.createElement(Z,{source:be}),L?Re.createElement(\"div\",null,\"object\"===le||\"object\"===fe?Re.createElement(ee,{getComponent:_,specPath:B.push(\"schema\"),getConfigs:w,isExecute:L,specSelectors:x,schema:U,example:$e}):$e,ae?null:Re.createElement(pe,{onChange:s=>V(j,s),isIncluded:xe,isIncludedOptions:setIsIncludedOptions(j),isDisabled:Array.isArray(Se)?0!==Se.length:!isEmptyValue(Se)})):null))})))))}const xe=getDefaultRequestBodyValue(o,j,U,C);let Pe=null;return getKnownSyntaxHighlighterLanguage(xe)&&(Pe=\"json\"),Re.createElement(\"div\",null,fe&&Re.createElement(Z,{source:fe}),we?Re.createElement(ce,{userHasEditedBody:s,examples:we,currentKey:U,currentUserInputValue:i,onSelect:s=>{z(s)},updateValue:$,defaultToFirstExample:!0,getComponent:_,setRetainRequestBodyValueFlag:Y}):null,L?Re.createElement(\"div\",null,Re.createElement(ie,{value:i,errors:u,defaultValue:xe,onChange:$,getComponent:_})):Re.createElement(ee,{getComponent:_,getConfigs:w,specSelectors:x,expandDepth:1,isExecute:L,schema:be.get(\"schema\"),specPath:B.push(\"content\",j),example:Re.createElement(ae,{className:\"body-param__example\",language:Pe},stringify(i)||xe),includeWriteOnly:!0}),we?Re.createElement(le,{example:we.get(U),getComponent:_,getConfigs:w}):null)};class operation_link_OperationLink extends Re.Component{render(){const{link:s,name:o,getComponent:i}=this.props,a=i(\"Markdown\",!0);let u=s.get(\"operationId\")||s.get(\"operationRef\"),_=s.get(\"parameters\")&&s.get(\"parameters\").toJS(),w=s.get(\"description\");return Re.createElement(\"div\",{className:\"operation-link\"},Re.createElement(\"div\",{className:\"description\"},Re.createElement(\"b\",null,Re.createElement(\"code\",null,o)),w?Re.createElement(a,{source:w}):null),Re.createElement(\"pre\",null,\"Operation `\",u,\"`\",Re.createElement(\"br\",null),Re.createElement(\"br\",null),\"Parameters \",function padString(s,o){if(\"string\"!=typeof o)return\"\";return o.split(\"\\n\").map(((o,i)=>i>0?Array(s+1).join(\" \")+o:o)).join(\"\\n\")}(0,JSON.stringify(_,null,2))||\"{}\",Re.createElement(\"br\",null)))}}const VI=operation_link_OperationLink,components_servers=({servers:s,currentServer:o,setSelectedServer:i,setServerVariableValue:a,getServerVariable:u,getEffectiveServerValue:_})=>{const w=(s.find((s=>s.get(\"url\")===o))||(0,ze.OrderedMap)()).get(\"variables\")||(0,ze.OrderedMap)(),x=0!==w.size;(0,Re.useEffect)((()=>{o||i(s.first()?.get(\"url\"))}),[]),(0,Re.useEffect)((()=>{const u=s.find((s=>s.get(\"url\")===o));if(!u)return void i(s.first().get(\"url\"));(u.get(\"variables\")||(0,ze.OrderedMap)()).map(((s,i)=>{a({server:o,key:i,val:s.get(\"default\")||\"\"})}))}),[o,s]);const C=(0,Re.useCallback)((s=>{i(s.target.value)}),[i]),j=(0,Re.useCallback)((s=>{const i=s.target.getAttribute(\"data-variable\"),u=s.target.value;a({server:o,key:i,val:u})}),[a,o]);return Re.createElement(\"div\",{className:\"servers\"},Re.createElement(\"label\",{htmlFor:\"servers\"},Re.createElement(\"select\",{onChange:C,value:o,id:\"servers\"},s.valueSeq().map((s=>Re.createElement(\"option\",{value:s.get(\"url\"),key:s.get(\"url\")},s.get(\"url\"),s.get(\"description\")&&` - ${s.get(\"description\")}`))).toArray())),x&&Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"computed-url\"},\"Computed URL:\",Re.createElement(\"code\",null,_(o))),Re.createElement(\"h4\",null,\"Server variables\"),Re.createElement(\"table\",null,Re.createElement(\"tbody\",null,w.entrySeq().map((([s,i])=>Re.createElement(\"tr\",{key:s},Re.createElement(\"td\",null,s),Re.createElement(\"td\",null,i.get(\"enum\")?Re.createElement(\"select\",{\"data-variable\":s,onChange:j},i.get(\"enum\").map((i=>Re.createElement(\"option\",{selected:i===u(o,s),key:i,value:i},i)))):Re.createElement(\"input\",{type:\"text\",value:u(o,s)||\"\",onChange:j,\"data-variable\":s})))))))))};class ServersContainer extends Re.Component{render(){const{specSelectors:s,oas3Selectors:o,oas3Actions:i,getComponent:a}=this.props,u=s.servers(),_=a(\"Servers\");return u&&u.size?Re.createElement(\"div\",null,Re.createElement(\"span\",{className:\"servers-title\"},\"Servers\"),Re.createElement(_,{servers:u,currentServer:o.selectedServer(),setSelectedServer:i.setSelectedServer,setServerVariableValue:i.setServerVariableValue,getServerVariable:o.serverVariableValue,getEffectiveServerValue:o.serverEffectiveValue})):null}}const UI=Function.prototype;class RequestBodyEditor extends Re.PureComponent{static defaultProps={onChange:UI,userHasEditedBody:!1};constructor(s,o){super(s,o),this.state={value:stringify(s.value)||s.defaultValue},s.onChange(s.value)}applyDefaultValue=s=>{const{onChange:o,defaultValue:i}=s||this.props;return this.setState({value:i}),o(i)};onChange=s=>{this.props.onChange(stringify(s))};onDomChange=s=>{const o=s.target.value;this.setState({value:o},(()=>this.onChange(o)))};UNSAFE_componentWillReceiveProps(s){this.props.value!==s.value&&s.value!==this.state.value&&this.setState({value:stringify(s.value)}),!s.value&&s.defaultValue&&this.state.value&&this.applyDefaultValue(s)}render(){let{getComponent:s,errors:o}=this.props,{value:i}=this.state,a=o.size>0;const u=s(\"TextArea\");return Re.createElement(\"div\",{className:\"body-param\"},Re.createElement(u,{className:Jn()(\"body-param__text\",{invalid:a}),title:o.size?o.join(\", \"):\"\",value:i,onChange:this.onDomChange}))}}class HttpAuth extends Re.Component{constructor(s,o){super(s,o);let{name:i,schema:a}=this.props,u=this.getValue();this.state={name:i,schema:a,value:u}}getValue(){let{name:s,authorized:o}=this.props;return o&&o.getIn([s,\"value\"])}onChange=s=>{let{onChange:o}=this.props,{value:i,name:a}=s.target,u=Object.assign({},this.state.value);a?u[a]=i:u=i,this.setState({value:u},(()=>o(this.state)))};render(){let{schema:s,getComponent:o,errSelectors:i,name:a,authSelectors:u}=this.props;const _=o(\"Input\"),w=o(\"Row\"),x=o(\"Col\"),C=o(\"authError\"),j=o(\"Markdown\",!0),L=o(\"JumpToPath\",!0),B=(s.get(\"scheme\")||\"\").toLowerCase(),$=u.selectAuthPath(a);let V=this.getValue(),U=i.allErrors().filter((s=>s.get(\"authId\")===a));if(\"basic\"===B){let o=V?V.get(\"username\"):null;return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a),\"  (http, Basic)\",Re.createElement(L,{path:$})),o&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-basic-username\"},\"Username:\"),o?Re.createElement(\"code\",null,\" \",o,\" \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-basic-username\",type:\"text\",required:\"required\",name:\"username\",\"aria-label\":\"auth-basic-username\",onChange:this.onChange,autoFocus:!0}))),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-basic-password\"},\"Password:\"),o?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-basic-password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",\"aria-label\":\"auth-basic-password\",onChange:this.onChange}))),U.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o}))))}return\"bearer\"===B?Re.createElement(\"div\",null,Re.createElement(\"h4\",null,Re.createElement(\"code\",null,a),\"  (http, Bearer)\",Re.createElement(L,{path:$})),V&&Re.createElement(\"h6\",null,\"Authorized\"),Re.createElement(w,null,Re.createElement(j,{source:s.get(\"description\")})),Re.createElement(w,null,Re.createElement(\"label\",{htmlFor:\"auth-bearer-value\"},\"Value:\"),V?Re.createElement(\"code\",null,\" ****** \"):Re.createElement(x,null,Re.createElement(_,{id:\"auth-bearer-value\",type:\"text\",\"aria-label\":\"auth-bearer-value\",onChange:this.onChange,autoFocus:!0}))),U.valueSeq().map(((s,o)=>Re.createElement(C,{error:s,key:o})))):Re.createElement(\"div\",null,Re.createElement(\"em\",null,Re.createElement(\"b\",null,a),\" HTTP authentication: unsupported scheme \",`'${B}'`))}}class operation_servers_OperationServers extends Re.Component{setSelectedServer=s=>{const{path:o,method:i}=this.props;return this.forceUpdate(),this.props.setSelectedServer(s,`${o}:${i}`)};setServerVariableValue=s=>{const{path:o,method:i}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...s,namespace:`${o}:${i}`})};getSelectedServer=()=>{const{path:s,method:o}=this.props;return this.props.getSelectedServer(`${s}:${o}`)};getServerVariable=(s,o)=>{const{path:i,method:a}=this.props;return this.props.getServerVariable({namespace:`${i}:${a}`,server:s},o)};getEffectiveServerValue=s=>{const{path:o,method:i}=this.props;return this.props.getEffectiveServerValue({server:s,namespace:`${o}:${i}`})};render(){const{operationServers:s,pathServers:o,getComponent:i}=this.props;if(!s&&!o)return null;const a=i(\"Servers\"),u=s||o,_=s?\"operation\":\"path\";return Re.createElement(\"div\",{className:\"opblock-section operation-servers\"},Re.createElement(\"div\",{className:\"opblock-section-header\"},Re.createElement(\"div\",{className:\"tab-header\"},Re.createElement(\"h4\",{className:\"opblock-title\"},\"Servers\"))),Re.createElement(\"div\",{className:\"opblock-description-wrapper\"},Re.createElement(\"h4\",{className:\"message\"},\"These \",_,\"-level options override the global server options.\"),Re.createElement(a,{servers:u,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}const zI={Callbacks:callbacks,HttpAuth,RequestBody:components_request_body,Servers:components_servers,ServersContainer,RequestBodyEditor,OperationServers:operation_servers_OperationServers,operationLink:VI},WI=new Remarkable(\"commonmark\");WI.block.ruler.enable([\"table\"]),WI.set({linkTarget:\"_blank\"});const JI=OAS3ComponentWrapFactory((({source:s,className:o=\"\",getConfigs:i=()=>({useUnsafeMarkdown:!1})})=>{if(\"string\"!=typeof s)return null;if(s){const{useUnsafeMarkdown:a}=i(),u=sanitizer(WI.render(s),{useUnsafeMarkdown:a});let _;return\"string\"==typeof u&&(_=u.trim()),Re.createElement(\"div\",{dangerouslySetInnerHTML:{__html:_},className:Jn()(o,\"renderedMarkdown\")})}return null})),HI=OAS3ComponentWrapFactory((({Ori:s,...o})=>{const{schema:i,getComponent:a,errSelectors:u,authorized:_,onAuthChange:w,name:x,authSelectors:C}=o,j=a(\"HttpAuth\");return\"http\"===i.get(\"type\")?Re.createElement(j,{key:x,schema:i,name:x,errSelectors:u,authorized:_,getComponent:a,onChange:w,authSelectors:C}):Re.createElement(s,o)})),KI=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends Re.Component{render(){let{getConfigs:s,schema:o,Ori:i}=this.props,a=[\"model-box\"],u=null;return!0===o.get(\"deprecated\")&&(a.push(\"deprecated\"),u=Re.createElement(\"span\",{className:\"model-deprecated-warning\"},\"Deprecated:\")),Re.createElement(\"div\",{className:a.join(\" \")},u,Re.createElement(i,Mn()({},this.props,{getConfigs:s,depth:1,expandDepth:this.props.expandDepth||0})))}}const GI=OAS3ComponentWrapFactory(ModelComponent),YI=OAS3ComponentWrapFactory((({Ori:s,...o})=>{const{schema:i,getComponent:a,errors:u,onChange:_,fn:w}=o,x=w.isFileUploadIntended(i),C=a(\"Input\");return x?Re.createElement(C,{type:\"file\",className:u.length?\"invalid\":\"\",title:u.length?u:\"\",onChange:s=>{_(s.target.files[0])},disabled:s.isDisabled}):Re.createElement(s,o)})),XI={Markdown:JI,AuthItem:HI,OpenAPIVersion:function OAS30ComponentWrapFactory(s){return(o,i)=>a=>\"function\"==typeof i.specSelectors?.isOAS30?i.specSelectors.isOAS30()?Re.createElement(s,Mn()({},a,i,{Ori:o})):Re.createElement(o,a):(console.warn(\"OAS30 wrapper: couldn't get spec\"),null)}((s=>{const{Ori:o}=s;return Re.createElement(o,{oasVersion:\"3.0\"})})),JsonSchema_string:YI,model:GI,onlineValidatorBadge:KI},QI=\"oas3_set_servers\",ZI=\"oas3_set_request_body_value\",eP=\"oas3_set_request_body_retain_flag\",tP=\"oas3_set_request_body_inclusion\",rP=\"oas3_set_active_examples_member\",nP=\"oas3_set_request_content_type\",sP=\"oas3_set_response_content_type\",oP=\"oas3_set_server_variable_value\",iP=\"oas3_set_request_body_validate_error\",aP=\"oas3_clear_request_body_validate_error\",cP=\"oas3_clear_request_body_value\";function setSelectedServer(s,o){return{type:QI,payload:{selectedServerUrl:s,namespace:o}}}function setRequestBodyValue({value:s,pathMethod:o}){return{type:ZI,payload:{value:s,pathMethod:o}}}const setRetainRequestBodyValueFlag=({value:s,pathMethod:o})=>({type:eP,payload:{value:s,pathMethod:o}});function setRequestBodyInclusion({value:s,pathMethod:o,name:i}){return{type:tP,payload:{value:s,pathMethod:o,name:i}}}function setActiveExamplesMember({name:s,pathMethod:o,contextType:i,contextName:a}){return{type:rP,payload:{name:s,pathMethod:o,contextType:i,contextName:a}}}function setRequestContentType({value:s,pathMethod:o}){return{type:nP,payload:{value:s,pathMethod:o}}}function setResponseContentType({value:s,path:o,method:i}){return{type:sP,payload:{value:s,path:o,method:i}}}function setServerVariableValue({server:s,namespace:o,key:i,val:a}){return{type:oP,payload:{server:s,namespace:o,key:i,val:a}}}const setRequestBodyValidateError=({path:s,method:o,validationErrors:i})=>({type:iP,payload:{path:s,method:o,validationErrors:i}}),clearRequestBodyValidateError=({path:s,method:o})=>({type:aP,payload:{path:s,method:o}}),initRequestBodyValidateError=({pathMethod:s})=>({type:aP,payload:{path:s[0],method:s[1]}}),clearRequestBodyValue=({pathMethod:s})=>({type:cP,payload:{pathMethod:s}});var lP=__webpack_require__(60680),uP=__webpack_require__.n(lP);const oas3_selectors_onlyOAS3=s=>(o,...i)=>a=>{if(a.getSystem().specSelectors.isOAS3()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null};const pP=oas3_selectors_onlyOAS3(((s,o)=>{const i=o?[o,\"selectedServer\"]:[\"selectedServer\"];return s.getIn(i)||\"\"})),hP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"bodyValue\"])||null)),dP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"retainBodyValue\"])||!1)),selectDefaultRequestBodyValue=(s,o,i)=>s=>{const{oas3Selectors:a,specSelectors:u,fn:_}=s.getSystem();if(u.isOAS3()){const s=a.requestContentType(o,i);if(s)return getDefaultRequestBodyValue(u.specResolvedSubtree([\"paths\",o,i,\"requestBody\"]),s,a.activeExamplesMember(o,i,\"requestBody\",\"requestBody\"),_)}return null},fP=oas3_selectors_onlyOAS3(((s,o,i)=>s=>{const{oas3Selectors:a,specSelectors:u,fn:_}=s;let w=!1;const x=a.requestContentType(o,i);let C=a.requestBodyValue(o,i);const j=u.specResolvedSubtree([\"paths\",o,i,\"requestBody\"]);if(!j)return!1;if(ze.Map.isMap(C)&&(C=stringify(C.mapEntries((s=>ze.Map.isMap(s[1])?[s[0],s[1].get(\"value\")]:s)).toJS())),ze.List.isList(C)&&(C=stringify(C)),x){const s=getDefaultRequestBodyValue(j,x,a.activeExamplesMember(o,i,\"requestBody\",\"requestBody\"),_);w=!!C&&C!==s}return w})),mP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"bodyInclusion\"])||(0,ze.Map)())),gP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"errors\"])||null)),yP=oas3_selectors_onlyOAS3(((s,o,i,a,u)=>s.getIn([\"examples\",o,i,a,u,\"activeExample\"])||null)),vP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"requestContentType\"])||null)),bP=oas3_selectors_onlyOAS3(((s,o,i)=>s.getIn([\"requestData\",o,i,\"responseContentType\"])||null)),_P=oas3_selectors_onlyOAS3(((s,o,i)=>{let a;if(\"string\"!=typeof o){const{server:s,namespace:u}=o;a=u?[u,\"serverVariableValues\",s,i]:[\"serverVariableValues\",s,i]}else{a=[\"serverVariableValues\",o,i]}return s.getIn(a)||null})),SP=oas3_selectors_onlyOAS3(((s,o)=>{let i;if(\"string\"!=typeof o){const{server:s,namespace:a}=o;i=a?[a,\"serverVariableValues\",s]:[\"serverVariableValues\",s]}else{i=[\"serverVariableValues\",o]}return s.getIn(i)||(0,ze.OrderedMap)()})),EP=oas3_selectors_onlyOAS3(((s,o)=>{var i,a;if(\"string\"!=typeof o){const{server:u,namespace:_}=o;a=u,i=_?s.getIn([_,\"serverVariableValues\",a]):s.getIn([\"serverVariableValues\",a])}else a=o,i=s.getIn([\"serverVariableValues\",a]);i=i||(0,ze.OrderedMap)();let u=a;return i.map(((s,o)=>{u=u.replace(new RegExp(`{${uP()(o)}}`,\"g\"),s)})),u})),wP=function validateRequestBodyIsRequired(s){return(...o)=>i=>{const a=i.getSystem().specSelectors.specJson();let u=[...o][1]||[];return!a.getIn([\"paths\",...u,\"requestBody\",\"required\"])||s(...o)}}(((s,o)=>((s,o)=>(o=o||[],!!s.getIn([\"requestData\",...o,\"bodyValue\"])))(s,o))),validateShallowRequired=(s,{oas3RequiredRequestBodyContentType:o,oas3RequestContentType:i,oas3RequestBodyValue:a})=>{let u=[];if(!ze.Map.isMap(a))return u;let _=[];return Object.keys(o.requestContentType).forEach((s=>{if(s===i){o.requestContentType[s].forEach((s=>{_.indexOf(s)<0&&_.push(s)}))}})),_.forEach((s=>{a.getIn([s,\"value\"])||u.push(s)})),u},xP=xs()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"]),kP={[QI]:(s,{payload:{selectedServerUrl:o,namespace:i}})=>{const a=i?[i,\"selectedServer\"]:[\"selectedServer\"];return s.setIn(a,o)},[ZI]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;if(!ze.Map.isMap(o))return s.setIn([\"requestData\",a,u,\"bodyValue\"],o);let _,w=s.getIn([\"requestData\",a,u,\"bodyValue\"])||(0,ze.Map)();ze.Map.isMap(w)||(w=(0,ze.Map)());const[...x]=o.keys();return x.forEach((s=>{let i=o.getIn([s]);w.has(s)&&ze.Map.isMap(i)||(_=w.setIn([s,\"value\"],i))})),s.setIn([\"requestData\",a,u,\"bodyValue\"],_)},[eP]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;return s.setIn([\"requestData\",a,u,\"retainBodyValue\"],o)},[tP]:(s,{payload:{value:o,pathMethod:i,name:a}})=>{let[u,_]=i;return s.setIn([\"requestData\",u,_,\"bodyInclusion\",a],o)},[rP]:(s,{payload:{name:o,pathMethod:i,contextType:a,contextName:u}})=>{let[_,w]=i;return s.setIn([\"examples\",_,w,a,u,\"activeExample\"],o)},[nP]:(s,{payload:{value:o,pathMethod:i}})=>{let[a,u]=i;return s.setIn([\"requestData\",a,u,\"requestContentType\"],o)},[sP]:(s,{payload:{value:o,path:i,method:a}})=>s.setIn([\"requestData\",i,a,\"responseContentType\"],o),[oP]:(s,{payload:{server:o,namespace:i,key:a,val:u}})=>{const _=i?[i,\"serverVariableValues\",o,a]:[\"serverVariableValues\",o,a];return s.setIn(_,u)},[iP]:(s,{payload:{path:o,method:i,validationErrors:a}})=>{let u=[];if(u.push(\"Required field is not provided\"),a.missingBodyValue)return s.setIn([\"requestData\",o,i,\"errors\"],(0,ze.fromJS)(u));if(a.missingRequiredKeys&&a.missingRequiredKeys.length>0){const{missingRequiredKeys:_}=a;return s.updateIn([\"requestData\",o,i,\"bodyValue\"],(0,ze.fromJS)({}),(s=>_.reduce(((s,o)=>s.setIn([o,\"errors\"],(0,ze.fromJS)(u))),s)))}return console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\"),s},[aP]:(s,{payload:{path:o,method:i}})=>{const a=s.getIn([\"requestData\",o,i,\"bodyValue\"]);if(!ze.Map.isMap(a))return s.setIn([\"requestData\",o,i,\"errors\"],(0,ze.fromJS)([]));const[...u]=a.keys();return u?s.updateIn([\"requestData\",o,i,\"bodyValue\"],(0,ze.fromJS)({}),(s=>u.reduce(((s,o)=>s.setIn([o,\"errors\"],(0,ze.fromJS)([]))),s))):s},[cP]:(s,{payload:{pathMethod:o}})=>{let[i,a]=o;const u=s.getIn([\"requestData\",i,a,\"bodyValue\"]);return u?ze.Map.isMap(u)?s.setIn([\"requestData\",i,a,\"bodyValue\"],(0,ze.Map)()):s.setIn([\"requestData\",i,a,\"bodyValue\"],\"\"):s}};function oas3({getSystem:s}){const o=(s=>(o,i=null)=>{const{getConfigs:a,fn:u}=s(),{fileUploadMediaTypes:_}=a();if(\"string\"==typeof i&&_.some((s=>i.startsWith(s))))return!0;const w=ze.Map.isMap(o);if(!w&&!as()(o))return!1;const x=w?o.get(\"format\"):o.format;return u.hasSchemaType(o,\"string\")&&[\"binary\",\"byte\"].includes(x)})(s);return{components:zI,wrapComponents:XI,statePlugins:{spec:{wrapSelectors:Se,selectors:xe},auth:{wrapSelectors:we},oas3:{actions:{...Pe},reducers:kP,selectors:{...Te}}},fn:{isFileUploadIntended:o,isFileUploadIntendedOAS30:o}}}const webhooks=({specSelectors:s,getComponent:o})=>{const i=s.selectWebhooksOperations(),a=Object.keys(i),u=o(\"OperationContainer\",!0);return 0===a.length?null:Re.createElement(\"div\",{className:\"webhooks\"},Re.createElement(\"h2\",null,\"Webhooks\"),a.map((s=>Re.createElement(\"div\",{key:`${s}-webhook`},i[s].map((o=>Re.createElement(u,{key:`${s}-${o.method}-webhook`,op:o.operation,tag:\"webhooks\",method:o.method,path:s,specPath:(0,ze.List)(o.specPath),allowTryItOut:!1})))))))},oas31_components_license=({getComponent:s,specSelectors:o})=>{const i=o.selectLicenseNameField(),a=o.selectLicenseUrl(),u=s(\"Link\");return Re.createElement(\"div\",{className:\"info__license\"},a?Re.createElement(\"div\",{className:\"info__license__url\"},Re.createElement(u,{target:\"_blank\",href:sanitizeUrl(a)},i)):Re.createElement(\"span\",null,i))},oas31_components_contact=({getComponent:s,specSelectors:o})=>{const i=o.selectContactNameField(),a=o.selectContactUrl(),u=o.selectContactEmailField(),_=s(\"Link\");return Re.createElement(\"div\",{className:\"info__contact\"},a&&Re.createElement(\"div\",null,Re.createElement(_,{href:sanitizeUrl(a),target:\"_blank\"},i,\" - Website\")),u&&Re.createElement(_,{href:sanitizeUrl(`mailto:${u}`)},a?`Send email to ${i}`:`Contact ${i}`))},oas31_components_info=({getComponent:s,specSelectors:o})=>{const i=o.version(),a=o.url(),u=o.basePath(),_=o.host(),w=o.selectInfoSummaryField(),x=o.selectInfoDescriptionField(),C=o.selectInfoTitleField(),j=o.selectInfoTermsOfServiceUrl(),L=o.selectExternalDocsUrl(),B=o.selectExternalDocsDescriptionField(),$=o.contact(),V=o.license(),U=s(\"Markdown\",!0),z=s(\"Link\"),Y=s(\"VersionStamp\"),Z=s(\"OpenAPIVersion\"),ee=s(\"InfoUrl\"),ie=s(\"InfoBasePath\"),ae=s(\"License\",!0),ce=s(\"Contact\",!0),le=s(\"JsonSchemaDialect\",!0);return Re.createElement(\"div\",{className:\"info\"},Re.createElement(\"hgroup\",{className:\"main\"},Re.createElement(\"h2\",{className:\"title\"},C,Re.createElement(\"span\",null,i&&Re.createElement(Y,{version:i}),Re.createElement(Z,{oasVersion:\"3.1\"}))),(_||u)&&Re.createElement(ie,{host:_,basePath:u}),a&&Re.createElement(ee,{getComponent:s,url:a})),w&&Re.createElement(\"p\",{className:\"info__summary\"},w),Re.createElement(\"div\",{className:\"info__description description\"},Re.createElement(U,{source:x})),j&&Re.createElement(\"div\",{className:\"info__tos\"},Re.createElement(z,{target:\"_blank\",href:sanitizeUrl(j)},\"Terms of service\")),$.size>0&&Re.createElement(ce,null),V.size>0&&Re.createElement(ae,null),L&&Re.createElement(z,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(L)},B||L),Re.createElement(le,null))},json_schema_dialect=({getComponent:s,specSelectors:o})=>{const i=o.selectJsonSchemaDialectField(),a=o.selectJsonSchemaDialectDefault(),u=s(\"Link\");return Re.createElement(Re.Fragment,null,i&&i===a&&Re.createElement(\"p\",{className:\"info__jsonschemadialect\"},\"JSON Schema dialect:\",\" \",Re.createElement(u,{target:\"_blank\",href:sanitizeUrl(i)},i)),i&&i!==a&&Re.createElement(\"div\",{className:\"error-wrapper\"},Re.createElement(\"div\",{className:\"no-margin\"},Re.createElement(\"div\",{className:\"errors\"},Re.createElement(\"div\",{className:\"errors-wrapper\"},Re.createElement(\"h4\",{className:\"center\"},\"Warning\"),Re.createElement(\"p\",{className:\"message\"},Re.createElement(\"strong\",null,\"OpenAPI.jsonSchemaDialect\"),\" field contains a value different from the default value of\",\" \",Re.createElement(u,{target:\"_blank\",href:a},a),\". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value.\"))))))},version_pragma_filter=({bypass:s,isSwagger2:o,isOAS3:i,isOAS31:a,alsoShow:u,children:_})=>s?Re.createElement(\"div\",null,_):o&&(i||a)?Re.createElement(\"div\",{className:\"version-pragma\"},u,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,Re.createElement(\"code\",null,\"swagger\"),\" and \",Re.createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),Re.createElement(\"p\",null,\"Supported version fields are \",Re.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",Re.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))):o||i||a?Re.createElement(\"div\",null,_):Re.createElement(\"div\",{className:\"version-pragma\"},u,Re.createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},Re.createElement(\"div\",null,Re.createElement(\"h3\",null,\"Unable to render this definition\"),Re.createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),Re.createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",Re.createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",Re.createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",Re.createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))),getModelName=s=>\"string\"==typeof s&&s.includes(\"#/components/schemas/\")?(s=>{const o=s.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(o)}catch{return o}})(s.replace(/^.*#\\/components\\/schemas\\//,\"\")):null,OP=(0,Re.forwardRef)((({schema:s,getComponent:o,onToggle:i=()=>{},specPath:a},u)=>{const _=o(\"JSONSchema202012\"),w=getModelName(s.get(\"$$ref\")),x=(0,Re.useCallback)(((s,o)=>{i(w,o)}),[w,i]);return Re.createElement(_,{name:w,schema:s.toJS(),ref:u,onExpand:x,identifier:a.toJS().join(\"_\")})})),CP=OP,models=({specActions:s,specSelectors:o,layoutSelectors:i,layoutActions:a,getComponent:u,getConfigs:_,fn:w})=>{const x=o.selectSchemas(),C=Object.keys(x).length>0,j=[\"components\",\"schemas\"],{docExpansion:L,defaultModelsExpandDepth:B}=_(),$=B>0&&\"none\"!==L,V=i.isShown(j,$),U=u(\"Collapse\"),z=u(\"JSONSchema202012\"),Y=u(\"ArrowUpIcon\"),Z=u(\"ArrowDownIcon\"),{getTitle:ee}=w.jsonSchema202012.useFn();(0,Re.useEffect)((()=>{const i=V&&B>1,a=null!=o.specResolvedSubtree(j);i&&!a&&s.requestResolvedSubtree(j)}),[V,B]);const ie=(0,Re.useCallback)((()=>{a.show(j,!V)}),[V]),ae=(0,Re.useCallback)((s=>{null!==s&&a.readyToScroll(j,s)}),[]),handleJSONSchema202012Ref=s=>o=>{null!==o&&a.readyToScroll([...j,s],o)},handleJSONSchema202012Expand=i=>(a,u)=>{if(u){const a=[...j,i];null!=o.specResolvedSubtree(a)||s.requestResolvedSubtree([...j,i])}};return!C||B<0?null:Re.createElement(\"section\",{className:Jn()(\"models\",{\"is-open\":V}),ref:ae},Re.createElement(\"h4\",null,Re.createElement(\"button\",{\"aria-expanded\":V,className:\"models-control\",onClick:ie},Re.createElement(\"span\",null,\"Schemas\"),V?Re.createElement(Y,null):Re.createElement(Z,null))),Re.createElement(U,{isOpened:V},Object.entries(x).map((([s,o])=>{const i=ee(o,{lookup:\"basic\"})||s;return Re.createElement(z,{key:s,ref:handleJSONSchema202012Ref(s),schema:o,name:i,onExpand:handleJSONSchema202012Expand(s)})}))))},mutual_tls_auth=({schema:s,getComponent:o,name:i,authSelectors:a})=>{const u=o(\"JumpToPath\",!0),_=a.selectAuthPath(i);return Re.createElement(\"div\",null,Re.createElement(\"h4\",null,i,\" (mutualTLS) \",Re.createElement(u,{path:_})),Re.createElement(\"p\",null,\"Mutual TLS is required by this API/Operation. Certificates are managed via your Operating System and/or your browser.\"),Re.createElement(\"p\",null,s.get(\"description\")))};class auths_Auths extends Re.Component{constructor(s,o){super(s,o),this.state={}}onAuthChange=s=>{let{name:o}=s;this.setState({[o]:s})};submitAuth=s=>{s.preventDefault();let{authActions:o}=this.props;o.authorizeWithPersistOption(this.state)};logoutClick=s=>{s.preventDefault();let{authActions:o,definitions:i}=this.props,a=i.map(((s,o)=>o)).toArray();this.setState(a.reduce(((s,o)=>(s[o]=\"\",s)),{})),o.logoutWithPersistOption(a)};close=s=>{s.preventDefault();let{authActions:o}=this.props;o.showDefinitions(!1)};render(){let{definitions:s,getComponent:o,authSelectors:i,errSelectors:a}=this.props;const u=o(\"AuthItem\"),_=o(\"oauth2\",!0),w=o(\"Button\"),x=i.authorized(),C=s.filter(((s,o)=>!!x.get(o))),j=s.filter((s=>\"oauth2\"!==s.get(\"type\")&&\"mutualTLS\"!==s.get(\"type\"))),L=s.filter((s=>\"oauth2\"===s.get(\"type\"))),B=s.filter((s=>\"mutualTLS\"===s.get(\"type\")));return Re.createElement(\"div\",{className:\"auth-container\"},j.size>0&&Re.createElement(\"form\",{onSubmit:this.submitAuth},j.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray(),Re.createElement(\"div\",{className:\"auth-btn-wrapper\"},j.size===C.size?Re.createElement(w,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):Re.createElement(w,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),Re.createElement(w,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),L.size>0?Re.createElement(\"div\",null,Re.createElement(\"div\",{className:\"scope-def\"},Re.createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),Re.createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),s.filter((s=>\"oauth2\"===s.get(\"type\"))).map(((s,o)=>Re.createElement(\"div\",{key:o},Re.createElement(_,{authorized:x,schema:s,name:o})))).toArray()):null,B.size>0&&Re.createElement(\"div\",null,B.map(((s,_)=>Re.createElement(u,{key:_,schema:s,name:_,getComponent:o,onAuthChange:this.onAuthChange,authorized:x,errSelectors:a,authSelectors:i}))).toArray()))}}const AP=auths_Auths,isOAS31=s=>{const o=s.get(\"openapi\");return\"string\"==typeof o&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(o)},fn_createOnlyOAS31Selector=s=>(o,...i)=>a=>{if(a.getSystem().specSelectors.isOAS31()){const u=s(o,...i);return\"function\"==typeof u?u(a):u}return null},createOnlyOAS31SelectorWrapper=s=>(o,i)=>(a,...u)=>{if(i.getSystem().specSelectors.isOAS31()){const _=s(a,...u);return\"function\"==typeof _?_(o,i):_}return o(...u)},fn_createSystemSelector=s=>(o,...i)=>a=>{const u=s(o,a,...i);return\"function\"==typeof u?u(a):u},createOnlyOAS31ComponentWrapper=s=>(o,i)=>a=>i.specSelectors.isOAS31()?Re.createElement(s,Mn()({},a,{originalComponent:o,getSystem:i.getSystem})):Re.createElement(o,a),wrapOAS31Fn=(s,o)=>{const{fn:i,specSelectors:a}=o;return Object.fromEntries(Object.entries(s).map((([s,o])=>{const u=i[s];return[s,(...s)=>a.isOAS31()?o(...s):\"function\"==typeof u?u(...s):void 0]})))},jP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31License\",!0);return Re.createElement(o,null)})),IP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31Contact\",!0);return Re.createElement(o,null)})),PP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const o=s().getComponent(\"OAS31Info\",!0);return Re.createElement(o,null)})),getProperties=(s,{includeReadOnly:o,includeWriteOnly:i})=>{if(!s?.properties)return{};const a=Object.entries(s.properties).filter((([,s])=>(!(!0===s?.readOnly)||o)&&(!(!0===s?.writeOnly)||i)));return Object.fromEntries(a)},makeGetSchemaKeywords=s=>{if(\"function\"!=typeof s)return null;const o=s();return()=>[...o,\"discriminator\",\"xml\",\"externalDocs\",\"example\",\"$$ref\"]},TP=createOnlyOAS31ComponentWrapper((({getSystem:s,...o})=>{const i=s(),{getComponent:a,fn:u,getConfigs:_}=i,w=_(),x=a(\"OAS31Model\"),C=a(\"withJSONSchema202012SystemContext\");return TP.ModelWithJSONSchemaContext??=C(x,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:w.defaultModelExpandDepth,includeReadOnly:o.includeReadOnly,includeWriteOnly:o.includeWriteOnly},fn:{getProperties:u.jsonSchema202012.getProperties,isExpandable:u.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(u.jsonSchema202012.getSchemaKeywords)}}),Re.createElement(TP.ModelWithJSONSchemaContext,o)})),NP=TP,MP=createOnlyOAS31ComponentWrapper((({getSystem:s})=>{const{getComponent:o,fn:i,getConfigs:a}=s(),u=a();if(MP.ModelsWithJSONSchemaContext)return Re.createElement(MP.ModelsWithJSONSchemaContext,null);const _=o(\"OAS31Models\",!0),w=o(\"withJSONSchema202012SystemContext\");return MP.ModelsWithJSONSchemaContext??=w(_,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:u.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},fn:{getProperties:i.jsonSchema202012.getProperties,isExpandable:i.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(i.jsonSchema202012.getSchemaKeywords)}}),Re.createElement(MP.ModelsWithJSONSchemaContext,null)}));MP.ModelsWithJSONSchemaContext=null;const RP=MP,wrap_components_version_pragma_filter=(s,o)=>s=>{const i=o.specSelectors.isOAS31(),a=o.getComponent(\"OAS31VersionPragmaFilter\");return Re.createElement(a,Mn()({isOAS31:i},s))},DP=createOnlyOAS31ComponentWrapper((({originalComponent:s,...o})=>{const{getComponent:i,schema:a,name:u}=o,_=i(\"MutualTLSAuth\",!0);return\"mutualTLS\"===a.get(\"type\")?Re.createElement(_,{schema:a,name:u}):Re.createElement(s,o)})),LP=DP,FP=createOnlyOAS31ComponentWrapper((({getSystem:s,...o})=>{const i=s().getComponent(\"OAS31Auths\",!0);return Re.createElement(i,o)})),BP=(0,ze.Map)(),$P=Vt(((s,o)=>o.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>s=>{const o=s.specSelectors.specJson().get(\"webhooks\");return ze.Map.isMap(o)?o:BP},qP=Vt([(s,o)=>o.specSelectors.webhooks(),(s,o)=>o.specSelectors.validOperationMethods(),(s,o)=>o.specSelectors.specResolvedSubtree([\"webhooks\"])],((s,o)=>s.reduce(((s,i,a)=>{if(!ze.Map.isMap(i))return s;const u=i.entrySeq().filter((([s])=>o.includes(s))).map((([s,o])=>({operation:(0,ze.Map)({operation:o}),method:s,path:a,specPath:[\"webhooks\",a,s]})));return s.concat(u)}),(0,ze.List)()).groupBy((s=>s.path)).map((s=>s.toArray())).toObject())),selectors_license=()=>s=>{const o=s.specSelectors.info().get(\"license\");return ze.Map.isMap(o)?o:BP},selectLicenseNameField=()=>s=>s.specSelectors.license().get(\"name\",\"License\"),selectLicenseUrlField=()=>s=>s.specSelectors.license().get(\"url\"),VP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectLicenseUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectLicenseIdentifierField=()=>s=>s.specSelectors.license().get(\"identifier\"),selectors_contact=()=>s=>{const o=s.specSelectors.info().get(\"contact\");return ze.Map.isMap(o)?o:BP},selectContactNameField=()=>s=>s.specSelectors.contact().get(\"name\",\"the developer\"),selectContactEmailField=()=>s=>s.specSelectors.contact().get(\"email\"),selectContactUrlField=()=>s=>s.specSelectors.contact().get(\"url\"),UP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectContactUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectInfoTitleField=()=>s=>s.specSelectors.info().get(\"title\"),selectInfoSummaryField=()=>s=>s.specSelectors.info().get(\"summary\"),selectInfoDescriptionField=()=>s=>s.specSelectors.info().get(\"description\"),selectInfoTermsOfServiceField=()=>s=>s.specSelectors.info().get(\"termsOfService\"),zP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectInfoTermsOfServiceField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectExternalDocsDescriptionField=()=>s=>s.specSelectors.externalDocs().get(\"description\"),selectExternalDocsUrlField=()=>s=>s.specSelectors.externalDocs().get(\"url\"),WP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectExternalDocsUrlField()],((s,o,i)=>{if(i)return safeBuildUrl(i,s,{selectedServer:o})})),selectJsonSchemaDialectField=()=>s=>s.specSelectors.specJson().get(\"jsonSchemaDialect\"),selectJsonSchemaDialectDefault=()=>\"https://spec.openapis.org/oas/3.1/dialect/base\",JP=Vt(((s,o)=>o.specSelectors.definitions()),((s,o)=>o.specSelectors.specResolvedSubtree([\"components\",\"schemas\"])),((s,o)=>ze.Map.isMap(s)?ze.Map.isMap(o)?Object.entries(s.toJS()).reduce(((s,[i,a])=>{const u=o.get(i);return s[i]=u?.toJS()||a,s}),{}):s.toJS():{})),wrap_selectors_isOAS3=(s,o)=>(i,...a)=>o.specSelectors.isOAS31()||s(...a),HP=createOnlyOAS31SelectorWrapper((()=>(s,o)=>o.oas31Selectors.selectLicenseUrl())),KP=createOnlyOAS31SelectorWrapper((()=>(s,o)=>{const i=o.specSelectors.securityDefinitions();let a=s();return i?(i.entrySeq().forEach((([s,o])=>{const i=o?.get(\"type\");\"mutualTLS\"===i&&(a=a.push(new ze.Map({[s]:o})))})),a):a})),GP=Vt([(s,o)=>o.specSelectors.url(),(s,o)=>o.oas3Selectors.selectedServer(),(s,o)=>o.specSelectors.selectLicenseUrlField(),(s,o)=>o.specSelectors.selectLicenseIdentifierField()],((s,o,i,a)=>i?safeBuildUrl(i,s,{selectedServer:o}):a?`https://spdx.org/licenses/${a}.html`:void 0)),keywords_Example=({schema:s,getSystem:o})=>{const{fn:i,getComponent:a}=o(),{hasKeyword:u}=i.jsonSchema202012.useFn(),_=a(\"JSONSchema202012JSONViewer\");return u(s,\"example\")?Re.createElement(_,{name:\"Example\",value:s.example,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--example\"}):null},keywords_Xml=({schema:s,getSystem:o})=>{const i=s?.xml||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,{path:B}=j(\"xml\"),{isExpanded:$,setExpanded:V,setCollapsed:U}=C(\"xml\"),[z,Y]=L(),Z=w?getExtensions(i):[],ee=!!(i.name||i.namespace||i.prefix||Z.length>0),ie=x(\"Accordion\"),ae=x(\"ExpandDeepButton\"),ce=u(\"OpenAPI31Extensions\"),le=u(\"JSONSchema202012PathContext\")(),pe=u(\"JSONSchema202012LevelContext\")(),de=(0,Re.useCallback)((()=>{$?U():V()}),[$,V,U]),fe=(0,Re.useCallback)(((s,o)=>{o?V({deep:!0}):U({deep:!0})}),[V,U]);return 0===Object.keys(i).length?null:Re.createElement(le.Provider,{value:B},Re.createElement(pe.Provider,{value:Y},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml\",\"data-json-schema-level\":z},ee?Re.createElement(Re.Fragment,null,Re.createElement(ie,{expanded:$,onChange:de},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\")),Re.createElement(ae,{expanded:$,onClick:fe})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\"),!0===i.attribute&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"attribute\"),!0===i.wrapped&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"wrapped\"),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!$})},$&&Re.createElement(Re.Fragment,null,i.name&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"name\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.name))),i.namespace&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"namespace\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.namespace))),i.prefix&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"prefix\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},i.prefix)))),Z.length>0&&Re.createElement(ce,{openAPISpecObj:i,openAPIExtensions:Z,getSystem:o})))))},Discriminator_DiscriminatorMapping=({discriminator:s})=>{const o=s?.mapping||{};return 0===Object.keys(o).length?null:Object.entries(o).map((([s,o])=>Re.createElement(\"div\",{key:`${s}-${o}`,className:\"json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},s),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},o))))},keywords_Discriminator_Discriminator=({schema:s,getSystem:o})=>{const i=s?.discriminator||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,B=\"discriminator\",{path:$}=j(B),{isExpanded:V,setExpanded:U,setCollapsed:z}=C(B),[Y,Z]=L(),ee=w?getExtensions(i):[],ie=!!(i.mapping||ee.length>0),ae=x(\"Accordion\"),ce=x(\"ExpandDeepButton\"),le=u(\"OpenAPI31Extensions\"),pe=u(\"JSONSchema202012PathContext\")(),de=u(\"JSONSchema202012LevelContext\")(),fe=(0,Re.useCallback)((()=>{V?z():U()}),[V,U,z]),ye=(0,Re.useCallback)(((s,o)=>{o?U({deep:!0}):z({deep:!0})}),[U,z]);return 0===Object.keys(i).length?null:Re.createElement(pe.Provider,{value:$},Re.createElement(de.Provider,{value:Z},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator\",\"data-json-schema-level\":Y},ie?Re.createElement(Re.Fragment,null,Re.createElement(ae,{expanded:V,onChange:fe},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\")),Re.createElement(ce,{expanded:V,onClick:ye})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\"),i.propertyName&&Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},i.propertyName),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!V})},V&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(Discriminator_DiscriminatorMapping,{discriminator:i})),ee.length>0&&Re.createElement(le,{openAPISpecObj:i,openAPIExtensions:ee,getSystem:o})))))},keywords_OpenAPIExtensions=({openAPISpecObj:s,getSystem:o,openAPIExtensions:i})=>{const{fn:a}=o(),{useComponent:u}=a.jsonSchema202012,_=u(\"JSONViewer\");return i.map((o=>Re.createElement(_,{key:o,name:o,value:s[o],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))},keywords_ExternalDocs=({schema:s,getSystem:o})=>{const i=s?.externalDocs||{},{fn:a,getComponent:u,getConfigs:_}=o(),{showExtensions:w}=_(),{useComponent:x,useIsExpanded:C,usePath:j,useLevel:L}=a.jsonSchema202012,B=\"externalDocs\",{path:$}=j(B),{isExpanded:V,setExpanded:U,setCollapsed:z}=C(B),[Y,Z]=L(),ee=w?getExtensions(i):[],ie=!!(i.description||i.url||ee.length>0),ae=x(\"Accordion\"),ce=x(\"ExpandDeepButton\"),le=u(\"JSONSchema202012KeywordDescription\"),pe=u(\"Link\"),de=u(\"OpenAPI31Extensions\"),fe=u(\"JSONSchema202012PathContext\")(),ye=u(\"JSONSchema202012LevelContext\")(),be=(0,Re.useCallback)((()=>{V?z():U()}),[V,U,z]),_e=(0,Re.useCallback)(((s,o)=>{o?U({deep:!0}):z({deep:!0})}),[U,z]);return 0===Object.keys(i).length?null:Re.createElement(fe.Provider,{value:$},Re.createElement(ye.Provider,{value:Z},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs\",\"data-json-schema-level\":Y},ie?Re.createElement(Re.Fragment,null,Re.createElement(ae,{expanded:V,onChange:be},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\")),Re.createElement(ce,{expanded:V,onClick:_e})):Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\"),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!V})},V&&Re.createElement(Re.Fragment,null,i.description&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(le,{schema:i,getSystem:o})),i.url&&Re.createElement(\"li\",{className:\"json-schema-2020-12-property\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"url\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},Re.createElement(pe,{target:\"_blank\",href:sanitizeUrl(i.url)},i.url))))),ee.length>0&&Re.createElement(de,{openAPISpecObj:i,openAPIExtensions:ee,getSystem:o})))))},keywords_Description=({schema:s,getSystem:o})=>{if(!s?.description)return null;const{getComponent:i}=o(),a=i(\"Markdown\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},Re.createElement(a,{source:s.description})))},YP=createOnlyOAS31ComponentWrapper(keywords_Description),XP=createOnlyOAS31ComponentWrapper((({schema:s,getSystem:o,originalComponent:i})=>{const{getComponent:a}=o(),u=a(\"JSONSchema202012KeywordDiscriminator\"),_=a(\"JSONSchema202012KeywordXml\"),w=a(\"JSONSchema202012KeywordExample\"),x=a(\"JSONSchema202012KeywordExternalDocs\");return Re.createElement(Re.Fragment,null,Re.createElement(i,{schema:s}),Re.createElement(u,{schema:s,getSystem:o}),Re.createElement(_,{schema:s,getSystem:o}),Re.createElement(x,{schema:s,getSystem:o}),Re.createElement(w,{schema:s,getSystem:o}))})),QP=XP,keywords_Properties=({schema:s,getSystem:o})=>{const{fn:i,getComponent:a}=o(),{useComponent:u,usePath:_}=i.jsonSchema202012,{getDependentRequired:w,getProperties:x}=i.jsonSchema202012.useFn(),C=i.jsonSchema202012.useConfig(),j=Array.isArray(s?.required)?s.required:[],{path:L}=_(\"properties\"),B=u(\"JSONSchema\"),$=a(\"JSONSchema202012PathContext\")(),V=x(s,C);return 0===Object.keys(V).length?null:Re.createElement($.Provider,{value:L},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},Re.createElement(\"ul\",null,Object.entries(V).map((([o,i])=>{const a=j.includes(o),u=w(o,s);return Re.createElement(\"li\",{key:o,className:Jn()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":a})},Re.createElement(B,{name:o,schema:i,dependentRequired:u}))})))))},ZP=createOnlyOAS31ComponentWrapper(keywords_Properties);const eT=function oas31_after_load_afterLoad({fn:s,getSystem:o}){if(s.jsonSchema202012){const i=((s,o)=>{const{fn:i}=o();if(\"function\"!=typeof s)return null;const{hasKeyword:a}=i.jsonSchema202012;return o=>s(o)||a(o,\"example\")||o?.xml||o?.discriminator||o?.externalDocs})(s.jsonSchema202012.isExpandable,o);Object.assign(this.fn.jsonSchema202012,{isExpandable:i,getProperties})}if(\"function\"==typeof s.sampleFromSchema&&s.jsonSchema202012){const i=wrapOAS31Fn({sampleFromSchema:s.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:s.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:s.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:s.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:s.jsonSchema202012.memoizedCreateXMLExample,getJsonSampleSchema:s.jsonSchema202012.getJsonSampleSchema,getYamlSampleSchema:s.jsonSchema202012.getYamlSampleSchema,getXmlSampleSchema:s.jsonSchema202012.getXmlSampleSchema,getSampleSchema:s.jsonSchema202012.getSampleSchema,mergeJsonSchema:s.jsonSchema202012.mergeJsonSchema},o());Object.assign(this.fn,i)}const i=(s=>(o,i=null)=>{const{fn:a}=s();if(a.isFileUploadIntendedOAS30(o,i))return!0;const u=ze.Map.isMap(o);if(!u&&!as()(o))return!1;const _=u?o.get(\"contentMediaType\"):o.contentMediaType,w=u?o.get(\"contentEncoding\"):o.contentEncoding;return\"string\"==typeof _&&\"\"!==_||\"string\"==typeof w&&\"\"!==w})(o),{isFileUploadIntended:a}=wrapOAS31Fn({isFileUploadIntended:i},o());if(this.fn.isFileUploadIntended=a,this.fn.isFileUploadIntendedOAS31=i,s.jsonSchema202012){const{hasSchemaType:i}=wrapOAS31Fn({hasSchemaType:s.jsonSchema202012.hasSchemaType},o());this.fn.hasSchemaType=i}},oas31=({fn:s})=>{const o=s.createSystemSelector||fn_createSystemSelector,i=s.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:eT,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,MutualTLSAuth:mutual_tls_auth,OAS31Info:oas31_components_info,OAS31License:oas31_components_license,OAS31Contact:oas31_components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:CP,OAS31Models:models,OAS31Auths:AP,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:keywords_Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs,OpenAPI31Extensions:keywords_OpenAPIExtensions},wrapComponents:{InfoContainer:PP,License:jP,Contact:IP,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:NP,Models:RP,AuthItem:LP,auths:FP,JSONSchema202012KeywordDescription:YP,JSONSchema202012KeywordExamples:QP,JSONSchema202012KeywordProperties:ZP},statePlugins:{auth:{wrapSelectors:{definitionsToAuthorize:KP}},spec:{selectors:{isOAS31:o($P),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:i(selectLicenseIdentifierField),selectLicenseUrl:o(VP),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:o(UP),selectInfoTitleField,selectInfoSummaryField:i(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:o(zP),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:o(WP),webhooks:i(selectors_webhooks),selectWebhooksOperations:i(o(qP)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:o(JP)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:HP}},oas31:{selectors:{selectLicenseUrl:i(o(GP))}}}}},tT=es().object,rT=es().bool,nT=(es().oneOfType([tT,rT]),(0,Re.createContext)(null));nT.displayName=\"JSONSchemaContext\";const sT=(0,Re.createContext)(0);sT.displayName=\"JSONSchemaLevelContext\";const oT=(0,Re.createContext)(new Set),iT=(0,Re.createContext)([]);class JSONSchemaIsExpandedState{static Collapsed=\"collapsed\";static Expanded=\"expanded\";static DeeplyExpanded=\"deeply-expanded\"}const useConfig=()=>{const{config:s}=(0,Re.useContext)(nT);return s},useComponent=s=>{const{components:o}=(0,Re.useContext)(nT);return o[s]||null},useFn=(s=void 0)=>{const{fn:o}=(0,Re.useContext)(nT);return void 0!==s?o[s]:o},useJSONSchemaContextState=()=>{const[,s]=(0,Re.useState)(null),{state:o}=(0,Re.useContext)(nT);return{state:o,setState:i=>{i(o),s({})}}},useLevel=()=>{const s=(0,Re.useContext)(sT);return[s,s+1]},usePath=s=>{const o=(0,Re.useContext)(iT),{setState:i}=useJSONSchemaContextState(),a=\"string\"==typeof s?[...o,s]:o;return{path:a,pathMutator:(s,o={deep:!1})=>{const u=a.toString(),updateFn=o=>{o.paths[u]=s,s===JSONSchemaIsExpandedState.Collapsed&&Object.keys(o.paths).forEach((s=>{s.startsWith(u)&&o.paths[s]===JSONSchemaIsExpandedState.DeeplyExpanded&&(o.paths[s]=JSONSchemaIsExpandedState.Expanded)}))},updateDeepFn=o=>{Object.keys(o.paths).forEach((i=>{i.startsWith(u)&&(o.paths[i]=s)}))};o.deep?i(updateDeepFn):i(updateFn)}}},useIsExpanded=s=>{const[o]=useLevel(),{defaultExpandedLevels:i}=useConfig(),{path:a,pathMutator:u}=usePath(s),{path:_}=usePath(),{state:w}=useJSONSchemaContextState(),x=w.paths[a.toString()],C=w.paths[_.toString()]??w.paths[_.slice(0,-1).toString()],j=x??(i-o>0?JSONSchemaIsExpandedState.Expanded:JSONSchemaIsExpandedState.Collapsed),L=j!==JSONSchemaIsExpandedState.Collapsed;(0,Re.useEffect)((()=>{u(C===JSONSchemaIsExpandedState.DeeplyExpanded?JSONSchemaIsExpandedState.DeeplyExpanded:j)}),[C]);return{isExpanded:L,setExpanded:(0,Re.useCallback)(((s={deep:!1})=>{u(s.deep?JSONSchemaIsExpandedState.DeeplyExpanded:JSONSchemaIsExpandedState.Expanded)}),[]),setCollapsed:(0,Re.useCallback)(((s={deep:!1})=>{u(JSONSchemaIsExpandedState.Collapsed,s)}),[])}},useRenderedSchemas=(s=void 0)=>{if(void 0===s)return(0,Re.useContext)(oT);const o=(0,Re.useContext)(oT);return new Set([...o,s])},aT=(0,Re.forwardRef)((({schema:s,name:o=\"\",dependentRequired:i=[],onExpand:a=()=>{},identifier:u=\"\"},_)=>{const w=useFn(),x=u||s?.$id||o,{path:C}=usePath(x),{isExpanded:j,setExpanded:L,setCollapsed:B}=useIsExpanded(x),[$,V]=useLevel(),U=(()=>{const[s]=useLevel();return s>0})(),z=w.isExpandable(s)||i.length>0,Y=(s=>useRenderedSchemas().has(s))(s),Z=useRenderedSchemas(s),ee=w.stringifyConstraints(s),ie=useComponent(\"Accordion\"),ae=useComponent(\"Keyword$schema\"),ce=useComponent(\"Keyword$vocabulary\"),le=useComponent(\"Keyword$id\"),pe=useComponent(\"Keyword$anchor\"),de=useComponent(\"Keyword$dynamicAnchor\"),fe=useComponent(\"Keyword$ref\"),ye=useComponent(\"Keyword$dynamicRef\"),be=useComponent(\"Keyword$defs\"),_e=useComponent(\"Keyword$comment\"),Se=useComponent(\"KeywordAllOf\"),we=useComponent(\"KeywordAnyOf\"),xe=useComponent(\"KeywordOneOf\"),Pe=useComponent(\"KeywordNot\"),Te=useComponent(\"KeywordIf\"),$e=useComponent(\"KeywordThen\"),qe=useComponent(\"KeywordElse\"),ze=useComponent(\"KeywordDependentSchemas\"),We=useComponent(\"KeywordPrefixItems\"),He=useComponent(\"KeywordItems\"),Ye=useComponent(\"KeywordContains\"),Xe=useComponent(\"KeywordProperties\"),Qe=useComponent(\"KeywordPatternProperties\"),et=useComponent(\"KeywordAdditionalProperties\"),tt=useComponent(\"KeywordPropertyNames\"),rt=useComponent(\"KeywordUnevaluatedItems\"),nt=useComponent(\"KeywordUnevaluatedProperties\"),st=useComponent(\"KeywordType\"),ot=useComponent(\"KeywordEnum\"),it=useComponent(\"KeywordConst\"),at=useComponent(\"KeywordConstraint\"),ct=useComponent(\"KeywordDependentRequired\"),lt=useComponent(\"KeywordContentSchema\"),ut=useComponent(\"KeywordTitle\"),pt=useComponent(\"KeywordDescription\"),ht=useComponent(\"KeywordDefault\"),dt=useComponent(\"KeywordDeprecated\"),mt=useComponent(\"KeywordReadOnly\"),gt=useComponent(\"KeywordWriteOnly\"),yt=useComponent(\"KeywordExamples\"),vt=useComponent(\"ExtensionKeywords\"),bt=useComponent(\"ExpandDeepButton\"),_t=(0,Re.useCallback)(((s,o)=>{o?L():B(),a(s,o,!1)}),[a,L,B]),St=(0,Re.useCallback)(((s,o)=>{o?L({deep:!0}):B({deep:!0}),a(s,o,!0)}),[a,L,B]);return Re.createElement(iT.Provider,{value:C},Re.createElement(sT.Provider,{value:V},Re.createElement(oT.Provider,{value:Z},Re.createElement(\"article\",{ref:_,\"data-json-schema-level\":$,className:Jn()(\"json-schema-2020-12\",{\"json-schema-2020-12--embedded\":U,\"json-schema-2020-12--circular\":Y})},Re.createElement(\"div\",{className:\"json-schema-2020-12-head\"},z&&!Y?Re.createElement(Re.Fragment,null,Re.createElement(ie,{expanded:j,onChange:_t},Re.createElement(ut,{title:o,schema:s})),Re.createElement(bt,{expanded:j,onClick:St})):Re.createElement(ut,{title:o,schema:s}),Re.createElement(dt,{schema:s}),Re.createElement(mt,{schema:s}),Re.createElement(gt,{schema:s}),Re.createElement(st,{schema:s,isCircular:Y}),ee.length>0&&ee.map((s=>Re.createElement(at,{key:`${s.scope}-${s.value}`,constraint:s})))),Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-body\",{\"json-schema-2020-12-body--collapsed\":!j})},j&&Re.createElement(Re.Fragment,null,Re.createElement(pt,{schema:s}),!Y&&z&&Re.createElement(Re.Fragment,null,Re.createElement(Xe,{schema:s}),Re.createElement(Qe,{schema:s}),Re.createElement(et,{schema:s}),Re.createElement(nt,{schema:s}),Re.createElement(tt,{schema:s}),Re.createElement(Se,{schema:s}),Re.createElement(we,{schema:s}),Re.createElement(xe,{schema:s}),Re.createElement(Pe,{schema:s}),Re.createElement(Te,{schema:s}),Re.createElement($e,{schema:s}),Re.createElement(qe,{schema:s}),Re.createElement(ze,{schema:s}),Re.createElement(We,{schema:s}),Re.createElement(He,{schema:s}),Re.createElement(rt,{schema:s}),Re.createElement(Ye,{schema:s}),Re.createElement(lt,{schema:s})),Re.createElement(ot,{schema:s}),Re.createElement(it,{schema:s}),Re.createElement(ct,{schema:s,dependentRequired:i}),Re.createElement(ht,{schema:s}),Re.createElement(yt,{schema:s}),Re.createElement(ae,{schema:s}),Re.createElement(ce,{schema:s}),Re.createElement(le,{schema:s}),Re.createElement(pe,{schema:s}),Re.createElement(de,{schema:s}),Re.createElement(fe,{schema:s}),!Y&&z&&Re.createElement(be,{schema:s}),Re.createElement(ye,{schema:s}),Re.createElement(_e,{schema:s}),Re.createElement(vt,{schema:s})))))))})),cT=aT,keywords_$schema=({schema:s})=>s?.$schema?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$schema\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$schema)):null,$vocabulary_$vocabulary=({schema:s})=>{const o=\"$vocabulary\",{path:i}=usePath(o),{isExpanded:a,setExpanded:u,setCollapsed:_}=useIsExpanded(o),w=useComponent(\"Accordion\"),x=(0,Re.useCallback)((()=>{a?_():u()}),[a,u,_]);return s?.$vocabulary?\"object\"!=typeof s.$vocabulary?null:Re.createElement(iT.Provider,{value:i},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary\"},Re.createElement(w,{expanded:a,onChange:x},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$vocabulary\")),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",null,a&&Object.entries(s.$vocabulary).map((([s,o])=>Re.createElement(\"li\",{key:s,className:Jn()(\"json-schema-2020-12-$vocabulary-uri\",{\"json-schema-2020-12-$vocabulary-uri--disabled\":!o})},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s))))))):null},keywords_$id=({schema:s})=>s?.$id?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$id\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$id)):null,keywords_$anchor=({schema:s})=>s?.$anchor?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$anchor\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$anchor)):null,keywords_$dynamicAnchor=({schema:s})=>s?.$dynamicAnchor?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicAnchor\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$dynamicAnchor)):null,keywords_$ref=({schema:s})=>s?.$ref?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$ref\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$ref)):null,keywords_$dynamicRef=({schema:s})=>s?.$dynamicRef?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicRef\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$dynamicRef)):null,keywords_$defs=({schema:s})=>{const o=s?.$defs||{},i=\"$defs\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONSchema\"),$=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),V=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return 0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:$},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$defs\")),Re.createElement(L,{expanded:u,onClick:V}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(B,{name:s,schema:o})))))))))},keywords_$comment=({schema:s})=>s?.$comment?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$comment\"),Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},s.$comment)):null,keywords_AllOf=({schema:s})=>{const o=s?.allOf||[],i=useFn(),a=\"allOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"All of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{allOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_AnyOf=({schema:s})=>{const o=s?.anyOf||[],i=useFn(),a=\"anyOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Any of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{anyOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_OneOf=({schema:s})=>{const o=s?.oneOf||[],i=useFn(),a=\"oneOf\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"One of\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{oneOf:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_Not=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"not\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Not\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--not\"},Re.createElement(i,{name:a,schema:s.not,identifier:\"not\"}))},keywords_If=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"if\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"If\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},Re.createElement(i,{name:a,schema:s.if,identifier:\"if\"}))},keywords_Then=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"then\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Then\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--then\"},Re.createElement(i,{name:a,schema:s.then,identifier:\"then\"}))},keywords_Else=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"else\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Else\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},Re.createElement(i,{name:a,schema:s.else,identifier:\"else\"}))},keywords_DependentSchemas=({schema:s})=>{const o=s?.dependentSchemas||[],i=\"dependentSchemas\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONSchema\"),$=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),V=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return\"object\"!=typeof o||0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:$},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Dependent schemas\")),Re.createElement(L,{expanded:u,onClick:V}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(B,{name:s,schema:o})))))))))},keywords_PrefixItems=({schema:s})=>{const o=s?.prefixItems||[],i=useFn(),a=\"prefixItems\",{path:u}=usePath(a),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(a),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=useComponent(\"JSONSchema\"),V=useComponent(\"KeywordType\"),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return Array.isArray(o)&&0!==o.length?Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems\",\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Prefix items\")),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(V,{schema:{prefixItems:o}}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement($,{name:`#${o} ${i.getTitle(s)}`,schema:s}))))))))):null},keywords_Items=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"items\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Items\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--items\"},Re.createElement(i,{name:a,schema:s.items,identifier:\"items\"}))},keywords_Contains=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"contains\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Contains\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains\"},Re.createElement(i,{name:a,schema:s.contains,identifier:\"contains\"}))},keywords_Properties_Properties=({schema:s})=>{const o=useFn(),i=s?.properties||{},a=Array.isArray(s?.required)?s.required:[],u=useComponent(\"JSONSchema\"),{path:_}=usePath(\"properties\");return 0===Object.keys(i).length?null:Re.createElement(iT.Provider,{value:_},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},Re.createElement(\"ul\",null,Object.entries(i).map((([i,_])=>{const w=a.includes(i),x=o.getDependentRequired(i,s);return Re.createElement(\"li\",{key:i,className:Jn()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":w})},Re.createElement(u,{name:i,schema:_,dependentRequired:x}))})))))},PatternProperties_PatternProperties=({schema:s})=>{const o=s?.patternProperties||{},i=useComponent(\"JSONSchema\"),{path:a}=usePath(\"patternProperties\");return 0===Object.keys(o).length?null:Re.createElement(iT.Provider,{value:a},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties\"},Re.createElement(\"ul\",null,Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(i,{name:s,schema:o})))))))},keywords_AdditionalProperties=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"additionalProperties\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Additional properties\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties\"},!0===s.additionalProperties?Re.createElement(Re.Fragment,null,a,Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"allowed\")):!1===s.additionalProperties?Re.createElement(Re.Fragment,null,a,Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"forbidden\")):Re.createElement(i,{name:a,schema:s.additionalProperties,identifier:\"additionalProperties\"}))},keywords_PropertyNames=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\"),a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Property names\");return o.hasKeyword(s,\"propertyNames\")?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames\"},Re.createElement(i,{name:a,schema:s.propertyNames,identifier:\"propertyNames\"})):null},keywords_UnevaluatedItems=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"unevaluatedItems\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated items\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems\"},Re.createElement(i,{name:a,schema:s.unevaluatedItems,identifier:\"unevaluatedItems\"}))},keywords_UnevaluatedProperties=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"unevaluatedProperties\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated properties\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties\"},Re.createElement(i,{name:a,schema:s.unevaluatedProperties,identifier:\"unevaluatedProperties\"}))},keywords_Type=({schema:s,isCircular:o=!1})=>{const i=useFn().getType(s),a=o?\" [circular]\":\"\";return Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},`${i}${a}`)},Enum_Enum=({schema:s})=>{const o=useComponent(\"JSONViewer\");return Array.isArray(s?.enum)?Re.createElement(o,{name:\"Enum\",value:s.enum,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum\"}):null},Const_Const=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONViewer\");return o.hasKeyword(s,\"const\")?Re.createElement(i,{name:\"Const\",value:s.const,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--const\"}):null},fn_upperFirst=s=>\"string\"==typeof s?`${s.charAt(0).toUpperCase()}${s.slice(1)}`:s,makeGetTitle=s=>(o,{lookup:i=\"extended\"}={})=>{const a=s();if(null!=o?.title)return a.upperFirst(String(o.title));if(\"extended\"===i){if(null!=o?.$anchor)return a.upperFirst(String(o.$anchor));if(null!=o?.$id)return String(o.$id)}return\"\"},makeGetType=s=>{const getType=(o,i=new WeakSet)=>{const a=s();if(null==o)return\"any\";if(a.isBooleanJSONSchema(o))return o?\"any\":\"never\";if(\"object\"!=typeof o)return\"any\";if(i.has(o))return\"any\";i.add(o);const{type:u,prefixItems:_,items:w}=o,getArrayType=()=>{if(Array.isArray(_)){const s=_.map((s=>getType(s,i))),o=w?getType(w,i):\"any\";return`array<[${s.join(\", \")}], ${o}>`}if(w){return`array<${getType(w,i)}>`}return\"array<any>\"};if(o.not&&\"any\"===getType(o.not))return\"never\";const handleCombiningKeywords=(s,a)=>{if(Array.isArray(o[s])){return`(${o[s].map((s=>getType(s,i))).join(a)})`}return null},x=[Array.isArray(u)?u.map((s=>\"array\"===s?getArrayType():s)).join(\" | \"):\"array\"===u?getArrayType():[\"null\",\"boolean\",\"object\",\"array\",\"number\",\"integer\",\"string\"].includes(u)?u:(()=>{if(Object.hasOwn(o,\"prefixItems\")||Object.hasOwn(o,\"items\")||Object.hasOwn(o,\"contains\"))return getArrayType();if(Object.hasOwn(o,\"properties\")||Object.hasOwn(o,\"additionalProperties\")||Object.hasOwn(o,\"patternProperties\"))return\"object\";if([\"int32\",\"int64\"].includes(o.format))return\"integer\";if([\"float\",\"double\"].includes(o.format))return\"number\";if(Object.hasOwn(o,\"minimum\")||Object.hasOwn(o,\"maximum\")||Object.hasOwn(o,\"exclusiveMinimum\")||Object.hasOwn(o,\"exclusiveMaximum\")||Object.hasOwn(o,\"multipleOf\"))return\"number | integer\";if(Object.hasOwn(o,\"pattern\")||Object.hasOwn(o,\"format\")||Object.hasOwn(o,\"minLength\")||Object.hasOwn(o,\"maxLength\")||Object.hasOwn(o,\"contentEncoding\")||Object.hasOwn(o,\"contentMediaType\"))return\"string\";if(void 0!==o.const){if(null===o.const)return\"null\";if(\"boolean\"==typeof o.const)return\"boolean\";if(\"number\"==typeof o.const)return Number.isInteger(o.const)?\"integer\":\"number\";if(\"string\"==typeof o.const)return\"string\";if(Array.isArray(o.const))return\"array<any>\";if(\"object\"==typeof o.const)return\"object\"}return null})(),handleCombiningKeywords(\"oneOf\",\" | \"),handleCombiningKeywords(\"anyOf\",\" | \"),handleCombiningKeywords(\"allOf\",\" & \")].filter(Boolean).join(\" | \");return i.delete(o),x||\"any\"};return getType},isBooleanJSONSchema=s=>\"boolean\"==typeof s,hasKeyword=(s,o)=>null!==s&&\"object\"==typeof s&&Object.hasOwn(s,o),fn_makeIsExpandable=s=>o=>{const i=s();return o?.$schema||o?.$vocabulary||o?.$id||o?.$anchor||o?.$dynamicAnchor||o?.$ref||o?.$dynamicRef||o?.$defs||o?.$comment||o?.allOf||o?.anyOf||o?.oneOf||i.hasKeyword(o,\"not\")||i.hasKeyword(o,\"if\")||i.hasKeyword(o,\"then\")||i.hasKeyword(o,\"else\")||o?.dependentSchemas||o?.prefixItems||i.hasKeyword(o,\"items\")||i.hasKeyword(o,\"contains\")||o?.properties||o?.patternProperties||i.hasKeyword(o,\"additionalProperties\")||i.hasKeyword(o,\"propertyNames\")||i.hasKeyword(o,\"unevaluatedItems\")||i.hasKeyword(o,\"unevaluatedProperties\")||o?.description||o?.enum||i.hasKeyword(o,\"const\")||i.hasKeyword(o,\"contentSchema\")||i.hasKeyword(o,\"default\")||o?.examples||i.getExtensionKeywords(o).length>0},fn_stringify=s=>null===s||[\"number\",\"bigint\",\"boolean\"].includes(typeof s)?String(s):Array.isArray(s)?`[${s.map(fn_stringify).join(\", \")}]`:JSON.stringify(s),stringifyConstraintRange=(s,o,i)=>{const a=\"number\"==typeof o,u=\"number\"==typeof i;return a&&u?o===i?`${o} ${s}`:`[${o}, ${i}] ${s}`:a?`≥ ${o} ${s}`:u?`≤ ${i} ${s}`:null},stringifyConstraints=s=>{const o=[],i=(s=>{if(\"number\"!=typeof s?.multipleOf)return null;if(s.multipleOf<=0)return null;if(1===s.multipleOf)return null;const{multipleOf:o}=s;if(Number.isInteger(o))return`multiple of ${o}`;const i=10**o.toString().split(\".\")[1].length;return`multiple of ${o*i}/${i}`})(s);null!==i&&o.push({scope:\"number\",value:i});const a=(s=>{const o=s?.minimum,i=s?.maximum,a=s?.exclusiveMinimum,u=s?.exclusiveMaximum,_=\"number\"==typeof o,w=\"number\"==typeof i,x=\"number\"==typeof a,C=\"number\"==typeof u,j=x&&(!_||o<a),L=C&&(!w||i>u);if((_||x)&&(w||C))return`${j?\"(\":\"[\"}${j?a:o}, ${L?u:i}${L?\")\":\"]\"}`;if(_||x)return`${j?\">\":\"≥\"} ${j?a:o}`;if(w||C)return`${L?\"<\":\"≤\"} ${L?u:i}`;return null})(s);null!==a&&o.push({scope:\"number\",value:a}),s?.format&&o.push({scope:\"string\",value:s.format});const u=stringifyConstraintRange(\"characters\",s?.minLength,s?.maxLength);null!==u&&o.push({scope:\"string\",value:u}),s?.pattern&&o.push({scope:\"string\",value:`matches ${s?.pattern}`}),s?.contentMediaType&&o.push({scope:\"string\",value:`media type: ${s.contentMediaType}`}),s?.contentEncoding&&o.push({scope:\"string\",value:`encoding: ${s.contentEncoding}`});const _=stringifyConstraintRange(s?.uniqueItems?\"unique items\":\"items\",s?.minItems,s?.maxItems);null!==_&&o.push({scope:\"array\",value:_}),s?.uniqueItems&&!_&&o.push({scope:\"array\",value:\"unique\"});const w=stringifyConstraintRange(\"contained items\",s?.minContains,s?.maxContains);null!==w&&o.push({scope:\"array\",value:w});const x=stringifyConstraintRange(\"properties\",s?.minProperties,s?.maxProperties);return null!==x&&o.push({scope:\"object\",value:x}),o},getDependentRequired=(s,o)=>o?.dependentRequired?Array.from(Object.entries(o.dependentRequired).reduce(((o,[i,a])=>Array.isArray(a)&&a.includes(s)?(o.add(i),o):o),new Set)):[],fn_isPlainObject=s=>\"object\"==typeof s&&null!==s&&!Array.isArray(s)&&(null===Object.getPrototypeOf(s)||Object.getPrototypeOf(s)===Object.prototype),getSchemaKeywords=()=>[\"$schema\",\"$vocabulary\",\"$id\",\"$anchor\",\"$dynamicAnchor\",\"$dynamicRef\",\"$ref\",\"$defs\",\"$comment\",\"allOf\",\"anyOf\",\"oneOf\",\"not\",\"if\",\"then\",\"else\",\"dependentSchemas\",\"prefixItems\",\"items\",\"contains\",\"properties\",\"patternProperties\",\"additionalProperties\",\"propertyNames\",\"unevaluatedItems\",\"unevaluatedProperties\",\"type\",\"enum\",\"const\",\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxContains\",\"minContains\",\"maxProperties\",\"minProperties\",\"required\",\"dependentRequired\",\"title\",\"description\",\"default\",\"deprecated\",\"readOnly\",\"writeOnly\",\"examples\",\"format\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],makeGetExtensionKeywords=s=>o=>{const i=s().getSchemaKeywords();return fn_isPlainObject(o)?((s,o)=>{const i=new Set(o);return s.filter((s=>!i.has(s)))})(Object.keys(o),i):[]},fn_hasSchemaType=(s,o)=>{const i=ze.Map.isMap(s);if(!i&&!fn_isPlainObject(s))return!1;const hasType=s=>o===s||Array.isArray(o)&&o.includes(s),a=i?s.get(\"type\"):s.type;return ze.List.isList(a)||Array.isArray(a)?a.some((s=>hasType(s))):hasType(a)},Constraint=({constraint:s})=>fn_isPlainObject(s)&&\"string\"==typeof s.scope&&\"string\"==typeof s.value?Re.createElement(\"span\",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${s.scope}`},s.value):null,lT=Re.memo(Constraint),DependentRequired_DependentRequired=({dependentRequired:s})=>Array.isArray(s)&&0!==s.length?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired\"},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Required when defined\"),Re.createElement(\"ul\",null,s.map((s=>Re.createElement(\"li\",{key:s},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning\"},s)))))):null,keywords_ContentSchema=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONSchema\");if(!o.hasKeyword(s,\"contentSchema\"))return null;const a=Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Content schema\");return Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema\"},Re.createElement(i,{name:a,schema:s.contentSchema,identifier:\"contentSchema\"}))},Title_Title=({title:s=\"\",schema:o})=>{const i=useFn(),a=s||i.getTitle(o);return a?Re.createElement(\"div\",{className:\"json-schema-2020-12__title\"},a):null},keywords_Description_Description=({schema:s})=>s?.description?Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},Re.createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},s.description)):null,Default_Default=({schema:s})=>{const o=useFn(),i=useComponent(\"JSONViewer\");return o.hasKeyword(s,\"default\")?Re.createElement(i,{name:\"Default\",value:s.default,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--default\"}):null},keywords_Deprecated=({schema:s})=>!0!==s?.deprecated?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning\"},\"deprecated\"),keywords_ReadOnly=({schema:s})=>!0!==s?.readOnly?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"read-only\"),keywords_WriteOnly=({schema:s})=>!0!==s?.writeOnly?null:Re.createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"write-only\"),keywords_Examples_Examples=({schema:s})=>{const o=s?.examples||[],i=useComponent(\"JSONViewer\");return Array.isArray(o)&&0!==o.length?Re.createElement(i,{name:\"Examples\",value:s.examples,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--examples\"}):null},ExtensionKeywords_ExtensionKeywords=({schema:s})=>{const o=useFn(),i=\"ExtensionKeywords\",{path:a}=usePath(i),{isExpanded:u,setExpanded:_,setCollapsed:w}=useIsExpanded(i),[x,C]=useLevel(),j=useComponent(\"Accordion\"),L=useComponent(\"ExpandDeepButton\"),B=useComponent(\"JSONViewer\"),{showExtensionKeywords:$}=useConfig(),V=o.getExtensionKeywords(s),U=(0,Re.useCallback)((()=>{u?w():_()}),[u,_,w]),z=(0,Re.useCallback)(((s,o)=>{o?_({deep:!0}):w({deep:!0})}),[_,w]);return $&&0!==V.length?Re.createElement(iT.Provider,{value:a},Re.createElement(sT.Provider,{value:C},Re.createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--extension-keywords\",\"data-json-schema-level\":x},Re.createElement(j,{expanded:u,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--extension\"},\"Extension Keywords\")),Re.createElement(L,{expanded:u,onClick:z}),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&Re.createElement(Re.Fragment,null,V.map((o=>Re.createElement(B,{key:o,name:o,value:s[o],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))))))):null},JSONViewer=({name:s,value:o,className:i})=>{const a=useFn(),{path:u}=usePath(s),{isExpanded:_,setExpanded:w,setCollapsed:x}=useIsExpanded(s),[C,j]=useLevel(),L=useComponent(\"Accordion\"),B=useComponent(\"ExpandDeepButton\"),$=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||\"boolean\"==typeof o||\"symbol\"==typeof o||null==o,V=(s=>fn_isPlainObject(s)&&0===Object.keys(s).length)(o)||(s=>Array.isArray(s)&&0===s.length)(o),U=(0,Re.useCallback)((()=>{_?x():w()}),[_,w,x]),z=(0,Re.useCallback)(((s,o)=>{o?w({deep:!0}):x({deep:!0})}),[w,x]);return $?Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i)},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s),Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__value json-schema-2020-12-json-viewer__value--secondary\"},a.stringify(o))):V?Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i)},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(o)?\"empty array\":\"empty object\")):Re.createElement(iT.Provider,{value:u},Re.createElement(sT.Provider,{value:j},Re.createElement(\"div\",{className:Jn()(\"json-schema-2020-12-json-viewer\",i),\"data-json-schema-level\":C},Re.createElement(L,{expanded:_,onChange:U},Re.createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},s)),Re.createElement(B,{expanded:_,onClick:z}),Re.createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(o)?\"array\":\"object\"),Re.createElement(\"ul\",{className:Jn()(\"json-schema-2020-12-json-viewer__children\",{\"json-schema-2020-12-json-viewer__children--collapsed\":!_})},_&&Re.createElement(Re.Fragment,null,Array.isArray(o)?o.map(((s,o)=>Re.createElement(\"li\",{key:`#${o}`,className:\"json-schema-2020-12-property\"},Re.createElement(JSONViewer,{name:`#${o}`,value:s,className:i})))):Object.entries(o).map((([s,o])=>Re.createElement(\"li\",{key:s,className:\"json-schema-2020-12-property\"},Re.createElement(JSONViewer,{name:s,value:o,className:i})))))))))},uT=JSONViewer,Accordion_Accordion=({expanded:s=!1,children:o,onChange:i})=>{const a=useComponent(\"ChevronRightIcon\"),u=(0,Re.useCallback)((o=>{i(o,!s)}),[s,i]);return Re.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-accordion\",onClick:u},Re.createElement(\"div\",{className:\"json-schema-2020-12-accordion__children\"},o),Re.createElement(\"span\",{className:Jn()(\"json-schema-2020-12-accordion__icon\",{\"json-schema-2020-12-accordion__icon--expanded\":s,\"json-schema-2020-12-accordion__icon--collapsed\":!s})},Re.createElement(a,null)))},ExpandDeepButton_ExpandDeepButton=({expanded:s,onClick:o})=>{const i=(0,Re.useCallback)((i=>{o(i,!s)}),[s,o]);return Re.createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-expand-deep-button\",onClick:i},s?\"Collapse all\":\"Expand all\")},icons_ChevronRight=()=>Re.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},Re.createElement(\"path\",{d:\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"})),withJSONSchemaContext=(s,o={})=>{const i={components:{JSONSchema:cT,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:keywords_Type,KeywordEnum:Enum_Enum,KeywordConst:Const_Const,KeywordConstraint:lT,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:Title_Title,KeywordDescription:keywords_Description_Description,KeywordDefault:Default_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,KeywordExamples:keywords_Examples_Examples,ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONViewer:uT,Accordion:Accordion_Accordion,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight,...o.components},config:{default$schema:\"https://json-schema.org/draft/2020-12/schema\",defaultExpandedLevels:0,showExtensionKeywords:!0,...o.config},fn:{upperFirst:fn_upperFirst,getTitle:makeGetTitle(useFn),getType:makeGetType(useFn),isBooleanJSONSchema,hasKeyword,isExpandable:fn_makeIsExpandable(useFn),stringify:fn_stringify,stringifyConstraints,getDependentRequired,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(useFn),...o.fn},state:{paths:{}}},HOC=o=>Re.createElement(nT.Provider,{value:i},Re.createElement(s,o));return HOC.contexts={JSONSchemaContext:nT},HOC.displayName=s.displayName,HOC},makeWithJSONSchemaSystemContext=({getSystem:s})=>(o,i={})=>{const{getComponent:a,getConfigs:u}=s(),_=u(),w=a(\"JSONSchema202012\"),x=a(\"JSONSchema202012Keyword$schema\"),C=a(\"JSONSchema202012Keyword$vocabulary\"),j=a(\"JSONSchema202012Keyword$id\"),L=a(\"JSONSchema202012Keyword$anchor\"),B=a(\"JSONSchema202012Keyword$dynamicAnchor\"),$=a(\"JSONSchema202012Keyword$ref\"),V=a(\"JSONSchema202012Keyword$dynamicRef\"),U=a(\"JSONSchema202012Keyword$defs\"),z=a(\"JSONSchema202012Keyword$comment\"),Y=a(\"JSONSchema202012KeywordAllOf\"),Z=a(\"JSONSchema202012KeywordAnyOf\"),ee=a(\"JSONSchema202012KeywordOneOf\"),ie=a(\"JSONSchema202012KeywordNot\"),ae=a(\"JSONSchema202012KeywordIf\"),ce=a(\"JSONSchema202012KeywordThen\"),le=a(\"JSONSchema202012KeywordElse\"),pe=a(\"JSONSchema202012KeywordDependentSchemas\"),de=a(\"JSONSchema202012KeywordPrefixItems\"),fe=a(\"JSONSchema202012KeywordItems\"),ye=a(\"JSONSchema202012KeywordContains\"),be=a(\"JSONSchema202012KeywordProperties\"),_e=a(\"JSONSchema202012KeywordPatternProperties\"),Se=a(\"JSONSchema202012KeywordAdditionalProperties\"),we=a(\"JSONSchema202012KeywordPropertyNames\"),xe=a(\"JSONSchema202012KeywordUnevaluatedItems\"),Pe=a(\"JSONSchema202012KeywordUnevaluatedProperties\"),Te=a(\"JSONSchema202012KeywordType\"),Re=a(\"JSONSchema202012KeywordEnum\"),$e=a(\"JSONSchema202012KeywordConst\"),qe=a(\"JSONSchema202012KeywordConstraint\"),ze=a(\"JSONSchema202012KeywordDependentRequired\"),We=a(\"JSONSchema202012KeywordContentSchema\"),He=a(\"JSONSchema202012KeywordTitle\"),Ye=a(\"JSONSchema202012KeywordDescription\"),Xe=a(\"JSONSchema202012KeywordDefault\"),Qe=a(\"JSONSchema202012KeywordDeprecated\"),et=a(\"JSONSchema202012KeywordReadOnly\"),tt=a(\"JSONSchema202012KeywordWriteOnly\"),rt=a(\"JSONSchema202012KeywordExamples\"),nt=a(\"JSONSchema202012ExtensionKeywords\"),st=a(\"JSONSchema202012JSONViewer\"),ot=a(\"JSONSchema202012Accordion\"),it=a(\"JSONSchema202012ExpandDeepButton\"),at=a(\"JSONSchema202012ChevronRightIcon\");return withJSONSchemaContext(o,{components:{JSONSchema:w,Keyword$schema:x,Keyword$vocabulary:C,Keyword$id:j,Keyword$anchor:L,Keyword$dynamicAnchor:B,Keyword$ref:$,Keyword$dynamicRef:V,Keyword$defs:U,Keyword$comment:z,KeywordAllOf:Y,KeywordAnyOf:Z,KeywordOneOf:ee,KeywordNot:ie,KeywordIf:ae,KeywordThen:ce,KeywordElse:le,KeywordDependentSchemas:pe,KeywordPrefixItems:de,KeywordItems:fe,KeywordContains:ye,KeywordProperties:be,KeywordPatternProperties:_e,KeywordAdditionalProperties:Se,KeywordPropertyNames:we,KeywordUnevaluatedItems:xe,KeywordUnevaluatedProperties:Pe,KeywordType:Te,KeywordEnum:Re,KeywordConst:$e,KeywordConstraint:qe,KeywordDependentRequired:ze,KeywordContentSchema:We,KeywordTitle:He,KeywordDescription:Ye,KeywordDefault:Xe,KeywordDeprecated:Qe,KeywordReadOnly:et,KeywordWriteOnly:tt,KeywordExamples:rt,ExtensionKeywords:nt,JSONViewer:st,Accordion:ot,ExpandDeepButton:it,ChevronRightIcon:at,...i.components},config:{showExtensionKeywords:_.showExtensions,...i.config},fn:{...i.fn}})},json_schema_2020_12=({getSystem:s,fn:o})=>{const fnAccessor=()=>({upperFirst:o.upperFirst,...o.jsonSchema202012});return{components:{JSONSchema202012:cT,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:keywords_Type,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:Const_Const,JSONSchema202012KeywordConstraint:lT,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:Title_Title,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:Default_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012KeywordExamples:keywords_Examples_Examples,JSONSchema202012ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONSchema202012JSONViewer:uT,JSONSchema202012Accordion:Accordion_Accordion,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,withJSONSchema202012SystemContext:makeWithJSONSchemaSystemContext(s()),JSONSchema202012PathContext:()=>iT,JSONSchema202012LevelContext:()=>sT},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{getTitle:makeGetTitle(fnAccessor),getType:makeGetType(fnAccessor),isExpandable:fn_makeIsExpandable(fnAccessor),isBooleanJSONSchema,hasKeyword,useFn,useConfig,useComponent,useIsExpanded,usePath,useLevel,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(fnAccessor),hasSchemaType:fn_hasSchemaType}}}},array=(s,{sample:o=[]}={})=>((s,o={})=>{const{minItems:i,maxItems:a,uniqueItems:u}=o,{contains:_,minContains:w,maxContains:x}=o;let C=[...s];if(null!=_&&\"object\"==typeof _){if(Number.isInteger(w)&&w>1){const s=C.at(0);for(let o=1;o<w;o+=1)C.unshift(s)}Number.isInteger(x)}if(Number.isInteger(a)&&a>0&&(C=s.slice(0,a)),Number.isInteger(i)&&i>0)for(let s=0;C.length<i;s+=1)C.push(C[s%C.length]);return!0===u&&(C=Array.from(new Set(C))),C})(o,s),object=()=>{throw new Error(\"Not implemented\")},bytes=s=>xt()(s),random_pick=s=>s.at(0),predicates_isBooleanJSONSchema=s=>\"boolean\"==typeof s,isJSONSchemaObject=s=>as()(s),isJSONSchema=s=>predicates_isBooleanJSONSchema(s)||isJSONSchemaObject(s);const pT=class Registry{data={};register(s,o){this.data[s]=o}unregister(s){void 0===s?this.data={}:delete this.data[s]}get(s){return this.data[s]}},int32=()=>0,int64=()=>0,generators_float=()=>.1,generators_double=()=>.1,email=()=>\"user@example.com\",idn_email=()=>\"실례@example.com\",hostname=()=>\"example.com\",idn_hostname=()=>\"실례.com\",ipv4=()=>\"198.51.100.42\",ipv6=()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",uri=()=>\"https://example.com/\",uri_reference=()=>\"path/index.html\",iri=()=>\"https://실례.com/\",iri_reference=()=>\"path/실례.html\",uuid=()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",uri_template=()=>\"https://example.com/dictionary/{term:1}/{term}\",generators_json_pointer=()=>\"/a/b/c\",relative_json_pointer=()=>\"1/0\",date_time=()=>(new Date).toISOString(),date=()=>(new Date).toISOString().substring(0,10),time=()=>(new Date).toISOString().substring(11),duration=()=>\"P3D\",generators_password=()=>\"********\",regex=()=>\"^[a-z]+$\";const hT=new class FormatRegistry extends pT{#s={int32,int64,float:generators_float,double:generators_double,email,\"idn-email\":idn_email,hostname,\"idn-hostname\":idn_hostname,ipv4,ipv6,uri,\"uri-reference\":uri_reference,iri,\"iri-reference\":iri_reference,uuid,\"uri-template\":uri_template,\"json-pointer\":generators_json_pointer,\"relative-json-pointer\":relative_json_pointer,\"date-time\":date_time,date,time,duration,password:generators_password,regex};data={...this.#s};get defaults(){return{...this.#s}}},formatAPI=(s,o)=>\"function\"==typeof o?hT.register(s,o):null===o?hT.unregister(s):hT.get(s);formatAPI.getDefaults=()=>hT.defaults;const dT=formatAPI;var fT=__webpack_require__(48287).Buffer;const _7bit=s=>fT.from(s).toString(\"ascii\");var mT=__webpack_require__(48287).Buffer;const _8bit=s=>mT.from(s).toString(\"utf8\");var gT=__webpack_require__(48287).Buffer;const encoders_binary=s=>gT.from(s).toString(\"binary\"),quoted_printable=s=>{let o=\"\";for(let i=0;i<s.length;i++){const a=s.charCodeAt(i);if(61===a)o+=\"=3D\";else if(a>=33&&a<=60||a>=62&&a<=126||9===a||32===a)o+=s.charAt(i);else if(13===a||10===a)o+=\"\\r\\n\";else if(a>126){const a=unescape(encodeURIComponent(s.charAt(i)));for(let s=0;s<a.length;s++)o+=\"=\"+(\"0\"+a.charCodeAt(s).toString(16)).slice(-2).toUpperCase()}else o+=\"=\"+(\"0\"+a.toString(16)).slice(-2).toUpperCase()}return o};var yT=__webpack_require__(48287).Buffer;const base16=s=>yT.from(s).toString(\"hex\");var vT=__webpack_require__(48287).Buffer;const base32=s=>{const o=vT.from(s).toString(\"utf8\"),i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";let a=0,u=\"\",_=0,w=0;for(let s=0;s<o.length;s++)for(_=_<<8|o.charCodeAt(s),w+=8;w>=5;)u+=i.charAt(_>>>w-5&31),w-=5;w>0&&(u+=i.charAt(_<<5-w&31),a=(8-8*o.length%5)%5);for(let s=0;s<a;s++)u+=\"=\";return u};var bT=__webpack_require__(48287).Buffer;const base64=s=>bT.from(s).toString(\"base64\");var _T=__webpack_require__(48287).Buffer;const base64url=s=>_T.from(s).toString(\"base64url\");const ST=new class EncoderRegistry extends pT{#s={\"7bit\":_7bit,\"8bit\":_8bit,binary:encoders_binary,\"quoted-printable\":quoted_printable,base16,base32,base64,base64url};data={...this.#s};get defaults(){return{...this.#s}}},encoderAPI=(s,o)=>\"function\"==typeof o?ST.register(s,o):null===o?ST.unregister(s):ST.get(s);encoderAPI.getDefaults=()=>ST.defaults;const ET=encoderAPI,wT={\"text/plain\":()=>\"string\",\"text/css\":()=>\".selector { border: 1px solid red }\",\"text/csv\":()=>\"value1,value2,value3\",\"text/html\":()=>\"<p>content</p>\",\"text/calendar\":()=>\"BEGIN:VCALENDAR\",\"text/javascript\":()=>\"console.dir('Hello world!');\",\"text/xml\":()=>'<person age=\"30\">John Doe</person>',\"text/*\":()=>\"string\"},xT={\"image/*\":()=>bytes(25).toString(\"binary\")},kT={\"audio/*\":()=>bytes(25).toString(\"binary\")},OT={\"video/*\":()=>bytes(25).toString(\"binary\")},CT={\"application/json\":()=>'{\"key\":\"value\"}',\"application/ld+json\":()=>'{\"name\": \"John Doe\"}',\"application/x-httpd-php\":()=>\"<?php echo '<p>Hello World!</p>'; ?>\",\"application/rtf\":()=>String.raw`{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1`,\"application/x-sh\":()=>'echo \"Hello World!\"',\"application/xhtml+xml\":()=>\"<p>content</p>\",\"application/*\":()=>bytes(25).toString(\"binary\")};const AT=new class MediaTypeRegistry extends pT{#s={...wT,...xT,...kT,...OT,...CT};data={...this.#s};get defaults(){return{...this.#s}}},mediaTypeAPI=(s,o)=>{if(\"function\"==typeof o)return AT.register(s,o);if(null===o)return AT.unregister(s);const i=s.split(\";\").at(0),a=`${i.split(\"/\").at(0)}/*`;return AT.get(s)||AT.get(i)||AT.get(a)};mediaTypeAPI.getDefaults=()=>AT.defaults;const jT=mediaTypeAPI,applyStringConstraints=(s,o={})=>{const{maxLength:i,minLength:a}=o;let u=s;if(Number.isInteger(i)&&i>0&&(u=u.slice(0,i)),Number.isInteger(a)&&a>0){let s=0;for(;u.length<a;)u+=u[s++%u.length]}return u},types_string=(s,{sample:o}={})=>{const{contentEncoding:i,contentMediaType:a,contentSchema:u}=s,{pattern:_,format:w}=s,x=ET(i)||yO();let C;return C=\"string\"==typeof _?applyStringConstraints((s=>{try{return new(ps())(s).gen()}catch{return\"string\"}})(_),s):\"string\"==typeof w?(s=>{const{format:o}=s,i=dT(o);return\"function\"==typeof i?i(s):\"string\"})(s):isJSONSchema(u)&&\"string\"==typeof a&&void 0!==o?Array.isArray(o)||\"object\"==typeof o?JSON.stringify(o):applyStringConstraints(String(o),s):\"string\"==typeof a?(s=>{const{contentMediaType:o}=s,i=jT(o);return\"function\"==typeof i?i(s):\"string\"})(s):applyStringConstraints(\"string\",s),x(C)},applyNumberConstraints=(s,o={})=>{const{minimum:i,maximum:a,exclusiveMinimum:u,exclusiveMaximum:_}=o,{multipleOf:w}=o,x=Number.isInteger(s)?1:Number.EPSILON;let C=\"number\"==typeof i?i:null,j=\"number\"==typeof a?a:null,L=s;if(\"number\"==typeof u&&(C=null!==C?Math.max(C,u+x):u+x),\"number\"==typeof _&&(j=null!==j?Math.min(j,_-x):_-x),L=C>j&&s||C||j||L,\"number\"==typeof w&&w>0){const s=L%w;L=0===s?L:L+w-s}return L},types_number=s=>{const{format:o}=s;let i;return i=\"string\"==typeof o?(s=>{const{format:o}=s,i=dT(o);return\"function\"==typeof i?i(s):0})(s):0,applyNumberConstraints(i,s)},types_integer=s=>{const{format:o}=s;let i;return i=\"string\"==typeof o?(s=>{const{format:o}=s,i=dT(o);if(\"function\"==typeof i)return i(s);switch(o){case\"int32\":return int32();case\"int64\":return int64()}return 0})(s):0,applyNumberConstraints(i,s)},types_boolean=s=>\"boolean\"!=typeof s.default||s.default,IT=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(s,o)=>\"string\"==typeof o&&Object.hasOwn(s,o)?s[o]:()=>`Unknown Type: ${o}`}),PT=[\"array\",\"object\",\"number\",\"integer\",\"string\",\"boolean\",\"null\"],hasExample=s=>{if(!isJSONSchemaObject(s))return!1;const{examples:o,example:i,default:a}=s;return!!(Array.isArray(o)&&o.length>=1)||(void 0!==a||void 0!==i)},extractExample=s=>{if(!isJSONSchemaObject(s))return null;const{examples:o,example:i,default:a}=s;return Array.isArray(o)&&o.length>=1?o.at(0):void 0!==a?a:void 0!==i?i:void 0},TT={array:[\"items\",\"prefixItems\",\"contains\",\"maxContains\",\"minContains\",\"maxItems\",\"minItems\",\"uniqueItems\",\"unevaluatedItems\"],object:[\"properties\",\"additionalProperties\",\"patternProperties\",\"propertyNames\",\"minProperties\",\"maxProperties\",\"required\",\"dependentSchemas\",\"dependentRequired\",\"unevaluatedProperties\"],string:[\"pattern\",\"format\",\"minLength\",\"maxLength\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],integer:[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\",\"multipleOf\"]};TT.number=TT.integer;const NT=\"string\",inferTypeFromValue=s=>void 0===s?null:null===s?\"null\":Array.isArray(s)?\"array\":Number.isInteger(s)?\"integer\":typeof s,foldType=s=>{if(Array.isArray(s)&&s.length>=1){if(s.includes(\"array\"))return\"array\";if(s.includes(\"object\"))return\"object\";{const o=s.filter((s=>\"null\"!==s)),i=random_pick(o.length>0?o:s);if(PT.includes(i))return i}}return PT.includes(s)?s:null},inferType=(s,o=new WeakSet)=>{if(!isJSONSchemaObject(s))return NT;if(o.has(s))return NT;o.add(s);let{type:i,const:a}=s;if(i=foldType(i),\"string\"!=typeof i){const o=Object.keys(TT);e:for(let a=0;a<o.length;a+=1){const u=o[a],_=TT[u];for(let o=0;o<_.length;o+=1){const a=_[o];if(Object.hasOwn(s,a)){i=u;break e}}}}if(\"string\"!=typeof i&&void 0!==a){const s=inferTypeFromValue(a);i=\"string\"==typeof s?s:i}if(\"string\"!=typeof i){const combineTypes=i=>{if(Array.isArray(s[i])){const a=s[i].map((s=>inferType(s,o)));return foldType(a)}return null},a=combineTypes(\"allOf\"),u=combineTypes(\"anyOf\"),_=combineTypes(\"oneOf\"),w=s.not?inferType(s.not,o):null;(a||u||_||w)&&(i=foldType([a,u,_,w].filter(Boolean)))}if(\"string\"!=typeof i&&hasExample(s)){const o=extractExample(s),a=inferTypeFromValue(o);i=\"string\"==typeof a?a:i}return o.delete(s),i||NT},getType=s=>inferType(s),typeCast=s=>predicates_isBooleanJSONSchema(s)?(s=>!1===s?{not:{}}:{})(s):isJSONSchemaObject(s)?s:{},merge_merge=(s,o,i={})=>{if(predicates_isBooleanJSONSchema(s)&&!0===s)return!0;if(predicates_isBooleanJSONSchema(s)&&!1===s)return!1;if(predicates_isBooleanJSONSchema(o)&&!0===o)return!0;if(predicates_isBooleanJSONSchema(o)&&!1===o)return!1;if(!isJSONSchema(s))return o;if(!isJSONSchema(o))return s;const a={...o,...s};if(o.type&&s.type&&Array.isArray(o.type)&&\"string\"==typeof o.type){const i=normalizeArray(o.type).concat(s.type);a.type=Array.from(new Set(i))}if(Array.isArray(o.required)&&Array.isArray(s.required)&&(a.required=[...new Set([...s.required,...o.required])]),o.properties&&s.properties){const u=new Set([...Object.keys(o.properties),...Object.keys(s.properties)]);a.properties={};for(const _ of u){const u=o.properties[_]||{},w=s.properties[_]||{};u.readOnly&&!i.includeReadOnly||u.writeOnly&&!i.includeWriteOnly?a.required=(a.required||[]).filter((s=>s!==_)):a.properties[_]=merge_merge(w,u,i)}}return isJSONSchema(o.items)&&isJSONSchema(s.items)&&(a.items=merge_merge(s.items,o.items,i)),isJSONSchema(o.contains)&&isJSONSchema(s.contains)&&(a.contains=merge_merge(s.contains,o.contains,i)),isJSONSchema(o.contentSchema)&&isJSONSchema(s.contentSchema)&&(a.contentSchema=merge_merge(s.contentSchema,o.contentSchema,i)),a},MT=merge_merge,main_sampleFromSchemaGeneric=(s,o={},i=void 0,a=!1)=>{if(null==s&&void 0===i)return;\"function\"==typeof s?.toJS&&(s=s.toJS()),s=typeCast(s);let u=void 0!==i||hasExample(s);const _=!u&&Array.isArray(s.oneOf)&&s.oneOf.length>0,w=!u&&Array.isArray(s.anyOf)&&s.anyOf.length>0;if(!u&&(_||w)){const i=typeCast(random_pick(_?s.oneOf:s.anyOf));!(s=MT(s,i,o)).xml&&i.xml&&(s.xml=i.xml),hasExample(s)&&hasExample(i)&&(u=!0)}const x={};let{xml:C,properties:j,additionalProperties:L,items:B,contains:$}=s||{},V=getType(s),{includeReadOnly:U,includeWriteOnly:z}=o;C=C||{};let Y,{name:Z,prefix:ee,namespace:ie}=C,ae={};if(Object.hasOwn(s,\"type\")||(s.type=V),a&&(Z=Z||\"notagname\",Y=(ee?`${ee}:`:\"\")+Z,ie)){x[ee?`xmlns:${ee}`:\"xmlns\"]=ie}a&&(ae[Y]=[]);const ce=objectify(j);let le,pe=0;const hasExceededMaxProperties=()=>Number.isInteger(s.maxProperties)&&s.maxProperties>0&&pe>=s.maxProperties,canAddProperty=o=>!(Number.isInteger(s.maxProperties)&&s.maxProperties>0)||!hasExceededMaxProperties()&&(!(o=>!Array.isArray(s.required)||0===s.required.length||!s.required.includes(o))(o)||s.maxProperties-pe-(()=>{if(!Array.isArray(s.required)||0===s.required.length)return 0;let o=0;return a?s.required.forEach((s=>o+=void 0===ae[s]?0:1)):s.required.forEach((s=>{o+=void 0===ae[Y]?.find((o=>void 0!==o[s]))?0:1})),s.required.length-o})()>0);if(le=a?(i,u=void 0)=>{if(s&&ce[i]){if(ce[i].xml=ce[i].xml||{},ce[i].xml.attribute){const s=Array.isArray(ce[i].enum)?random_pick(ce[i].enum):void 0;if(hasExample(ce[i]))x[ce[i].xml.name||i]=extractExample(ce[i]);else if(void 0!==s)x[ce[i].xml.name||i]=s;else{const s=typeCast(ce[i]),a=getType(s),_=ce[i].xml.name||i;if(\"array\"===a){const s=main_sampleFromSchemaGeneric(ce[i],o,u,!1);x[_]=s.map((s=>as()(s)?\"UnknownTypeObject\":Array.isArray(s)?\"UnknownTypeArray\":s)).join(\" \")}else x[_]=\"object\"===a?\"UnknownTypeObject\":IT[a](s)}return}ce[i].xml.name=ce[i].xml.name||i}else ce[i]||!1===L||(ce[i]={xml:{name:i}});let _=main_sampleFromSchemaGeneric(ce[i],o,u,a);canAddProperty(i)&&(pe++,Array.isArray(_)?ae[Y]=ae[Y].concat(_):ae[Y].push(_))}:(i,u)=>{if(canAddProperty(i)){if(as()(s.discriminator?.mapping)&&s.discriminator.propertyName===i&&\"string\"==typeof s.$$ref){for(const o in s.discriminator.mapping)if(-1!==s.$$ref.search(s.discriminator.mapping[o])){ae[i]=o;break}}else ae[i]=main_sampleFromSchemaGeneric(ce[i],o,u,a);pe++}},u){let u;if(u=void 0!==i?i:extractExample(s),!a){if(\"number\"==typeof u&&\"string\"===V)return`${u}`;if(\"string\"!=typeof u||\"string\"===V)return u;try{return JSON.parse(u)}catch{return u}}if(\"array\"===V){if(!Array.isArray(u)){if(\"string\"==typeof u)return u;u=[u]}let i=[];return isJSONSchemaObject(B)&&(B.xml=B.xml||C||{},B.xml.name=B.xml.name||C.name,i=u.map((s=>main_sampleFromSchemaGeneric(B,o,s,a)))),isJSONSchemaObject($)&&($.xml=$.xml||C||{},$.xml.name=$.xml.name||C.name,i=[main_sampleFromSchemaGeneric($,o,void 0,a),...i]),i=IT.array(s,{sample:i}),C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x})):ae=i,ae}if(\"object\"===V){if(\"string\"==typeof u)return u;for(const s in u)Object.hasOwn(u,s)&&(ce[s]?.readOnly&&!U||ce[s]?.writeOnly&&!z||(ce[s]?.xml?.attribute?x[ce[s].xml.name||s]=u[s]:le(s,u[s])));return ds()(x)||ae[Y].push({_attr:x}),ae}return ae[Y]=ds()(x)?u:[{_attr:x},u],ae}if(\"array\"===V){let i=[];if(isJSONSchemaObject($))if(a&&($.xml=$.xml||s.xml||{},$.xml.name=$.xml.name||C.name),Array.isArray($.anyOf)){const{anyOf:s,...u}=B;i.push(...$.anyOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else if(Array.isArray($.oneOf)){const{oneOf:s,...u}=B;i.push(...$.oneOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else{if(!(!a||a&&C.wrapped))return main_sampleFromSchemaGeneric($,o,void 0,a);i.push(main_sampleFromSchemaGeneric($,o,void 0,a))}if(isJSONSchemaObject(B))if(a&&(B.xml=B.xml||s.xml||{},B.xml.name=B.xml.name||C.name),Array.isArray(B.anyOf)){const{anyOf:s,...u}=B;i.push(...B.anyOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else if(Array.isArray(B.oneOf)){const{oneOf:s,...u}=B;i.push(...B.oneOf.map((s=>main_sampleFromSchemaGeneric(MT(s,u,o),o,void 0,a))))}else{if(!(!a||a&&C.wrapped))return main_sampleFromSchemaGeneric(B,o,void 0,a);i.push(main_sampleFromSchemaGeneric(B,o,void 0,a))}return i=IT.array(s,{sample:i}),a&&C.wrapped?(ae[Y]=i,ds()(x)||ae[Y].push({_attr:x}),ae):i}if(\"object\"===V){for(let s in ce)Object.hasOwn(ce,s)&&(ce[s]?.deprecated||ce[s]?.readOnly&&!U||ce[s]?.writeOnly&&!z||le(s));if(a&&x&&ae[Y].push({_attr:x}),hasExceededMaxProperties())return ae;if(predicates_isBooleanJSONSchema(L)&&L)a?ae[Y].push({additionalProp:\"Anything can be here\"}):ae.additionalProp1={},pe++;else if(isJSONSchemaObject(L)){const i=L,u=main_sampleFromSchemaGeneric(i,o,void 0,a);if(a&&\"string\"==typeof i?.xml?.name&&\"notagname\"!==i?.xml?.name)ae[Y].push(u);else{const o=Number.isInteger(s.minProperties)&&s.minProperties>0&&pe<s.minProperties?s.minProperties-pe:3;for(let s=1;s<=o;s++){if(hasExceededMaxProperties())return ae;if(a){const o={};o[\"additionalProp\"+s]=u.notagname,ae[Y].push(o)}else ae[\"additionalProp\"+s]=u;pe++}}}return ae}let de;if(void 0!==s.const)de=s.const;else if(s&&Array.isArray(s.enum))de=random_pick(normalizeArray(s.enum));else{const i=isJSONSchemaObject(s.contentSchema)?main_sampleFromSchemaGeneric(s.contentSchema,o,void 0,a):void 0;de=IT[V](s,{sample:i})}return a?(ae[Y]=ds()(x)?de:[{_attr:x},de],ae):de},main_createXMLExample=(s,o,i)=>{const a=main_sampleFromSchemaGeneric(s,o,i,!0);if(a)return\"string\"==typeof a?a:ls()(a,{declaration:!0,indent:\"\\t\"})},main_sampleFromSchema=(s,o,i)=>main_sampleFromSchemaGeneric(s,o,i,!1),main_resolver=(s,o,i)=>[s,JSON.stringify(o),JSON.stringify(i)],RT=utils_memoizeN(main_createXMLExample,main_resolver),DT=utils_memoizeN(main_sampleFromSchema,main_resolver);const LT=new class OptionRegistry extends pT{#s={};data={...this.#s};get defaults(){return{...this.#s}}},api_optionAPI=(s,o)=>(void 0!==o&&LT.register(s,o),LT.get(s)),FT=[{when:/json/,shouldStringifyTypes:[\"string\"]}],BT=[\"object\"],fn_get_json_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.jsonSchema202012.memoizedSampleFromSchema(o,i,u),x=typeof w,C=FT.reduce(((s,o)=>o.when.test(a)?[...s,...o.shouldStringifyTypes]:s),BT);return gt()(C,(s=>s===x))?JSON.stringify(w,null,2):w},fn_get_yaml_sample_schema=s=>(o,i,a,u)=>{const{fn:_}=s(),w=_.jsonSchema202012.getJsonSampleSchema(o,i,a,u);let x;try{x=fn.dump(fn.load(w),{lineWidth:-1},{schema:rn}),\"\\n\"===x[x.length-1]&&(x=x.slice(0,x.length-1))}catch(s){return console.error(s),\"error: could not generate yaml example\"}return x.replace(/\\t/g,\"  \")},fn_get_xml_sample_schema=s=>(o,i,a)=>{const{fn:u}=s();if(o&&!o.xml&&(o.xml={}),o&&!o.xml.name){if(!o.$$ref&&(o.type||o.items||o.properties||o.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(o.$$ref){let s=o.$$ref.match(/\\S*\\/(\\S+)$/);o.xml.name=s[1]}}return u.jsonSchema202012.memoizedCreateXMLExample(o,i,a)},fn_get_sample_schema=s=>(o,i=\"\",a={},u=void 0)=>{const{fn:_}=s();return\"function\"==typeof o?.toJS&&(o=o.toJS()),\"function\"==typeof u?.toJS&&(u=u.toJS()),/xml/.test(i)?_.jsonSchema202012.getXmlSampleSchema(o,a,u):/(yaml|yml)/.test(i)?_.jsonSchema202012.getYamlSampleSchema(o,a,i,u):_.jsonSchema202012.getJsonSampleSchema(o,a,i,u)},json_schema_2020_12_samples=({getSystem:s})=>{const o=fn_get_json_sample_schema(s),i=fn_get_yaml_sample_schema(s),a=fn_get_xml_sample_schema(s),u=fn_get_sample_schema(s);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleOptionAPI:api_optionAPI,sampleEncoderAPI:ET,sampleFormatAPI:dT,sampleMediaTypeAPI:jT,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:DT,memoizedCreateXMLExample:RT,getJsonSampleSchema:o,getYamlSampleSchema:i,getXmlSampleSchema:a,getSampleSchema:u,mergeJsonSchema:MT,foldType}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}const inline_plugin=s=>()=>({fn:s.fn,components:s.components}),factorization_system=s=>{const o=Ye()({layout:{layout:s.layout,filter:s.filter},spec:{spec:\"\",url:s.url},requestSnippets:s.requestSnippets},s.initialState);if(s.initialState)for(const[i,a]of Object.entries(s.initialState))void 0===a&&delete o[i];return{system:{configs:s.configs},plugins:s.presets,state:o}},sources_query=()=>s=>{const o=s.queryConfigEnabled?(()=>{const s=new URLSearchParams(lt.location.search);return Object.fromEntries(s)})():{};return Object.entries(o).reduce(((s,[o,i])=>(\"config\"===o?s.configUrl=i:\"urls.primaryName\"===o?s[o]=i:s=co()(s,o,i),s)),{})},sources_url=({url:s,system:o})=>async i=>{if(!s)return{};if(\"function\"!=typeof o.configsActions?.getConfigByUrl)return{};const a=(()=>{const s={};return s.promise=new Promise(((o,i)=>{s.resolve=o,s.reject=i})),s})();return o.configsActions.getConfigByUrl({url:s,loadRemoteConfig:!0,requestInterceptor:i.requestInterceptor,responseInterceptor:i.responseInterceptor},(s=>{a.resolve(s)})),a.promise},runtime=()=>()=>{const s={};return globalThis.location&&(s.oauth2RedirectUrl=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0,globalThis.location.pathname.lastIndexOf(\"/\"))}/oauth2-redirect.html`),s},$T=Object.freeze({dom_id:null,domNode:null,spec:{},url:\"\",urls:null,configUrl:null,layout:\"BaseLayout\",docExpansion:\"list\",maxDisplayedTags:-1,filter:!1,validatorUrl:\"https://validator.swagger.io/validator\",oauth2RedirectUrl:void 0,persistAuthorization:!1,configs:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:s=>(s.curlOptions=[],s),responseInterceptor:s=>s,showMutatedRequest:!0,defaultModelRendering:\"example\",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:!1,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:\"cURL (bash)\",syntax:\"bash\"},curl_powershell:{title:\"cURL (PowerShell)\",syntax:\"powershell\"},curl_cmd:{title:\"cURL (CMD)\",syntax:\"bash\"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:\"agate\"},operationsSorter:null,tagsSorter:null,onComplete:null,modelPropertyMacro:null,parameterMacro:null,fileUploadMediaTypes:[\"application/octet-stream\",\"image/\",\"audio/\",\"video/\"],uncaughtExceptionHandler:null});var qT=__webpack_require__(61448),VT=__webpack_require__.n(qT),UT=__webpack_require__(77731),zT=__webpack_require__.n(UT);const type_casters_array=(s,o=[])=>Array.isArray(s)?s:o,type_casters_boolean=(s,o=!1)=>!0===s||\"true\"===s||1===s||\"1\"===s||!1!==s&&\"false\"!==s&&0!==s&&\"0\"!==s&&o,dom_node=s=>null===s||\"null\"===s?null:s,type_casters_filter=s=>{const o=String(s);return type_casters_boolean(s,o)},type_casters_function=(s,o)=>\"function\"==typeof s?s:o,nullable_array=s=>Array.isArray(s)?s:null,nullable_function=s=>\"function\"==typeof s?s:null,nullable_string=s=>null===s||\"null\"===s?null:String(s),type_casters_number=(s,o=-1)=>{const i=parseInt(s,10);return Number.isNaN(i)?o:i},type_casters_object=(s,o={})=>as()(s)?s:o,sorter=s=>\"function\"==typeof s||\"string\"==typeof s?s:null,type_casters_string=s=>String(s),syntax_highlight=(s,o)=>as()(s)?s:!1===s||\"false\"===s||0===s||\"0\"===s?{activated:!1}:o,undefined_string=s=>void 0===s||\"undefined\"===s?void 0:String(s),WT={components:{typeCaster:type_casters_object},configs:{typeCaster:type_casters_object},configUrl:{typeCaster:nullable_string},deepLinking:{typeCaster:type_casters_boolean,defaultValue:$T.deepLinking},defaultModelExpandDepth:{typeCaster:type_casters_number,defaultValue:$T.defaultModelExpandDepth},defaultModelRendering:{typeCaster:type_casters_string},defaultModelsExpandDepth:{typeCaster:type_casters_number,defaultValue:$T.defaultModelsExpandDepth},displayOperationId:{typeCaster:type_casters_boolean,defaultValue:$T.displayOperationId},displayRequestDuration:{typeCaster:type_casters_boolean,defaultValue:$T.displayRequestDuration},docExpansion:{typeCaster:type_casters_string},dom_id:{typeCaster:nullable_string},domNode:{typeCaster:dom_node},fileUploadMediaTypes:{typeCaster:type_casters_array,defaultValue:$T.fileUploadMediaTypes},filter:{typeCaster:type_casters_filter},fn:{typeCaster:type_casters_object},initialState:{typeCaster:type_casters_object},layout:{typeCaster:type_casters_string},maxDisplayedTags:{typeCaster:type_casters_number,defaultValue:$T.maxDisplayedTags},modelPropertyMacro:{typeCaster:nullable_function},oauth2RedirectUrl:{typeCaster:undefined_string},onComplete:{typeCaster:nullable_function},operationsSorter:{typeCaster:sorter},paramaterMacro:{typeCaster:nullable_function},persistAuthorization:{typeCaster:type_casters_boolean,defaultValue:$T.persistAuthorization},plugins:{typeCaster:type_casters_array,defaultValue:$T.plugins},presets:{typeCaster:type_casters_array,defaultValue:$T.presets},requestInterceptor:{typeCaster:type_casters_function,defaultValue:$T.requestInterceptor},requestSnippets:{typeCaster:type_casters_object,defaultValue:$T.requestSnippets},requestSnippetsEnabled:{typeCaster:type_casters_boolean,defaultValue:$T.requestSnippetsEnabled},responseInterceptor:{typeCaster:type_casters_function,defaultValue:$T.responseInterceptor},showCommonExtensions:{typeCaster:type_casters_boolean,defaultValue:$T.showCommonExtensions},showExtensions:{typeCaster:type_casters_boolean,defaultValue:$T.showExtensions},showMutatedRequest:{typeCaster:type_casters_boolean,defaultValue:$T.showMutatedRequest},spec:{typeCaster:type_casters_object,defaultValue:$T.spec},supportedSubmitMethods:{typeCaster:type_casters_array,defaultValue:$T.supportedSubmitMethods},syntaxHighlight:{typeCaster:syntax_highlight,defaultValue:$T.syntaxHighlight},\"syntaxHighlight.activated\":{typeCaster:type_casters_boolean,defaultValue:$T.syntaxHighlight.activated},\"syntaxHighlight.theme\":{typeCaster:type_casters_string},tagsSorter:{typeCaster:sorter},tryItOutEnabled:{typeCaster:type_casters_boolean,defaultValue:$T.tryItOutEnabled},url:{typeCaster:type_casters_string},urls:{typeCaster:nullable_array},\"urls.primaryName\":{typeCaster:type_casters_string},validatorUrl:{typeCaster:nullable_string},withCredentials:{typeCaster:type_casters_boolean,defaultValue:$T.withCredentials},uncaughtExceptionHandler:{typeCaster:nullable_function}},type_cast=s=>Object.entries(WT).reduce(((s,[o,{typeCaster:i,defaultValue:a}])=>{if(VT()(s,o)){const u=i(An()(s,o),a);s=zT()(o,u,s)}return s}),{...s}),config_merge=(s,...o)=>{let i=Symbol.for(\"domNode\"),a=Symbol.for(\"primaryName\");const u=[];for(const s of o){const o={...s};Object.hasOwn(o,\"domNode\")&&(i=o.domNode,delete o.domNode),Object.hasOwn(o,\"urls.primaryName\")?(a=o[\"urls.primaryName\"],delete o[\"urls.primaryName\"]):Array.isArray(o.urls)&&Object.hasOwn(o.urls,\"primaryName\")&&(a=o.urls.primaryName,delete o.urls.primaryName),u.push(o)}const _=Ye()(s,...u);return i!==Symbol.for(\"domNode\")&&(_.domNode=i),a!==Symbol.for(\"primaryName\")&&Array.isArray(_.urls)&&(_.urls.primaryName=a),type_cast(_)};function SwaggerUI(s){const o=sources_query()(s),i=runtime()(),a=SwaggerUI.config.merge({},SwaggerUI.config.defaults,i,s,o),u=factorization_system(a),_=inline_plugin(a),w=new Store(u);w.register([a.plugins,_]);const x=w.getSystem(),persistConfigs=s=>{w.setConfigs(s),x.configsActions.loaded()},updateSpec=s=>{!o.url&&\"object\"==typeof s.spec&&Object.keys(s.spec).length>0?(x.specActions.updateUrl(\"\"),x.specActions.updateLoadingStatus(\"success\"),x.specActions.updateSpec(JSON.stringify(s.spec))):\"function\"==typeof x.specActions.download&&s.url&&!s.urls&&(x.specActions.updateUrl(s.url),x.specActions.download(s.url))},render=s=>{if(s.domNode)x.render(s.domNode,\"App\");else if(s.dom_id){const o=document.querySelector(s.dom_id);x.render(o,\"App\")}else null===s.dom_id||null===s.domNode||console.error(\"Skipped rendering: no `dom_id` or `domNode` was specified\")};return a.configUrl?((async()=>{const{configUrl:s}=a,i=await sources_url({url:s,system:x})(a),u=SwaggerUI.config.merge({},a,i,o);persistConfigs(u),null!==i&&updateSpec(u),render(u)})(),x):(persistConfigs(a),updateSpec(a),render(a),x)}SwaggerUI.System=Store,SwaggerUI.config={defaults:$T,merge:config_merge,typeCast:type_cast,typeCastMappings:WT},SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5:json_schema_5,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,ViewLegacy:view_legacy,DownloadUrl:downloadUrlPlugin,SyntaxHighlighting:syntax_highlighting,Versions:versions,SafeRender:safe_render};const JT=SwaggerUI})(),module.exports=i.default})();"
  },
  {
    "path": "web/public/swagger/swagger-ui-standalone-preset.js",
    "content": "/*! For license information please see swagger-ui-standalone-preset.js.LICENSE.txt */\n!function webpackUniversalModuleDefinition(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.SwaggerUIStandalonePreset=e():t.SwaggerUIStandalonePreset=e()}(this,(()=>(()=>{var t={2:(t,e,r)=>{var n=r(2199),i=r(4664),o=r(5950);t.exports=function getAllKeys(t){return n(t,o,i)}},79:(t,e,r)=>{var n=r(3702),i=r(80),o=r(4739),a=r(8655),s=r(1175);function ListCache(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}ListCache.prototype.clear=n,ListCache.prototype.delete=i,ListCache.prototype.get=o,ListCache.prototype.has=a,ListCache.prototype.set=s,t.exports=ListCache},80:(t,e,r)=>{var n=r(6025),i=Array.prototype.splice;t.exports=function listCacheDelete(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():i.call(e,r,1),--this.size,!0)}},104:(t,e,r)=>{var n=r(3661);function memoize(t,e){if(\"function\"!=typeof t||null!=e&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var memoized=function(){var r=arguments,n=e?e.apply(this,r):r[0],i=memoized.cache;if(i.has(n))return i.get(n);var o=t.apply(this,r);return memoized.cache=i.set(n,o)||i,o};return memoized.cache=new(memoize.Cache||n),memoized}memoize.Cache=n,t.exports=memoize},251:(t,e)=>{e.read=function(t,e,r,n,i){var o,a,s=8*i-n-1,u=(1<<s)-1,c=u>>1,f=-7,l=r?i-1:0,h=r?-1:1,p=t[e+l];for(l+=h,o=p&(1<<-f)-1,p>>=-f,f+=s;f>0;o=256*o+t[e+l],l+=h,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=n;f>0;a=256*a+t[e+l],l+=h,f-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,n),o-=c}return(p?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,u,c=8*o-i-1,f=(1<<c)-1,l=f>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,_=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),(e+=a+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(a++,u/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(a=a<<i|s,c+=i;c>0;t[r+p]=255&a,p+=d,a/=256,c-=8);t[r+p-d]|=128*_}},270:(t,e,r)=>{var n=r(7068),i=r(346);t.exports=function baseIsEqual(t,e,r,o,a){return t===e||(null==t||null==e||!i(t)&&!i(e)?t!=t&&e!=e:n(t,e,r,o,baseIsEqual,a))}},289:(t,e,r)=>{var n=r(2651);t.exports=function mapCacheGet(t){return n(this,t).get(t)}},294:t=>{t.exports=function isLength(t){return\"number\"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},317:t=>{t.exports=function mapToArray(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}},346:t=>{t.exports=function isObjectLike(t){return null!=t&&\"object\"==typeof t}},361:t=>{var e=/^(?:0|[1-9]\\d*)$/;t.exports=function isIndex(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&(\"number\"==n||\"symbol\"!=n&&e.test(t))&&t>-1&&t%1==0&&t<r}},376:t=>{\"use strict\";t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},392:t=>{t.exports=function getValue(t,e){return null==t?void 0:t[e]}},462:(t,e,r)=>{\"use strict\";var n=r(975);t.exports=n},470:(t,e,r)=>{\"use strict\";var n=r(6028),i=r(5594);t.exports=function(t){var e=n(t,\"string\");return i(e)?e:e+\"\"}},575:(t,e,r)=>{\"use strict\";var n=r(3121);t.exports=function(t){return n(t.length)}},581:(t,e,r)=>{\"use strict\";var n=r(3930),i=r(2250),o=r(6285),a=TypeError;t.exports=function(t,e){var r,s;if(\"string\"===e&&i(r=t.toString)&&!o(s=n(r,t)))return s;if(i(r=t.valueOf)&&!o(s=n(r,t)))return s;if(\"string\"!==e&&i(r=t.toString)&&!o(s=n(r,t)))return s;throw new a(\"Can't convert object to primitive value\")}},583:(t,e,r)=>{var n=r(7237),i=r(7255),o=r(8586),a=r(7797);t.exports=function property(t){return o(t)?n(a(t)):i(t)}},631:(t,e,r)=>{var n=r(8077),i=r(9326);t.exports=function hasIn(t,e){return null!=t&&i(t,e,n)}},641:(t,e,r)=>{var n=r(6649),i=r(5950);t.exports=function baseForOwn(t,e){return t&&n(t,e,i)}},659:(t,e,r)=>{var n=r(1873),i=Object.prototype,o=i.hasOwnProperty,a=i.toString,s=n?n.toStringTag:void 0;t.exports=function getRawTag(t){var e=o.call(t,s),r=t[s];try{t[s]=void 0;var n=!0}catch(t){}var i=a.call(t);return n&&(e?t[s]=r:delete t[s]),i}},689:(t,e,r)=>{var n=r(2),i=Object.prototype.hasOwnProperty;t.exports=function equalObjects(t,e,r,o,a,s){var u=1&r,c=n(t),f=c.length;if(f!=n(e).length&&!u)return!1;for(var l=f;l--;){var h=c[l];if(!(u?h in e:i.call(e,h)))return!1}var p=s.get(t),d=s.get(e);if(p&&d)return p==e&&d==t;var _=!0;s.set(t,e),s.set(e,t);for(var y=u;++l<f;){var m=t[h=c[l]],g=e[h];if(o)var v=u?o(g,m,h,e,t,s):o(m,g,h,t,e,s);if(!(void 0===v?m===g||a(m,g,r,o,s):v)){_=!1;break}y||(y=\"constructor\"==h)}if(_&&!y){var b=t.constructor,w=e.constructor;b==w||!(\"constructor\"in t)||!(\"constructor\"in e)||\"function\"==typeof b&&b instanceof b&&\"function\"==typeof w&&w instanceof w||(_=!1)}return s.delete(t),s.delete(e),_}},695:(t,e,r)=>{var n=r(8096),i=r(2428),o=r(6449),a=r(3656),s=r(361),u=r(7167),c=Object.prototype.hasOwnProperty;t.exports=function arrayLikeKeys(t,e){var r=o(t),f=!r&&i(t),l=!r&&!f&&a(t),h=!r&&!f&&!l&&u(t),p=r||f||l||h,d=p?n(t.length,String):[],_=d.length;for(var y in t)!e&&!c.call(t,y)||p&&(\"length\"==y||l&&(\"offset\"==y||\"parent\"==y)||h&&(\"buffer\"==y||\"byteLength\"==y||\"byteOffset\"==y)||s(y,_))||d.push(y);return d}},756:(t,e,r)=>{var n=r(3805);t.exports=function isStrictComparable(t){return t==t&&!n(t)}},776:(t,e,r)=>{var n=r(756),i=r(5950);t.exports=function getMatchData(t){for(var e=i(t),r=e.length;r--;){var o=e[r],a=t[o];e[r]=[o,a,n(a)]}return e}},798:(t,e,r)=>{\"use strict\";var n,i,o=r(5951),a=r(6794),s=o.process,u=o.Deno,c=s&&s.versions||u&&u.version,f=c&&c.v8;f&&(i=(n=f.split(\".\"))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!i&&a&&(!(n=a.match(/Edge\\/(\\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\\/(\\d+)/))&&(i=+n[1]),t.exports=i},828:(t,e,r)=>{var n=r(4647),i=r(3222),o=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,a=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\");t.exports=function deburr(t){return(t=i(t))&&t.replace(o,n).replace(a,\"\")}},882:t=>{t.exports=function arrayReduce(t,e,r,n){var i=-1,o=null==t?0:t.length;for(n&&o&&(r=t[++i]);++i<o;)r=e(r,t[i],i,t);return r}},909:(t,e,r)=>{var n=r(641),i=r(8329)(n);t.exports=i},916:(t,e,r)=>{var n=r(909);t.exports=function baseSome(t,e){var r;return n(t,(function(t,n,i){return!(r=e(t,n,i))})),!!r}},938:t=>{t.exports=function stackDelete(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},945:(t,e,r)=>{var n=r(79),i=r(8223),o=r(3661);t.exports=function stackSet(t,e){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!i||a.length<199)return a.push([t,e]),this.size=++r.size,this;r=this.__data__=new o(a)}return r.set(t,e),this.size=r.size,this}},953:(t,e,r)=>{\"use strict\";t.exports=r(3375)},975:(t,e,r)=>{\"use strict\";var n=r(9748);t.exports=n},1042:(t,e,r)=>{var n=r(6110)(Object,\"create\");t.exports=n},1074:t=>{t.exports=function asciiToArray(t){return t.split(\"\")}},1091:(t,e,r)=>{\"use strict\";var n=r(5951),i=r(6024),o=r(2361),a=r(2250),s=r(3846).f,u=r(7463),c=r(2046),f=r(8311),l=r(1626),h=r(9724);r(6128);var wrapConstructor=function(t){var Wrapper=function(e,r,n){if(this instanceof Wrapper){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return i(t,this,arguments)};return Wrapper.prototype=t.prototype,Wrapper};t.exports=function(t,e){var r,i,p,d,_,y,m,g,v,b=t.target,w=t.global,I=t.stat,x=t.proto,B=w?n:I?n[b]:n[b]&&n[b].prototype,k=w?c:c[b]||l(c,b,{})[b],C=k.prototype;for(d in e)i=!(r=u(w?d:b+(I?\".\":\"#\")+d,t.forced))&&B&&h(B,d),y=k[d],i&&(m=t.dontCallGetSet?(v=s(B,d))&&v.value:B[d]),_=i&&m?m:e[d],(r||x||typeof y!=typeof _)&&(g=t.bind&&i?f(_,n):t.wrap&&i?wrapConstructor(_):x&&a(_)?o(_):_,(t.sham||_&&_.sham||y&&y.sham)&&l(g,\"sham\",!0),l(k,d,g),x&&(h(c,p=b+\"Prototype\")||l(c,p,{}),l(c[p],d,_),t.real&&C&&(r||!C[d])&&l(C,d,_)))}},1175:(t,e,r)=>{var n=r(6025);t.exports=function listCacheSet(t,e){var r=this.__data__,i=n(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this}},1176:t=>{\"use strict\";var e=Math.ceil,r=Math.floor;t.exports=Math.trunc||function trunc(t){var n=+t;return(n>0?r:e)(n)}},1234:t=>{t.exports=function baseZipObject(t,e,r){for(var n=-1,i=t.length,o=e.length,a={};++n<i;){var s=n<o?e[n]:void 0;r(a,t[n],s)}return a}},1340:(t,e,r)=>{\"use strict\";var n=r(1091),i=r(9538);n({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==i},{assign:i})},1380:t=>{t.exports=function setCacheAdd(t){return this.__data__.set(t,\"__lodash_hash_undefined__\"),this}},1420:(t,e,r)=>{var n=r(79);t.exports=function stackClear(){this.__data__=new n,this.size=0}},1459:t=>{t.exports=function setCacheHas(t){return this.__data__.has(t)}},1489:(t,e,r)=>{var n=r(7400);t.exports=function toInteger(t){var e=n(t),r=e%1;return e==e?r?e-r:e:0}},1505:(t,e,r)=>{\"use strict\";var n=r(8828);t.exports=!n((function(){var t=function(){}.bind();return\"function\"!=typeof t||t.hasOwnProperty(\"prototype\")}))},1549:(t,e,r)=>{var n=r(2032),i=r(3862),o=r(6721),a=r(2749),s=r(5749);function Hash(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}Hash.prototype.clear=n,Hash.prototype.delete=i,Hash.prototype.get=o,Hash.prototype.has=a,Hash.prototype.set=s,t.exports=Hash},1626:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(4284),o=r(5817);t.exports=n?function(t,e,r){return i.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},1733:t=>{var e=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;t.exports=function asciiWords(t){return t.match(e)||[]}},1747:(t,e,r)=>{\"use strict\";var n=r(5951),i=r(2046);t.exports=function(t,e){var r=i[t+\"Prototype\"],o=r&&r[e];if(o)return o;var a=n[t],s=a&&a.prototype;return s&&s[e]}},1769:(t,e,r)=>{var n=r(6449),i=r(8586),o=r(1802),a=r(3222);t.exports=function castPath(t,e){return n(t)?t:i(t,e)?[t]:o(a(t))}},1799:(t,e,r)=>{var n=r(7217),i=r(270);t.exports=function baseIsMatch(t,e,r,o){var a=r.length,s=a,u=!o;if(null==t)return!s;for(t=Object(t);a--;){var c=r[a];if(u&&c[2]?c[1]!==t[c[0]]:!(c[0]in t))return!1}for(;++a<s;){var f=(c=r[a])[0],l=t[f],h=c[1];if(u&&c[2]){if(void 0===l&&!(f in t))return!1}else{var p=new n;if(o)var d=o(l,h,f,t,e,p);if(!(void 0===d?i(h,l,3,o,p):d))return!1}}return!0}},1800:t=>{var e=/\\s/;t.exports=function trimmedEndIndex(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},1802:(t,e,r)=>{var n=r(2224),i=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,o=/\\\\(\\\\)?/g,a=n((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(\"\"),t.replace(i,(function(t,r,n,i){e.push(n?i.replace(o,\"$1\"):r||t)})),e}));t.exports=a},1873:(t,e,r)=>{var n=r(9325).Symbol;t.exports=n},1882:(t,e,r)=>{var n=r(2552),i=r(3805);t.exports=function isFunction(t){if(!i(t))return!1;var e=n(t);return\"[object Function]\"==e||\"[object GeneratorFunction]\"==e||\"[object AsyncFunction]\"==e||\"[object Proxy]\"==e}},1907:(t,e,r)=>{\"use strict\";var n=r(1505),i=Function.prototype,o=i.call,a=n&&i.bind.bind(o,o);t.exports=n?a:function(t){return function(){return o.apply(t,arguments)}}},1986:(t,e,r)=>{var n=r(1873),i=r(7828),o=r(5288),a=r(5911),s=r(317),u=r(4247),c=n?n.prototype:void 0,f=c?c.valueOf:void 0;t.exports=function equalByTag(t,e,r,n,c,l,h){switch(r){case\"[object DataView]\":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case\"[object ArrayBuffer]\":return!(t.byteLength!=e.byteLength||!l(new i(t),new i(e)));case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return o(+t,+e);case\"[object Error]\":return t.name==e.name&&t.message==e.message;case\"[object RegExp]\":case\"[object String]\":return t==e+\"\";case\"[object Map]\":var p=s;case\"[object Set]\":var d=1&n;if(p||(p=u),t.size!=e.size&&!d)return!1;var _=h.get(t);if(_)return _==e;n|=2,h.set(t,e);var y=a(p(t),p(e),n,c,l,h);return h.delete(t),y;case\"[object Symbol]\":if(f)return f.call(t)==f.call(e)}return!1}},2006:(t,e,r)=>{var n=r(5389),i=r(4894),o=r(5950);t.exports=function createFind(t){return function(e,r,a){var s=Object(e);if(!i(e)){var u=n(r,3);e=o(e),r=function(t){return u(s[t],t,s)}}var c=t(e,r,a);return c>-1?s[u?e[c]:c]:void 0}}},2032:(t,e,r)=>{var n=r(1042);t.exports=function hashClear(){this.__data__=n?n(null):{},this.size=0}},2046:t=>{\"use strict\";t.exports={}},2054:t=>{var e=\"\\\\ud800-\\\\udfff\",r=\"[\"+e+\"]\",n=\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",i=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",o=\"[^\"+e+\"]\",a=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",s=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",u=\"(?:\"+n+\"|\"+i+\")\"+\"?\",c=\"[\\\\ufe0e\\\\ufe0f]?\",f=c+u+(\"(?:\\\\u200d(?:\"+[o,a,s].join(\"|\")+\")\"+c+u+\")*\"),l=\"(?:\"+[o+n+\"?\",n,a,s,r].join(\"|\")+\")\",h=RegExp(i+\"(?=\"+i+\")|\"+l+f,\"g\");t.exports=function unicodeToArray(t){return t.match(h)||[]}},2159:(t,e,r)=>{\"use strict\";var n=r(2250),i=r(4640),o=TypeError;t.exports=function(t){if(n(t))return t;throw new o(i(t)+\" is not a function\")}},2199:(t,e,r)=>{var n=r(4528),i=r(6449);t.exports=function baseGetAllKeys(t,e,r){var o=e(t);return i(t)?o:n(o,r(t))}},2205:function(t,e,r){var n;n=void 0!==r.g?r.g:this,t.exports=function(t){if(t.CSS&&t.CSS.escape)return t.CSS.escape;var cssEscape=function(t){if(0==arguments.length)throw new TypeError(\"`CSS.escape` requires an argument.\");for(var e,r=String(t),n=r.length,i=-1,o=\"\",a=r.charCodeAt(0);++i<n;)0!=(e=r.charCodeAt(i))?o+=e>=1&&e<=31||127==e||0==i&&e>=48&&e<=57||1==i&&e>=48&&e<=57&&45==a?\"\\\\\"+e.toString(16)+\" \":0==i&&1==n&&45==e||!(e>=128||45==e||95==e||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)?\"\\\\\"+r.charAt(i):r.charAt(i):o+=\"�\";return o};return t.CSS||(t.CSS={}),t.CSS.escape=cssEscape,cssEscape}(n)},2224:(t,e,r)=>{var n=r(104);t.exports=function memoizeCapped(t){var e=n(t,(function(t){return 500===r.size&&r.clear(),t})),r=e.cache;return e}},2225:t=>{var e=\"\\\\ud800-\\\\udfff\",r=\"\\\\u2700-\\\\u27bf\",n=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",i=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",o=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",a=\"[\"+o+\"]\",s=\"\\\\d+\",u=\"[\"+r+\"]\",c=\"[\"+n+\"]\",f=\"[^\"+e+o+s+r+n+i+\"]\",l=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",h=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",p=\"[\"+i+\"]\",d=\"(?:\"+c+\"|\"+f+\")\",_=\"(?:\"+p+\"|\"+f+\")\",y=\"(?:['’](?:d|ll|m|re|s|t|ve))?\",m=\"(?:['’](?:D|LL|M|RE|S|T|VE))?\",g=\"(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?\",v=\"[\\\\ufe0e\\\\ufe0f]?\",b=v+g+(\"(?:\\\\u200d(?:\"+[\"[^\"+e+\"]\",l,h].join(\"|\")+\")\"+v+g+\")*\"),w=\"(?:\"+[u,l,h].join(\"|\")+\")\"+b,I=RegExp([p+\"?\"+c+\"+\"+y+\"(?=\"+[a,p,\"$\"].join(\"|\")+\")\",_+\"+\"+m+\"(?=\"+[a,p+d,\"$\"].join(\"|\")+\")\",p+\"?\"+d+\"+\"+y,p+\"+\"+m,\"\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])\",\"\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])\",s,w].join(\"|\"),\"g\");t.exports=function unicodeWords(t){return t.match(I)||[]}},2250:t=>{\"use strict\";var e=\"object\"==typeof document&&document.all;t.exports=void 0===e&&void 0!==e?function(t){return\"function\"==typeof t||t===e}:function(t){return\"function\"==typeof t}},2361:(t,e,r)=>{\"use strict\";var n=r(5807),i=r(1907);t.exports=function(t){if(\"Function\"===n(t))return i(t)}},2426:(t,e,r)=>{var n=r(4248),i=r(5389),o=r(916),a=r(6449),s=r(6800);t.exports=function some(t,e,r){var u=a(t)?n:o;return r&&s(t,e,r)&&(e=void 0),u(t,i(e,3))}},2428:(t,e,r)=>{var n=r(7534),i=r(346),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,u=n(function(){return arguments}())?n:function(t){return i(t)&&a.call(t,\"callee\")&&!s.call(t,\"callee\")};t.exports=u},2507:(t,e,r)=>{var n=r(8754),i=r(9698),o=r(3912),a=r(3222);t.exports=function createCaseFirst(t){return function(e){e=a(e);var r=i(e)?o(e):void 0,s=r?r[0]:e.charAt(0),u=r?n(r,1).join(\"\"):e.slice(1);return s[t]()+u}}},2523:t=>{t.exports=function baseFindIndex(t,e,r,n){for(var i=t.length,o=r+(n?1:-1);n?o--:++o<i;)if(e(t[o],o,t))return o;return-1}},2532:(t,e,r)=>{\"use strict\";var n=r(5951),i=Object.defineProperty;t.exports=function(t,e){try{i(n,t,{value:e,configurable:!0,writable:!0})}catch(r){n[t]=e}return e}},2552:(t,e,r)=>{var n=r(1873),i=r(659),o=r(9350),a=n?n.toStringTag:void 0;t.exports=function baseGetTag(t){return null==t?void 0===t?\"[object Undefined]\":\"[object Null]\":a&&a in Object(t)?i(t):o(t)}},2567:(t,e,r)=>{\"use strict\";r(9307);var n=r(1747);t.exports=n(\"Function\",\"bind\")},2574:(t,e)=>{\"use strict\";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!r.call({1:2},1);e.f=i?function propertyIsEnumerable(t){var e=n(this,t);return!!e&&e.enumerable}:r},2651:(t,e,r)=>{var n=r(4218);t.exports=function getMapData(t,e){var r=t.__data__;return n(e)?r[\"string\"==typeof e?\"string\":\"hash\"]:r.map}},2749:(t,e,r)=>{var n=r(1042),i=Object.prototype.hasOwnProperty;t.exports=function hashHas(t){var e=this.__data__;return n?void 0!==e[t]:i.call(e,t)}},2802:(t,e,r)=>{var n=t.exports=function SHA(t){t=t.toLowerCase();var e=n[t];if(!e)throw new Error(t+\" is not supported (we accept pull requests)\");return new e};n.sha=r(7816),n.sha1=r(3737),n.sha224=r(6710),n.sha256=r(4107),n.sha384=r(2827),n.sha512=r(2890)},2804:(t,e,r)=>{var n=r(6110)(r(9325),\"Promise\");t.exports=n},2827:(t,e,r)=>{var n=r(6698),i=r(2890),o=r(8011),a=r(2861).Buffer,s=new Array(160);function Sha384(){this.init(),this._w=s,o.call(this,128,112)}n(Sha384,i),Sha384.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},Sha384.prototype._hash=function(){var t=a.allocUnsafe(48);function writeInt64BE(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),t},t.exports=Sha384},2861:(t,e,r)=>{var n=r(8287),i=n.Buffer;function copyProps(t,e){for(var r in t)e[r]=t[r]}function SafeBuffer(t,e,r){return i(t,e,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(copyProps(n,e),e.Buffer=SafeBuffer),SafeBuffer.prototype=Object.create(i.prototype),copyProps(i,SafeBuffer),SafeBuffer.from=function(t,e,r){if(\"number\"==typeof t)throw new TypeError(\"Argument must not be a number\");return i(t,e,r)},SafeBuffer.alloc=function(t,e,r){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");var n=i(t);return void 0!==e?\"string\"==typeof r?n.fill(e,r):n.fill(e):n.fill(0),n},SafeBuffer.allocUnsafe=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return i(t)},SafeBuffer.allocUnsafeSlow=function(t){if(\"number\"!=typeof t)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(t)}},2875:(t,e,r)=>{\"use strict\";var n=r(3045),i=r(376);t.exports=Object.keys||function keys(t){return n(t,i)}},2890:(t,e,r)=>{var n=r(6698),i=r(8011),o=r(2861).Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function Sha512(){this.init(),this._w=s,i.call(this,128,112)}function Ch(t,e,r){return r^t&(e^r)}function maj(t,e,r){return t&e|r&(t|e)}function sigma0(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function sigma1(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function Gamma0(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function Gamma0l(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function Gamma1(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function Gamma1l(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function getCarry(t,e){return t>>>0<e>>>0?1:0}n(Sha512,i),Sha512.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},Sha512.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,s=0|this._eh,u=0|this._fh,c=0|this._gh,f=0|this._hh,l=0|this._al,h=0|this._bl,p=0|this._cl,d=0|this._dl,_=0|this._el,y=0|this._fl,m=0|this._gl,g=0|this._hl,v=0;v<32;v+=2)e[v]=t.readInt32BE(4*v),e[v+1]=t.readInt32BE(4*v+4);for(;v<160;v+=2){var b=e[v-30],w=e[v-30+1],I=Gamma0(b,w),x=Gamma0l(w,b),B=Gamma1(b=e[v-4],w=e[v-4+1]),k=Gamma1l(w,b),C=e[v-14],q=e[v-14+1],L=e[v-32],j=e[v-32+1],z=x+q|0,P=I+C+getCarry(z,x)|0;P=(P=P+B+getCarry(z=z+k|0,k)|0)+L+getCarry(z=z+j|0,j)|0,e[v]=P,e[v+1]=z}for(var D=0;D<160;D+=2){P=e[D],z=e[D+1];var U=maj(r,n,i),W=maj(l,h,p),V=sigma0(r,l),K=sigma0(l,r),$=sigma1(s,_),H=sigma1(_,s),Y=a[D],Z=a[D+1],J=Ch(s,u,c),tt=Ch(_,y,m),et=g+H|0,rt=f+$+getCarry(et,g)|0;rt=(rt=(rt=rt+J+getCarry(et=et+tt|0,tt)|0)+Y+getCarry(et=et+Z|0,Z)|0)+P+getCarry(et=et+z|0,z)|0;var nt=K+W|0,it=V+U+getCarry(nt,K)|0;f=c,g=m,c=u,m=y,u=s,y=_,s=o+rt+getCarry(_=d+et|0,d)|0,o=i,d=p,i=n,p=h,n=r,h=l,r=rt+it+getCarry(l=et+nt|0,et)|0}this._al=this._al+l|0,this._bl=this._bl+h|0,this._cl=this._cl+p|0,this._dl=this._dl+d|0,this._el=this._el+_|0,this._fl=this._fl+y|0,this._gl=this._gl+m|0,this._hl=this._hl+g|0,this._ah=this._ah+r+getCarry(this._al,l)|0,this._bh=this._bh+n+getCarry(this._bl,h)|0,this._ch=this._ch+i+getCarry(this._cl,p)|0,this._dh=this._dh+o+getCarry(this._dl,d)|0,this._eh=this._eh+s+getCarry(this._el,_)|0,this._fh=this._fh+u+getCarry(this._fl,y)|0,this._gh=this._gh+c+getCarry(this._gl,m)|0,this._hh=this._hh+f+getCarry(this._hl,g)|0},Sha512.prototype._hash=function(){var t=o.allocUnsafe(64);function writeInt64BE(e,r,n){t.writeInt32BE(e,n),t.writeInt32BE(r,n+4)}return writeInt64BE(this._ah,this._al,0),writeInt64BE(this._bh,this._bl,8),writeInt64BE(this._ch,this._cl,16),writeInt64BE(this._dh,this._dl,24),writeInt64BE(this._eh,this._el,32),writeInt64BE(this._fh,this._fl,40),writeInt64BE(this._gh,this._gl,48),writeInt64BE(this._hh,this._hl,56),t},t.exports=Sha512},2949:(t,e,r)=>{var n=r(2651);t.exports=function mapCacheSet(t,e){var r=n(this,t),i=r.size;return r.set(t,e),this.size+=r.size==i?0:1,this}},3034:(t,e,r)=>{\"use strict\";var n=r(8280),i=r(2567),o=Function.prototype;t.exports=function(t){var e=t.bind;return t===o||n(o,t)&&e===o.bind?i:e}},3040:(t,e,r)=>{var n=r(1549),i=r(79),o=r(8223);t.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new n,map:new(o||i),string:new n}}},3045:(t,e,r)=>{\"use strict\";var n=r(1907),i=r(9724),o=r(7374),a=r(4436).indexOf,s=r(8530),u=n([].push);t.exports=function(t,e){var r,n=o(t),c=0,f=[];for(r in n)!i(s,r)&&i(n,r)&&u(f,r);for(;e.length>c;)i(n,r=e[c++])&&(~a(f,r)||u(f,r));return f}},3121:(t,e,r)=>{\"use strict\";var n=r(5482),i=Math.min;t.exports=function(t){var e=n(t);return e>0?i(e,9007199254740991):0}},3209:(t,e,r)=>{\"use strict\";var n=r(5606),i=65536,o=4294967295;var a=r(2861).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function randomBytes(t,e){if(t>o)throw new RangeError(\"requested too many random bytes\");var r=a.allocUnsafe(t);if(t>0)if(t>i)for(var u=0;u<t;u+=i)s.getRandomValues(r.slice(u,u+i));else s.getRandomValues(r);if(\"function\"==typeof e)return n.nextTick((function(){e(null,r)}));return r}:t.exports=function oldBrowser(){throw new Error(\"Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11\")}},3221:t=>{t.exports=function createBaseFor(t){return function(e,r,n){for(var i=-1,o=Object(e),a=n(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===r(o[u],u,o))break}return e}}},3222:(t,e,r)=>{var n=r(7556);t.exports=function toString(t){return null==t?\"\":n(t)}},3243:(t,e,r)=>{var n=r(6110),i=function(){try{var t=n(Object,\"defineProperty\");return t({},\"\",{}),t}catch(t){}}();t.exports=i},3345:t=>{t.exports=function stubArray(){return[]}},3360:(t,e,r)=>{var n=r(3243);t.exports=function baseAssignValue(t,e,r){\"__proto__\"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},3375:(t,e,r)=>{\"use strict\";var n=r(3700);t.exports=n},3427:(t,e,r)=>{\"use strict\";var n=r(1907);t.exports=n([].slice)},3488:t=>{t.exports=function identity(t){return t}},3556:(t,e,r)=>{\"use strict\";var n=r(9846);t.exports=n&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},3605:t=>{t.exports=function stackGet(t){return this.__data__.get(t)}},3648:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(8828),o=r(9552);t.exports=!n&&!i((function(){return 7!==Object.defineProperty(o(\"div\"),\"a\",{get:function(){return 7}}).a}))},3650:(t,e,r)=>{var n=r(4335)(Object.keys,Object);t.exports=n},3656:(t,e,r)=>{t=r.nmd(t);var n=r(9325),i=r(9935),o=e&&!e.nodeType&&e,a=o&&t&&!t.nodeType&&t,s=a&&a.exports===o?n.Buffer:void 0,u=(s?s.isBuffer:void 0)||i;t.exports=u},3661:(t,e,r)=>{var n=r(3040),i=r(7670),o=r(289),a=r(4509),s=r(2949);function MapCache(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var n=t[e];this.set(n[0],n[1])}}MapCache.prototype.clear=n,MapCache.prototype.delete=i,MapCache.prototype.get=o,MapCache.prototype.has=a,MapCache.prototype.set=s,t.exports=MapCache},3663:(t,e,r)=>{var n=r(1799),i=r(776),o=r(7197);t.exports=function baseMatches(t){var e=i(t);return 1==e.length&&e[0][2]?o(e[0][0],e[0][1]):function(r){return r===t||n(r,t,e)}}},3700:(t,e,r)=>{\"use strict\";var n=r(9709);t.exports=n},3702:t=>{t.exports=function listCacheClear(){this.__data__=[],this.size=0}},3737:(t,e,r)=>{var n=r(6698),i=r(8011),o=r(2861).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function Sha1(){this.init(),this._w=s,i.call(this,64,56)}function rotl5(t){return t<<5|t>>>27}function rotl30(t){return t<<30|t>>>2}function ft(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(Sha1,i),Sha1.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha1.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=(e=r[c-3]^r[c-8]^r[c-14]^r[c-16])<<1|e>>>31;for(var f=0;f<80;++f){var l=~~(f/20),h=rotl5(n)+ft(l,i,o,s)+u+r[f]+a[l]|0;u=s,s=o,o=rotl30(i),i=n,n=h}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},Sha1.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=Sha1},3805:t=>{t.exports=function isObject(t){var e=typeof t;return null!=t&&(\"object\"==e||\"function\"==e)}},3846:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(3930),o=r(2574),a=r(5817),s=r(7374),u=r(470),c=r(9724),f=r(3648),l=Object.getOwnPropertyDescriptor;e.f=n?l:function getOwnPropertyDescriptor(t,e){if(t=s(t),e=u(e),f)try{return l(t,e)}catch(t){}if(c(t,e))return a(!i(o.f,t,e),t[e])}},3862:t=>{t.exports=function hashDelete(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},3912:(t,e,r)=>{var n=r(1074),i=r(9698),o=r(2054);t.exports=function stringToArray(t){return i(t)?o(t):n(t)}},3930:(t,e,r)=>{\"use strict\";var n=r(1505),i=Function.prototype.call;t.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},4058:(t,e,r)=>{var n=r(4792),i=r(5539)((function(t,e,r){return e=e.toLowerCase(),t+(r?n(e):e)}));t.exports=i},4107:(t,e,r)=>{var n=r(6698),i=r(8011),o=r(2861).Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function Sha256(){this.init(),this._w=s,i.call(this,64,56)}function ch(t,e,r){return r^t&(e^r)}function maj(t,e,r){return t&e|r&(t|e)}function sigma0(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function sigma1(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function gamma0(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}n(Sha256,i),Sha256.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},Sha256.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0|this._f,f=0|this._g,l=0|this._h,h=0;h<16;++h)r[h]=t.readInt32BE(4*h);for(;h<64;++h)r[h]=0|(((e=r[h-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[h-7]+gamma0(r[h-15])+r[h-16];for(var p=0;p<64;++p){var d=l+sigma1(u)+ch(u,c,f)+a[p]+r[p]|0,_=sigma0(n)+maj(n,i,o)|0;l=f,f=c,c=u,u=s+d|0,s=o,o=i,i=n,n=d+_|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=c+this._f|0,this._g=f+this._g|0,this._h=l+this._h|0},Sha256.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=Sha256},4128:(t,e,r)=>{var n=r(1800),i=/^\\s+/;t.exports=function baseTrim(t){return t?t.slice(0,n(t)+1).replace(i,\"\"):t}},4218:t=>{t.exports=function isKeyable(t){var e=typeof t;return\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t}},4239:(t,e,r)=>{\"use strict\";var n=r(7136),i=TypeError;t.exports=function(t){if(n(t))throw new i(\"Can't call method on \"+t);return t}},4247:t=>{t.exports=function setToArray(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r}},4248:t=>{t.exports=function arraySome(t,e){for(var r=-1,n=null==t?0:t.length;++r<n;)if(e(t[r],r,t))return!0;return!1}},4284:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(3648),o=r(8661),a=r(6624),s=r(470),u=TypeError,c=Object.defineProperty,f=Object.getOwnPropertyDescriptor,l=\"enumerable\",h=\"configurable\",p=\"writable\";e.f=n?o?function defineProperty(t,e,r){if(a(t),e=s(e),a(r),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in r&&p in r&&!r[p]){var n=f(t,e);n&&n[p]&&(t[e]=r.value,r={configurable:h in r?r[h]:n[h],enumerable:l in r?r[l]:n[l],writable:!1})}return c(t,e,r)}:c:function defineProperty(t,e,r){if(a(t),e=s(e),a(r),i)try{return c(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw new u(\"Accessors not supported\");return\"value\"in r&&(t[e]=r.value),t}},4335:t=>{t.exports=function overArg(t,e){return function(r){return t(e(r))}}},4394:(t,e,r)=>{var n=r(2552),i=r(346);t.exports=function isSymbol(t){return\"symbol\"==typeof t||i(t)&&\"[object Symbol]\"==n(t)}},4436:(t,e,r)=>{\"use strict\";var n=r(7374),i=r(4849),o=r(575),createMethod=function(t){return function(e,r,a){var s=n(e),u=o(s);if(0===u)return!t&&-1;var c,f=i(a,u);if(t&&r!=r){for(;u>f;)if((c=s[f++])!=c)return!0}else for(;u>f;f++)if((t||f in s)&&s[f]===r)return t||f||0;return!t&&-1}};t.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},4509:(t,e,r)=>{var n=r(2651);t.exports=function mapCacheHas(t){return n(this,t).has(t)}},4528:t=>{t.exports=function arrayPush(t,e){for(var r=-1,n=e.length,i=t.length;++r<n;)t[i+r]=e[r];return t}},4552:t=>{t.exports=function basePropertyOf(t){return function(e){return null==t?void 0:t[e]}}},4640:t=>{\"use strict\";var e=String;t.exports=function(t){try{return e(t)}catch(t){return\"Object\"}}},4647:(t,e,r)=>{var n=r(4552)({À:\"A\",Á:\"A\",Â:\"A\",Ã:\"A\",Ä:\"A\",Å:\"A\",à:\"a\",á:\"a\",â:\"a\",ã:\"a\",ä:\"a\",å:\"a\",Ç:\"C\",ç:\"c\",Ð:\"D\",ð:\"d\",È:\"E\",É:\"E\",Ê:\"E\",Ë:\"E\",è:\"e\",é:\"e\",ê:\"e\",ë:\"e\",Ì:\"I\",Í:\"I\",Î:\"I\",Ï:\"I\",ì:\"i\",í:\"i\",î:\"i\",ï:\"i\",Ñ:\"N\",ñ:\"n\",Ò:\"O\",Ó:\"O\",Ô:\"O\",Õ:\"O\",Ö:\"O\",Ø:\"O\",ò:\"o\",ó:\"o\",ô:\"o\",õ:\"o\",ö:\"o\",ø:\"o\",Ù:\"U\",Ú:\"U\",Û:\"U\",Ü:\"U\",ù:\"u\",ú:\"u\",û:\"u\",ü:\"u\",Ý:\"Y\",ý:\"y\",ÿ:\"y\",Æ:\"Ae\",æ:\"ae\",Þ:\"Th\",þ:\"th\",ß:\"ss\",Ā:\"A\",Ă:\"A\",Ą:\"A\",ā:\"a\",ă:\"a\",ą:\"a\",Ć:\"C\",Ĉ:\"C\",Ċ:\"C\",Č:\"C\",ć:\"c\",ĉ:\"c\",ċ:\"c\",č:\"c\",Ď:\"D\",Đ:\"D\",ď:\"d\",đ:\"d\",Ē:\"E\",Ĕ:\"E\",Ė:\"E\",Ę:\"E\",Ě:\"E\",ē:\"e\",ĕ:\"e\",ė:\"e\",ę:\"e\",ě:\"e\",Ĝ:\"G\",Ğ:\"G\",Ġ:\"G\",Ģ:\"G\",ĝ:\"g\",ğ:\"g\",ġ:\"g\",ģ:\"g\",Ĥ:\"H\",Ħ:\"H\",ĥ:\"h\",ħ:\"h\",Ĩ:\"I\",Ī:\"I\",Ĭ:\"I\",Į:\"I\",İ:\"I\",ĩ:\"i\",ī:\"i\",ĭ:\"i\",į:\"i\",ı:\"i\",Ĵ:\"J\",ĵ:\"j\",Ķ:\"K\",ķ:\"k\",ĸ:\"k\",Ĺ:\"L\",Ļ:\"L\",Ľ:\"L\",Ŀ:\"L\",Ł:\"L\",ĺ:\"l\",ļ:\"l\",ľ:\"l\",ŀ:\"l\",ł:\"l\",Ń:\"N\",Ņ:\"N\",Ň:\"N\",Ŋ:\"N\",ń:\"n\",ņ:\"n\",ň:\"n\",ŋ:\"n\",Ō:\"O\",Ŏ:\"O\",Ő:\"O\",ō:\"o\",ŏ:\"o\",ő:\"o\",Ŕ:\"R\",Ŗ:\"R\",Ř:\"R\",ŕ:\"r\",ŗ:\"r\",ř:\"r\",Ś:\"S\",Ŝ:\"S\",Ş:\"S\",Š:\"S\",ś:\"s\",ŝ:\"s\",ş:\"s\",š:\"s\",Ţ:\"T\",Ť:\"T\",Ŧ:\"T\",ţ:\"t\",ť:\"t\",ŧ:\"t\",Ũ:\"U\",Ū:\"U\",Ŭ:\"U\",Ů:\"U\",Ű:\"U\",Ų:\"U\",ũ:\"u\",ū:\"u\",ŭ:\"u\",ů:\"u\",ű:\"u\",ų:\"u\",Ŵ:\"W\",ŵ:\"w\",Ŷ:\"Y\",ŷ:\"y\",Ÿ:\"Y\",Ź:\"Z\",Ż:\"Z\",Ž:\"Z\",ź:\"z\",ż:\"z\",ž:\"z\",Ĳ:\"IJ\",ĳ:\"ij\",Œ:\"Oe\",œ:\"oe\",ŉ:\"'n\",ſ:\"s\"});t.exports=n},4664:(t,e,r)=>{var n=r(9770),i=r(3345),o=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(t){return null==t?[]:(t=Object(t),n(a(t),(function(e){return o.call(t,e)})))}:i;t.exports=s},4673:(t,e,r)=>{\"use strict\";var n=r(1907),i=r(2159),o=r(6285),a=r(9724),s=r(3427),u=r(1505),c=Function,f=n([].concat),l=n([].join),h={};t.exports=u?c.bind:function bind(t){var e=i(this),r=e.prototype,n=s(arguments,1),u=function bound(){var r=f(n,s(arguments));return this instanceof u?function(t,e,r){if(!a(h,e)){for(var n=[],i=0;i<e;i++)n[i]=\"a[\"+i+\"]\";h[e]=c(\"C,a\",\"return new C(\"+l(n,\",\")+\")\")}return h[e](t,r)}(e,r.length,r):e.apply(t,r)};return o(r)&&(u.prototype=r),u}},4713:(t,e,r)=>{var n=r(2523),i=r(5389),o=r(1489),a=Math.max;t.exports=function findIndex(t,e,r){var s=null==t?0:t.length;if(!s)return-1;var u=null==r?0:o(r);return u<0&&(u=a(s+u,0)),n(t,i(e,3),u)}},4739:(t,e,r)=>{var n=r(6025);t.exports=function listCacheGet(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},4792:(t,e,r)=>{var n=r(3222),i=r(5808);t.exports=function capitalize(t){return i(n(t).toLowerCase())}},4840:(t,e,r)=>{var n=\"object\"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;t.exports=n},4849:(t,e,r)=>{\"use strict\";var n=r(5482),i=Math.max,o=Math.min;t.exports=function(t,e){var r=n(t);return r<0?i(r+e,0):o(r,e)}},4851:(t,e,r)=>{\"use strict\";t.exports=r(5401)},4894:(t,e,r)=>{var n=r(1882),i=r(294);t.exports=function isArrayLike(t){return null!=t&&i(t.length)&&!n(t)}},4901:(t,e,r)=>{var n=r(2552),i=r(294),o=r(346),a={};a[\"[object Float32Array]\"]=a[\"[object Float64Array]\"]=a[\"[object Int8Array]\"]=a[\"[object Int16Array]\"]=a[\"[object Int32Array]\"]=a[\"[object Uint8Array]\"]=a[\"[object Uint8ClampedArray]\"]=a[\"[object Uint16Array]\"]=a[\"[object Uint32Array]\"]=!0,a[\"[object Arguments]\"]=a[\"[object Array]\"]=a[\"[object ArrayBuffer]\"]=a[\"[object Boolean]\"]=a[\"[object DataView]\"]=a[\"[object Date]\"]=a[\"[object Error]\"]=a[\"[object Function]\"]=a[\"[object Map]\"]=a[\"[object Number]\"]=a[\"[object Object]\"]=a[\"[object RegExp]\"]=a[\"[object Set]\"]=a[\"[object String]\"]=a[\"[object WeakMap]\"]=!1,t.exports=function baseIsTypedArray(t){return o(t)&&i(t.length)&&!!a[n(t)]}},4932:t=>{t.exports=function arrayMap(t,e){for(var r=-1,n=null==t?0:t.length,i=Array(n);++r<n;)i[r]=e(t[r],r,t);return i}},5083:(t,e,r)=>{var n=r(1882),i=r(7296),o=r(3805),a=r(7473),s=/^\\[object .+?Constructor\\]$/,u=Function.prototype,c=Object.prototype,f=u.toString,l=c.hasOwnProperty,h=RegExp(\"^\"+f.call(l).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");t.exports=function baseIsNative(t){return!(!o(t)||i(t))&&(n(t)?h:s).test(a(t))}},5160:t=>{t.exports=function baseSlice(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(r=r>i?i:r)<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var o=Array(i);++n<i;)o[n]=t[n+e];return o}},5287:(t,e)=>{\"use strict\";var r=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),i=Symbol.for(\"react.fragment\"),o=Symbol.for(\"react.strict_mode\"),a=Symbol.for(\"react.profiler\"),s=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),c=Symbol.for(\"react.forward_ref\"),f=Symbol.for(\"react.suspense\"),l=Symbol.for(\"react.memo\"),h=Symbol.for(\"react.lazy\"),p=Symbol.iterator;var d={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,y={};function E(t,e,r){this.props=t,this.context=e,this.refs=y,this.updater=r||d}function F(){}function G(t,e,r){this.props=t,this.context=e,this.refs=y,this.updater=r||d}E.prototype.isReactComponent={},E.prototype.setState=function(t,e){if(\"object\"!=typeof t&&\"function\"!=typeof t&&null!=t)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,t,e,\"setState\")},E.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")},F.prototype=E.prototype;var m=G.prototype=new F;m.constructor=G,_(m,E.prototype),m.isPureReactComponent=!0;var g=Array.isArray,v=Object.prototype.hasOwnProperty,b={current:null},w={key:!0,ref:!0,__self:!0,__source:!0};function M(t,e,n){var i,o={},a=null,s=null;if(null!=e)for(i in void 0!==e.ref&&(s=e.ref),void 0!==e.key&&(a=\"\"+e.key),e)v.call(e,i)&&!w.hasOwnProperty(i)&&(o[i]=e[i]);var u=arguments.length-2;if(1===u)o.children=n;else if(1<u){for(var c=Array(u),f=0;f<u;f++)c[f]=arguments[f+2];o.children=c}if(t&&t.defaultProps)for(i in u=t.defaultProps)void 0===o[i]&&(o[i]=u[i]);return{$$typeof:r,type:t,key:a,ref:s,props:o,_owner:b.current}}function O(t){return\"object\"==typeof t&&null!==t&&t.$$typeof===r}var I=/\\/+/g;function Q(t,e){return\"object\"==typeof t&&null!==t&&null!=t.key?function escape(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+t.replace(/[=:]/g,(function(t){return e[t]}))}(\"\"+t.key):e.toString(36)}function R(t,e,i,o,a){var s=typeof t;\"undefined\"!==s&&\"boolean\"!==s||(t=null);var u=!1;if(null===t)u=!0;else switch(s){case\"string\":case\"number\":u=!0;break;case\"object\":switch(t.$$typeof){case r:case n:u=!0}}if(u)return a=a(u=t),t=\"\"===o?\".\"+Q(u,0):o,g(a)?(i=\"\",null!=t&&(i=t.replace(I,\"$&/\")+\"/\"),R(a,e,i,\"\",(function(t){return t}))):null!=a&&(O(a)&&(a=function N(t,e){return{$$typeof:r,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}(a,i+(!a.key||u&&u.key===a.key?\"\":(\"\"+a.key).replace(I,\"$&/\")+\"/\")+t)),e.push(a)),1;if(u=0,o=\"\"===o?\".\":o+\":\",g(t))for(var c=0;c<t.length;c++){var f=o+Q(s=t[c],c);u+=R(s,e,i,f,a)}else if(f=function A(t){return null===t||\"object\"!=typeof t?null:\"function\"==typeof(t=p&&t[p]||t[\"@@iterator\"])?t:null}(t),\"function\"==typeof f)for(t=f.call(t),c=0;!(s=t.next()).done;)u+=R(s=s.value,e,i,f=o+Q(s,c++),a);else if(\"object\"===s)throw e=String(t),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===e?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":e)+\"). If you meant to render a collection of children, use an array instead.\");return u}function S(t,e,r){if(null==t)return t;var n=[],i=0;return R(t,n,\"\",\"\",(function(t){return e.call(r,t,i++)})),n}function T(t){if(-1===t._status){var e=t._result;(e=e()).then((function(e){0!==t._status&&-1!==t._status||(t._status=1,t._result=e)}),(function(e){0!==t._status&&-1!==t._status||(t._status=2,t._result=e)})),-1===t._status&&(t._status=0,t._result=e)}if(1===t._status)return t._result.default;throw t._result}var x={current:null},B={transition:null},k={ReactCurrentDispatcher:x,ReactCurrentBatchConfig:B,ReactCurrentOwner:b};function X(){throw Error(\"act(...) is not supported in production builds of React.\")}e.Children={map:S,forEach:function(t,e,r){S(t,(function(){e.apply(this,arguments)}),r)},count:function(t){var e=0;return S(t,(function(){e++})),e},toArray:function(t){return S(t,(function(t){return t}))||[]},only:function(t){if(!O(t))throw Error(\"React.Children.only expected to receive a single React element child.\");return t}},e.Component=E,e.Fragment=i,e.Profiler=a,e.PureComponent=G,e.StrictMode=o,e.Suspense=f,e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=k,e.act=X,e.cloneElement=function(t,e,n){if(null==t)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+t+\".\");var i=_({},t.props),o=t.key,a=t.ref,s=t._owner;if(null!=e){if(void 0!==e.ref&&(a=e.ref,s=b.current),void 0!==e.key&&(o=\"\"+e.key),t.type&&t.type.defaultProps)var u=t.type.defaultProps;for(c in e)v.call(e,c)&&!w.hasOwnProperty(c)&&(i[c]=void 0===e[c]&&void 0!==u?u[c]:e[c])}var c=arguments.length-2;if(1===c)i.children=n;else if(1<c){u=Array(c);for(var f=0;f<c;f++)u[f]=arguments[f+2];i.children=u}return{$$typeof:r,type:t.type,key:o,ref:a,props:i,_owner:s}},e.createContext=function(t){return(t={$$typeof:u,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:t},t.Consumer=t},e.createElement=M,e.createFactory=function(t){var e=M.bind(null,t);return e.type=t,e},e.createRef=function(){return{current:null}},e.forwardRef=function(t){return{$$typeof:c,render:t}},e.isValidElement=O,e.lazy=function(t){return{$$typeof:h,_payload:{_status:-1,_result:t},_init:T}},e.memo=function(t,e){return{$$typeof:l,type:t,compare:void 0===e?null:e}},e.startTransition=function(t){var e=B.transition;B.transition={};try{t()}finally{B.transition=e}},e.unstable_act=X,e.useCallback=function(t,e){return x.current.useCallback(t,e)},e.useContext=function(t){return x.current.useContext(t)},e.useDebugValue=function(){},e.useDeferredValue=function(t){return x.current.useDeferredValue(t)},e.useEffect=function(t,e){return x.current.useEffect(t,e)},e.useId=function(){return x.current.useId()},e.useImperativeHandle=function(t,e,r){return x.current.useImperativeHandle(t,e,r)},e.useInsertionEffect=function(t,e){return x.current.useInsertionEffect(t,e)},e.useLayoutEffect=function(t,e){return x.current.useLayoutEffect(t,e)},e.useMemo=function(t,e){return x.current.useMemo(t,e)},e.useReducer=function(t,e,r){return x.current.useReducer(t,e,r)},e.useRef=function(t){return x.current.useRef(t)},e.useState=function(t){return x.current.useState(t)},e.useSyncExternalStore=function(t,e,r){return x.current.useSyncExternalStore(t,e,r)},e.useTransition=function(){return x.current.useTransition()},e.version=\"18.3.1\"},5288:t=>{t.exports=function eq(t,e){return t===e||t!=t&&e!=e}},5389:(t,e,r)=>{var n=r(3663),i=r(7978),o=r(3488),a=r(6449),s=r(583);t.exports=function baseIteratee(t){return\"function\"==typeof t?t:null==t?o:\"object\"==typeof t?a(t)?i(t[0],t[1]):n(t):s(t)}},5401:(t,e,r)=>{\"use strict\";var n=r(462);t.exports=n},5434:t=>{var e=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;t.exports=function hasUnicodeWord(t){return e.test(t)}},5481:(t,e,r)=>{var n=r(9325)[\"__core-js_shared__\"];t.exports=n},5482:(t,e,r)=>{\"use strict\";var n=r(1176);t.exports=function(t){var e=+t;return e!=e||0===e?0:n(e)}},5527:t=>{var e=Object.prototype;t.exports=function isPrototype(t){var r=t&&t.constructor;return t===(\"function\"==typeof r&&r.prototype||e)}},5539:(t,e,r)=>{var n=r(882),i=r(828),o=r(6645),a=RegExp(\"['’]\",\"g\");t.exports=function createCompounder(t){return function(e){return n(o(i(e).replace(a,\"\")),t,\"\")}}},5580:(t,e,r)=>{var n=r(6110)(r(9325),\"DataView\");t.exports=n},5582:(t,e,r)=>{\"use strict\";var n=r(2046),i=r(5951),o=r(2250),aFunction=function(t){return o(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?aFunction(n[t])||aFunction(i[t]):n[t]&&n[t][e]||i[t]&&i[t][e]}},5594:(t,e,r)=>{\"use strict\";var n=r(5582),i=r(2250),o=r(8280),a=r(3556),s=Object;t.exports=a?function(t){return\"symbol\"==typeof t}:function(t){var e=n(\"Symbol\");return i(e)&&o(e.prototype,s(t))}},5606:t=>{var e,r,n=t.exports={};function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(t){if(e===setTimeout)return setTimeout(t,0);if((e===defaultSetTimout||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(t){e=defaultSetTimout}try{r=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(t){r=defaultClearTimeout}}();var i,o=[],a=!1,s=-1;function cleanUpNextTick(){a&&i&&(a=!1,i.length?o=i.concat(o):s=-1,o.length&&drainQueue())}function drainQueue(){if(!a){var t=runTimeout(cleanUpNextTick);a=!0;for(var e=o.length;e;){for(i=o,o=[];++s<e;)i&&i[s].run();s=-1,e=o.length}i=null,a=!1,function runClearTimeout(t){if(r===clearTimeout)return clearTimeout(t);if((r===defaultClearTimeout||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{return r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function Item(t,e){this.fun=t,this.array=e}function noop(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];o.push(new Item(t,e)),1!==o.length||a||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},n.title=\"browser\",n.browser=!0,n.env={},n.argv=[],n.version=\"\",n.versions={},n.on=noop,n.addListener=noop,n.once=noop,n.off=noop,n.removeListener=noop,n.removeAllListeners=noop,n.emit=noop,n.prependListener=noop,n.prependOnceListener=noop,n.listeners=function(t){return[]},n.binding=function(t){throw new Error(\"process.binding is not supported\")},n.cwd=function(){return\"/\"},n.chdir=function(t){throw new Error(\"process.chdir is not supported\")},n.umask=function(){return 0}},5749:(t,e,r)=>{var n=r(1042);t.exports=function hashSet(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?\"__lodash_hash_undefined__\":e,this}},5807:(t,e,r)=>{\"use strict\";var n=r(1907),i=n({}.toString),o=n(\"\".slice);t.exports=function(t){return o(i(t),8,-1)}},5808:(t,e,r)=>{var n=r(2507)(\"toUpperCase\");t.exports=n},5816:(t,e,r)=>{\"use strict\";var n=r(6128);t.exports=function(t,e){return n[t]||(n[t]=e||{})}},5817:t=>{\"use strict\";t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},5861:(t,e,r)=>{var n=r(5580),i=r(8223),o=r(2804),a=r(6545),s=r(8303),u=r(2552),c=r(7473),f=\"[object Map]\",l=\"[object Promise]\",h=\"[object Set]\",p=\"[object WeakMap]\",d=\"[object DataView]\",_=c(n),y=c(i),m=c(o),g=c(a),v=c(s),b=u;(n&&b(new n(new ArrayBuffer(1)))!=d||i&&b(new i)!=f||o&&b(o.resolve())!=l||a&&b(new a)!=h||s&&b(new s)!=p)&&(b=function(t){var e=u(t),r=\"[object Object]\"==e?t.constructor:void 0,n=r?c(r):\"\";if(n)switch(n){case _:return d;case y:return f;case m:return l;case g:return h;case v:return p}return e}),t.exports=b},5911:(t,e,r)=>{var n=r(8859),i=r(4248),o=r(9219);t.exports=function equalArrays(t,e,r,a,s,u){var c=1&r,f=t.length,l=e.length;if(f!=l&&!(c&&l>f))return!1;var h=u.get(t),p=u.get(e);if(h&&p)return h==e&&p==t;var d=-1,_=!0,y=2&r?new n:void 0;for(u.set(t,e),u.set(e,t);++d<f;){var m=t[d],g=e[d];if(a)var v=c?a(g,m,d,e,t,u):a(m,g,d,t,e,u);if(void 0!==v){if(v)continue;_=!1;break}if(y){if(!i(e,(function(t,e){if(!o(y,e)&&(m===t||s(m,t,r,a,u)))return y.push(e)}))){_=!1;break}}else if(m!==g&&!s(m,g,r,a,u)){_=!1;break}}return u.delete(t),u.delete(e),_}},5950:(t,e,r)=>{var n=r(695),i=r(8984),o=r(4894);t.exports=function keys(t){return o(t)?n(t):i(t)}},5951:function(t,e,r){\"use strict\";var check=function(t){return t&&t.Math===Math&&t};t.exports=check(\"object\"==typeof globalThis&&globalThis)||check(\"object\"==typeof window&&window)||check(\"object\"==typeof self&&self)||check(\"object\"==typeof r.g&&r.g)||check(\"object\"==typeof this&&this)||function(){return this}()||Function(\"return this\")()},6009:(t,e,r)=>{t=r.nmd(t);var n=r(4840),i=e&&!e.nodeType&&e,o=i&&t&&!t.nodeType&&t,a=o&&o.exports===i&&n.process,s=function(){try{var t=o&&o.require&&o.require(\"util\").types;return t||a&&a.binding&&a.binding(\"util\")}catch(t){}}();t.exports=s},6024:(t,e,r)=>{\"use strict\";var n=r(1505),i=Function.prototype,o=i.apply,a=i.call;t.exports=\"object\"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},6025:(t,e,r)=>{var n=r(5288);t.exports=function assocIndexOf(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return-1}},6028:(t,e,r)=>{\"use strict\";var n=r(3930),i=r(6285),o=r(5594),a=r(9367),s=r(581),u=r(6264),c=TypeError,f=u(\"toPrimitive\");t.exports=function(t,e){if(!i(t)||o(t))return t;var r,u=a(t,f);if(u){if(void 0===e&&(e=\"default\"),r=n(u,t,e),!i(r)||o(r))return r;throw new c(\"Can't convert object to primitive value\")}return void 0===e&&(e=\"number\"),s(t,e)}},6110:(t,e,r)=>{var n=r(5083),i=r(392);t.exports=function getNative(t,e){var r=i(t,e);return n(r)?r:void 0}},6128:(t,e,r)=>{\"use strict\";var n=r(7376),i=r(5951),o=r(2532),a=\"__core-js_shared__\",s=t.exports=i[a]||o(a,{});(s.versions||(s.versions=[])).push({version:\"3.40.0\",mode:n?\"pure\":\"global\",copyright:\"© 2014-2025 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.40.0/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},6264:(t,e,r)=>{\"use strict\";var n=r(5951),i=r(5816),o=r(9724),a=r(6499),s=r(9846),u=r(3556),c=n.Symbol,f=i(\"wks\"),l=u?c.for||c:c&&c.withoutSetter||a;t.exports=function(t){return o(f,t)||(f[t]=s&&o(c,t)?c[t]:l(\"Symbol.\"+t)),f[t]}},6285:(t,e,r)=>{\"use strict\";var n=r(2250);t.exports=function(t){return\"object\"==typeof t?null!==t:n(t)}},6449:t=>{var e=Array.isArray;t.exports=e},6499:(t,e,r)=>{\"use strict\";var n=r(1907),i=0,o=Math.random(),a=n(1..toString);t.exports=function(t){return\"Symbol(\"+(void 0===t?\"\":t)+\")_\"+a(++i+o,36)}},6540:(t,e,r)=>{\"use strict\";t.exports=r(5287)},6545:(t,e,r)=>{var n=r(6110)(r(9325),\"Set\");t.exports=n},6547:(t,e,r)=>{var n=r(3360),i=r(5288),o=Object.prototype.hasOwnProperty;t.exports=function assignValue(t,e,r){var a=t[e];o.call(t,e)&&i(a,r)&&(void 0!==r||e in t)||n(t,e,r)}},6624:(t,e,r)=>{\"use strict\";var n=r(6285),i=String,o=TypeError;t.exports=function(t){if(n(t))return t;throw new o(i(t)+\" is not an object\")}},6645:(t,e,r)=>{var n=r(1733),i=r(5434),o=r(3222),a=r(2225);t.exports=function words(t,e,r){return t=o(t),void 0===(e=r?void 0:e)?i(t)?a(t):n(t):t.match(e)||[]}},6649:(t,e,r)=>{var n=r(3221)();t.exports=n},6698:t=>{\"function\"==typeof Object.create?t.exports=function inherits(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function inherits(t,e){if(e){t.super_=e;var TempCtor=function(){};TempCtor.prototype=e.prototype,t.prototype=new TempCtor,t.prototype.constructor=t}}},6710:(t,e,r)=>{var n=r(6698),i=r(4107),o=r(8011),a=r(2861).Buffer,s=new Array(64);function Sha224(){this.init(),this._w=s,o.call(this,64,56)}n(Sha224,i),Sha224.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},Sha224.prototype._hash=function(){var t=a.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=Sha224},6721:(t,e,r)=>{var n=r(1042),i=Object.prototype.hasOwnProperty;t.exports=function hashGet(t){var e=this.__data__;if(n){var r=e[t];return\"__lodash_hash_undefined__\"===r?void 0:r}return i.call(e,t)?e[t]:void 0}},6794:(t,e,r)=>{\"use strict\";var n=r(5951).navigator,i=n&&n.userAgent;t.exports=i?String(i):\"\"},6800:(t,e,r)=>{var n=r(5288),i=r(4894),o=r(361),a=r(3805);t.exports=function isIterateeCall(t,e,r){if(!a(r))return!1;var s=typeof e;return!!(\"number\"==s?i(r)&&o(e,r.length):\"string\"==s&&e in r)&&n(r[e],t)}},6946:(t,e,r)=>{\"use strict\";var n=r(1907),i=r(8828),o=r(5807),a=Object,s=n(\"\".split);t.exports=i((function(){return!a(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"===o(t)?s(t,\"\"):a(t)}:a},7068:(t,e,r)=>{var n=r(7217),i=r(5911),o=r(1986),a=r(689),s=r(5861),u=r(6449),c=r(3656),f=r(7167),l=\"[object Arguments]\",h=\"[object Array]\",p=\"[object Object]\",d=Object.prototype.hasOwnProperty;t.exports=function baseIsEqualDeep(t,e,r,_,y,m){var g=u(t),v=u(e),b=g?h:s(t),w=v?h:s(e),I=(b=b==l?p:b)==p,x=(w=w==l?p:w)==p,B=b==w;if(B&&c(t)){if(!c(e))return!1;g=!0,I=!1}if(B&&!I)return m||(m=new n),g||f(t)?i(t,e,r,_,y,m):o(t,e,b,r,_,y,m);if(!(1&r)){var k=I&&d.call(t,\"__wrapped__\"),C=x&&d.call(e,\"__wrapped__\");if(k||C){var q=k?t.value():t,L=C?e.value():e;return m||(m=new n),y(q,L,r,_,m)}}return!!B&&(m||(m=new n),a(t,e,r,_,y,m))}},7136:t=>{\"use strict\";t.exports=function(t){return null==t}},7167:(t,e,r)=>{var n=r(4901),i=r(7301),o=r(6009),a=o&&o.isTypedArray,s=a?i(a):n;t.exports=s},7170:(t,e)=>{\"use strict\";e.f=Object.getOwnPropertySymbols},7197:t=>{t.exports=function matchesStrictComparable(t,e){return function(r){return null!=r&&(r[t]===e&&(void 0!==e||t in Object(r)))}}},7217:(t,e,r)=>{var n=r(79),i=r(1420),o=r(938),a=r(3605),s=r(9817),u=r(945);function Stack(t){var e=this.__data__=new n(t);this.size=e.size}Stack.prototype.clear=i,Stack.prototype.delete=o,Stack.prototype.get=a,Stack.prototype.has=s,Stack.prototype.set=u,t.exports=Stack},7237:t=>{t.exports=function baseProperty(t){return function(e){return null==e?void 0:e[t]}}},7248:(t,e,r)=>{var n=r(6547),i=r(1234);t.exports=function zipObject(t,e){return i(t||[],e||[],n)}},7255:(t,e,r)=>{var n=r(7422);t.exports=function basePropertyDeep(t){return function(e){return n(e,t)}}},7296:(t,e,r)=>{var n,i=r(5481),o=(n=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+n:\"\";t.exports=function isMasked(t){return!!o&&o in t}},7301:t=>{t.exports=function baseUnary(t){return function(e){return t(e)}}},7309:(t,e,r)=>{var n=r(2006)(r(4713));t.exports=n},7374:(t,e,r)=>{\"use strict\";var n=r(6946),i=r(4239);t.exports=function(t){return n(i(t))}},7376:t=>{\"use strict\";t.exports=!0},7400:(t,e,r)=>{var n=r(9374),i=1/0;t.exports=function toFinite(t){return t?(t=n(t))===i||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}},7422:(t,e,r)=>{var n=r(1769),i=r(7797);t.exports=function baseGet(t,e){for(var r=0,o=(e=n(e,t)).length;null!=t&&r<o;)t=t[i(e[r++])];return r&&r==o?t:void 0}},7463:(t,e,r)=>{\"use strict\";var n=r(8828),i=r(2250),o=/#|\\.prototype\\./,isForced=function(t,e){var r=s[a(t)];return r===c||r!==u&&(i(e)?n(e):!!e)},a=isForced.normalize=function(t){return String(t).replace(o,\".\").toLowerCase()},s=isForced.data={},u=isForced.NATIVE=\"N\",c=isForced.POLYFILL=\"P\";t.exports=isForced},7473:t=>{var e=Function.prototype.toString;t.exports=function toSource(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+\"\"}catch(t){}}return\"\"}},7526:(t,e)=>{\"use strict\";e.byteLength=function byteLength(t){var e=getLens(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function toByteArray(t){var e,r,o=getLens(t),a=o[0],s=o[1],u=new i(function _byteLength(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,f=s>0?a-4:a;for(r=0;r<f;r+=4)e=n[t.charCodeAt(r)]<<18|n[t.charCodeAt(r+1)]<<12|n[t.charCodeAt(r+2)]<<6|n[t.charCodeAt(r+3)],u[c++]=e>>16&255,u[c++]=e>>8&255,u[c++]=255&e;2===s&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,u[c++]=255&e);1===s&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e);return u},e.fromByteArray=function fromByteArray(t){for(var e,n=t.length,i=n%3,o=[],a=16383,s=0,u=n-i;s<u;s+=a)o.push(encodeChunk(t,s,s+a>u?u:s+a));1===i?(e=t[n-1],o.push(r[e>>2]+r[e<<4&63]+\"==\")):2===i&&(e=(t[n-2]<<8)+t[n-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+\"=\"));return o.join(\"\")};for(var r=[],n=[],i=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",a=0;a<64;++a)r[a]=o[a],n[o.charCodeAt(a)]=a;function getLens(t){var e=t.length;if(e%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=t.indexOf(\"=\");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function encodeChunk(t,e,n){for(var i,o,a=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),a.push(r[(o=i)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join(\"\")}n[\"-\".charCodeAt(0)]=62,n[\"_\".charCodeAt(0)]=63},7534:(t,e,r)=>{var n=r(2552),i=r(346);t.exports=function baseIsArguments(t){return i(t)&&\"[object Arguments]\"==n(t)}},7556:(t,e,r)=>{var n=r(1873),i=r(4932),o=r(6449),a=r(4394),s=n?n.prototype:void 0,u=s?s.toString:void 0;t.exports=function baseToString(t){if(\"string\"==typeof t)return t;if(o(t))return i(t,baseToString)+\"\";if(a(t))return u?u.call(t):\"\";var e=t+\"\";return\"0\"==e&&1/t==-1/0?\"-0\":e}},7666:(t,e,r)=>{var n=r(4851),i=r(953);function _extends(){var e;return t.exports=_extends=n?i(e=n).call(e):function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},t.exports.__esModule=!0,t.exports.default=t.exports,_extends.apply(null,arguments)}t.exports=_extends,t.exports.__esModule=!0,t.exports.default=t.exports},7670:(t,e,r)=>{var n=r(2651);t.exports=function mapCacheDelete(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},7797:(t,e,r)=>{var n=r(4394);t.exports=function toKey(t){if(\"string\"==typeof t||n(t))return t;var e=t+\"\";return\"0\"==e&&1/t==-1/0?\"-0\":e}},7816:(t,e,r)=>{var n=r(6698),i=r(8011),o=r(2861).Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function Sha(){this.init(),this._w=s,i.call(this,64,56)}function rotl30(t){return t<<30|t>>>2}function ft(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}n(Sha,i),Sha.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},Sha.prototype._update=function(t){for(var e,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,s=0|this._d,u=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=r[c-3]^r[c-8]^r[c-14]^r[c-16];for(var f=0;f<80;++f){var l=~~(f/20),h=0|((e=n)<<5|e>>>27)+ft(l,i,o,s)+u+r[f]+a[l];u=s,s=o,o=rotl30(i),i=n,n=h}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},Sha.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=Sha},7828:(t,e,r)=>{var n=r(9325).Uint8Array;t.exports=n},7978:(t,e,r)=>{var n=r(270),i=r(8156),o=r(631),a=r(8586),s=r(756),u=r(7197),c=r(7797);t.exports=function baseMatchesProperty(t,e){return a(t)&&s(e)?u(c(t),e):function(r){var a=i(r,t);return void 0===a&&a===e?o(r,t):n(e,a,3)}}},8011:(t,e,r)=>{var n=r(2861).Buffer;function Hash(t,e){this._block=n.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Hash.prototype.update=function(t,e){\"string\"==typeof t&&(e=e||\"utf8\",t=n.from(t,e));for(var r=this._block,i=this._blockSize,o=t.length,a=this._len,s=0;s<o;){for(var u=a%i,c=Math.min(o-s,i-u),f=0;f<c;f++)r[u+f]=t[s+f];s+=c,(a+=c)%i==0&&this._update(r)}return this._len+=o,this},Hash.prototype.digest=function(t){var e=this._len%this._blockSize;this._block[e]=128,this._block.fill(0,e+1),e>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},Hash.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},t.exports=Hash},8077:t=>{t.exports=function baseHasIn(t,e){return null!=t&&e in Object(t)}},8096:t=>{t.exports=function baseTimes(t,e){for(var r=-1,n=Array(t);++r<t;)n[r]=e(r);return n}},8156:(t,e,r)=>{var n=r(7422);t.exports=function get(t,e,r){var i=null==t?void 0:n(t,e);return void 0===i?r:i}},8223:(t,e,r)=>{var n=r(6110)(r(9325),\"Map\");t.exports=n},8280:(t,e,r)=>{\"use strict\";var n=r(1907);t.exports=n({}.isPrototypeOf)},8287:(t,e,r)=>{\"use strict\";const n=r(7526),i=r(251),o=\"function\"==typeof Symbol&&\"function\"==typeof Symbol.for?Symbol.for(\"nodejs.util.inspect.custom\"):null;e.Buffer=Buffer,e.SlowBuffer=function SlowBuffer(t){+t!=t&&(t=0);return Buffer.alloc(+t)},e.INSPECT_MAX_BYTES=50;const a=2147483647;function createBuffer(t){if(t>a)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,Buffer.prototype),e}function Buffer(t,e,r){if(\"number\"==typeof t){if(\"string\"==typeof e)throw new TypeError('The \"string\" argument must be of type string. Received type number');return allocUnsafe(t)}return from(t,e,r)}function from(t,e,r){if(\"string\"==typeof t)return function fromString(t,e){\"string\"==typeof e&&\"\"!==e||(e=\"utf8\");if(!Buffer.isEncoding(e))throw new TypeError(\"Unknown encoding: \"+e);const r=0|byteLength(t,e);let n=createBuffer(r);const i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e);if(ArrayBuffer.isView(t))return function fromArrayView(t){if(isInstance(t,Uint8Array)){const e=new Uint8Array(t);return fromArrayBuffer(e.buffer,e.byteOffset,e.byteLength)}return fromArrayLike(t)}(t);if(null==t)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t);if(isInstance(t,ArrayBuffer)||t&&isInstance(t.buffer,ArrayBuffer))return fromArrayBuffer(t,e,r);if(\"undefined\"!=typeof SharedArrayBuffer&&(isInstance(t,SharedArrayBuffer)||t&&isInstance(t.buffer,SharedArrayBuffer)))return fromArrayBuffer(t,e,r);if(\"number\"==typeof t)throw new TypeError('The \"value\" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return Buffer.from(n,e,r);const i=function fromObject(t){if(Buffer.isBuffer(t)){const e=0|checked(t.length),r=createBuffer(e);return 0===r.length||t.copy(r,0,0,e),r}if(void 0!==t.length)return\"number\"!=typeof t.length||numberIsNaN(t.length)?createBuffer(0):fromArrayLike(t);if(\"Buffer\"===t.type&&Array.isArray(t.data))return fromArrayLike(t.data)}(t);if(i)return i;if(\"undefined\"!=typeof Symbol&&null!=Symbol.toPrimitive&&\"function\"==typeof t[Symbol.toPrimitive])return Buffer.from(t[Symbol.toPrimitive](\"string\"),e,r);throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof t)}function assertSize(t){if(\"number\"!=typeof t)throw new TypeError('\"size\" argument must be of type number');if(t<0)throw new RangeError('The value \"'+t+'\" is invalid for option \"size\"')}function allocUnsafe(t){return assertSize(t),createBuffer(t<0?0:0|checked(t))}function fromArrayLike(t){const e=t.length<0?0:0|checked(t.length),r=createBuffer(e);for(let n=0;n<e;n+=1)r[n]=255&t[n];return r}function fromArrayBuffer(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('\"offset\" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('\"length\" is outside of buffer bounds');let n;return n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,Buffer.prototype),n}function checked(t){if(t>=a)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a.toString(16)+\" bytes\");return 0|t}function byteLength(t,e){if(Buffer.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||isInstance(t,ArrayBuffer))return t.byteLength;if(\"string\"!=typeof t)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case\"ascii\":case\"latin1\":case\"binary\":return r;case\"utf8\":case\"utf-8\":return utf8ToBytes(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return base64ToBytes(t).length;default:if(i)return n?-1:utf8ToBytes(t).length;e=(\"\"+e).toLowerCase(),i=!0}}function slowToString(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(e>>>=0))return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return hexSlice(this,e,r);case\"utf8\":case\"utf-8\":return utf8Slice(this,e,r);case\"ascii\":return asciiSlice(this,e,r);case\"latin1\":case\"binary\":return latin1Slice(this,e,r);case\"base64\":return base64Slice(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function swap(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function bidirectionalIndexOf(t,e,r,n,i){if(0===t.length)return-1;if(\"string\"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),numberIsNaN(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if(\"string\"==typeof e&&(e=Buffer.from(e,n)),Buffer.isBuffer(e))return 0===e.length?-1:arrayIndexOf(t,e,r,n,i);if(\"number\"==typeof e)return e&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):arrayIndexOf(t,[e],r,n,i);throw new TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(t,e,r,n,i){let o,a=1,s=t.length,u=e.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,r/=2}function read(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){let n=-1;for(o=r;o<s;o++)if(read(t,o)===read(e,-1===n?0:o-n)){if(-1===n&&(n=o),o-n+1===u)return n*a}else-1!==n&&(o-=o-n),n=-1}else for(r+u>s&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;n<u;n++)if(read(t,o+n)!==read(e,n)){r=!1;break}if(r)return o}return-1}function hexWrite(t,e,r,n){r=Number(r)||0;const i=t.length-r;n?(n=Number(n))>i&&(n=i):n=i;const o=e.length;let a;for(n>o/2&&(n=o/2),a=0;a<n;++a){const n=parseInt(e.substr(2*a,2),16);if(numberIsNaN(n))return a;t[r+a]=n}return a}function utf8Write(t,e,r,n){return blitBuffer(utf8ToBytes(e,t.length-r),t,r,n)}function asciiWrite(t,e,r,n){return blitBuffer(function asciiToBytes(t){const e=[];for(let r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function base64Write(t,e,r,n){return blitBuffer(base64ToBytes(e),t,r,n)}function ucs2Write(t,e,r,n){return blitBuffer(function utf16leToBytes(t,e){let r,n,i;const o=[];for(let a=0;a<t.length&&!((e-=2)<0);++a)r=t.charCodeAt(a),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function base64Slice(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function utf8Slice(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i<r;){const e=t[i];let o=null,a=e>239?4:e>223?3:e>191?2:1;if(i+a<=r){let r,n,s,u;switch(a){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function decodeCodePointsArray(t){const e=t.length;if(e<=s)return String.fromCharCode.apply(String,t);let r=\"\",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=s));return r}(n)}e.kMaxLength=a,Buffer.TYPED_ARRAY_SUPPORT=function typedArraySupport(){try{const t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||\"undefined\"==typeof console||\"function\"!=typeof console.error||console.error(\"This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.\"),Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(t,e,r){return from(t,e,r)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(t,e,r){return function alloc(t,e,r){return assertSize(t),t<=0?createBuffer(t):void 0!==e?\"string\"==typeof r?createBuffer(t).fill(e,r):createBuffer(t).fill(e):createBuffer(t)}(t,e,r)},Buffer.allocUnsafe=function(t){return allocUnsafe(t)},Buffer.allocUnsafeSlow=function(t){return allocUnsafe(t)},Buffer.isBuffer=function isBuffer(t){return null!=t&&!0===t._isBuffer&&t!==Buffer.prototype},Buffer.compare=function compare(t,e){if(isInstance(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),isInstance(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(t)||!Buffer.isBuffer(e))throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;let r=t.length,n=e.length;for(let i=0,o=Math.min(r,n);i<o;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function isEncoding(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},Buffer.concat=function concat(t,e){if(!Array.isArray(t))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===t.length)return Buffer.alloc(0);let r;if(void 0===e)for(e=0,r=0;r<t.length;++r)e+=t[r].length;const n=Buffer.allocUnsafe(e);let i=0;for(r=0;r<t.length;++r){let e=t[r];if(isInstance(e,Uint8Array))i+e.length>n.length?(Buffer.isBuffer(e)||(e=Buffer.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!Buffer.isBuffer(e))throw new TypeError('\"list\" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const t=this.length;if(t%2!=0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(let e=0;e<t;e+=2)swap(this,e,e+1);return this},Buffer.prototype.swap32=function swap32(){const t=this.length;if(t%4!=0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(let e=0;e<t;e+=4)swap(this,e,e+3),swap(this,e+1,e+2);return this},Buffer.prototype.swap64=function swap64(){const t=this.length;if(t%8!=0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(let e=0;e<t;e+=8)swap(this,e,e+7),swap(this,e+1,e+6),swap(this,e+2,e+5),swap(this,e+3,e+4);return this},Buffer.prototype.toString=function toString(){const t=this.length;return 0===t?\"\":0===arguments.length?utf8Slice(this,0,t):slowToString.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function equals(t){if(!Buffer.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t||0===Buffer.compare(this,t)},Buffer.prototype.inspect=function inspect(){let t=\"\";const r=e.INSPECT_MAX_BYTES;return t=this.toString(\"hex\",0,r).replace(/(.{2})/g,\"$1 \").trim(),this.length>r&&(t+=\" ... \"),\"<Buffer \"+t+\">\"},o&&(Buffer.prototype[o]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(t,e,r,n,i){if(isInstance(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(t))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError(\"out of range index\");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0);const s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r);for(let t=0;t<s;++t)if(u[t]!==c[t]){o=u[t],a=c[t];break}return o<a?-1:a<o?1:0},Buffer.prototype.includes=function includes(t,e,r){return-1!==this.indexOf(t,e,r)},Buffer.prototype.indexOf=function indexOf(t,e,r){return bidirectionalIndexOf(this,t,e,r,!0)},Buffer.prototype.lastIndexOf=function lastIndexOf(t,e,r){return bidirectionalIndexOf(this,t,e,r,!1)},Buffer.prototype.write=function write(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");let o=!1;for(;;)switch(n){case\"hex\":return hexWrite(this,t,e,r);case\"utf8\":case\"utf-8\":return utf8Write(this,t,e,r);case\"ascii\":case\"latin1\":case\"binary\":return asciiWrite(this,t,e,r);case\"base64\":return base64Write(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};const s=4096;function asciiSlice(t,e,r){let n=\"\";r=Math.min(t.length,r);for(let i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function latin1Slice(t,e,r){let n=\"\";r=Math.min(t.length,r);for(let i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function hexSlice(t,e,r){const n=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>n)&&(r=n);let i=\"\";for(let n=e;n<r;++n)i+=f[t[n]];return i}function utf16leSlice(t,e,r){const n=t.slice(e,r);let i=\"\";for(let t=0;t<n.length-1;t+=2)i+=String.fromCharCode(n[t]+256*n[t+1]);return i}function checkOffset(t,e,r){if(t%1!=0||t<0)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function checkInt(t,e,r,n,i,o){if(!Buffer.isBuffer(t))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(e>i||e<o)throw new RangeError('\"value\" argument is out of bounds');if(r+n>t.length)throw new RangeError(\"Index out of range\")}function wrtBigUInt64LE(t,e,r,n,i){checkIntBI(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,r}function wrtBigUInt64BE(t,e,r,n,i){checkIntBI(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=a,a>>=8,t[r+2]=a,a>>=8,t[r+1]=a,a>>=8,t[r]=a,r+8}function checkIEEE754(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function writeFloat(t,e,r,n,o){return e=+e,r>>>=0,o||checkIEEE754(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function writeDouble(t,e,r,n,o){return e=+e,r>>>=0,o||checkIEEE754(t,0,r,8),i.write(t,e,r,n,52,8),r+8}Buffer.prototype.slice=function slice(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t);const n=this.subarray(t,e);return Object.setPrototypeOf(n,Buffer.prototype),n},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(t,e,r){t>>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t],i=1,o=0;for(;++o<e&&(i*=256);)n+=this[t+o]*i;return n},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(t,e,r){t>>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(t,e){return t>>>=0,e||checkOffset(t,1,this.length),this[t]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(t,e){return t>>>=0,e||checkOffset(t,2,this.length),this[t]|this[t+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(t,e){return t>>>=0,e||checkOffset(t,2,this.length),this[t]<<8|this[t+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(t){validateNumber(t>>>=0,\"offset\");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<<BigInt(32))})),Buffer.prototype.readBigUInt64BE=defineBigIntMethod((function readBigUInt64BE(t){validateNumber(t>>>=0,\"offset\");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<<BigInt(32))+BigInt(i)})),Buffer.prototype.readIntLE=function readIntLE(t,e,r){t>>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=this[t],i=1,o=0;for(;++o<e&&(i*=256);)n+=this[t+o]*i;return i*=128,n>=i&&(n-=Math.pow(2,8*e)),n},Buffer.prototype.readIntBE=function readIntBE(t,e,r){t>>>=0,e>>>=0,r||checkOffset(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},Buffer.prototype.readInt8=function readInt8(t,e){return t>>>=0,e||checkOffset(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Buffer.prototype.readInt16LE=function readInt16LE(t,e){t>>>=0,e||checkOffset(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function readInt16BE(t,e){t>>>=0,e||checkOffset(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function readInt32LE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(t){validateNumber(t>>>=0,\"offset\");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<<BigInt(32))+BigInt(e+256*this[++t]+65536*this[++t]+this[++t]*2**24)})),Buffer.prototype.readBigInt64BE=defineBigIntMethod((function readBigInt64BE(t){validateNumber(t>>>=0,\"offset\");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||boundsError(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<<BigInt(32))+BigInt(this[++t]*2**24+65536*this[++t]+256*this[++t]+r)})),Buffer.prototype.readFloatLE=function readFloatLE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),i.read(this,t,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(t,e){return t>>>=0,e||checkOffset(t,4,this.length),i.read(this,t,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(t,e){return t>>>=0,e||checkOffset(t,8,this.length),i.read(this,t,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(t,e){return t>>>=0,e||checkOffset(t,8,this.length),i.read(this,t,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(t,e,r,n){if(t=+t,e>>>=0,r>>>=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[e]=255&t;++o<r&&(i*=256);)this[e+o]=t/i&255;return e+r},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(t,e,r,n){if(t=+t,e>>>=0,r>>>=0,!n){checkInt(this,t,e,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,1,255,0),this[e]=255&t,e+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(t,e=0){return wrtBigUInt64LE(this,t,e,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(t,e=0){return wrtBigUInt64BE(this,t,e,BigInt(0),BigInt(\"0xffffffffffffffff\"))})),Buffer.prototype.writeIntLE=function writeIntLE(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,t,e,r,n-1,-n)}let i=0,o=1,a=0;for(this[e]=255&t;++i<r&&(o*=256);)t<0&&0===a&&0!==this[e+i-1]&&(a=1),this[e+i]=(t/o|0)-a&255;return e+r},Buffer.prototype.writeIntBE=function writeIntBE(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);checkInt(this,t,e,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===a&&0!==this[e+i+1]&&(a=1),this[e+i]=(t/o|0)-a&255;return e+r},Buffer.prototype.writeInt8=function writeInt8(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},Buffer.prototype.writeInt16LE=function writeInt16LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},Buffer.prototype.writeInt16BE=function writeInt16BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},Buffer.prototype.writeInt32LE=function writeInt32LE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},Buffer.prototype.writeInt32BE=function writeInt32BE(t,e,r){return t=+t,e>>>=0,r||checkInt(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(t,e=0){return wrtBigUInt64LE(this,t,e,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(t,e=0){return wrtBigUInt64BE(this,t,e,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(t,e,r){return writeFloat(this,t,e,!0,r)},Buffer.prototype.writeFloatBE=function writeFloatBE(t,e,r){return writeFloat(this,t,e,!1,r)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(t,e,r){return writeDouble(this,t,e,!0,r)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(t,e,r){return writeDouble(this,t,e,!1,r)},Buffer.prototype.copy=function copy(t,e,r,n){if(!Buffer.isBuffer(t))throw new TypeError(\"argument should be a Buffer\");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError(\"targetStart out of bounds\");if(r<0||r>=this.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);const i=n-r;return this===t&&\"function\"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(e,r,n):Uint8Array.prototype.set.call(t,this.subarray(r,n),e),i},Buffer.prototype.fill=function fill(t,e,r,n){if(\"string\"==typeof t){if(\"string\"==typeof e?(n=e,e=0,r=this.length):\"string\"==typeof r&&(n=r,r=this.length),void 0!==n&&\"string\"!=typeof n)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof n&&!Buffer.isEncoding(n))throw new TypeError(\"Unknown encoding: \"+n);if(1===t.length){const e=t.charCodeAt(0);(\"utf8\"===n&&e<128||\"latin1\"===n)&&(t=e)}}else\"number\"==typeof t?t&=255:\"boolean\"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<r)throw new RangeError(\"Out of range index\");if(r<=e)return this;let i;if(e>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),\"number\"==typeof t)for(i=e;i<r;++i)this[i]=t;else{const o=Buffer.isBuffer(t)?t:Buffer.from(t,n),a=o.length;if(0===a)throw new TypeError('The value \"'+t+'\" is invalid for argument \"value\"');for(i=0;i<r-e;++i)this[i+e]=o[i%a]}return this};const u={};function E(t,e,r){u[t]=class NodeError extends r{constructor(){super(),Object.defineProperty(this,\"message\",{value:e.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${t}]`,this.stack,delete this.name}get code(){return t}set code(t){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value:t,writable:!0})}toString(){return`${this.name} [${t}]: ${this.message}`}}}function addNumericalSeparator(t){let e=\"\",r=t.length;const n=\"-\"===t[0]?1:0;for(;r>=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function checkIntBI(t,e,r,n,i,o){if(t>r||t<e){const n=\"bigint\"==typeof e?\"n\":\"\";let i;throw i=o>3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new u.ERR_OUT_OF_RANGE(\"value\",i,t)}!function checkBounds(t,e,r){validateNumber(e,\"offset\"),void 0!==t[e]&&void 0!==t[e+r]||boundsError(e,t.length-(r+1))}(n,i,o)}function validateNumber(t,e){if(\"number\"!=typeof t)throw new u.ERR_INVALID_ARG_TYPE(e,\"number\",t)}function boundsError(t,e,r){if(Math.floor(t)!==t)throw validateNumber(t,r),new u.ERR_OUT_OF_RANGE(r||\"offset\",\"an integer\",t);if(e<0)throw new u.ERR_BUFFER_OUT_OF_BOUNDS;throw new u.ERR_OUT_OF_RANGE(r||\"offset\",`>= ${r?1:0} and <= ${e}`,t)}E(\"ERR_BUFFER_OUT_OF_BOUNDS\",(function(t){return t?`${t} is outside of buffer bounds`:\"Attempt to access memory outside buffer bounds\"}),RangeError),E(\"ERR_INVALID_ARG_TYPE\",(function(t,e){return`The \"${t}\" argument must be of type number. Received type ${typeof e}`}),TypeError),E(\"ERR_OUT_OF_RANGE\",(function(t,e,r){let n=`The value of \"${t}\" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=addNumericalSeparator(String(r)):\"bigint\"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=addNumericalSeparator(i)),i+=\"n\"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const c=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let a=0;a<n;++a){if(r=t.charCodeAt(a),r>55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function base64ToBytes(t){return n.toByteArray(function base64clean(t){if((t=(t=t.split(\"=\")[0]).trim().replace(c,\"\")).length<2)return\"\";for(;t.length%4!=0;)t+=\"=\";return t}(t))}function blitBuffer(t,e,r,n){let i;for(i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function isInstance(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function numberIsNaN(t){return t!=t}const f=function(){const t=\"0123456789abcdef\",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function defineBigIntMethod(t){return\"undefined\"==typeof BigInt?BufferBigIntNotDefined:t}function BufferBigIntNotDefined(){throw new Error(\"BigInt not supported\")}},8303:(t,e,r)=>{var n=r(6110)(r(9325),\"WeakMap\");t.exports=n},8311:(t,e,r)=>{\"use strict\";var n=r(2361),i=r(2159),o=r(1505),a=n(n.bind);t.exports=function(t,e){return i(t),void 0===e?t:o?a(t,e):function(){return t.apply(e,arguments)}}},8329:(t,e,r)=>{var n=r(4894);t.exports=function createBaseEach(t,e){return function(r,i){if(null==r)return r;if(!n(r))return t(r,i);for(var o=r.length,a=e?o:-1,s=Object(r);(e?a--:++a<o)&&!1!==i(s[a],a,s););return r}}},8530:t=>{\"use strict\";t.exports={}},8586:(t,e,r)=>{var n=r(6449),i=r(4394),o=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,a=/^\\w*$/;t.exports=function isKey(t,e){if(n(t))return!1;var r=typeof t;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=t&&!i(t))||(a.test(t)||!o.test(t)||null!=e&&t in Object(e))}},8655:(t,e,r)=>{var n=r(6025);t.exports=function listCacheHas(t){return n(this.__data__,t)>-1}},8661:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(8828);t.exports=n&&i((function(){return 42!==Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},8754:(t,e,r)=>{var n=r(5160);t.exports=function castSlice(t,e,r){var i=t.length;return r=void 0===r?i:r,!e&&r>=i?t:n(t,e,r)}},8828:t=>{\"use strict\";t.exports=function(t){try{return!!t()}catch(t){return!0}}},8859:(t,e,r)=>{var n=r(3661),i=r(1380),o=r(1459);function SetCache(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n;++e<r;)this.add(t[e])}SetCache.prototype.add=SetCache.prototype.push=i,SetCache.prototype.has=o,t.exports=SetCache},8984:(t,e,r)=>{var n=r(5527),i=r(3650),o=Object.prototype.hasOwnProperty;t.exports=function baseKeys(t){if(!n(t))return i(t);var e=[];for(var r in Object(t))o.call(t,r)&&\"constructor\"!=r&&e.push(r);return e}},9219:t=>{t.exports=function cacheHas(t,e){return t.has(e)}},9298:(t,e,r)=>{\"use strict\";var n=r(4239),i=Object;t.exports=function(t){return i(n(t))}},9307:(t,e,r)=>{\"use strict\";var n=r(1091),i=r(4673);n({target:\"Function\",proto:!0,forced:Function.bind!==i},{bind:i})},9325:(t,e,r)=>{var n=r(4840),i=\"object\"==typeof self&&self&&self.Object===Object&&self,o=n||i||Function(\"return this\")();t.exports=o},9326:(t,e,r)=>{var n=r(1769),i=r(2428),o=r(6449),a=r(361),s=r(294),u=r(7797);t.exports=function hasPath(t,e,r){for(var c=-1,f=(e=n(e,t)).length,l=!1;++c<f;){var h=u(e[c]);if(!(l=null!=t&&r(t,h)))break;t=t[h]}return l||++c!=f?l:!!(f=null==t?0:t.length)&&s(f)&&a(h,f)&&(o(t)||i(t))}},9350:t=>{var e=Object.prototype.toString;t.exports=function objectToString(t){return e.call(t)}},9367:(t,e,r)=>{\"use strict\";var n=r(2159),i=r(7136);t.exports=function(t,e){var r=t[e];return i(r)?void 0:n(r)}},9374:(t,e,r)=>{var n=r(4128),i=r(3805),o=r(4394),a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;t.exports=function toNumber(t){if(\"number\"==typeof t)return t;if(o(t))return NaN;if(i(t)){var e=\"function\"==typeof t.valueOf?t.valueOf():t;t=i(e)?e+\"\":e}if(\"string\"!=typeof t)return 0===t?t:+t;t=n(t);var r=s.test(t);return r||u.test(t)?c(t.slice(2),r?2:8):a.test(t)?NaN:+t}},9404:function(t){t.exports=function(){\"use strict\";var t=Array.prototype.slice;function createClass(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function Iterable(t){return isIterable(t)?t:Seq(t)}function KeyedIterable(t){return isKeyed(t)?t:KeyedSeq(t)}function IndexedIterable(t){return isIndexed(t)?t:IndexedSeq(t)}function SetIterable(t){return isIterable(t)&&!isAssociative(t)?t:SetSeq(t)}function isIterable(t){return!(!t||!t[e])}function isKeyed(t){return!(!t||!t[r])}function isIndexed(t){return!(!t||!t[n])}function isAssociative(t){return isKeyed(t)||isIndexed(t)}function isOrdered(t){return!(!t||!t[i])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var e=\"@@__IMMUTABLE_ITERABLE__@@\",r=\"@@__IMMUTABLE_KEYED__@@\",n=\"@@__IMMUTABLE_INDEXED__@@\",i=\"@@__IMMUTABLE_ORDERED__@@\",o=\"delete\",a=5,s=1<<a,u=s-1,c={},f={value:!1},l={value:!1};function MakeRef(t){return t.value=!1,t}function SetRef(t){t&&(t.value=!0)}function OwnerID(){}function arrCopy(t,e){e=e||0;for(var r=Math.max(0,t.length-e),n=new Array(r),i=0;i<r;i++)n[i]=t[i+e];return n}function ensureSize(t){return void 0===t.size&&(t.size=t.__iterate(returnTrue)),t.size}function wrapIndex(t,e){if(\"number\"!=typeof e){var r=e>>>0;if(\"\"+r!==e||4294967295===r)return NaN;e=r}return e<0?ensureSize(t)+e:e}function returnTrue(){return!0}function wholeSlice(t,e,r){return(0===t||void 0!==r&&t<=-r)&&(void 0===e||void 0!==r&&e>=r)}function resolveBegin(t,e){return resolveIndex(t,e,0)}function resolveEnd(t,e){return resolveIndex(t,e,e)}function resolveIndex(t,e,r){return void 0===t?r:t<0?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}var h=0,p=1,d=2,_=\"function\"==typeof Symbol&&Symbol.iterator,y=\"@@iterator\",m=_||y;function Iterator(t){this.next=t}function iteratorValue(t,e,r,n){var i=0===t?e:1===t?r:[e,r];return n?n.value=i:n={value:i,done:!1},n}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(t){return!!getIteratorFn(t)}function isIterator(t){return t&&\"function\"==typeof t.next}function getIterator(t){var e=getIteratorFn(t);return e&&e.call(t)}function getIteratorFn(t){var e=t&&(_&&t[_]||t[y]);if(\"function\"==typeof e)return e}function isArrayLike(t){return t&&\"number\"==typeof t.length}function Seq(t){return null==t?emptySequence():isIterable(t)?t.toSeq():seqFromValue(t)}function KeyedSeq(t){return null==t?emptySequence().toKeyedSeq():isIterable(t)?isKeyed(t)?t.toSeq():t.fromEntrySeq():keyedSeqFromValue(t)}function IndexedSeq(t){return null==t?emptySequence():isIterable(t)?isKeyed(t)?t.entrySeq():t.toIndexedSeq():indexedSeqFromValue(t)}function SetSeq(t){return(null==t?emptySequence():isIterable(t)?isKeyed(t)?t.entrySeq():t:indexedSeqFromValue(t)).toSetSeq()}Iterator.prototype.toString=function(){return\"[Iterator]\"},Iterator.KEYS=h,Iterator.VALUES=p,Iterator.ENTRIES=d,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[m]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString(\"Seq {\",\"}\")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(t,e){return seqIterate(this,t,e,!0)},Seq.prototype.__iterator=function(t,e){return seqIterator(this,t,e,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString(\"Seq [\",\"]\")},IndexedSeq.prototype.__iterate=function(t,e){return seqIterate(this,t,e,!1)},IndexedSeq.prototype.__iterator=function(t,e){return seqIterator(this,t,e,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var g,v,b,w=\"@@__IMMUTABLE_SEQ__@@\";function ArraySeq(t){this._array=t,this.size=t.length}function ObjectSeq(t){var e=Object.keys(t);this._object=t,this._keys=e,this.size=e.length}function IterableSeq(t){this._iterable=t,this.size=t.length||t.size}function IteratorSeq(t){this._iterator=t,this._iteratorCache=[]}function isSeq(t){return!(!t||!t[w])}function emptySequence(){return g||(g=new ArraySeq([]))}function keyedSeqFromValue(t){var e=Array.isArray(t)?new ArraySeq(t).fromEntrySeq():isIterator(t)?new IteratorSeq(t).fromEntrySeq():hasIterator(t)?new IterableSeq(t).fromEntrySeq():\"object\"==typeof t?new ObjectSeq(t):void 0;if(!e)throw new TypeError(\"Expected Array or iterable object of [k, v] entries, or keyed object: \"+t);return e}function indexedSeqFromValue(t){var e=maybeIndexedSeqFromValue(t);if(!e)throw new TypeError(\"Expected Array or iterable object of values: \"+t);return e}function seqFromValue(t){var e=maybeIndexedSeqFromValue(t)||\"object\"==typeof t&&new ObjectSeq(t);if(!e)throw new TypeError(\"Expected Array or iterable object of values, or keyed object: \"+t);return e}function maybeIndexedSeqFromValue(t){return isArrayLike(t)?new ArraySeq(t):isIterator(t)?new IteratorSeq(t):hasIterator(t)?new IterableSeq(t):void 0}function seqIterate(t,e,r,n){var i=t._cache;if(i){for(var o=i.length-1,a=0;a<=o;a++){var s=i[r?o-a:a];if(!1===e(s[1],n?s[0]:a,t))return a+1}return a}return t.__iterateUncached(e,r)}function seqIterator(t,e,r,n){var i=t._cache;if(i){var o=i.length-1,a=0;return new Iterator((function(){var t=i[r?o-a:a];return a++>o?iteratorDone():iteratorValue(e,n?t[0]:a-1,t[1])}))}return t.__iteratorUncached(e,r)}function fromJS(t,e){return e?fromJSWith(e,t,\"\",{\"\":t}):fromJSDefault(t)}function fromJSWith(t,e,r,n){return Array.isArray(e)?t.call(n,r,IndexedSeq(e).map((function(r,n){return fromJSWith(t,r,n,e)}))):isPlainObj(e)?t.call(n,r,KeyedSeq(e).map((function(r,n){return fromJSWith(t,r,n,e)}))):e}function fromJSDefault(t){return Array.isArray(t)?IndexedSeq(t).map(fromJSDefault).toList():isPlainObj(t)?KeyedSeq(t).map(fromJSDefault).toMap():t}function isPlainObj(t){return t&&(t.constructor===Object||void 0===t.constructor)}function is(t,e){if(t===e||t!=t&&e!=e)return!0;if(!t||!e)return!1;if(\"function\"==typeof t.valueOf&&\"function\"==typeof e.valueOf){if((t=t.valueOf())===(e=e.valueOf())||t!=t&&e!=e)return!0;if(!t||!e)return!1}return!(\"function\"!=typeof t.equals||\"function\"!=typeof e.equals||!t.equals(e))}function deepEqual(t,e){if(t===e)return!0;if(!isIterable(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||isKeyed(t)!==isKeyed(e)||isIndexed(t)!==isIndexed(e)||isOrdered(t)!==isOrdered(e))return!1;if(0===t.size&&0===e.size)return!0;var r=!isAssociative(t);if(isOrdered(t)){var n=t.entries();return e.every((function(t,e){var i=n.next().value;return i&&is(i[1],t)&&(r||is(i[0],e))}))&&n.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)\"function\"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var o=t;t=e,e=o}var a=!0,s=e.__iterate((function(e,n){if(r?!t.has(e):i?!is(e,t.get(n,c)):!is(t.get(n,c),e))return a=!1,!1}));return a&&t.size===s}function Repeat(t,e){if(!(this instanceof Repeat))return new Repeat(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(v)return v;v=this}}function invariant(t,e){if(!t)throw new Error(e)}function Range(t,e,r){if(!(this instanceof Range))return new Range(t,e,r);if(invariant(0!==r,\"Cannot step a Range by 0\"),t=t||0,void 0===e&&(e=1/0),r=void 0===r?1:Math.abs(r),e<t&&(r=-r),this._start=t,this._end=e,this._step=r,this.size=Math.max(0,Math.ceil((e-t)/r-1)+1),0===this.size){if(b)return b;b=this}}function Collection(){throw TypeError(\"Abstract\")}function KeyedCollection(){}function IndexedCollection(){}function SetCollection(){}Seq.prototype[w]=!0,createClass(ArraySeq,IndexedSeq),ArraySeq.prototype.get=function(t,e){return this.has(t)?this._array[wrapIndex(this,t)]:e},ArraySeq.prototype.__iterate=function(t,e){for(var r=this._array,n=r.length-1,i=0;i<=n;i++)if(!1===t(r[e?n-i:i],i,this))return i+1;return i},ArraySeq.prototype.__iterator=function(t,e){var r=this._array,n=r.length-1,i=0;return new Iterator((function(){return i>n?iteratorDone():iteratorValue(t,i,r[e?n-i++:i++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},ObjectSeq.prototype.has=function(t){return this._object.hasOwnProperty(t)},ObjectSeq.prototype.__iterate=function(t,e){for(var r=this._object,n=this._keys,i=n.length-1,o=0;o<=i;o++){var a=n[e?i-o:o];if(!1===t(r[a],a,this))return o+1}return o},ObjectSeq.prototype.__iterator=function(t,e){var r=this._object,n=this._keys,i=n.length-1,o=0;return new Iterator((function(){var a=n[e?i-o:o];return o++>i?iteratorDone():iteratorValue(t,a,r[a])}))},ObjectSeq.prototype[i]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);var r=getIterator(this._iterable),n=0;if(isIterator(r))for(var i;!(i=r.next()).done&&!1!==t(i.value,n++,this););return n},IterableSeq.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var r=getIterator(this._iterable);if(!isIterator(r))return new Iterator(iteratorDone);var n=0;return new Iterator((function(){var e=r.next();return e.done?e:iteratorValue(t,n++,e.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);for(var r,n=this._iterator,i=this._iteratorCache,o=0;o<i.length;)if(!1===t(i[o],o++,this))return o;for(;!(r=n.next()).done;){var a=r.value;if(i[o]=a,!1===t(a,o++,this))break}return o},IteratorSeq.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var r=this._iterator,n=this._iteratorCache,i=0;return new Iterator((function(){if(i>=n.length){var e=r.next();if(e.done)return e;n[i]=e.value}return iteratorValue(t,i,n[i++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?\"Repeat []\":\"Repeat [ \"+this._value+\" \"+this.size+\" times ]\"},Repeat.prototype.get=function(t,e){return this.has(t)?this._value:e},Repeat.prototype.includes=function(t){return is(this._value,t)},Repeat.prototype.slice=function(t,e){var r=this.size;return wholeSlice(t,e,r)?this:new Repeat(this._value,resolveEnd(e,r)-resolveBegin(t,r))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(t){return is(this._value,t)?0:-1},Repeat.prototype.lastIndexOf=function(t){return is(this._value,t)?this.size:-1},Repeat.prototype.__iterate=function(t,e){for(var r=0;r<this.size;r++)if(!1===t(this._value,r,this))return r+1;return r},Repeat.prototype.__iterator=function(t,e){var r=this,n=0;return new Iterator((function(){return n<r.size?iteratorValue(t,n++,r._value):iteratorDone()}))},Repeat.prototype.equals=function(t){return t instanceof Repeat?is(this._value,t._value):deepEqual(t)},createClass(Range,IndexedSeq),Range.prototype.toString=function(){return 0===this.size?\"Range []\":\"Range [ \"+this._start+\"...\"+this._end+(1!==this._step?\" by \"+this._step:\"\")+\" ]\"},Range.prototype.get=function(t,e){return this.has(t)?this._start+wrapIndex(this,t)*this._step:e},Range.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&e<this.size&&e===Math.floor(e)},Range.prototype.slice=function(t,e){return wholeSlice(t,e,this.size)?this:(t=resolveBegin(t,this.size),(e=resolveEnd(e,this.size))<=t?new Range(0,0):new Range(this.get(t,this._end),this.get(e,this._end),this._step))},Range.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step==0){var r=e/this._step;if(r>=0&&r<this.size)return r}return-1},Range.prototype.lastIndexOf=function(t){return this.indexOf(t)},Range.prototype.__iterate=function(t,e){for(var r=this.size-1,n=this._step,i=e?this._start+r*n:this._start,o=0;o<=r;o++){if(!1===t(i,o,this))return o+1;i+=e?-n:n}return o},Range.prototype.__iterator=function(t,e){var r=this.size-1,n=this._step,i=e?this._start+r*n:this._start,o=0;return new Iterator((function(){var a=i;return i+=e?-n:n,o>r?iteratorDone():iteratorValue(t,o++,a)}))},Range.prototype.equals=function(t){return t instanceof Range?this._start===t._start&&this._end===t._end&&this._step===t._step:deepEqual(this,t)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var I=\"function\"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(t,e){var r=65535&(t|=0),n=65535&(e|=0);return r*n+((t>>>16)*n+r*(e>>>16)<<16>>>0)|0};function smi(t){return t>>>1&1073741824|3221225471&t}function hash(t){if(!1===t||null==t)return 0;if(\"function\"==typeof t.valueOf&&(!1===(t=t.valueOf())||null==t))return 0;if(!0===t)return 1;var e=typeof t;if(\"number\"===e){if(t!=t||t===1/0)return 0;var r=0|t;for(r!==t&&(r^=4294967295*t);t>4294967295;)r^=t/=4294967295;return smi(r)}if(\"string\"===e)return t.length>j?cachedHashString(t):hashString(t);if(\"function\"==typeof t.hashCode)return t.hashCode();if(\"object\"===e)return hashJSObj(t);if(\"function\"==typeof t.toString)return hashString(t.toString());throw new Error(\"Value type \"+e+\" cannot be hashed.\")}function cachedHashString(t){var e=D[t];return void 0===e&&(e=hashString(t),P===z&&(P=0,D={}),P++,D[t]=e),e}function hashString(t){for(var e=0,r=0;r<t.length;r++)e=31*e+t.charCodeAt(r)|0;return smi(e)}function hashJSObj(t){var e;if(C&&void 0!==(e=k.get(t)))return e;if(void 0!==(e=t[L]))return e;if(!B){if(void 0!==(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[L]))return e;if(void 0!==(e=getIENodeHash(t)))return e}if(e=++q,1073741824&q&&(q=0),C)k.set(t,e);else{if(void 0!==x&&!1===x(t))throw new Error(\"Non-extensible objects are not allowed as keys.\");if(B)Object.defineProperty(t,L,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[L]=e;else{if(void 0===t.nodeType)throw new Error(\"Unable to set a non-enumerable property on object.\");t[L]=e}}return e}var x=Object.isExtensible,B=function(){try{return Object.defineProperty({},\"@\",{}),!0}catch(t){return!1}}();function getIENodeHash(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}var k,C=\"function\"==typeof WeakMap;C&&(k=new WeakMap);var q=0,L=\"__immutablehash__\";\"function\"==typeof Symbol&&(L=Symbol(L));var j=16,z=255,P=0,D={};function assertNotInfinite(t){invariant(t!==1/0,\"Cannot perform this action with an infinite size.\")}function Map(t){return null==t?emptyMap():isMap(t)&&!isOrdered(t)?t:emptyMap().withMutations((function(e){var r=KeyedIterable(t);assertNotInfinite(r.size),r.forEach((function(t,r){return e.set(r,t)}))}))}function isMap(t){return!(!t||!t[W])}createClass(Map,KeyedCollection),Map.of=function(){var e=t.call(arguments,0);return emptyMap().withMutations((function(t){for(var r=0;r<e.length;r+=2){if(r+1>=e.length)throw new Error(\"Missing value for key: \"+e[r]);t.set(e[r],e[r+1])}}))},Map.prototype.toString=function(){return this.__toString(\"Map {\",\"}\")},Map.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},Map.prototype.set=function(t,e){return updateMap(this,t,e)},Map.prototype.setIn=function(t,e){return this.updateIn(t,c,(function(){return e}))},Map.prototype.remove=function(t){return updateMap(this,t,c)},Map.prototype.deleteIn=function(t){return this.updateIn(t,(function(){return c}))},Map.prototype.update=function(t,e,r){return 1===arguments.length?t(this):this.updateIn([t],e,r)},Map.prototype.updateIn=function(t,e,r){r||(r=e,e=void 0);var n=updateInDeepMap(this,forceIterator(t),e,r);return n===c?void 0:n},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(e){return mergeIntoMapWith(this,e,t.call(arguments,1))},Map.prototype.mergeIn=function(e){var r=t.call(arguments,1);return this.updateIn(e,emptyMap(),(function(t){return\"function\"==typeof t.merge?t.merge.apply(t,r):r[r.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(e){var r=t.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(e),r)},Map.prototype.mergeDeepIn=function(e){var r=t.call(arguments,1);return this.updateIn(e,emptyMap(),(function(t){return\"function\"==typeof t.mergeDeep?t.mergeDeep.apply(t,r):r[r.length-1]}))},Map.prototype.sort=function(t){return OrderedMap(sortFactory(this,t))},Map.prototype.sortBy=function(t,e){return OrderedMap(sortFactory(this,e,t))},Map.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(t,e){return new MapIterator(this,t,e)},Map.prototype.__iterate=function(t,e){var r=this,n=0;return this._root&&this._root.iterate((function(e){return n++,t(e[1],e[0],r)}),e),n},Map.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?makeMap(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Map.isMap=isMap;var U,W=\"@@__IMMUTABLE_MAP__@@\",V=Map.prototype;function ArrayMapNode(t,e){this.ownerID=t,this.entries=e}function BitmapIndexedNode(t,e,r){this.ownerID=t,this.bitmap=e,this.nodes=r}function HashArrayMapNode(t,e,r){this.ownerID=t,this.count=e,this.nodes=r}function HashCollisionNode(t,e,r){this.ownerID=t,this.keyHash=e,this.entries=r}function ValueNode(t,e,r){this.ownerID=t,this.keyHash=e,this.entry=r}function MapIterator(t,e,r){this._type=e,this._reverse=r,this._stack=t._root&&mapIteratorFrame(t._root)}function mapIteratorValue(t,e){return iteratorValue(t,e[0],e[1])}function mapIteratorFrame(t,e){return{node:t,index:0,__prev:e}}function makeMap(t,e,r,n){var i=Object.create(V);return i.size=t,i._root=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function emptyMap(){return U||(U=makeMap(0))}function updateMap(t,e,r){var n,i;if(t._root){var o=MakeRef(f),a=MakeRef(l);if(n=updateNode(t._root,t.__ownerID,0,void 0,e,r,o,a),!a.value)return t;i=t.size+(o.value?r===c?-1:1:0)}else{if(r===c)return t;i=1,n=new ArrayMapNode(t.__ownerID,[[e,r]])}return t.__ownerID?(t.size=i,t._root=n,t.__hash=void 0,t.__altered=!0,t):n?makeMap(i,n):emptyMap()}function updateNode(t,e,r,n,i,o,a,s){return t?t.update(e,r,n,i,o,a,s):o===c?t:(SetRef(s),SetRef(a),new ValueNode(e,n,[i,o]))}function isLeafNode(t){return t.constructor===ValueNode||t.constructor===HashCollisionNode}function mergeIntoNode(t,e,r,n,i){if(t.keyHash===n)return new HashCollisionNode(e,n,[t.entry,i]);var o,s=(0===r?t.keyHash:t.keyHash>>>r)&u,c=(0===r?n:n>>>r)&u;return new BitmapIndexedNode(e,1<<s|1<<c,s===c?[mergeIntoNode(t,e,r+a,n,i)]:(o=new ValueNode(e,n,i),s<c?[t,o]:[o,t]))}function createNodes(t,e,r,n){t||(t=new OwnerID);for(var i=new ValueNode(t,hash(r),[r,n]),o=0;o<e.length;o++){var a=e[o];i=i.update(t,0,void 0,a[0],a[1])}return i}function packNodes(t,e,r,n){for(var i=0,o=0,a=new Array(r),s=0,u=1,c=e.length;s<c;s++,u<<=1){var f=e[s];void 0!==f&&s!==n&&(i|=u,a[o++]=f)}return new BitmapIndexedNode(t,i,a)}function expandNodes(t,e,r,n,i){for(var o=0,a=new Array(s),u=0;0!==r;u++,r>>>=1)a[u]=1&r?e[o++]:void 0;return a[n]=i,new HashArrayMapNode(t,o+1,a)}function mergeIntoMapWith(t,e,r){for(var n=[],i=0;i<r.length;i++){var o=r[i],a=KeyedIterable(o);isIterable(o)||(a=a.map((function(t){return fromJS(t)}))),n.push(a)}return mergeIntoCollectionWith(t,e,n)}function deepMerger(t,e,r){return t&&t.mergeDeep&&isIterable(e)?t.mergeDeep(e):is(t,e)?t:e}function deepMergerWith(t){return function(e,r,n){if(e&&e.mergeDeepWith&&isIterable(r))return e.mergeDeepWith(t,r);var i=t(e,r,n);return is(e,i)?e:i}}function mergeIntoCollectionWith(t,e,r){return 0===(r=r.filter((function(t){return 0!==t.size}))).length?t:0!==t.size||t.__ownerID||1!==r.length?t.withMutations((function(t){for(var n=e?function(r,n){t.update(n,c,(function(t){return t===c?r:e(t,r,n)}))}:function(e,r){t.set(r,e)},i=0;i<r.length;i++)r[i].forEach(n)})):t.constructor(r[0])}function updateInDeepMap(t,e,r,n){var i=t===c,o=e.next();if(o.done){var a=i?r:t,s=n(a);return s===a?t:s}invariant(i||t&&t.set,\"invalid keyPath\");var u=o.value,f=i?c:t.get(u,c),l=updateInDeepMap(f,e,r,n);return l===f?t:l===c?t.remove(u):(i?emptyMap():t).set(u,l)}function popCount(t){return t=(t=(858993459&(t-=t>>1&1431655765))+(t>>2&858993459))+(t>>4)&252645135,t+=t>>8,127&(t+=t>>16)}function setIn(t,e,r,n){var i=n?t:arrCopy(t);return i[e]=r,i}function spliceIn(t,e,r,n){var i=t.length+1;if(n&&e+1===i)return t[e]=r,t;for(var o=new Array(i),a=0,s=0;s<i;s++)s===e?(o[s]=r,a=-1):o[s]=t[s+a];return o}function spliceOut(t,e,r){var n=t.length-1;if(r&&e===n)return t.pop(),t;for(var i=new Array(n),o=0,a=0;a<n;a++)a===e&&(o=1),i[a]=t[a+o];return i}V[W]=!0,V[o]=V.remove,V.removeIn=V.deleteIn,ArrayMapNode.prototype.get=function(t,e,r,n){for(var i=this.entries,o=0,a=i.length;o<a;o++)if(is(r,i[o][0]))return i[o][1];return n},ArrayMapNode.prototype.update=function(t,e,r,n,i,o,a){for(var s=i===c,u=this.entries,f=0,l=u.length;f<l&&!is(n,u[f][0]);f++);var h=f<l;if(h?u[f][1]===i:s)return this;if(SetRef(a),(s||!h)&&SetRef(o),!s||1!==u.length){if(!h&&!s&&u.length>=K)return createNodes(t,u,n,i);var p=t&&t===this.ownerID,d=p?u:arrCopy(u);return h?s?f===l-1?d.pop():d[f]=d.pop():d[f]=[n,i]:d.push([n,i]),p?(this.entries=d,this):new ArrayMapNode(t,d)}},BitmapIndexedNode.prototype.get=function(t,e,r,n){void 0===e&&(e=hash(r));var i=1<<((0===t?e:e>>>t)&u),o=this.bitmap;return o&i?this.nodes[popCount(o&i-1)].get(t+a,e,r,n):n},BitmapIndexedNode.prototype.update=function(t,e,r,n,i,o,s){void 0===r&&(r=hash(n));var f=(0===e?r:r>>>e)&u,l=1<<f,h=this.bitmap,p=!!(h&l);if(!p&&i===c)return this;var d=popCount(h&l-1),_=this.nodes,y=p?_[d]:void 0,m=updateNode(y,t,e+a,r,n,i,o,s);if(m===y)return this;if(!p&&m&&_.length>=$)return expandNodes(t,_,h,f,m);if(p&&!m&&2===_.length&&isLeafNode(_[1^d]))return _[1^d];if(p&&m&&1===_.length&&isLeafNode(m))return m;var g=t&&t===this.ownerID,v=p?m?h:h^l:h|l,b=p?m?setIn(_,d,m,g):spliceOut(_,d,g):spliceIn(_,d,m,g);return g?(this.bitmap=v,this.nodes=b,this):new BitmapIndexedNode(t,v,b)},HashArrayMapNode.prototype.get=function(t,e,r,n){void 0===e&&(e=hash(r));var i=(0===t?e:e>>>t)&u,o=this.nodes[i];return o?o.get(t+a,e,r,n):n},HashArrayMapNode.prototype.update=function(t,e,r,n,i,o,s){void 0===r&&(r=hash(n));var f=(0===e?r:r>>>e)&u,l=i===c,h=this.nodes,p=h[f];if(l&&!p)return this;var d=updateNode(p,t,e+a,r,n,i,o,s);if(d===p)return this;var _=this.count;if(p){if(!d&&--_<H)return packNodes(t,h,_,f)}else _++;var y=t&&t===this.ownerID,m=setIn(h,f,d,y);return y?(this.count=_,this.nodes=m,this):new HashArrayMapNode(t,_,m)},HashCollisionNode.prototype.get=function(t,e,r,n){for(var i=this.entries,o=0,a=i.length;o<a;o++)if(is(r,i[o][0]))return i[o][1];return n},HashCollisionNode.prototype.update=function(t,e,r,n,i,o,a){void 0===r&&(r=hash(n));var s=i===c;if(r!==this.keyHash)return s?this:(SetRef(a),SetRef(o),mergeIntoNode(this,t,e,r,[n,i]));for(var u=this.entries,f=0,l=u.length;f<l&&!is(n,u[f][0]);f++);var h=f<l;if(h?u[f][1]===i:s)return this;if(SetRef(a),(s||!h)&&SetRef(o),s&&2===l)return new ValueNode(t,this.keyHash,u[1^f]);var p=t&&t===this.ownerID,d=p?u:arrCopy(u);return h?s?f===l-1?d.pop():d[f]=d.pop():d[f]=[n,i]:d.push([n,i]),p?(this.entries=d,this):new HashCollisionNode(t,this.keyHash,d)},ValueNode.prototype.get=function(t,e,r,n){return is(r,this.entry[0])?this.entry[1]:n},ValueNode.prototype.update=function(t,e,r,n,i,o,a){var s=i===c,u=is(n,this.entry[0]);return(u?i===this.entry[1]:s)?this:(SetRef(a),s?void SetRef(o):u?t&&t===this.ownerID?(this.entry[1]=i,this):new ValueNode(t,this.keyHash,[n,i]):(SetRef(o),mergeIntoNode(this,t,e,hash(n),[n,i])))},ArrayMapNode.prototype.iterate=HashCollisionNode.prototype.iterate=function(t,e){for(var r=this.entries,n=0,i=r.length-1;n<=i;n++)if(!1===t(r[e?i-n:n]))return!1},BitmapIndexedNode.prototype.iterate=HashArrayMapNode.prototype.iterate=function(t,e){for(var r=this.nodes,n=0,i=r.length-1;n<=i;n++){var o=r[e?i-n:n];if(o&&!1===o.iterate(t,e))return!1}},ValueNode.prototype.iterate=function(t,e){return t(this.entry)},createClass(MapIterator,Iterator),MapIterator.prototype.next=function(){for(var t=this._type,e=this._stack;e;){var r,n=e.node,i=e.index++;if(n.entry){if(0===i)return mapIteratorValue(t,n.entry)}else if(n.entries){if(i<=(r=n.entries.length-1))return mapIteratorValue(t,n.entries[this._reverse?r-i:i])}else if(i<=(r=n.nodes.length-1)){var o=n.nodes[this._reverse?r-i:i];if(o){if(o.entry)return mapIteratorValue(t,o.entry);e=this._stack=mapIteratorFrame(o,e)}continue}e=this._stack=this._stack.__prev}return iteratorDone()};var K=s/4,$=s/2,H=s/4;function List(t){var e=emptyList();if(null==t)return e;if(isList(t))return t;var r=IndexedIterable(t),n=r.size;return 0===n?e:(assertNotInfinite(n),n>0&&n<s?makeList(0,n,a,null,new VNode(r.toArray())):e.withMutations((function(t){t.setSize(n),r.forEach((function(e,r){return t.set(r,e)}))})))}function isList(t){return!(!t||!t[Y])}createClass(List,IndexedCollection),List.of=function(){return this(arguments)},List.prototype.toString=function(){return this.__toString(\"List [\",\"]\")},List.prototype.get=function(t,e){if((t=wrapIndex(this,t))>=0&&t<this.size){var r=listNodeFor(this,t+=this._origin);return r&&r.array[t&u]}return e},List.prototype.set=function(t,e){return updateList(this,t,e)},List.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},List.prototype.insert=function(t,e){return this.splice(t,0,e)},List.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=a,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):emptyList()},List.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations((function(r){setListBounds(r,0,e+t.length);for(var n=0;n<t.length;n++)r.set(e+n,t[n])}))},List.prototype.pop=function(){return setListBounds(this,0,-1)},List.prototype.unshift=function(){var t=arguments;return this.withMutations((function(e){setListBounds(e,-t.length);for(var r=0;r<t.length;r++)e.set(r,t[r])}))},List.prototype.shift=function(){return setListBounds(this,1)},List.prototype.merge=function(){return mergeIntoListWith(this,void 0,arguments)},List.prototype.mergeWith=function(e){return mergeIntoListWith(this,e,t.call(arguments,1))},List.prototype.mergeDeep=function(){return mergeIntoListWith(this,deepMerger,arguments)},List.prototype.mergeDeepWith=function(e){var r=t.call(arguments,1);return mergeIntoListWith(this,deepMergerWith(e),r)},List.prototype.setSize=function(t){return setListBounds(this,0,t)},List.prototype.slice=function(t,e){var r=this.size;return wholeSlice(t,e,r)?this:setListBounds(this,resolveBegin(t,r),resolveEnd(e,r))},List.prototype.__iterator=function(t,e){var r=0,n=iterateList(this,e);return new Iterator((function(){var e=n();return e===et?iteratorDone():iteratorValue(t,r++,e)}))},List.prototype.__iterate=function(t,e){for(var r,n=0,i=iterateList(this,e);(r=i())!==et&&!1!==t(r,n++,this););return n},List.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?makeList(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},List.isList=isList;var Y=\"@@__IMMUTABLE_LIST__@@\",Z=List.prototype;function VNode(t,e){this.array=t,this.ownerID=e}Z[Y]=!0,Z[o]=Z.remove,Z.setIn=V.setIn,Z.deleteIn=Z.removeIn=V.removeIn,Z.update=V.update,Z.updateIn=V.updateIn,Z.mergeIn=V.mergeIn,Z.mergeDeepIn=V.mergeDeepIn,Z.withMutations=V.withMutations,Z.asMutable=V.asMutable,Z.asImmutable=V.asImmutable,Z.wasAltered=V.wasAltered,VNode.prototype.removeBefore=function(t,e,r){if(r===e?1<<e:0===this.array.length)return this;var n=r>>>e&u;if(n>=this.array.length)return new VNode([],t);var i,o=0===n;if(e>0){var s=this.array[n];if((i=s&&s.removeBefore(t,e-a,r))===s&&o)return this}if(o&&!i)return this;var c=editableVNode(this,t);if(!o)for(var f=0;f<n;f++)c.array[f]=void 0;return i&&(c.array[n]=i),c},VNode.prototype.removeAfter=function(t,e,r){if(r===(e?1<<e:0)||0===this.array.length)return this;var n,i=r-1>>>e&u;if(i>=this.array.length)return this;if(e>0){var o=this.array[i];if((n=o&&o.removeAfter(t,e-a,r))===o&&i===this.array.length-1)return this}var s=editableVNode(this,t);return s.array.splice(i+1),n&&(s.array[i]=n),s};var J,tt,et={};function iterateList(t,e){var r=t._origin,n=t._capacity,i=getTailOffset(n),o=t._tail;return iterateNodeOrLeaf(t._root,t._level,0);function iterateNodeOrLeaf(t,e,r){return 0===e?iterateLeaf(t,r):iterateNode(t,e,r)}function iterateLeaf(t,a){var u=a===i?o&&o.array:t&&t.array,c=a>r?0:r-a,f=n-a;return f>s&&(f=s),function(){if(c===f)return et;var t=e?--f:c++;return u&&u[t]}}function iterateNode(t,i,o){var u,c=t&&t.array,f=o>r?0:r-o>>i,l=1+(n-o>>i);return l>s&&(l=s),function(){for(;;){if(u){var t=u();if(t!==et)return t;u=null}if(f===l)return et;var r=e?--l:f++;u=iterateNodeOrLeaf(c&&c[r],i-a,o+(r<<i))}}}}function makeList(t,e,r,n,i,o,a){var s=Object.create(Z);return s.size=e-t,s._origin=t,s._capacity=e,s._level=r,s._root=n,s._tail=i,s.__ownerID=o,s.__hash=a,s.__altered=!1,s}function emptyList(){return J||(J=makeList(0,0,a))}function updateList(t,e,r){if((e=wrapIndex(t,e))!=e)return t;if(e>=t.size||e<0)return t.withMutations((function(t){e<0?setListBounds(t,e).set(0,r):setListBounds(t,0,e+1).set(e,r)}));e+=t._origin;var n=t._tail,i=t._root,o=MakeRef(l);return e>=getTailOffset(t._capacity)?n=updateVNode(n,t.__ownerID,0,e,r,o):i=updateVNode(i,t.__ownerID,t._level,e,r,o),o.value?t.__ownerID?(t._root=i,t._tail=n,t.__hash=void 0,t.__altered=!0,t):makeList(t._origin,t._capacity,t._level,i,n):t}function updateVNode(t,e,r,n,i,o){var s,c=n>>>r&u,f=t&&c<t.array.length;if(!f&&void 0===i)return t;if(r>0){var l=t&&t.array[c],h=updateVNode(l,e,r-a,n,i,o);return h===l?t:((s=editableVNode(t,e)).array[c]=h,s)}return f&&t.array[c]===i?t:(SetRef(o),s=editableVNode(t,e),void 0===i&&c===s.array.length-1?s.array.pop():s.array[c]=i,s)}function editableVNode(t,e){return e&&t&&e===t.ownerID?t:new VNode(t?t.array.slice():[],e)}function listNodeFor(t,e){if(e>=getTailOffset(t._capacity))return t._tail;if(e<1<<t._level+a){for(var r=t._root,n=t._level;r&&n>0;)r=r.array[e>>>n&u],n-=a;return r}}function setListBounds(t,e,r){void 0!==e&&(e|=0),void 0!==r&&(r|=0);var n=t.__ownerID||new OwnerID,i=t._origin,o=t._capacity,s=i+e,c=void 0===r?o:r<0?o+r:i+r;if(s===i&&c===o)return t;if(s>=c)return t.clear();for(var f=t._level,l=t._root,h=0;s+h<0;)l=new VNode(l&&l.array.length?[void 0,l]:[],n),h+=1<<(f+=a);h&&(s+=h,i+=h,c+=h,o+=h);for(var p=getTailOffset(o),d=getTailOffset(c);d>=1<<f+a;)l=new VNode(l&&l.array.length?[l]:[],n),f+=a;var _=t._tail,y=d<p?listNodeFor(t,c-1):d>p?new VNode([],n):_;if(_&&d>p&&s<o&&_.array.length){for(var m=l=editableVNode(l,n),g=f;g>a;g-=a){var v=p>>>g&u;m=m.array[v]=editableVNode(m.array[v],n)}m.array[p>>>a&u]=_}if(c<o&&(y=y&&y.removeAfter(n,0,c)),s>=d)s-=d,c-=d,f=a,l=null,y=y&&y.removeBefore(n,0,s);else if(s>i||d<p){for(h=0;l;){var b=s>>>f&u;if(b!==d>>>f&u)break;b&&(h+=(1<<f)*b),f-=a,l=l.array[b]}l&&s>i&&(l=l.removeBefore(n,f,s-h)),l&&d<p&&(l=l.removeAfter(n,f,d-h)),h&&(s-=h,c-=h)}return t.__ownerID?(t.size=c-s,t._origin=s,t._capacity=c,t._level=f,t._root=l,t._tail=y,t.__hash=void 0,t.__altered=!0,t):makeList(s,c,f,l,y)}function mergeIntoListWith(t,e,r){for(var n=[],i=0,o=0;o<r.length;o++){var a=r[o],s=IndexedIterable(a);s.size>i&&(i=s.size),isIterable(a)||(s=s.map((function(t){return fromJS(t)}))),n.push(s)}return i>t.size&&(t=t.setSize(i)),mergeIntoCollectionWith(t,e,n)}function getTailOffset(t){return t<s?0:t-1>>>a<<a}function OrderedMap(t){return null==t?emptyOrderedMap():isOrderedMap(t)?t:emptyOrderedMap().withMutations((function(e){var r=KeyedIterable(t);assertNotInfinite(r.size),r.forEach((function(t,r){return e.set(r,t)}))}))}function isOrderedMap(t){return isMap(t)&&isOrdered(t)}function makeOrderedMap(t,e,r,n){var i=Object.create(OrderedMap.prototype);return i.size=t?t.size:0,i._map=t,i._list=e,i.__ownerID=r,i.__hash=n,i}function emptyOrderedMap(){return tt||(tt=makeOrderedMap(emptyMap(),emptyList()))}function updateOrderedMap(t,e,r){var n,i,o=t._map,a=t._list,u=o.get(e),f=void 0!==u;if(r===c){if(!f)return t;a.size>=s&&a.size>=2*o.size?(n=(i=a.filter((function(t,e){return void 0!==t&&u!==e}))).toKeyedSeq().map((function(t){return t[0]})).flip().toMap(),t.__ownerID&&(n.__ownerID=i.__ownerID=t.__ownerID)):(n=o.remove(e),i=u===a.size-1?a.pop():a.set(u,void 0))}else if(f){if(r===a.get(u)[1])return t;n=o,i=a.set(u,[e,r])}else n=o.set(e,a.size),i=a.set(a.size,[e,r]);return t.__ownerID?(t.size=n.size,t._map=n,t._list=i,t.__hash=void 0,t):makeOrderedMap(n,i)}function ToKeyedSequence(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ToIndexedSequence(t){this._iter=t,this.size=t.size}function ToSetSequence(t){this._iter=t,this.size=t.size}function FromEntriesSequence(t){this._iter=t,this.size=t.size}function flipFactory(t){var e=makeSequence(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this);return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=cacheResultThrough,e.__iterateUncached=function(e,r){var n=this;return t.__iterate((function(t,r){return!1!==e(r,t,n)}),r)},e.__iteratorUncached=function(e,r){if(e===d){var n=t.__iterator(e,r);return new Iterator((function(){var t=n.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t}))}return t.__iterator(e===p?h:p,r)},e}function mapFactory(t,e,r){var n=makeSequence(t);return n.size=t.size,n.has=function(e){return t.has(e)},n.get=function(n,i){var o=t.get(n,c);return o===c?i:e.call(r,o,n,t)},n.__iterateUncached=function(n,i){var o=this;return t.__iterate((function(t,i,a){return!1!==n(e.call(r,t,i,a),i,o)}),i)},n.__iteratorUncached=function(n,i){var o=t.__iterator(d,i);return new Iterator((function(){var i=o.next();if(i.done)return i;var a=i.value,s=a[0];return iteratorValue(n,s,e.call(r,a[1],s,t),i)}))},n}function reverseFactory(t,e){var r=makeSequence(t);return r._iter=t,r.size=t.size,r.reverse=function(){return t},t.flip&&(r.flip=function(){var e=flipFactory(t);return e.reverse=function(){return t.flip()},e}),r.get=function(r,n){return t.get(e?r:-1-r,n)},r.has=function(r){return t.has(e?r:-1-r)},r.includes=function(e){return t.includes(e)},r.cacheResult=cacheResultThrough,r.__iterate=function(e,r){var n=this;return t.__iterate((function(t,r){return e(t,r,n)}),!r)},r.__iterator=function(e,r){return t.__iterator(e,!r)},r}function filterFactory(t,e,r,n){var i=makeSequence(t);return n&&(i.has=function(n){var i=t.get(n,c);return i!==c&&!!e.call(r,i,n,t)},i.get=function(n,i){var o=t.get(n,c);return o!==c&&e.call(r,o,n,t)?o:i}),i.__iterateUncached=function(i,o){var a=this,s=0;return t.__iterate((function(t,o,u){if(e.call(r,t,o,u))return s++,i(t,n?o:s-1,a)}),o),s},i.__iteratorUncached=function(i,o){var a=t.__iterator(d,o),s=0;return new Iterator((function(){for(;;){var o=a.next();if(o.done)return o;var u=o.value,c=u[0],f=u[1];if(e.call(r,f,c,t))return iteratorValue(i,n?c:s++,f,o)}}))},i}function countByFactory(t,e,r){var n=Map().asMutable();return t.__iterate((function(i,o){n.update(e.call(r,i,o,t),0,(function(t){return t+1}))})),n.asImmutable()}function groupByFactory(t,e,r){var n=isKeyed(t),i=(isOrdered(t)?OrderedMap():Map()).asMutable();t.__iterate((function(o,a){i.update(e.call(r,o,a,t),(function(t){return(t=t||[]).push(n?[a,o]:o),t}))}));var o=iterableClass(t);return i.map((function(e){return reify(t,o(e))}))}function sliceFactory(t,e,r,n){var i=t.size;if(void 0!==e&&(e|=0),void 0!==r&&(r===1/0?r=i:r|=0),wholeSlice(e,r,i))return t;var o=resolveBegin(e,i),a=resolveEnd(r,i);if(o!=o||a!=a)return sliceFactory(t.toSeq().cacheResult(),e,r,n);var s,u=a-o;u==u&&(s=u<0?0:u);var c=makeSequence(t);return c.size=0===s?s:t.size&&s||void 0,!n&&isSeq(t)&&s>=0&&(c.get=function(e,r){return(e=wrapIndex(this,e))>=0&&e<s?t.get(e+o,r):r}),c.__iterateUncached=function(e,r){var i=this;if(0===s)return 0;if(r)return this.cacheResult().__iterate(e,r);var a=0,u=!0,c=0;return t.__iterate((function(t,r){if(!u||!(u=a++<o))return c++,!1!==e(t,n?r:c-1,i)&&c!==s})),c},c.__iteratorUncached=function(e,r){if(0!==s&&r)return this.cacheResult().__iterator(e,r);var i=0!==s&&t.__iterator(e,r),a=0,u=0;return new Iterator((function(){for(;a++<o;)i.next();if(++u>s)return iteratorDone();var t=i.next();return n||e===p?t:iteratorValue(e,u-1,e===h?void 0:t.value[1],t)}))},c}function takeWhileFactory(t,e,r){var n=makeSequence(t);return n.__iterateUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterate(n,i);var a=0;return t.__iterate((function(t,i,s){return e.call(r,t,i,s)&&++a&&n(t,i,o)})),a},n.__iteratorUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterator(n,i);var a=t.__iterator(d,i),s=!0;return new Iterator((function(){if(!s)return iteratorDone();var t=a.next();if(t.done)return t;var i=t.value,u=i[0],c=i[1];return e.call(r,c,u,o)?n===d?t:iteratorValue(n,u,c,t):(s=!1,iteratorDone())}))},n}function skipWhileFactory(t,e,r,n){var i=makeSequence(t);return i.__iterateUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,u=0;return t.__iterate((function(t,o,c){if(!s||!(s=e.call(r,t,o,c)))return u++,i(t,n?o:u-1,a)})),u},i.__iteratorUncached=function(i,o){var a=this;if(o)return this.cacheResult().__iterator(i,o);var s=t.__iterator(d,o),u=!0,c=0;return new Iterator((function(){var t,o,f;do{if((t=s.next()).done)return n||i===p?t:iteratorValue(i,c++,i===h?void 0:t.value[1],t);var l=t.value;o=l[0],f=l[1],u&&(u=e.call(r,f,o,a))}while(u);return i===d?t:iteratorValue(i,o,f,t)}))},i}function concatFactory(t,e){var r=isKeyed(t),n=[t].concat(e).map((function(t){return isIterable(t)?r&&(t=KeyedIterable(t)):t=r?keyedSeqFromValue(t):indexedSeqFromValue(Array.isArray(t)?t:[t]),t})).filter((function(t){return 0!==t.size}));if(0===n.length)return t;if(1===n.length){var i=n[0];if(i===t||r&&isKeyed(i)||isIndexed(t)&&isIndexed(i))return i}var o=new ArraySeq(n);return r?o=o.toKeyedSeq():isIndexed(t)||(o=o.toSetSeq()),(o=o.flatten(!0)).size=n.reduce((function(t,e){if(void 0!==t){var r=e.size;if(void 0!==r)return t+r}}),0),o}function flattenFactory(t,e,r){var n=makeSequence(t);return n.__iterateUncached=function(n,i){var o=0,a=!1;function flatDeep(t,s){var u=this;t.__iterate((function(t,i){return(!e||s<e)&&isIterable(t)?flatDeep(t,s+1):!1===n(t,r?i:o++,u)&&(a=!0),!a}),i)}return flatDeep(t,0),o},n.__iteratorUncached=function(n,i){var o=t.__iterator(n,i),a=[],s=0;return new Iterator((function(){for(;o;){var t=o.next();if(!1===t.done){var u=t.value;if(n===d&&(u=u[1]),e&&!(a.length<e)||!isIterable(u))return r?t:iteratorValue(n,s++,u,t);a.push(o),o=u.__iterator(n,i)}else o=a.pop()}return iteratorDone()}))},n}function flatMapFactory(t,e,r){var n=iterableClass(t);return t.toSeq().map((function(i,o){return n(e.call(r,i,o,t))})).flatten(!0)}function interposeFactory(t,e){var r=makeSequence(t);return r.size=t.size&&2*t.size-1,r.__iterateUncached=function(r,n){var i=this,o=0;return t.__iterate((function(t,n){return(!o||!1!==r(e,o++,i))&&!1!==r(t,o++,i)}),n),o},r.__iteratorUncached=function(r,n){var i,o=t.__iterator(p,n),a=0;return new Iterator((function(){return(!i||a%2)&&(i=o.next()).done?i:a%2?iteratorValue(r,a++,e):iteratorValue(r,a++,i.value,i)}))},r}function sortFactory(t,e,r){e||(e=defaultComparator);var n=isKeyed(t),i=0,o=t.toSeq().map((function(e,n){return[n,e,i++,r?r(e,n,t):e]})).toArray();return o.sort((function(t,r){return e(t[3],r[3])||t[2]-r[2]})).forEach(n?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),n?KeyedSeq(o):isIndexed(t)?IndexedSeq(o):SetSeq(o)}function maxFactory(t,e,r){if(e||(e=defaultComparator),r){var n=t.toSeq().map((function(e,n){return[e,r(e,n,t)]})).reduce((function(t,r){return maxCompare(e,t[1],r[1])?r:t}));return n&&n[0]}return t.reduce((function(t,r){return maxCompare(e,t,r)?r:t}))}function maxCompare(t,e,r){var n=t(r,e);return 0===n&&r!==e&&(null==r||r!=r)||n>0}function zipWithFactory(t,e,r){var n=makeSequence(t);return n.size=new ArraySeq(r).map((function(t){return t.size})).min(),n.__iterate=function(t,e){for(var r,n=this.__iterator(p,e),i=0;!(r=n.next()).done&&!1!==t(r.value,i++,this););return i},n.__iteratorUncached=function(t,n){var i=r.map((function(t){return t=Iterable(t),getIterator(n?t.reverse():t)})),o=0,a=!1;return new Iterator((function(){var r;return a||(r=i.map((function(t){return t.next()})),a=r.some((function(t){return t.done}))),a?iteratorDone():iteratorValue(t,o++,e.apply(null,r.map((function(t){return t.value}))))}))},n}function reify(t,e){return isSeq(t)?e:t.constructor(e)}function validateEntry(t){if(t!==Object(t))throw new TypeError(\"Expected [K, V] tuple: \"+t)}function resolveSize(t){return assertNotInfinite(t.size),ensureSize(t)}function iterableClass(t){return isKeyed(t)?KeyedIterable:isIndexed(t)?IndexedIterable:SetIterable}function makeSequence(t){return Object.create((isKeyed(t)?KeyedSeq:isIndexed(t)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(t,e){return t>e?1:t<e?-1:0}function forceIterator(t){var e=getIterator(t);if(!e){if(!isArrayLike(t))throw new TypeError(\"Expected iterable or array-like: \"+t);e=getIterator(Iterable(t))}return e}function Record(t,e){var r,n=function Record(o){if(o instanceof n)return o;if(!(this instanceof n))return new n(o);if(!r){r=!0;var a=Object.keys(t);setProps(i,a),i.size=a.length,i._name=e,i._keys=a,i._defaultValues=t}this._map=Map(o)},i=n.prototype=Object.create(rt);return i.constructor=n,n}createClass(OrderedMap,Map),OrderedMap.of=function(){return this(arguments)},OrderedMap.prototype.toString=function(){return this.__toString(\"OrderedMap {\",\"}\")},OrderedMap.prototype.get=function(t,e){var r=this._map.get(t);return void 0!==r?this._list.get(r)[1]:e},OrderedMap.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):emptyOrderedMap()},OrderedMap.prototype.set=function(t,e){return updateOrderedMap(this,t,e)},OrderedMap.prototype.remove=function(t){return updateOrderedMap(this,t,c)},OrderedMap.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},OrderedMap.prototype.__iterate=function(t,e){var r=this;return this._list.__iterate((function(e){return e&&t(e[1],e[0],r)}),e)},OrderedMap.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},OrderedMap.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),r=this._list.__ensureOwner(t);return t?makeOrderedMap(e,r,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=r,this)},OrderedMap.isOrderedMap=isOrderedMap,OrderedMap.prototype[i]=!0,OrderedMap.prototype[o]=OrderedMap.prototype.remove,createClass(ToKeyedSequence,KeyedSeq),ToKeyedSequence.prototype.get=function(t,e){return this._iter.get(t,e)},ToKeyedSequence.prototype.has=function(t){return this._iter.has(t)},ToKeyedSequence.prototype.valueSeq=function(){return this._iter.valueSeq()},ToKeyedSequence.prototype.reverse=function(){var t=this,e=reverseFactory(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},ToKeyedSequence.prototype.map=function(t,e){var r=this,n=mapFactory(this,t,e);return this._useKeys||(n.valueSeq=function(){return r._iter.toSeq().map(t,e)}),n},ToKeyedSequence.prototype.__iterate=function(t,e){var r,n=this;return this._iter.__iterate(this._useKeys?function(e,r){return t(e,r,n)}:(r=e?resolveSize(this):0,function(i){return t(i,e?--r:r++,n)}),e)},ToKeyedSequence.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var r=this._iter.__iterator(p,e),n=e?resolveSize(this):0;return new Iterator((function(){var i=r.next();return i.done?i:iteratorValue(t,e?--n:n++,i.value,i)}))},ToKeyedSequence.prototype[i]=!0,createClass(ToIndexedSequence,IndexedSeq),ToIndexedSequence.prototype.includes=function(t){return this._iter.includes(t)},ToIndexedSequence.prototype.__iterate=function(t,e){var r=this,n=0;return this._iter.__iterate((function(e){return t(e,n++,r)}),e)},ToIndexedSequence.prototype.__iterator=function(t,e){var r=this._iter.__iterator(p,e),n=0;return new Iterator((function(){var e=r.next();return e.done?e:iteratorValue(t,n++,e.value,e)}))},createClass(ToSetSequence,SetSeq),ToSetSequence.prototype.has=function(t){return this._iter.includes(t)},ToSetSequence.prototype.__iterate=function(t,e){var r=this;return this._iter.__iterate((function(e){return t(e,e,r)}),e)},ToSetSequence.prototype.__iterator=function(t,e){var r=this._iter.__iterator(p,e);return new Iterator((function(){var e=r.next();return e.done?e:iteratorValue(t,e.value,e.value,e)}))},createClass(FromEntriesSequence,KeyedSeq),FromEntriesSequence.prototype.entrySeq=function(){return this._iter.toSeq()},FromEntriesSequence.prototype.__iterate=function(t,e){var r=this;return this._iter.__iterate((function(e){if(e){validateEntry(e);var n=isIterable(e);return t(n?e.get(1):e[1],n?e.get(0):e[0],r)}}),e)},FromEntriesSequence.prototype.__iterator=function(t,e){var r=this._iter.__iterator(p,e);return new Iterator((function(){for(;;){var e=r.next();if(e.done)return e;var n=e.value;if(n){validateEntry(n);var i=isIterable(n);return iteratorValue(t,i?n.get(0):n[0],i?n.get(1):n[1],e)}}}))},ToIndexedSequence.prototype.cacheResult=ToKeyedSequence.prototype.cacheResult=ToSetSequence.prototype.cacheResult=FromEntriesSequence.prototype.cacheResult=cacheResultThrough,createClass(Record,KeyedCollection),Record.prototype.toString=function(){return this.__toString(recordName(this)+\" {\",\"}\")},Record.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Record.prototype.get=function(t,e){if(!this.has(t))return e;var r=this._defaultValues[t];return this._map?this._map.get(t,r):r},Record.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=makeRecord(this,emptyMap()))},Record.prototype.set=function(t,e){if(!this.has(t))throw new Error('Cannot set unknown key \"'+t+'\" on '+recordName(this));if(this._map&&!this._map.has(t)&&e===this._defaultValues[t])return this;var r=this._map&&this._map.set(t,e);return this.__ownerID||r===this._map?this:makeRecord(this,r)},Record.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:makeRecord(this,e)},Record.prototype.wasAltered=function(){return this._map.wasAltered()},Record.prototype.__iterator=function(t,e){var r=this;return KeyedIterable(this._defaultValues).map((function(t,e){return r.get(e)})).__iterator(t,e)},Record.prototype.__iterate=function(t,e){var r=this;return KeyedIterable(this._defaultValues).map((function(t,e){return r.get(e)})).__iterate(t,e)},Record.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?makeRecord(this,e,t):(this.__ownerID=t,this._map=e,this)};var rt=Record.prototype;function makeRecord(t,e,r){var n=Object.create(Object.getPrototypeOf(t));return n._map=e,n.__ownerID=r,n}function recordName(t){return t._name||t.constructor.name||\"Record\"}function setProps(t,e){try{e.forEach(setProp.bind(void 0,t))}catch(t){}}function setProp(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){invariant(this.__ownerID,\"Cannot set on an immutable record.\"),this.set(e,t)}})}function Set(t){return null==t?emptySet():isSet(t)&&!isOrdered(t)?t:emptySet().withMutations((function(e){var r=SetIterable(t);assertNotInfinite(r.size),r.forEach((function(t){return e.add(t)}))}))}function isSet(t){return!(!t||!t[it])}rt[o]=rt.remove,rt.deleteIn=rt.removeIn=V.removeIn,rt.merge=V.merge,rt.mergeWith=V.mergeWith,rt.mergeIn=V.mergeIn,rt.mergeDeep=V.mergeDeep,rt.mergeDeepWith=V.mergeDeepWith,rt.mergeDeepIn=V.mergeDeepIn,rt.setIn=V.setIn,rt.update=V.update,rt.updateIn=V.updateIn,rt.withMutations=V.withMutations,rt.asMutable=V.asMutable,rt.asImmutable=V.asImmutable,createClass(Set,SetCollection),Set.of=function(){return this(arguments)},Set.fromKeys=function(t){return this(KeyedIterable(t).keySeq())},Set.prototype.toString=function(){return this.__toString(\"Set {\",\"}\")},Set.prototype.has=function(t){return this._map.has(t)},Set.prototype.add=function(t){return updateSet(this,this._map.set(t,!0))},Set.prototype.remove=function(t){return updateSet(this,this._map.remove(t))},Set.prototype.clear=function(){return updateSet(this,this._map.clear())},Set.prototype.union=function(){var e=t.call(arguments,0);return 0===(e=e.filter((function(t){return 0!==t.size}))).length?this:0!==this.size||this.__ownerID||1!==e.length?this.withMutations((function(t){for(var r=0;r<e.length;r++)SetIterable(e[r]).forEach((function(e){return t.add(e)}))})):this.constructor(e[0])},Set.prototype.intersect=function(){var e=t.call(arguments,0);if(0===e.length)return this;e=e.map((function(t){return SetIterable(t)}));var r=this;return this.withMutations((function(t){r.forEach((function(r){e.every((function(t){return t.includes(r)}))||t.remove(r)}))}))},Set.prototype.subtract=function(){var e=t.call(arguments,0);if(0===e.length)return this;e=e.map((function(t){return SetIterable(t)}));var r=this;return this.withMutations((function(t){r.forEach((function(r){e.some((function(t){return t.includes(r)}))&&t.remove(r)}))}))},Set.prototype.merge=function(){return this.union.apply(this,arguments)},Set.prototype.mergeWith=function(e){var r=t.call(arguments,1);return this.union.apply(this,r)},Set.prototype.sort=function(t){return OrderedSet(sortFactory(this,t))},Set.prototype.sortBy=function(t,e){return OrderedSet(sortFactory(this,e,t))},Set.prototype.wasAltered=function(){return this._map.wasAltered()},Set.prototype.__iterate=function(t,e){var r=this;return this._map.__iterate((function(e,n){return t(n,n,r)}),e)},Set.prototype.__iterator=function(t,e){return this._map.map((function(t,e){return e})).__iterator(t,e)},Set.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Set.isSet=isSet;var nt,it=\"@@__IMMUTABLE_SET__@@\",ot=Set.prototype;function updateSet(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function makeSet(t,e){var r=Object.create(ot);return r.size=t?t.size:0,r._map=t,r.__ownerID=e,r}function emptySet(){return nt||(nt=makeSet(emptyMap()))}function OrderedSet(t){return null==t?emptyOrderedSet():isOrderedSet(t)?t:emptyOrderedSet().withMutations((function(e){var r=SetIterable(t);assertNotInfinite(r.size),r.forEach((function(t){return e.add(t)}))}))}function isOrderedSet(t){return isSet(t)&&isOrdered(t)}ot[it]=!0,ot[o]=ot.remove,ot.mergeDeep=ot.merge,ot.mergeDeepWith=ot.mergeWith,ot.withMutations=V.withMutations,ot.asMutable=V.asMutable,ot.asImmutable=V.asImmutable,ot.__empty=emptySet,ot.__make=makeSet,createClass(OrderedSet,Set),OrderedSet.of=function(){return this(arguments)},OrderedSet.fromKeys=function(t){return this(KeyedIterable(t).keySeq())},OrderedSet.prototype.toString=function(){return this.__toString(\"OrderedSet {\",\"}\")},OrderedSet.isOrderedSet=isOrderedSet;var at,st=OrderedSet.prototype;function makeOrderedSet(t,e){var r=Object.create(st);return r.size=t?t.size:0,r._map=t,r.__ownerID=e,r}function emptyOrderedSet(){return at||(at=makeOrderedSet(emptyOrderedMap()))}function Stack(t){return null==t?emptyStack():isStack(t)?t:emptyStack().unshiftAll(t)}function isStack(t){return!(!t||!t[ct])}st[i]=!0,st.__empty=emptyOrderedSet,st.__make=makeOrderedSet,createClass(Stack,IndexedCollection),Stack.of=function(){return this(arguments)},Stack.prototype.toString=function(){return this.__toString(\"Stack [\",\"]\")},Stack.prototype.get=function(t,e){var r=this._head;for(t=wrapIndex(this,t);r&&t--;)r=r.next;return r?r.value:e},Stack.prototype.peek=function(){return this._head&&this._head.value},Stack.prototype.push=function(){if(0===arguments.length)return this;for(var t=this.size+arguments.length,e=this._head,r=arguments.length-1;r>=0;r--)e={value:arguments[r],next:e};return this.__ownerID?(this.size=t,this._head=e,this.__hash=void 0,this.__altered=!0,this):makeStack(t,e)},Stack.prototype.pushAll=function(t){if(0===(t=IndexedIterable(t)).size)return this;assertNotInfinite(t.size);var e=this.size,r=this._head;return t.reverse().forEach((function(t){e++,r={value:t,next:r}})),this.__ownerID?(this.size=e,this._head=r,this.__hash=void 0,this.__altered=!0,this):makeStack(e,r)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(t){return this.pushAll(t)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(t,e){if(wholeSlice(t,e,this.size))return this;var r=resolveBegin(t,this.size);if(resolveEnd(e,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,t,e);for(var n=this.size-r,i=this._head;r--;)i=i.next;return this.__ownerID?(this.size=n,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(n,i)},Stack.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?makeStack(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Stack.prototype.__iterate=function(t,e){if(e)return this.reverse().__iterate(t);for(var r=0,n=this._head;n&&!1!==t(n.value,r++,this);)n=n.next;return r},Stack.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var r=0,n=this._head;return new Iterator((function(){if(n){var e=n.value;return n=n.next,iteratorValue(t,r++,e)}return iteratorDone()}))},Stack.isStack=isStack;var ut,ct=\"@@__IMMUTABLE_STACK__@@\",lt=Stack.prototype;function makeStack(t,e,r,n){var i=Object.create(lt);return i.size=t,i._head=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function emptyStack(){return ut||(ut=makeStack(0))}function mixin(t,e){var keyCopier=function(r){t.prototype[r]=e[r]};return Object.keys(e).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(keyCopier),t}lt[ct]=!0,lt.withMutations=V.withMutations,lt.asMutable=V.asMutable,lt.asImmutable=V.asImmutable,lt.wasAltered=V.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var t=new Array(this.size||0);return this.valueSeq().__iterate((function(e,r){t[r]=e})),t},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(t){return t&&\"function\"==typeof t.toJS?t.toJS():t})).__toJS()},toJSON:function(){return this.toSeq().map((function(t){return t&&\"function\"==typeof t.toJSON?t.toJSON():t})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var t={};return this.__iterate((function(e,r){t[r]=e})),t},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return\"[Iterable]\"},__toString:function(t,e){return 0===this.size?t+e:t+\" \"+this.toSeq().map(this.__toStringMapper).join(\", \")+\" \"+e},concat:function(){return reify(this,concatFactory(this,t.call(arguments,0)))},includes:function(t){return this.some((function(e){return is(e,t)}))},entries:function(){return this.__iterator(d)},every:function(t,e){assertNotInfinite(this.size);var r=!0;return this.__iterate((function(n,i,o){if(!t.call(e,n,i,o))return r=!1,!1})),r},filter:function(t,e){return reify(this,filterFactory(this,t,e,!0))},find:function(t,e,r){var n=this.findEntry(t,e);return n?n[1]:r},forEach:function(t,e){return assertNotInfinite(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){assertNotInfinite(this.size),t=void 0!==t?\"\"+t:\",\";var e=\"\",r=!0;return this.__iterate((function(n){r?r=!1:e+=t,e+=null!=n?n.toString():\"\"})),e},keys:function(){return this.__iterator(h)},map:function(t,e){return reify(this,mapFactory(this,t,e))},reduce:function(t,e,r){var n,i;return assertNotInfinite(this.size),arguments.length<2?i=!0:n=e,this.__iterate((function(e,o,a){i?(i=!1,n=e):n=t.call(r,n,e,o,a)})),n},reduceRight:function(t,e,r){var n=this.toKeyedSeq().reverse();return n.reduce.apply(n,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(t,e){return reify(this,sliceFactory(this,t,e,!0))},some:function(t,e){return!this.every(not(t),e)},sort:function(t){return reify(this,sortFactory(this,t))},values:function(){return this.__iterator(p)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(t,e){return ensureSize(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return countByFactory(this,t,e)},equals:function(t){return deepEqual(this,t)},entrySeq:function(){var t=this;if(t._cache)return new ArraySeq(t._cache);var e=t.toSeq().map(entryMapper).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){return this.filter(not(t),e)},findEntry:function(t,e,r){var n=r;return this.__iterate((function(r,i,o){if(t.call(e,r,i,o))return n=[i,r],!1})),n},findKey:function(t,e){var r=this.findEntry(t,e);return r&&r[0]},findLast:function(t,e,r){return this.toKeyedSeq().reverse().find(t,e,r)},findLastEntry:function(t,e,r){return this.toKeyedSeq().reverse().findEntry(t,e,r)},findLastKey:function(t,e){return this.toKeyedSeq().reverse().findKey(t,e)},first:function(){return this.find(returnTrue)},flatMap:function(t,e){return reify(this,flatMapFactory(this,t,e))},flatten:function(t){return reify(this,flattenFactory(this,t,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(t,e){return this.find((function(e,r){return is(r,t)}),void 0,e)},getIn:function(t,e){for(var r,n=this,i=forceIterator(t);!(r=i.next()).done;){var o=r.value;if((n=n&&n.get?n.get(o,c):c)===c)return e}return n},groupBy:function(t,e){return groupByFactory(this,t,e)},has:function(t){return this.get(t,c)!==c},hasIn:function(t){return this.getIn(t,c)!==c},isSubset:function(t){return t=\"function\"==typeof t.includes?t:Iterable(t),this.every((function(e){return t.includes(e)}))},isSuperset:function(t){return(t=\"function\"==typeof t.isSubset?t:Iterable(t)).isSubset(this)},keyOf:function(t){return this.findKey((function(e){return is(e,t)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return maxFactory(this,t)},maxBy:function(t,e){return maxFactory(this,e,t)},min:function(t){return maxFactory(this,t?neg(t):defaultNegComparator)},minBy:function(t,e){return maxFactory(this,e?neg(e):defaultNegComparator,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return reify(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return reify(this,skipWhileFactory(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile(not(t),e)},sortBy:function(t,e){return reify(this,sortFactory(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return reify(this,this.toSeq().reverse().take(t).reverse())},takeWhile:function(t,e){return reify(this,takeWhileFactory(this,t,e))},takeUntil:function(t,e){return this.takeWhile(not(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ht=Iterable.prototype;ht[e]=!0,ht[m]=ht.values,ht.__toJS=ht.toArray,ht.__toStringMapper=quoteString,ht.inspect=ht.toSource=function(){return this.toString()},ht.chain=ht.flatMap,ht.contains=ht.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(t,e){var r=this,n=0;return reify(this,this.toSeq().map((function(i,o){return t.call(e,[o,i],n++,r)})).fromEntrySeq())},mapKeys:function(t,e){var r=this;return reify(this,this.toSeq().flip().map((function(n,i){return t.call(e,n,i,r)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(t,e){return e}function entryMapper(t,e){return[e,t]}function not(t){return function(){return!t.apply(this,arguments)}}function neg(t){return function(){return-t.apply(this,arguments)}}function quoteString(t){return\"string\"==typeof t?JSON.stringify(t):String(t)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(t,e){return t<e?1:t>e?-1:0}function hashIterable(t){if(t.size===1/0)return 0;var e=isOrdered(t),r=isKeyed(t),n=e?1:0;return murmurHashOfSize(t.__iterate(r?e?function(t,e){n=31*n+hashMerge(hash(t),hash(e))|0}:function(t,e){n=n+hashMerge(hash(t),hash(e))|0}:e?function(t){n=31*n+hash(t)|0}:function(t){n=n+hash(t)|0}),n)}function murmurHashOfSize(t,e){return e=I(e,3432918353),e=I(e<<15|e>>>-15,461845907),e=I(e<<13|e>>>-13,5),e=I((e=e+3864292196^t)^e>>>16,2246822507),e=smi((e=I(e^e>>>13,3266489909))^e>>>16)}function hashMerge(t,e){return t^e+2654435769+(t<<6)+(t>>2)}return pt[r]=!0,pt[m]=ht.entries,pt.__toJS=ht.toObject,pt.__toStringMapper=function(t,e){return JSON.stringify(e)+\": \"+quoteString(t)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(t,e){return reify(this,filterFactory(this,t,e,!1))},findIndex:function(t,e){var r=this.findEntry(t,e);return r?r[0]:-1},indexOf:function(t){var e=this.keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.lastKeyOf(t);return void 0===e?-1:e},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(t,e){return reify(this,sliceFactory(this,t,e,!1))},splice:function(t,e){var r=arguments.length;if(e=Math.max(0|e,0),0===r||2===r&&!e)return this;t=resolveBegin(t,t<0?this.count():this.size);var n=this.slice(0,t);return reify(this,1===r?n:n.concat(arrCopy(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var r=this.findLastEntry(t,e);return r?r[0]:-1},first:function(){return this.get(0)},flatten:function(t){return reify(this,flattenFactory(this,t,!1))},get:function(t,e){return(t=wrapIndex(this,t))<0||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find((function(e,r){return r===t}),void 0,e)},has:function(t){return(t=wrapIndex(this,t))>=0&&(void 0!==this.size?this.size===1/0||t<this.size:-1!==this.indexOf(t))},interpose:function(t){return reify(this,interposeFactory(this,t))},interleave:function(){var t=[this].concat(arrCopy(arguments)),e=zipWithFactory(this.toSeq(),IndexedSeq.of,t),r=e.flatten(!0);return e.size&&(r.size=e.size*t.length),reify(this,r)},keySeq:function(){return Range(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(t,e){return reify(this,skipWhileFactory(this,t,e,!1))},zip:function(){return reify(this,zipWithFactory(this,defaultZipper,[this].concat(arrCopy(arguments))))},zipWith:function(t){var e=arrCopy(arguments);return e[0]=this,reify(this,zipWithFactory(this,t,e))}}),IndexedIterable.prototype[n]=!0,IndexedIterable.prototype[i]=!0,mixin(SetIterable,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),SetIterable.prototype.has=ht.includes,SetIterable.prototype.contains=SetIterable.prototype.includes,mixin(KeyedSeq,KeyedIterable.prototype),mixin(IndexedSeq,IndexedIterable.prototype),mixin(SetSeq,SetIterable.prototype),mixin(KeyedCollection,KeyedIterable.prototype),mixin(IndexedCollection,IndexedIterable.prototype),mixin(SetCollection,SetIterable.prototype),{Iterable,Seq,Collection,Map,OrderedMap,List,Stack,Set,OrderedSet,Record,Range,Repeat,is,fromJS}}()},9447:(t,e,r)=>{\"use strict\";var n=r(8828);t.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},9538:(t,e,r)=>{\"use strict\";var n=r(9447),i=r(1907),o=r(3930),a=r(8828),s=r(2875),u=r(7170),c=r(2574),f=r(9298),l=r(6946),h=Object.assign,p=Object.defineProperty,d=i([].concat);t.exports=!h||a((function(){if(n&&1!==h({b:1},h(p({},\"a\",{enumerable:!0,get:function(){p(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol(\"assign detection\"),i=\"abcdefghijklmnopqrst\";return t[r]=7,i.split(\"\").forEach((function(t){e[t]=t})),7!==h({},t)[r]||s(h({},e)).join(\"\")!==i}))?function assign(t,e){for(var r=f(t),i=arguments.length,a=1,h=u.f,p=c.f;i>a;)for(var _,y=l(arguments[a++]),m=h?d(s(y),h(y)):s(y),g=m.length,v=0;g>v;)_=m[v++],n&&!o(p,y,_)||(r[_]=y[_]);return r}:h},9552:(t,e,r)=>{\"use strict\";var n=r(5951),i=r(6285),o=n.document,a=i(o)&&i(o.createElement);t.exports=function(t){return a?o.createElement(t):{}}},9698:t=>{var e=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\");t.exports=function hasUnicode(t){return e.test(t)}},9709:(t,e,r)=>{\"use strict\";var n=r(3034);t.exports=n},9724:(t,e,r)=>{\"use strict\";var n=r(1907),i=r(9298),o=n({}.hasOwnProperty);t.exports=Object.hasOwn||function hasOwn(t,e){return o(i(t),e)}},9748:(t,e,r)=>{\"use strict\";r(1340);var n=r(2046);t.exports=n.Object.assign},9770:t=>{t.exports=function arrayFilter(t,e){for(var r=-1,n=null==t?0:t.length,i=0,o=[];++r<n;){var a=t[r];e(a,r,t)&&(o[i++]=a)}return o}},9817:t=>{t.exports=function stackHas(t){return this.__data__.has(t)}},9846:(t,e,r)=>{\"use strict\";var n=r(798),i=r(8828),o=r(5951).String;t.exports=!!Object.getOwnPropertySymbols&&!i((function(){var t=Symbol(\"symbol detection\");return!o(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9935:t=>{t.exports=function stubFalse(){return!1}}},e={};function __webpack_require__(r){var n=e[r];if(void 0!==n)return n.exports;var i=e[r]={id:r,loaded:!1,exports:{}};return t[r].call(i.exports,i,i.exports,__webpack_require__),i.loaded=!0,i.exports}__webpack_require__.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),__webpack_require__.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},__webpack_require__.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var r={};return(()=>{\"use strict\";__webpack_require__.d(r,{default:()=>ae});var t={};__webpack_require__.r(t),__webpack_require__.d(t,{TOGGLE_CONFIGS:()=>Qt,UPDATE_CONFIGS:()=>Jt,downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl,loaded:()=>loaded,toggle:()=>toggle,update:()=>update});var e={};__webpack_require__.r(e),__webpack_require__.d(e,{get:()=>get});var n=__webpack_require__(6540);class StandaloneLayout extends n.Component{render(){const{getComponent:t}=this.props,e=t(\"Container\"),r=t(\"Row\"),i=t(\"Col\"),o=t(\"Topbar\",!0),a=t(\"BaseLayout\",!0),s=t(\"onlineValidatorBadge\",!0);return n.createElement(e,{className:\"swagger-ui\"},o?n.createElement(o,null):null,n.createElement(a,null),n.createElement(r,null,n.createElement(i,null,n.createElement(s,null))))}}const i=StandaloneLayout,stadalone_layout=()=>({components:{StandaloneLayout:i}});var o=__webpack_require__(9404),a=__webpack_require__.n(o);__webpack_require__(4058),__webpack_require__(5808),__webpack_require__(104),__webpack_require__(7309),__webpack_require__(2426),__webpack_require__(5288),__webpack_require__(1882),__webpack_require__(2205),__webpack_require__(3209),__webpack_require__(2802);const s=function makeWindow(){var t={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if(\"undefined\"==typeof window)return t;try{t=window;for(var e of[\"File\",\"Blob\",\"FormData\"])e in window&&(t[e]=window[e])}catch(t){console.error(t)}return t}();a().Set.of(\"type\",\"format\",\"items\",\"default\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"enum\",\"multipleOf\");__webpack_require__(8287).Buffer;const parseSearch=()=>{const t=new URLSearchParams(s.location.search);return Object.fromEntries(t)};class TopBar extends n.Component{constructor(t,e){super(t,e),this.state={url:t.specSelectors.url(),selectedIndex:0}}UNSAFE_componentWillReceiveProps(t){this.setState({url:t.specSelectors.url()})}onUrlChange=t=>{let{target:{value:e}}=t;this.setState({url:e})};flushAuthData(){const{persistAuthorization:t}=this.props.getConfigs();t||this.props.authActions.restoreAuthorization({authorized:{}})}loadSpec=t=>{this.flushAuthData(),this.props.specActions.updateUrl(t),this.props.specActions.download(t)};onUrlSelect=t=>{let e=t.target.value||t.target.href;this.loadSpec(e),this.setSelectedUrl(e),t.preventDefault()};downloadUrl=t=>{this.loadSpec(this.state.url),t.preventDefault()};setSearch=t=>{let e=parseSearch();e[\"urls.primaryName\"]=t.name;const r=`${window.location.protocol}//${window.location.host}${window.location.pathname}`;window&&window.history&&window.history.pushState&&window.history.replaceState(null,\"\",`${r}?${(t=>{const e=new URLSearchParams(Object.entries(t));return String(e)})(e)}`)};setSelectedUrl=t=>{const e=this.props.getConfigs().urls||[];e&&e.length&&t&&e.forEach(((e,r)=>{e.url===t&&(this.setState({selectedIndex:r}),this.setSearch(e))}))};componentDidMount(){const t=this.props.getConfigs(),e=t.urls||[];if(e&&e.length){var r=this.state.selectedIndex;let n=parseSearch()[\"urls.primaryName\"]||t.urls.primaryName;n&&e.forEach(((t,e)=>{t.name===n&&(this.setState({selectedIndex:e}),r=e)})),this.loadSpec(e[r].url)}}onFilterChange=t=>{let{target:{value:e}}=t;this.props.layoutActions.updateFilter(e)};render(){let{getComponent:t,specSelectors:e,getConfigs:r}=this.props;const i=t(\"Button\"),o=t(\"Link\"),a=t(\"Logo\");let s=\"loading\"===e.loadingStatus();const u=[\"download-url-input\"];\"failed\"===e.loadingStatus()&&u.push(\"failed\"),s&&u.push(\"loading\");const{urls:c}=r();let f=[],l=null;if(c){let t=[];c.forEach(((e,r)=>{t.push(n.createElement(\"option\",{key:r,value:e.url},e.name))})),f.push(n.createElement(\"label\",{className:\"select-label\",htmlFor:\"select\"},n.createElement(\"span\",null,\"Select a definition\"),n.createElement(\"select\",{id:\"select\",disabled:s,onChange:this.onUrlSelect,value:c[this.state.selectedIndex].url},t)))}else l=this.downloadUrl,f.push(n.createElement(\"input\",{className:u.join(\" \"),type:\"text\",onChange:this.onUrlChange,value:this.state.url,disabled:s,id:\"download-url-input\"})),f.push(n.createElement(i,{className:\"download-url-button\",onClick:this.downloadUrl},\"Explore\"));return n.createElement(\"div\",{className:\"topbar\"},n.createElement(\"div\",{className:\"wrapper\"},n.createElement(\"div\",{className:\"topbar-wrapper\"},n.createElement(o,null,n.createElement(a,null)),n.createElement(\"form\",{className:\"download-url-wrapper\",onSubmit:l},f.map(((t,e)=>(0,n.cloneElement)(t,{key:e})))))))}}const u=TopBar;var c,f,l,h,p,d,_,y,m,g,v,b,w,I,x,B,k,C,q,L,j,z,P,D,U,W,V,K,$,H,Y,Z;function _extends(){return _extends=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},_extends.apply(null,arguments)}const logo_small=t=>n.createElement(\"svg\",_extends({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 407 116\"},t),c||(c=n.createElement(\"defs\",null,n.createElement(\"clipPath\",{id:\"logo_small_svg__clip-SW_TM-logo-on-dark\"},n.createElement(\"path\",{d:\"M0 0h407v116H0z\"})),n.createElement(\"style\",null,\".logo_small_svg__cls-2{fill:#fff}.logo_small_svg__cls-3{fill:#85ea2d}\"))),n.createElement(\"g\",{id:\"logo_small_svg__SW_TM-logo-on-dark\",style:{clipPath:\"url(#logo_small_svg__clip-SW_TM-logo-on-dark)\"}},n.createElement(\"g\",{id:\"logo_small_svg__SW_In-Product\",transform:\"translate(-.301)\"},f||(f=n.createElement(\"path\",{id:\"logo_small_svg__Path_2936\",d:\"M359.15 70.674h-.7v-3.682h-1.26v-.6h3.219v.6h-1.259Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2936\"})),l||(l=n.createElement(\"path\",{id:\"logo_small_svg__Path_2937\",d:\"m363.217 70.674-1.242-3.574h-.023q.05.8.05 1.494v2.083h-.636v-4.286h.987l1.19 3.407h.017l1.225-3.407h.99v4.283h-.675v-2.118a30 30 0 0 1 .044-1.453h-.023l-1.286 3.571Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2937\"})),h||(h=n.createElement(\"path\",{id:\"logo_small_svg__Path_2938\",d:\"M50.328 97.669a47.642 47.642 0 1 1 47.643-47.642 47.64 47.64 0 0 1-47.643 47.642\",className:\"logo_small_svg__cls-3\",\"data-name\":\"Path 2938\"})),p||(p=n.createElement(\"path\",{id:\"logo_small_svg__Path_2939\",d:\"M50.328 4.769A45.258 45.258 0 1 1 5.07 50.027 45.26 45.26 0 0 1 50.328 4.769m0-4.769a50.027 50.027 0 1 0 50.027 50.027A50.027 50.027 0 0 0 50.328 0\",className:\"logo_small_svg__cls-3\",\"data-name\":\"Path 2939\"})),n.createElement(\"path\",{id:\"logo_small_svg__Path_2940\",d:\"M31.8 33.854c-.154 1.712.058 3.482-.057 5.213a43 43 0 0 1-.693 5.156 9.53 9.53 0 0 1-4.1 5.829c4.079 2.654 4.54 6.771 4.81 10.946.135 2.25.077 4.52.308 6.752.173 1.731.846 2.174 2.636 2.231.73.02 1.48 0 2.327 0v5.349c-5.29.9-9.657-.6-10.734-5.079a31 31 0 0 1-.654-5c-.117-1.789.076-3.578-.058-5.367-.386-4.906-1.02-6.56-5.713-6.791v-6.1a9 9 0 0 1 1.028-.173c2.577-.135 3.674-.924 4.231-3.463a29 29 0 0 0 .481-4.329 82 82 0 0 1 .6-8.406c.673-3.982 3.136-5.906 7.234-6.137 1.154-.057 2.327 0 3.655 0v5.464c-.558.038-1.039.115-1.539.115-3.336-.115-3.51 1.02-3.762 3.79m6.406 12.658h-.077a3.515 3.515 0 1 0-.346 7.021h.231a3.46 3.46 0 0 0 3.655-3.251v-.192a3.523 3.523 0 0 0-3.461-3.578Zm12.062 0a3.373 3.373 0 0 0-3.482 3.251 2 2 0 0 0 .02.327 3.3 3.3 0 0 0 3.578 3.443 3.263 3.263 0 0 0 3.443-3.558 3.308 3.308 0 0 0-3.557-3.463Zm12.351 0a3.59 3.59 0 0 0-3.655 3.482 3.53 3.53 0 0 0 3.536 3.539h.039c1.769.309 3.559-1.4 3.674-3.462a3.57 3.57 0 0 0-3.6-3.559Zm16.948.288c-2.232-.1-3.348-.846-3.9-2.962a21.5 21.5 0 0 1-.635-4.136c-.154-2.578-.135-5.175-.308-7.753-.4-6.117-4.828-8.252-11.254-7.195v5.31c1.019 0 1.808 0 2.6.019 1.366.019 2.4.539 2.539 2.059.135 1.385.135 2.789.27 4.193.269 2.79.422 5.618.9 8.369a8.72 8.72 0 0 0 3.921 5.348c-3.4 2.289-4.406 5.559-4.578 9.234-.1 2.52-.154 5.059-.289 7.6-.115 2.308-.923 3.058-3.251 3.116-.654.019-1.289.077-2.019.115v5.445c1.365 0 2.616.077 3.866 0 3.886-.231 6.233-2.117 7-5.887A49 49 0 0 0 75 63.4c.135-1.923.116-3.866.308-5.771.289-2.982 1.655-4.213 4.636-4.4a4 4 0 0 0 .828-.192v-6.1c-.5-.058-.843-.115-1.208-.135Z\",\"data-name\":\"Path 2940\",style:{fill:\"#173647\"}}),d||(d=n.createElement(\"path\",{id:\"logo_small_svg__Path_2941\",d:\"M152.273 58.122a11.23 11.23 0 0 1-4.384 9.424q-4.383 3.382-11.9 3.382-8.14 0-12.524-2.1V63.7a33 33 0 0 0 6.137 1.879 32.3 32.3 0 0 0 6.575.689q5.322 0 8.015-2.02a6.63 6.63 0 0 0 2.692-5.62 7.2 7.2 0 0 0-.954-3.9 8.9 8.9 0 0 0-3.194-2.8 44.6 44.6 0 0 0-6.81-2.911q-6.387-2.286-9.126-5.417a11.96 11.96 0 0 1-2.74-8.172A10.16 10.16 0 0 1 128.039 27q3.977-3.131 10.52-3.131a31 31 0 0 1 12.555 2.5L149.455 31a28.4 28.4 0 0 0-11.021-2.38 10.67 10.67 0 0 0-6.606 1.816 5.98 5.98 0 0 0-2.38 5.041 7.7 7.7 0 0 0 .877 3.9 8.24 8.24 0 0 0 2.959 2.786 36.7 36.7 0 0 0 6.371 2.8q7.2 2.566 9.91 5.51a10.84 10.84 0 0 1 2.708 7.649\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2941\"})),_||(_=n.createElement(\"path\",{id:\"logo_small_svg__Path_2942\",d:\"M185.288 70.3 179 50.17q-.594-1.848-2.222-8.391h-.251q-1.252 5.479-2.192 8.453L167.849 70.3h-6.011l-9.361-34.315h5.447q3.318 12.931 5.057 19.693a80 80 0 0 1 1.988 9.111h.25q.345-1.785 1.112-4.618t1.33-4.493l6.294-19.693h5.635l6.137 19.693a66 66 0 0 1 2.379 9.048h.251a33 33 0 0 1 .673-3.475q.548-2.347 6.528-25.266h5.385L191.456 70.3Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2942\"})),y||(y=n.createElement(\"path\",{id:\"logo_small_svg__Path_2943\",d:\"m225.115 70.3-1.033-4.885h-.25a14.45 14.45 0 0 1-5.119 4.368 15.6 15.6 0 0 1-6.372 1.143q-5.1 0-8-2.63t-2.9-7.483q0-10.4 16.626-10.9l5.823-.188V47.6q0-4.038-1.738-5.964t-5.552-1.923a22.6 22.6 0 0 0-9.706 2.63l-1.6-3.977a24.4 24.4 0 0 1 5.557-2.16 24 24 0 0 1 6.058-.783q6.136 0 9.1 2.724t2.959 8.735V70.3Zm-11.741-3.663a10.55 10.55 0 0 0 7.626-2.66 9.85 9.85 0 0 0 2.771-7.451v-3.1l-5.2.219q-6.2.219-8.939 1.926a5.8 5.8 0 0 0-2.74 5.306 5.35 5.35 0 0 0 1.707 4.29 7.08 7.08 0 0 0 4.775 1.472Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2943\"})),m||(m=n.createElement(\"path\",{id:\"logo_small_svg__Path_2944\",d:\"M264.6 35.987v3.287l-6.356.752a11.16 11.16 0 0 1 2.255 6.856 10.15 10.15 0 0 1-3.444 8.047q-3.444 3-9.456 3a15.7 15.7 0 0 1-2.88-.25Q241.4 59.438 241.4 62.1a2.24 2.24 0 0 0 1.159 2.082 8.46 8.46 0 0 0 3.976.673h6.074q5.573 0 8.563 2.348a8.16 8.16 0 0 1 2.99 6.825 9.74 9.74 0 0 1-4.571 8.688q-4.572 2.989-13.338 2.99-6.732 0-10.379-2.5a8.09 8.09 0 0 1-3.647-7.076 7.95 7.95 0 0 1 2-5.417 10.2 10.2 0 0 1 5.636-3.1 5.43 5.43 0 0 1-2.207-1.847 4.9 4.9 0 0 1-.893-2.912 5.53 5.53 0 0 1 1-3.288 10.5 10.5 0 0 1 3.162-2.723 9.28 9.28 0 0 1-4.336-3.726 10.95 10.95 0 0 1-1.675-6.012q0-5.634 3.382-8.688t9.58-3.052a17.4 17.4 0 0 1 4.853.626Zm-27.367 40.075a4.66 4.66 0 0 0 2.348 4.227 12.97 12.97 0 0 0 6.732 1.44q6.543 0 9.69-1.956a5.99 5.99 0 0 0 3.147-5.307q0-2.787-1.723-3.867t-6.481-1.08h-6.23a8.2 8.2 0 0 0-5.51 1.69 6.04 6.04 0 0 0-1.973 4.853m2.818-29.086a6.98 6.98 0 0 0 2.035 5.448 8.12 8.12 0 0 0 5.667 1.847q7.608 0 7.608-7.389 0-7.733-7.7-7.733a7.63 7.63 0 0 0-5.635 1.972q-1.976 1.973-1.975 5.855\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2944\"})),g||(g=n.createElement(\"path\",{id:\"logo_small_svg__Path_2945\",d:\"M299.136 35.987v3.287l-6.356.752a11.17 11.17 0 0 1 2.254 6.856 10.15 10.15 0 0 1-3.444 8.047q-3.444 3-9.455 3a15.7 15.7 0 0 1-2.88-.25q-3.32 1.754-3.319 4.415a2.24 2.24 0 0 0 1.158 2.082 8.46 8.46 0 0 0 3.976.673h6.074q5.574 0 8.563 2.348a8.16 8.16 0 0 1 2.99 6.825 9.74 9.74 0 0 1-4.571 8.688q-4.57 2.989-13.337 2.99-6.732 0-10.379-2.5a8.09 8.09 0 0 1-3.648-7.076 7.95 7.95 0 0 1 2-5.417 10.2 10.2 0 0 1 5.636-3.1 5.43 5.43 0 0 1-2.208-1.847 4.9 4.9 0 0 1-.892-2.912 5.53 5.53 0 0 1 1-3.288 10.5 10.5 0 0 1 3.162-2.723 9.27 9.27 0 0 1-4.336-3.726 10.95 10.95 0 0 1-1.675-6.012q0-5.634 3.381-8.688t9.581-3.052a17.4 17.4 0 0 1 4.853.626Zm-27.364 40.075a4.66 4.66 0 0 0 2.348 4.227 12.97 12.97 0 0 0 6.731 1.44q6.544 0 9.691-1.956a5.99 5.99 0 0 0 3.146-5.307q0-2.787-1.722-3.867t-6.481-1.08h-6.23a8.2 8.2 0 0 0-5.511 1.69 6.04 6.04 0 0 0-1.972 4.853m2.818-29.086a6.98 6.98 0 0 0 2.035 5.448 8.12 8.12 0 0 0 5.667 1.847q7.607 0 7.608-7.389 0-7.733-7.7-7.733a7.63 7.63 0 0 0-5.635 1.972q-1.975 1.973-1.975 5.855\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2945\"})),v||(v=n.createElement(\"path\",{id:\"logo_small_svg__Path_2946\",d:\"M316.778 70.928q-7.608 0-12.007-4.634t-4.4-12.868q0-8.3 4.086-13.181a13.57 13.57 0 0 1 10.974-4.884 12.94 12.94 0 0 1 10.207 4.239q3.762 4.247 3.762 11.2v3.287h-23.643q.156 6.044 3.053 9.174t8.156 3.131a27.6 27.6 0 0 0 10.958-2.317v4.634a27.5 27.5 0 0 1-5.213 1.706 29.3 29.3 0 0 1-5.933.513m-1.409-31.215a8.49 8.49 0 0 0-6.591 2.692 12.4 12.4 0 0 0-2.9 7.452h17.94q0-4.916-2.191-7.53a7.71 7.71 0 0 0-6.258-2.614\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2946\"})),b||(b=n.createElement(\"path\",{id:\"logo_small_svg__Path_2947\",d:\"M350.9 35.361a20.4 20.4 0 0 1 4.1.375l-.721 4.822a17.7 17.7 0 0 0-3.757-.47 9.14 9.14 0 0 0-7.122 3.382 12.33 12.33 0 0 0-2.959 8.422V70.3h-5.2V35.987h4.29l.6 6.356h.25a15.1 15.1 0 0 1 4.6-5.166 10.36 10.36 0 0 1 5.919-1.816\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2947\"})),w||(w=n.createElement(\"path\",{id:\"logo_small_svg__Path_2948\",d:\"M255.857 96.638s-3.43-.391-4.85-.391c-2.058 0-3.111.735-3.111 2.18 0 1.568.882 1.935 3.748 2.719 3.527.98 4.8 1.911 4.8 4.777 0 3.675-2.3 5.267-5.61 5.267a36 36 0 0 1-5.487-.662l.27-2.18s3.306.441 5.046.441c2.082 0 3.037-.931 3.037-2.7 0-1.421-.759-1.91-3.331-2.523-3.626-.93-5.193-2.033-5.193-4.948 0-3.381 2.229-4.776 5.585-4.776a37 37 0 0 1 5.315.587Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2948\"})),I||(I=n.createElement(\"path\",{id:\"logo_small_svg__Path_2949\",d:\"M262.967 94.14h4.733l3.748 13.106L275.2 94.14h4.752v16.78H277.2v-14.5h-.145l-4.191 13.816h-2.842l-4.191-13.816h-.145v14.5h-2.719Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2949\"})),x||(x=n.createElement(\"path\",{id:\"logo_small_svg__Path_2950\",d:\"M322.057 94.14H334.3v2.425h-4.728v14.355h-2.743V96.565h-4.777Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2950\"})),B||(B=n.createElement(\"path\",{id:\"logo_small_svg__Path_2951\",d:\"M346.137 94.14c3.332 0 5.12 1.249 5.12 4.361 0 2.033-.637 3.037-1.984 3.772 1.445.563 2.4 1.592 2.4 3.9 0 3.43-2.081 4.752-5.339 4.752h-6.566V94.14Zm-3.65 2.352v4.8h3.6c1.666 0 2.4-.832 2.4-2.474 0-1.617-.833-2.327-2.5-2.327Zm0 7.1v4.973h3.7c1.689 0 2.694-.539 2.694-2.548 0-1.911-1.421-2.425-2.744-2.425Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2951\"})),k||(k=n.createElement(\"path\",{id:\"logo_small_svg__Path_2952\",d:\"M358.414 94.14H369v2.377h-7.864v4.751h6.394v2.332h-6.394v4.924H369v2.4h-10.586Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2952\"})),C||(C=n.createElement(\"path\",{id:\"logo_small_svg__Path_2953\",d:\"M378.747 94.14h5.414l4.164 16.78h-2.744l-1.239-4.92h-5.777l-1.239 4.923h-2.719Zm.361 9.456h4.708l-1.737-7.178h-1.225Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2953\"})),q||(q=n.createElement(\"path\",{id:\"logo_small_svg__Path_2954\",d:\"M397.1 105.947v4.973h-2.719V94.14h6.37c3.7 0 5.683 2.12 5.683 5.843 0 2.376-.956 4.519-2.744 5.352l2.769 5.585h-2.989l-2.426-4.973Zm3.651-9.455H397.1v7.1h3.7c2.057 0 2.841-1.85 2.841-3.589 0-1.9-.934-3.511-2.894-3.511Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2954\"})),L||(L=n.createElement(\"path\",{id:\"logo_small_svg__Path_2955\",d:\"M290.013 94.14h5.413l4.164 16.78h-2.743l-1.239-4.92h-5.777l-1.239 4.923h-2.719Zm.361 9.456h4.707l-1.737-7.178h-1.225Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2955\"})),j||(j=n.createElement(\"path\",{id:\"logo_small_svg__Path_2956\",d:\"M308.362 105.947v4.973h-2.719V94.14h6.369c3.7 0 5.683 2.12 5.683 5.843 0 2.376-.955 4.519-2.743 5.352l2.768 5.585h-2.989l-2.425-4.973Zm3.65-9.455h-3.65v7.1h3.7c2.058 0 2.841-1.85 2.841-3.589-.003-1.903-.931-3.511-2.891-3.511\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2956\"})),z||(z=n.createElement(\"path\",{id:\"logo_small_svg__Path_2957\",d:\"M130.606 107.643a3.02 3.02 0 0 1-1.18 2.537 5.1 5.1 0 0 1-3.2.91 8 8 0 0 1-3.371-.564v-1.383a9 9 0 0 0 1.652.506 8.7 8.7 0 0 0 1.77.186 3.57 3.57 0 0 0 2.157-.544 1.78 1.78 0 0 0 .725-1.512 1.95 1.95 0 0 0-.257-1.05 2.4 2.4 0 0 0-.86-.754 12 12 0 0 0-1.833-.784 5.84 5.84 0 0 1-2.456-1.458 3.2 3.2 0 0 1-.738-2.2 2.74 2.74 0 0 1 1.071-2.267 4.44 4.44 0 0 1 2.831-.843 8.3 8.3 0 0 1 3.38.675l-.447 1.247a7.6 7.6 0 0 0-2.966-.641 2.88 2.88 0 0 0-1.779.489 1.61 1.61 0 0 0-.64 1.357 2.1 2.1 0 0 0 .236 1.049 2.2 2.2 0 0 0 .8.75 10 10 0 0 0 1.715.754 6.8 6.8 0 0 1 2.667 1.483 2.92 2.92 0 0 1 .723 2.057\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2957\"})),P||(P=n.createElement(\"path\",{id:\"logo_small_svg__Path_2958\",d:\"M134.447 101.686v5.991a2.4 2.4 0 0 0 .515 1.686 2.1 2.1 0 0 0 1.609.556 2.63 2.63 0 0 0 2.12-.792 4 4 0 0 0 .67-2.587v-4.854h1.4v9.236H139.6l-.2-1.239h-.075a2.8 2.8 0 0 1-1.193 1.045 4 4 0 0 1-1.74.362 3.53 3.53 0 0 1-2.524-.8 3.4 3.4 0 0 1-.839-2.562v-6.042Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2958\"})),D||(D=n.createElement(\"path\",{id:\"logo_small_svg__Path_2959\",d:\"M148.206 111.09a4 4 0 0 1-1.647-.333 3.1 3.1 0 0 1-1.252-1.023h-.1a12 12 0 0 1 .1 1.533v3.8h-1.4v-13.381h1.137l.194 1.264h.067a3.26 3.26 0 0 1 1.256-1.1 3.8 3.8 0 0 1 1.643-.337 3.41 3.41 0 0 1 2.836 1.256 6.68 6.68 0 0 1-.017 7.057 3.42 3.42 0 0 1-2.817 1.264m-.2-8.385a2.48 2.48 0 0 0-2.048.784 4.04 4.04 0 0 0-.649 2.494v.312a4.63 4.63 0 0 0 .649 2.785 2.47 2.47 0 0 0 2.082.839 2.16 2.16 0 0 0 1.875-.969 4.6 4.6 0 0 0 .678-2.671 4.43 4.43 0 0 0-.678-2.651 2.23 2.23 0 0 0-1.915-.923Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2959\"})),U||(U=n.createElement(\"path\",{id:\"logo_small_svg__Path_2960\",d:\"M159.039 111.09a4 4 0 0 1-1.647-.333 3.1 3.1 0 0 1-1.252-1.023h-.1a12 12 0 0 1 .1 1.533v3.8h-1.4v-13.381h1.137l.194 1.264h.067a3.26 3.26 0 0 1 1.256-1.1 3.8 3.8 0 0 1 1.643-.337 3.41 3.41 0 0 1 2.836 1.256 6.68 6.68 0 0 1-.017 7.057 3.42 3.42 0 0 1-2.817 1.264m-.2-8.385a2.48 2.48 0 0 0-2.048.784 4.04 4.04 0 0 0-.649 2.494v.312a4.63 4.63 0 0 0 .649 2.785 2.47 2.47 0 0 0 2.082.839 2.16 2.16 0 0 0 1.875-.969 4.6 4.6 0 0 0 .678-2.671 4.43 4.43 0 0 0-.678-2.651 2.23 2.23 0 0 0-1.911-.923Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2960\"})),W||(W=n.createElement(\"path\",{id:\"logo_small_svg__Path_2961\",d:\"M173.612 106.3a5.1 5.1 0 0 1-1.137 3.527 4 4 0 0 1-3.143 1.268 4.17 4.17 0 0 1-2.2-.581 3.84 3.84 0 0 1-1.483-1.669 5.8 5.8 0 0 1-.522-2.545 5.1 5.1 0 0 1 1.129-3.518 4 4 0 0 1 3.135-1.26 3.9 3.9 0 0 1 3.08 1.29 5.07 5.07 0 0 1 1.141 3.488m-7.036 0a4.4 4.4 0 0 0 .708 2.7 2.81 2.81 0 0 0 4.167 0 4.37 4.37 0 0 0 .712-2.7 4.3 4.3 0 0 0-.712-2.675 2.5 2.5 0 0 0-2.1-.915 2.46 2.46 0 0 0-2.072.9 4.33 4.33 0 0 0-.7 2.69Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2961\"})),V||(V=n.createElement(\"path\",{id:\"logo_small_svg__Path_2962\",d:\"M180.525 101.517a5.5 5.5 0 0 1 1.1.1l-.194 1.3a4.8 4.8 0 0 0-1.011-.127 2.46 2.46 0 0 0-1.917.911 3.32 3.32 0 0 0-.8 2.267v4.955h-1.4v-9.236h1.154l.16 1.71h.068a4.05 4.05 0 0 1 1.238-1.39 2.8 2.8 0 0 1 1.6-.49Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2962\"})),K||(K=n.createElement(\"path\",{id:\"logo_small_svg__Path_2963\",d:\"M187.363 109.936a4.5 4.5 0 0 0 .716-.055 4 4 0 0 0 .548-.114v1.07a2.5 2.5 0 0 1-.67.181 5 5 0 0 1-.8.072q-2.68 0-2.68-2.823v-5.494h-1.323v-.673l1.323-.582.59-1.972h.809v2.141h2.68v1.087h-2.68v5.435a1.87 1.87 0 0 0 .4 1.281 1.38 1.38 0 0 0 1.087.446\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2963\"})),$||($=n.createElement(\"path\",{id:\"logo_small_svg__Path_2964\",d:\"M194.538 111.09a4.24 4.24 0 0 1-3.231-1.247 4.82 4.82 0 0 1-1.184-3.463 5.36 5.36 0 0 1 1.1-3.548 3.65 3.65 0 0 1 2.954-1.315 3.48 3.48 0 0 1 2.747 1.142 4.38 4.38 0 0 1 1.011 3.013v.885h-6.362a3.66 3.66 0 0 0 .822 2.469 2.84 2.84 0 0 0 2.2.843 7.4 7.4 0 0 0 2.949-.624v1.247a7.4 7.4 0 0 1-1.4.459 8 8 0 0 1-1.6.139Zm-.379-8.4a2.29 2.29 0 0 0-1.774.725 3.34 3.34 0 0 0-.779 2.006h4.828a3.07 3.07 0 0 0-.59-2.027 2.08 2.08 0 0 0-1.685-.706Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2964\"})),H||(H=n.createElement(\"path\",{id:\"logo_small_svg__Path_2965\",d:\"M206.951 109.683h-.076a3.29 3.29 0 0 1-2.9 1.407 3.43 3.43 0 0 1-2.819-1.239 5.45 5.45 0 0 1-1.006-3.522 5.54 5.54 0 0 1 1.011-3.548 3.4 3.4 0 0 1 2.814-1.264 3.36 3.36 0 0 1 2.883 1.365h.109l-.059-.665-.034-.649v-3.759h1.4v13.113h-1.138Zm-2.8.236a2.55 2.55 0 0 0 2.078-.779 3.95 3.95 0 0 0 .644-2.516v-.3a4.64 4.64 0 0 0-.653-2.8 2.48 2.48 0 0 0-2.086-.839 2.14 2.14 0 0 0-1.883.957 4.76 4.76 0 0 0-.653 2.7 4.55 4.55 0 0 0 .649 2.671 2.2 2.2 0 0 0 1.906.906Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2965\"})),Y||(Y=n.createElement(\"path\",{id:\"logo_small_svg__Path_2966\",d:\"M220.712 101.534a3.44 3.44 0 0 1 2.827 1.243 6.65 6.65 0 0 1-.009 7.053 3.42 3.42 0 0 1-2.818 1.26 4 4 0 0 1-1.648-.333 3.1 3.1 0 0 1-1.251-1.023h-.1l-.295 1.188h-1V97.809h1.4V101q0 1.069-.068 1.921h.068a3.32 3.32 0 0 1 2.894-1.387m-.2 1.171a2.44 2.44 0 0 0-2.064.822 6.34 6.34 0 0 0 .017 5.553 2.46 2.46 0 0 0 2.081.839 2.16 2.16 0 0 0 1.922-.94 4.83 4.83 0 0 0 .632-2.7 4.64 4.64 0 0 0-.632-2.689 2.24 2.24 0 0 0-1.959-.885Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2966\"})),Z||(Z=n.createElement(\"path\",{id:\"logo_small_svg__Path_2967\",d:\"M225.758 101.686h1.5l2.023 5.267a20 20 0 0 1 .826 2.6h.067q.109-.431.459-1.471t2.288-6.4h1.5l-3.969 10.518a5.25 5.25 0 0 1-1.378 2.212 2.93 2.93 0 0 1-1.934.653 5.7 5.7 0 0 1-1.264-.143V113.8a5 5 0 0 0 1.037.1 2.136 2.136 0 0 0 2.056-1.618l.514-1.314Z\",className:\"logo_small_svg__cls-2\",\"data-name\":\"Path 2967\"}))))),components_Logo=()=>n.createElement(logo_small,{height:\"40\"}),top_bar=()=>({components:{Topbar:u,Logo:components_Logo}});function isNothing(t){return null==t}var J={isNothing,isObject:function js_yaml_isObject(t){return\"object\"==typeof t&&null!==t},toArray:function toArray(t){return Array.isArray(t)?t:isNothing(t)?[]:[t]},repeat:function repeat(t,e){var r,n=\"\";for(r=0;r<e;r+=1)n+=t;return n},isNegativeZero:function isNegativeZero(t){return 0===t&&Number.NEGATIVE_INFINITY===1/t},extend:function extend(t,e){var r,n,i,o;if(e)for(r=0,n=(o=Object.keys(e)).length;r<n;r+=1)t[i=o[r]]=e[i];return t}};function formatError(t,e){var r=\"\",n=t.reason||\"(unknown reason)\";return t.mark?(t.mark.name&&(r+='in \"'+t.mark.name+'\" '),r+=\"(\"+(t.mark.line+1)+\":\"+(t.mark.column+1)+\")\",!e&&t.mark.snippet&&(r+=\"\\n\\n\"+t.mark.snippet),n+\" \"+r):n}function YAMLException$1(t,e){Error.call(this),this.name=\"YAMLException\",this.reason=t,this.mark=e,this.message=formatError(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||\"\"}YAMLException$1.prototype=Object.create(Error.prototype),YAMLException$1.prototype.constructor=YAMLException$1,YAMLException$1.prototype.toString=function toString(t){return this.name+\": \"+formatError(this,t)};var tt=YAMLException$1;function getLine(t,e,r,n,i){var o=\"\",a=\"\",s=Math.floor(i/2)-1;return n-e>s&&(e=n-s+(o=\" ... \").length),r-n>s&&(r=n+s-(a=\" ...\").length),{str:o+t.slice(e,r).replace(/\\t/g,\"→\")+a,pos:n-e+o.length}}function padStart(t,e){return J.repeat(\" \",e-t.length)+t}var et=function makeSnippet(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),\"number\"!=typeof e.indent&&(e.indent=1),\"number\"!=typeof e.linesBefore&&(e.linesBefore=3),\"number\"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,n=/\\r?\\n|\\r|\\0/g,i=[0],o=[],a=-1;r=n.exec(t.buffer);)o.push(r.index),i.push(r.index+r[0].length),t.position<=r.index&&a<0&&(a=i.length-2);a<0&&(a=i.length-1);var s,u,c=\"\",f=Math.min(t.line+e.linesAfter,o.length).toString().length,l=e.maxLength-(e.indent+f+3);for(s=1;s<=e.linesBefore&&!(a-s<0);s++)u=getLine(t.buffer,i[a-s],o[a-s],t.position-(i[a]-i[a-s]),l),c=J.repeat(\" \",e.indent)+padStart((t.line-s+1).toString(),f)+\" | \"+u.str+\"\\n\"+c;for(u=getLine(t.buffer,i[a],o[a],t.position,l),c+=J.repeat(\" \",e.indent)+padStart((t.line+1).toString(),f)+\" | \"+u.str+\"\\n\",c+=J.repeat(\"-\",e.indent+f+3+u.pos)+\"^\\n\",s=1;s<=e.linesAfter&&!(a+s>=o.length);s++)u=getLine(t.buffer,i[a+s],o[a+s],t.position-(i[a]-i[a+s]),l),c+=J.repeat(\" \",e.indent)+padStart((t.line+s+1).toString(),f)+\" | \"+u.str+\"\\n\";return c.replace(/\\n$/,\"\")},rt=[\"kind\",\"multi\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"representName\",\"defaultStyle\",\"styleAliases\"],nt=[\"scalar\",\"sequence\",\"mapping\"];var it=function Type$1(t,e){if(e=e||{},Object.keys(e).forEach((function(e){if(-1===rt.indexOf(e))throw new tt('Unknown option \"'+e+'\" is met in definition of \"'+t+'\" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=function compileStyleAliases(t){var e={};return null!==t&&Object.keys(t).forEach((function(r){t[r].forEach((function(t){e[String(t)]=r}))})),e}(e.styleAliases||null),-1===nt.indexOf(this.kind))throw new tt('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')};function compileList(t,e){var r=[];return t[e].forEach((function(t){var e=r.length;r.forEach((function(r,n){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=n)})),r[e]=t})),r}function Schema$1(t){return this.extend(t)}Schema$1.prototype.extend=function extend(t){var e=[],r=[];if(t instanceof it)r.push(t);else if(Array.isArray(t))r=r.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new tt(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(r=r.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof it))throw new tt(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");if(t.loadKind&&\"scalar\"!==t.loadKind)throw new tt(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");if(t.multi)throw new tt(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\")})),r.forEach((function(t){if(!(t instanceof it))throw new tt(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\")}));var n=Object.create(Schema$1.prototype);return n.implicit=(this.implicit||[]).concat(e),n.explicit=(this.explicit||[]).concat(r),n.compiledImplicit=compileList(n,\"implicit\"),n.compiledExplicit=compileList(n,\"explicit\"),n.compiledTypeMap=function compileMap(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function collectType(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for(t=0,e=arguments.length;t<e;t+=1)arguments[t].forEach(collectType);return r}(n.compiledImplicit,n.compiledExplicit),n};var ot=Schema$1,at=new it(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return null!==t?t:\"\"}}),st=new it(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return null!==t?t:[]}}),ut=new it(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return null!==t?t:{}}}),ct=new ot({explicit:[at,st,ut]});var lt=new it(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:function resolveYamlNull(t){if(null===t)return!0;var e=t.length;return 1===e&&\"~\"===t||4===e&&(\"null\"===t||\"Null\"===t||\"NULL\"===t)},construct:function constructYamlNull(){return null},predicate:function isNull(t){return null===t},represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"},empty:function(){return\"\"}},defaultStyle:\"lowercase\"});var ht=new it(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:function resolveYamlBoolean(t){if(null===t)return!1;var e=t.length;return 4===e&&(\"true\"===t||\"True\"===t||\"TRUE\"===t)||5===e&&(\"false\"===t||\"False\"===t||\"FALSE\"===t)},construct:function constructYamlBoolean(t){return\"true\"===t||\"True\"===t||\"TRUE\"===t},predicate:function isBoolean(t){return\"[object Boolean]\"===Object.prototype.toString.call(t)},represent:{lowercase:function(t){return t?\"true\":\"false\"},uppercase:function(t){return t?\"TRUE\":\"FALSE\"},camelcase:function(t){return t?\"True\":\"False\"}},defaultStyle:\"lowercase\"});function isOctCode(t){return 48<=t&&t<=55}function isDecCode(t){return 48<=t&&t<=57}var pt=new it(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:function resolveYamlInteger(t){if(null===t)return!1;var e,r,n=t.length,i=0,o=!1;if(!n)return!1;if(\"-\"!==(e=t[i])&&\"+\"!==e||(e=t[++i]),\"0\"===e){if(i+1===n)return!0;if(\"b\"===(e=t[++i])){for(i++;i<n;i++)if(\"_\"!==(e=t[i])){if(\"0\"!==e&&\"1\"!==e)return!1;o=!0}return o&&\"_\"!==e}if(\"x\"===e){for(i++;i<n;i++)if(\"_\"!==(e=t[i])){if(!(48<=(r=t.charCodeAt(i))&&r<=57||65<=r&&r<=70||97<=r&&r<=102))return!1;o=!0}return o&&\"_\"!==e}if(\"o\"===e){for(i++;i<n;i++)if(\"_\"!==(e=t[i])){if(!isOctCode(t.charCodeAt(i)))return!1;o=!0}return o&&\"_\"!==e}}if(\"_\"===e)return!1;for(;i<n;i++)if(\"_\"!==(e=t[i])){if(!isDecCode(t.charCodeAt(i)))return!1;o=!0}return!(!o||\"_\"===e)},construct:function constructYamlInteger(t){var e,r=t,n=1;if(-1!==r.indexOf(\"_\")&&(r=r.replace(/_/g,\"\")),\"-\"!==(e=r[0])&&\"+\"!==e||(\"-\"===e&&(n=-1),e=(r=r.slice(1))[0]),\"0\"===r)return 0;if(\"0\"===e){if(\"b\"===r[1])return n*parseInt(r.slice(2),2);if(\"x\"===r[1])return n*parseInt(r.slice(2),16);if(\"o\"===r[1])return n*parseInt(r.slice(2),8)}return n*parseInt(r,10)},predicate:function isInteger(t){return\"[object Number]\"===Object.prototype.toString.call(t)&&t%1==0&&!J.isNegativeZero(t)},represent:{binary:function(t){return t>=0?\"0b\"+t.toString(2):\"-0b\"+t.toString(2).slice(1)},octal:function(t){return t>=0?\"0o\"+t.toString(8):\"-0o\"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?\"0x\"+t.toString(16).toUpperCase():\"-0x\"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:\"decimal\",styleAliases:{binary:[2,\"bin\"],octal:[8,\"oct\"],decimal:[10,\"dec\"],hexadecimal:[16,\"hex\"]}}),dt=new RegExp(\"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\");var _t=/^[-+]?[0-9]+e/;var yt=new it(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:function resolveYamlFloat(t){return null!==t&&!(!dt.test(t)||\"_\"===t[t.length-1])},construct:function constructYamlFloat(t){var e,r;return r=\"-\"===(e=t.replace(/_/g,\"\").toLowerCase())[0]?-1:1,\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),\".inf\"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:\".nan\"===e?NaN:r*parseFloat(e,10)},predicate:function isFloat(t){return\"[object Number]\"===Object.prototype.toString.call(t)&&(t%1!=0||J.isNegativeZero(t))},represent:function representYamlFloat(t,e){var r;if(isNaN(t))switch(e){case\"lowercase\":return\".nan\";case\"uppercase\":return\".NAN\";case\"camelcase\":return\".NaN\"}else if(Number.POSITIVE_INFINITY===t)switch(e){case\"lowercase\":return\".inf\";case\"uppercase\":return\".INF\";case\"camelcase\":return\".Inf\"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case\"lowercase\":return\"-.inf\";case\"uppercase\":return\"-.INF\";case\"camelcase\":return\"-.Inf\"}else if(J.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),_t.test(r)?r.replace(\"e\",\".e\"):r},defaultStyle:\"lowercase\"}),mt=ct.extend({implicit:[lt,ht,pt,yt]}),gt=mt,vt=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),bt=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\");var St=new it(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:function resolveYamlTimestamp(t){return null!==t&&(null!==vt.exec(t)||null!==bt.exec(t))},construct:function constructYamlTimestamp(t){var e,r,n,i,o,a,s,u,c=0,f=null;if(null===(e=vt.exec(t))&&(e=bt.exec(t)),null===e)throw new Error(\"Date resolve error\");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+=\"0\";c=+c}return e[9]&&(f=6e4*(60*+e[10]+ +(e[11]||0)),\"-\"===e[9]&&(f=-f)),u=new Date(Date.UTC(r,n,i,o,a,s,c)),f&&u.setTime(u.getTime()-f),u},instanceOf:Date,represent:function representYamlTimestamp(t){return t.toISOString()}});var wt=new it(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:function resolveYamlMerge(t){return\"<<\"===t||null===t}}),It=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";var xt=new it(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:function resolveYamlBinary(t){if(null===t)return!1;var e,r,n=0,i=t.length,o=It;for(r=0;r<i;r++)if(!((e=o.indexOf(t.charAt(r)))>64)){if(e<0)return!1;n+=6}return n%8==0},construct:function constructYamlBinary(t){var e,r,n=t.replace(/[\\r\\n=]/g,\"\"),i=n.length,o=It,a=0,s=[];for(e=0;e<i;e++)e%4==0&&e&&(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(n.charAt(e));return 0===(r=i%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===r?(s.push(a>>10&255),s.push(a>>2&255)):12===r&&s.push(a>>4&255),new Uint8Array(s)},predicate:function isBinary(t){return\"[object Uint8Array]\"===Object.prototype.toString.call(t)},represent:function representYamlBinary(t){var e,r,n=\"\",i=0,o=t.length,a=It;for(e=0;e<o;e++)e%3==0&&e&&(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]),i=(i<<8)+t[e];return 0===(r=o%3)?(n+=a[i>>18&63],n+=a[i>>12&63],n+=a[i>>6&63],n+=a[63&i]):2===r?(n+=a[i>>10&63],n+=a[i>>4&63],n+=a[i<<2&63],n+=a[64]):1===r&&(n+=a[i>>2&63],n+=a[i<<4&63],n+=a[64],n+=a[64]),n}}),Et=Object.prototype.hasOwnProperty,Ot=Object.prototype.toString;var Bt=new it(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:function resolveYamlOmap(t){if(null===t)return!0;var e,r,n,i,o,a=[],s=t;for(e=0,r=s.length;e<r;e+=1){if(n=s[e],o=!1,\"[object Object]\"!==Ot.call(n))return!1;for(i in n)if(Et.call(n,i)){if(o)return!1;o=!0}if(!o)return!1;if(-1!==a.indexOf(i))return!1;a.push(i)}return!0},construct:function constructYamlOmap(t){return null!==t?t:[]}}),kt=Object.prototype.toString;var At=new it(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:function resolveYamlPairs(t){if(null===t)return!0;var e,r,n,i,o,a=t;for(o=new Array(a.length),e=0,r=a.length;e<r;e+=1){if(n=a[e],\"[object Object]\"!==kt.call(n))return!1;if(1!==(i=Object.keys(n)).length)return!1;o[e]=[i[0],n[i[0]]]}return!0},construct:function constructYamlPairs(t){if(null===t)return[];var e,r,n,i,o,a=t;for(o=new Array(a.length),e=0,r=a.length;e<r;e+=1)n=a[e],i=Object.keys(n),o[e]=[i[0],n[i[0]]];return o}}),Ct=Object.prototype.hasOwnProperty;var Mt=new it(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:function resolveYamlSet(t){if(null===t)return!0;var e,r=t;for(e in r)if(Ct.call(r,e)&&null!==r[e])return!1;return!0},construct:function constructYamlSet(t){return null!==t?t:{}}}),qt=gt.extend({implicit:[St,wt],explicit:[xt,Bt,At,Mt]}),Lt=Object.prototype.hasOwnProperty,Nt=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,jt=/[\\x85\\u2028\\u2029]/,Tt=/[,\\[\\]\\{\\}]/,Rt=/^(?:!|!!|![a-z\\-]+!)$/i,zt=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function _class(t){return Object.prototype.toString.call(t)}function is_EOL(t){return 10===t||13===t}function is_WHITE_SPACE(t){return 9===t||32===t}function is_WS_OR_EOL(t){return 9===t||32===t||10===t||13===t}function is_FLOW_INDICATOR(t){return 44===t||91===t||93===t||123===t||125===t}function fromHexCode(t){var e;return 48<=t&&t<=57?t-48:97<=(e=32|t)&&e<=102?e-97+10:-1}function simpleEscapeSequence(t){return 48===t?\"\\0\":97===t?\"\u0007\":98===t?\"\\b\":116===t||9===t?\"\\t\":110===t?\"\\n\":118===t?\"\\v\":102===t?\"\\f\":114===t?\"\\r\":101===t?\"\u001b\":32===t?\" \":34===t?'\"':47===t?\"/\":92===t?\"\\\\\":78===t?\"\":95===t?\" \":76===t?\"\\u2028\":80===t?\"\\u2029\":\"\"}function charFromCodepoint(t){return t<=65535?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10),56320+(t-65536&1023))}for(var Pt=new Array(256),Ft=new Array(256),Dt=0;Dt<256;Dt++)Pt[Dt]=simpleEscapeSequence(Dt)?1:0,Ft[Dt]=simpleEscapeSequence(Dt);function State$1(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||qt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function generateError(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=et(r),new tt(e,r)}function throwError(t,e){throw generateError(t,e)}function throwWarning(t,e){t.onWarning&&t.onWarning.call(null,generateError(t,e))}var Ut={YAML:function handleYamlDirective(t,e,r){var n,i,o;null!==t.version&&throwError(t,\"duplication of %YAML directive\"),1!==r.length&&throwError(t,\"YAML directive accepts exactly one argument\"),null===(n=/^([0-9]+)\\.([0-9]+)$/.exec(r[0]))&&throwError(t,\"ill-formed argument of the YAML directive\"),i=parseInt(n[1],10),o=parseInt(n[2],10),1!==i&&throwError(t,\"unacceptable YAML version of the document\"),t.version=r[0],t.checkLineBreaks=o<2,1!==o&&2!==o&&throwWarning(t,\"unsupported YAML version of the document\")},TAG:function handleTagDirective(t,e,r){var n,i;2!==r.length&&throwError(t,\"TAG directive accepts exactly two arguments\"),n=r[0],i=r[1],Rt.test(n)||throwError(t,\"ill-formed tag handle (first argument) of the TAG directive\"),Lt.call(t.tagMap,n)&&throwError(t,'there is a previously declared suffix for \"'+n+'\" tag handle'),zt.test(i)||throwError(t,\"ill-formed tag prefix (second argument) of the TAG directive\");try{i=decodeURIComponent(i)}catch(e){throwError(t,\"tag prefix is malformed: \"+i)}t.tagMap[n]=i}};function captureSegment(t,e,r,n){var i,o,a,s;if(e<r){if(s=t.input.slice(e,r),n)for(i=0,o=s.length;i<o;i+=1)9===(a=s.charCodeAt(i))||32<=a&&a<=1114111||throwError(t,\"expected valid JSON character\");else Nt.test(s)&&throwError(t,\"the stream contains non-printable characters\");t.result+=s}}function mergeMappings(t,e,r,n){var i,o,a,s;for(J.isObject(r)||throwError(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=0,s=(i=Object.keys(r)).length;a<s;a+=1)o=i[a],Lt.call(e,o)||(e[o]=r[o],n[o]=!0)}function storeMappingPair(t,e,r,n,i,o,a,s,u){var c,f;if(Array.isArray(i))for(c=0,f=(i=Array.prototype.slice.call(i)).length;c<f;c+=1)Array.isArray(i[c])&&throwError(t,\"nested arrays are not supported inside keys\"),\"object\"==typeof i&&\"[object Object]\"===_class(i[c])&&(i[c]=\"[object Object]\");if(\"object\"==typeof i&&\"[object Object]\"===_class(i)&&(i=\"[object Object]\"),i=String(i),null===e&&(e={}),\"tag:yaml.org,2002:merge\"===n)if(Array.isArray(o))for(c=0,f=o.length;c<f;c+=1)mergeMappings(t,e,o[c],r);else mergeMappings(t,e,o,r);else t.json||Lt.call(r,i)||!Lt.call(e,i)||(t.line=a||t.line,t.lineStart=s||t.lineStart,t.position=u||t.position,throwError(t,\"duplicated mapping key\")),\"__proto__\"===i?Object.defineProperty(e,i,{configurable:!0,enumerable:!0,writable:!0,value:o}):e[i]=o,delete r[i];return e}function readLineBreak(t){var e;10===(e=t.input.charCodeAt(t.position))?t.position++:13===e?(t.position++,10===t.input.charCodeAt(t.position)&&t.position++):throwError(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position,t.firstTabInLine=-1}function skipSeparationSpace(t,e,r){for(var n=0,i=t.input.charCodeAt(t.position);0!==i;){for(;is_WHITE_SPACE(i);)9===i&&-1===t.firstTabInLine&&(t.firstTabInLine=t.position),i=t.input.charCodeAt(++t.position);if(e&&35===i)do{i=t.input.charCodeAt(++t.position)}while(10!==i&&13!==i&&0!==i);if(!is_EOL(i))break;for(readLineBreak(t),i=t.input.charCodeAt(t.position),n++,t.lineIndent=0;32===i;)t.lineIndent++,i=t.input.charCodeAt(++t.position)}return-1!==r&&0!==n&&t.lineIndent<r&&throwWarning(t,\"deficient indentation\"),n}function testDocumentSeparator(t){var e,r=t.position;return!(45!==(e=t.input.charCodeAt(r))&&46!==e||e!==t.input.charCodeAt(r+1)||e!==t.input.charCodeAt(r+2)||(r+=3,0!==(e=t.input.charCodeAt(r))&&!is_WS_OR_EOL(e)))}function writeFoldedLines(t,e){1===e?t.result+=\" \":e>1&&(t.result+=J.repeat(\"\\n\",e-1))}function readBlockSequence(t,e){var r,n,i=t.tag,o=t.anchor,a=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),n=t.input.charCodeAt(t.position);0!==n&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,throwError(t,\"tab characters must not be used in indentation\")),45===n)&&is_WS_OR_EOL(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,skipSeparationSpace(t,!0,-1)&&t.lineIndent<=e)a.push(null),n=t.input.charCodeAt(t.position);else if(r=t.line,composeNode(t,e,3,!1,!0),a.push(t.result),skipSeparationSpace(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&0!==n)throwError(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break;return!!s&&(t.tag=i,t.anchor=o,t.kind=\"sequence\",t.result=a,!0)}function readTagProperty(t){var e,r,n,i,o=!1,a=!1;if(33!==(i=t.input.charCodeAt(t.position)))return!1;if(null!==t.tag&&throwError(t,\"duplication of a tag property\"),60===(i=t.input.charCodeAt(++t.position))?(o=!0,i=t.input.charCodeAt(++t.position)):33===i?(a=!0,r=\"!!\",i=t.input.charCodeAt(++t.position)):r=\"!\",e=t.position,o){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&62!==i);t.position<t.length?(n=t.input.slice(e,t.position),i=t.input.charCodeAt(++t.position)):throwError(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;0!==i&&!is_WS_OR_EOL(i);)33===i&&(a?throwError(t,\"tag suffix cannot contain exclamation marks\"):(r=t.input.slice(e-1,t.position+1),Rt.test(r)||throwError(t,\"named tag handle cannot contain such characters\"),a=!0,e=t.position+1)),i=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),Tt.test(n)&&throwError(t,\"tag suffix cannot contain flow indicator characters\")}n&&!zt.test(n)&&throwError(t,\"tag name cannot contain such characters: \"+n);try{n=decodeURIComponent(n)}catch(e){throwError(t,\"tag name is malformed: \"+n)}return o?t.tag=n:Lt.call(t.tagMap,r)?t.tag=t.tagMap[r]+n:\"!\"===r?t.tag=\"!\"+n:\"!!\"===r?t.tag=\"tag:yaml.org,2002:\"+n:throwError(t,'undeclared tag handle \"'+r+'\"'),!0}function readAnchorProperty(t){var e,r;if(38!==(r=t.input.charCodeAt(t.position)))return!1;for(null!==t.anchor&&throwError(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!is_WS_OR_EOL(r)&&!is_FLOW_INDICATOR(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&throwError(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function composeNode(t,e,r,n,i){var o,a,s,u,c,f,l,h,p,d=1,_=!1,y=!1;if(null!==t.listener&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,o=a=s=4===r||3===r,n&&skipSeparationSpace(t,!0,-1)&&(_=!0,t.lineIndent>e?d=1:t.lineIndent===e?d=0:t.lineIndent<e&&(d=-1)),1===d)for(;readTagProperty(t)||readAnchorProperty(t);)skipSeparationSpace(t,!0,-1)?(_=!0,s=o,t.lineIndent>e?d=1:t.lineIndent===e?d=0:t.lineIndent<e&&(d=-1)):s=!1;if(s&&(s=_||i),1!==d&&4!==r||(h=1===r||2===r?e:e+1,p=t.position-t.lineStart,1===d?s&&(readBlockSequence(t,p)||function readBlockMapping(t,e,r){var n,i,o,a,s,u,c,f=t.tag,l=t.anchor,h={},p=Object.create(null),d=null,_=null,y=null,m=!1,g=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=h),c=t.input.charCodeAt(t.position);0!==c;){if(m||-1===t.firstTabInLine||(t.position=t.firstTabInLine,throwError(t,\"tab characters must not be used in indentation\")),n=t.input.charCodeAt(t.position+1),o=t.line,63!==c&&58!==c||!is_WS_OR_EOL(n)){if(a=t.line,s=t.lineStart,u=t.position,!composeNode(t,r,2,!1,!0))break;if(t.line===o){for(c=t.input.charCodeAt(t.position);is_WHITE_SPACE(c);)c=t.input.charCodeAt(++t.position);if(58===c)is_WS_OR_EOL(c=t.input.charCodeAt(++t.position))||throwError(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),m&&(storeMappingPair(t,h,p,d,_,null,a,s,u),d=_=y=null),g=!0,m=!1,i=!1,d=t.tag,_=t.result;else{if(!g)return t.tag=f,t.anchor=l,!0;throwError(t,\"can not read an implicit mapping pair; a colon is missed\")}}else{if(!g)return t.tag=f,t.anchor=l,!0;throwError(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\")}}else 63===c?(m&&(storeMappingPair(t,h,p,d,_,null,a,s,u),d=_=y=null),g=!0,m=!0,i=!0):m?(m=!1,i=!0):throwError(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,c=n;if((t.line===o||t.lineIndent>e)&&(m&&(a=t.line,s=t.lineStart,u=t.position),composeNode(t,e,4,!0,i)&&(m?_=t.result:y=t.result),m||(storeMappingPair(t,h,p,d,_,y,a,s,u),d=_=y=null),skipSeparationSpace(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&0!==c)throwError(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return m&&storeMappingPair(t,h,p,d,_,null,a,s,u),g&&(t.tag=f,t.anchor=l,t.kind=\"mapping\",t.result=h),g}(t,p,h))||function readFlowCollection(t,e){var r,n,i,o,a,s,u,c,f,l,h,p,d=!0,_=t.tag,y=t.anchor,m=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))a=93,c=!1,o=[];else{if(123!==p)return!1;a=125,c=!0,o={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=o),p=t.input.charCodeAt(++t.position);0!==p;){if(skipSeparationSpace(t,!0,e),(p=t.input.charCodeAt(t.position))===a)return t.position++,t.tag=_,t.anchor=y,t.kind=c?\"mapping\":\"sequence\",t.result=o,!0;d?44===p&&throwError(t,\"expected the node content, but found ','\"):throwError(t,\"missed comma between flow collection entries\"),h=null,s=u=!1,63===p&&is_WS_OR_EOL(t.input.charCodeAt(t.position+1))&&(s=u=!0,t.position++,skipSeparationSpace(t,!0,e)),r=t.line,n=t.lineStart,i=t.position,composeNode(t,e,1,!1,!0),l=t.tag,f=t.result,skipSeparationSpace(t,!0,e),p=t.input.charCodeAt(t.position),!u&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),skipSeparationSpace(t,!0,e),composeNode(t,e,1,!1,!0),h=t.result),c?storeMappingPair(t,o,m,l,f,h,r,n,i):s?o.push(storeMappingPair(t,null,m,l,f,h,r,n,i)):o.push(f),skipSeparationSpace(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(d=!0,p=t.input.charCodeAt(++t.position)):d=!1}throwError(t,\"unexpected end of the stream within a flow collection\")}(t,h)?y=!0:(a&&function readBlockScalar(t,e){var r,n,i,o,a,s=1,u=!1,c=!1,f=e,l=0,h=!1;if(124===(o=t.input.charCodeAt(t.position)))n=!1;else{if(62!==o)return!1;n=!0}for(t.kind=\"scalar\",t.result=\"\";0!==o;)if(43===(o=t.input.charCodeAt(++t.position))||45===o)1===s?s=43===o?3:2:throwError(t,\"repeat of a chomping mode identifier\");else{if(!((i=48<=(a=o)&&a<=57?a-48:-1)>=0))break;0===i?throwError(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):c?throwError(t,\"repeat of an indentation width identifier\"):(f=e+i-1,c=!0)}if(is_WHITE_SPACE(o)){do{o=t.input.charCodeAt(++t.position)}while(is_WHITE_SPACE(o));if(35===o)do{o=t.input.charCodeAt(++t.position)}while(!is_EOL(o)&&0!==o)}for(;0!==o;){for(readLineBreak(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!c||t.lineIndent<f)&&32===o;)t.lineIndent++,o=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>f&&(f=t.lineIndent),is_EOL(o))l++;else{if(t.lineIndent<f){3===s?t.result+=J.repeat(\"\\n\",u?1+l:l):1===s&&u&&(t.result+=\"\\n\");break}for(n?is_WHITE_SPACE(o)?(h=!0,t.result+=J.repeat(\"\\n\",u?1+l:l)):h?(h=!1,t.result+=J.repeat(\"\\n\",l+1)):0===l?u&&(t.result+=\" \"):t.result+=J.repeat(\"\\n\",l):t.result+=J.repeat(\"\\n\",u?1+l:l),u=!0,c=!0,l=0,r=t.position;!is_EOL(o)&&0!==o;)o=t.input.charCodeAt(++t.position);captureSegment(t,r,t.position,!1)}}return!0}(t,h)||function readSingleQuotedScalar(t,e){var r,n,i;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,n=i=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(captureSegment(t,n,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;n=t.position,t.position++,i=t.position}else is_EOL(r)?(captureSegment(t,n,i,!0),writeFoldedLines(t,skipSeparationSpace(t,!1,e)),n=i=t.position):t.position===t.lineStart&&testDocumentSeparator(t)?throwError(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,i=t.position);throwError(t,\"unexpected end of the stream within a single quoted scalar\")}(t,h)||function readDoubleQuotedScalar(t,e){var r,n,i,o,a,s,u;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=n=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return captureSegment(t,r,t.position,!0),t.position++,!0;if(92===s){if(captureSegment(t,r,t.position,!0),is_EOL(s=t.input.charCodeAt(++t.position)))skipSeparationSpace(t,!1,e);else if(s<256&&Pt[s])t.result+=Ft[s],t.position++;else if((a=120===(u=s)?2:117===u?4:85===u?8:0)>0){for(i=a,o=0;i>0;i--)(a=fromHexCode(s=t.input.charCodeAt(++t.position)))>=0?o=(o<<4)+a:throwError(t,\"expected hexadecimal character\");t.result+=charFromCodepoint(o),t.position++}else throwError(t,\"unknown escape sequence\");r=n=t.position}else is_EOL(s)?(captureSegment(t,r,n,!0),writeFoldedLines(t,skipSeparationSpace(t,!1,e)),r=n=t.position):t.position===t.lineStart&&testDocumentSeparator(t)?throwError(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,n=t.position)}throwError(t,\"unexpected end of the stream within a double quoted scalar\")}(t,h)?y=!0:!function readAlias(t){var e,r,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!is_WS_OR_EOL(n)&&!is_FLOW_INDICATOR(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&throwError(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),Lt.call(t.anchorMap,r)||throwError(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],skipSeparationSpace(t,!0,-1),!0}(t)?function readPlainScalar(t,e,r){var n,i,o,a,s,u,c,f,l=t.kind,h=t.result;if(is_WS_OR_EOL(f=t.input.charCodeAt(t.position))||is_FLOW_INDICATOR(f)||35===f||38===f||42===f||33===f||124===f||62===f||39===f||34===f||37===f||64===f||96===f)return!1;if((63===f||45===f)&&(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n)))return!1;for(t.kind=\"scalar\",t.result=\"\",i=o=t.position,a=!1;0!==f;){if(58===f){if(is_WS_OR_EOL(n=t.input.charCodeAt(t.position+1))||r&&is_FLOW_INDICATOR(n))break}else if(35===f){if(is_WS_OR_EOL(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&testDocumentSeparator(t)||r&&is_FLOW_INDICATOR(f))break;if(is_EOL(f)){if(s=t.line,u=t.lineStart,c=t.lineIndent,skipSeparationSpace(t,!1,-1),t.lineIndent>=e){a=!0,f=t.input.charCodeAt(t.position);continue}t.position=o,t.line=s,t.lineStart=u,t.lineIndent=c;break}}a&&(captureSegment(t,i,o,!1),writeFoldedLines(t,t.line-s),i=o=t.position,a=!1),is_WHITE_SPACE(f)||(o=t.position+1),f=t.input.charCodeAt(++t.position)}return captureSegment(t,i,o,!1),!!t.result||(t.kind=l,t.result=h,!1)}(t,h,1===r)&&(y=!0,null===t.tag&&(t.tag=\"?\")):(y=!0,null===t.tag&&null===t.anchor||throwError(t,\"alias node should not have any properties\")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===d&&(y=s&&readBlockSequence(t,p))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if(\"?\"===t.tag){for(null!==t.result&&\"scalar\"!==t.kind&&throwError(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),u=0,c=t.implicitTypes.length;u<c;u+=1)if((l=t.implicitTypes[u]).resolve(t.result)){t.result=l.construct(t.result),t.tag=l.tag,null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);break}}else if(\"!\"!==t.tag){if(Lt.call(t.typeMap[t.kind||\"fallback\"],t.tag))l=t.typeMap[t.kind||\"fallback\"][t.tag];else for(l=null,u=0,c=(f=t.typeMap.multi[t.kind||\"fallback\"]).length;u<c;u+=1)if(t.tag.slice(0,f[u].tag.length)===f[u].tag){l=f[u];break}l||throwError(t,\"unknown tag !<\"+t.tag+\">\"),null!==t.result&&l.kind!==t.kind&&throwError(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+l.kind+'\", not \"'+t.kind+'\"'),l.resolve(t.result,t.tag)?(t.result=l.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):throwError(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")}return null!==t.listener&&t.listener(\"close\",t),null!==t.tag||null!==t.anchor||y}function readDocument(t){var e,r,n,i,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(i=t.input.charCodeAt(t.position))&&(skipSeparationSpace(t,!0,-1),i=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==i));){for(a=!0,i=t.input.charCodeAt(++t.position),e=t.position;0!==i&&!is_WS_OR_EOL(i);)i=t.input.charCodeAt(++t.position);for(n=[],(r=t.input.slice(e,t.position)).length<1&&throwError(t,\"directive name must not be less than one character in length\");0!==i;){for(;is_WHITE_SPACE(i);)i=t.input.charCodeAt(++t.position);if(35===i){do{i=t.input.charCodeAt(++t.position)}while(0!==i&&!is_EOL(i));break}if(is_EOL(i))break;for(e=t.position;0!==i&&!is_WS_OR_EOL(i);)i=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==i&&readLineBreak(t),Lt.call(Ut,r)?Ut[r](t,r,n):throwWarning(t,'unknown document directive \"'+r+'\"')}skipSeparationSpace(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,skipSeparationSpace(t,!0,-1)):a&&throwError(t,\"directives end mark is expected\"),composeNode(t,t.lineIndent-1,4,!1,!0),skipSeparationSpace(t,!0,-1),t.checkLineBreaks&&jt.test(t.input.slice(o,t.position))&&throwWarning(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&testDocumentSeparator(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,skipSeparationSpace(t,!0,-1)):t.position<t.length-1&&throwError(t,\"end of the stream or a document separator is expected\")}function loadDocuments(t,e){e=e||{},0!==(t=String(t)).length&&(10!==t.charCodeAt(t.length-1)&&13!==t.charCodeAt(t.length-1)&&(t+=\"\\n\"),65279===t.charCodeAt(0)&&(t=t.slice(1)));var r=new State$1(t,e),n=t.indexOf(\"\\0\");for(-1!==n&&(r.position=n,throwError(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";32===r.input.charCodeAt(r.position);)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)readDocument(r);return r.documents}var Wt={loadAll:function loadAll$1(t,e,r){null!==e&&\"object\"==typeof e&&void 0===r&&(r=e,e=null);var n=loadDocuments(t,r);if(\"function\"!=typeof e)return n;for(var i=0,o=n.length;i<o;i+=1)e(n[i])},load:function load$1(t,e){var r=loadDocuments(t,e);if(0!==r.length){if(1===r.length)return r[0];throw new tt(\"expected a single document in the stream, but found more\")}}},Vt=Object.prototype.toString,Kt=Object.prototype.hasOwnProperty,$t=65279,Ht={0:\"\\\\0\",7:\"\\\\a\",8:\"\\\\b\",9:\"\\\\t\",10:\"\\\\n\",11:\"\\\\v\",12:\"\\\\f\",13:\"\\\\r\",27:\"\\\\e\",34:'\\\\\"',92:\"\\\\\\\\\",133:\"\\\\N\",160:\"\\\\_\",8232:\"\\\\L\",8233:\"\\\\P\"},Yt=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"],Zt=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;function encodeHex(t){var e,r,n;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",n=2;else if(t<=65535)r=\"u\",n=4;else{if(!(t<=4294967295))throw new tt(\"code point within a string may not be greater than 0xFFFFFFFF\");r=\"U\",n=8}return\"\\\\\"+r+J.repeat(\"0\",n-e.length)+e}function State(t){this.schema=t.schema||qt,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=J.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=function compileStyleMap(t,e){var r,n,i,o,a,s,u;if(null===e)return{};for(r={},i=0,o=(n=Object.keys(e)).length;i<o;i+=1)a=n[i],s=String(e[a]),\"!!\"===a.slice(0,2)&&(a=\"tag:yaml.org,2002:\"+a.slice(2)),(u=t.compiledTypeMap.fallback[a])&&Kt.call(u.styleAliases,s)&&(s=u.styleAliases[s]),r[a]=s;return r}(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType='\"'===t.quotingType?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer=\"function\"==typeof t.replacer?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=\"\",this.duplicates=[],this.usedDuplicates=null}function indentString(t,e){for(var r,n=J.repeat(\" \",e),i=0,o=-1,a=\"\",s=t.length;i<s;)-1===(o=t.indexOf(\"\\n\",i))?(r=t.slice(i),i=s):(r=t.slice(i,o+1),i=o+1),r.length&&\"\\n\"!==r&&(a+=n),a+=r;return a}function generateNextLine(t,e){return\"\\n\"+J.repeat(\" \",t.indent*e)}function isWhitespace(t){return 32===t||9===t}function isPrintable(t){return 32<=t&&t<=126||161<=t&&t<=55295&&8232!==t&&8233!==t||57344<=t&&t<=65533&&t!==$t||65536<=t&&t<=1114111}function isNsCharOrWhitespace(t){return isPrintable(t)&&t!==$t&&13!==t&&10!==t}function isPlainSafe(t,e,r){var n=isNsCharOrWhitespace(t),i=n&&!isWhitespace(t);return(r?n:n&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t)&&35!==t&&!(58===e&&!i)||isNsCharOrWhitespace(e)&&!isWhitespace(e)&&35===t||58===e&&i}function codePointAt(t,e){var r,n=t.charCodeAt(e);return n>=55296&&n<=56319&&e+1<t.length&&(r=t.charCodeAt(e+1))>=56320&&r<=57343?1024*(n-55296)+r-56320+65536:n}function needIndentIndicator(t){return/^\\n* /.test(t)}function chooseScalarStyle(t,e,r,n,i,o,a,s){var u,c=0,f=null,l=!1,h=!1,p=-1!==n,d=-1,_=function isPlainSafeFirst(t){return isPrintable(t)&&t!==$t&&!isWhitespace(t)&&45!==t&&63!==t&&58!==t&&44!==t&&91!==t&&93!==t&&123!==t&&125!==t&&35!==t&&38!==t&&42!==t&&33!==t&&124!==t&&61!==t&&62!==t&&39!==t&&34!==t&&37!==t&&64!==t&&96!==t}(codePointAt(t,0))&&function isPlainSafeLast(t){return!isWhitespace(t)&&58!==t}(codePointAt(t,t.length-1));if(e||a)for(u=0;u<t.length;c>=65536?u+=2:u++){if(!isPrintable(c=codePointAt(t,u)))return 5;_=_&&isPlainSafe(c,f,s),f=c}else{for(u=0;u<t.length;c>=65536?u+=2:u++){if(10===(c=codePointAt(t,u)))l=!0,p&&(h=h||u-d-1>n&&\" \"!==t[d+1],d=u);else if(!isPrintable(c))return 5;_=_&&isPlainSafe(c,f,s),f=c}h=h||p&&u-d-1>n&&\" \"!==t[d+1]}return l||h?r>9&&needIndentIndicator(t)?5:a?2===o?5:2:h?4:3:!_||a||i(t)?2===o?5:2:1}function writeScalar(t,e,r,n,i){t.dump=function(){if(0===e.length)return 2===t.quotingType?'\"\"':\"''\";if(!t.noCompatMode&&(-1!==Yt.indexOf(e)||Zt.test(e)))return 2===t.quotingType?'\"'+e+'\"':\"'\"+e+\"'\";var o=t.indent*Math.max(1,r),a=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),s=n||t.flowLevel>-1&&r>=t.flowLevel;switch(chooseScalarStyle(e,s,t.indent,a,(function testAmbiguity(e){return function testImplicitResolving(t,e){var r,n;for(r=0,n=t.implicitTypes.length;r<n;r+=1)if(t.implicitTypes[r].resolve(e))return!0;return!1}(t,e)}),t.quotingType,t.forceQuotes&&!n,i)){case 1:return e;case 2:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case 3:return\"|\"+blockHeader(e,t.indent)+dropEndingNewline(indentString(e,o));case 4:return\">\"+blockHeader(e,t.indent)+dropEndingNewline(indentString(function foldString(t,e){var r,n,i=/(\\n+)([^\\n]*)/g,o=(s=t.indexOf(\"\\n\"),s=-1!==s?s:t.length,i.lastIndex=s,foldLine(t.slice(0,s),e)),a=\"\\n\"===t[0]||\" \"===t[0];var s;for(;n=i.exec(t);){var u=n[1],c=n[2];r=\" \"===c[0],o+=u+(a||r||\"\"===c?\"\":\"\\n\")+foldLine(c,e),a=r}return o}(e,a),o));case 5:return'\"'+function escapeString(t){for(var e,r=\"\",n=0,i=0;i<t.length;n>=65536?i+=2:i++)n=codePointAt(t,i),!(e=Ht[n])&&isPrintable(n)?(r+=t[i],n>=65536&&(r+=t[i+1])):r+=e||encodeHex(n);return r}(e)+'\"';default:throw new tt(\"impossible error: invalid scalar style\")}}()}function blockHeader(t,e){var r=needIndentIndicator(t)?String(e):\"\",n=\"\\n\"===t[t.length-1];return r+(n&&(\"\\n\"===t[t.length-2]||\"\\n\"===t)?\"+\":n?\"\":\"-\")+\"\\n\"}function dropEndingNewline(t){return\"\\n\"===t[t.length-1]?t.slice(0,-1):t}function foldLine(t,e){if(\"\"===t||\" \"===t[0])return t;for(var r,n,i=/ [^ ]/g,o=0,a=0,s=0,u=\"\";r=i.exec(t);)(s=r.index)-o>e&&(n=a>o?a:s,u+=\"\\n\"+t.slice(o,n),o=n+1),a=s;return u+=\"\\n\",t.length-o>e&&a>o?u+=t.slice(o,a)+\"\\n\"+t.slice(a+1):u+=t.slice(o),u.slice(1)}function writeBlockSequence(t,e,r,n){var i,o,a,s=\"\",u=t.tag;for(i=0,o=r.length;i<o;i+=1)a=r[i],t.replacer&&(a=t.replacer.call(r,String(i),a)),(writeNode(t,e+1,a,!0,!0,!1,!0)||void 0===a&&writeNode(t,e+1,null,!0,!0,!1,!0))&&(n&&\"\"===s||(s+=generateNextLine(t,e)),t.dump&&10===t.dump.charCodeAt(0)?s+=\"-\":s+=\"- \",s+=t.dump);t.tag=u,t.dump=s||\"[]\"}function detectType(t,e,r){var n,i,o,a,s,u;for(o=0,a=(i=r?t.explicitTypes:t.implicitTypes).length;o<a;o+=1)if(((s=i[o]).instanceOf||s.predicate)&&(!s.instanceOf||\"object\"==typeof e&&e instanceof s.instanceOf)&&(!s.predicate||s.predicate(e))){if(r?s.multi&&s.representName?t.tag=s.representName(e):t.tag=s.tag:t.tag=\"?\",s.represent){if(u=t.styleMap[s.tag]||s.defaultStyle,\"[object Function]\"===Vt.call(s.represent))n=s.represent(e,u);else{if(!Kt.call(s.represent,u))throw new tt(\"!<\"+s.tag+'> tag resolver accepts not \"'+u+'\" style');n=s.represent[u](e,u)}t.dump=n}return!0}return!1}function writeNode(t,e,r,n,i,o,a){t.tag=null,t.dump=r,detectType(t,r,!1)||detectType(t,r,!0);var s,u=Vt.call(t.dump),c=n;n&&(n=t.flowLevel<0||t.flowLevel>e);var f,l,h=\"[object Object]\"===u||\"[object Array]\"===u;if(h&&(l=-1!==(f=t.duplicates.indexOf(r))),(null!==t.tag&&\"?\"!==t.tag||l||2!==t.indent&&e>0)&&(i=!1),l&&t.usedDuplicates[f])t.dump=\"*ref_\"+f;else{if(h&&l&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),\"[object Object]\"===u)n&&0!==Object.keys(t.dump).length?(!function writeBlockMapping(t,e,r,n){var i,o,a,s,u,c,f=\"\",l=t.tag,h=Object.keys(r);if(!0===t.sortKeys)h.sort();else if(\"function\"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new tt(\"sortKeys must be a boolean or a function\");for(i=0,o=h.length;i<o;i+=1)c=\"\",n&&\"\"===f||(c+=generateNextLine(t,e)),s=r[a=h[i]],t.replacer&&(s=t.replacer.call(r,a,s)),writeNode(t,e+1,a,!0,!0,!0)&&((u=null!==t.tag&&\"?\"!==t.tag||t.dump&&t.dump.length>1024)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=\"?\":c+=\"? \"),c+=t.dump,u&&(c+=generateNextLine(t,e)),writeNode(t,e+1,s,!0,u)&&(t.dump&&10===t.dump.charCodeAt(0)?c+=\":\":c+=\": \",f+=c+=t.dump));t.tag=l,t.dump=f||\"{}\"}(t,e,t.dump,i),l&&(t.dump=\"&ref_\"+f+t.dump)):(!function writeFlowMapping(t,e,r){var n,i,o,a,s,u=\"\",c=t.tag,f=Object.keys(r);for(n=0,i=f.length;n<i;n+=1)s=\"\",\"\"!==u&&(s+=\", \"),t.condenseFlow&&(s+='\"'),a=r[o=f[n]],t.replacer&&(a=t.replacer.call(r,o,a)),writeNode(t,e,o,!1,!1)&&(t.dump.length>1024&&(s+=\"? \"),s+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),writeNode(t,e,a,!1,!1)&&(u+=s+=t.dump));t.tag=c,t.dump=\"{\"+u+\"}\"}(t,e,t.dump),l&&(t.dump=\"&ref_\"+f+\" \"+t.dump));else if(\"[object Array]\"===u)n&&0!==t.dump.length?(t.noArrayIndent&&!a&&e>0?writeBlockSequence(t,e-1,t.dump,i):writeBlockSequence(t,e,t.dump,i),l&&(t.dump=\"&ref_\"+f+t.dump)):(!function writeFlowSequence(t,e,r){var n,i,o,a=\"\",s=t.tag;for(n=0,i=r.length;n<i;n+=1)o=r[n],t.replacer&&(o=t.replacer.call(r,String(n),o)),(writeNode(t,e,o,!1,!1)||void 0===o&&writeNode(t,e,null,!1,!1))&&(\"\"!==a&&(a+=\",\"+(t.condenseFlow?\"\":\" \")),a+=t.dump);t.tag=s,t.dump=\"[\"+a+\"]\"}(t,e,t.dump),l&&(t.dump=\"&ref_\"+f+\" \"+t.dump));else{if(\"[object String]\"!==u){if(\"[object Undefined]\"===u)return!1;if(t.skipInvalid)return!1;throw new tt(\"unacceptable kind of an object to dump \"+u)}\"?\"!==t.tag&&writeScalar(t,t.dump,e,o,c)}null!==t.tag&&\"?\"!==t.tag&&(s=encodeURI(\"!\"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,\"%21\"),s=\"!\"===t.tag[0]?\"!\"+s:\"tag:yaml.org,2002:\"===s.slice(0,18)?\"!!\"+s.slice(18):\"!<\"+s+\">\",t.dump=s+\" \"+t.dump)}return!0}function getDuplicateReferences(t,e){var r,n,i=[],o=[];for(inspectNode(t,i,o),r=0,n=o.length;r<n;r+=1)e.duplicates.push(i[o[r]]);e.usedDuplicates=new Array(n)}function inspectNode(t,e,r){var n,i,o;if(null!==t&&\"object\"==typeof t)if(-1!==(i=e.indexOf(t)))-1===r.indexOf(i)&&r.push(i);else if(e.push(t),Array.isArray(t))for(i=0,o=t.length;i<o;i+=1)inspectNode(t[i],e,r);else for(i=0,o=(n=Object.keys(t)).length;i<o;i+=1)inspectNode(t[n[i]],e,r)}function renamed(t,e){return function(){throw new Error(\"Function yaml.\"+t+\" is removed in js-yaml 4. Use yaml.\"+e+\" instead, which is now safe by default.\")}}const Gt={Type:it,Schema:ot,FAILSAFE_SCHEMA:ct,JSON_SCHEMA:mt,CORE_SCHEMA:gt,DEFAULT_SCHEMA:qt,load:Wt.load,loadAll:Wt.loadAll,dump:{dump:function dump$1(t,e){var r=new State(e=e||{});r.noRefs||getDuplicateReferences(t,r);var n=t;return r.replacer&&(n=r.replacer.call({\"\":n},\"\",n)),writeNode(r,0,n,!0,!0)?r.dump+\"\\n\":\"\"}}.dump,YAMLException:tt,types:{binary:xt,float:yt,map:ut,null:lt,pairs:At,set:Mt,timestamp:St,bool:ht,int:pt,merge:wt,omap:Bt,seq:st,str:at},safeLoad:renamed(\"safeLoad\",\"load\"),safeLoadAll:renamed(\"safeLoadAll\",\"loadAll\"),safeDump:renamed(\"safeDump\",\"dump\")},Jt=\"configs_update\",Qt=\"configs_toggle\";function update(t,e){return{type:Jt,payload:{[t]:e}}}function toggle(t){return{type:Qt,payload:t}}const loaded=()=>()=>{},downloadConfig=t=>e=>{const{fn:{fetch:r}}=e;return r(t)},getConfigByUrl=(t,e)=>r=>{const{specActions:n,configsActions:i}=r;if(t)return i.downloadConfig(t).then(next,next);function next(i){i instanceof Error||i.status>=400?(n.updateLoadingStatus(\"failedConfig\"),n.updateLoadingStatus(\"failedConfig\"),n.updateUrl(\"\"),console.error(i.statusText+\" \"+t.url),e(null)):e(((t,e)=>{try{return Gt.load(t)}catch(t){return e&&e.errActions.newThrownErr(new Error(t)),{}}})(i.text,r))}},get=(t,e)=>t.getIn(Array.isArray(e)?e:[e]),Xt={[Jt]:(t,e)=>t.merge((0,o.fromJS)(e.payload)),[Qt]:(t,e)=>{const r=e.payload,n=t.get(r);return t.set(r,!n)}};var te=__webpack_require__(7248),ee=__webpack_require__.n(te),re=__webpack_require__(7666),ne=__webpack_require__.n(re);const ie=console.error,withErrorBoundary=t=>e=>{const{getComponent:r,fn:i}=t(),o=r(\"ErrorBoundary\"),a=i.getDisplayName(e);class WithErrorBoundary extends n.Component{render(){return n.createElement(o,{targetName:a,getComponent:r,fn:i},n.createElement(e,ne()({},this.props,this.context)))}}var s;return WithErrorBoundary.displayName=`WithErrorBoundary(${a})`,(s=e).prototype&&s.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=e.prototype.mapStateToProps),WithErrorBoundary},fallback=({name:t})=>n.createElement(\"div\",{className:\"fallback\"},\"😱 \",n.createElement(\"i\",null,\"Could not render \",\"t\"===t?\"this component\":t,\", see the console.\"));class ErrorBoundary extends n.Component{static defaultProps={targetName:\"this component\",getComponent:()=>fallback,fn:{componentDidCatch:ie},children:null};static getDerivedStateFromError(t){return{hasError:!0,error:t}}constructor(...t){super(...t),this.state={hasError:!1,error:null}}componentDidCatch(t,e){this.props.fn.componentDidCatch(t,e)}render(){const{getComponent:t,targetName:e,children:r}=this.props;if(this.state.hasError){const r=t(\"Fallback\");return n.createElement(r,{name:e})}return r}}const oe=ErrorBoundary,ae=[top_bar,function configsPlugin(){return{statePlugins:{configs:{reducers:Xt,actions:t,selectors:e}}}},stadalone_layout,(({componentList:t=[],fullOverride:e=!1}={})=>({getSystem:r})=>{const n=e?t:[\"App\",\"BaseLayout\",\"VersionPragmaFilter\",\"InfoContainer\",\"ServersContainer\",\"SchemesContainer\",\"AuthorizeBtnContainer\",\"FilterContainer\",\"Operations\",\"OperationContainer\",\"parameters\",\"responses\",\"OperationServers\",\"Models\",\"ModelWrapper\",...t],i=ee()(n,Array(n.length).fill(((t,{fn:e})=>e.withErrorBoundary(t))));return{fn:{componentDidCatch:ie,withErrorBoundary:withErrorBoundary(r)},components:{ErrorBoundary:oe,Fallback:fallback},wrapComponents:i}})({fullOverride:!0,componentList:[\"Topbar\",\"StandaloneLayout\",\"onlineValidatorBadge\"]})]})(),r=r.default})()));"
  },
  {
    "path": "web/public/swagger/swagger-ui.css",
    "content": ".swagger-ui{color:#3b4151;font-family:sans-serif}.swagger-ui html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{background-color:transparent;-webkit-text-decoration-skip:objects}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid transparent}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid transparent}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid transparent}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid transparent}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:hsla(0,0%,100%,.9)}.swagger-ui .b--white-80{border-color:hsla(0,0%,100%,.8)}.swagger-ui .b--white-70{border-color:hsla(0,0%,100%,.7)}.swagger-ui .b--white-60{border-color:hsla(0,0%,100%,.6)}.swagger-ui .b--white-50{border-color:hsla(0,0%,100%,.5)}.swagger-ui .b--white-40{border-color:hsla(0,0%,100%,.4)}.swagger-ui .b--white-30{border-color:hsla(0,0%,100%,.3)}.swagger-ui .b--white-20{border-color:hsla(0,0%,100%,.2)}.swagger-ui .b--white-10{border-color:hsla(0,0%,100%,.1)}.swagger-ui .b--white-05{border-color:hsla(0,0%,100%,.05)}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.013)}.swagger-ui .b--black-90{border-color:rgba(0,0,0,.9)}.swagger-ui .b--black-80{border-color:rgba(0,0,0,.8)}.swagger-ui .b--black-70{border-color:rgba(0,0,0,.7)}.swagger-ui .b--black-60{border-color:rgba(0,0,0,.6)}.swagger-ui .b--black-50{border-color:rgba(0,0,0,.5)}.swagger-ui .b--black-40{border-color:rgba(0,0,0,.4)}.swagger-ui .b--black-30{border-color:rgba(0,0,0,.3)}.swagger-ui .b--black-20{border-color:rgba(0,0,0,.2)}.swagger-ui .b--black-10{border-color:rgba(0,0,0,.1)}.swagger-ui .b--black-05{border-color:rgba(0,0,0,.05)}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.013)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:transparent}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-ns{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-ns{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-ns{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-ns{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .shadow-1-m{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-m{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-m{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-m{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-m{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-l{box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-l{box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-l{box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-l{box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf:after,.swagger-ui .cf:before{content:\" \";display:table}.swagger-ui .cf:after{clear:both}.swagger-ui .cf{zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:flex}.swagger-ui .inline-flex{display:inline-flex}.swagger-ui .flex-auto{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{flex:none}.swagger-ui .flex-column{flex-direction:column}.swagger-ui .flex-row{flex-direction:row}.swagger-ui .flex-wrap{flex-wrap:wrap}.swagger-ui .flex-nowrap{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{flex-direction:column-reverse}.swagger-ui .flex-row-reverse{flex-direction:row-reverse}.swagger-ui .items-start{align-items:flex-start}.swagger-ui .items-end{align-items:flex-end}.swagger-ui .items-center{align-items:center}.swagger-ui .items-baseline{align-items:baseline}.swagger-ui .items-stretch{align-items:stretch}.swagger-ui .self-start{align-self:flex-start}.swagger-ui .self-end{align-self:flex-end}.swagger-ui .self-center{align-self:center}.swagger-ui .self-baseline{align-self:baseline}.swagger-ui .self-stretch{align-self:stretch}.swagger-ui .justify-start{justify-content:flex-start}.swagger-ui .justify-end{justify-content:flex-end}.swagger-ui .justify-center{justify-content:center}.swagger-ui .justify-between{justify-content:space-between}.swagger-ui .justify-around{justify-content:space-around}.swagger-ui .content-start{align-content:flex-start}.swagger-ui .content-end{align-content:flex-end}.swagger-ui .content-center{align-content:center}.swagger-ui .content-between{align-content:space-between}.swagger-ui .content-around{align-content:space-around}.swagger-ui .content-stretch{align-content:stretch}.swagger-ui .order-0{order:0}.swagger-ui .order-1{order:1}.swagger-ui .order-2{order:2}.swagger-ui .order-3{order:3}.swagger-ui .order-4{order:4}.swagger-ui .order-5{order:5}.swagger-ui .order-6{order:6}.swagger-ui .order-7{order:7}.swagger-ui .order-8{order:8}.swagger-ui .order-last{order:99999}.swagger-ui .flex-grow-0{flex-grow:0}.swagger-ui .flex-grow-1{flex-grow:1}.swagger-ui .flex-shrink-0{flex-shrink:0}.swagger-ui .flex-shrink-1{flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:flex}.swagger-ui .inline-flex-ns{display:inline-flex}.swagger-ui .flex-auto-ns{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{flex:none}.swagger-ui .flex-column-ns{flex-direction:column}.swagger-ui .flex-row-ns{flex-direction:row}.swagger-ui .flex-wrap-ns{flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{flex-direction:row-reverse}.swagger-ui .items-start-ns{align-items:flex-start}.swagger-ui .items-end-ns{align-items:flex-end}.swagger-ui .items-center-ns{align-items:center}.swagger-ui .items-baseline-ns{align-items:baseline}.swagger-ui .items-stretch-ns{align-items:stretch}.swagger-ui .self-start-ns{align-self:flex-start}.swagger-ui .self-end-ns{align-self:flex-end}.swagger-ui .self-center-ns{align-self:center}.swagger-ui .self-baseline-ns{align-self:baseline}.swagger-ui .self-stretch-ns{align-self:stretch}.swagger-ui .justify-start-ns{justify-content:flex-start}.swagger-ui .justify-end-ns{justify-content:flex-end}.swagger-ui .justify-center-ns{justify-content:center}.swagger-ui .justify-between-ns{justify-content:space-between}.swagger-ui .justify-around-ns{justify-content:space-around}.swagger-ui .content-start-ns{align-content:flex-start}.swagger-ui .content-end-ns{align-content:flex-end}.swagger-ui .content-center-ns{align-content:center}.swagger-ui .content-between-ns{align-content:space-between}.swagger-ui .content-around-ns{align-content:space-around}.swagger-ui .content-stretch-ns{align-content:stretch}.swagger-ui .order-0-ns{order:0}.swagger-ui .order-1-ns{order:1}.swagger-ui .order-2-ns{order:2}.swagger-ui .order-3-ns{order:3}.swagger-ui .order-4-ns{order:4}.swagger-ui .order-5-ns{order:5}.swagger-ui .order-6-ns{order:6}.swagger-ui .order-7-ns{order:7}.swagger-ui .order-8-ns{order:8}.swagger-ui .order-last-ns{order:99999}.swagger-ui .flex-grow-0-ns{flex-grow:0}.swagger-ui .flex-grow-1-ns{flex-grow:1}.swagger-ui .flex-shrink-0-ns{flex-shrink:0}.swagger-ui .flex-shrink-1-ns{flex-shrink:1}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .flex-m{display:flex}.swagger-ui .inline-flex-m{display:inline-flex}.swagger-ui .flex-auto-m{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{flex:none}.swagger-ui .flex-column-m{flex-direction:column}.swagger-ui .flex-row-m{flex-direction:row}.swagger-ui .flex-wrap-m{flex-wrap:wrap}.swagger-ui .flex-nowrap-m{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{flex-direction:row-reverse}.swagger-ui .items-start-m{align-items:flex-start}.swagger-ui .items-end-m{align-items:flex-end}.swagger-ui .items-center-m{align-items:center}.swagger-ui .items-baseline-m{align-items:baseline}.swagger-ui .items-stretch-m{align-items:stretch}.swagger-ui .self-start-m{align-self:flex-start}.swagger-ui .self-end-m{align-self:flex-end}.swagger-ui .self-center-m{align-self:center}.swagger-ui .self-baseline-m{align-self:baseline}.swagger-ui .self-stretch-m{align-self:stretch}.swagger-ui .justify-start-m{justify-content:flex-start}.swagger-ui .justify-end-m{justify-content:flex-end}.swagger-ui .justify-center-m{justify-content:center}.swagger-ui .justify-between-m{justify-content:space-between}.swagger-ui .justify-around-m{justify-content:space-around}.swagger-ui .content-start-m{align-content:flex-start}.swagger-ui .content-end-m{align-content:flex-end}.swagger-ui .content-center-m{align-content:center}.swagger-ui .content-between-m{align-content:space-between}.swagger-ui .content-around-m{align-content:space-around}.swagger-ui .content-stretch-m{align-content:stretch}.swagger-ui .order-0-m{order:0}.swagger-ui .order-1-m{order:1}.swagger-ui .order-2-m{order:2}.swagger-ui .order-3-m{order:3}.swagger-ui .order-4-m{order:4}.swagger-ui .order-5-m{order:5}.swagger-ui .order-6-m{order:6}.swagger-ui .order-7-m{order:7}.swagger-ui .order-8-m{order:8}.swagger-ui .order-last-m{order:99999}.swagger-ui .flex-grow-0-m{flex-grow:0}.swagger-ui .flex-grow-1-m{flex-grow:1}.swagger-ui .flex-shrink-0-m{flex-shrink:0}.swagger-ui .flex-shrink-1-m{flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:flex}.swagger-ui .inline-flex-l{display:inline-flex}.swagger-ui .flex-auto-l{flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{flex:none}.swagger-ui .flex-column-l{flex-direction:column}.swagger-ui .flex-row-l{flex-direction:row}.swagger-ui .flex-wrap-l{flex-wrap:wrap}.swagger-ui .flex-nowrap-l{flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{flex-direction:row-reverse}.swagger-ui .items-start-l{align-items:flex-start}.swagger-ui .items-end-l{align-items:flex-end}.swagger-ui .items-center-l{align-items:center}.swagger-ui .items-baseline-l{align-items:baseline}.swagger-ui .items-stretch-l{align-items:stretch}.swagger-ui .self-start-l{align-self:flex-start}.swagger-ui .self-end-l{align-self:flex-end}.swagger-ui .self-center-l{align-self:center}.swagger-ui .self-baseline-l{align-self:baseline}.swagger-ui .self-stretch-l{align-self:stretch}.swagger-ui .justify-start-l{justify-content:flex-start}.swagger-ui .justify-end-l{justify-content:flex-end}.swagger-ui .justify-center-l{justify-content:center}.swagger-ui .justify-between-l{justify-content:space-between}.swagger-ui .justify-around-l{justify-content:space-around}.swagger-ui .content-start-l{align-content:flex-start}.swagger-ui .content-end-l{align-content:flex-end}.swagger-ui .content-center-l{align-content:center}.swagger-ui .content-between-l{align-content:space-between}.swagger-ui .content-around-l{align-content:space-around}.swagger-ui .content-stretch-l{align-content:stretch}.swagger-ui .order-0-l{order:0}.swagger-ui .order-1-l{order:1}.swagger-ui .order-2-l{order:2}.swagger-ui .order-3-l{order:3}.swagger-ui .order-4-l{order:4}.swagger-ui .order-5-l{order:5}.swagger-ui .order-6-l{order:6}.swagger-ui .order-7-l{order:7}.swagger-ui .order-8-l{order:8}.swagger-ui .order-last-l{order:99999}.swagger-ui .flex-grow-0-l{flex-grow:0}.swagger-ui .flex-grow-1-l{flex-grow:1}.swagger-ui .flex-shrink-0-l{flex-shrink:0}.swagger-ui .flex-shrink-1-l{flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{-webkit-text-decoration:none;text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.3333333333%}.swagger-ui .w-two-thirds{width:66.6666666667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.3333333333%}.swagger-ui .w-two-thirds-ns{width:66.6666666667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.3333333333%}.swagger-ui .w-two-thirds-m{width:66.6666666667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.3333333333%}.swagger-ui .w-two-thirds-l{width:66.6666666667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{transform:rotate(45deg)}.swagger-ui .rotate-90{transform:rotate(90deg)}.swagger-ui .rotate-135{transform:rotate(135deg)}.swagger-ui .rotate-180{transform:rotate(180deg)}.swagger-ui .rotate-225{transform:rotate(225deg)}.swagger-ui .rotate-270{transform:rotate(270deg)}.swagger-ui .rotate-315{transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{transform:rotate(45deg)}.swagger-ui .rotate-90-ns{transform:rotate(90deg)}.swagger-ui .rotate-135-ns{transform:rotate(135deg)}.swagger-ui .rotate-180-ns{transform:rotate(180deg)}.swagger-ui .rotate-225-ns{transform:rotate(225deg)}.swagger-ui .rotate-270-ns{transform:rotate(270deg)}.swagger-ui .rotate-315-ns{transform:rotate(315deg)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .rotate-45-m{transform:rotate(45deg)}.swagger-ui .rotate-90-m{transform:rotate(90deg)}.swagger-ui .rotate-135-m{transform:rotate(135deg)}.swagger-ui .rotate-180-m{transform:rotate(180deg)}.swagger-ui .rotate-225-m{transform:rotate(225deg)}.swagger-ui .rotate-270-m{transform:rotate(270deg)}.swagger-ui .rotate-315-m{transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{transform:rotate(45deg)}.swagger-ui .rotate-90-l{transform:rotate(90deg)}.swagger-ui .rotate-135-l{transform:rotate(135deg)}.swagger-ui .rotate-180-l{transform:rotate(180deg)}.swagger-ui .rotate-225-l{transform:rotate(225deg)}.swagger-ui .rotate-270-l{transform:rotate(270deg)}.swagger-ui .rotate-315-l{transform:rotate(315deg)}}.swagger-ui .black-90{color:rgba(0,0,0,.9)}.swagger-ui .black-80{color:rgba(0,0,0,.8)}.swagger-ui .black-70{color:rgba(0,0,0,.7)}.swagger-ui .black-60{color:rgba(0,0,0,.6)}.swagger-ui .black-50{color:rgba(0,0,0,.5)}.swagger-ui .black-40{color:rgba(0,0,0,.4)}.swagger-ui .black-30{color:rgba(0,0,0,.3)}.swagger-ui .black-20{color:rgba(0,0,0,.2)}.swagger-ui .black-10{color:rgba(0,0,0,.1)}.swagger-ui .black-05{color:rgba(0,0,0,.05)}.swagger-ui .white-90{color:hsla(0,0%,100%,.9)}.swagger-ui .white-80{color:hsla(0,0%,100%,.8)}.swagger-ui .white-70{color:hsla(0,0%,100%,.7)}.swagger-ui .white-60{color:hsla(0,0%,100%,.6)}.swagger-ui .white-50{color:hsla(0,0%,100%,.5)}.swagger-ui .white-40{color:hsla(0,0%,100%,.4)}.swagger-ui .white-30{color:hsla(0,0%,100%,.3)}.swagger-ui .white-20{color:hsla(0,0%,100%,.2)}.swagger-ui .white-10{color:hsla(0,0%,100%,.1)}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:rgba(0,0,0,.9)}.swagger-ui .bg-black-80{background-color:rgba(0,0,0,.8)}.swagger-ui .bg-black-70{background-color:rgba(0,0,0,.7)}.swagger-ui .bg-black-60{background-color:rgba(0,0,0,.6)}.swagger-ui .bg-black-50{background-color:rgba(0,0,0,.5)}.swagger-ui .bg-black-40{background-color:rgba(0,0,0,.4)}.swagger-ui .bg-black-30{background-color:rgba(0,0,0,.3)}.swagger-ui .bg-black-20{background-color:rgba(0,0,0,.2)}.swagger-ui .bg-black-10{background-color:rgba(0,0,0,.1)}.swagger-ui .bg-black-05{background-color:rgba(0,0,0,.05)}.swagger-ui .bg-white-90{background-color:hsla(0,0%,100%,.9)}.swagger-ui .bg-white-80{background-color:hsla(0,0%,100%,.8)}.swagger-ui .bg-white-70{background-color:hsla(0,0%,100%,.7)}.swagger-ui .bg-white-60{background-color:hsla(0,0%,100%,.6)}.swagger-ui .bg-white-50{background-color:hsla(0,0%,100%,.5)}.swagger-ui .bg-white-40{background-color:hsla(0,0%,100%,.4)}.swagger-ui .bg-white-30{background-color:hsla(0,0%,100%,.3)}.swagger-ui .bg-white-20{background-color:hsla(0,0%,100%,.2)}.swagger-ui .bg-white-10{background-color:hsla(0,0%,100%,.1)}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:transparent}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:rgba(0,0,0,.9)}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:rgba(0,0,0,.8)}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:rgba(0,0,0,.7)}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:rgba(0,0,0,.6)}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:rgba(0,0,0,.5)}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:rgba(0,0,0,.4)}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:rgba(0,0,0,.3)}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:rgba(0,0,0,.2)}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:rgba(0,0,0,.1)}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:hsla(0,0%,100%,.9)}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:hsla(0,0%,100%,.8)}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:hsla(0,0%,100%,.7)}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:hsla(0,0%,100%,.6)}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:hsla(0,0%,100%,.5)}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:hsla(0,0%,100%,.4)}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:hsla(0,0%,100%,.3)}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:hsla(0,0%,100%,.2)}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:hsla(0,0%,100%,.1)}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:transparent}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.swagger-ui .stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.swagger-ui .strike{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline{-webkit-text-decoration:none;text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-ns{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-ns{-webkit-text-decoration:none;text-decoration:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .strike-m{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-m{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-m{-webkit-text-decoration:none;text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .underline-l{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .no-underline-l{-webkit-text-decoration:none;text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{font-feature-settings:\"smcp\";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{font-feature-settings:\"smcp\";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{font-feature-settings:\"smcp\";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{font-feature-settings:\"smcp\";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}@media screen and (min-width:30em){.swagger-ui .clip-ns{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .clip-m{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}@media screen and (min-width:60em){.swagger-ui .clip-l{position:fixed!important;_position:absolute!important;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:baseline}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:baseline}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em)and (max-width:60em){.swagger-ui .v-base-m{vertical-align:baseline}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:baseline}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5;transition:opacity .15s ease-in}.swagger-ui .dim:active{opacity:.8;transition:opacity .15s ease-out}.swagger-ui .glow{transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1;transition:opacity .15s ease-in}.swagger-ui .hide-child .child{opacity:0;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{transform:scale(1.05)}.swagger-ui .grow:active{transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;backface-visibility:hidden;transform:translateZ(0);transition:transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{transform:scale(1.2)}.swagger-ui .grow-large:active{transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover:after{border-radius:inherit;box-shadow:0 0 16px 2px rgba(0,0,0,.2);content:\"\";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus:after,.swagger-ui .shadow-hover:hover:after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial,.swagger-ui .z-unset{z-index:auto}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;transition:color .15s ease-in}.swagger-ui .wrapper{box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:flex;flex-direction:column}.swagger-ui .try-out.btn-group{display:flex;flex:.1 2 auto;padding:0}.swagger-ui .try-out__btn{margin-left:1.25rem}.swagger-ui .opblock-tag{align-items:center;border-bottom:1px solid rgba(59,65,81,.3);cursor:pointer;display:flex;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui .opblock-tag:hover{background:rgba(0,0,0,.02)}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{flex:1}.swagger-ui .opblock-tag svg{transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;flex:2;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .opblock-tag>div{flex:1 1 150px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:640px){.swagger-ui .opblock-tag small,.swagger-ui .opblock-tag>div{flex:1}}.swagger-ui .opblock-tag .info__externaldocs{text-align:right}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;box-shadow:0 0 3px rgba(0,0,0,.19);margin:0 0 15px}.swagger-ui .opblock .tab-header{display:flex;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span:after{background:grey;bottom:-15px;content:\"\";height:4px;left:50%;position:absolute;transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{align-items:center;background:hsla(0,0%,100%,.8);box-shadow:0 1px 2px rgba(0,0,0,.1);display:flex;min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header>label{align-items:center;color:#3b4151;display:flex;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 0;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1)}@media(max-width:768px){.swagger-ui .opblock .opblock-summary-method{font-size:12px}}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{align-items:center;color:#3b4151;display:flex;font-family:monospace;font-size:16px;font-weight:600;word-break:break-word}@media(max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{flex-shrink:1}@media(max-width:640px){.swagger-ui .opblock .opblock-summary-path{max-width:100%}}.swagger-ui .opblock .opblock-summary-path__deprecated{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary-path-description-wrapper{align-items:center;display:flex;flex-direction:row;flex-grow:1;flex-wrap:wrap;gap:0 10px;padding:0 10px}@media(max-width:550px){.swagger-ui .opblock .opblock-summary-path-description-wrapper{align-items:flex-start;flex-direction:column}}.swagger-ui .opblock .opblock-summary{align-items:center;cursor:pointer;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock .opblock-summary:hover .view-line-link.copy-to-clipboard{width:24px}.swagger-ui .opblock.opblock-post{background:rgba(73,204,144,.1);border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span:after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:rgba(252,161,48,.1);border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span:after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:rgba(249,62,62,.1);border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span:after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:rgba(97,175,254,.1);border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span:after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:rgba(80,227,194,.1);border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span:after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:rgba(144,18,254,.1);border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span:after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:rgba(13,90,167,.1);border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span:after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:hsla(0,0%,92%,.1);border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span:after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .model-example .model-container{overflow-x:auto;width:100%}.swagger-ui .model-example .model-container .model-hint:not(.model-hint--embedded){top:-1.15em}.swagger-ui .tab{display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type:after{background:rgba(0,0,0,.2);content:\"\";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .tab li button.tablinks{background:none;border:0;color:inherit;font-family:inherit;font-weight:inherit;padding:0}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:flex;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{background:#333;border-radius:4px;font-size:12px;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word;word-wrap:break-word;color:#fff;font-family:monospace;font-weight:600}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important;word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;color:#fff;display:flex;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;justify-content:center;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.15);margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{align-items:flex-end;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.swagger-ui .scheme-container .schemes>.schemes-server-container{display:flex;flex-wrap:wrap;gap:10px}.swagger-ui .scheme-container .schemes>.schemes-server-container>label{color:#3b4151;display:flex;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>.schemes-server-container>label select{min-width:130px;text-transform:uppercase}.swagger-ui .scheme-container .schemes:not(:has(.schemes-server-container)){justify-content:flex-end}.swagger-ui .scheme-container .schemes .auth-wrapper{flex:none;justify-content:start}.swagger-ui .scheme-container .schemes .auth-wrapper .authorize{display:flex;flex-wrap:nowrap;margin:0;padding-right:20px}.swagger-ui .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading:after{color:#3b4151;content:\"loading\";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading:before{animation:rotation 1s linear infinite,opacity .5s;backface-visibility:hidden;border:2px solid rgba(85,85,85,.1);border-radius:100%;border-top-color:rgba(0,0,0,.6);content:\"\";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@keyframes rotation{to{transform:rotate(1turn)}}.swagger-ui .response-controls{display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:flex;font-size:1.2em;height:100%;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:transparent;border:2px solid grey;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.1);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{box-shadow:0 0 5px rgba(0,0,0,.3)}.swagger-ui .btn.cancel{background-color:transparent;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:transparent;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:flex;padding:30px}.swagger-ui .btn-group .btn{flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 0 0 10px}.swagger-ui .authorization__btn .locked{opacity:1}.swagger-ui .authorization__btn .unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{transition:all .3s;fill:#707070}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{align-items:center;background:#7d8293;border:none;border-radius:4px;bottom:10px;display:flex;height:30px;justify-content:center;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url(\"data:image/svg+xml;charset=utf-8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"16\\\" height=\\\"15\\\" aria-hidden=\\\"true\\\"><path fill=\\\"%23fff\\\" fill-rule=\\\"evenodd\\\" d=\\\"M4 12h4v1H4zm5-6H4v1h5zm2 3V7l-3 3 3 3v-2h5V9zM6.5 8H4v1h2.5zM4 11h2.5v-1H4zm9 1h1v2c-.02.28-.11.52-.3.7s-.42.28-.7.3H3c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h3c0-1.11.89-2 2-2s2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V5H3v9h10zM4 4h8c0-.55-.45-1-1-1h-1c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H5c-.55 0-1 .45-1 1\\\"/></svg>\") 50% no-repeat;border:none;flex-grow:1;flex-shrink:1;height:25px}.swagger-ui .copy-to-clipboard:active{background:#5e626f}.swagger-ui .opblock-control-arrow{background:none;border:none;text-align:center}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px}.swagger-ui .opblock .opblock-summary .view-line-link.copy-to-clipboard{height:26px;position:static}.swagger-ui select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f7f7 url(\"data:image/svg+xml;charset=utf-8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 20 20\\\"><path d=\\\"M13.418 7.859a.695.695 0 0 1 .978 0 .68.68 0 0 1 0 .969l-3.908 3.83a.697.697 0 0 1-.979 0l-3.908-3.83a.68.68 0 0 1 0-.969.695.695 0 0 1 .978 0L10 11z\\\"/></svg>\") right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media(max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}@media(max-width:640px){.swagger-ui .opblock-body select{min-width:100%;width:100%}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{line-height:1}@media(max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:hsla(0,0%,100%,.8);border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;transition:opacity .5s}.swagger-ui .checkbox label{display:flex}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:400!important;font-weight:600;margin:0!important}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url(\"data:image/svg+xml;charset=utf-8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"10\\\" height=\\\"8\\\" viewBox=\\\"3 7 10 8\\\"><path fill=\\\"%2341474E\\\" fill-rule=\\\"evenodd\\\" d=\\\"M6.333 15 3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z\\\"/></svg>\") 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:rgba(0,0,0,.8);bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;box-shadow:0 10px 30px 0 rgba(0,0,0,.2);left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{align-items:center;border-bottom:1px solid #ebebeb;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;transform:rotate(90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .model-toggle.collapsed{transform:rotate(0deg)}.swagger-ui .model-toggle:after{background:url(\"data:image/svg+xml;charset=utf-8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\\\"/></svg>\") 50% no-repeat;background-size:100%;content:\"\";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{display:block}.swagger-ui .model-hint{background:rgba(0,0,0,.7);border-radius:4px;color:#ebebeb;display:none;padding:.1em .5em;position:absolute;top:-1.8em;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui .model .property.primitive.extension{display:block}.swagger-ui .model .property.primitive.extension>td:first-child{padding-left:0;padding-right:0;width:auto}.swagger-ui .model .property.primitive.extension>td:first-child:after{content:\": \"}.swagger-ui .model .external-docs,.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui table.model tr.external-docs td:first-child{font-weight:700}.swagger-ui table.model tr .renderedMarkdown p:first-child{margin-top:0}.swagger-ui section.models{border:1px solid rgba(59,65,81,.3);border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid rgba(59,65,81,.3);margin:0 0 5px}.swagger-ui section.models h4{align-items:center;color:#606060;cursor:pointer;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;transition:all .2s}.swagger-ui section.models h4 svg{transition:all .4s}.swagger-ui section.models h4 span{flex:1}.swagger-ui section.models h4:hover{background:rgba(0,0,0,.02)}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;position:relative;transition:all .5s}.swagger-ui section.models .model-container:hover{background:rgba(0,0,0,.07)}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui section.models .model-box:has(.model-box){overflow-x:auto;width:100%}.swagger-ui .model-box{background:rgba(0,0,0,.1);border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px;width:100%}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table tbody tr td:has(.model-box){max-width:1px}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid rgba(59,65,81,.2);color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameters-col_description .markdown p,.swagger-ui .parameters-col_description .renderedMarkdown p{margin:0}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required:after{color:rgba(255,0,0,.6);content:\"required\";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px;width:auto}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_description .markdown p,.swagger-ui .response-col_description .renderedMarkdown p{margin:0}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper{align-items:center;display:flex;flex-wrap:wrap;gap:10px}@media(max-width:550px){.swagger-ui .topbar .topbar-wrapper{align-items:start;flex-direction:column}}.swagger-ui .topbar a{align-items:center;color:#fff;display:flex;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;-webkit-text-decoration:none;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:flex;flex:3;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;max-width:100%;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{align-items:center;color:#f0f0f0;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;box-shadow:none;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}@media(max-width:550px){.swagger-ui .topbar .download-url-wrapper{width:100%}}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info pre,.swagger-ui .info table{font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5,.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300!important;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:flex;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:flex;flex:1;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-left:10px;margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{animation:scaleUp .5s;background:rgba(249,62,62,.1);border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;-webkit-text-decoration:underline;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{align-items:center;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;flex:1;font-family:sans-serif;font-size:20px;margin:0}@keyframes scaleUp{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:rgba(0,0,0,.05);border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block}.swagger-ui .json-schema-2020-12-keyword--\\$vocabulary ul{border-left:1px dashed rgba(0,0,0,.1);margin:0 0 0 20px}.swagger-ui .json-schema-2020-12-\\$vocabulary-uri{margin-left:35px}.swagger-ui .json-schema-2020-12-\\$vocabulary-uri--disabled{-webkit-text-decoration:line-through;text-decoration:line-through}.swagger-ui .json-schema-2020-12-keyword--const .json-schema-2020-12-json-viewer__name,.swagger-ui .json-schema-2020-12-keyword--const .json-schema-2020-12-json-viewer__value{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12__constraint{background-color:#805ad5;border-radius:4px;color:#3b4151;color:#fff;font-family:monospace;font-weight:600;line-height:1.5;margin-left:10px;padding:1px 3px}.swagger-ui .json-schema-2020-12__constraint--string{background-color:#d69e2e;color:#fff}.swagger-ui .json-schema-2020-12-keyword--default .json-schema-2020-12-json-viewer__name,.swagger-ui .json-schema-2020-12-keyword--default .json-schema-2020-12-json-viewer__value{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-keyword--dependentRequired>ul{display:inline-block;margin:0;padding:0}.swagger-ui .json-schema-2020-12-keyword--dependentRequired>ul li{display:inline;list-style-type:none}.swagger-ui .json-schema-2020-12-keyword--description{color:#6b6b6b;font-size:12px;margin-left:20px}.swagger-ui .json-schema-2020-12-keyword--description p{margin:0}.swagger-ui .json-schema-2020-12-keyword--enum .json-schema-2020-12-json-viewer__name,.swagger-ui .json-schema-2020-12-keyword--enum .json-schema-2020-12-json-viewer__value,.swagger-ui .json-schema-2020-12-keyword--examples .json-schema-2020-12-json-viewer__name,.swagger-ui .json-schema-2020-12-keyword--examples .json-schema-2020-12-json-viewer__value{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-json-viewer-extension-keyword .json-schema-2020-12-json-viewer__name,.swagger-ui .json-schema-2020-12-json-viewer-extension-keyword .json-schema-2020-12-json-viewer__value{color:#929292;font-style:italic}.swagger-ui .json-schema-2020-12-keyword--patternProperties ul{border:none;margin:0;padding:0}.swagger-ui .json-schema-2020-12-keyword--patternProperties .json-schema-2020-12__title:first-of-type:after,.swagger-ui .json-schema-2020-12-keyword--patternProperties .json-schema-2020-12__title:first-of-type:before{color:#55a;content:\"/\"}.swagger-ui .json-schema-2020-12-keyword--properties>ul{border:none;margin:0;padding:0}.swagger-ui .json-schema-2020-12-property{list-style-type:none}.swagger-ui .json-schema-2020-12-property--required>.json-schema-2020-12:first-of-type>.json-schema-2020-12-head .json-schema-2020-12__title:after{color:red;content:\"*\";font-weight:700}.swagger-ui .json-schema-2020-12__title{color:#505050;display:inline-block;font-family:sans-serif;font-size:12px;font-weight:700;line-height:normal}.swagger-ui .json-schema-2020-12__title .json-schema-2020-12-keyword__name{margin:0}.swagger-ui .json-schema-2020-12-property{margin:7px 0}.swagger-ui .json-schema-2020-12-property .json-schema-2020-12__title{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;vertical-align:middle}.swagger-ui .json-schema-2020-12-keyword{margin:5px 0}.swagger-ui .json-schema-2020-12-keyword__children{border-left:1px dashed rgba(0,0,0,.1);margin:0 0 0 20px;padding:0}.swagger-ui .json-schema-2020-12-keyword__children--collapsed{display:none}.swagger-ui .json-schema-2020-12-keyword__name{font-size:12px;font-weight:700;margin-left:20px}.swagger-ui .json-schema-2020-12-keyword__name--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-keyword__name--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__name--extension{color:#929292;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__value{color:#6b6b6b;font-size:12px;font-style:italic;font-weight:400}.swagger-ui .json-schema-2020-12-keyword__value--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-keyword__value--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__value--extension{color:#929292;font-style:italic}.swagger-ui .json-schema-2020-12-keyword__value--warning{border:1px dashed red;border-radius:4px;color:#3b4151;color:red;display:inline-block;font-family:monospace;font-style:normal;font-weight:600;line-height:1.5;margin-left:10px;padding:1px 4px}.swagger-ui .json-schema-2020-12-keyword__name--secondary+.json-schema-2020-12-keyword__value--secondary:before{content:\"=\"}.swagger-ui .json-schema-2020-12__attribute{color:#3b4151;font-family:monospace;font-size:12px;padding-left:10px;text-transform:lowercase}.swagger-ui .json-schema-2020-12__attribute--primary{color:#55a}.swagger-ui .json-schema-2020-12__attribute--muted{color:gray}.swagger-ui .json-schema-2020-12__attribute--warning{color:red}.swagger-ui .json-schema-2020-12-json-viewer{margin:5px 0}.swagger-ui .json-schema-2020-12-json-viewer__children{border-left:1px dashed rgba(0,0,0,.1);margin:0 0 0 20px;padding:0}.swagger-ui .json-schema-2020-12-json-viewer__children--collapsed{display:none}.swagger-ui .json-schema-2020-12-json-viewer__name{font-size:12px;font-weight:700;margin-left:20px}.swagger-ui .json-schema-2020-12-json-viewer__name--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-json-viewer__name--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-json-viewer__name--extension{color:#929292;font-style:italic}.swagger-ui .json-schema-2020-12-json-viewer__value{color:#6b6b6b;font-size:12px;font-style:italic;font-weight:400}.swagger-ui .json-schema-2020-12-json-viewer__value--primary{color:#3b4151;font-style:normal}.swagger-ui .json-schema-2020-12-json-viewer__value--secondary{color:#6b6b6b;font-style:italic}.swagger-ui .json-schema-2020-12-json-viewer__value--extension{color:#929292;font-style:italic}.swagger-ui .json-schema-2020-12-json-viewer__value--warning{border:1px dashed red;border-radius:4px;color:#3b4151;color:red;display:inline-block;font-family:monospace;font-style:normal;font-weight:600;line-height:1.5;margin-left:10px;padding:1px 4px}.swagger-ui .json-schema-2020-12-json-viewer__name--secondary+.json-schema-2020-12-json-viewer__value--secondary:before{content:\"=\"}.swagger-ui .json-schema-2020-12{background-color:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;padding:12px 0 12px 20px}.swagger-ui .json-schema-2020-12:first-of-type{margin:20px}.swagger-ui .json-schema-2020-12:last-of-type{margin:0 20px}.swagger-ui .json-schema-2020-12--embedded{background-color:inherit;padding-bottom:0;padding-left:inherit;padding-right:inherit;padding-top:0}.swagger-ui .json-schema-2020-12-body{border-left:1px dashed rgba(0,0,0,.1);margin:2px 0}.swagger-ui .json-schema-2020-12-body--collapsed{display:none}.swagger-ui .json-schema-2020-12-accordion{border:none;outline:none;padding-left:0}.swagger-ui .json-schema-2020-12-accordion__children{display:inline-block}.swagger-ui .json-schema-2020-12-accordion__icon{display:inline-block;height:18px;vertical-align:bottom;width:18px}.swagger-ui .json-schema-2020-12-accordion__icon--expanded{transform:rotate(-90deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .json-schema-2020-12-accordion__icon--collapsed{transform:rotate(0deg);transform-origin:50% 50%;transition:transform .15s ease-in}.swagger-ui .json-schema-2020-12-accordion__icon svg{height:20px;width:20px}.swagger-ui .json-schema-2020-12-expand-deep-button{border:none;color:#505050;color:#afaeae;font-family:sans-serif;font-size:12px;padding-right:0}.swagger-ui .model-box .json-schema-2020-12:not(.json-schema-2020-12--embedded)>.json-schema-2020-12-head .json-schema-2020-12__title:first-of-type{font-size:16px}.swagger-ui .model-box>.json-schema-2020-12{margin:0}.swagger-ui .model-box .json-schema-2020-12{background-color:transparent;padding:0}.swagger-ui .model-box .json-schema-2020-12-accordion,.swagger-ui .model-box .json-schema-2020-12-expand-deep-button{background-color:transparent}.swagger-ui .models .json-schema-2020-12:not(.json-schema-2020-12--embedded)>.json-schema-2020-12-head .json-schema-2020-12__title:first-of-type{font-size:16px}.swagger-ui .models .json-schema-2020-12:not(.json-schema-2020-12--embedded){overflow-x:auto;width:calc(100% - 40px)}\n\n/*# sourceMappingURL=swagger-ui.css.map*/"
  },
  {
    "path": "web/public/swagger/swagger-ui.js",
    "content": "!function webpackUniversalModuleDefinition(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.SwaggerUICore=t():e.SwaggerUICore=t()}(this,(()=>(()=>{\"use strict\";var e={158:e=>{e.exports=require(\"buffer\")}},t={};function __webpack_require__(r){var a=t[r];if(void 0!==a)return a.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,__webpack_require__),n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};__webpack_require__.d(r,{default:()=>To});var a={};__webpack_require__.r(a),__webpack_require__.d(a,{CLEAR:()=>D,CLEAR_BY:()=>U,NEW_AUTH_ERR:()=>L,NEW_SPEC_ERR:()=>$,NEW_SPEC_ERR_BATCH:()=>V,NEW_THROWN_ERR:()=>R,NEW_THROWN_ERR_BATCH:()=>J,clear:()=>clear,clearBy:()=>clearBy,newAuthErr:()=>newAuthErr,newSpecErr:()=>newSpecErr,newSpecErrBatch:()=>newSpecErrBatch,newThrownErr:()=>newThrownErr,newThrownErrBatch:()=>newThrownErrBatch});var n={};__webpack_require__.r(n),__webpack_require__.d(n,{AUTHORIZE:()=>he,AUTHORIZE_OAUTH2:()=>ye,CONFIGURE_AUTH:()=>fe,LOGOUT:()=>ge,RESTORE_AUTHORIZATION:()=>Se,SHOW_AUTH_POPUP:()=>de,authPopup:()=>authPopup,authorize:()=>authorize,authorizeAccessCodeWithBasicAuthentication:()=>authorizeAccessCodeWithBasicAuthentication,authorizeAccessCodeWithFormParams:()=>authorizeAccessCodeWithFormParams,authorizeApplication:()=>authorizeApplication,authorizeOauth2:()=>authorizeOauth2,authorizeOauth2WithPersistOption:()=>authorizeOauth2WithPersistOption,authorizePassword:()=>authorizePassword,authorizeRequest:()=>authorizeRequest,authorizeWithPersistOption:()=>authorizeWithPersistOption,configureAuth:()=>configureAuth,logout:()=>logout,logoutWithPersistOption:()=>logoutWithPersistOption,persistAuthorizationIfNeeded:()=>persistAuthorizationIfNeeded,preAuthorizeImplicit:()=>preAuthorizeImplicit,restoreAuthorization:()=>restoreAuthorization,showDefinitions:()=>showDefinitions});var s={};__webpack_require__.r(s),__webpack_require__.d(s,{authorized:()=>be,definitionsForRequirements:()=>definitionsForRequirements,definitionsToAuthorize:()=>we,getConfigs:()=>Ce,getDefinitionsByNames:()=>getDefinitionsByNames,isAuthorized:()=>isAuthorized,selectAuthPath:()=>selectAuthPath,shownDefinitions:()=>ve});var o={};__webpack_require__.r(o),__webpack_require__.d(o,{TOGGLE_CONFIGS:()=>Me,UPDATE_CONFIGS:()=>Pe,downloadConfig:()=>downloadConfig,getConfigByUrl:()=>getConfigByUrl,loaded:()=>actions_loaded,toggle:()=>toggle,update:()=>update});var l={};__webpack_require__.r(l),__webpack_require__.d(l,{get:()=>get});var c={};__webpack_require__.r(c),__webpack_require__.d(c,{transform:()=>transform});var i={};__webpack_require__.r(i),__webpack_require__.d(i,{transform:()=>parameter_oneof_transform});var p={};__webpack_require__.r(p),__webpack_require__.d(p,{allErrors:()=>Xe,lastError:()=>Ge});var m={};__webpack_require__.r(m),__webpack_require__.d(m,{SHOW:()=>rt,UPDATE_FILTER:()=>et,UPDATE_LAYOUT:()=>Ze,UPDATE_MODE:()=>tt,changeMode:()=>changeMode,show:()=>actions_show,updateFilter:()=>updateFilter,updateLayout:()=>updateLayout});var u={};__webpack_require__.r(u),__webpack_require__.d(u,{current:()=>current,currentFilter:()=>currentFilter,isShown:()=>isShown,showSummary:()=>nt,whatMode:()=>whatMode});var d={};__webpack_require__.r(d),__webpack_require__.d(d,{taggedOperations:()=>taggedOperations});var h={};__webpack_require__.r(h),__webpack_require__.d(h,{getActiveLanguage:()=>lt,getDefaultExpanded:()=>ct,getGenerators:()=>ot,getSnippetGenerators:()=>getSnippetGenerators});var g={};__webpack_require__.r(g),__webpack_require__.d(g,{JsonSchemaArrayItemFile:()=>JsonSchemaArrayItemFile,JsonSchemaArrayItemText:()=>JsonSchemaArrayItemText,JsonSchemaForm:()=>JsonSchemaForm,JsonSchema_array:()=>JsonSchema_array,JsonSchema_boolean:()=>JsonSchema_boolean,JsonSchema_object:()=>JsonSchema_object,JsonSchema_string:()=>JsonSchema_string});var y={};__webpack_require__.r(y),__webpack_require__.d(y,{allowTryItOutFor:()=>allowTryItOutFor,basePath:()=>cr,canExecuteScheme:()=>canExecuteScheme,consumes:()=>ar,consumesOptionsFor:()=>consumesOptionsFor,contentTypeValues:()=>contentTypeValues,currentProducesFor:()=>currentProducesFor,definitions:()=>lr,externalDocs:()=>Yt,findDefinition:()=>findDefinition,getOAS3RequiredRequestBodyContentType:()=>getOAS3RequiredRequestBodyContentType,getParameter:()=>getParameter,hasHost:()=>fr,host:()=>ir,info:()=>Gt,isMediaTypeSchemaPropertiesEqual:()=>isMediaTypeSchemaPropertiesEqual,isOAS3:()=>Xt,lastError:()=>Dt,mutatedRequestFor:()=>mutatedRequestFor,mutatedRequests:()=>yr,operationScheme:()=>operationScheme,operationWithMeta:()=>operationWithMeta,operations:()=>rr,operationsWithRootInherited:()=>mr,operationsWithTags:()=>dr,parameterInclusionSettingFor:()=>parameterInclusionSettingFor,parameterValues:()=>parameterValues,parameterWithMeta:()=>parameterWithMeta,parameterWithMetaByIdentity:()=>parameterWithMetaByIdentity,parametersIncludeIn:()=>parametersIncludeIn,parametersIncludeType:()=>parametersIncludeType,paths:()=>er,produces:()=>nr,producesOptionsFor:()=>producesOptionsFor,requestFor:()=>requestFor,requests:()=>gr,responseFor:()=>responseFor,responses:()=>hr,schemes:()=>pr,security:()=>sr,securityDefinitions:()=>or,semver:()=>Zt,spec:()=>spec,specJS:()=>Ft,specJson:()=>Bt,specJsonWithResolvedSubtrees:()=>Ht,specResolved:()=>Wt,specResolvedSubtree:()=>specResolvedSubtree,specSource:()=>zt,specStr:()=>Kt,tagDetails:()=>tagDetails,taggedOperations:()=>selectors_taggedOperations,tags:()=>ur,url:()=>Ut,validOperationMethods:()=>tr,validateBeforeExecute:()=>validateBeforeExecute,validationErrors:()=>validationErrors,version:()=>Qt});var f={};__webpack_require__.r(f),__webpack_require__.d(f,{CLEAR_REQUEST:()=>Jr,CLEAR_RESPONSE:()=>Rr,CLEAR_VALIDATE_PARAMS:()=>$r,LOG_REQUEST:()=>Tr,SET_MUTATED_REQUEST:()=>Mr,SET_REQUEST:()=>Pr,SET_RESPONSE:()=>qr,SET_SCHEME:()=>Ur,UPDATE_EMPTY_PARAM_INCLUSION:()=>Ir,UPDATE_JSON:()=>kr,UPDATE_OPERATION_META_VALUE:()=>Vr,UPDATE_PARAM:()=>Ar,UPDATE_RESOLVED:()=>Lr,UPDATE_RESOLVED_SUBTREE:()=>Dr,UPDATE_SPEC:()=>Or,UPDATE_URL:()=>Nr,VALIDATE_PARAMS:()=>jr,changeConsumesValue:()=>changeConsumesValue,changeParam:()=>changeParam,changeParamByIdentity:()=>changeParamByIdentity,changeProducesValue:()=>changeProducesValue,clearRequest:()=>clearRequest,clearResponse:()=>clearResponse,clearValidateParams:()=>clearValidateParams,execute:()=>actions_execute,executeRequest:()=>executeRequest,invalidateResolvedSubtreeCache:()=>invalidateResolvedSubtreeCache,logRequest:()=>logRequest,parseToJson:()=>parseToJson,requestResolvedSubtree:()=>requestResolvedSubtree,resolveSpec:()=>resolveSpec,setMutatedRequest:()=>setMutatedRequest,setRequest:()=>setRequest,setResponse:()=>setResponse,setScheme:()=>setScheme,updateEmptyParamInclusion:()=>updateEmptyParamInclusion,updateJsonSpec:()=>updateJsonSpec,updateResolved:()=>updateResolved,updateResolvedSubtree:()=>updateResolvedSubtree,updateSpec:()=>updateSpec,updateUrl:()=>updateUrl,validateParams:()=>validateParams});var S={};__webpack_require__.r(S),__webpack_require__.d(S,{executeRequest:()=>wrap_actions_executeRequest,updateJsonSpec:()=>wrap_actions_updateJsonSpec,updateSpec:()=>wrap_actions_updateSpec,validateParams:()=>wrap_actions_validateParams});var E={};__webpack_require__.r(E),__webpack_require__.d(E,{Button:()=>Button,Col:()=>Col,Collapse:()=>Collapse,Container:()=>Container,Input:()=>Input,Link:()=>Link,Row:()=>Row,Select:()=>Select,TextArea:()=>TextArea});var _={};__webpack_require__.r(_),__webpack_require__.d(_,{basePath:()=>wn,consumes:()=>bn,definitions:()=>Sn,findDefinition:()=>fn,hasHost:()=>En,host:()=>vn,produces:()=>Cn,schemes:()=>xn,securityDefinitions:()=>_n,validOperationMethods:()=>wrap_selectors_validOperationMethods});var v={};__webpack_require__.r(v),__webpack_require__.d(v,{definitionsToAuthorize:()=>On});var w={};__webpack_require__.r(w),__webpack_require__.d(w,{callbacksOperations:()=>An,findSchema:()=>findSchema,isOAS3:()=>selectors_isOAS3,isOAS30:()=>selectors_isOAS30,isSwagger2:()=>selectors_isSwagger2,servers:()=>kn});var b={};__webpack_require__.r(b),__webpack_require__.d(b,{CLEAR_REQUEST_BODY_VALIDATE_ERROR:()=>Xn,CLEAR_REQUEST_BODY_VALUE:()=>Gn,SET_REQUEST_BODY_VALIDATE_ERROR:()=>Hn,UPDATE_ACTIVE_EXAMPLES_MEMBER:()=>zn,UPDATE_REQUEST_BODY_INCLUSION:()=>Kn,UPDATE_REQUEST_BODY_VALUE:()=>Dn,UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG:()=>Un,UPDATE_REQUEST_CONTENT_TYPE:()=>Bn,UPDATE_RESPONSE_CONTENT_TYPE:()=>Fn,UPDATE_SELECTED_SERVER:()=>Ln,UPDATE_SERVER_VARIABLE_VALUE:()=>Wn,clearRequestBodyValidateError:()=>clearRequestBodyValidateError,clearRequestBodyValue:()=>clearRequestBodyValue,initRequestBodyValidateError:()=>initRequestBodyValidateError,setActiveExamplesMember:()=>setActiveExamplesMember,setRequestBodyInclusion:()=>setRequestBodyInclusion,setRequestBodyValidateError:()=>setRequestBodyValidateError,setRequestBodyValue:()=>setRequestBodyValue,setRequestContentType:()=>setRequestContentType,setResponseContentType:()=>setResponseContentType,setRetainRequestBodyValueFlag:()=>setRetainRequestBodyValueFlag,setSelectedServer:()=>setSelectedServer,setServerVariableValue:()=>setServerVariableValue});var C={};__webpack_require__.r(C),__webpack_require__.d(C,{activeExamplesMember:()=>ss,hasUserEditedBody:()=>rs,requestBodyErrors:()=>ns,requestBodyInclusionSetting:()=>as,requestBodyValue:()=>es,requestContentType:()=>os,responseContentType:()=>ls,selectDefaultRequestBodyValue:()=>selectDefaultRequestBodyValue,selectedServer:()=>Zn,serverEffectiveValue:()=>ps,serverVariableValue:()=>cs,serverVariables:()=>is,shouldRetainRequestBodyValue:()=>ts,validOperationMethods:()=>us,validateBeforeExecute:()=>ms,validateShallowRequired:()=>validateShallowRequired});const x=require(\"react\");var O=__webpack_require__.n(x);const N=require(\"redux\"),k=require(\"immutable\");var A=__webpack_require__.n(k);const I=require(\"deep-extend\");var j=__webpack_require__.n(I);const q=require(\"redux-immutable\"),P=require(\"serialize-error\"),M=require(\"lodash/merge\");var T=__webpack_require__.n(M);const R=\"err_new_thrown_err\",J=\"err_new_thrown_err_batch\",$=\"err_new_spec_err\",V=\"err_new_spec_err_batch\",L=\"err_new_auth_err\",D=\"err_clear\",U=\"err_clear_by\";function newThrownErr(e){return{type:R,payload:(0,P.serializeError)(e)}}function newThrownErrBatch(e){return{type:J,payload:e}}function newSpecErr(e){return{type:$,payload:e}}function newSpecErrBatch(e){return{type:V,payload:e}}function newAuthErr(e){return{type:L,payload:e}}function clear(e={}){return{type:D,payload:e}}function clearBy(e=()=>!0){return{type:U,payload:e}}const K=function makeWindow(){var e={location:{},history:{},open:()=>{},close:()=>{},File:function(){},FormData:function(){}};if(\"undefined\"==typeof window)return e;try{e=window;for(var t of[\"File\",\"Blob\",\"FormData\"])t in window&&(e[t]=window[t])}catch(e){console.error(e)}return e}(),z=(require(\"lodash/camelCase\"),require(\"lodash/upperFirst\"),require(\"lodash/memoize\"));var B=__webpack_require__.n(z);const F=require(\"lodash/find\");var W=__webpack_require__.n(F);const H=require(\"lodash/some\");var X=__webpack_require__.n(H);const G=require(\"lodash/eq\");var Y=__webpack_require__.n(G);const Q=require(\"lodash/isFunction\");var Z=__webpack_require__.n(Q);const ee=require(\"css.escape\");var te=__webpack_require__.n(ee);const re=require(\"randombytes\");var ae=__webpack_require__.n(re);const ne=require(\"sha.js\");var se=__webpack_require__.n(ne);const oe=A().Set.of(\"type\",\"format\",\"items\",\"default\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"enum\",\"multipleOf\");function getParameterSchema(e,{isOAS3:t}={}){if(!A().Map.isMap(e))return{schema:A().Map(),parameterContentMediaType:null};if(!t)return\"body\"===e.get(\"in\")?{schema:e.get(\"schema\",A().Map()),parameterContentMediaType:null}:{schema:e.filter(((e,t)=>oe.includes(t))),parameterContentMediaType:null};if(e.get(\"content\")){const t=e.get(\"content\",A().Map({})).keySeq().first();return{schema:e.getIn([\"content\",t,\"schema\"],A().Map()),parameterContentMediaType:t}}return{schema:e.get(\"schema\")?e.get(\"schema\",A().Map()):A().Map(),parameterContentMediaType:null}}var le=__webpack_require__(158).Buffer;const ce=\"default\",isImmutable=e=>A().Iterable.isIterable(e),immutableToJS=e=>isImmutable(e)?e.toJS():e;function objectify(e){return isObject(e)?immutableToJS(e):{}}function fromJSOrdered(e){if(isImmutable(e))return e;if(e instanceof K.File)return e;if(!isObject(e))return e;if(Array.isArray(e))return A().Seq(e).map(fromJSOrdered).toList();if(Z()(e.entries)){const t=function createObjWithHashedKeys(e){if(!Z()(e.entries))return e;const t={},r=\"_**[]\",a={};for(let n of e.entries())if(t[n[0]]||a[n[0]]&&a[n[0]].containsMultiple){if(!a[n[0]]){a[n[0]]={containsMultiple:!0,length:1},t[`${n[0]}${r}${a[n[0]].length}`]=t[n[0]],delete t[n[0]]}a[n[0]].length+=1,t[`${n[0]}${r}${a[n[0]].length}`]=n[1]}else t[n[0]]=n[1];return t}(e);return A().OrderedMap(t).map(fromJSOrdered)}return A().OrderedMap(e).map(fromJSOrdered)}function normalizeArray(e){return Array.isArray(e)?e:[e]}function isFn(e){return\"function\"==typeof e}function isObject(e){return!!e&&\"object\"==typeof e}function isFunc(e){return\"function\"==typeof e}function isArray(e){return Array.isArray(e)}const ie=B();function objMap(e,t){return Object.keys(e).reduce(((r,a)=>(r[a]=t(e[a],a),r)),{})}function objReduce(e,t){return Object.keys(e).reduce(((r,a)=>{let n=t(e[a],a);return n&&\"object\"==typeof n&&Object.assign(r,n),r}),{})}function systemThunkMiddleware(e){return({dispatch:t,getState:r})=>t=>r=>\"function\"==typeof r?r(e()):t(r)}function validateValueBySchema(e,t,r,a,n){if(!t)return[];let s=[],o=t.get(\"nullable\"),l=t.get(\"required\"),c=t.get(\"maximum\"),i=t.get(\"minimum\"),p=t.get(\"type\"),m=t.get(\"format\"),u=t.get(\"maxLength\"),d=t.get(\"minLength\"),h=t.get(\"uniqueItems\"),g=t.get(\"maxItems\"),y=t.get(\"minItems\"),f=t.get(\"pattern\");const S=r||!0===l,E=null!=e,_=S||E&&\"array\"===p||!(!S&&!E),v=o&&null===e;if(S&&!E&&!v&&!a&&!p)return s.push(\"Required field is not provided\"),s;if(v||!p||!_)return[];let w=\"string\"===p&&e,b=\"array\"===p&&Array.isArray(e)&&e.length,C=\"array\"===p&&A().List.isList(e)&&e.count();const x=[w,b,C,\"array\"===p&&\"string\"==typeof e&&e,\"file\"===p&&e instanceof K.File,\"boolean\"===p&&(e||!1===e),\"number\"===p&&(e||0===e),\"integer\"===p&&(e||0===e),\"object\"===p&&\"object\"==typeof e&&null!==e,\"object\"===p&&\"string\"==typeof e&&e].some((e=>!!e));if(S&&!x&&!a)return s.push(\"Required field is not provided\"),s;if(\"object\"===p&&(null===n||\"application/json\"===n)){let r=e;if(\"string\"==typeof e)try{r=JSON.parse(e)}catch(e){return s.push(\"Parameter string value must be valid JSON\"),s}t&&t.has(\"required\")&&isFunc(l.isList)&&l.isList()&&l.forEach((e=>{void 0===r[e]&&s.push({propKey:e,error:\"Required property not found\"})})),t&&t.has(\"properties\")&&t.get(\"properties\").forEach(((e,t)=>{const o=validateValueBySchema(r[t],e,!1,a,n);s.push(...o.map((e=>({propKey:t,error:e}))))}))}if(f){let t=((e,t)=>{if(!new RegExp(t).test(e))return\"Value must follow pattern \"+t})(e,f);t&&s.push(t)}if(y&&\"array\"===p){let t=((e,t)=>{if(!e&&t>=1||e&&e.length<t)return`Array must contain at least ${t} item${1===t?\"\":\"s\"}`})(e,y);t&&s.push(t)}if(g&&\"array\"===p){let t=((e,t)=>{if(e&&e.length>t)return`Array must not contain more then ${t} item${1===t?\"\":\"s\"}`})(e,g);t&&s.push({needRemove:!0,error:t})}if(h&&\"array\"===p){let t=((e,t)=>{if(e&&(\"true\"===t||!0===t)){const t=(0,k.fromJS)(e),r=t.toSet();if(e.length>r.size){let e=(0,k.Set)();if(t.forEach(((r,a)=>{t.filter((e=>isFunc(e.equals)?e.equals(r):e===r)).size>1&&(e=e.add(a))})),0!==e.size)return e.map((e=>({index:e,error:\"No duplicates allowed.\"}))).toArray()}}})(e,h);t&&s.push(...t)}if(u||0===u){let t=((e,t)=>{if(e.length>t)return`Value must be no longer than ${t} character${1!==t?\"s\":\"\"}`})(e,u);t&&s.push(t)}if(d){let t=((e,t)=>{if(e.length<t)return`Value must be at least ${t} character${1!==t?\"s\":\"\"}`})(e,d);t&&s.push(t)}if(c||0===c){let t=((e,t)=>{if(e>t)return`Value must be less than or equal to ${t}`})(e,c);t&&s.push(t)}if(i||0===i){let t=((e,t)=>{if(e<t)return`Value must be greater than or equal to ${t}`})(e,i);t&&s.push(t)}if(\"string\"===p){let t;if(t=\"date-time\"===m?(e=>{if(isNaN(Date.parse(e)))return\"Value must be a DateTime\"})(e):\"uuid\"===m?(e=>{if(e=e.toString().toLowerCase(),!/^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/.test(e))return\"Value must be a Guid\"})(e):(e=>{if(e&&\"string\"!=typeof e)return\"Value must be a string\"})(e),!t)return s;s.push(t)}else if(\"boolean\"===p){let t=(e=>{if(\"true\"!==e&&\"false\"!==e&&!0!==e&&!1!==e)return\"Value must be a boolean\"})(e);if(!t)return s;s.push(t)}else if(\"number\"===p){let t=(e=>{if(!/^-?\\d+(\\.?\\d+)?$/.test(e))return\"Value must be a number\"})(e);if(!t)return s;s.push(t)}else if(\"integer\"===p){let t=(e=>{if(!/^-?\\d+$/.test(e))return\"Value must be an integer\"})(e);if(!t)return s;s.push(t)}else if(\"array\"===p){if(!b&&!C)return s;e&&e.forEach(((e,r)=>{const o=validateValueBySchema(e,t.get(\"items\"),!1,a,n);s.push(...o.map((e=>({index:r,error:e}))))}))}else if(\"file\"===p){let t=(e=>{if(e&&!(e instanceof K.File))return\"Value must be a file\"})(e);if(!t)return s;s.push(t)}return s}const btoa=e=>{let t;return t=e instanceof le?e:le.from(e.toString(),\"utf-8\"),t.toString(\"base64\")},pe={operationsSorter:{alpha:(e,t)=>e.get(\"path\").localeCompare(t.get(\"path\")),method:(e,t)=>e.get(\"method\").localeCompare(t.get(\"method\"))},tagsSorter:{alpha:(e,t)=>e.localeCompare(t)}},buildFormData=e=>{let t=[];for(let r in e){let a=e[r];void 0!==a&&\"\"!==a&&t.push([r,\"=\",encodeURIComponent(a).replace(/%20/g,\"+\")].join(\"\"))}return t.join(\"&\")},shallowEqualKeys=(e,t,r)=>!!W()(r,(r=>Y()(e[r],t[r])));function requiresValidationURL(e){return!(!e||e.indexOf(\"localhost\")>=0||e.indexOf(\"127.0.0.1\")>=0||\"none\"===e)}const createDeepLinkPath=e=>\"string\"==typeof e||e instanceof String?e.trim().replace(/\\s/g,\"%20\"):\"\",escapeDeepLinkPath=e=>te()(createDeepLinkPath(e).replace(/%20/g,\"_\")),getExtensions=e=>{const t=/^x-/;return k.Map.isMap(e)?e.filter(((e,r)=>t.test(r))):Object.keys(e).filter((e=>t.test(e)))},getCommonExtensions=e=>e.filter(((e,t)=>/^pattern|maxLength|minLength|maximum|minimum/.test(t)));function deeplyStripKey(e,t,r=()=>!0){if(\"object\"!=typeof e||Array.isArray(e)||null===e||!t)return e;const a=Object.assign({},e);return Object.keys(a).forEach((e=>{e===t&&r(a[e],e)?delete a[e]:a[e]=deeplyStripKey(a[e],t,r)})),a}function stringify(e){if(\"string\"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),\"object\"==typeof e&&null!==e)try{return JSON.stringify(e,null,2)}catch(t){return String(e)}return null==e?\"\":e.toString()}function paramToIdentifier(e,{returnAll:t=!1,allowHashes:r=!0}={}){if(!A().Map.isMap(e))throw new Error(\"paramToIdentifier: received a non-Im.Map parameter as input\");const a=e.get(\"name\"),n=e.get(\"in\");let s=[];return e&&e.hashCode&&n&&a&&r&&s.push(`${n}.${a}.hash-${e.hashCode()}`),n&&a&&s.push(`${n}.${a}`),s.push(a),t?s:s[0]||\"\"}function paramToValue(e,t){return paramToIdentifier(e,{returnAll:!0}).map((e=>t[e])).filter((e=>void 0!==e))[0]}function b64toB64UrlEncoded(e){return e.replace(/\\+/g,\"-\").replace(/\\//g,\"_\").replace(/=/g,\"\")}const isEmptyValue=e=>!e||!(!isImmutable(e)||!e.isEmpty()),idFn=e=>e;class Store{constructor(e={}){j()(this,{state:{},plugins:[],system:{configs:{},fn:{},components:{},rootInjects:{},statePlugins:{}},boundSystem:{},toolbox:{}},e),this.getSystem=this._getSystem.bind(this),this.store=function configureStore(e,t,r){return function createStoreWithMiddleware(e,t,r){let a=[systemThunkMiddleware(r)];const n=K.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__||N.compose;return(0,N.createStore)(e,t,n((0,N.applyMiddleware)(...a)))}(e,t,r)}(idFn,(0,k.fromJS)(this.state),this.getSystem),this.buildSystem(!1),this.register(this.plugins)}getStore(){return this.store}register(e,t=!0){var r=combinePlugins(e,this.getSystem());systemExtend(this.system,r),t&&this.buildSystem();callAfterLoad.call(this.system,e,this.getSystem())&&this.buildSystem()}buildSystem(e=!0){let t=this.getStore().dispatch,r=this.getStore().getState;this.boundSystem=Object.assign({},this.getRootInjects(),this.getWrappedAndBoundActions(t),this.getWrappedAndBoundSelectors(r,this.getSystem),this.getStateThunks(r),this.getFn(),this.getConfigs()),e&&this.rebuildReducer()}_getSystem(){return this.boundSystem}getRootInjects(){return Object.assign({getSystem:this.getSystem,getStore:this.getStore.bind(this),getComponents:this.getComponents.bind(this),getState:this.getStore().getState,getConfigs:this._getConfigs.bind(this),Im:A(),React:O()},this.system.rootInjects||{})}_getConfigs(){return this.system.configs}getConfigs(){return{configs:this.system.configs}}setConfigs(e){this.system.configs=e}rebuildReducer(){this.store.replaceReducer(function buildReducer(e,t){return function allReducers(e,t){let r=Object.keys(e).reduce(((r,a)=>(r[a]=function makeReducer(e,t){return(r=new k.Map,a)=>{if(!e)return r;let n=e[a.type];if(n){const e=wrapWithTryCatch(n,t)(r,a);return null===e?r:e}return r}}(e[a],t),r)),{});if(!Object.keys(r).length)return idFn;return(0,q.combineReducers)(r)}(objMap(e,(e=>e.reducers)),t)}(this.system.statePlugins,this.getSystem))}getType(e){let t=e[0].toUpperCase()+e.slice(1);return objReduce(this.system.statePlugins,((r,a)=>{let n=r[e];if(n)return{[a+t]:n}}))}getSelectors(){return this.getType(\"selectors\")}getActions(){return objMap(this.getType(\"actions\"),(e=>objReduce(e,((e,t)=>{if(isFn(e))return{[t]:e}}))))}getWrappedAndBoundActions(e){return objMap(this.getBoundActions(e),((e,t)=>{let r=this.system.statePlugins[t.slice(0,-7)].wrapActions;return r?objMap(e,((e,t)=>{let a=r[t];return a?(Array.isArray(a)||(a=[a]),a.reduce(((e,t)=>{let newAction=(...r)=>t(e,this.getSystem())(...r);if(!isFn(newAction))throw new TypeError(\"wrapActions needs to return a function that returns a new function (ie the wrapped action)\");return wrapWithTryCatch(newAction,this.getSystem)}),e||Function.prototype)):e})):e}))}getWrappedAndBoundSelectors(e,t){return objMap(this.getBoundSelectors(e,t),((t,r)=>{let a=[r.slice(0,-9)],n=this.system.statePlugins[a].wrapSelectors;return n?objMap(t,((t,r)=>{let s=n[r];return s?(Array.isArray(s)||(s=[s]),s.reduce(((t,r)=>{let wrappedSelector=(...n)=>r(t,this.getSystem())(e().getIn(a),...n);if(!isFn(wrappedSelector))throw new TypeError(\"wrapSelector needs to return a function that returns a new function (ie the wrapped action)\");return wrappedSelector}),t||Function.prototype)):t})):t}))}getStates(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=e.get(r),t)),{})}getStateThunks(e){return Object.keys(this.system.statePlugins).reduce(((t,r)=>(t[r]=()=>e().get(r),t)),{})}getFn(){return{fn:this.system.fn}}getComponents(e){const t=this.system.components[e];return Array.isArray(t)?t.reduce(((e,t)=>t(e,this.getSystem()))):void 0!==e?this.system.components[e]:this.system.components}getBoundSelectors(e,t){return objMap(this.getSelectors(),((r,a)=>{let n=[a.slice(0,-9)];return objMap(r,(r=>(...a)=>{let s=wrapWithTryCatch(r,this.getSystem).apply(null,[e().getIn(n),...a]);return\"function\"==typeof s&&(s=wrapWithTryCatch(s,this.getSystem)(t())),s}))}))}getBoundActions(e){e=e||this.getStore().dispatch;const t=this.getActions(),process=e=>\"function\"!=typeof e?objMap(e,(e=>process(e))):(...t)=>{var r=null;try{r=e(...t)}catch(e){r={type:R,error:!0,payload:(0,P.serializeError)(e)}}finally{return r}};return objMap(t,(t=>(0,N.bindActionCreators)(process(t),e)))}getMapStateToProps(){return()=>Object.assign({},this.getSystem())}getMapDispatchToProps(e){return t=>j()({},this.getWrappedAndBoundActions(t),this.getFn(),e)}}function combinePlugins(e,t){return isObject(e)&&!isArray(e)?T()({},e):isFunc(e)?combinePlugins(e(t),t):isArray(e)?e.map((e=>combinePlugins(e,t))).reduce(systemExtend,{components:t.getComponents()}):{}}function callAfterLoad(e,t,{hasLoaded:r}={}){let a=r;return isObject(e)&&!isArray(e)&&\"function\"==typeof e.afterLoad&&(a=!0,wrapWithTryCatch(e.afterLoad,t.getSystem).call(this,t)),isFunc(e)?callAfterLoad.call(this,e(t),t,{hasLoaded:a}):isArray(e)?e.map((e=>callAfterLoad.call(this,e,t,{hasLoaded:a}))):a}function systemExtend(e={},t={}){if(!isObject(e))return{};if(!isObject(t))return e;t.wrapComponents&&(objMap(t.wrapComponents,((r,a)=>{const n=e.components&&e.components[a];n&&Array.isArray(n)?(e.components[a]=n.concat([r]),delete t.wrapComponents[a]):n&&(e.components[a]=[n,r],delete t.wrapComponents[a])})),Object.keys(t.wrapComponents).length||delete t.wrapComponents);const{statePlugins:r}=e;if(isObject(r))for(let e in r){const a=r[e];if(!isObject(a))continue;const{wrapActions:n,wrapSelectors:s}=a;if(isObject(n))for(let r in n){let a=n[r];Array.isArray(a)||(a=[a],n[r]=a),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapActions&&t.statePlugins[e].wrapActions[r]&&(t.statePlugins[e].wrapActions[r]=n[r].concat(t.statePlugins[e].wrapActions[r]))}if(isObject(s))for(let r in s){let a=s[r];Array.isArray(a)||(a=[a],s[r]=a),t&&t.statePlugins&&t.statePlugins[e]&&t.statePlugins[e].wrapSelectors&&t.statePlugins[e].wrapSelectors[r]&&(t.statePlugins[e].wrapSelectors[r]=s[r].concat(t.statePlugins[e].wrapSelectors[r]))}}return j()(e,t)}function wrapWithTryCatch(e,t,{logErrors:r=!0}={}){return\"function\"!=typeof e?e:function(...a){try{return e.call(this,...a)}catch(e){if(r){const{uncaughtExceptionHandler:r}=t().getConfigs();\"function\"==typeof r?r(e):console.error(e)}return null}}}const me=require(\"url-parse\");var ue=__webpack_require__.n(me);const de=\"show_popup\",he=\"authorize\",ge=\"logout\",ye=\"authorize_oauth2\",fe=\"configure_auth\",Se=\"restore_authorization\";function showDefinitions(e){return{type:de,payload:e}}function authorize(e){return{type:he,payload:e}}const authorizeWithPersistOption=e=>({authActions:t})=>{t.authorize(e),t.persistAuthorizationIfNeeded()};function logout(e){return{type:ge,payload:e}}const logoutWithPersistOption=e=>({authActions:t})=>{t.logout(e),t.persistAuthorizationIfNeeded()},preAuthorizeImplicit=e=>({authActions:t,errActions:r})=>{let{auth:a,token:n,isValid:s}=e,{schema:o,name:l}=a,c=o.get(\"flow\");delete K.swaggerUIRedirectOauth2,\"accessCode\"===c||s||r.newAuthErr({authId:l,source:\"auth\",level:\"warning\",message:\"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server\"}),n.error?r.newAuthErr({authId:l,source:\"auth\",level:\"error\",message:JSON.stringify(n)}):t.authorizeOauth2WithPersistOption({auth:a,token:n})};function authorizeOauth2(e){return{type:ye,payload:e}}const authorizeOauth2WithPersistOption=e=>({authActions:t})=>{t.authorizeOauth2(e),t.persistAuthorizationIfNeeded()},authorizePassword=e=>({authActions:t})=>{let{schema:r,name:a,username:n,password:s,passwordType:o,clientId:l,clientSecret:c}=e,i={grant_type:\"password\",scope:e.scopes.join(\" \"),username:n,password:s},p={};switch(o){case\"request-body\":!function setClientIdAndSecret(e,t,r){t&&Object.assign(e,{client_id:t});r&&Object.assign(e,{client_secret:r})}(i,l,c);break;case\"basic\":p.Authorization=\"Basic \"+btoa(l+\":\"+c);break;default:console.warn(`Warning: invalid passwordType ${o} was passed, not including client id and secret`)}return t.authorizeRequest({body:buildFormData(i),url:r.get(\"tokenUrl\"),name:a,headers:p,query:{},auth:e})};const authorizeApplication=e=>({authActions:t})=>{let{schema:r,scopes:a,name:n,clientId:s,clientSecret:o}=e,l={Authorization:\"Basic \"+btoa(s+\":\"+o)},c={grant_type:\"client_credentials\",scope:a.join(\" \")};return t.authorizeRequest({body:buildFormData(c),name:n,url:r.get(\"tokenUrl\"),auth:e,headers:l})},authorizeAccessCodeWithFormParams=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:a,name:n,clientId:s,clientSecret:o,codeVerifier:l}=e,c={grant_type:\"authorization_code\",code:e.code,client_id:s,client_secret:o,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(c),name:n,url:a.get(\"tokenUrl\"),auth:e})},authorizeAccessCodeWithBasicAuthentication=({auth:e,redirectUrl:t})=>({authActions:r})=>{let{schema:a,name:n,clientId:s,clientSecret:o,codeVerifier:l}=e,c={Authorization:\"Basic \"+btoa(s+\":\"+o)},i={grant_type:\"authorization_code\",code:e.code,client_id:s,redirect_uri:t,code_verifier:l};return r.authorizeRequest({body:buildFormData(i),name:n,url:a.get(\"tokenUrl\"),auth:e,headers:c})},authorizeRequest=e=>({fn:t,getConfigs:r,authActions:a,errActions:n,oas3Selectors:s,specSelectors:o,authSelectors:l})=>{let c,{body:i,query:p={},headers:m={},name:u,url:d,auth:h}=e,{additionalQueryStringParams:g}=l.getConfigs()||{};if(o.isOAS3()){let e=s.serverEffectiveValue(s.selectedServer());c=ue()(d,e,!0)}else c=ue()(d,o.url(),!0);\"object\"==typeof g&&(c.query=Object.assign({},c.query,g));const y=c.toString();let f=Object.assign({Accept:\"application/json, text/plain, */*\",\"Content-Type\":\"application/x-www-form-urlencoded\",\"X-Requested-With\":\"XMLHttpRequest\"},m);t.fetch({url:y,method:\"post\",headers:f,query:p,body:i,requestInterceptor:r().requestInterceptor,responseInterceptor:r().responseInterceptor}).then((function(e){let t=JSON.parse(e.data),r=t&&(t.error||\"\"),s=t&&(t.parseError||\"\");e.ok?r||s?n.newAuthErr({authId:u,level:\"error\",source:\"auth\",message:JSON.stringify(t)}):a.authorizeOauth2WithPersistOption({auth:h,token:t}):n.newAuthErr({authId:u,level:\"error\",source:\"auth\",message:e.statusText})})).catch((e=>{let t=new Error(e).message;if(e.response&&e.response.data){const r=e.response.data;try{const e=\"string\"==typeof r?JSON.parse(r):r;e.error&&(t+=`, error: ${e.error}`),e.error_description&&(t+=`, description: ${e.error_description}`)}catch(e){}}n.newAuthErr({authId:u,level:\"error\",source:\"auth\",message:t})}))};function configureAuth(e){return{type:fe,payload:e}}function restoreAuthorization(e){return{type:Se,payload:e}}const persistAuthorizationIfNeeded=()=>({authSelectors:e,getConfigs:t})=>{if(!t().persistAuthorization)return;const r=e.authorized().toJS();localStorage.setItem(\"authorized\",JSON.stringify(r))},authPopup=(e,t)=>()=>{K.swaggerUIRedirectOauth2=t,K.open(e)},Ee={[de]:(e,{payload:t})=>e.set(\"showDefinitions\",t),[he]:(e,{payload:t})=>{let r=(0,k.fromJS)(t),a=e.get(\"authorized\")||(0,k.Map)();return r.entrySeq().forEach((([t,r])=>{if(!isFunc(r.getIn))return e.set(\"authorized\",a);let n=r.getIn([\"schema\",\"type\"]);if(\"apiKey\"===n||\"http\"===n)a=a.set(t,r);else if(\"basic\"===n){let e=r.getIn([\"value\",\"username\"]),n=r.getIn([\"value\",\"password\"]);a=a.setIn([t,\"value\"],{username:e,header:\"Basic \"+btoa(e+\":\"+n)}),a=a.setIn([t,\"schema\"],r.get(\"schema\"))}})),e.set(\"authorized\",a)},[ye]:(e,{payload:t})=>{let r,{auth:a,token:n}=t;a.token=Object.assign({},n),r=(0,k.fromJS)(a);let s=e.get(\"authorized\")||(0,k.Map)();return s=s.set(r.get(\"name\"),r),e.set(\"authorized\",s)},[ge]:(e,{payload:t})=>{let r=e.get(\"authorized\").withMutations((e=>{t.forEach((t=>{e.delete(t)}))}));return e.set(\"authorized\",r)},[fe]:(e,{payload:t})=>e.set(\"configs\",t),[Se]:(e,{payload:t})=>e.set(\"authorized\",(0,k.fromJS)(t.authorized))},_e=require(\"reselect\"),state=e=>e,ve=(0,_e.createSelector)(state,(e=>e.get(\"showDefinitions\"))),we=(0,_e.createSelector)(state,(()=>({specSelectors:e})=>{let t=e.securityDefinitions()||(0,k.Map)({}),r=(0,k.List)();return t.entrySeq().forEach((([e,t])=>{let a=(0,k.Map)();a=a.set(e,t),r=r.push(a)})),r})),selectAuthPath=(e,t)=>({specSelectors:e})=>(0,k.List)(e.isOAS3()?[\"components\",\"securitySchemes\",t]:[\"securityDefinitions\",t]),getDefinitionsByNames=(e,t)=>({specSelectors:e})=>{console.warn(\"WARNING: getDefinitionsByNames is deprecated and will be removed in the next major version.\");let r=e.securityDefinitions(),a=(0,k.List)();return t.valueSeq().forEach((e=>{let t=(0,k.Map)();e.entrySeq().forEach((([e,a])=>{let n,s=r.get(e);\"oauth2\"===s.get(\"type\")&&a.size&&(n=s.get(\"scopes\"),n.keySeq().forEach((e=>{a.contains(e)||(n=n.delete(e))})),s=s.set(\"allowedScopes\",n)),t=t.set(e,s)})),a=a.push(t)})),a},definitionsForRequirements=(e,t=(0,k.List)())=>({authSelectors:e})=>{const r=e.definitionsToAuthorize()||(0,k.List)();let a=(0,k.List)();return r.forEach((e=>{let r=t.find((t=>t.get(e.keySeq().first())));r&&(e.forEach(((t,a)=>{if(\"oauth2\"===t.get(\"type\")){const n=r.get(a);let s=t.get(\"scopes\");k.List.isList(n)&&k.Map.isMap(s)&&(s.keySeq().forEach((e=>{n.contains(e)||(s=s.delete(e))})),e=e.set(a,t.set(\"scopes\",s)))}})),a=a.push(e))})),a},be=(0,_e.createSelector)(state,(e=>e.get(\"authorized\")||(0,k.Map)())),isAuthorized=(e,t)=>({authSelectors:e})=>{let r=e.authorized();return k.List.isList(t)?!!t.toJS().filter((e=>-1===Object.keys(e).map((e=>!!r.get(e))).indexOf(!1))).length:null},Ce=(0,_e.createSelector)(state,(e=>e.get(\"configs\"))),execute=(e,{authSelectors:t,specSelectors:r})=>({path:a,method:n,operation:s,extras:o})=>{let l={authorized:t.authorized()&&t.authorized().toJS(),definitions:r.securityDefinitions()&&r.securityDefinitions().toJS(),specSecurity:r.security()&&r.security().toJS()};return e({path:a,method:n,operation:s,securities:l,...o})},loaded=(e,t)=>r=>{const{getConfigs:a,authActions:n}=t,s=a();if(e(r),s.persistAuthorization){const e=localStorage.getItem(\"authorized\");e&&n.restoreAuthorization({authorized:JSON.parse(e)})}},wrap_actions_authorize=(e,t)=>r=>{e(r);if(t.getConfigs().persistAuthorization)try{const[{schema:e,value:t}]=Object.values(r),a=\"apiKey\"===e.get(\"type\"),n=\"cookie\"===e.get(\"in\");a&&n&&(document.cookie=`${e.get(\"name\")}=${t}; SameSite=None; Secure`)}catch(e){console.error(\"Error persisting cookie based apiKey in document.cookie.\",e)}},wrap_actions_logout=(e,t)=>r=>{const a=t.getConfigs(),n=t.authSelectors.authorized();try{a.persistAuthorization&&Array.isArray(r)&&r.forEach((e=>{const t=n.get(e,{}),r=\"apiKey\"===t.getIn([\"schema\",\"type\"]),a=\"cookie\"===t.getIn([\"schema\",\"in\"]);if(r&&a){const e=t.getIn([\"schema\",\"name\"]);document.cookie=`${e}=; Max-Age=-99999999`}}))}catch(e){console.error(\"Error deleting cookie based apiKey from document.cookie.\",e)}e(r)},xe=require(\"prop-types\");var Oe=__webpack_require__.n(xe);const Ne=require(\"lodash/omit\");var ke=__webpack_require__.n(Ne);class LockAuthIcon extends O().Component{mapStateToProps(e,t){return{state:e,ownProps:ke()(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e(\"LockIcon\");return O().createElement(r,t)}}const Ae=LockAuthIcon;class UnlockAuthIcon extends O().Component{mapStateToProps(e,t){return{state:e,ownProps:ke()(t,Object.keys(t.getSystem()))}}render(){const{getComponent:e,ownProps:t}=this.props,r=e(\"UnlockIcon\");return O().createElement(r,t)}}const Ie=UnlockAuthIcon;function auth(){return{afterLoad(e){this.rootInjects=this.rootInjects||{},this.rootInjects.initOAuth=e.authActions.configureAuth,this.rootInjects.preauthorizeApiKey=preauthorizeApiKey.bind(null,e),this.rootInjects.preauthorizeBasic=preauthorizeBasic.bind(null,e)},components:{LockAuthIcon:Ae,UnlockAuthIcon:Ie,LockAuthOperationIcon:Ae,UnlockAuthOperationIcon:Ie},statePlugins:{auth:{reducers:Ee,actions:n,selectors:s,wrapActions:{authorize:wrap_actions_authorize,logout:wrap_actions_logout}},configs:{wrapActions:{loaded}},spec:{wrapActions:{execute}}}}}function preauthorizeBasic(e,t,r,a){const{authActions:{authorize:n},specSelectors:{specJson:s,isOAS3:o}}=e,l=o()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],c=s().getIn([...l,t]);return c?n({[t]:{value:{username:r,password:a},schema:c.toJS()}}):null}function preauthorizeApiKey(e,t,r){const{authActions:{authorize:a},specSelectors:{specJson:n,isOAS3:s}}=e,o=s()?[\"components\",\"securitySchemes\"]:[\"securityDefinitions\"],l=n().getIn([...o,t]);return l?a({[t]:{value:r,schema:l.toJS()}}):null}const je=require(\"js-yaml\");var qe=__webpack_require__.n(je);const Pe=\"configs_update\",Me=\"configs_toggle\";function update(e,t){return{type:Pe,payload:{[e]:t}}}function toggle(e){return{type:Me,payload:e}}const actions_loaded=()=>()=>{},downloadConfig=e=>t=>{const{fn:{fetch:r}}=t;return r(e)},getConfigByUrl=(e,t)=>r=>{const{specActions:a,configsActions:n}=r;if(e)return n.downloadConfig(e).then(next,next);function next(n){n instanceof Error||n.status>=400?(a.updateLoadingStatus(\"failedConfig\"),a.updateLoadingStatus(\"failedConfig\"),a.updateUrl(\"\"),console.error(n.statusText+\" \"+e.url),t(null)):t(((e,t)=>{try{return qe().load(e)}catch(e){return t&&t.errActions.newThrownErr(new Error(e)),{}}})(n.text,r))}},get=(e,t)=>e.getIn(Array.isArray(t)?t:[t]),Te={[Pe]:(e,t)=>e.merge((0,k.fromJS)(t.payload)),[Me]:(e,t)=>{const r=t.payload,a=e.get(r);return e.set(r,!a)}};function configsPlugin(){return{statePlugins:{configs:{reducers:Te,actions:o,selectors:l}}}}const setHash=e=>e?history.pushState(null,null,`#${e}`):window.location.hash=\"\",Re=require(\"zenscroll\");var Je=__webpack_require__.n(Re);const $e=\"layout_scroll_to\",Ve=\"layout_clear_scroll\";const Le={fn:{getScrollParent:function getScrollParent(e,t){const r=document.documentElement;let a=getComputedStyle(e);const n=\"absolute\"===a.position,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===a.position)return r;for(let t=e;t=t.parentElement;)if(a=getComputedStyle(t),(!n||\"static\"!==a.position)&&s.test(a.overflow+a.overflowY+a.overflowX))return t;return r}},statePlugins:{layout:{actions:{scrollToElement:(e,t)=>r=>{try{t=t||r.fn.getScrollParent(e),Je().createScroller(t).to(e)}catch(e){console.error(e)}},scrollTo:e=>({type:$e,payload:Array.isArray(e)?e:[e]}),clearScrollTo:()=>({type:Ve}),readyToScroll:(e,t)=>r=>{const a=r.layoutSelectors.getScrollToKey();A().is(a,(0,k.fromJS)(e))&&(r.layoutActions.scrollToElement(t),r.layoutActions.clearScrollTo())},parseDeepLinkHash:e=>({layoutActions:t,layoutSelectors:r,getConfigs:a})=>{if(a().deepLinking&&e){let a=e.slice(1);\"!\"===a[0]&&(a=a.slice(1)),\"/\"===a[0]&&(a=a.slice(1));const n=a.split(\"/\").map((e=>e||\"\")),s=r.isShownKeyFromUrlHashArray(n),[o,l=\"\",c=\"\"]=s;if(\"operations\"===o){const e=r.isShownKeyFromUrlHashArray([l]);l.indexOf(\"_\")>-1&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),t.show(e.map((e=>e.replace(/_/g,\" \"))),!0)),t.show(e,!0)}(l.indexOf(\"_\")>-1||c.indexOf(\"_\")>-1)&&(console.warn(\"Warning: escaping deep link whitespace with `_` will be unsupported in v4.0, use `%20` instead.\"),t.show(s.map((e=>e.replace(/_/g,\" \"))),!0)),t.show(s,!0),t.scrollTo(s)}}},selectors:{getScrollToKey:e=>e.get(\"scrollToKey\"),isShownKeyFromUrlHashArray(e,t){const[r,a]=t;return a?[\"operations\",r,a]:r?[\"operations-tag\",r]:[]},urlHashArrayFromIsShownKey(e,t){let[r,a,n]=t;return\"operations\"==r?[a,n]:\"operations-tag\"==r?[a]:[]}},reducers:{[$e]:(e,t)=>e.set(\"scrollToKey\",A().fromJS(t.payload)),[Ve]:e=>e.delete(\"scrollToKey\")},wrapActions:{show:(e,{getConfigs:t,layoutSelectors:r})=>(...a)=>{if(e(...a),t().deepLinking)try{let[e,t]=a;e=Array.isArray(e)?e:[e];const n=r.urlHashArrayFromIsShownKey(e);if(!n.length)return;const[s,o]=n;if(!t)return setHash(\"/\");2===n.length?setHash(createDeepLinkPath(`/${encodeURIComponent(s)}/${encodeURIComponent(o)}`)):1===n.length&&setHash(createDeepLinkPath(`/${encodeURIComponent(s)}`))}catch(e){console.error(e)}}}}}},De=require(\"react-immutable-proptypes\");var Ue=__webpack_require__.n(De);const operation_wrapper=(e,t)=>class OperationWrapper extends O().Component{onLoad=e=>{const{operation:r}=this.props,{tag:a,operationId:n}=r.toObject();let{isShownKey:s}=r.toObject();s=s||[\"operations\",a,n],t.layoutActions.readyToScroll(s,e)};render(){return O().createElement(\"span\",{ref:this.onLoad},O().createElement(e,this.props))}},operation_tag_wrapper=(e,t)=>class OperationTagWrapper extends O().Component{onLoad=e=>{const{tag:r}=this.props,a=[\"operations-tag\",r];t.layoutActions.readyToScroll(a,e)};render(){return O().createElement(\"span\",{ref:this.onLoad},O().createElement(e,this.props))}};function deep_linking(){return[Le,{statePlugins:{configs:{wrapActions:{loaded:(e,t)=>(...r)=>{e(...r);const a=decodeURIComponent(window.location.hash);t.layoutActions.parseDeepLinkHash(a)}}}},wrapComponents:{operation:operation_wrapper,OperationTag:operation_tag_wrapper}}]}const Ke=require(\"lodash/reduce\");var ze=__webpack_require__.n(Ke);function transform(e){return e.map((e=>{let t=\"is not of a type(s)\",r=e.get(\"message\").indexOf(t);if(r>-1){let t=e.get(\"message\").slice(r+19).split(\",\");return e.set(\"message\",e.get(\"message\").slice(0,r)+function makeNewMessage(e){return e.reduce(((e,t,r,a)=>r===a.length-1&&a.length>1?e+\"or \"+t:a[r+1]&&a.length>2?e+t+\", \":a[r+1]?e+t+\" \":e+t),\"should be a\")}(t))}return e}))}const Be=require(\"lodash/get\");var Fe=__webpack_require__.n(Be);function parameter_oneof_transform(e,{jsSpec:t}){return e}const We=[c,i];function transformErrors(e){let t={jsSpec:{}},r=ze()(We,((e,r)=>{try{return r.transform(e,t).filter((e=>!!e))}catch(t){return console.error(\"Transformer error:\",t),e}}),e);return r.filter((e=>!!e)).map((e=>(!e.get(\"line\")&&e.get(\"path\"),e)))}let He={line:0,level:\"error\",message:\"Unknown error\"};const Xe=(0,_e.createSelector)((e=>e),(e=>e.get(\"errors\",(0,k.List)()))),Ge=(0,_e.createSelector)(Xe,(e=>e.last()));function err(e){return{statePlugins:{err:{reducers:{[R]:(e,{payload:t})=>{let r=Object.assign(He,t,{type:\"thrown\"});return e.update(\"errors\",(e=>(e||(0,k.List)()).push((0,k.fromJS)(r)))).update(\"errors\",(e=>transformErrors(e)))},[J]:(e,{payload:t})=>(t=t.map((e=>(0,k.fromJS)(Object.assign(He,e,{type:\"thrown\"})))),e.update(\"errors\",(e=>(e||(0,k.List)()).concat((0,k.fromJS)(t)))).update(\"errors\",(e=>transformErrors(e)))),[$]:(e,{payload:t})=>{let r=(0,k.fromJS)(t);return r=r.set(\"type\",\"spec\"),e.update(\"errors\",(e=>(e||(0,k.List)()).push((0,k.fromJS)(r)).sortBy((e=>e.get(\"line\"))))).update(\"errors\",(e=>transformErrors(e)))},[V]:(e,{payload:t})=>(t=t.map((e=>(0,k.fromJS)(Object.assign(He,e,{type:\"spec\"})))),e.update(\"errors\",(e=>(e||(0,k.List)()).concat((0,k.fromJS)(t)))).update(\"errors\",(e=>transformErrors(e)))),[L]:(e,{payload:t})=>{let r=(0,k.fromJS)(Object.assign({},t));return r=r.set(\"type\",\"auth\"),e.update(\"errors\",(e=>(e||(0,k.List)()).push((0,k.fromJS)(r)))).update(\"errors\",(e=>transformErrors(e)))},[D]:(e,{payload:t})=>{if(!t||!e.get(\"errors\"))return e;let r=e.get(\"errors\").filter((e=>e.keySeq().every((r=>{const a=e.get(r),n=t[r];return!n||a!==n}))));return e.merge({errors:r})},[U]:(e,{payload:t})=>{if(!t||\"function\"!=typeof t)return e;let r=e.get(\"errors\").filter((e=>t(e)));return e.merge({errors:r})}},actions:a,selectors:p}}}}function opsFilter(e,t){return e.filter(((e,r)=>-1!==r.indexOf(t)))}function filter(){return{fn:{opsFilter}}}const Ye=require(\"@babel/runtime-corejs3/helpers/extends\");var Qe=__webpack_require__.n(Ye);const arrow_up=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),arrow_down=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),arrow=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),components_close=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),copy=({className:e=null,width:t=15,height:r=16,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 15 16\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"g\",{transform:\"translate(2, -1)\"},O().createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"}))),lock=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),unlock=({className:e=null,width:t=20,height:r=20,...a})=>O().createElement(\"svg\",Qe()({xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",className:e,width:t,height:r,\"aria-hidden\":\"true\",focusable:\"false\"},a),O().createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),icons=()=>({components:{ArrowUpIcon:arrow_up,ArrowDownIcon:arrow_down,ArrowIcon:arrow,CloseIcon:components_close,CopyIcon:copy,LockIcon:lock,UnlockIcon:unlock}}),Ze=\"layout_update_layout\",et=\"layout_update_filter\",tt=\"layout_update_mode\",rt=\"layout_show\";function updateLayout(e){return{type:Ze,payload:e}}function updateFilter(e){return{type:et,payload:e}}function actions_show(e,t=!0){return e=normalizeArray(e),{type:rt,payload:{thing:e,shown:t}}}function changeMode(e,t=\"\"){return e=normalizeArray(e),{type:tt,payload:{thing:e,mode:t}}}const at={[Ze]:(e,t)=>e.set(\"layout\",t.payload),[et]:(e,t)=>e.set(\"filter\",t.payload),[rt]:(e,t)=>{const r=t.payload.shown,a=(0,k.fromJS)(t.payload.thing);return e.update(\"shown\",(0,k.fromJS)({}),(e=>e.set(a,r)))},[tt]:(e,t)=>{let r=t.payload.thing,a=t.payload.mode;return e.setIn([\"modes\"].concat(r),(a||\"\")+\"\")}},current=e=>e.get(\"layout\"),currentFilter=e=>e.get(\"filter\"),isShown=(e,t,r)=>(t=normalizeArray(t),e.get(\"shown\",(0,k.fromJS)({})).get((0,k.fromJS)(t),r)),whatMode=(e,t,r=\"\")=>(t=normalizeArray(t),e.getIn([\"modes\",...t],r)),nt=(0,_e.createSelector)((e=>e),(e=>!isShown(e,\"editor\"))),taggedOperations=(e,t)=>(r,...a)=>{let n=e(r,...a);const{fn:s,layoutSelectors:o,getConfigs:l}=t.getSystem(),c=l(),{maxDisplayedTags:i}=c;let p=o.currentFilter();return p&&!0!==p&&(n=s.opsFilter(n,p)),i>=0&&(n=n.slice(0,i)),n};function plugins_layout(){return{statePlugins:{layout:{reducers:at,actions:m,selectors:u},spec:{wrapSelectors:d}}}}function logs({configs:e}){const t={debug:0,info:1,log:2,warn:3,error:4},getLevel=e=>t[e]||-1;let{logLevel:r}=e,a=getLevel(r);function log(e,...t){getLevel(e)>=a&&console[e](...t)}return log.warn=log.bind(null,\"warn\"),log.error=log.bind(null,\"error\"),log.info=log.bind(null,\"info\"),log.debug=log.bind(null,\"debug\"),{rootInjects:{log}}}let st=!1;function on_complete(){return{statePlugins:{spec:{wrapActions:{updateSpec:e=>(...t)=>(st=!0,e(...t)),updateJsonSpec:(e,t)=>(...r)=>{const a=t.getConfigs().onComplete;return st&&\"function\"==typeof a&&(setTimeout(a,0),st=!1),e(...r)}}}}}}const extractKey=e=>{const t=\"_**[]\";return e.indexOf(t)<0?e:e.split(t)[0].trim()},escapeShell=e=>\"-d \"===e||/^[_\\/-]/g.test(e)?e:\"'\"+e.replace(/'/g,\"'\\\\''\")+\"'\",escapeCMD=e=>\"-d \"===(e=e.replace(/\\^/g,\"^^\").replace(/\\\\\"/g,'\\\\\\\\\"').replace(/\"/g,'\"\"').replace(/\\n/g,\"^\\n\"))?e.replace(/-d /g,\"-d ^\\n\"):/^[_\\/-]/g.test(e)?e:'\"'+e+'\"',escapePowershell=e=>{if(\"-d \"===e)return e;if(/\\n/.test(e)){return`@\"\\n${e.replace(/`/g,\"``\").replace(/\\$/g,\"`$\")}\\n\"@`}if(!/^[_\\/-]/.test(e)){return`'${e.replace(/'/g,\"''\")}'`}return e};const curlify=(e,t,r,a=\"\")=>{let n=!1,s=\"\";const addWords=(...e)=>s+=\" \"+e.map(t).join(\" \"),addWordsWithoutLeadingSpace=(...e)=>s+=e.map(t).join(\" \"),addNewLine=()=>s+=` ${r}`,addIndent=(e=1)=>s+=\"  \".repeat(e);let o=e.get(\"headers\");s+=\"curl\"+a;const l=e.get(\"curlOptions\");if(k.List.isList(l)&&!l.isEmpty()&&addWords(...e.get(\"curlOptions\")),addWords(\"-X\",e.get(\"method\")),addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`${e.get(\"url\")}`),o&&o.size)for(let t of e.get(\"headers\").entries()){addNewLine(),addIndent();let[e,r]=t;addWordsWithoutLeadingSpace(\"-H\",`${e}: ${r}`),n=n||/^content-type$/i.test(e)&&/^multipart\\/form-data$/i.test(r)}const c=e.get(\"body\");if(c)if(n&&[\"POST\",\"PUT\",\"PATCH\"].includes(e.get(\"method\")))for(let[e,t]of c.entrySeq()){let r=extractKey(e);addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-F\"),t instanceof K.File&&\"string\"==typeof t.valueOf()?addWords(`${r}=${t.data}${t.type?`;type=${t.type}`:\"\"}`):t instanceof K.File?addWords(`${r}=@${t.name}${t.type?`;type=${t.type}`:\"\"}`):addWords(`${r}=${t}`)}else if(c instanceof K.File)addNewLine(),addIndent(),addWordsWithoutLeadingSpace(`--data-binary '@${c.name}'`);else{addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d \");let t=c;k.Map.isMap(t)?addWordsWithoutLeadingSpace(function getStringBodyOfMap(e){let t=[];for(let[r,a]of e.get(\"body\").entrySeq()){let e=extractKey(r);a instanceof K.File?t.push(`  \"${e}\": {\\n    \"name\": \"${a.name}\"${a.type?`,\\n    \"type\": \"${a.type}\"`:\"\"}\\n  }`):t.push(`  \"${e}\": ${JSON.stringify(a,null,2).replace(/(\\r\\n|\\r|\\n)/g,\"\\n  \")}`)}return`{\\n${t.join(\",\\n\")}\\n}`}(e)):(\"string\"!=typeof t&&(t=JSON.stringify(t)),addWordsWithoutLeadingSpace(t))}else c||\"POST\"!==e.get(\"method\")||(addNewLine(),addIndent(),addWordsWithoutLeadingSpace(\"-d ''\"));return s},requestSnippetGenerator_curl_powershell=e=>curlify(e,escapePowershell,\"`\\n\",\".exe\"),requestSnippetGenerator_curl_bash=e=>curlify(e,escapeShell,\"\\\\\\n\"),requestSnippetGenerator_curl_cmd=e=>curlify(e,escapeCMD,\"^\\n\"),request_snippets_selectors_state=e=>e||(0,k.Map)(),ot=(0,_e.createSelector)(request_snippets_selectors_state,(e=>{const t=e.get(\"languages\"),r=e.get(\"generators\",(0,k.Map)());return!t||t.isEmpty()?r:r.filter(((e,r)=>t.includes(r)))})),getSnippetGenerators=e=>({fn:t})=>ot(e).map(((e,r)=>{const a=(e=>t[`requestSnippetGenerator_${e}`])(r);return\"function\"!=typeof a?null:e.set(\"fn\",a)})).filter((e=>e)),lt=(0,_e.createSelector)(request_snippets_selectors_state,(e=>e.get(\"activeLanguage\"))),ct=(0,_e.createSelector)(request_snippets_selectors_state,(e=>e.get(\"defaultExpanded\"))),it=require(\"classnames\");var pt=__webpack_require__.n(it);const mt=require(\"react-copy-to-clipboard\"),ut={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(250, 250, 250)\",paddingBottom:\"0\",paddingTop:\"0\",border:\"1px solid rgb(51, 51, 51)\",borderRadius:\"4px 4px 0 0\",boxShadow:\"none\",borderBottom:\"none\"},dt={cursor:\"pointer\",lineHeight:1,display:\"inline-flex\",backgroundColor:\"rgb(51, 51, 51)\",boxShadow:\"none\",border:\"1px solid rgb(51, 51, 51)\",paddingBottom:\"0\",paddingTop:\"0\",borderRadius:\"4px 4px 0 0\",marginTop:\"-5px\",marginRight:\"-5px\",marginLeft:\"-5px\",zIndex:\"9999\",borderBottom:\"none\"},request_snippets=({request:e,requestSnippetsSelectors:t,getComponent:r})=>{const a=(0,x.useRef)(null),n=r(\"ArrowUpIcon\"),s=r(\"ArrowDownIcon\"),o=r(\"SyntaxHighlighter\",!0),[l,c]=(0,x.useState)(t.getSnippetGenerators()?.keySeq().first()),[i,p]=(0,x.useState)(t?.getDefaultExpanded()),m=t.getSnippetGenerators(),u=m.get(l),d=u.get(\"fn\")(e),handleSetIsExpanded=()=>{p(!i)},handleGetBtnStyle=e=>e===l?dt:ut,handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:a,offsetHeight:n,scrollTop:s}=t;a>n&&(0===s&&r<0||n+s>=a&&r>0)&&e.preventDefault()};return(0,x.useEffect)((()=>{}),[]),(0,x.useEffect)((()=>{const e=Array.from(a.current.childNodes).filter((e=>!!e.nodeType&&e.classList?.contains(\"curl-command\")));return e.forEach((e=>e.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[e]),O().createElement(\"div\",{className:\"request-snippets\",ref:a},O().createElement(\"div\",{style:{width:\"100%\",display:\"flex\",justifyContent:\"flex-start\",alignItems:\"center\",marginBottom:\"15px\"}},O().createElement(\"h4\",{onClick:()=>handleSetIsExpanded(),style:{cursor:\"pointer\"}},\"Snippets\"),O().createElement(\"button\",{onClick:()=>handleSetIsExpanded(),style:{border:\"none\",background:\"none\"},title:i?\"Collapse operation\":\"Expand operation\"},i?O().createElement(s,{className:\"arrow\",width:\"10\",height:\"10\"}):O().createElement(n,{className:\"arrow\",width:\"10\",height:\"10\"}))),i&&O().createElement(\"div\",{className:\"curl-command\"},O().createElement(\"div\",{style:{paddingLeft:\"15px\",paddingRight:\"10px\",width:\"100%\",display:\"flex\"}},m.entrySeq().map((([e,t])=>O().createElement(\"div\",{className:pt()(\"btn\",{active:e===l}),style:handleGetBtnStyle(e),key:e,onClick:()=>(e=>{l!==e&&c(e)})(e)},O().createElement(\"h4\",{style:e===l?{color:\"white\"}:{}},t.get(\"title\")))))),O().createElement(\"div\",{className:\"copy-to-clipboard\"},O().createElement(mt.CopyToClipboard,{text:d},O().createElement(\"button\",null))),O().createElement(\"div\",null,O().createElement(o,{language:u.get(\"syntax\"),className:\"curl microlight\",renderPlainText:({children:e,PlainTextViewer:t})=>O().createElement(t,{className:\"curl\"},e)},d))))},plugins_request_snippets=()=>({components:{RequestSnippets:request_snippets},fn:{requestSnippetGenerator_curl_bash,requestSnippetGenerator_curl_cmd,requestSnippetGenerator_curl_powershell},statePlugins:{requestSnippets:{selectors:h}}});class ModelCollapse extends x.Component{static defaultProps={collapsedContent:\"{...}\",expanded:!1,title:null,onToggle:()=>{},hideSelfOnExpand:!1,specPath:A().List([])};constructor(e,t){super(e,t);let{expanded:r,collapsedContent:a}=this.props;this.state={expanded:r,collapsedContent:a||ModelCollapse.defaultProps.collapsedContent}}componentDidMount(){const{hideSelfOnExpand:e,expanded:t,modelName:r}=this.props;e&&t&&this.props.onToggle(r,t)}UNSAFE_componentWillReceiveProps(e){this.props.expanded!==e.expanded&&this.setState({expanded:e.expanded})}toggleCollapsed=()=>{this.props.onToggle&&this.props.onToggle(this.props.modelName,!this.state.expanded),this.setState({expanded:!this.state.expanded})};onLoad=e=>{if(e&&this.props.layoutSelectors){const t=this.props.layoutSelectors.getScrollToKey();A().is(t,this.props.specPath)&&this.toggleCollapsed(),this.props.layoutActions.readyToScroll(this.props.specPath,e.parentElement)}};render(){const{title:e,classes:t}=this.props;return this.state.expanded&&this.props.hideSelfOnExpand?O().createElement(\"span\",{className:t||\"\"},this.props.children):O().createElement(\"span\",{className:t||\"\",ref:this.onLoad},O().createElement(\"button\",{\"aria-expanded\":this.state.expanded,className:\"model-box-control\",onClick:this.toggleCollapsed},e&&O().createElement(\"span\",{className:\"pointer\"},e),O().createElement(\"span\",{className:\"model-toggle\"+(this.state.expanded?\"\":\" collapsed\")}),!this.state.expanded&&O().createElement(\"span\",null,this.state.collapsedContent)),this.state.expanded&&this.props.children)}}const useTabs=({initialTab:e,isExecute:t,schema:r,example:a})=>{const n=(0,x.useMemo)((()=>({example:\"example\",model:\"model\"})),[]),s=(0,x.useMemo)((()=>Object.keys(n)),[n]).includes(e)&&r&&!t?e:n.example,o=(e=>{const t=(0,x.useRef)();return(0,x.useEffect)((()=>{t.current=e})),t.current})(t),[l,c]=(0,x.useState)(s),i=(0,x.useCallback)((e=>{c(e.target.dataset.name)}),[]);return(0,x.useEffect)((()=>{o&&!t&&a&&c(n.example)}),[o,t,a]),{activeTab:l,onTabChange:i,tabs:n}},model_example=({schema:e,example:t,isExecute:r=!1,specPath:a,includeWriteOnly:n=!1,includeReadOnly:s=!1,getComponent:o,getConfigs:l,specSelectors:c})=>{const{defaultModelRendering:i,defaultModelExpandDepth:p}=l(),m=o(\"ModelWrapper\"),u=o(\"HighlightCode\",!0),d=ae()(5).toString(\"base64\"),h=ae()(5).toString(\"base64\"),g=ae()(5).toString(\"base64\"),y=ae()(5).toString(\"base64\"),f=c.isOAS3(),{activeTab:S,tabs:E,onTabChange:_}=useTabs({initialTab:i,isExecute:r,schema:e,example:t});return O().createElement(\"div\",{className:\"model-example\"},O().createElement(\"ul\",{className:\"tab\",role:\"tablist\"},O().createElement(\"li\",{className:pt()(\"tabitem\",{active:S===E.example}),role:\"presentation\"},O().createElement(\"button\",{\"aria-controls\":h,\"aria-selected\":S===E.example,className:\"tablinks\",\"data-name\":\"example\",id:d,onClick:_,role:\"tab\"},r?\"Edit Value\":\"Example Value\")),e&&O().createElement(\"li\",{className:pt()(\"tabitem\",{active:S===E.model}),role:\"presentation\"},O().createElement(\"button\",{\"aria-controls\":y,\"aria-selected\":S===E.model,className:pt()(\"tablinks\",{inactive:r}),\"data-name\":\"model\",id:g,onClick:_,role:\"tab\"},f?\"Schema\":\"Model\"))),S===E.example&&O().createElement(\"div\",{\"aria-hidden\":S!==E.example,\"aria-labelledby\":d,\"data-name\":\"examplePanel\",id:h,role:\"tabpanel\",tabIndex:\"0\"},t||O().createElement(u,null,\"(no example available\")),S===E.model&&O().createElement(\"div\",{className:\"model-container\",\"aria-hidden\":S===E.example,\"aria-labelledby\":g,\"data-name\":\"modelPanel\",id:y,role:\"tabpanel\",tabIndex:\"0\"},O().createElement(m,{schema:e,getComponent:o,getConfigs:l,specSelectors:c,expandDepth:p,specPath:a,includeReadOnly:s,includeWriteOnly:n})))};class ModelWrapper extends x.Component{onToggle=(e,t)=>{this.props.layoutActions&&this.props.layoutActions.show(this.props.fullPath,t)};render(){let{getComponent:e,getConfigs:t}=this.props;const r=e(\"Model\");let a;return this.props.layoutSelectors&&(a=this.props.layoutSelectors.isShown(this.props.fullPath)),O().createElement(\"div\",{className:\"model-box\"},O().createElement(r,Qe()({},this.props,{getConfigs:t,expanded:a,depth:1,onToggle:this.onToggle,expandDepth:this.props.expandDepth||0})))}}const ht=require(\"react-immutable-pure-component\");var gt,yt=__webpack_require__.n(ht);function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},_extends.apply(null,arguments)}const rolling_load=e=>x.createElement(\"svg\",_extends({xmlns:\"http://www.w3.org/2000/svg\",width:200,height:200,className:\"rolling-load_svg__lds-rolling\",preserveAspectRatio:\"xMidYMid\",style:{backgroundImage:\"none\",backgroundPosition:\"initial initial\",backgroundRepeat:\"initial initial\"},viewBox:\"0 0 100 100\"},e),gt||(gt=x.createElement(\"circle\",{cx:50,cy:50,r:35,fill:\"none\",stroke:\"#555\",strokeDasharray:\"164.93361431346415 56.97787143782138\",strokeWidth:10},x.createElement(\"animateTransform\",{attributeName:\"transform\",begin:\"0s\",calcMode:\"linear\",dur:\"1s\",keyTimes:\"0;1\",repeatCount:\"indefinite\",type:\"rotate\",values:\"0 50 50;360 50 50\"})))),decodeRefName=e=>{const t=e.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(t)}catch{return t}};class Model extends(yt()){static propTypes={schema:Ue().map.isRequired,getComponent:Oe().func.isRequired,getConfigs:Oe().func.isRequired,specSelectors:Oe().object.isRequired,name:Oe().string,displayName:Oe().string,isRef:Oe().bool,required:Oe().bool,expandDepth:Oe().number,depth:Oe().number,specPath:Ue().list.isRequired,includeReadOnly:Oe().bool,includeWriteOnly:Oe().bool};getModelName=e=>-1!==e.indexOf(\"#/definitions/\")?decodeRefName(e.replace(/^.*#\\/definitions\\//,\"\")):-1!==e.indexOf(\"#/components/schemas/\")?decodeRefName(e.replace(/^.*#\\/components\\/schemas\\//,\"\")):void 0;getRefSchema=e=>{let{specSelectors:t}=this.props;return t.findDefinition(e)};render(){let{getComponent:e,getConfigs:t,specSelectors:r,schema:a,required:n,name:s,isRef:o,specPath:l,displayName:c,includeReadOnly:i,includeWriteOnly:p}=this.props;const m=e(\"ObjectModel\"),u=e(\"ArrayModel\"),d=e(\"PrimitiveModel\");let h=\"object\",g=a&&a.get(\"$$ref\"),y=a&&a.get(\"$ref\");if(!s&&g&&(s=this.getModelName(g)),y){const e=this.getModelName(y),t=this.getRefSchema(e);k.Map.isMap(t)?(a=t.mergeDeep(a),g||(a=a.set(\"$$ref\",y),g=y)):k.Map.isMap(a)&&1===a.size&&(a=null,s=y)}if(!a)return O().createElement(\"span\",{className:\"model model-title\"},O().createElement(\"span\",{className:\"model-title__text\"},c||s),!y&&O().createElement(rolling_load,{height:\"20px\",width:\"20px\"}));const f=r.isOAS3()&&a.get(\"deprecated\");switch(o=void 0!==o?o:!!g,h=a&&a.get(\"type\")||h,h){case\"object\":return O().createElement(m,Qe()({className:\"object\"},this.props,{specPath:l,getConfigs:t,schema:a,name:s,deprecated:f,isRef:o,includeReadOnly:i,includeWriteOnly:p}));case\"array\":return O().createElement(u,Qe()({className:\"array\"},this.props,{getConfigs:t,schema:a,name:s,deprecated:f,required:n,includeReadOnly:i,includeWriteOnly:p}));default:return O().createElement(d,Qe()({},this.props,{getComponent:e,getConfigs:t,schema:a,name:s,deprecated:f,required:n}))}}}class Models extends x.Component{getSchemaBasePath=()=>this.props.specSelectors.isOAS3()?[\"components\",\"schemas\"]:[\"definitions\"];getCollapsedContent=()=>\" \";handleToggle=(e,t)=>{const{layoutActions:r}=this.props;r.show([...this.getSchemaBasePath(),e],t),t&&this.props.specActions.requestResolvedSubtree([...this.getSchemaBasePath(),e])};onLoadModels=e=>{e&&this.props.layoutActions.readyToScroll(this.getSchemaBasePath(),e)};onLoadModel=e=>{if(e){const t=e.getAttribute(\"data-name\");this.props.layoutActions.readyToScroll([...this.getSchemaBasePath(),t],e)}};render(){let{specSelectors:e,getComponent:t,layoutSelectors:r,layoutActions:a,getConfigs:n}=this.props,s=e.definitions(),{docExpansion:o,defaultModelsExpandDepth:l}=n();if(!s.size||l<0)return null;const c=this.getSchemaBasePath();let i=r.isShown(c,l>0&&\"none\"!==o);const p=e.isOAS3(),m=t(\"ModelWrapper\"),u=t(\"Collapse\"),d=t(\"ModelCollapse\"),h=t(\"JumpToPath\",!0),g=t(\"ArrowUpIcon\"),y=t(\"ArrowDownIcon\");return O().createElement(\"section\",{className:i?\"models is-open\":\"models\",ref:this.onLoadModels},O().createElement(\"h4\",null,O().createElement(\"button\",{\"aria-expanded\":i,className:\"models-control\",onClick:()=>a.show(c,!i)},O().createElement(\"span\",null,p?\"Schemas\":\"Models\"),i?O().createElement(g,null):O().createElement(y,null))),O().createElement(u,{isOpened:i},s.entrySeq().map((([s])=>{const o=[...c,s],i=A().List(o),p=e.specResolvedSubtree(o),u=e.specJson().getIn(o),g=k.Map.isMap(p)?p:A().Map(),y=k.Map.isMap(u)?u:A().Map(),f=g.get(\"title\")||y.get(\"title\")||s,S=r.isShown(o,!1);S&&0===g.size&&y.size>0&&this.props.specActions.requestResolvedSubtree(o);const E=O().createElement(m,{name:s,expandDepth:l,schema:g||A().Map(),displayName:f,fullPath:o,specPath:i,getComponent:t,specSelectors:e,getConfigs:n,layoutSelectors:r,layoutActions:a,includeReadOnly:!0,includeWriteOnly:!0}),_=O().createElement(\"span\",{className:\"model-box\"},O().createElement(\"span\",{className:\"model model-title\"},f));return O().createElement(\"div\",{id:`model-${s}`,className:\"model-container\",key:`models-section-${s}`,\"data-name\":s,ref:this.onLoadModel},O().createElement(\"span\",{className:\"models-jump-to-path\"},O().createElement(h,{path:i})),O().createElement(d,{classes:\"model-box\",collapsedContent:this.getCollapsedContent(s),onToggle:this.handleToggle,title:_,displayName:f,modelName:s,specPath:i,layoutSelectors:r,layoutActions:a,hideSelfOnExpand:!0,expanded:l>0&&S},E))})).toArray()))}}const enum_model=({value:e,getComponent:t})=>{let r=t(\"ModelCollapse\"),a=O().createElement(\"span\",null,\"Array [ \",e.count(),\" ]\");return O().createElement(\"span\",{className:\"prop-enum\"},\"Enum:\",O().createElement(\"br\",null),O().createElement(r,{collapsedContent:a},\"[ \",e.map(String).join(\", \"),\" ]\"))};function isAbsoluteUrl(e){return e.match(/^(?:[a-z]+:)?\\/\\//i)}function buildBaseUrl(e,t){return e?isAbsoluteUrl(e)?function addProtocol(e){return e.match(/^\\/\\//i)?`${window.location.protocol}${e}`:e}(e):new URL(e,t).href:t}function safeBuildUrl(e,t,{selectedServer:r=\"\"}={}){try{return function buildUrl(e,t,{selectedServer:r=\"\"}={}){if(!e)return;if(isAbsoluteUrl(e))return e;const a=buildBaseUrl(r,t);return isAbsoluteUrl(a)?new URL(e,a).href:new URL(e,window.location.href).href}(e,t,{selectedServer:r})}catch{return}}function sanitizeUrl(e){if(\"string\"!=typeof e||\"\"===e.trim())return\"\";const t=e.trim(),r=\"about:blank\";try{const e=`https://base${String(Math.random()).slice(2)}`,a=new URL(t,e),n=a.protocol.slice(0,-1);return[\"javascript\",\"data\",\"vbscript\"].includes(n.toLowerCase())?r:a.origin===e?t.startsWith(\"/\")?`${a.pathname}${a.search}${a.hash}`:t.startsWith(\".\")?`.${a.pathname}${a.search}${a.hash}`:`${a.pathname.substring(1)}${a.search}${a.hash}`:String(a)}catch{return r}}class ObjectModel extends x.Component{render(){let{schema:e,name:t,displayName:r,isRef:a,getComponent:n,getConfigs:s,depth:o,onToggle:l,expanded:c,specPath:i,...p}=this.props,{specSelectors:m,expandDepth:u,includeReadOnly:d,includeWriteOnly:h}=p;const{isOAS3:g}=m,y=o>2||2===o&&\"items\"!==i.last();if(!e)return null;const{showExtensions:f}=s(),S=f?getExtensions(e):(0,k.List)();let E=e.get(\"description\"),_=e.get(\"properties\"),v=e.get(\"additionalProperties\"),w=e.get(\"title\")||r||t,b=e.get(\"required\"),C=e.filter(((e,t)=>-1!==[\"maxProperties\",\"minProperties\",\"nullable\",\"example\"].indexOf(t))),x=e.get(\"deprecated\"),N=e.getIn([\"externalDocs\",\"url\"]),A=e.getIn([\"externalDocs\",\"description\"]);const I=n(\"JumpToPath\",!0),j=n(\"Markdown\",!0),q=n(\"Model\"),P=n(\"ModelCollapse\"),M=n(\"Property\"),T=n(\"Link\"),R=n(\"ModelExtensions\"),JumpToPathSection=()=>O().createElement(\"span\",{className:\"model-jump-to-path\"},O().createElement(I,{path:i})),J=O().createElement(\"span\",null,O().createElement(\"span\",null,\"{\"),\"...\",O().createElement(\"span\",null,\"}\"),a?O().createElement(JumpToPathSection,null):\"\"),$=m.isOAS3()?e.get(\"allOf\"):null,V=m.isOAS3()?e.get(\"anyOf\"):null,L=m.isOAS3()?e.get(\"oneOf\"):null,D=m.isOAS3()?e.get(\"not\"):null,U=w&&O().createElement(\"span\",{className:\"model-title\"},a&&e.get(\"$$ref\")&&O().createElement(\"span\",{className:pt()(\"model-hint\",{\"model-hint--embedded\":y})},e.get(\"$$ref\")),O().createElement(\"span\",{className:\"model-title__text\"},w));return O().createElement(\"span\",{className:\"model\"},O().createElement(P,{modelName:t,title:U,onToggle:l,expanded:!!c||o<=u,collapsedContent:J},O().createElement(\"span\",{className:\"brace-open object\"},\"{\"),a?O().createElement(JumpToPathSection,null):null,O().createElement(\"span\",{className:\"inner-object\"},O().createElement(\"table\",{className:\"model\"},O().createElement(\"tbody\",null,E?O().createElement(\"tr\",{className:\"description\"},O().createElement(\"td\",null,\"description:\"),O().createElement(\"td\",null,O().createElement(j,{source:E}))):null,N&&O().createElement(\"tr\",{className:\"external-docs\"},O().createElement(\"td\",null,\"externalDocs:\"),O().createElement(\"td\",null,O().createElement(T,{target:\"_blank\",href:sanitizeUrl(N)},A||N))),x?O().createElement(\"tr\",{className:\"property\"},O().createElement(\"td\",null,\"deprecated:\"),O().createElement(\"td\",null,\"true\")):null,_&&_.size?_.entrySeq().filter((([,e])=>(!e.get(\"readOnly\")||d)&&(!e.get(\"writeOnly\")||h))).map((([e,r])=>{let a=g()&&r.get(\"deprecated\"),l=k.List.isList(b)&&b.contains(e),c=[\"property-row\"];return a&&c.push(\"deprecated\"),l&&c.push(\"required\"),O().createElement(\"tr\",{key:e,className:c.join(\" \")},O().createElement(\"td\",null,e,l&&O().createElement(\"span\",{className:\"star\"},\"*\")),O().createElement(\"td\",null,O().createElement(q,Qe()({key:`object-${t}-${e}_${r}`},p,{required:l,getComponent:n,specPath:i.push(\"properties\",e),getConfigs:s,schema:r,depth:o+1}))))})).toArray():null,0===S.size?null:O().createElement(O().Fragment,null,O().createElement(\"tr\",null,O().createElement(\"td\",null,\" \")),O().createElement(R,{extensions:S,propClass:\"extension\"})),v&&v.size?O().createElement(\"tr\",null,O().createElement(\"td\",null,\"< * >:\"),O().createElement(\"td\",null,O().createElement(q,Qe()({},p,{required:!1,getComponent:n,specPath:i.push(\"additionalProperties\"),getConfigs:s,schema:v,depth:o+1})))):null,$?O().createElement(\"tr\",null,O().createElement(\"td\",null,\"allOf ->\"),O().createElement(\"td\",null,$.map(((e,t)=>O().createElement(\"div\",{key:t},O().createElement(q,Qe()({},p,{required:!1,getComponent:n,specPath:i.push(\"allOf\",t),getConfigs:s,schema:e,depth:o+1}))))))):null,V?O().createElement(\"tr\",null,O().createElement(\"td\",null,\"anyOf ->\"),O().createElement(\"td\",null,V.map(((e,t)=>O().createElement(\"div\",{key:t},O().createElement(q,Qe()({},p,{required:!1,getComponent:n,specPath:i.push(\"anyOf\",t),getConfigs:s,schema:e,depth:o+1}))))))):null,L?O().createElement(\"tr\",null,O().createElement(\"td\",null,\"oneOf ->\"),O().createElement(\"td\",null,L.map(((e,t)=>O().createElement(\"div\",{key:t},O().createElement(q,Qe()({},p,{required:!1,getComponent:n,specPath:i.push(\"oneOf\",t),getConfigs:s,schema:e,depth:o+1}))))))):null,D?O().createElement(\"tr\",null,O().createElement(\"td\",null,\"not ->\"),O().createElement(\"td\",null,O().createElement(\"div\",null,O().createElement(q,Qe()({},p,{required:!1,getComponent:n,specPath:i.push(\"not\"),getConfigs:s,schema:D,depth:o+1}))))):null))),O().createElement(\"span\",{className:\"brace-close\"},\"}\")),C.size?C.entrySeq().map((([e,t])=>O().createElement(M,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:\"property\"}))):null)}}class ArrayModel extends x.Component{render(){let{getComponent:e,getConfigs:t,schema:r,depth:a,expandDepth:n,name:s,displayName:o,specPath:l}=this.props,c=r.get(\"description\"),i=r.get(\"items\"),p=r.get(\"title\")||o||s,m=r.filter(((e,t)=>-1===[\"type\",\"items\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(t))),u=r.getIn([\"externalDocs\",\"url\"]),d=r.getIn([\"externalDocs\",\"description\"]);const h=e(\"Markdown\",!0),g=e(\"ModelCollapse\"),y=e(\"Model\"),f=e(\"Property\"),S=e(\"Link\"),E=p&&O().createElement(\"span\",{className:\"model-title\"},O().createElement(\"span\",{className:\"model-title__text\"},p));return O().createElement(\"span\",{className:\"model\"},O().createElement(g,{title:E,expanded:a<=n,collapsedContent:\"[...]\"},\"[\",m.size?m.entrySeq().map((([e,t])=>O().createElement(f,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:\"property\"}))):null,c?O().createElement(h,{source:c}):m.size?O().createElement(\"div\",{className:\"markdown\"}):null,u&&O().createElement(\"div\",{className:\"external-docs\"},O().createElement(S,{target:\"_blank\",href:sanitizeUrl(u)},d||u)),O().createElement(\"span\",null,O().createElement(y,Qe()({},this.props,{getConfigs:t,specPath:l.push(\"items\"),name:null,schema:i,required:!1,depth:a+1}))),\"]\"))}}const ft=\"property primitive\";class Primitive extends x.Component{render(){let{schema:e,getComponent:t,getConfigs:r,name:a,displayName:n,depth:s,expandDepth:o}=this.props;const{showExtensions:l}=r();if(!e||!e.get)return O().createElement(\"div\",null);let c=e.get(\"type\"),i=e.get(\"format\"),p=e.get(\"xml\"),m=e.get(\"enum\"),u=e.get(\"title\")||n||a,d=e.get(\"description\");const h=getExtensions(e);let g=e.filter(((e,t)=>-1===[\"enum\",\"type\",\"format\",\"description\",\"$$ref\",\"externalDocs\"].indexOf(t))).filterNot(((e,t)=>h.has(t))),y=e.getIn([\"externalDocs\",\"url\"]),f=e.getIn([\"externalDocs\",\"description\"]);const S=t(\"Markdown\",!0),E=t(\"EnumModel\"),_=t(\"Property\"),v=t(\"ModelCollapse\"),w=t(\"Link\"),b=t(\"ModelExtensions\"),C=u&&O().createElement(\"span\",{className:\"model-title\"},O().createElement(\"span\",{className:\"model-title__text\"},u));return O().createElement(\"span\",{className:\"model\"},O().createElement(v,{title:C,expanded:s<=o,collapsedContent:\"[...]\"},O().createElement(\"span\",{className:\"prop\"},a&&s>1&&O().createElement(\"span\",{className:\"prop-name\"},u),O().createElement(\"span\",{className:\"prop-type\"},c),i&&O().createElement(\"span\",{className:\"prop-format\"},\"($\",i,\")\"),g.size?g.entrySeq().map((([e,t])=>O().createElement(_,{key:`${e}-${t}`,propKey:e,propVal:t,propClass:ft}))):null,l&&h.size>0?O().createElement(b,{extensions:h,propClass:`${ft} extension`}):null,d?O().createElement(S,{source:d}):null,y&&O().createElement(\"div\",{className:\"external-docs\"},O().createElement(w,{target:\"_blank\",href:sanitizeUrl(y)},f||y)),p&&p.size?O().createElement(\"span\",null,O().createElement(\"br\",null),O().createElement(\"span\",{className:ft},\"xml:\"),p.entrySeq().map((([e,t])=>O().createElement(\"span\",{key:`${e}-${t}`,className:ft},O().createElement(\"br\",null),\"   \",e,\": \",String(t)))).toArray()):null,m&&O().createElement(E,{value:m,getComponent:t}))))}}class Schemes extends O().Component{UNSAFE_componentWillMount(){let{schemes:e}=this.props;this.setScheme(e.first())}UNSAFE_componentWillReceiveProps(e){this.props.currentScheme&&e.schemes.includes(this.props.currentScheme)||this.setScheme(e.schemes.first())}onChange=e=>{this.setScheme(e.target.value)};setScheme=e=>{let{path:t,method:r,specActions:a}=this.props;a.setScheme(e,t,r)};render(){let{schemes:e,currentScheme:t}=this.props;return O().createElement(\"label\",{htmlFor:\"schemes\"},O().createElement(\"span\",{className:\"schemes-title\"},\"Schemes\"),O().createElement(\"select\",{onChange:this.onChange,value:t,id:\"schemes\"},e.valueSeq().map((e=>O().createElement(\"option\",{value:e,key:e},e))).toArray()))}}class SchemesContainer extends O().Component{render(){const{specActions:e,specSelectors:t,getComponent:r}=this.props,a=t.operationScheme(),n=t.schemes(),s=r(\"schemes\");return n&&n.size?O().createElement(s,{currentScheme:a,schemes:n,specActions:e}):null}}const St=require(\"react-debounce-input\");var Et=__webpack_require__.n(St);const _t={value:\"\",onChange:()=>{},schema:{},keyName:\"\",required:!1,errors:(0,k.List)()};class JsonSchemaForm extends x.Component{static defaultProps=_t;componentDidMount(){const{dispatchInitialValue:e,value:t,onChange:r}=this.props;e?r(t):!1===e&&r(\"\")}render(){let{schema:e,errors:t,value:r,onChange:a,getComponent:n,fn:s,disabled:o}=this.props;const l=e&&e.get?e.get(\"format\"):null,c=e&&e.get?e.get(\"type\"):null,i=s.jsonSchema202012.foldType(immutableToJS(c)),p=s.isFileUploadIntended(e);let getComponentSilently=e=>n(e,!1,{failSilently:!0}),m=c?getComponentSilently(l?`JsonSchema_${c}_${l}`:`JsonSchema_${c}`):n(\"JsonSchema_string\");return p||!k.List.isList(c)||\"array\"!==i&&\"object\"!==i||(m=n(\"JsonSchema_object\")),m||(m=n(\"JsonSchema_string\")),O().createElement(m,Qe()({},this.props,{errors:t,fn:s,getComponent:n,value:r,onChange:a,schema:e,disabled:o}))}}class JsonSchema_string extends x.Component{static defaultProps=_t;onChange=e=>{const t=this.props.schema&&\"file\"===this.props.schema.get(\"type\")?e.target.files[0]:e.target.value;this.props.onChange(t,this.props.keyName)};onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,schema:r,errors:a,required:n,description:s,disabled:o}=this.props;const l=r&&r.get?r.get(\"enum\"):null,c=r&&r.get?r.get(\"format\"):null,i=r&&r.get?r.get(\"type\"):null,p=r&&r.get?r.get(\"in\"):null;if(t?(isImmutable(t)||\"object\"==typeof t)&&(t=stringify(t)):t=\"\",a=a.toJS?a.toJS():[],l){const r=e(\"Select\");return O().createElement(r,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",allowedValues:[...l],value:t,allowEmptyValue:!n,disabled:o,onChange:this.onEnumChange})}const m=o||p&&\"formData\"===p&&!(\"FormData\"in window),u=e(\"Input\");return i&&\"file\"===i?O().createElement(u,{type:\"file\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",onChange:this.onChange,disabled:m}):O().createElement(Et(),{type:c&&\"password\"===c?\"password\":\"text\",className:a.length?\"invalid\":\"\",title:a.length?a:\"\",value:t,minLength:0,debounceTimeout:350,placeholder:s,onChange:this.onChange,disabled:m})}}class JsonSchema_array extends x.PureComponent{static defaultProps=_t;constructor(e,t){super(e,t),this.state={value:valueOrEmptyList(e.value),schema:e.schema}}UNSAFE_componentWillReceiveProps(e){const t=valueOrEmptyList(e.value);t!==this.state.value&&this.setState({value:t}),e.schema!==this.state.schema&&this.setState({schema:e.schema})}onChange=()=>{this.props.onChange(this.state.value)};onItemChange=(e,t)=>{this.setState((({value:r})=>({value:r.set(t,e)})),this.onChange)};removeItem=e=>{this.setState((({value:t})=>({value:t.delete(e)})),this.onChange)};addItem=()=>{const{fn:e}=this.props;let t=valueOrEmptyList(this.state.value);this.setState((()=>({value:t.push(e.getSampleSchema(this.state.schema.get(\"items\"),!1,{includeWriteOnly:!0}))})),this.onChange)};onEnumChange=e=>{this.setState((()=>({value:e})),this.onChange)};render(){let{getComponent:e,required:t,schema:r,errors:a,fn:n,disabled:s}=this.props;a=a.toJS?a.toJS():Array.isArray(a)?a:[];const o=a.filter((e=>\"string\"==typeof e)),l=a.filter((e=>void 0!==e.needRemove)).map((e=>e.error)),c=this.state.value,i=!!(c&&c.count&&c.count()>0),p=r.getIn([\"items\",\"enum\"]),m=r.getIn([\"items\",\"type\"]),u=n.jsonSchema202012.foldType(immutableToJS(m)),d=n.jsonSchema202012.getType(immutableToJS(r.get(\"items\"))),h=r.getIn([\"items\",\"format\"]),g=r.get(\"items\");let y,f=!1,S=\"file\"===m||\"string\"===m&&\"binary\"===h;if(m&&h?y=e(`JsonSchema_${m}_${h}`):\"boolean\"!==m&&\"array\"!==m&&\"object\"!==m||(y=e(`JsonSchema_${m}`)),!k.List.isList(m)||\"array\"!==u&&\"object\"!==u||(y=e(\"JsonSchema_object\")),y||S||(f=!0),p){const r=e(\"Select\");return O().createElement(r,{className:a.length?\"invalid\":\"\",title:a.length?a:\"\",multiple:!0,value:c,disabled:s,allowedValues:p,allowEmptyValue:!t,onChange:this.onEnumChange})}const E=e(\"Button\");return O().createElement(\"div\",{className:\"json-schema-array\"},i?c.map(((t,r)=>{const o=(0,k.fromJS)([...a.filter((e=>e.index===r)).map((e=>e.error))]);return O().createElement(\"div\",{key:r,className:\"json-schema-form-item\"},S?O().createElement(JsonSchemaArrayItemFile,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o,getComponent:e}):f?O().createElement(JsonSchemaArrayItemText,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o}):O().createElement(y,Qe()({},this.props,{value:t,onChange:e=>this.onItemChange(e,r),disabled:s,errors:o,schema:g,getComponent:e,fn:n})),s?null:O().createElement(E,{className:`btn btn-sm json-schema-form-item-remove ${l.length?\"invalid\":null}`,title:l.length?l:\"\",onClick:()=>this.removeItem(r)},\" - \"))})):null,s?null:O().createElement(E,{className:`btn btn-sm json-schema-form-item-add ${o.length?\"invalid\":null}`,title:o.length?o:\"\",onClick:this.addItem},\"Add \",d,\" item\"))}}class JsonSchemaArrayItemText extends x.Component{static defaultProps=_t;onChange=e=>{const t=e.target.value;this.props.onChange(t,this.props.keyName)};render(){let{value:e,errors:t,description:r,disabled:a}=this.props;return e?(isImmutable(e)||\"object\"==typeof e)&&(e=stringify(e)):e=\"\",t=t.toJS?t.toJS():[],O().createElement(Et(),{type:\"text\",className:t.length?\"invalid\":\"\",title:t.length?t:\"\",value:e,minLength:0,debounceTimeout:350,placeholder:r,onChange:this.onChange,disabled:a})}}class JsonSchemaArrayItemFile extends x.Component{static defaultProps=_t;onFileChange=e=>{const t=e.target.files[0];this.props.onChange(t,this.props.keyName)};render(){let{getComponent:e,errors:t,disabled:r}=this.props;const a=e(\"Input\"),n=r||!(\"FormData\"in window);return O().createElement(a,{type:\"file\",className:t.length?\"invalid\":\"\",title:t.length?t:\"\",onChange:this.onFileChange,disabled:n})}}class JsonSchema_boolean extends x.Component{static defaultProps=_t;onEnumChange=e=>this.props.onChange(e);render(){let{getComponent:e,value:t,errors:r,schema:a,required:n,disabled:s}=this.props;r=r.toJS?r.toJS():[];let o=a&&a.get?a.get(\"enum\"):null,l=!o||!n,c=!o&&[\"true\",\"false\"];const i=e(\"Select\");return O().createElement(i,{className:r.length?\"invalid\":\"\",title:r.length?r:\"\",value:String(t),disabled:s,allowedValues:o?[...o]:c,allowEmptyValue:l,onChange:this.onEnumChange})}}const stringifyObjectErrors=e=>e.map((e=>{const t=void 0!==e.propKey?e.propKey:e.index;let r=\"string\"==typeof e?e:\"string\"==typeof e.error?e.error:null;if(!t&&r)return r;let a=e.error,n=`/${e.propKey}`;for(;\"object\"==typeof a;){const e=void 0!==a.propKey?a.propKey:a.index;if(void 0===e)break;if(n+=`/${e}`,!a.error)break;a=a.error}return`${n}: ${a}`}));class JsonSchema_object extends x.PureComponent{constructor(){super()}static defaultProps=_t;onChange=e=>{this.props.onChange(e)};handleOnChange=e=>{const t=e.target.value;this.onChange(t)};render(){let{getComponent:e,value:t,errors:r,disabled:a}=this.props;const n=e(\"TextArea\");return r=r.toJS?r.toJS():Array.isArray(r)?r:[],O().createElement(\"div\",null,O().createElement(n,{className:pt()({invalid:r.length}),title:r.length?stringifyObjectErrors(r).join(\", \"):\"\",value:stringify(t),disabled:a,onChange:this.handleOnChange}))}}function valueOrEmptyList(e){return k.List.isList(e)?e:Array.isArray(e)?(0,k.fromJS)(e):(0,k.List)()}const ModelExtensions=({extensions:e,propClass:t=\"\"})=>e.entrySeq().map((([e,r])=>{const a=immutableToJS(r)??null;return O().createElement(\"tr\",{key:e,className:t},O().createElement(\"td\",null,e),O().createElement(\"td\",null,JSON.stringify(a)))})).toArray(),vt=require(\"lodash/isPlainObject\");var wt=__webpack_require__.n(vt);const hasSchemaType=(e,t)=>{const r=k.Map.isMap(e);if(!r&&!wt()(e))return!1;const a=r?e.get(\"type\"):e.type;return t===a||Array.isArray(t)&&t.includes(a)},json_schema_5=()=>({components:{modelExample:model_example,ModelWrapper,ModelCollapse,Model,Models,EnumModel:enum_model,ObjectModel,ArrayModel,PrimitiveModel:Primitive,ModelExtensions,schemes:Schemes,SchemesContainer,...g},fn:{hasSchemaType}}),bt=require(\"xml\");var Ct=__webpack_require__.n(bt);const xt=require(\"randexp\");var Ot=__webpack_require__.n(xt);const Nt=require(\"lodash/isEmpty\");var kt=__webpack_require__.n(Nt);const shallowArrayEquals=e=>t=>Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every(((e,r)=>e===t[r])),list=(...e)=>e;class Cache extends Map{delete(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.delete(t)}get(e){const t=Array.from(this.keys()).find(shallowArrayEquals(e));return super.get(t)}has(e){return-1!==Array.from(this.keys()).findIndex(shallowArrayEquals(e))}}const utils_memoizeN=(e,t=list)=>{const{Cache:r}=B();B().Cache=Cache;const a=B()(e,t);return B().Cache=r,a},At={string:e=>e.pattern?(e=>{try{return new(Ot())(e).gen()}catch(e){return\"string\"}})(e.pattern):\"string\",string_email:()=>\"user@example.com\",\"string_date-time\":()=>(new Date).toISOString(),string_date:()=>(new Date).toISOString().substring(0,10),string_uuid:()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",string_hostname:()=>\"example.com\",string_ipv4:()=>\"198.51.100.42\",string_ipv6:()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",number:()=>0,number_float:()=>0,integer:()=>0,boolean:e=>\"boolean\"!=typeof e.default||e.default},primitive=e=>{e=objectify(e);let{type:t,format:r}=e,a=At[`${t}_${r}`]||At[t];return isFunc(a)?a(e):\"Unknown Type: \"+e.type},sanitizeRef=e=>deeplyStripKey(e,\"$$ref\",(e=>\"string\"==typeof e&&e.indexOf(\"#\")>-1)),It=[\"maxProperties\",\"minProperties\"],jt=[\"minItems\",\"maxItems\"],qt=[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\"],Pt=[\"minLength\",\"maxLength\"],mergeJsonSchema=(e,t,r={})=>{const a={...e};if([\"example\",\"default\",\"enum\",\"xml\",\"type\",...It,...jt,...qt,...Pt].forEach((e=>(e=>{void 0===a[e]&&void 0!==t[e]&&(a[e]=t[e])})(e))),void 0!==t.required&&Array.isArray(t.required)&&(void 0!==a.required&&a.required.length||(a.required=[]),t.required.forEach((e=>{a.required.includes(e)||a.required.push(e)}))),t.properties){a.properties||(a.properties={});let e=objectify(t.properties);for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]&&e[n].deprecated||e[n]&&e[n].readOnly&&!r.includeReadOnly||e[n]&&e[n].writeOnly&&!r.includeWriteOnly||a.properties[n]||(a.properties[n]=e[n],!t.required&&Array.isArray(t.required)&&-1!==t.required.indexOf(n)&&(a.required?a.required.push(n):a.required=[n])))}return t.items&&(a.items||(a.items={}),a.items=mergeJsonSchema(a.items,t.items,r)),a},sampleFromSchemaGeneric=(e,t={},r=void 0,a=!1)=>{e&&isFunc(e.toJS)&&(e=e.toJS());let n=void 0!==r||e&&void 0!==e.example||e&&void 0!==e.default;const s=!n&&e&&e.oneOf&&e.oneOf.length>0,o=!n&&e&&e.anyOf&&e.anyOf.length>0;if(!n&&(s||o)){const r=objectify(s?e.oneOf[0]:e.anyOf[0]);if(!(e=mergeJsonSchema(e,r,t)).xml&&r.xml&&(e.xml=r.xml),void 0!==e.example&&void 0!==r.example)n=!0;else if(r.properties){e.properties||(e.properties={});let a=objectify(r.properties);for(let n in a)Object.prototype.hasOwnProperty.call(a,n)&&(a[n]&&a[n].deprecated||a[n]&&a[n].readOnly&&!t.includeReadOnly||a[n]&&a[n].writeOnly&&!t.includeWriteOnly||e.properties[n]||(e.properties[n]=a[n],!r.required&&Array.isArray(r.required)&&-1!==r.required.indexOf(n)&&(e.required?e.required.push(n):e.required=[n])))}}const l={};let{xml:c,type:i,example:p,properties:m,additionalProperties:u,items:d}=e||{},{includeReadOnly:h,includeWriteOnly:g}=t;c=c||{};let y,{name:f,prefix:S,namespace:E}=c,_={};if(a&&(f=f||\"notagname\",y=(S?S+\":\":\"\")+f,E)){l[S?\"xmlns:\"+S:\"xmlns\"]=E}a&&(_[y]=[]);const schemaHasAny=t=>t.some((t=>Object.prototype.hasOwnProperty.call(e,t)));e&&!i&&(m||u||schemaHasAny(It)?i=\"object\":d||schemaHasAny(jt)?i=\"array\":schemaHasAny(qt)?(i=\"number\",e.type=\"number\"):n||e.enum||(i=\"string\",e.type=\"string\"));const handleMinMaxItems=t=>{if(null!=e?.maxItems&&(t=t.slice(0,e?.maxItems)),null!=e?.minItems){let r=0;for(;t.length<e?.minItems;)t.push(t[r++%t.length])}return t},v=objectify(m);let w,b=0;const hasExceededMaxProperties=()=>e&&null!==e.maxProperties&&void 0!==e.maxProperties&&b>=e.maxProperties,canAddProperty=t=>!e||null===e.maxProperties||void 0===e.maxProperties||!hasExceededMaxProperties()&&(!(t=>!(e&&e.required&&e.required.length&&e.required.includes(t)))(t)||e.maxProperties-b-(()=>{if(!e||!e.required)return 0;let t=0;return a?e.required.forEach((e=>t+=void 0===_[e]?0:1)):e.required.forEach((e=>t+=void 0===_[y]?.find((t=>void 0!==t[e]))?0:1)),e.required.length-t})()>0);if(w=a?(r,n=void 0)=>{if(e&&v[r]){if(v[r].xml=v[r].xml||{},v[r].xml.attribute){const e=Array.isArray(v[r].enum)?v[r].enum[0]:void 0,t=v[r].example,a=v[r].default;return void(l[v[r].xml.name||r]=void 0!==t?t:void 0!==a?a:void 0!==e?e:primitive(v[r]))}v[r].xml.name=v[r].xml.name||r}else v[r]||!1===u||(v[r]={xml:{name:r}});let s=sampleFromSchemaGeneric(e&&v[r]||void 0,t,n,a);canAddProperty(r)&&(b++,Array.isArray(s)?_[y]=_[y].concat(s):_[y].push(s))}:(r,n)=>{if(canAddProperty(r)){if(Object.prototype.hasOwnProperty.call(e,\"discriminator\")&&e.discriminator&&Object.prototype.hasOwnProperty.call(e.discriminator,\"mapping\")&&e.discriminator.mapping&&Object.prototype.hasOwnProperty.call(e,\"$$ref\")&&e.$$ref&&e.discriminator.propertyName===r){for(let t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){_[r]=t;break}}else _[r]=sampleFromSchemaGeneric(v[r],t,n,a);b++}},n){let n;if(n=sanitizeRef(void 0!==r?r:void 0!==p?p:e.default),!a){if(\"number\"==typeof n&&\"string\"===i)return`${n}`;if(\"string\"!=typeof n||\"string\"===i)return n;try{return JSON.parse(n)}catch(e){return n}}if(e||(i=Array.isArray(n)?\"array\":typeof n),\"array\"===i){if(!Array.isArray(n)){if(\"string\"==typeof n)return n;n=[n]}const r=e?e.items:void 0;r&&(r.xml=r.xml||c||{},r.xml.name=r.xml.name||c.name);let s=n.map((e=>sampleFromSchemaGeneric(r,t,e,a)));return s=handleMinMaxItems(s),c.wrapped?(_[y]=s,kt()(l)||_[y].push({_attr:l})):_=s,_}if(\"object\"===i){if(\"string\"==typeof n)return n;for(let t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e&&v[t]&&v[t].readOnly&&!h||e&&v[t]&&v[t].writeOnly&&!g||(e&&v[t]&&v[t].xml&&v[t].xml.attribute?l[v[t].xml.name||t]=n[t]:w(t,n[t])));return kt()(l)||_[y].push({_attr:l}),_}return _[y]=kt()(l)?n:[{_attr:l},n],_}if(\"object\"===i){for(let e in v)Object.prototype.hasOwnProperty.call(v,e)&&(v[e]&&v[e].deprecated||v[e]&&v[e].readOnly&&!h||v[e]&&v[e].writeOnly&&!g||w(e));if(a&&l&&_[y].push({_attr:l}),hasExceededMaxProperties())return _;if(!0===u)a?_[y].push({additionalProp:\"Anything can be here\"}):_.additionalProp1={},b++;else if(u){const r=objectify(u),n=sampleFromSchemaGeneric(r,t,void 0,a);if(a&&r.xml&&r.xml.name&&\"notagname\"!==r.xml.name)_[y].push(n);else{const t=null!==e.minProperties&&void 0!==e.minProperties&&b<e.minProperties?e.minProperties-b:3;for(let e=1;e<=t;e++){if(hasExceededMaxProperties())return _;if(a){const t={};t[\"additionalProp\"+e]=n.notagname,_[y].push(t)}else _[\"additionalProp\"+e]=n;b++}}}return _}if(\"array\"===i){if(!d)return;let r;if(a&&(d.xml=d.xml||e?.xml||{},d.xml.name=d.xml.name||c.name),Array.isArray(d.anyOf))r=d.anyOf.map((e=>sampleFromSchemaGeneric(mergeJsonSchema(e,d,t),t,void 0,a)));else if(Array.isArray(d.oneOf))r=d.oneOf.map((e=>sampleFromSchemaGeneric(mergeJsonSchema(e,d,t),t,void 0,a)));else{if(!(!a||a&&c.wrapped))return sampleFromSchemaGeneric(d,t,void 0,a);r=[sampleFromSchemaGeneric(d,t,void 0,a)]}return r=handleMinMaxItems(r),a&&c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l}),_):r}let C;if(e&&Array.isArray(e.enum))C=normalizeArray(e.enum)[0];else{if(!e)return;if(C=primitive(e),\"number\"==typeof C){let t=e.minimum;null!=t&&(e.exclusiveMinimum&&t++,C=t);let r=e.maximum;null!=r&&(e.exclusiveMaximum&&r--,C=r)}if(\"string\"==typeof C&&(null!==e.maxLength&&void 0!==e.maxLength&&(C=C.slice(0,e.maxLength)),null!==e.minLength&&void 0!==e.minLength)){let t=0;for(;C.length<e.minLength;)C+=C[t++%C.length]}}if(\"file\"!==i)return a?(_[y]=kt()(l)?C:[{_attr:l},C],_):C},inferSchema=e=>(e.schema&&(e=e.schema),e.properties&&(e.type=\"object\"),e),createXMLExample=(e,t,r)=>{const a=sampleFromSchemaGeneric(e,t,r,!0);if(a)return\"string\"==typeof a?a:Ct()(a,{declaration:!0,indent:\"\\t\"})},sampleFromSchema=(e,t,r)=>sampleFromSchemaGeneric(e,t,r,!1),resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],Mt=utils_memoizeN(createXMLExample,resolver),Tt=utils_memoizeN(sampleFromSchema,resolver),Rt=[{when:/json/,shouldStringifyTypes:[\"string\"]}],Jt=[\"object\"],get_json_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.memoizedSampleFromSchema(t,r,n),l=typeof o,c=Rt.reduce(((e,t)=>t.when.test(a)?[...e,...t.shouldStringifyTypes]:e),Jt);return X()(c,(e=>e===l))?JSON.stringify(o,null,2):o},get_yaml_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.getJsonSampleSchema(t,r,a,n);let l;try{l=qe().dump(qe().load(o),{lineWidth:-1},{schema:je.JSON_SCHEMA}),\"\\n\"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),\"error: could not generate yaml example\"}return l.replace(/\\t/g,\"  \")},get_xml_sample_schema=e=>(t,r,a)=>{const{fn:n}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(t.$$ref){let e=t.$$ref.match(/\\S*\\/(\\S+)$/);t.xml.name=e[1]}}return n.memoizedCreateXMLExample(t,r,a)},get_sample_schema=e=>(t,r=\"\",a={},n=void 0)=>{const{fn:s}=e();return\"function\"==typeof t?.toJS&&(t=t.toJS()),\"function\"==typeof n?.toJS&&(n=n.toJS()),/xml/.test(r)?s.getXmlSampleSchema(t,a,n):/(yaml|yml)/.test(r)?s.getYamlSampleSchema(t,a,r,n):s.getJsonSampleSchema(t,a,r,n)},json_schema_5_samples=({getSystem:e})=>{const t=get_json_sample_schema(e),r=get_yaml_sample_schema(e),a=get_xml_sample_schema(e),n=get_sample_schema(e);return{fn:{jsonSchema5:{inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Tt,memoizedCreateXMLExample:Mt,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema},inferSchema,sampleFromSchema,sampleFromSchemaGeneric,createXMLExample,memoizedSampleFromSchema:Tt,memoizedCreateXMLExample:Mt,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema}}},$t=require(\"lodash/constant\");var Vt=__webpack_require__.n($t);const Lt=[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],spec_selectors_state=e=>e||(0,k.Map)(),Dt=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"lastError\"))),Ut=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"url\"))),Kt=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"spec\")||\"\")),zt=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"specSource\")||\"not-editor\")),Bt=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"json\",(0,k.Map)()))),Ft=(0,_e.createSelector)(Bt,(e=>e.toJS())),Wt=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"resolved\",(0,k.Map)()))),specResolvedSubtree=(e,t)=>e.getIn([\"resolvedSubtrees\",...t],void 0),mergerFn=(e,t)=>k.Map.isMap(e)&&k.Map.isMap(t)?t.get(\"$$ref\")?t:(0,k.OrderedMap)().mergeWith(mergerFn,e,t):t,Ht=(0,_e.createSelector)(spec_selectors_state,(e=>(0,k.OrderedMap)().mergeWith(mergerFn,e.get(\"json\"),e.get(\"resolvedSubtrees\")))),spec=e=>Bt(e),Xt=(0,_e.createSelector)(spec,(()=>!1)),Gt=(0,_e.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get(\"info\")))),Yt=(0,_e.createSelector)(spec,(e=>returnSelfOrNewMap(e&&e.get(\"externalDocs\")))),Qt=(0,_e.createSelector)(Gt,(e=>e&&e.get(\"version\"))),Zt=(0,_e.createSelector)(Qt,(e=>/v?([0-9]*)\\.([0-9]*)\\.([0-9]*)/i.exec(e).slice(1))),er=(0,_e.createSelector)(Ht,(e=>e.get(\"paths\"))),tr=Vt()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\"]),rr=(0,_e.createSelector)(er,(e=>{let t=(0,k.List)();return!k.Map.isMap(e)||e.isEmpty()||e.forEach(((e,r)=>{if(!e||!e.forEach)return{};e.forEach(((e,a)=>{Lt.indexOf(a)<0||(t=t.push((0,k.fromJS)({path:r,method:a,operation:e,id:`${a}-${r}`})))}))})),t})),ar=(0,_e.createSelector)(spec,(e=>(0,k.Set)(e.get(\"consumes\")))),nr=(0,_e.createSelector)(spec,(e=>(0,k.Set)(e.get(\"produces\")))),sr=(0,_e.createSelector)(spec,(e=>e.get(\"security\",(0,k.List)()))),or=(0,_e.createSelector)(spec,(e=>e.get(\"securityDefinitions\"))),findDefinition=(e,t)=>{const r=e.getIn([\"resolvedSubtrees\",\"definitions\",t],null),a=e.getIn([\"json\",\"definitions\",t],null);return r||a||null},lr=(0,_e.createSelector)(spec,(e=>{const t=e.get(\"definitions\");return k.Map.isMap(t)?t:(0,k.Map)()})),cr=(0,_e.createSelector)(spec,(e=>e.get(\"basePath\"))),ir=(0,_e.createSelector)(spec,(e=>e.get(\"host\"))),pr=(0,_e.createSelector)(spec,(e=>e.get(\"schemes\",(0,k.Map)()))),mr=(0,_e.createSelector)([rr,ar,nr],((e,t,r)=>e.map((e=>e.update(\"operation\",(e=>k.Map.isMap(e)?e.withMutations((e=>(e.get(\"consumes\")||e.update(\"consumes\",(e=>(0,k.Set)(e).merge(t))),e.get(\"produces\")||e.update(\"produces\",(e=>(0,k.Set)(e).merge(r))),e))):(0,k.Map)())))))),ur=(0,_e.createSelector)(spec,(e=>{const t=e.get(\"tags\",(0,k.List)());return k.List.isList(t)?t.filter((e=>k.Map.isMap(e))):(0,k.List)()})),tagDetails=(e,t)=>(ur(e)||(0,k.List)()).filter(k.Map.isMap).find((e=>e.get(\"name\")===t),(0,k.Map)()),dr=(0,_e.createSelector)(mr,ur,((e,t)=>e.reduce(((e,t)=>{let r=(0,k.Set)(t.getIn([\"operation\",\"tags\"]));return r.count()<1?e.update(\"default\",(0,k.List)(),(e=>e.push(t))):r.reduce(((e,r)=>e.update(r,(0,k.List)(),(e=>e.push(t)))),e)}),t.reduce(((e,t)=>e.set(t.get(\"name\"),(0,k.List)())),(0,k.OrderedMap)())))),selectors_taggedOperations=e=>({getConfigs:t})=>{let{tagsSorter:r,operationsSorter:a}=t();return dr(e).sortBy(((e,t)=>t),((e,t)=>{let a=\"function\"==typeof r?r:pe.tagsSorter[r];return a?a(e,t):null})).map(((t,r)=>{let n=\"function\"==typeof a?a:pe.operationsSorter[a],s=n?t.sort(n):t;return(0,k.Map)({tagDetails:tagDetails(e,r),operations:s})}))},hr=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"responses\",(0,k.Map)()))),gr=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"requests\",(0,k.Map)()))),yr=(0,_e.createSelector)(spec_selectors_state,(e=>e.get(\"mutatedRequests\",(0,k.Map)()))),responseFor=(e,t,r)=>hr(e).getIn([t,r],null),requestFor=(e,t,r)=>gr(e).getIn([t,r],null),mutatedRequestFor=(e,t,r)=>yr(e).getIn([t,r],null),allowTryItOutFor=()=>!0,parameterWithMetaByIdentity=(e,t,r)=>{const a=Ht(e).getIn([\"paths\",...t,\"parameters\"],(0,k.OrderedMap)()),n=e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,k.OrderedMap)());return a.map((e=>{const t=n.get(`${r.get(\"in\")}.${r.get(\"name\")}`),a=n.get(`${r.get(\"in\")}.${r.get(\"name\")}.hash-${r.hashCode()}`);return(0,k.OrderedMap)().merge(e,t,a)})).find((e=>e.get(\"in\")===r.get(\"in\")&&e.get(\"name\")===r.get(\"name\")),(0,k.OrderedMap)())},parameterInclusionSettingFor=(e,t,r,a)=>{const n=`${a}.${r}`;return e.getIn([\"meta\",\"paths\",...t,\"parameter_inclusions\",n],!1)},parameterWithMeta=(e,t,r,a)=>{const n=Ht(e).getIn([\"paths\",...t,\"parameters\"],(0,k.OrderedMap)()).find((e=>e.get(\"in\")===a&&e.get(\"name\")===r),(0,k.OrderedMap)());return parameterWithMetaByIdentity(e,t,n)},operationWithMeta=(e,t,r)=>{const a=Ht(e).getIn([\"paths\",t,r],(0,k.OrderedMap)()),n=e.getIn([\"meta\",\"paths\",t,r],(0,k.OrderedMap)()),s=a.get(\"parameters\",(0,k.List)()).map((a=>parameterWithMetaByIdentity(e,[t,r],a)));return(0,k.OrderedMap)().merge(a,n).set(\"parameters\",s)};function getParameter(e,t,r,a){return t=t||[],e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,k.fromJS)([])).find((e=>k.Map.isMap(e)&&e.get(\"name\")===r&&e.get(\"in\")===a))||(0,k.Map)()}const fr=(0,_e.createSelector)(spec,(e=>{const t=e.get(\"host\");return\"string\"==typeof t&&t.length>0&&\"/\"!==t[0]}));function parameterValues(e,t,r){return t=t||[],operationWithMeta(e,...t).get(\"parameters\",(0,k.List)()).reduce(((e,t)=>{let a=r&&\"body\"===t.get(\"in\")?t.get(\"value_xml\"):t.get(\"value\");return k.List.isList(a)&&(a=a.filter((e=>\"\"!==e))),e.set(paramToIdentifier(t,{allowHashes:!1}),a)}),(0,k.fromJS)({}))}function parametersIncludeIn(e,t=\"\"){if(k.List.isList(e))return e.some((e=>k.Map.isMap(e)&&e.get(\"in\")===t))}function parametersIncludeType(e,t=\"\"){if(k.List.isList(e))return e.some((e=>k.Map.isMap(e)&&e.get(\"type\")===t))}function contentTypeValues(e,t){t=t||[];let r=Ht(e).getIn([\"paths\",...t],(0,k.fromJS)({})),a=e.getIn([\"meta\",\"paths\",...t],(0,k.fromJS)({})),n=currentProducesFor(e,t);const s=r.get(\"parameters\")||new k.List,o=a.get(\"consumes_value\")?a.get(\"consumes_value\"):parametersIncludeType(s,\"file\")?\"multipart/form-data\":parametersIncludeType(s,\"formData\")?\"application/x-www-form-urlencoded\":void 0;return(0,k.fromJS)({requestContentType:o,responseContentType:n})}function currentProducesFor(e,t){t=t||[];const r=Ht(e).getIn([\"paths\",...t],null);if(null===r)return;const a=e.getIn([\"meta\",\"paths\",...t,\"produces_value\"],null),n=r.getIn([\"produces\",0],null);return a||n||\"application/json\"}function producesOptionsFor(e,t){t=t||[];const r=Ht(e),a=r.getIn([\"paths\",...t],null);if(null===a)return;const[n]=t,s=a.get(\"produces\",null),o=r.getIn([\"paths\",n,\"produces\"],null),l=r.getIn([\"produces\"],null);return s||o||l}function consumesOptionsFor(e,t){t=t||[];const r=Ht(e),a=r.getIn([\"paths\",...t],null);if(null===a)return;const[n]=t,s=a.get(\"consumes\",null),o=r.getIn([\"paths\",n,\"consumes\"],null),l=r.getIn([\"consumes\"],null);return s||o||l}const operationScheme=(e,t,r)=>{let a=e.get(\"url\").match(/^([a-z][a-z0-9+\\-.]*):/),n=Array.isArray(a)?a[1]:null;return e.getIn([\"scheme\",t,r])||e.getIn([\"scheme\",\"_defaultScheme\"])||n||\"\"},canExecuteScheme=(e,t,r)=>[\"http\",\"https\"].indexOf(operationScheme(e,t,r))>-1,validationErrors=(e,t)=>{t=t||[];const r=e.getIn([\"meta\",\"paths\",...t,\"parameters\"],(0,k.fromJS)([])),a=[];if(0===r.length)return a;const getErrorsWithPaths=(e,t=[])=>{const getNestedErrorsWithPaths=(e,t)=>{const r=[...t,e.get(\"propKey\")||e.get(\"index\")];return k.Map.isMap(e.get(\"error\"))?getErrorsWithPaths(e.get(\"error\"),r):{error:e.get(\"error\"),path:r}};return k.List.isList(e)?e.map((e=>k.Map.isMap(e)?getNestedErrorsWithPaths(e,t):{error:e,path:t})):getNestedErrorsWithPaths(e,t)};return r.forEach(((e,t)=>{const r=t.split(\".\").slice(1,-1).join(\".\"),n=e.get(\"errors\");if(n&&n.count()){getErrorsWithPaths(n).forEach((({error:e,path:t})=>{a.push(((e,t,r)=>`For '${r}'${(t=t.reduce(((e,t)=>\"number\"==typeof t?`${e}[${t}]`:e?`${e}.${t}`:t),\"\"))?` at path '${t}'`:\"\"}: ${e}.`)(e,t,r))}))}})),a},validateBeforeExecute=(e,t)=>0===validationErrors(e,t).length,getOAS3RequiredRequestBodyContentType=(e,t)=>{let r={requestBody:!1,requestContentType:{}},a=e.getIn([\"resolvedSubtrees\",\"paths\",...t,\"requestBody\"],(0,k.fromJS)([]));return a.size<1||(a.getIn([\"required\"])&&(r.requestBody=a.getIn([\"required\"])),a.getIn([\"content\"]).entrySeq().forEach((e=>{const t=e[0];if(e[1].getIn([\"schema\",\"required\"])){const a=e[1].getIn([\"schema\",\"required\"]).toJS();r.requestContentType[t]=a}}))),r},isMediaTypeSchemaPropertiesEqual=(e,t,r,a)=>{if((r||a)&&r===a)return!0;let n=e.getIn([\"resolvedSubtrees\",\"paths\",...t,\"requestBody\",\"content\"],(0,k.fromJS)([]));if(n.size<2||!r||!a)return!1;let s=n.getIn([r,\"schema\",\"properties\"],(0,k.fromJS)([])),o=n.getIn([a,\"schema\",\"properties\"],(0,k.fromJS)([]));return!!s.equals(o)};function returnSelfOrNewMap(e){return k.Map.isMap(e)?e:new k.Map}const Sr=require(\"lodash/isString\");var Er=__webpack_require__.n(Sr);const _r=require(\"lodash/debounce\");var vr=__webpack_require__.n(_r);const wr=require(\"lodash/set\");var br=__webpack_require__.n(wr);const Cr=require(\"lodash/fp/assocPath\");var xr=__webpack_require__.n(Cr);const Or=\"spec_update_spec\",Nr=\"spec_update_url\",kr=\"spec_update_json\",Ar=\"spec_update_param\",Ir=\"spec_update_empty_param_inclusion\",jr=\"spec_validate_param\",qr=\"spec_set_response\",Pr=\"spec_set_request\",Mr=\"spec_set_mutated_request\",Tr=\"spec_log_request\",Rr=\"spec_clear_response\",Jr=\"spec_clear_request\",$r=\"spec_clear_validate_param\",Vr=\"spec_update_operation_meta_value\",Lr=\"spec_update_resolved\",Dr=\"spec_update_resolved_subtree\",Ur=\"set_scheme\",toStr=e=>Er()(e)?e:\"\";function updateSpec(e){const t=toStr(e).replace(/\\t/g,\"  \");if(\"string\"==typeof e)return{type:Or,payload:t}}function updateResolved(e){return{type:Lr,payload:e}}function updateUrl(e){return{type:Nr,payload:e}}function updateJsonSpec(e){return{type:kr,payload:e}}const parseToJson=e=>({specActions:t,specSelectors:r,errActions:a})=>{let{specStr:n}=r,s=null;try{e=e||n(),a.clear({source:\"parser\"}),s=qe().load(e,{schema:je.JSON_SCHEMA})}catch(e){return console.error(e),a.newSpecErr({source:\"parser\",level:\"error\",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return s&&\"object\"==typeof s?t.updateJsonSpec(s):t.updateJsonSpec({})};let Kr=!1;const resolveSpec=(e,t)=>({specActions:r,specSelectors:a,errActions:n,fn:{fetch:s,resolve:o,AST:l={}},getConfigs:c})=>{Kr||(console.warn(\"specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!\"),Kr=!0);const{modelPropertyMacro:i,parameterMacro:p,requestInterceptor:m,responseInterceptor:u}=c();void 0===e&&(e=a.specJson()),void 0===t&&(t=a.url());let d=l.getLineNumberForPath?l.getLineNumberForPath:()=>{},h=a.specStr();return o({fetch:s,spec:e,baseDoc:String(new URL(t,document.baseURI)),modelPropertyMacro:i,parameterMacro:p,requestInterceptor:m,responseInterceptor:u}).then((({spec:e,errors:t})=>{if(n.clear({type:\"thrown\"}),Array.isArray(t)&&t.length>0){let e=t.map((e=>(console.error(e),e.line=e.fullPath?d(h,e.fullPath):null,e.path=e.fullPath?e.fullPath.join(\".\"):null,e.level=\"error\",e.type=\"thrown\",e.source=\"resolver\",Object.defineProperty(e,\"message\",{enumerable:!0,value:e.message}),e)));n.newThrownErrBatch(e)}return r.updateResolved(e)}))};let zr=[];const Br=vr()((()=>{const e=zr.reduce(((e,{path:t,system:r})=>(e.has(r)||e.set(r,[]),e.get(r).push(t),e)),new Map);zr=[],e.forEach((async(e,t)=>{if(!t)return void console.error(\"debResolveSubtrees: don't have a system to operate on, aborting.\");if(!t.fn.resolveSubtree)return void console.error(\"Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing.\");const{errActions:r,errSelectors:a,fn:{resolveSubtree:n,fetch:s,AST:o={}},specSelectors:l,specActions:c}=t,i=o.getLineNumberForPath??Vt()(void 0),p=l.specStr(),{modelPropertyMacro:m,parameterMacro:u,requestInterceptor:d,responseInterceptor:h}=t.getConfigs();try{const t=await e.reduce((async(e,t)=>{let{resultMap:o,specWithCurrentSubtrees:c}=await e;const{errors:g,spec:y}=await n(c,t,{baseDoc:String(new URL(l.url(),document.baseURI)),modelPropertyMacro:m,parameterMacro:u,requestInterceptor:d,responseInterceptor:h});if(a.allErrors().size&&r.clearBy((e=>\"thrown\"!==e.get(\"type\")||\"resolver\"!==e.get(\"source\")||!e.get(\"fullPath\")?.every(((e,r)=>e===t[r]||void 0===t[r])))),Array.isArray(g)&&g.length>0){let e=g.map((e=>(e.line=e.fullPath?i(p,e.fullPath):null,e.path=e.fullPath?e.fullPath.join(\".\"):null,e.level=\"error\",e.type=\"thrown\",e.source=\"resolver\",Object.defineProperty(e,\"message\",{enumerable:!0,value:e.message}),e)));r.newThrownErrBatch(e)}return y&&l.isOAS3()&&\"components\"===t[0]&&\"securitySchemes\"===t[1]&&await Promise.all(Object.values(y).filter((e=>\"openIdConnect\"===e?.type)).map((async e=>{const t={url:e.openIdConnectUrl,requestInterceptor:d,responseInterceptor:h};try{const r=await s(t);r instanceof Error||r.status>=400?console.error(r.statusText+\" \"+t.url):e.openIdConnectData=JSON.parse(r.text)}catch(e){console.error(e)}}))),br()(o,t,y),c=xr()(t,y,c),{resultMap:o,specWithCurrentSubtrees:c}}),Promise.resolve({resultMap:(l.specResolvedSubtree([])||(0,k.Map)()).toJS(),specWithCurrentSubtrees:l.specJS()}));c.updateResolvedSubtree([],t.resultMap)}catch(e){console.error(e)}}))}),35),requestResolvedSubtree=e=>t=>{zr.find((({path:r,system:a})=>a===t&&r.toString()===e.toString()))||(zr.push({path:e,system:t}),Br())};function changeParam(e,t,r,a,n){return{type:Ar,payload:{path:e,value:a,paramName:t,paramIn:r,isXml:n}}}function changeParamByIdentity(e,t,r,a){return{type:Ar,payload:{path:e,param:t,value:r,isXml:a}}}const updateResolvedSubtree=(e,t)=>({type:Dr,payload:{path:e,value:t}}),invalidateResolvedSubtreeCache=()=>({type:Dr,payload:{path:[],value:(0,k.Map)()}}),validateParams=(e,t)=>({type:jr,payload:{pathMethod:e,isOAS3:t}}),updateEmptyParamInclusion=(e,t,r,a)=>({type:Ir,payload:{pathMethod:e,paramName:t,paramIn:r,includeEmptyValue:a}});function clearValidateParams(e){return{type:$r,payload:{pathMethod:e}}}function changeConsumesValue(e,t){return{type:Vr,payload:{path:e,value:t,key:\"consumes_value\"}}}function changeProducesValue(e,t){return{type:Vr,payload:{path:e,value:t,key:\"produces_value\"}}}const setResponse=(e,t,r)=>({payload:{path:e,method:t,res:r},type:qr}),setRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:Pr}),setMutatedRequest=(e,t,r)=>({payload:{path:e,method:t,req:r},type:Mr}),logRequest=e=>({payload:e,type:Tr}),executeRequest=e=>({fn:t,specActions:r,specSelectors:a,getConfigs:n,oas3Selectors:s})=>{let{pathName:o,method:l,operation:c}=e,{requestInterceptor:i,responseInterceptor:p}=n(),m=c.toJS();if(c&&c.get(\"parameters\")&&c.get(\"parameters\").filter((e=>e&&!0===e.get(\"allowEmptyValue\"))).forEach((t=>{if(a.parameterInclusionSettingFor([o,l],t.get(\"name\"),t.get(\"in\"))){e.parameters=e.parameters||{};const r=paramToValue(t,e.parameters);(!r||r&&0===r.size)&&(e.parameters[t.get(\"name\")]=\"\")}})),e.contextUrl=ue()(a.url()).toString(),m&&m.operationId?e.operationId=m.operationId:m&&o&&l&&(e.operationId=t.opId(m,o,l)),a.isOAS3()){const t=`${o}:${l}`;e.server=s.selectedServer(t)||s.selectedServer();const r=s.serverVariables({server:e.server,namespace:t}).toJS(),a=s.serverVariables({server:e.server}).toJS();e.serverVariables=Object.keys(r).length?r:a,e.requestContentType=s.requestContentType(o,l),e.responseContentType=s.responseContentType(o,l)||\"*/*\";const n=s.requestBodyValue(o,l),c=s.requestBodyInclusionSetting(o,l);n&&n.toJS?e.requestBody=n.map((e=>k.Map.isMap(e)?e.get(\"value\"):e)).filter(((e,t)=>(Array.isArray(e)?0!==e.length:!isEmptyValue(e))||c.get(t))).toJS():e.requestBody=n}let u=Object.assign({},e);u=t.buildRequest(u),r.setRequest(e.pathName,e.method,u);e.requestInterceptor=async t=>{let a=await i.apply(void 0,[t]),n=Object.assign({},a);return r.setMutatedRequest(e.pathName,e.method,n),a},e.responseInterceptor=p;const d=Date.now();return t.execute(e).then((t=>{t.duration=Date.now()-d,r.setResponse(e.pathName,e.method,t)})).catch((t=>{\"Failed to fetch\"===t.message&&(t.name=\"\",t.message='**Failed to fetch.**  \\n**Possible Reasons:** \\n  - CORS \\n  - Network Failure \\n  - URL scheme must be \"http\" or \"https\" for CORS request.'),r.setResponse(e.pathName,e.method,{error:!0,err:t})}))},actions_execute=({path:e,method:t,...r}={})=>a=>{let{fn:{fetch:n},specSelectors:s,specActions:o}=a,l=s.specJsonWithResolvedSubtrees().toJS(),c=s.operationScheme(e,t),{requestContentType:i,responseContentType:p}=s.contentTypeValues([e,t]).toJS(),m=/xml/i.test(i),u=s.parameterValues([e,t],m).toJS();return o.executeRequest({...r,fetch:n,spec:l,pathName:e,method:t,parameters:u,requestContentType:i,scheme:c,responseContentType:p})};function clearResponse(e,t){return{type:Rr,payload:{path:e,method:t}}}function clearRequest(e,t){return{type:Jr,payload:{path:e,method:t}}}function setScheme(e,t,r){return{type:Ur,payload:{scheme:e,path:t,method:r}}}const Fr={[Or]:(e,t)=>\"string\"==typeof t.payload?e.set(\"spec\",t.payload):e,[Nr]:(e,t)=>e.set(\"url\",t.payload+\"\"),[kr]:(e,t)=>e.set(\"json\",fromJSOrdered(t.payload)),[Lr]:(e,t)=>e.setIn([\"resolved\"],fromJSOrdered(t.payload)),[Dr]:(e,t)=>{const{value:r,path:a}=t.payload;return e.setIn([\"resolvedSubtrees\",...a],fromJSOrdered(r))},[Ar]:(e,{payload:t})=>{let{path:r,paramName:a,paramIn:n,param:s,value:o,isXml:l}=t,c=s?paramToIdentifier(s):`${n}.${a}`;const i=l?\"value_xml\":\"value\";return e.setIn([\"meta\",\"paths\",...r,\"parameters\",c,i],(0,k.fromJS)(o))},[Ir]:(e,{payload:t})=>{let{pathMethod:r,paramName:a,paramIn:n,includeEmptyValue:s}=t;if(!a||!n)return console.warn(\"Warning: UPDATE_EMPTY_PARAM_INCLUSION could not generate a paramKey.\"),e;const o=`${n}.${a}`;return e.setIn([\"meta\",\"paths\",...r,\"parameter_inclusions\",o],s)},[jr]:(e,{payload:{pathMethod:t,isOAS3:r}})=>{const a=Ht(e).getIn([\"paths\",...t]),n=parameterValues(e,t).toJS();return e.updateIn([\"meta\",\"paths\",...t,\"parameters\"],(0,k.fromJS)({}),(s=>a.get(\"parameters\",(0,k.List)()).reduce(((a,s)=>{const o=paramToValue(s,n),l=parameterInclusionSettingFor(e,t,s.get(\"name\"),s.get(\"in\")),c=((e,t,{isOAS3:r=!1,bypassRequiredCheck:a=!1}={})=>{let n=e.get(\"required\"),{schema:s,parameterContentMediaType:o}=getParameterSchema(e,{isOAS3:r});return validateValueBySchema(t,s,n,a,o)})(s,o,{bypassRequiredCheck:l,isOAS3:r});return a.setIn([paramToIdentifier(s),\"errors\"],(0,k.fromJS)(c))}),s)))},[$r]:(e,{payload:{pathMethod:t}})=>e.updateIn([\"meta\",\"paths\",...t,\"parameters\"],(0,k.fromJS)([]),(e=>e.map((e=>e.set(\"errors\",(0,k.fromJS)([])))))),[qr]:(e,{payload:{res:t,path:r,method:a}})=>{let n;n=t.error?Object.assign({error:!0,name:t.err.name,message:t.err.message,statusCode:t.err.statusCode},t.err.response):t,n.headers=n.headers||{};let s=e.setIn([\"responses\",r,a],fromJSOrdered(n));return K.Blob&&n.data instanceof K.Blob&&(s=s.setIn([\"responses\",r,a,\"text\"],n.data)),s},[Pr]:(e,{payload:{req:t,path:r,method:a}})=>e.setIn([\"requests\",r,a],fromJSOrdered(t)),[Mr]:(e,{payload:{req:t,path:r,method:a}})=>e.setIn([\"mutatedRequests\",r,a],fromJSOrdered(t)),[Vr]:(e,{payload:{path:t,value:r,key:a}})=>{let n=[\"paths\",...t],s=[\"meta\",\"paths\",...t];return e.getIn([\"json\",...n])||e.getIn([\"resolved\",...n])||e.getIn([\"resolvedSubtrees\",...n])?e.setIn([...s,a],(0,k.fromJS)(r)):e},[Rr]:(e,{payload:{path:t,method:r}})=>e.deleteIn([\"responses\",t,r]),[Jr]:(e,{payload:{path:t,method:r}})=>e.deleteIn([\"requests\",t,r]),[Ur]:(e,{payload:{scheme:t,path:r,method:a}})=>r&&a?e.setIn([\"scheme\",r,a],t):r||a?void 0:e.setIn([\"scheme\",\"_defaultScheme\"],t)},wrap_actions_updateSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.parseToJson(...r)},wrap_actions_updateJsonSpec=(e,{specActions:t})=>(...r)=>{e(...r),t.invalidateResolvedSubtreeCache();const[a]=r,n=Fe()(a,[\"paths\"])||{};Object.keys(n).forEach((e=>{const r=Fe()(n,[e]);wt()(r)&&r.$ref&&t.requestResolvedSubtree([\"paths\",e])})),t.requestResolvedSubtree([\"components\",\"securitySchemes\"])},wrap_actions_executeRequest=(e,{specActions:t})=>r=>(t.logRequest(r),e(r)),wrap_actions_validateParams=(e,{specSelectors:t})=>r=>e(r,t.isOAS3()),plugins_spec=()=>({statePlugins:{spec:{wrapActions:{...S},reducers:{...Fr},actions:{...f},selectors:{...y}}}}),Wr=require(\"swagger-client/es/resolver/strategies/generic\");var Hr=__webpack_require__.n(Wr);const Xr=require(\"swagger-client/es/resolver/strategies/openapi-2\");var Gr=__webpack_require__.n(Xr);const Yr=require(\"swagger-client/es/resolver/strategies/openapi-3-0\");var Qr=__webpack_require__.n(Yr);const Zr=require(\"swagger-client/es/resolver/strategies/openapi-3-1-apidom\");var ea=__webpack_require__.n(Zr);const ta=require(\"swagger-client/es/resolver\"),ra=require(\"swagger-client/es/execute\"),aa=require(\"swagger-client/es/http\");var na=__webpack_require__.n(aa);const sa=require(\"swagger-client/es/subtree-resolver\"),oa=require(\"swagger-client/es/helpers\"),configs_wrap_actions_loaded=(e,t)=>(...r)=>{e(...r);const a=t.getConfigs().withCredentials;t.fn.fetch.withCredentials=a};function swagger_client({configs:e,getConfigs:t}){return{fn:{fetch:(0,aa.makeHttp)(na(),e.preFetch,e.postFetch),buildRequest:ra.buildRequest,execute:ra.execute,resolve:(0,ta.makeResolve)({strategies:[ea(),Qr(),Gr(),Hr()]}),resolveSubtree:async(e,r,a={})=>{const n=t(),s={modelPropertyMacro:n.modelPropertyMacro,parameterMacro:n.parameterMacro,requestInterceptor:n.requestInterceptor,responseInterceptor:n.responseInterceptor,strategies:[ea(),Qr(),Gr(),Hr()]};return(0,sa.makeResolveSubtree)(s)(e,r,a)},serializeRes:aa.serializeRes,opId:oa.opId},statePlugins:{configs:{wrapActions:{loaded:configs_wrap_actions_loaded}}}}}function util(){return{fn:{shallowEqualKeys,sanitizeUrl}}}const la=require(\"react-dom\");var ca=__webpack_require__.n(la);const ia=require(\"react-redux\"),pa=require(\"lodash/identity\");var ma=__webpack_require__.n(pa);const withSystem=e=>t=>{const{fn:r}=e();class WithSystem extends x.Component{render(){return O().createElement(t,Qe()({},e(),this.props,this.context))}}return WithSystem.displayName=`WithSystem(${r.getDisplayName(t)})`,WithSystem},withRoot=(e,t)=>r=>{const{fn:a}=e();class WithRoot extends x.Component{render(){return O().createElement(ia.Provider,{store:t},O().createElement(r,Qe()({},this.props,this.context)))}}return WithRoot.displayName=`WithRoot(${a.getDisplayName(r)})`,WithRoot},withConnect=(e,t,r)=>(0,N.compose)(r?withRoot(e,r):ma(),(0,ia.connect)(((r,a)=>{const n={...a,...e()},s=t.prototype?.mapStateToProps||(e=>({state:e}));return s(r,n)})),withSystem(e))(t),handleProps=(e,t,r,a)=>{for(const n in t){const s=t[n];\"function\"==typeof s&&s(r[n],a[n],e())}},withMappedContainer=(e,t,r)=>(t,a)=>{const{fn:n}=e(),s=r(t,\"root\");class WithMappedContainer extends x.Component{constructor(t,r){super(t,r),handleProps(e,a,t,{})}UNSAFE_componentWillReceiveProps(t){handleProps(e,a,t,this.props)}render(){const e=ke()(this.props,a?Object.keys(a):[]);return O().createElement(s,e)}}return WithMappedContainer.displayName=`WithMappedContainer(${n.getDisplayName(s)})`,WithMappedContainer},render=(e,t,r,a)=>n=>{const s=r(e,t,a)(\"App\",\"root\"),{createRoot:o}=ca();o(n).render(O().createElement(s,null))},getComponent=(e,t,r)=>(a,n,s={})=>{if(\"string\"!=typeof a)throw new TypeError(\"Need a string, to fetch a component. Was given a \"+typeof a);const o=r(a);return o?n?\"root\"===n?withConnect(e,o,t()):withConnect(e,o):o:(s.failSilently||e().log.warn(\"Could not find component:\",a),null)},getDisplayName=e=>e.displayName||e.name||\"Component\",view=({getComponents:e,getStore:t,getSystem:r})=>{const a=(n=getComponent(r,t,e),ie(n,((...e)=>JSON.stringify(e))));var n;const s=(e=>utils_memoizeN(e,((...e)=>e)))(withMappedContainer(r,0,a));return{rootInjects:{getComponent:a,makeMappedContainer:s,render:render(r,t,getComponent,e)},fn:{getDisplayName}}},view_legacy=({React:e,getSystem:t,getStore:r,getComponents:a})=>{const n={},s=parseInt(e?.version,10);return s>=16&&s<18&&(n.render=((e,t,r,a)=>n=>{const s=r(e,t,a)(\"App\",\"root\");ca().render(O().createElement(s,null),n)})(t,r,getComponent,a)),{rootInjects:n}};function downloadUrlPlugin(e){let{fn:t}=e;const r={download:e=>({errActions:r,specSelectors:a,specActions:n,getConfigs:s})=>{let{fetch:o}=t;const l=s();function next(t){if(t instanceof Error||t.status>=400)return n.updateLoadingStatus(\"failed\"),r.newThrownErr(Object.assign(new Error((t.message||t.statusText)+\" \"+e),{source:\"fetch\"})),void(!t.status&&t instanceof Error&&function checkPossibleFailReasons(){try{let t;if(\"URL\"in K?t=new URL(e):(t=document.createElement(\"a\"),t.href=e),\"https:\"!==t.protocol&&\"https:\"===K.location.protocol){const e=Object.assign(new Error(`Possible mixed-content issue? The page was loaded over https:// but a ${t.protocol}// URL was specified. Check that you are not attempting to load mixed content.`),{source:\"fetch\"});return void r.newThrownErr(e)}if(t.origin!==K.location.origin){const e=Object.assign(new Error(`Possible cross-origin (CORS) issue? The URL origin (${t.origin}) does not match the page (${K.location.origin}). Check the server returns the correct 'Access-Control-Allow-*' headers.`),{source:\"fetch\"});r.newThrownErr(e)}}catch(e){return}}());n.updateLoadingStatus(\"success\"),n.updateSpec(t.text),a.url()!==e&&n.updateUrl(e)}e=e||a.url(),n.updateLoadingStatus(\"loading\"),r.clear({source:\"fetch\"}),o({url:e,loadSpec:!0,requestInterceptor:l.requestInterceptor||(e=>e),responseInterceptor:l.responseInterceptor||(e=>e),credentials:\"same-origin\",headers:{Accept:\"application/json,*/*\"}}).then(next,next)},updateLoadingStatus:e=>{let t=[null,\"loading\",\"failed\",\"success\",\"failedConfig\"];return-1===t.indexOf(e)&&console.error(`Error: ${e} is not one of ${JSON.stringify(t)}`),{type:\"spec_update_loading_status\",payload:e}}};let a={loadingStatus:(0,_e.createSelector)((e=>e||(0,k.Map)()),(e=>e.get(\"loadingStatus\")||null))};return{statePlugins:{spec:{actions:r,reducers:{spec_update_loading_status:(e,t)=>\"string\"==typeof t.payload?e.set(\"loadingStatus\",t.payload):e},selectors:a}}}}const ua=require(\"react-syntax-highlighter/dist/esm/light\");var da=__webpack_require__.n(ua);const ha=require(\"react-syntax-highlighter/dist/esm/languages/hljs/javascript\");var ga=__webpack_require__.n(ha);const ya=require(\"react-syntax-highlighter/dist/esm/languages/hljs/json\");var fa=__webpack_require__.n(ya);const Sa=require(\"react-syntax-highlighter/dist/esm/languages/hljs/xml\");var Ea=__webpack_require__.n(Sa);const _a=require(\"react-syntax-highlighter/dist/esm/languages/hljs/bash\");var va=__webpack_require__.n(_a);const wa=require(\"react-syntax-highlighter/dist/esm/languages/hljs/yaml\");var ba=__webpack_require__.n(wa);const Ca=require(\"react-syntax-highlighter/dist/esm/languages/hljs/http\");var xa=__webpack_require__.n(Ca);const Oa=require(\"react-syntax-highlighter/dist/esm/languages/hljs/powershell\");var Na=__webpack_require__.n(Oa);const after_load=()=>{da().registerLanguage(\"json\",fa()),da().registerLanguage(\"js\",ga()),da().registerLanguage(\"xml\",Ea()),da().registerLanguage(\"yaml\",ba()),da().registerLanguage(\"http\",xa()),da().registerLanguage(\"bash\",va()),da().registerLanguage(\"powershell\",Na()),da().registerLanguage(\"javascript\",ga())},ka=require(\"react-syntax-highlighter/dist/esm/styles/hljs/agate\");var Aa=__webpack_require__.n(ka);const Ia=require(\"react-syntax-highlighter/dist/esm/styles/hljs/arta\");var ja=__webpack_require__.n(Ia);const qa=require(\"react-syntax-highlighter/dist/esm/styles/hljs/monokai\");var Pa=__webpack_require__.n(qa);const Ma=require(\"react-syntax-highlighter/dist/esm/styles/hljs/nord\");var Ta=__webpack_require__.n(Ma);const Ra=require(\"react-syntax-highlighter/dist/esm/styles/hljs/obsidian\");var Ja=__webpack_require__.n(Ra);const $a=require(\"react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night\");var Va=__webpack_require__.n($a);const La=require(\"react-syntax-highlighter/dist/esm/styles/hljs/idea\");var Da=__webpack_require__.n(La);const Ua={agate:Aa(),arta:ja(),monokai:Pa(),nord:Ta(),obsidian:Ja(),\"tomorrow-night\":Va(),idea:Da()},Ka=Aa(),components_SyntaxHighlighter=({language:e,className:t=\"\",getConfigs:r,syntaxHighlighting:a={},children:n=\"\"})=>{const s=r().syntaxHighlight.theme,{styles:o,defaultStyle:l}=a,c=o?.[s]??l;return O().createElement(da(),{language:e,className:t,style:c},n)},za=require(\"js-file-download\");var Ba=__webpack_require__.n(za);const components_HighlightCode=({fileName:e=\"response.txt\",className:t,downloadable:r,getComponent:a,canCopy:n,language:s,children:o})=>{const l=(0,x.useRef)(null),c=a(\"SyntaxHighlighter\",!0),handlePreventYScrollingBeyondElement=e=>{const{target:t,deltaY:r}=e,{scrollHeight:a,offsetHeight:n,scrollTop:s}=t;a>n&&(0===s&&r<0||n+s>=a&&r>0)&&e.preventDefault()};return(0,x.useEffect)((()=>{const e=Array.from(l.current.childNodes).filter((e=>!!e.nodeType&&e.classList.contains(\"microlight\")));return e.forEach((e=>e.addEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement,{passive:!1}))),()=>{e.forEach((e=>e.removeEventListener(\"mousewheel\",handlePreventYScrollingBeyondElement)))}}),[o,t,s]),O().createElement(\"div\",{className:\"highlight-code\",ref:l},n&&O().createElement(\"div\",{className:\"copy-to-clipboard\"},O().createElement(mt.CopyToClipboard,{text:o},O().createElement(\"button\",null))),r?O().createElement(\"button\",{className:\"download-contents\",onClick:()=>{Ba()(o,e)}},\"Download\"):null,O().createElement(c,{language:s,className:pt()(t,\"microlight\"),renderPlainText:({children:e,PlainTextViewer:r})=>O().createElement(r,{className:t},e)},o))},components_PlainTextViewer=({className:e=\"\",children:t})=>O().createElement(\"pre\",{className:pt()(\"microlight\",e)},t),wrap_components_SyntaxHighlighter=(e,t)=>({renderPlainText:r,children:a,...n})=>{const s=t.getConfigs().syntaxHighlight.activated,o=t.getComponent(\"PlainTextViewer\");return s||\"function\"!=typeof r?s?O().createElement(e,n,a):O().createElement(o,null,a):r({children:a,PlainTextViewer:o})},SyntaxHighlightingPlugin1=()=>({afterLoad:after_load,rootInjects:{syntaxHighlighting:{styles:Ua,defaultStyle:Ka}},components:{SyntaxHighlighter:components_SyntaxHighlighter,HighlightCode:components_HighlightCode,PlainTextViewer:components_PlainTextViewer}}),SyntaxHighlightingPlugin2=()=>({wrapComponents:{SyntaxHighlighter:wrap_components_SyntaxHighlighter}}),syntax_highlighting=()=>[SyntaxHighlightingPlugin1,SyntaxHighlightingPlugin2],versions_after_load=()=>{const{GIT_DIRTY:e,GIT_COMMIT:t,PACKAGE_VERSION:r,BUILD_TIME:a}={PACKAGE_VERSION:\"5.22.0\",GIT_COMMIT:\"g0a438f23\",GIT_DIRTY:!0,BUILD_TIME:\"Wed, 21 May 2025 12:43:49 GMT\"};K.versions=K.versions||{},K.versions.swaggerUI={version:r,gitRevision:t,gitDirty:e,buildTimestamp:a}},versions=()=>({afterLoad:versions_after_load}),Fa=require(\"lodash/zipObject\");var Wa=__webpack_require__.n(Fa);const Ha=console.error,withErrorBoundary=e=>t=>{const{getComponent:r,fn:a}=e(),n=r(\"ErrorBoundary\"),s=a.getDisplayName(t);class WithErrorBoundary extends x.Component{render(){return O().createElement(n,{targetName:s,getComponent:r,fn:a},O().createElement(t,Qe()({},this.props,this.context)))}}var o;return WithErrorBoundary.displayName=`WithErrorBoundary(${s})`,(o=t).prototype&&o.prototype.isReactComponent&&(WithErrorBoundary.prototype.mapStateToProps=t.prototype.mapStateToProps),WithErrorBoundary},fallback=({name:e})=>O().createElement(\"div\",{className:\"fallback\"},\"😱 \",O().createElement(\"i\",null,\"Could not render \",\"t\"===e?\"this component\":e,\", see the console.\"));class ErrorBoundary extends x.Component{static defaultProps={targetName:\"this component\",getComponent:()=>fallback,fn:{componentDidCatch:Ha},children:null};static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(...e){super(...e),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.fn.componentDidCatch(e,t)}render(){const{getComponent:e,targetName:t,children:r}=this.props;if(this.state.hasError){const r=e(\"Fallback\");return O().createElement(r,{name:t})}return r}}const Xa=ErrorBoundary,safe_render=({componentList:e=[],fullOverride:t=!1}={})=>({getSystem:r})=>{const a=t?e:[\"App\",\"BaseLayout\",\"VersionPragmaFilter\",\"InfoContainer\",\"ServersContainer\",\"SchemesContainer\",\"AuthorizeBtnContainer\",\"FilterContainer\",\"Operations\",\"OperationContainer\",\"parameters\",\"responses\",\"OperationServers\",\"Models\",\"ModelWrapper\",...e],n=Wa()(a,Array(a.length).fill(((e,{fn:t})=>t.withErrorBoundary(e))));return{fn:{componentDidCatch:Ha,withErrorBoundary:withErrorBoundary(r)},components:{ErrorBoundary:Xa,Fallback:fallback},wrapComponents:n}};class App extends O().Component{getLayout(){const{getComponent:e,layoutSelectors:t}=this.props,r=t.current(),a=e(r,!0);return a||(()=>O().createElement(\"h1\",null,' No layout defined for \"',r,'\" '))}render(){const e=this.getLayout();return O().createElement(e,null)}}const Ga=App;class AuthorizationPopup extends O().Component{close=()=>{let{authActions:e}=this.props;e.showDefinitions(!1)};render(){let{authSelectors:e,authActions:t,getComponent:r,errSelectors:a,specSelectors:n,fn:{AST:s={}}}=this.props,o=e.shownDefinitions();const l=r(\"auths\"),c=r(\"CloseIcon\");return O().createElement(\"div\",{className:\"dialog-ux\"},O().createElement(\"div\",{className:\"backdrop-ux\"}),O().createElement(\"div\",{className:\"modal-ux\"},O().createElement(\"div\",{className:\"modal-dialog-ux\"},O().createElement(\"div\",{className:\"modal-ux-inner\"},O().createElement(\"div\",{className:\"modal-ux-header\"},O().createElement(\"h3\",null,\"Available authorizations\"),O().createElement(\"button\",{type:\"button\",className:\"close-modal\",onClick:this.close},O().createElement(c,null))),O().createElement(\"div\",{className:\"modal-ux-content\"},o.valueSeq().map(((o,c)=>O().createElement(l,{key:c,AST:s,definitions:o,getComponent:r,errSelectors:a,authSelectors:e,authActions:t,specSelectors:n}))))))))}}class AuthorizeBtn extends O().Component{render(){let{isAuthorized:e,showPopup:t,onClick:r,getComponent:a}=this.props;const n=a(\"authorizationPopup\",!0),s=a(\"LockAuthIcon\",!0),o=a(\"UnlockAuthIcon\",!0);return O().createElement(\"div\",{className:\"auth-wrapper\"},O().createElement(\"button\",{className:e?\"btn authorize locked\":\"btn authorize unlocked\",onClick:r},O().createElement(\"span\",null,\"Authorize\"),e?O().createElement(s,null):O().createElement(o,null)),t&&O().createElement(n,null))}}class AuthorizeBtnContainer extends O().Component{render(){const{authActions:e,authSelectors:t,specSelectors:r,getComponent:a}=this.props,n=r.securityDefinitions(),s=t.definitionsToAuthorize(),o=a(\"authorizeBtn\");return n?O().createElement(o,{onClick:()=>e.showDefinitions(s),isAuthorized:!!t.authorized().size,showPopup:!!t.shownDefinitions(),getComponent:a}):null}}class AuthorizeOperationBtn extends O().Component{onClick=e=>{e.stopPropagation();let{onClick:t}=this.props;t&&t()};render(){let{isAuthorized:e,getComponent:t}=this.props;const r=t(\"LockAuthOperationIcon\",!0),a=t(\"UnlockAuthOperationIcon\",!0);return O().createElement(\"button\",{className:\"authorization__btn\",\"aria-label\":e?\"authorization button locked\":\"authorization button unlocked\",onClick:this.onClick},e?O().createElement(r,{className:\"locked\"}):O().createElement(a,{className:\"unlocked\"}))}}class Auths extends O().Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,a=r.map(((e,t)=>t)).toArray();this.setState(a.reduce(((e,t)=>(e[t]=\"\",e)),{})),t.logoutWithPersistOption(a)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:a}=this.props;const n=t(\"AuthItem\"),s=t(\"oauth2\",!0),o=t(\"Button\");let l=r.authorized(),c=e.filter(((e,t)=>!!l.get(t))),i=e.filter((e=>\"oauth2\"!==e.get(\"type\"))),p=e.filter((e=>\"oauth2\"===e.get(\"type\")));return O().createElement(\"div\",{className:\"auth-container\"},!!i.size&&O().createElement(\"form\",{onSubmit:this.submitAuth},i.map(((e,s)=>O().createElement(n,{key:s,schema:e,name:s,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a,authSelectors:r}))).toArray(),O().createElement(\"div\",{className:\"auth-btn-wrapper\"},i.size===c.size?O().createElement(o,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):O().createElement(o,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),O().createElement(o,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),p&&p.size?O().createElement(\"div\",null,O().createElement(\"div\",{className:\"scope-def\"},O().createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),O().createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),e.filter((e=>\"oauth2\"===e.get(\"type\"))).map(((e,t)=>O().createElement(\"div\",{key:t},O().createElement(s,{authorized:l,schema:e,name:t})))).toArray()):null)}}class auth_item_Auths extends O().Component{render(){let{schema:e,name:t,getComponent:r,onAuthChange:a,authorized:n,errSelectors:s,authSelectors:o}=this.props;const l=r(\"apiKeyAuth\"),c=r(\"basicAuth\");let i;const p=e.get(\"type\");switch(p){case\"apiKey\":i=O().createElement(l,{key:t,schema:e,name:t,errSelectors:s,authorized:n,getComponent:r,onChange:a,authSelectors:o});break;case\"basic\":i=O().createElement(c,{key:t,schema:e,name:t,errSelectors:s,authorized:n,getComponent:r,onChange:a,authSelectors:o});break;default:i=O().createElement(\"div\",{key:t},\"Unknown security definition type \",p)}return O().createElement(\"div\",{key:`${t}-jump`},i)}}class AuthError extends O().Component{render(){let{error:e}=this.props,t=e.get(\"level\"),r=e.get(\"message\"),a=e.get(\"source\");return O().createElement(\"div\",{className:\"errors\"},O().createElement(\"b\",null,a,\" \",t),O().createElement(\"span\",null,r))}}class ApiKeyAuth extends O().Component{constructor(e,t){super(e,t);let{name:r,schema:a}=this.props,n=this.getValue();this.state={name:r,schema:a,value:n}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,\"value\"])}onChange=e=>{let{onChange:t}=this.props,r=e.target.value,a=Object.assign({},this.state,{value:r});this.setState(a),t(a)};render(){let{schema:e,getComponent:t,errSelectors:r,name:a,authSelectors:n}=this.props;const s=t(\"Input\"),o=t(\"Row\"),l=t(\"Col\"),c=t(\"authError\"),i=t(\"Markdown\",!0),p=t(\"JumpToPath\",!0),m=n.selectAuthPath(a);let u=this.getValue(),d=r.allErrors().filter((e=>e.get(\"authId\")===a));return O().createElement(\"div\",null,O().createElement(\"h4\",null,O().createElement(\"code\",null,a||e.get(\"name\")),\" (apiKey)\",O().createElement(p,{path:m})),u&&O().createElement(\"h6\",null,\"Authorized\"),O().createElement(o,null,O().createElement(i,{source:e.get(\"description\")})),O().createElement(o,null,O().createElement(\"p\",null,\"Name: \",O().createElement(\"code\",null,e.get(\"name\")))),O().createElement(o,null,O().createElement(\"p\",null,\"In: \",O().createElement(\"code\",null,e.get(\"in\")))),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"api_key_value\"},\"Value:\"),u?O().createElement(\"code\",null,\" ****** \"):O().createElement(l,null,O().createElement(s,{id:\"api_key_value\",type:\"text\",onChange:this.onChange,autoFocus:!0}))),d.valueSeq().map(((e,t)=>O().createElement(c,{error:e,key:t}))))}}class BasicAuth extends O().Component{constructor(e,t){super(e,t);let{schema:r,name:a}=this.props,n=this.getValue().username;this.state={name:a,schema:r,value:n?{username:n}:{}}}getValue(){let{authorized:e,name:t}=this.props;return e&&e.getIn([t,\"value\"])||{}}onChange=e=>{let{onChange:t}=this.props,{value:r,name:a}=e.target,n=this.state.value;n[a]=r,this.setState({value:n}),t(this.state)};render(){let{schema:e,getComponent:t,name:r,errSelectors:a,authSelectors:n}=this.props;const s=t(\"Input\"),o=t(\"Row\"),l=t(\"Col\"),c=t(\"authError\"),i=t(\"JumpToPath\",!0),p=t(\"Markdown\",!0),m=n.selectAuthPath(r);let u=this.getValue().username,d=a.allErrors().filter((e=>e.get(\"authId\")===r));return O().createElement(\"div\",null,O().createElement(\"h4\",null,\"Basic authorization\",O().createElement(i,{path:m})),u&&O().createElement(\"h6\",null,\"Authorized\"),O().createElement(o,null,O().createElement(p,{source:e.get(\"description\")})),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"auth_username\"},\"Username:\"),u?O().createElement(\"code\",null,\" \",u,\" \"):O().createElement(l,null,O().createElement(s,{id:\"auth_username\",type:\"text\",required:\"required\",name:\"username\",onChange:this.onChange,autoFocus:!0}))),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"auth_password\"},\"Password:\"),u?O().createElement(\"code\",null,\" ****** \"):O().createElement(l,null,O().createElement(s,{id:\"auth_password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",onChange:this.onChange}))),d.valueSeq().map(((e,t)=>O().createElement(c,{error:e,key:t}))))}}function Example(e){const{example:t,showValue:r,getComponent:a}=e,n=a(\"Markdown\",!0),s=a(\"HighlightCode\",!0);return t&&k.Map.isMap(t)?O().createElement(\"div\",{className:\"example\"},t.get(\"description\")?O().createElement(\"section\",{className:\"example__section\"},O().createElement(\"div\",{className:\"example__section-header\"},\"Example Description\"),O().createElement(\"p\",null,O().createElement(n,{source:t.get(\"description\")}))):null,r&&t.has(\"value\")?O().createElement(\"section\",{className:\"example__section\"},O().createElement(\"div\",{className:\"example__section-header\"},\"Example Value\"),O().createElement(s,null,stringify(t.get(\"value\")))):null):null}class ExamplesSelect extends O().PureComponent{static defaultProps={examples:(0,k.Map)({}),onSelect:(...e)=>console.log(\"DEBUG: ExamplesSelect was not given an onSelect callback\",...e),currentExampleKey:null,showLabels:!0};_onSelect=(e,{isSyntheticChange:t=!1}={})=>{\"function\"==typeof this.props.onSelect&&this.props.onSelect(e,{isSyntheticChange:t})};_onDomSelect=e=>{if(\"function\"==typeof this.props.onSelect){const t=e.target.selectedOptions[0].getAttribute(\"value\");this._onSelect(t,{isSyntheticChange:!1})}};getCurrentExample=()=>{const{examples:e,currentExampleKey:t}=this.props,r=e.get(t),a=e.keySeq().first(),n=e.get(a);return r||n||(0,k.Map)({})};componentDidMount(){const{onSelect:e,examples:t}=this.props;if(\"function\"==typeof e){const e=t.first(),r=t.keyOf(e);this._onSelect(r,{isSyntheticChange:!0})}}UNSAFE_componentWillReceiveProps(e){const{currentExampleKey:t,examples:r}=e;if(r!==this.props.examples&&!r.has(t)){const e=r.first(),t=r.keyOf(e);this._onSelect(t,{isSyntheticChange:!0})}}render(){const{examples:e,currentExampleKey:t,isValueModified:r,isModifiedValueAvailable:a,showLabels:n}=this.props;return O().createElement(\"div\",{className:\"examples-select\"},n?O().createElement(\"span\",{className:\"examples-select__section-label\"},\"Examples: \"):null,O().createElement(\"select\",{className:\"examples-select-element\",onChange:this._onDomSelect,value:a&&r?\"__MODIFIED__VALUE__\":t||\"\"},a?O().createElement(\"option\",{value:\"__MODIFIED__VALUE__\"},\"[Modified value]\"):null,e.map(((e,t)=>O().createElement(\"option\",{key:t,value:t},k.Map.isMap(e)&&e.get(\"summary\")||t))).valueSeq()))}}const stringifyUnlessList=e=>k.List.isList(e)?e:stringify(e);class ExamplesSelectValueRetainer extends O().PureComponent{static defaultProps={userHasEditedBody:!1,examples:(0,k.Map)({}),currentNamespace:\"__DEFAULT__NAMESPACE__\",setRetainRequestBodyValueFlag:()=>{},onSelect:(...e)=>console.log(\"ExamplesSelectValueRetainer: no `onSelect` function was provided\",...e),updateValue:(...e)=>console.log(\"ExamplesSelectValueRetainer: no `updateValue` function was provided\",...e)};constructor(e){super(e);const t=this._getCurrentExampleValue();this.state={[e.currentNamespace]:(0,k.Map)({lastUserEditedValue:this.props.currentUserInputValue,lastDownstreamValue:t,isModifiedValueSelected:this.props.userHasEditedBody||this.props.currentUserInputValue!==t})}}componentWillUnmount(){this.props.setRetainRequestBodyValueFlag(!1)}_getStateForCurrentNamespace=()=>{const{currentNamespace:e}=this.props;return(this.state[e]||(0,k.Map)()).toObject()};_setStateForCurrentNamespace=e=>{const{currentNamespace:t}=this.props;return this._setStateForNamespace(t,e)};_setStateForNamespace=(e,t)=>{const r=(this.state[e]||(0,k.Map)()).mergeDeep(t);return this.setState({[e]:r})};_isCurrentUserInputSameAsExampleValue=()=>{const{currentUserInputValue:e}=this.props;return this._getCurrentExampleValue()===e};_getValueForExample=(e,t)=>{const{examples:r}=t||this.props;return stringifyUnlessList((r||(0,k.Map)({})).getIn([e,\"value\"]))};_getCurrentExampleValue=e=>{const{currentKey:t}=e||this.props;return this._getValueForExample(t,e||this.props)};_onExamplesSelect=(e,{isSyntheticChange:t}={},...r)=>{const{onSelect:a,updateValue:n,currentUserInputValue:s,userHasEditedBody:o}=this.props,{lastUserEditedValue:l}=this._getStateForCurrentNamespace(),c=this._getValueForExample(e);if(\"__MODIFIED__VALUE__\"===e)return n(stringifyUnlessList(l)),this._setStateForCurrentNamespace({isModifiedValueSelected:!0});\"function\"==typeof a&&a(e,{isSyntheticChange:t},...r),this._setStateForCurrentNamespace({lastDownstreamValue:c,isModifiedValueSelected:t&&o||!!s&&s!==c}),t||\"function\"==typeof n&&n(stringifyUnlessList(c))};UNSAFE_componentWillReceiveProps(e){const{currentUserInputValue:t,examples:r,onSelect:a,userHasEditedBody:n}=e,{lastUserEditedValue:s,lastDownstreamValue:o}=this._getStateForCurrentNamespace(),l=this._getValueForExample(e.currentKey,e),c=r.filter((e=>k.Map.isMap(e)&&(e.get(\"value\")===t||stringify(e.get(\"value\"))===t)));if(c.size){let t;t=c.has(e.currentKey)?e.currentKey:c.keySeq().first(),a(t,{isSyntheticChange:!0})}else t!==this.props.currentUserInputValue&&t!==s&&t!==o&&(this.props.setRetainRequestBodyValueFlag(!0),this._setStateForNamespace(e.currentNamespace,{lastUserEditedValue:e.currentUserInputValue,isModifiedValueSelected:n||t!==l}))}render(){const{currentUserInputValue:e,examples:t,currentKey:r,getComponent:a,userHasEditedBody:n}=this.props,{lastDownstreamValue:s,lastUserEditedValue:o,isModifiedValueSelected:l}=this._getStateForCurrentNamespace(),c=a(\"ExamplesSelect\");return O().createElement(c,{examples:t,currentExampleKey:r,onSelect:this._onExamplesSelect,isModifiedValueAvailable:!!o&&o!==s,isValueModified:void 0!==e&&l&&e!==this._getCurrentExampleValue()||n})}}function oauth2_authorize_authorize({auth:e,authActions:t,errActions:r,configs:a,authConfigs:n={},currentServer:s}){let{schema:o,scopes:l,name:c,clientId:i}=e,p=o.get(\"flow\"),m=[];switch(p){case\"password\":return void t.authorizePassword(e);case\"application\":case\"clientCredentials\":case\"client_credentials\":return void t.authorizeApplication(e);case\"accessCode\":case\"authorizationCode\":case\"authorization_code\":m.push(\"response_type=code\");break;case\"implicit\":m.push(\"response_type=token\")}\"string\"==typeof i&&m.push(\"client_id=\"+encodeURIComponent(i));let u=a.oauth2RedirectUrl;if(void 0===u)return void r.newAuthErr({authId:c,source:\"validation\",level:\"error\",message:\"oauth2RedirectUrl configuration is not passed. Oauth2 authorization cannot be performed.\"});m.push(\"redirect_uri=\"+encodeURIComponent(u));let d=[];if(Array.isArray(l)?d=l:A().List.isList(l)&&(d=l.toArray()),d.length>0){let e=n.scopeSeparator||\" \";m.push(\"scope=\"+encodeURIComponent(d.join(e)))}let h=btoa(new Date);if(m.push(\"state=\"+encodeURIComponent(h)),void 0!==n.realm&&m.push(\"realm=\"+encodeURIComponent(n.realm)),(\"authorizationCode\"===p||\"authorization_code\"===p||\"accessCode\"===p)&&n.usePkceWithAuthorizationCodeGrant){const t=function generateCodeVerifier(){return b64toB64UrlEncoded(ae()(32).toString(\"base64\"))}(),r=function createCodeChallenge(e){return b64toB64UrlEncoded(se()(\"sha256\").update(e).digest(\"base64\"))}(t);m.push(\"code_challenge=\"+r),m.push(\"code_challenge_method=S256\"),e.codeVerifier=t}let{additionalQueryStringParams:g}=n;for(let e in g)void 0!==g[e]&&m.push([e,g[e]].map(encodeURIComponent).join(\"=\"));const y=o.get(\"authorizationUrl\");let f;f=s?ue()(sanitizeUrl(y),s,!0).toString():sanitizeUrl(y);let S,E=[f,m.join(\"&\")].join(\"string\"!=typeof y||y.includes(\"?\")?\"&\":\"?\");S=\"implicit\"===p?t.preAuthorizeImplicit:n.useBasicAuthenticationWithAccessCodeGrant?t.authorizeAccessCodeWithBasicAuthentication:t.authorizeAccessCodeWithFormParams,t.authPopup(E,{auth:e,state:h,redirectUrl:u,callback:S,errCb:r.newAuthErr})}class Oauth2 extends O().Component{constructor(e,t){super(e,t);let{name:r,schema:a,authorized:n,authSelectors:s}=this.props,o=n&&n.get(r),l=s.getConfigs()||{},c=o&&o.get(\"username\")||\"\",i=o&&o.get(\"clientId\")||l.clientId||\"\",p=o&&o.get(\"clientSecret\")||l.clientSecret||\"\",m=o&&o.get(\"passwordType\")||\"basic\",u=o&&o.get(\"scopes\")||l.scopes||[];\"string\"==typeof u&&(u=u.split(l.scopeSeparator||\" \")),this.state={appName:l.appName,name:r,schema:a,scopes:u,clientId:i,clientSecret:p,username:c,password:\"\",passwordType:m}}close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};authorize=()=>{let{authActions:e,errActions:t,getConfigs:r,authSelectors:a,oas3Selectors:n}=this.props,s=r(),o=a.getConfigs();t.clear({authId:name,type:\"auth\",source:\"auth\"}),oauth2_authorize_authorize({auth:this.state,currentServer:n.serverEffectiveValue(n.selectedServer()),authActions:e,errActions:t,configs:s,authConfigs:o})};onScopeChange=e=>{let{target:t}=e,{checked:r}=t,a=t.dataset.value;if(r&&-1===this.state.scopes.indexOf(a)){let e=this.state.scopes.concat([a]);this.setState({scopes:e})}else!r&&this.state.scopes.indexOf(a)>-1&&this.setState({scopes:this.state.scopes.filter((e=>e!==a))})};onInputChange=e=>{let{target:{dataset:{name:t},value:r}}=e,a={[t]:r};this.setState(a)};selectScopes=e=>{e.target.dataset.all?this.setState({scopes:Array.from((this.props.schema.get(\"allowedScopes\")||this.props.schema.get(\"scopes\")).keys())}):this.setState({scopes:[]})};logout=e=>{e.preventDefault();let{authActions:t,errActions:r,name:a}=this.props;r.clear({authId:a,type:\"auth\",source:\"auth\"}),t.logoutWithPersistOption([a])};render(){let{schema:e,getComponent:t,authSelectors:r,errSelectors:a,name:n,specSelectors:s}=this.props;const o=t(\"Input\"),l=t(\"Row\"),c=t(\"Col\"),i=t(\"Button\"),p=t(\"authError\"),m=t(\"JumpToPath\",!0),u=t(\"Markdown\",!0),d=t(\"InitializedInput\"),{isOAS3:h}=s;let g=h()?e.get(\"openIdConnectUrl\"):null;const y=\"implicit\",f=\"password\",S=h()?g?\"authorization_code\":\"authorizationCode\":\"accessCode\",E=h()?g?\"client_credentials\":\"clientCredentials\":\"application\",_=r.selectAuthPath(n);let v=!!(r.getConfigs()||{}).usePkceWithAuthorizationCodeGrant,w=e.get(\"flow\"),b=w===S&&v?w+\" with PKCE\":w,C=e.get(\"allowedScopes\")||e.get(\"scopes\"),x=!!r.authorized().get(n),N=a.allErrors().filter((e=>e.get(\"authId\")===n)),k=!N.filter((e=>\"validation\"===e.get(\"source\"))).size,A=e.get(\"description\");return O().createElement(\"div\",null,O().createElement(\"h4\",null,n,\" (OAuth2, \",b,\") \",O().createElement(m,{path:_})),this.state.appName?O().createElement(\"h5\",null,\"Application: \",this.state.appName,\" \"):null,A&&O().createElement(u,{source:e.get(\"description\")}),x&&O().createElement(\"h6\",null,\"Authorized\"),g&&O().createElement(\"p\",null,\"OpenID Connect URL: \",O().createElement(\"code\",null,g)),(w===y||w===S)&&O().createElement(\"p\",null,\"Authorization URL: \",O().createElement(\"code\",null,e.get(\"authorizationUrl\"))),(w===f||w===S||w===E)&&O().createElement(\"p\",null,\"Token URL:\",O().createElement(\"code\",null,\" \",e.get(\"tokenUrl\"))),O().createElement(\"p\",{className:\"flow\"},\"Flow: \",O().createElement(\"code\",null,b)),w!==f?null:O().createElement(l,null,O().createElement(l,null,O().createElement(\"label\",{htmlFor:\"oauth_username\"},\"username:\"),x?O().createElement(\"code\",null,\" \",this.state.username,\" \"):O().createElement(c,{tablet:10,desktop:10},O().createElement(\"input\",{id:\"oauth_username\",type:\"text\",\"data-name\":\"username\",onChange:this.onInputChange,autoFocus:!0}))),O().createElement(l,null,O().createElement(\"label\",{htmlFor:\"oauth_password\"},\"password:\"),x?O().createElement(\"code\",null,\" ****** \"):O().createElement(c,{tablet:10,desktop:10},O().createElement(\"input\",{id:\"oauth_password\",type:\"password\",\"data-name\":\"password\",onChange:this.onInputChange}))),O().createElement(l,null,O().createElement(\"label\",{htmlFor:\"password_type\"},\"Client credentials location:\"),x?O().createElement(\"code\",null,\" \",this.state.passwordType,\" \"):O().createElement(c,{tablet:10,desktop:10},O().createElement(\"select\",{id:\"password_type\",\"data-name\":\"passwordType\",onChange:this.onInputChange},O().createElement(\"option\",{value:\"basic\"},\"Authorization header\"),O().createElement(\"option\",{value:\"request-body\"},\"Request body\"))))),(w===E||w===y||w===S||w===f)&&(!x||x&&this.state.clientId)&&O().createElement(l,null,O().createElement(\"label\",{htmlFor:`client_id_${w}`},\"client_id:\"),x?O().createElement(\"code\",null,\" ****** \"):O().createElement(c,{tablet:10,desktop:10},O().createElement(d,{id:`client_id_${w}`,type:\"text\",required:w===f,initialValue:this.state.clientId,\"data-name\":\"clientId\",onChange:this.onInputChange}))),(w===E||w===S||w===f)&&O().createElement(l,null,O().createElement(\"label\",{htmlFor:`client_secret_${w}`},\"client_secret:\"),x?O().createElement(\"code\",null,\" ****** \"):O().createElement(c,{tablet:10,desktop:10},O().createElement(d,{id:`client_secret_${w}`,initialValue:this.state.clientSecret,type:\"password\",\"data-name\":\"clientSecret\",onChange:this.onInputChange}))),!x&&C&&C.size?O().createElement(\"div\",{className:\"scopes\"},O().createElement(\"h2\",null,\"Scopes:\",O().createElement(\"a\",{onClick:this.selectScopes,\"data-all\":!0},\"select all\"),O().createElement(\"a\",{onClick:this.selectScopes},\"select none\")),C.map(((e,t)=>O().createElement(l,{key:t},O().createElement(\"div\",{className:\"checkbox\"},O().createElement(o,{\"data-value\":t,id:`${t}-${w}-checkbox-${this.state.name}`,disabled:x,checked:this.state.scopes.includes(t),type:\"checkbox\",onChange:this.onScopeChange}),O().createElement(\"label\",{htmlFor:`${t}-${w}-checkbox-${this.state.name}`},O().createElement(\"span\",{className:\"item\"}),O().createElement(\"div\",{className:\"text\"},O().createElement(\"p\",{className:\"name\"},t),O().createElement(\"p\",{className:\"description\"},e))))))).toArray()):null,N.valueSeq().map(((e,t)=>O().createElement(p,{error:e,key:t}))),O().createElement(\"div\",{className:\"auth-btn-wrapper\"},k&&(x?O().createElement(i,{className:\"btn modal-btn auth authorize\",onClick:this.logout,\"aria-label\":\"Remove authorization\"},\"Logout\"):O().createElement(i,{className:\"btn modal-btn auth authorize\",onClick:this.authorize,\"aria-label\":\"Apply given OAuth2 credentials\"},\"Authorize\")),O().createElement(i,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\")))}}class Clear extends x.Component{onClick=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearResponse(t,r),e.clearRequest(t,r)};render(){return O().createElement(\"button\",{className:\"btn btn-clear opblock-control__btn\",onClick:this.onClick},\"Clear\")}}const Headers=({headers:e})=>O().createElement(\"div\",null,O().createElement(\"h5\",null,\"Response headers\"),O().createElement(\"pre\",{className:\"microlight\"},e)),Duration=({duration:e})=>O().createElement(\"div\",null,O().createElement(\"h5\",null,\"Request duration\"),O().createElement(\"pre\",{className:\"microlight\"},e,\" ms\"));class LiveResponse extends O().Component{shouldComponentUpdate(e){return this.props.response!==e.response||this.props.path!==e.path||this.props.method!==e.method||this.props.displayRequestDuration!==e.displayRequestDuration}render(){const{response:e,getComponent:t,getConfigs:r,displayRequestDuration:a,specSelectors:n,path:s,method:o}=this.props,{showMutatedRequest:l,requestSnippetsEnabled:c}=r(),i=l?n.mutatedRequestFor(s,o):n.requestFor(s,o),p=e.get(\"status\"),m=i.get(\"url\"),u=e.get(\"headers\").toJS(),d=e.get(\"notDocumented\"),h=e.get(\"error\"),g=e.get(\"text\"),y=e.get(\"duration\"),f=Object.keys(u),S=u[\"content-type\"]||u[\"Content-Type\"],E=t(\"responseBody\"),_=f.map((e=>{var t=Array.isArray(u[e])?u[e].join():u[e];return O().createElement(\"span\",{className:\"headerline\",key:e},\" \",e,\": \",t,\" \")})),v=0!==_.length,w=t(\"Markdown\",!0),b=t(\"RequestSnippets\",!0),C=t(\"curl\",!0);return O().createElement(\"div\",null,i&&c?O().createElement(b,{request:i}):O().createElement(C,{request:i}),m&&O().createElement(\"div\",null,O().createElement(\"div\",{className:\"request-url\"},O().createElement(\"h4\",null,\"Request URL\"),O().createElement(\"pre\",{className:\"microlight\"},m))),O().createElement(\"h4\",null,\"Server response\"),O().createElement(\"table\",{className:\"responses-table live-responses-table\"},O().createElement(\"thead\",null,O().createElement(\"tr\",{className:\"responses-header\"},O().createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),O().createElement(\"td\",{className:\"col_header response-col_description\"},\"Details\"))),O().createElement(\"tbody\",null,O().createElement(\"tr\",{className:\"response\"},O().createElement(\"td\",{className:\"response-col_status\"},p,d?O().createElement(\"div\",{className:\"response-undocumented\"},O().createElement(\"i\",null,\" Undocumented \")):null),O().createElement(\"td\",{className:\"response-col_description\"},h?O().createElement(w,{source:`${\"\"!==e.get(\"name\")?`${e.get(\"name\")}: `:\"\"}${e.get(\"message\")}`}):null,g?O().createElement(E,{content:g,contentType:S,url:m,headers:u,getConfigs:r,getComponent:t}):null,v?O().createElement(Headers,{headers:_}):null,a&&y?O().createElement(Duration,{duration:y}):null)))))}}class OnlineValidatorBadge extends O().Component{constructor(e,t){super(e,t);let{getConfigs:r}=e,{validatorUrl:a}=r();this.state={url:this.getDefinitionUrl(),validatorUrl:void 0===a?\"https://validator.swagger.io/validator\":a}}getDefinitionUrl=()=>{let{specSelectors:e}=this.props;return new(ue())(e.url(),K.location).toString()};UNSAFE_componentWillReceiveProps(e){let{getConfigs:t}=e,{validatorUrl:r}=t();this.setState({url:this.getDefinitionUrl(),validatorUrl:void 0===r?\"https://validator.swagger.io/validator\":r})}render(){let{getConfigs:e}=this.props,{spec:t}=e(),r=sanitizeUrl(this.state.validatorUrl);return\"object\"==typeof t&&Object.keys(t).length?null:this.state.url&&requiresValidationURL(this.state.validatorUrl)&&requiresValidationURL(this.state.url)?O().createElement(\"span\",{className:\"float-right\"},O().createElement(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:`${r}/debug?url=${encodeURIComponent(this.state.url)}`},O().createElement(ValidatorImage,{src:`${r}?url=${encodeURIComponent(this.state.url)}`,alt:\"Online validator badge\"}))):null}}class ValidatorImage extends O().Component{constructor(e){super(e),this.state={loaded:!1,error:!1}}componentDidMount(){const e=new Image;e.onload=()=>{this.setState({loaded:!0})},e.onerror=()=>{this.setState({error:!0})},e.src=this.props.src}UNSAFE_componentWillReceiveProps(e){if(e.src!==this.props.src){const t=new Image;t.onload=()=>{this.setState({loaded:!0})},t.onerror=()=>{this.setState({error:!0})},t.src=e.src}}render(){return this.state.error?O().createElement(\"img\",{alt:\"Error\"}):this.state.loaded?O().createElement(\"img\",{src:this.props.src,alt:this.props.alt}):null}}class Operations extends O().Component{render(){let{specSelectors:e}=this.props;const t=e.taggedOperations();return 0===t.size?O().createElement(\"h3\",null,\" No operations defined in spec!\"):O().createElement(\"div\",null,t.map(this.renderOperationTag).toArray(),t.size<1?O().createElement(\"h3\",null,\" No operations defined in spec! \"):null)}renderOperationTag=(e,t)=>{const{specSelectors:r,getComponent:a,oas3Selectors:n,layoutSelectors:s,layoutActions:o,getConfigs:l}=this.props,c=r.validOperationMethods(),i=a(\"OperationContainer\",!0),p=a(\"OperationTag\"),m=e.get(\"operations\");return O().createElement(p,{key:\"operation-\"+t,tagObj:e,tag:t,oas3Selectors:n,layoutSelectors:s,layoutActions:o,getConfigs:l,getComponent:a,specUrl:r.url()},O().createElement(\"div\",{className:\"operation-tag-content\"},m.map((e=>{const r=e.get(\"path\"),a=e.get(\"method\"),n=A().List([\"paths\",r,a]);return-1===c.indexOf(a)?null:O().createElement(i,{key:`${r}-${a}`,specPath:n,op:e,path:r,method:a,tag:t})})).toArray()))}}class OperationTag extends O().Component{static defaultProps={tagObj:A().fromJS({}),tag:\"\"};render(){const{tagObj:e,tag:t,children:r,oas3Selectors:a,layoutSelectors:n,layoutActions:s,getConfigs:o,getComponent:l,specUrl:c}=this.props;let{docExpansion:i,deepLinking:p}=o();const m=l(\"Collapse\"),u=l(\"Markdown\",!0),d=l(\"DeepLink\"),h=l(\"Link\"),g=l(\"ArrowUpIcon\"),y=l(\"ArrowDownIcon\");let f,S=e.getIn([\"tagDetails\",\"description\"],null),E=e.getIn([\"tagDetails\",\"externalDocs\",\"description\"]),_=e.getIn([\"tagDetails\",\"externalDocs\",\"url\"]);f=isFunc(a)&&isFunc(a.selectedServer)?safeBuildUrl(_,c,{selectedServer:a.selectedServer()}):_;let v=[\"operations-tag\",t],w=n.isShown(v,\"full\"===i||\"list\"===i);return O().createElement(\"div\",{className:w?\"opblock-tag-section is-open\":\"opblock-tag-section\"},O().createElement(\"h3\",{onClick:()=>s.show(v,!w),className:S?\"opblock-tag\":\"opblock-tag no-desc\",id:v.map((e=>escapeDeepLinkPath(e))).join(\"-\"),\"data-tag\":t,\"data-is-open\":w},O().createElement(d,{enabled:p,isShown:w,path:createDeepLinkPath(t),text:t}),S?O().createElement(\"small\",null,O().createElement(u,{source:S})):O().createElement(\"small\",null),f?O().createElement(\"div\",{className:\"info__externaldocs\"},O().createElement(\"small\",null,O().createElement(h,{href:sanitizeUrl(f),onClick:e=>e.stopPropagation(),target:\"_blank\"},E||f))):null,O().createElement(\"button\",{\"aria-expanded\":w,className:\"expand-operation\",title:w?\"Collapse operation\":\"Expand operation\",onClick:()=>s.show(v,!w)},w?O().createElement(g,{className:\"arrow\"}):O().createElement(y,{className:\"arrow\"}))),O().createElement(m,{isOpened:w},r))}}class Operation extends x.PureComponent{static defaultProps={operation:null,response:null,request:null,specPath:(0,k.List)(),summary:\"\"};render(){let{specPath:e,response:t,request:r,toggleShown:a,onTryoutClick:n,onResetClick:s,onCancelClick:o,onExecute:l,fn:c,getComponent:i,getConfigs:p,specActions:m,specSelectors:u,authActions:d,authSelectors:h,oas3Actions:g,oas3Selectors:y}=this.props,f=this.props.operation,{deprecated:S,isShown:E,path:_,method:v,op:w,tag:b,operationId:C,allowTryItOut:x,displayRequestDuration:N,tryItOutEnabled:k,executeInProgress:I}=f.toJS(),{description:j,externalDocs:q,schemes:P}=w;const M=q?safeBuildUrl(q.url,u.url(),{selectedServer:y.selectedServer()}):\"\";let T=f.getIn([\"op\"]),R=T.get(\"responses\"),J=function getList(e,t){if(!A().Iterable.isIterable(e))return A().List();let r=e.getIn(Array.isArray(t)?t:[t]);return A().List.isList(r)?r:A().List()}(T,[\"parameters\"]),$=u.operationScheme(_,v),V=[\"operations\",b,C],L=getExtensions(T);const D=i(\"responses\"),U=i(\"parameters\"),K=i(\"execute\"),z=i(\"clear\"),B=i(\"Collapse\"),F=i(\"Markdown\",!0),W=i(\"schemes\"),H=i(\"OperationServers\"),X=i(\"OperationExt\"),G=i(\"OperationSummary\"),Y=i(\"Link\"),{showExtensions:Q}=p();if(R&&t&&t.size>0){let e=!R.get(String(t.get(\"status\")))&&!R.get(\"default\");t=t.set(\"notDocumented\",e)}let Z=[_,v];const ee=u.validationErrors([_,v]);return O().createElement(\"div\",{className:S?\"opblock opblock-deprecated\":E?`opblock opblock-${v} is-open`:`opblock opblock-${v}`,id:escapeDeepLinkPath(V.join(\"-\"))},O().createElement(G,{operationProps:f,isShown:E,toggleShown:a,getComponent:i,authActions:d,authSelectors:h,specPath:e}),O().createElement(B,{isOpened:E},O().createElement(\"div\",{className:\"opblock-body\"},T&&T.size||null===T?null:O().createElement(rolling_load,{height:\"32px\",width:\"32px\",className:\"opblock-loading-animation\"}),S&&O().createElement(\"h4\",{className:\"opblock-title_normal\"},\" Warning: Deprecated\"),j&&O().createElement(\"div\",{className:\"opblock-description-wrapper\"},O().createElement(\"div\",{className:\"opblock-description\"},O().createElement(F,{source:j}))),M?O().createElement(\"div\",{className:\"opblock-external-docs-wrapper\"},O().createElement(\"h4\",{className:\"opblock-title_normal\"},\"Find more details\"),O().createElement(\"div\",{className:\"opblock-external-docs\"},q.description&&O().createElement(\"span\",{className:\"opblock-external-docs__description\"},O().createElement(F,{source:q.description})),O().createElement(Y,{target:\"_blank\",className:\"opblock-external-docs__link\",href:sanitizeUrl(M)},M))):null,T&&T.size?O().createElement(U,{parameters:J,specPath:e.push(\"parameters\"),operation:T,onChangeKey:Z,onTryoutClick:n,onResetClick:s,onCancelClick:o,tryItOutEnabled:k,allowTryItOut:x,fn:c,getComponent:i,specActions:m,specSelectors:u,pathMethod:[_,v],getConfigs:p,oas3Actions:g,oas3Selectors:y}):null,k?O().createElement(H,{getComponent:i,path:_,method:v,operationServers:T.get(\"servers\"),pathServers:u.paths().getIn([_,\"servers\"]),getSelectedServer:y.selectedServer,setSelectedServer:g.setSelectedServer,setServerVariableValue:g.setServerVariableValue,getServerVariable:y.serverVariableValue,getEffectiveServerValue:y.serverEffectiveValue}):null,k&&x&&P&&P.size?O().createElement(\"div\",{className:\"opblock-schemes\"},O().createElement(W,{schemes:P,path:_,method:v,specActions:m,currentScheme:$})):null,!k||!x||ee.length<=0?null:O().createElement(\"div\",{className:\"validation-errors errors-wrapper\"},\"Please correct the following validation errors and try again.\",O().createElement(\"ul\",null,ee.map(((e,t)=>O().createElement(\"li\",{key:t},\" \",e,\" \"))))),O().createElement(\"div\",{className:k&&t&&x?\"btn-group\":\"execute-wrapper\"},k&&x?O().createElement(K,{operation:T,specActions:m,specSelectors:u,oas3Selectors:y,oas3Actions:g,path:_,method:v,onExecute:l,disabled:I}):null,k&&t&&x?O().createElement(z,{specActions:m,path:_,method:v}):null),I?O().createElement(\"div\",{className:\"loading-container\"},O().createElement(\"div\",{className:\"loading\"})):null,R?O().createElement(D,{responses:R,request:r,tryItOutResponse:t,getComponent:i,getConfigs:p,specSelectors:u,oas3Actions:g,oas3Selectors:y,specActions:m,produces:u.producesOptionsFor([_,v]),producesValue:u.currentProducesFor([_,v]),specPath:e.push(\"responses\"),path:_,method:v,displayRequestDuration:N,fn:c}):null,Q&&L.size?O().createElement(X,{extensions:L,getComponent:i}):null)))}}class OperationContainer extends x.PureComponent{constructor(e,t){super(e,t);const{tryItOutEnabled:r}=e.getConfigs();this.state={tryItOutEnabled:r,executeInProgress:!1}}static defaultProps={showSummary:!0,response:null,allowTryItOut:!0,displayOperationId:!1,displayRequestDuration:!1};mapStateToProps(e,t){const{op:r,layoutSelectors:a,getConfigs:n}=t,{docExpansion:s,deepLinking:o,displayOperationId:l,displayRequestDuration:c,supportedSubmitMethods:i}=n(),p=a.showSummary(),m=r.getIn([\"operation\",\"__originalOperationId\"])||r.getIn([\"operation\",\"operationId\"])||(0,oa.opId)(r.get(\"operation\"),t.path,t.method)||r.get(\"id\"),u=[\"operations\",t.tag,m],d=i.indexOf(t.method)>=0&&(void 0===t.allowTryItOut?t.specSelectors.allowTryItOutFor(t.path,t.method):t.allowTryItOut),h=r.getIn([\"operation\",\"security\"])||t.specSelectors.security();return{operationId:m,isDeepLinkingEnabled:o,showSummary:p,displayOperationId:l,displayRequestDuration:c,allowTryItOut:d,security:h,isAuthorized:t.authSelectors.isAuthorized(h),isShown:a.isShown(u,\"full\"===s),jumpToKey:`paths.${t.path}.${t.method}`,response:t.specSelectors.responseFor(t.path,t.method),request:t.specSelectors.requestFor(t.path,t.method)}}componentDidMount(){const{isShown:e}=this.props,t=this.getResolvedSubtree();e&&void 0===t&&this.requestResolvedSubtree()}UNSAFE_componentWillReceiveProps(e){const{response:t,isShown:r}=e,a=this.getResolvedSubtree();t!==this.props.response&&this.setState({executeInProgress:!1}),r&&void 0===a&&this.requestResolvedSubtree()}toggleShown=()=>{let{layoutActions:e,tag:t,operationId:r,isShown:a}=this.props;const n=this.getResolvedSubtree();a||void 0!==n||this.requestResolvedSubtree(),e.show([\"operations\",t,r],!a)};onCancelClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onTryoutClick=()=>{this.setState({tryItOutEnabled:!this.state.tryItOutEnabled})};onResetClick=e=>{const t=this.props.oas3Selectors.selectDefaultRequestBodyValue(...e);this.props.oas3Actions.setRequestBodyValue({value:t,pathMethod:e})};onExecute=()=>{this.setState({executeInProgress:!0})};getResolvedSubtree=()=>{const{specSelectors:e,path:t,method:r,specPath:a}=this.props;return a?e.specResolvedSubtree(a.toJS()):e.specResolvedSubtree([\"paths\",t,r])};requestResolvedSubtree=()=>{const{specActions:e,path:t,method:r,specPath:a}=this.props;return a?e.requestResolvedSubtree(a.toJS()):e.requestResolvedSubtree([\"paths\",t,r])};render(){let{op:e,tag:t,path:r,method:a,security:n,isAuthorized:s,operationId:o,showSummary:l,isShown:c,jumpToKey:i,allowTryItOut:p,response:m,request:u,displayOperationId:d,displayRequestDuration:h,isDeepLinkingEnabled:g,specPath:y,specSelectors:f,specActions:S,getComponent:E,getConfigs:_,layoutSelectors:v,layoutActions:w,authActions:b,authSelectors:C,oas3Actions:x,oas3Selectors:N,fn:A}=this.props;const I=E(\"operation\"),j=this.getResolvedSubtree()||(0,k.Map)(),q=(0,k.fromJS)({op:j,tag:t,path:r,summary:e.getIn([\"operation\",\"summary\"])||\"\",deprecated:j.get(\"deprecated\")||e.getIn([\"operation\",\"deprecated\"])||!1,method:a,security:n,isAuthorized:s,operationId:o,originalOperationId:j.getIn([\"operation\",\"__originalOperationId\"]),showSummary:l,isShown:c,jumpToKey:i,allowTryItOut:p,request:u,displayOperationId:d,displayRequestDuration:h,isDeepLinkingEnabled:g,executeInProgress:this.state.executeInProgress,tryItOutEnabled:this.state.tryItOutEnabled});return O().createElement(I,{operation:q,response:m,request:u,isShown:c,toggleShown:this.toggleShown,onTryoutClick:this.onTryoutClick,onResetClick:this.onResetClick,onCancelClick:this.onCancelClick,onExecute:this.onExecute,specPath:y,specActions:S,specSelectors:f,oas3Actions:x,oas3Selectors:N,layoutActions:w,layoutSelectors:v,authActions:b,authSelectors:C,getComponent:E,getConfigs:_,fn:A})}}const Ya=require(\"lodash/toString\");var Qa=__webpack_require__.n(Ya);class OperationSummary extends x.PureComponent{static defaultProps={operationProps:null,specPath:(0,k.List)(),summary:\"\"};render(){let{isShown:e,toggleShown:t,getComponent:r,authActions:a,authSelectors:n,operationProps:s,specPath:o}=this.props,{summary:l,isAuthorized:c,method:i,op:p,showSummary:m,path:u,operationId:d,originalOperationId:h,displayOperationId:g}=s.toJS(),{summary:y}=p,f=s.get(\"security\");const S=r(\"authorizeOperationBtn\",!0),E=r(\"OperationSummaryMethod\"),_=r(\"OperationSummaryPath\"),v=r(\"JumpToPath\",!0),w=r(\"CopyToClipboardBtn\",!0),b=r(\"ArrowUpIcon\"),C=r(\"ArrowDownIcon\"),x=f&&!!f.count(),N=x&&1===f.size&&f.first().isEmpty(),k=!x||N;return O().createElement(\"div\",{className:`opblock-summary opblock-summary-${i}`},O().createElement(\"button\",{\"aria-expanded\":e,className:\"opblock-summary-control\",onClick:t},O().createElement(E,{method:i}),O().createElement(\"div\",{className:\"opblock-summary-path-description-wrapper\"},O().createElement(_,{getComponent:r,operationProps:s,specPath:o}),m?O().createElement(\"div\",{className:\"opblock-summary-description\"},Qa()(y||l)):null),g&&(h||d)?O().createElement(\"span\",{className:\"opblock-summary-operation-id\"},h||d):null),O().createElement(w,{textToCopy:`${o.get(1)}`}),k?null:O().createElement(S,{isAuthorized:c,onClick:()=>{const e=n.definitionsForRequirements(f);a.showDefinitions(e)}}),O().createElement(v,{path:o}),O().createElement(\"button\",{\"aria-label\":`${i} ${u.replace(/\\//g,\"​/\")}`,className:\"opblock-control-arrow\",\"aria-expanded\":e,tabIndex:\"-1\",onClick:t},e?O().createElement(b,{className:\"arrow\"}):O().createElement(C,{className:\"arrow\"})))}}class OperationSummaryMethod extends x.PureComponent{static defaultProps={operationProps:null};render(){let{method:e}=this.props;return O().createElement(\"span\",{className:\"opblock-summary-method\"},e.toUpperCase())}}class OperationSummaryPath extends x.PureComponent{render(){let{getComponent:e,operationProps:t}=this.props,{deprecated:r,isShown:a,path:n,tag:s,operationId:o,isDeepLinkingEnabled:l}=t.toJS();const c=n.split(/(?=\\/)/g);for(let e=1;e<c.length;e+=2)c.splice(e,0,O().createElement(\"wbr\",{key:e}));const i=e(\"DeepLink\");return O().createElement(\"span\",{className:r?\"opblock-summary-path__deprecated\":\"opblock-summary-path\",\"data-path\":n},O().createElement(i,{enabled:l,isShown:a,path:createDeepLinkPath(`${s}/${o}`),text:c}))}}const operation_extensions=({extensions:e,getComponent:t})=>{let r=t(\"OperationExtRow\");return O().createElement(\"div\",{className:\"opblock-section\"},O().createElement(\"div\",{className:\"opblock-section-header\"},O().createElement(\"h4\",null,\"Extensions\")),O().createElement(\"div\",{className:\"table-container\"},O().createElement(\"table\",null,O().createElement(\"thead\",null,O().createElement(\"tr\",null,O().createElement(\"td\",{className:\"col_header\"},\"Field\"),O().createElement(\"td\",{className:\"col_header\"},\"Value\"))),O().createElement(\"tbody\",null,e.entrySeq().map((([e,t])=>O().createElement(r,{key:`${e}-${t}`,xKey:e,xVal:t})))))))},operation_extension_row=({xKey:e,xVal:t})=>{const r=t?t.toJS?t.toJS():t:null;return O().createElement(\"tr\",null,O().createElement(\"td\",null,e),O().createElement(\"td\",null,JSON.stringify(r)))};function createHtmlReadyId(e,t=\"_\"){return e.replace(/[^\\w-]/g,t)}class Responses extends O().Component{static defaultProps={tryItOutResponse:null,produces:(0,k.fromJS)([\"application/json\"]),displayRequestDuration:!1};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);onResponseContentTypeChange=({controlsAcceptHeader:e,value:t})=>{const{oas3Actions:r,path:a,method:n}=this.props;e&&r.setResponseContentType({value:t,path:a,method:n})};render(){let{responses:e,tryItOutResponse:t,getComponent:r,getConfigs:a,specSelectors:n,fn:s,producesValue:o,displayRequestDuration:l,specPath:c,path:i,method:p,oas3Selectors:m,oas3Actions:u}=this.props,d=function defaultStatusCode(e){let t=e.keySeq();return t.contains(ce)?ce:t.filter((e=>\"2\"===(e+\"\")[0])).sort().first()}(e);const h=r(\"contentType\"),g=r(\"liveResponse\"),y=r(\"response\");let f=this.props.produces&&this.props.produces.size?this.props.produces:Responses.defaultProps.produces;const S=n.isOAS3()?function getAcceptControllingResponse(e){if(!A().OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;const t=e.find(((e,t)=>t.startsWith(\"2\")&&Object.keys(e.get(\"content\")||{}).length>0)),r=e.get(\"default\")||A().OrderedMap(),a=(r.get(\"content\")||A().OrderedMap()).keySeq().toJS().length?r:null;return t||a}(e):null,E=createHtmlReadyId(`${p}${i}_responses`),_=`${E}_select`;return O().createElement(\"div\",{className:\"responses-wrapper\"},O().createElement(\"div\",{className:\"opblock-section-header\"},O().createElement(\"h4\",null,\"Responses\"),n.isOAS3()?null:O().createElement(\"label\",{htmlFor:_},O().createElement(\"span\",null,\"Response content type\"),O().createElement(h,{value:o,ariaControls:E,ariaLabel:\"Response content type\",className:\"execute-content-type\",contentTypes:f,controlId:_,onChange:this.onChangeProducesWrapper}))),O().createElement(\"div\",{className:\"responses-inner\"},t?O().createElement(\"div\",null,O().createElement(g,{response:t,getComponent:r,getConfigs:a,specSelectors:n,path:this.props.path,method:this.props.method,displayRequestDuration:l}),O().createElement(\"h4\",null,\"Responses\")):null,O().createElement(\"table\",{\"aria-live\":\"polite\",className:\"responses-table\",id:E,role:\"region\"},O().createElement(\"thead\",null,O().createElement(\"tr\",{className:\"responses-header\"},O().createElement(\"td\",{className:\"col_header response-col_status\"},\"Code\"),O().createElement(\"td\",{className:\"col_header response-col_description\"},\"Description\"),n.isOAS3()?O().createElement(\"td\",{className:\"col col_header response-col_links\"},\"Links\"):null)),O().createElement(\"tbody\",null,e.entrySeq().map((([e,l])=>{let h=t&&t.get(\"status\")==e?\"response_current\":\"\";return O().createElement(y,{key:e,path:i,method:p,specPath:c.push(e),isDefault:d===e,fn:s,className:h,code:e,response:l,specSelectors:n,controlsAcceptHeader:l===S,onContentTypeChange:this.onResponseContentTypeChange,contentType:o,getConfigs:a,activeExamplesKey:m.activeExamplesMember(i,p,\"responses\",e),oas3Actions:u,getComponent:r})})).toArray()))))}}function getKnownSyntaxHighlighterLanguage(e){return function canJsonParse(e){try{return!!JSON.parse(e)}catch(e){return null}}(e)?\"json\":null}class Response extends O().Component{constructor(e,t){super(e,t),this.state={responseContentType:\"\"}}static defaultProps={response:(0,k.fromJS)({}),onContentTypeChange:()=>{}};_onContentTypeChange=e=>{const{onContentTypeChange:t,controlsAcceptHeader:r}=this.props;this.setState({responseContentType:e}),t({value:e,controlsAcceptHeader:r})};getTargetExamplesKey=()=>{const{response:e,contentType:t,activeExamplesKey:r}=this.props,a=this.state.responseContentType||t,n=e.getIn([\"content\",a],(0,k.Map)({})).get(\"examples\",null).keySeq().first();return r||n};render(){let{path:e,method:t,code:r,response:a,className:n,specPath:s,fn:o,getComponent:l,getConfigs:c,specSelectors:i,contentType:p,controlsAcceptHeader:m,oas3Actions:u}=this.props,{inferSchema:d,getSampleSchema:h}=o,g=i.isOAS3();const{showExtensions:y}=c();let f=y?getExtensions(a):null,S=a.get(\"headers\"),E=a.get(\"links\");const _=l(\"ResponseExtension\"),v=l(\"headers\"),w=l(\"HighlightCode\",!0),b=l(\"modelExample\"),C=l(\"Markdown\",!0),x=l(\"operationLink\"),N=l(\"contentType\"),A=l(\"ExamplesSelect\"),I=l(\"Example\");var j,q;const P=this.state.responseContentType||p,M=a.getIn([\"content\",P],(0,k.Map)({})),T=M.get(\"examples\",null);if(g){const e=M.get(\"schema\");j=e?d(e.toJS()):null,q=e?(0,k.List)([\"content\",this.state.responseContentType,\"schema\"]):s}else j=a.get(\"schema\"),q=a.has(\"schema\")?s.push(\"schema\"):s;let R,J,$=!1,V={includeReadOnly:!0};if(g)if(J=M.get(\"schema\")?.toJS(),k.Map.isMap(T)&&!T.isEmpty()){const e=this.getTargetExamplesKey(),getMediaTypeExample=e=>k.Map.isMap(e)?e.get(\"value\"):void 0;R=getMediaTypeExample(T.get(e,(0,k.Map)({}))),void 0===R&&(R=getMediaTypeExample(T.values().next().value)),$=!0}else void 0!==M.get(\"example\")&&(R=M.get(\"example\"),$=!0);else{J=j,V={...V,includeWriteOnly:!0};const e=a.getIn([\"examples\",P]);e&&(R=e,$=!0)}const L=((e,t)=>{if(null==e)return null;const r=getKnownSyntaxHighlighterLanguage(e)?\"json\":null;return O().createElement(\"div\",null,O().createElement(t,{className:\"example\",language:r},stringify(e)))})(h(J,P,V,$?R:void 0),w);return O().createElement(\"tr\",{className:\"response \"+(n||\"\"),\"data-code\":r},O().createElement(\"td\",{className:\"response-col_status\"},r),O().createElement(\"td\",{className:\"response-col_description\"},O().createElement(\"div\",{className:\"response-col_description__inner\"},O().createElement(C,{source:a.get(\"description\")})),y&&f.size?f.entrySeq().map((([e,t])=>O().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,g&&a.get(\"content\")?O().createElement(\"section\",{className:\"response-controls\"},O().createElement(\"div\",{className:pt()(\"response-control-media-type\",{\"response-control-media-type--accept-controller\":m})},O().createElement(\"small\",{className:\"response-control-media-type__title\"},\"Media type\"),O().createElement(N,{value:this.state.responseContentType,contentTypes:a.get(\"content\")?a.get(\"content\").keySeq():(0,k.Seq)(),onChange:this._onContentTypeChange,ariaLabel:\"Media Type\"}),m?O().createElement(\"small\",{className:\"response-control-media-type__accept-message\"},\"Controls \",O().createElement(\"code\",null,\"Accept\"),\" header.\"):null),k.Map.isMap(T)&&!T.isEmpty()?O().createElement(\"div\",{className:\"response-control-examples\"},O().createElement(\"small\",{className:\"response-control-examples__title\"},\"Examples\"),O().createElement(A,{examples:T,currentExampleKey:this.getTargetExamplesKey(),onSelect:a=>u.setActiveExamplesMember({name:a,pathMethod:[e,t],contextType:\"responses\",contextName:r}),showLabels:!1})):null):null,L||j?O().createElement(b,{specPath:q,getComponent:l,getConfigs:c,specSelectors:i,schema:fromJSOrdered(j),example:L,includeReadOnly:!0}):null,g&&T?O().createElement(I,{example:T.get(this.getTargetExamplesKey(),(0,k.Map)({})),getComponent:l,getConfigs:c,omitValue:!0}):null,S?O().createElement(v,{headers:S,getComponent:l}):null),g?O().createElement(\"td\",{className:\"response-col_links\"},E?E.toSeq().entrySeq().map((([e,t])=>O().createElement(x,{key:e,name:e,link:t,getComponent:l}))):O().createElement(\"i\",null,\"No links\")):null)}}const response_extension=({xKey:e,xVal:t})=>O().createElement(\"div\",{className:\"response__extension\"},e,\": \",String(t)),Za=require(\"xml-but-prettier\");var en=__webpack_require__.n(Za);const tn=require(\"lodash/toLower\");var rn=__webpack_require__.n(tn);class ResponseBody extends O().PureComponent{state={parsedContent:null};updateParsedContent=e=>{const{content:t}=this.props;if(e!==t)if(t&&t instanceof Blob){var r=new FileReader;r.onload=()=>{this.setState({parsedContent:r.result})},r.readAsText(t)}else this.setState({parsedContent:t.toString()})};componentDidMount(){this.updateParsedContent(null)}componentDidUpdate(e){this.updateParsedContent(e.content)}render(){let{content:e,contentType:t,url:r,headers:a={},getComponent:n}=this.props;const{parsedContent:s}=this.state,o=n(\"HighlightCode\",!0),l=\"response_\"+(new Date).getTime();let c,i;if(r=r||\"\",(/^application\\/octet-stream/i.test(t)||a[\"Content-Disposition\"]&&/attachment/i.test(a[\"Content-Disposition\"])||a[\"content-disposition\"]&&/attachment/i.test(a[\"content-disposition\"])||a[\"Content-Description\"]&&/File Transfer/i.test(a[\"Content-Description\"])||a[\"content-description\"]&&/File Transfer/i.test(a[\"content-description\"]))&&(e.size>0||e.length>0))if(\"Blob\"in window){let n=t||\"text/html\",s=e instanceof Blob?e:new Blob([e],{type:n}),o=window.URL.createObjectURL(s),l=[n,r.substr(r.lastIndexOf(\"/\")+1),o].join(\":\"),c=a[\"content-disposition\"]||a[\"Content-Disposition\"];if(void 0!==c){let e=function extractFileNameFromContentDispositionHeader(e){let t;if([/filename\\*=[^']+'\\w*'\"([^\"]+)\";?/i,/filename\\*=[^']+'\\w*'([^;]+);?/i,/filename=\"([^;]*);?\"/i,/filename=([^;]*);?/i].some((r=>(t=r.exec(e),null!==t))),null!==t&&t.length>1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}(c);null!==e&&(l=e)}i=K.navigator&&K.navigator.msSaveOrOpenBlob?O().createElement(\"div\",null,O().createElement(\"a\",{href:o,onClick:()=>K.navigator.msSaveOrOpenBlob(s,l)},\"Download file\")):O().createElement(\"div\",null,O().createElement(\"a\",{href:o,download:l},\"Download file\"))}else i=O().createElement(\"pre\",{className:\"microlight\"},\"Download headers detected but your browser does not support downloading binary via XHR (Blob).\");else if(/json/i.test(t)){let t=null;getKnownSyntaxHighlighterLanguage(e)&&(t=\"json\");try{c=JSON.stringify(JSON.parse(e),null,\"  \")}catch(t){c=\"can't parse JSON.  Raw result:\\n\\n\"+e}i=O().createElement(o,{language:t,downloadable:!0,fileName:`${l}.json`,canCopy:!0},c)}else/xml/i.test(t)?(c=en()(e,{textNodesOnSameLine:!0,indentor:\"  \"}),i=O().createElement(o,{downloadable:!0,fileName:`${l}.xml`,canCopy:!0},c)):i=\"text/html\"===rn()(t)||/text\\/plain/.test(t)?O().createElement(o,{downloadable:!0,fileName:`${l}.html`,canCopy:!0},e):\"text/csv\"===rn()(t)||/text\\/csv/.test(t)?O().createElement(o,{downloadable:!0,fileName:`${l}.csv`,canCopy:!0},e):/^image\\//i.test(t)?t.includes(\"svg\")?O().createElement(\"div\",null,\" \",e,\" \"):O().createElement(\"img\",{src:window.URL.createObjectURL(e)}):/^audio\\//i.test(t)?O().createElement(\"pre\",{className:\"microlight\"},O().createElement(\"audio\",{controls:!0,key:r},O().createElement(\"source\",{src:r,type:t}))):\"string\"==typeof e?O().createElement(o,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},e):e.size>0?s?O().createElement(\"div\",null,O().createElement(\"p\",{className:\"i\"},\"Unrecognized response type; displaying content as text.\"),O().createElement(o,{downloadable:!0,fileName:`${l}.txt`,canCopy:!0},s)):O().createElement(\"p\",{className:\"i\"},\"Unrecognized response type; unable to display.\"):null;return i?O().createElement(\"div\",null,O().createElement(\"h5\",null,\"Response body\"),i):null}}class Parameters extends x.Component{constructor(e){super(e),this.state={callbackVisible:!1,parametersVisible:!0}}static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,tryItOutEnabled:!1,allowTryItOut:!0,onChangeKey:[],specPath:[]};onChange=(e,t,r)=>{let{specActions:{changeParamByIdentity:a},onChangeKey:n}=this.props;a(n,e,t,r)};onChangeConsumesWrapper=e=>{let{specActions:{changeConsumesValue:t},onChangeKey:r}=this.props;t(r,e)};toggleTab=e=>\"parameters\"===e?this.setState({parametersVisible:!0,callbackVisible:!1}):\"callbacks\"===e?this.setState({callbackVisible:!0,parametersVisible:!1}):void 0;onChangeMediaType=({value:e,pathMethod:t})=>{let{specActions:r,oas3Selectors:a,oas3Actions:n}=this.props;const s=a.hasUserEditedBody(...t),o=a.shouldRetainRequestBodyValue(...t);n.setRequestContentType({value:e,pathMethod:t}),n.initRequestBodyValidateError({pathMethod:t}),s||(o||n.setRequestBodyValue({value:void 0,pathMethod:t}),r.clearResponse(...t),r.clearRequest(...t),r.clearValidateParams(t))};render(){let{onTryoutClick:e,onResetClick:t,parameters:r,allowTryItOut:a,tryItOutEnabled:n,specPath:s,fn:o,getComponent:l,getConfigs:c,specSelectors:i,specActions:p,pathMethod:m,oas3Actions:u,oas3Selectors:d,operation:h}=this.props;const g=l(\"parameterRow\"),y=l(\"TryItOutButton\"),f=l(\"contentType\"),S=l(\"Callbacks\",!0),E=l(\"RequestBody\",!0),_=n&&a,v=i.isOAS3(),w=`${createHtmlReadyId(`${m[1]}${m[0]}_requests`)}_select`,b=h.get(\"requestBody\"),C=Object.values(r.reduce(((e,t)=>{if(k.Map.isMap(t)){const r=t.get(\"in\");e[r]??=[],e[r].push(t)}return e}),{})).reduce(((e,t)=>e.concat(t)),[]);return O().createElement(\"div\",{className:\"opblock-section\"},O().createElement(\"div\",{className:\"opblock-section-header\"},v?O().createElement(\"div\",{className:\"tab-header\"},O().createElement(\"div\",{onClick:()=>this.toggleTab(\"parameters\"),className:`tab-item ${this.state.parametersVisible&&\"active\"}`},O().createElement(\"h4\",{className:\"opblock-title\"},O().createElement(\"span\",null,\"Parameters\"))),h.get(\"callbacks\")?O().createElement(\"div\",{onClick:()=>this.toggleTab(\"callbacks\"),className:`tab-item ${this.state.callbackVisible&&\"active\"}`},O().createElement(\"h4\",{className:\"opblock-title\"},O().createElement(\"span\",null,\"Callbacks\"))):null):O().createElement(\"div\",{className:\"tab-header\"},O().createElement(\"h4\",{className:\"opblock-title\"},\"Parameters\")),a?O().createElement(y,{isOAS3:i.isOAS3(),hasUserEditedBody:d.hasUserEditedBody(...m),enabled:n,onCancelClick:this.props.onCancelClick,onTryoutClick:e,onResetClick:()=>t(m)}):null),this.state.parametersVisible?O().createElement(\"div\",{className:\"parameters-container\"},C.length?O().createElement(\"div\",{className:\"table-container\"},O().createElement(\"table\",{className:\"parameters\"},O().createElement(\"thead\",null,O().createElement(\"tr\",null,O().createElement(\"th\",{className:\"col_header parameters-col_name\"},\"Name\"),O().createElement(\"th\",{className:\"col_header parameters-col_description\"},\"Description\"))),O().createElement(\"tbody\",null,C.map(((e,t)=>O().createElement(g,{fn:o,specPath:s.push(t.toString()),getComponent:l,getConfigs:c,rawParam:e,param:i.parameterWithMetaByIdentity(m,e),key:`${e.get(\"in\")}.${e.get(\"name\")}`,onChange:this.onChange,onChangeConsumes:this.onChangeConsumesWrapper,specSelectors:i,specActions:p,oas3Actions:u,oas3Selectors:d,pathMethod:m,isExecute:_})))))):O().createElement(\"div\",{className:\"opblock-description-wrapper\"},O().createElement(\"p\",null,\"No parameters\"))):null,this.state.callbackVisible?O().createElement(\"div\",{className:\"callbacks-container opblock-description-wrapper\"},O().createElement(S,{callbacks:(0,k.Map)(h.get(\"callbacks\")),specPath:s.slice(0,-1).push(\"callbacks\")})):null,v&&b&&this.state.parametersVisible&&O().createElement(\"div\",{className:\"opblock-section opblock-section-request-body\"},O().createElement(\"div\",{className:\"opblock-section-header\"},O().createElement(\"h4\",{className:`opblock-title parameter__name ${b.get(\"required\")&&\"required\"}`},\"Request body\"),O().createElement(\"label\",{id:w},O().createElement(f,{value:d.requestContentType(...m),contentTypes:b.get(\"content\",(0,k.List)()).keySeq(),onChange:e=>{this.onChangeMediaType({value:e,pathMethod:m})},className:\"body-param-content-type\",ariaLabel:\"Request content type\",controlId:w}))),O().createElement(\"div\",{className:\"opblock-description-wrapper\"},O().createElement(E,{setRetainRequestBodyValueFlag:e=>u.setRetainRequestBodyValueFlag({value:e,pathMethod:m}),userHasEditedBody:d.hasUserEditedBody(...m),specPath:s.slice(0,-1).push(\"requestBody\"),requestBody:b,requestBodyValue:d.requestBodyValue(...m),requestBodyInclusionSetting:d.requestBodyInclusionSetting(...m),requestBodyErrors:d.requestBodyErrors(...m),isExecute:_,getConfigs:c,activeExamplesKey:d.activeExamplesMember(...m,\"requestBody\",\"requestBody\"),updateActiveExamplesKey:e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:\"requestBody\",contextName:\"requestBody\"})},onChange:(e,t)=>{if(t){const r=d.requestBodyValue(...m),a=k.Map.isMap(r)?r:(0,k.Map)();return u.setRequestBodyValue({pathMethod:m,value:a.setIn(t,e)})}u.setRequestBodyValue({value:e,pathMethod:m})},onChangeIncludeEmpty:(e,t)=>{u.setRequestBodyInclusion({pathMethod:m,value:t,name:e})},contentType:d.requestContentType(...m)}))))}}const parameter_extension=({xKey:e,xVal:t})=>O().createElement(\"div\",{className:\"parameter__extension\"},e,\": \",String(t)),an={onChange:()=>{},isIncludedOptions:{}};class ParameterIncludeEmpty extends x.Component{static defaultProps=an;componentDidMount(){const{isIncludedOptions:e,onChange:t}=this.props,{shouldDispatchInit:r,defaultValue:a}=e;r&&t(a)}onCheckboxChange=e=>{const{onChange:t}=this.props;t(e.target.checked)};render(){let{isIncluded:e,isDisabled:t}=this.props;return O().createElement(\"div\",null,O().createElement(\"label\",{htmlFor:\"include_empty_value\",className:pt()(\"parameter__empty_value_toggle\",{disabled:t})},O().createElement(\"input\",{id:\"include_empty_value\",type:\"checkbox\",disabled:t,checked:!t&&e,onChange:this.onCheckboxChange}),\"Send empty value\"))}}class ParameterRow extends x.Component{constructor(e,t){super(e,t),this.setDefaultValue()}UNSAFE_componentWillReceiveProps(e){let t,{specSelectors:r,pathMethod:a,rawParam:n}=e,s=r.isOAS3(),o=r.parameterWithMetaByIdentity(a,n)||new k.Map;if(o=o.isEmpty()?n:o,s){let{schema:e}=getParameterSchema(o,{isOAS3:s});t=e?e.get(\"enum\"):void 0}else t=o?o.get(\"enum\"):void 0;let l,c=o?o.get(\"value\"):void 0;void 0!==c?l=c:n.get(\"required\")&&t&&t.size&&(l=t.first()),void 0!==l&&l!==c&&this.onChangeWrapper(function numberToString(e){return\"number\"==typeof e?e.toString():e}(l)),this.setDefaultValue()}onChangeWrapper=(e,t=!1)=>{let r,{onChange:a,rawParam:n}=this.props;return r=\"\"===e||e&&0===e.size?null:e,a(n,r,t)};_onExampleSelect=e=>{this.props.oas3Actions.setActiveExamplesMember({name:e,pathMethod:this.props.pathMethod,contextType:\"parameters\",contextName:this.getParamKey()})};onChangeIncludeEmpty=e=>{let{specActions:t,param:r,pathMethod:a}=this.props;const n=r.get(\"name\"),s=r.get(\"in\");return t.updateEmptyParamInclusion(a,n,s,e)};setDefaultValue=()=>{let{specSelectors:e,pathMethod:t,rawParam:r,oas3Selectors:a,fn:n}=this.props;const s=e.parameterWithMetaByIdentity(t,r)||(0,k.Map)();let{schema:o}=getParameterSchema(s,{isOAS3:e.isOAS3()});const l=s.get(\"content\",(0,k.Map)()).keySeq().first(),c=o?n.getSampleSchema(o.toJS(),l,{includeWriteOnly:!0}):null;if(s&&void 0===s.get(\"value\")&&\"body\"!==s.get(\"in\")){let r;if(e.isSwagger2())r=void 0!==s.get(\"x-example\")?s.get(\"x-example\"):void 0!==s.getIn([\"schema\",\"example\"])?s.getIn([\"schema\",\"example\"]):o&&o.getIn([\"default\"]);else if(e.isOAS3()){o=this.composeJsonSchema(o);const e=a.activeExamplesMember(...t,\"parameters\",this.getParamKey());r=void 0!==s.getIn([\"examples\",e,\"value\"])?s.getIn([\"examples\",e,\"value\"]):void 0!==s.getIn([\"content\",l,\"example\"])?s.getIn([\"content\",l,\"example\"]):void 0!==s.get(\"example\")?s.get(\"example\"):void 0!==(o&&o.get(\"example\"))?o&&o.get(\"example\"):void 0!==(o&&o.get(\"default\"))?o&&o.get(\"default\"):s.get(\"default\")}void 0===r||k.List.isList(r)||(r=stringify(r));const i=n.jsonSchema202012.foldType(immutableToJS(o?.get(\"type\"))),p=n.jsonSchema202012.foldType(immutableToJS(o?.getIn([\"items\",\"type\"])));void 0!==r?this.onChangeWrapper(r):\"object\"===i&&c&&!s.get(\"examples\")?this.onChangeWrapper(k.List.isList(c)?c:stringify(c)):\"array\"===i&&\"object\"===p&&c&&!s.get(\"examples\")&&this.onChangeWrapper(k.List.isList(c)?c:(0,k.List)(JSON.parse(c)))}};getParamKey(){const{param:e}=this.props;return e?`${e.get(\"name\")}-${e.get(\"in\")}`:null}composeJsonSchema(e){const{fn:t}=this.props,r=e.get(\"oneOf\")?.get(0)?.toJS(),a=e.get(\"anyOf\")?.get(0)?.toJS();return(0,k.fromJS)(t.mergeJsonSchema(e.toJS(),r??a??{}))}render(){let{param:e,rawParam:t,getComponent:r,getConfigs:a,isExecute:n,fn:s,onChangeConsumes:o,specSelectors:l,pathMethod:c,specPath:i,oas3Selectors:p}=this.props,m=l.isOAS3();const{showExtensions:u,showCommonExtensions:d}=a();if(e||(e=t),!t)return null;const h=r(\"JsonSchemaForm\"),g=r(\"ParamBody\");let y=e.get(\"in\"),f=\"body\"!==y?null:O().createElement(g,{getComponent:r,getConfigs:a,fn:s,param:e,consumes:l.consumesOptionsFor(c),consumesValue:l.contentTypeValues(c).get(\"requestContentType\"),onChange:this.onChangeWrapper,onChangeConsumes:o,isExecute:n,specSelectors:l,pathMethod:c});const S=r(\"modelExample\"),E=r(\"Markdown\",!0),_=r(\"ParameterExt\"),v=r(\"ParameterIncludeEmpty\"),w=r(\"ExamplesSelectValueRetainer\"),b=r(\"Example\");let{schema:C}=getParameterSchema(e,{isOAS3:m}),x=l.parameterWithMetaByIdentity(c,t)||(0,k.Map)();m&&(C=this.composeJsonSchema(C));let N=C?C.get(\"format\"):null,A=\"formData\"===y,I=\"FormData\"in K,j=e.get(\"required\");const q=s.jsonSchema202012.getType(immutableToJS(C)),P=s.jsonSchema202012.foldType(immutableToJS(C?.get(\"type\"))),M=s.jsonSchema202012.foldType(immutableToJS(C?.getIn([\"items\",\"type\"]))),T=!f&&\"object\"===P,R=!f&&\"object\"===M;let J,$,V,L,D=x?x.get(\"value\"):\"\",U=d?getCommonExtensions(C):null,z=u?getExtensions(e):null,B=!1;void 0!==e&&C&&(J=C.get(\"items\")),void 0!==J?($=J.get(\"enum\"),V=J.get(\"default\")):C&&($=C.get(\"enum\")),$&&$.size&&$.size>0&&(B=!0),void 0!==e&&(C&&(V=C.get(\"default\")),void 0===V&&(V=e.get(\"default\")),L=e.get(\"example\"),void 0===L&&(L=e.get(\"x-example\")));const F=f?null:O().createElement(h,{fn:s,getComponent:r,value:D,required:j,disabled:!n,description:e.get(\"name\"),onChange:this.onChangeWrapper,errors:x.get(\"errors\"),schema:C});return O().createElement(\"tr\",{\"data-param-name\":e.get(\"name\"),\"data-param-in\":e.get(\"in\")},O().createElement(\"td\",{className:\"parameters-col_name\"},O().createElement(\"div\",{className:j?\"parameter__name required\":\"parameter__name\"},e.get(\"name\"),j?O().createElement(\"span\",null,\" *\"):null),O().createElement(\"div\",{className:\"parameter__type\"},q,N&&O().createElement(\"span\",{className:\"prop-format\"},\"($\",N,\")\")),O().createElement(\"div\",{className:\"parameter__deprecated\"},m&&e.get(\"deprecated\")?\"deprecated\":null),O().createElement(\"div\",{className:\"parameter__in\"},\"(\",e.get(\"in\"),\")\")),O().createElement(\"td\",{className:\"parameters-col_description\"},e.get(\"description\")?O().createElement(E,{source:e.get(\"description\")}):null,!f&&n||!B?null:O().createElement(E,{className:\"parameter__enum\",source:\"<i>Available values</i> : \"+$.map((function(e){return e})).toArray().map(String).join(\", \")}),!f&&n||void 0===V?null:O().createElement(E,{className:\"parameter__default\",source:\"<i>Default value</i> : \"+V}),!f&&n||void 0===L?null:O().createElement(E,{source:\"<i>Example</i> : \"+L}),A&&!I&&O().createElement(\"div\",null,\"Error: your browser does not support FormData\"),m&&e.get(\"examples\")?O().createElement(\"section\",{className:\"parameter-controls\"},O().createElement(w,{examples:e.get(\"examples\"),onSelect:this._onExampleSelect,updateValue:this.onChangeWrapper,getComponent:r,defaultToFirstExample:!0,currentKey:p.activeExamplesMember(...c,\"parameters\",this.getParamKey()),currentUserInputValue:D})):null,T||R?O().createElement(S,{getComponent:r,specPath:i.push(\"schema\"),getConfigs:a,isExecute:n,specSelectors:l,schema:C,example:F}):F,f&&C?O().createElement(S,{getComponent:r,specPath:i.push(\"schema\"),getConfigs:a,isExecute:n,specSelectors:l,schema:C,example:f,includeWriteOnly:!0}):null,!f&&n&&e.get(\"allowEmptyValue\")?O().createElement(v,{onChange:this.onChangeIncludeEmpty,isIncluded:l.parameterInclusionSettingFor(c,e.get(\"name\"),e.get(\"in\")),isDisabled:!isEmptyValue(D)}):null,m&&e.get(\"examples\")?O().createElement(b,{example:e.getIn([\"examples\",p.activeExamplesMember(...c,\"parameters\",this.getParamKey())]),getComponent:r,getConfigs:a}):null,d&&U.size?U.entrySeq().map((([e,t])=>O().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null,u&&z.size?z.entrySeq().map((([e,t])=>O().createElement(_,{key:`${e}-${t}`,xKey:e,xVal:t}))):null))}}class Execute extends x.Component{handleValidateParameters=()=>{let{specSelectors:e,specActions:t,path:r,method:a}=this.props;return t.validateParams([r,a]),e.validateBeforeExecute([r,a])};handleValidateRequestBody=()=>{let{path:e,method:t,specSelectors:r,oas3Selectors:a,oas3Actions:n}=this.props,s={missingBodyValue:!1,missingRequiredKeys:[]};n.clearRequestBodyValidateError({path:e,method:t});let o=r.getOAS3RequiredRequestBodyContentType([e,t]),l=a.requestBodyValue(e,t),c=a.validateBeforeExecute([e,t]),i=a.requestContentType(e,t);if(!c)return s.missingBodyValue=!0,n.setRequestBodyValidateError({path:e,method:t,validationErrors:s}),!1;if(!o)return!0;let p=a.validateShallowRequired({oas3RequiredRequestBodyContentType:o,oas3RequestContentType:i,oas3RequestBodyValue:l});return!p||p.length<1||(p.forEach((e=>{s.missingRequiredKeys.push(e)})),n.setRequestBodyValidateError({path:e,method:t,validationErrors:s}),!1)};handleValidationResultPass=()=>{let{specActions:e,operation:t,path:r,method:a}=this.props;this.props.onExecute&&this.props.onExecute(),e.execute({operation:t,path:r,method:a})};handleValidationResultFail=()=>{let{specActions:e,path:t,method:r}=this.props;e.clearValidateParams([t,r]),setTimeout((()=>{e.validateParams([t,r])}),40)};handleValidationResult=e=>{e?this.handleValidationResultPass():this.handleValidationResultFail()};onClick=()=>{let e=this.handleValidateParameters(),t=this.handleValidateRequestBody(),r=e&&t;this.handleValidationResult(r)};onChangeProducesWrapper=e=>this.props.specActions.changeProducesValue([this.props.path,this.props.method],e);render(){const{disabled:e}=this.props;return O().createElement(\"button\",{className:\"btn execute opblock-control__btn\",onClick:this.onClick,disabled:e},\"Execute\")}}class headers_Headers extends O().Component{render(){let{headers:e,getComponent:t}=this.props;const r=t(\"Property\"),a=t(\"Markdown\",!0);return e&&e.size?O().createElement(\"div\",{className:\"headers-wrapper\"},O().createElement(\"h4\",{className:\"headers__title\"},\"Headers:\"),O().createElement(\"table\",{className:\"headers\"},O().createElement(\"thead\",null,O().createElement(\"tr\",{className:\"header-row\"},O().createElement(\"th\",{className:\"header-col\"},\"Name\"),O().createElement(\"th\",{className:\"header-col\"},\"Description\"),O().createElement(\"th\",{className:\"header-col\"},\"Type\"))),O().createElement(\"tbody\",null,e.entrySeq().map((([e,t])=>{if(!A().Map.isMap(t))return null;const n=t.get(\"description\"),s=t.getIn([\"schema\"])?t.getIn([\"schema\",\"type\"]):t.getIn([\"type\"]),o=t.getIn([\"schema\",\"example\"]);return O().createElement(\"tr\",{key:e},O().createElement(\"td\",{className:\"header-col\"},e),O().createElement(\"td\",{className:\"header-col\"},n?O().createElement(a,{source:n}):null),O().createElement(\"td\",{className:\"header-col\"},s,\" \",o?O().createElement(r,{propKey:\"Example\",propVal:o,propClass:\"header-example\"}):null))})).toArray()))):null}}class Errors extends O().Component{render(){let{editorActions:e,errSelectors:t,layoutSelectors:r,layoutActions:a,getComponent:n}=this.props;const s=n(\"Collapse\");if(e&&e.jumpToLine)var o=e.jumpToLine;let l=t.allErrors().filter((e=>\"thrown\"===e.get(\"type\")||\"error\"===e.get(\"level\")));if(!l||l.count()<1)return null;let c=r.isShown([\"errorPane\"],!0),i=l.sortBy((e=>e.get(\"line\")));return O().createElement(\"pre\",{className:\"errors-wrapper\"},O().createElement(\"hgroup\",{className:\"error\"},O().createElement(\"h4\",{className:\"errors__title\"},\"Errors\"),O().createElement(\"button\",{className:\"btn errors__clear-btn\",onClick:()=>a.show([\"errorPane\"],!c)},c?\"Hide\":\"Show\")),O().createElement(s,{isOpened:c,animated:!0},O().createElement(\"div\",{className:\"errors\"},i.map(((e,t)=>{let r=e.get(\"type\");return\"thrown\"===r||\"auth\"===r?O().createElement(ThrownErrorItem,{key:t,error:e.get(\"error\")||e,jumpToLine:o}):\"spec\"===r?O().createElement(SpecErrorItem,{key:t,error:e,jumpToLine:o}):void 0})))))}}const ThrownErrorItem=({error:e,jumpToLine:t})=>{if(!e)return null;let r=e.get(\"line\");return O().createElement(\"div\",{className:\"error-wrapper\"},e?O().createElement(\"div\",null,O().createElement(\"h4\",null,e.get(\"source\")&&e.get(\"level\")?toTitleCase(e.get(\"source\"))+\" \"+e.get(\"level\"):\"\",e.get(\"path\")?O().createElement(\"small\",null,\" at \",e.get(\"path\")):null),O().createElement(\"span\",{className:\"message thrown\"},e.get(\"message\")),O().createElement(\"div\",{className:\"error-line\"},r&&t?O().createElement(\"a\",{onClick:t.bind(null,r)},\"Jump to line \",r):null)):null)},SpecErrorItem=({error:e,jumpToLine:t=null})=>{let r=null;return e.get(\"path\")?r=k.List.isList(e.get(\"path\"))?O().createElement(\"small\",null,\"at \",e.get(\"path\").join(\".\")):O().createElement(\"small\",null,\"at \",e.get(\"path\")):e.get(\"line\")&&!t&&(r=O().createElement(\"small\",null,\"on line \",e.get(\"line\"))),O().createElement(\"div\",{className:\"error-wrapper\"},e?O().createElement(\"div\",null,O().createElement(\"h4\",null,toTitleCase(e.get(\"source\"))+\" \"+e.get(\"level\"),\" \",r),O().createElement(\"span\",{className:\"message\"},e.get(\"message\")),O().createElement(\"div\",{className:\"error-line\"},t?O().createElement(\"a\",{onClick:t.bind(null,e.get(\"line\"))},\"Jump to line \",e.get(\"line\")):null)):null)};function toTitleCase(e){return(e||\"\").split(\" \").map((e=>e[0].toUpperCase()+e.slice(1))).join(\" \")}const content_type_noop=()=>{};class ContentType extends O().Component{static defaultProps={onChange:content_type_noop,value:null,contentTypes:(0,k.fromJS)([\"application/json\"])};componentDidMount(){this.props.contentTypes&&this.props.onChange(this.props.contentTypes.first())}UNSAFE_componentWillReceiveProps(e){e.contentTypes&&e.contentTypes.size&&(e.contentTypes.includes(e.value)||e.onChange(e.contentTypes.first()))}onChangeWrapper=e=>this.props.onChange(e.target.value);render(){let{ariaControls:e,ariaLabel:t,className:r,contentTypes:a,controlId:n,value:s}=this.props;return a&&a.size?O().createElement(\"div\",{className:\"content-type-wrapper \"+(r||\"\")},O().createElement(\"select\",{\"aria-controls\":e,\"aria-label\":t,className:\"content-type\",id:n,onChange:this.onChangeWrapper,value:s||\"\"},a.map((e=>O().createElement(\"option\",{key:e,value:e},e))).toArray())):null}}function xclass(...e){return e.filter((e=>!!e)).join(\" \").trim()}class Container extends O().Component{render(){let{fullscreen:e,full:t,...r}=this.props;if(e)return O().createElement(\"section\",r);let a=\"swagger-container\"+(t?\"-full\":\"\");return O().createElement(\"section\",Qe()({},r,{className:xclass(r.className,a)}))}}const nn={mobile:\"\",tablet:\"-tablet\",desktop:\"-desktop\",large:\"-hd\"};class Col extends O().Component{render(){const{hide:e,keepContents:t,mobile:r,tablet:a,desktop:n,large:s,...o}=this.props;if(e&&!t)return O().createElement(\"span\",null);let l=[];for(let e in nn){if(!Object.prototype.hasOwnProperty.call(nn,e))continue;let t=nn[e];if(e in this.props){let r=this.props[e];if(r<1){l.push(\"none\"+t);continue}l.push(\"block\"+t),l.push(\"col-\"+r+t)}}e&&l.push(\"hidden\");let c=xclass(o.className,...l);return O().createElement(\"section\",Qe()({},o,{className:c}))}}class Row extends O().Component{render(){return O().createElement(\"div\",Qe()({},this.props,{className:xclass(this.props.className,\"wrapper\")}))}}class Button extends O().Component{static defaultProps={className:\"\"};render(){return O().createElement(\"button\",Qe()({},this.props,{className:xclass(this.props.className,\"button\")}))}}const TextArea=e=>O().createElement(\"textarea\",e),Input=e=>O().createElement(\"input\",e);class Select extends O().Component{static defaultProps={multiple:!1,allowEmptyValue:!0};constructor(e,t){let r;super(e,t),r=e.value?e.value:e.multiple?[\"\"]:\"\",this.state={value:r}}onChange=e=>{let t,{onChange:r,multiple:a}=this.props,n=[].slice.call(e.target.options);t=a?n.filter((function(e){return e.selected})).map((function(e){return e.value})):e.target.value,this.setState({value:t}),r&&r(t)};UNSAFE_componentWillReceiveProps(e){e.value!==this.props.value&&this.setState({value:e.value})}render(){let{allowedValues:e,multiple:t,allowEmptyValue:r,disabled:a}=this.props,n=this.state.value?.toJS?.()||this.state.value;return O().createElement(\"select\",{className:this.props.className,multiple:t,value:n,onChange:this.onChange,disabled:a},r?O().createElement(\"option\",{value:\"\"},\"--\"):null,e.map((function(e,t){return O().createElement(\"option\",{key:t,value:String(e)},String(e))})))}}class Link extends O().Component{render(){return O().createElement(\"a\",Qe()({},this.props,{rel:\"noopener noreferrer\",className:xclass(this.props.className,\"link\")}))}}const NoMargin=({children:e})=>O().createElement(\"div\",{className:\"no-margin\"},\" \",e,\" \");class Collapse extends O().Component{static defaultProps={isOpened:!1,animated:!1};renderNotAnimated(){return this.props.isOpened?O().createElement(NoMargin,null,this.props.children):O().createElement(\"noscript\",null)}render(){let{animated:e,isOpened:t,children:r}=this.props;return e?(r=t?r:null,O().createElement(NoMargin,null,r)):this.renderNotAnimated()}}class Overview extends O().Component{constructor(...e){super(...e),this.setTagShown=this._setTagShown.bind(this)}_setTagShown(e,t){this.props.layoutActions.show(e,t)}showOp(e,t){let{layoutActions:r}=this.props;r.show(e,t)}render(){let{specSelectors:e,layoutSelectors:t,layoutActions:r,getComponent:a}=this.props,n=e.taggedOperations();const s=a(\"Collapse\");return O().createElement(\"div\",null,O().createElement(\"h4\",{className:\"overview-title\"},\"Overview\"),n.map(((e,a)=>{let n=e.get(\"operations\"),o=[\"overview-tags\",a],l=t.isShown(o,!0);return O().createElement(\"div\",{key:\"overview-\"+a},O().createElement(\"h4\",{onClick:()=>r.show(o,!l),className:\"link overview-tag\"},\" \",l?\"-\":\"+\",a),O().createElement(s,{isOpened:l,animated:!0},n.map((e=>{let{path:a,method:n,id:s}=e.toObject(),o=\"operations\",l=s,c=t.isShown([o,l]);return O().createElement(OperationLink,{key:s,path:a,method:n,id:a+\"-\"+n,shown:c,showOpId:l,showOpIdPrefix:o,href:`#operation-${l}`,onClick:r.show})})).toArray()))})).toArray(),n.size<1&&O().createElement(\"h3\",null,\" No operations defined in spec! \"))}}class OperationLink extends O().Component{constructor(e){super(e),this.onClick=this._onClick.bind(this)}_onClick(){let{showOpId:e,showOpIdPrefix:t,onClick:r,shown:a}=this.props;r([t,e],!a)}render(){let{id:e,method:t,shown:r,href:a}=this.props;return O().createElement(Link,{href:a,onClick:this.onClick,className:\"block opblock-link \"+(r?\"shown\":\"\")},O().createElement(\"div\",null,O().createElement(\"small\",{className:`bold-label-${t}`},t.toUpperCase()),O().createElement(\"span\",{className:\"bold-label\"},e)))}}class InitializedInput extends O().Component{componentDidMount(){this.props.initialValue&&(this.inputRef.value=this.props.initialValue)}render(){const{value:e,defaultValue:t,initialValue:r,...a}=this.props;return O().createElement(\"input\",Qe()({},a,{ref:e=>this.inputRef=e}))}}class InfoBasePath extends O().Component{render(){const{host:e,basePath:t}=this.props;return O().createElement(\"pre\",{className:\"base-url\"},\"[ Base URL: \",e,t,\" ]\")}}class InfoUrl extends O().PureComponent{render(){const{url:e,getComponent:t}=this.props,r=t(\"Link\");return O().createElement(r,{target:\"_blank\",href:sanitizeUrl(e)},O().createElement(\"span\",{className:\"url\"},\" \",e))}}class Info extends O().Component{render(){const{info:e,url:t,host:r,basePath:a,getComponent:n,externalDocs:s,selectedServer:o,url:l}=this.props,c=e.get(\"version\"),i=e.get(\"description\"),p=e.get(\"title\"),m=safeBuildUrl(e.get(\"termsOfService\"),l,{selectedServer:o}),u=e.get(\"contact\"),d=e.get(\"license\"),h=safeBuildUrl(s&&s.get(\"url\"),l,{selectedServer:o}),g=s&&s.get(\"description\"),y=n(\"Markdown\",!0),f=n(\"Link\"),S=n(\"VersionStamp\"),E=n(\"OpenAPIVersion\"),_=n(\"InfoUrl\"),v=n(\"InfoBasePath\"),w=n(\"License\"),b=n(\"Contact\");return O().createElement(\"div\",{className:\"info\"},O().createElement(\"hgroup\",{className:\"main\"},O().createElement(\"h2\",{className:\"title\"},p,O().createElement(\"span\",null,c&&O().createElement(S,{version:c}),O().createElement(E,{oasVersion:\"2.0\"}))),r||a?O().createElement(v,{host:r,basePath:a}):null,t&&O().createElement(_,{getComponent:n,url:t})),O().createElement(\"div\",{className:\"description\"},O().createElement(y,{source:i})),m&&O().createElement(\"div\",{className:\"info__tos\"},O().createElement(f,{target:\"_blank\",href:sanitizeUrl(m)},\"Terms of service\")),u?.size>0&&O().createElement(b,{getComponent:n,data:u,selectedServer:o,url:t}),d?.size>0&&O().createElement(w,{getComponent:n,license:d,selectedServer:o,url:t}),h?O().createElement(f,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(h)},g||h):null)}}const sn=Info;class InfoContainer extends O().Component{render(){const{specSelectors:e,getComponent:t,oas3Selectors:r}=this.props,a=e.info(),n=e.url(),s=e.basePath(),o=e.host(),l=e.externalDocs(),c=r.selectedServer(),i=t(\"info\");return O().createElement(\"div\",null,a&&a.count()?O().createElement(i,{info:a,url:n,host:o,basePath:s,externalDocs:l,getComponent:t,selectedServer:c}):null)}}class Contact extends O().Component{render(){const{data:e,getComponent:t,selectedServer:r,url:a}=this.props,n=e.get(\"name\",\"the developer\"),s=safeBuildUrl(e.get(\"url\"),a,{selectedServer:r}),o=e.get(\"email\"),l=t(\"Link\");return O().createElement(\"div\",{className:\"info__contact\"},s&&O().createElement(\"div\",null,O().createElement(l,{href:sanitizeUrl(s),target:\"_blank\"},n,\" - Website\")),o&&O().createElement(l,{href:sanitizeUrl(`mailto:${o}`)},s?`Send email to ${n}`:`Contact ${n}`))}}const on=Contact;class License extends O().Component{render(){const{license:e,getComponent:t,selectedServer:r,url:a}=this.props,n=e.get(\"name\",\"License\"),s=safeBuildUrl(e.get(\"url\"),a,{selectedServer:r}),o=t(\"Link\");return O().createElement(\"div\",{className:\"info__license\"},s?O().createElement(\"div\",{className:\"info__license__url\"},O().createElement(o,{target:\"_blank\",href:sanitizeUrl(s)},n)):O().createElement(\"span\",null,n))}}const ln=License;class JumpToPath extends O().Component{render(){return null}}class CopyToClipboardBtn extends O().Component{render(){let{getComponent:e}=this.props;const t=e(\"CopyIcon\");return O().createElement(\"div\",{className:\"view-line-link copy-to-clipboard\",title:\"Copy to clipboard\"},O().createElement(mt.CopyToClipboard,{text:this.props.textToCopy},O().createElement(t,null)))}}class Footer extends O().Component{render(){return O().createElement(\"div\",{className:\"footer\"})}}class FilterContainer extends O().Component{onFilterChange=e=>{const{target:{value:t}}=e;this.props.layoutActions.updateFilter(t)};render(){const{specSelectors:e,layoutSelectors:t,getComponent:r}=this.props,a=r(\"Col\"),n=\"loading\"===e.loadingStatus(),s=\"failed\"===e.loadingStatus(),o=t.currentFilter(),l=[\"operation-filter-input\"];return s&&l.push(\"failed\"),n&&l.push(\"loading\"),O().createElement(\"div\",null,!1===o?null:O().createElement(\"div\",{className:\"filter-container\"},O().createElement(a,{className:\"filter wrapper\",mobile:12},O().createElement(\"input\",{className:l.join(\" \"),placeholder:\"Filter by tag\",type:\"text\",onChange:this.onFilterChange,value:\"string\"==typeof o?o:\"\",disabled:n}))))}}const cn=Function.prototype;class ParamBody extends x.PureComponent{static defaultProp={consumes:(0,k.fromJS)([\"application/json\"]),param:(0,k.fromJS)({}),onChange:cn,onChangeConsumes:cn};constructor(e,t){super(e,t),this.state={isEditBox:!1,value:\"\"}}componentDidMount(){this.updateValues.call(this,this.props)}UNSAFE_componentWillReceiveProps(e){this.updateValues.call(this,e)}updateValues=e=>{let{param:t,isExecute:r,consumesValue:a=\"\"}=e,n=/xml/i.test(a),s=/json/i.test(a),o=n?t.get(\"value_xml\"):t.get(\"value\");if(void 0!==o){let e=!o&&s?\"{}\":o;this.setState({value:e}),this.onChange(e,{isXml:n,isEditBox:r})}else n?this.onChange(this.sample(\"xml\"),{isXml:n,isEditBox:r}):this.onChange(this.sample(),{isEditBox:r})};sample=e=>{let{param:t,fn:r}=this.props,a=r.inferSchema(t.toJS());return r.getSampleSchema(a,e,{includeWriteOnly:!0})};onChange=(e,{isEditBox:t,isXml:r})=>{this.setState({value:e,isEditBox:t}),this._onChange(e,r)};_onChange=(e,t)=>{(this.props.onChange||cn)(e,t)};handleOnChange=e=>{const{consumesValue:t}=this.props,r=/xml/i.test(t),a=e.target.value;this.onChange(a,{isXml:r,isEditBox:this.state.isEditBox})};toggleIsEditBox=()=>this.setState((e=>({isEditBox:!e.isEditBox})));render(){let{onChangeConsumes:e,param:t,isExecute:r,specSelectors:a,pathMethod:n,getComponent:s}=this.props;const o=s(\"Button\"),l=s(\"TextArea\"),c=s(\"HighlightCode\",!0),i=s(\"contentType\");let p=(a?a.parameterWithMetaByIdentity(n,t):t).get(\"errors\",(0,k.List)()),m=a.contentTypeValues(n).get(\"requestContentType\"),u=this.props.consumes&&this.props.consumes.size?this.props.consumes:ParamBody.defaultProp.consumes,{value:d,isEditBox:h}=this.state,g=null;getKnownSyntaxHighlighterLanguage(d)&&(g=\"json\");const y=`${createHtmlReadyId(`${n[1]}${n[0]}_parameters`)}_select`;return O().createElement(\"div\",{className:\"body-param\",\"data-param-name\":t.get(\"name\"),\"data-param-in\":t.get(\"in\")},h&&r?O().createElement(l,{className:\"body-param__text\"+(p.count()?\" invalid\":\"\"),value:d,onChange:this.handleOnChange}):d&&O().createElement(c,{className:\"body-param__example\",language:g},d),O().createElement(\"div\",{className:\"body-param-options\"},r?O().createElement(\"div\",{className:\"body-param-edit\"},O().createElement(o,{className:h?\"btn cancel body-param__example-edit\":\"btn edit body-param__example-edit\",onClick:this.toggleIsEditBox},h?\"Cancel\":\"Edit\")):null,O().createElement(\"label\",{htmlFor:y},O().createElement(\"span\",null,\"Parameter content type\"),O().createElement(i,{value:m,contentTypes:u,onChange:e,className:\"body-param-content-type\",ariaLabel:\"Parameter content type\",controlId:y}))))}}class Curl extends O().Component{render(){const{request:e,getComponent:t}=this.props,r=requestSnippetGenerator_curl_bash(e),a=t(\"SyntaxHighlighter\",!0);return O().createElement(\"div\",{className:\"curl-command\"},O().createElement(\"h4\",null,\"Curl\"),O().createElement(\"div\",{className:\"copy-to-clipboard\"},O().createElement(mt.CopyToClipboard,{text:r},O().createElement(\"button\",null))),O().createElement(\"div\",null,O().createElement(a,{language:\"bash\",className:\"curl microlight\",renderPlainText:({children:e,PlainTextViewer:t})=>O().createElement(t,{className:\"curl\"},e)},r)))}}const property=({propKey:e,propVal:t,propClass:r})=>O().createElement(\"span\",{className:r},O().createElement(\"br\",null),e,\": \",String(t));class TryItOutButton extends O().Component{static defaultProps={onTryoutClick:Function.prototype,onCancelClick:Function.prototype,onResetClick:Function.prototype,enabled:!1,hasUserEditedBody:!1,isOAS3:!1};render(){const{onTryoutClick:e,onCancelClick:t,onResetClick:r,enabled:a,hasUserEditedBody:n,isOAS3:s}=this.props,o=s&&n;return O().createElement(\"div\",{className:o?\"try-out btn-group\":\"try-out\"},a?O().createElement(\"button\",{className:\"btn try-out__btn cancel\",onClick:t},\"Cancel\"):O().createElement(\"button\",{className:\"btn try-out__btn\",onClick:e},\"Try it out \"),o&&O().createElement(\"button\",{className:\"btn try-out__btn reset\",onClick:r},\"Reset\"))}}class VersionPragmaFilter extends O().PureComponent{static defaultProps={alsoShow:null,children:null,bypass:!1};render(){const{bypass:e,isSwagger2:t,isOAS3:r,alsoShow:a}=this.props;return e?O().createElement(\"div\",null,this.props.children):t&&r?O().createElement(\"div\",{className:\"version-pragma\"},a,O().createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},O().createElement(\"div\",null,O().createElement(\"h3\",null,\"Unable to render this definition\"),O().createElement(\"p\",null,O().createElement(\"code\",null,\"swagger\"),\" and \",O().createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),O().createElement(\"p\",null,\"Supported version fields are \",O().createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",O().createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",O().createElement(\"code\",null,\"openapi: 3.0.4\"),\").\")))):t||r?O().createElement(\"div\",null,this.props.children):O().createElement(\"div\",{className:\"version-pragma\"},a,O().createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},O().createElement(\"div\",null,O().createElement(\"h3\",null,\"Unable to render this definition\"),O().createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),O().createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",O().createElement(\"code\",null,\"swagger: \",'\"2.0\"'),\" and those that match \",O().createElement(\"code\",null,\"openapi: 3.0.n\"),\" (for example, \",O().createElement(\"code\",null,\"openapi: 3.0.4\"),\").\"))))}}const version_stamp=({version:e})=>O().createElement(\"small\",null,O().createElement(\"pre\",{className:\"version\"},\" \",e,\" \")),openapi_version=({oasVersion:e})=>O().createElement(\"small\",{className:\"version-stamp\"},O().createElement(\"pre\",{className:\"version\"},\"OAS \",e)),deep_link=({enabled:e,path:t,text:r})=>O().createElement(\"a\",{className:\"nostyle\",onClick:e?e=>e.preventDefault():null,href:e?`#/${t}`:null},O().createElement(\"span\",null,r)),svg_assets=()=>O().createElement(\"div\",null,O().createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",xmlnsXlink:\"http://www.w3.org/1999/xlink\",className:\"svg-assets\"},O().createElement(\"defs\",null,O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"unlocked\"},O().createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"locked\"},O().createElement(\"path\",{d:\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"close\"},O().createElement(\"path\",{d:\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow\"},O().createElement(\"path\",{d:\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-down\"},O().createElement(\"path\",{d:\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 20 20\",id:\"large-arrow-up\"},O().createElement(\"path\",{d:\"M 17.418 14.908 C 17.69 15.176 18.127 15.176 18.397 14.908 C 18.667 14.64 18.668 14.207 18.397 13.939 L 10.489 6.109 C 10.219 5.841 9.782 5.841 9.51 6.109 L 1.602 13.939 C 1.332 14.207 1.332 14.64 1.602 14.908 C 1.873 15.176 2.311 15.176 2.581 14.908 L 10 7.767 L 17.418 14.908 Z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"jump-to\"},O().createElement(\"path\",{d:\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 24 24\",id:\"expand\"},O().createElement(\"path\",{d:\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\"})),O().createElement(\"symbol\",{viewBox:\"0 0 15 16\",id:\"copy\"},O().createElement(\"g\",{transform:\"translate(2, -1)\"},O().createElement(\"path\",{fill:\"#ffffff\",fillRule:\"evenodd\",d:\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"})))))),pn=require(\"remarkable\"),mn=require(\"remarkable/linkify\"),un=require(\"dompurify\");var dn=__webpack_require__.n(un);dn().addHook&&dn().addHook(\"beforeSanitizeElements\",(function(e){return e.href&&e.setAttribute(\"rel\",\"noopener noreferrer\"),e}));const hn=function Markdown({source:e,className:t=\"\",getConfigs:r=()=>({useUnsafeMarkdown:!1})}){if(\"string\"!=typeof e)return null;const a=new pn.Remarkable({html:!0,typographer:!0,breaks:!0,linkTarget:\"_blank\"}).use(mn.linkify);a.core.ruler.disable([\"replacements\",\"smartquotes\"]);const{useUnsafeMarkdown:n}=r(),s=a.render(e),o=sanitizer(s,{useUnsafeMarkdown:n});return e&&s&&o?O().createElement(\"div\",{className:pt()(t,\"markdown\"),dangerouslySetInnerHTML:{__html:o}}):null};function sanitizer(e,{useUnsafeMarkdown:t=!1}={}){const r=t,a=t?[]:[\"style\",\"class\"];return t&&!sanitizer.hasWarnedAboutDeprecation&&(console.warn(\"useUnsafeMarkdown display configuration parameter is deprecated since >3.26.0 and will be removed in v4.0.0.\"),sanitizer.hasWarnedAboutDeprecation=!0),dn().sanitize(e,{ADD_ATTR:[\"target\"],FORBID_TAGS:[\"style\",\"form\"],ALLOW_DATA_ATTR:r,FORBID_ATTR:a})}sanitizer.hasWarnedAboutDeprecation=!1;class BaseLayout extends O().Component{render(){const{errSelectors:e,specSelectors:t,getComponent:r}=this.props,a=r(\"SvgAssets\"),n=r(\"InfoContainer\",!0),s=r(\"VersionPragmaFilter\"),o=r(\"operations\",!0),l=r(\"Models\",!0),c=r(\"Webhooks\",!0),i=r(\"Row\"),p=r(\"Col\"),m=r(\"errors\",!0),u=r(\"ServersContainer\",!0),d=r(\"SchemesContainer\",!0),h=r(\"AuthorizeBtnContainer\",!0),g=r(\"FilterContainer\",!0),y=t.isSwagger2(),f=t.isOAS3(),S=t.isOAS31(),E=!t.specStr(),_=t.loadingStatus();let v=null;if(\"loading\"===_&&(v=O().createElement(\"div\",{className:\"info\"},O().createElement(\"div\",{className:\"loading-container\"},O().createElement(\"div\",{className:\"loading\"})))),\"failed\"===_&&(v=O().createElement(\"div\",{className:\"info\"},O().createElement(\"div\",{className:\"loading-container\"},O().createElement(\"h4\",{className:\"title\"},\"Failed to load API definition.\"),O().createElement(m,null)))),\"failedConfig\"===_){const t=e.lastError(),r=t?t.get(\"message\"):\"\";v=O().createElement(\"div\",{className:\"info failed-config\"},O().createElement(\"div\",{className:\"loading-container\"},O().createElement(\"h4\",{className:\"title\"},\"Failed to load remote configuration.\"),O().createElement(\"p\",null,r)))}if(!v&&E&&(v=O().createElement(\"h4\",null,\"No API definition provided.\")),v)return O().createElement(\"div\",{className:\"swagger-ui\"},O().createElement(\"div\",{className:\"loading-container\"},v));const w=t.servers(),b=t.schemes(),C=w&&w.size,x=b&&b.size,N=!!t.securityDefinitions();return O().createElement(\"div\",{className:\"swagger-ui\"},O().createElement(a,null),O().createElement(s,{isSwagger2:y,isOAS3:f,alsoShow:O().createElement(m,null)},O().createElement(m,null),O().createElement(i,{className:\"information-container\"},O().createElement(p,{mobile:12},O().createElement(n,null))),C||x||N?O().createElement(\"div\",{className:\"scheme-container\"},O().createElement(p,{className:\"schemes wrapper\",mobile:12},C||x?O().createElement(\"div\",{className:\"schemes-server-container\"},C?O().createElement(u,null):null,x?O().createElement(d,null):null):null,N?O().createElement(h,null):null)):null,O().createElement(g,null),O().createElement(i,null,O().createElement(p,{mobile:12,desktop:12},O().createElement(o,null))),S&&O().createElement(i,{className:\"webhooks-container\"},O().createElement(p,{mobile:12,desktop:12},O().createElement(c,null))),O().createElement(i,null,O().createElement(p,{mobile:12,desktop:12},O().createElement(l,null)))))}}const core_components=()=>({components:{App:Ga,authorizationPopup:AuthorizationPopup,authorizeBtn:AuthorizeBtn,AuthorizeBtnContainer,authorizeOperationBtn:AuthorizeOperationBtn,auths:Auths,AuthItem:auth_item_Auths,authError:AuthError,oauth2:Oauth2,apiKeyAuth:ApiKeyAuth,basicAuth:BasicAuth,clear:Clear,liveResponse:LiveResponse,InitializedInput,info:sn,InfoContainer,InfoUrl,InfoBasePath,Contact:on,License:ln,JumpToPath,CopyToClipboardBtn,onlineValidatorBadge:OnlineValidatorBadge,operations:Operations,operation:Operation,OperationSummary,OperationSummaryMethod,OperationSummaryPath,responses:Responses,response:Response,ResponseExtension:response_extension,responseBody:ResponseBody,parameters:Parameters,parameterRow:ParameterRow,execute:Execute,headers:headers_Headers,errors:Errors,contentType:ContentType,overview:Overview,footer:Footer,FilterContainer,ParamBody,curl:Curl,Property:property,TryItOutButton,Markdown:hn,BaseLayout,VersionPragmaFilter,VersionStamp:version_stamp,OperationExt:operation_extensions,OperationExtRow:operation_extension_row,ParameterExt:parameter_extension,ParameterIncludeEmpty,OperationTag,OperationContainer,OpenAPIVersion:openapi_version,DeepLink:deep_link,SvgAssets:svg_assets,Example,ExamplesSelect,ExamplesSelectValueRetainer}}),form_components=()=>({components:{...E}}),base=()=>[configsPlugin,util,logs,view,view_legacy,plugins_spec,err,icons,plugins_layout,json_schema_5,json_schema_5_samples,core_components,form_components,swagger_client,auth,downloadUrlPlugin,deep_linking,filter,on_complete,plugins_request_snippets,syntax_highlighting,versions,safe_render()],gn=(0,k.Map)();function onlyOAS3(e){return(t,r)=>(...a)=>{if(r.getSystem().specSelectors.isOAS3()){const t=e(...a);return\"function\"==typeof t?t(r):t}return t(...a)}}const yn=onlyOAS3(Vt()(null)),fn=onlyOAS3(((e,t)=>e=>e.getSystem().specSelectors.findSchema(t))),Sn=onlyOAS3((()=>e=>{const t=e.getSystem().specSelectors.specJson().getIn([\"components\",\"schemas\"]);return k.Map.isMap(t)?t:gn})),En=onlyOAS3((()=>e=>e.getSystem().specSelectors.specJson().hasIn([\"servers\",0]))),_n=onlyOAS3((0,_e.createSelector)(Ht,(e=>e.getIn([\"components\",\"securitySchemes\"])||null))),wrap_selectors_validOperationMethods=(e,t)=>(r,...a)=>t.specSelectors.isOAS3()?t.oas3Selectors.validOperationMethods():e(...a),vn=yn,wn=yn,bn=yn,Cn=yn,xn=yn;const On=function wrap_selectors_onlyOAS3(e){return(t,r)=>(...a)=>{if(r.getSystem().specSelectors.isOAS3()){let t=r.getState().getIn([\"spec\",\"resolvedSubtrees\",\"components\",\"securitySchemes\"]);return e(r,t,...a)}return t(...a)}}((0,_e.createSelector)((e=>e),(({specSelectors:e})=>e.securityDefinitions()),((e,t)=>{let r=(0,k.List)();return t?(t.entrySeq().forEach((([e,t])=>{const a=t?.get(\"type\");if(\"oauth2\"===a&&t.get(\"flows\").entrySeq().forEach((([a,n])=>{let s=(0,k.fromJS)({flow:a,authorizationUrl:n.get(\"authorizationUrl\"),tokenUrl:n.get(\"tokenUrl\"),scopes:n.get(\"scopes\"),type:t.get(\"type\"),description:t.get(\"description\")});r=r.push(new k.Map({[e]:s.filter((e=>void 0!==e))}))})),\"http\"!==a&&\"apiKey\"!==a||(r=r.push(new k.Map({[e]:t}))),\"openIdConnect\"===a&&t.get(\"openIdConnectData\")){let a=t.get(\"openIdConnectData\");(a.get(\"grant_types_supported\")||[\"authorization_code\",\"implicit\"]).forEach((n=>{let s=a.get(\"scopes_supported\")&&a.get(\"scopes_supported\").reduce(((e,t)=>e.set(t,\"\")),new k.Map),o=(0,k.fromJS)({flow:n,authorizationUrl:a.get(\"authorization_endpoint\"),tokenUrl:a.get(\"token_endpoint\"),scopes:s,type:\"oauth2\",openIdConnectUrl:t.get(\"openIdConnectUrl\")});r=r.push(new k.Map({[e]:o.filter((e=>void 0!==e))}))}))}})),r):r})));function OAS3ComponentWrapFactory(e){return(t,r)=>a=>\"function\"==typeof r.specSelectors?.isOAS3?r.specSelectors.isOAS3()?O().createElement(e,Qe()({},a,r,{Ori:t})):O().createElement(t,a):(console.warn(\"OAS3 wrapper: couldn't get spec\"),null)}const Nn=(0,k.Map)(),selectors_isSwagger2=()=>e=>function isSwagger2(e){const t=e.get(\"swagger\");return\"string\"==typeof t&&\"2.0\"===t}(e.getSystem().specSelectors.specJson()),selectors_isOAS30=()=>e=>function isOAS30(e){const t=e.get(\"openapi\");return\"string\"==typeof t&&/^3\\.0\\.(?:[1-9]\\d*|0)$/.test(t)}(e.getSystem().specSelectors.specJson()),selectors_isOAS3=()=>e=>e.getSystem().specSelectors.isOAS30();function selectors_onlyOAS3(e){return(t,...r)=>a=>{if(a.specSelectors.isOAS3()){const n=e(t,...r);return\"function\"==typeof n?n(a):n}return null}}const kn=selectors_onlyOAS3((()=>e=>e.specSelectors.specJson().get(\"servers\",Nn))),findSchema=(e,t)=>{const r=e.getIn([\"resolvedSubtrees\",\"components\",\"schemas\",t],null),a=e.getIn([\"json\",\"components\",\"schemas\",t],null);return r||a||null},An=selectors_onlyOAS3(((e,{callbacks:t,specPath:r})=>e=>{const a=e.specSelectors.validOperationMethods();return k.Map.isMap(t)?t.reduce(((e,t,n)=>{if(!k.Map.isMap(t))return e;const s=t.reduce(((e,t,s)=>{if(!k.Map.isMap(t))return e;const o=t.entrySeq().filter((([e])=>a.includes(e))).map((([e,t])=>({operation:(0,k.Map)({operation:t}),method:e,path:s,callbackName:n,specPath:r.concat([n,s,e])})));return e.concat(o)}),(0,k.List)());return e.concat(s)}),(0,k.List)()).groupBy((e=>e.callbackName)).map((e=>e.toArray())).toObject():{}})),callbacks=({callbacks:e,specPath:t,specSelectors:r,getComponent:a})=>{const n=r.callbacksOperations({callbacks:e,specPath:t}),s=Object.keys(n),o=a(\"OperationContainer\",!0);return 0===s.length?O().createElement(\"span\",null,\"No callbacks\"):O().createElement(\"div\",null,s.map((e=>O().createElement(\"div\",{key:`${e}`},O().createElement(\"h2\",null,e),n[e].map((t=>O().createElement(o,{key:`${e}-${t.path}-${t.method}`,op:t.operation,tag:\"callbacks\",method:t.method,path:t.path,specPath:t.specPath,allowTryItOut:!1})))))))},getDefaultRequestBodyValue=(e,t,r,a)=>{const n=e.getIn([\"content\",t])??(0,k.OrderedMap)(),s=n.get(\"schema\",(0,k.OrderedMap)()).toJS(),o=void 0!==n.get(\"examples\"),l=n.get(\"example\"),c=o?n.getIn([\"examples\",r,\"value\"]):l;return stringify(a.getSampleSchema(s,t,{includeWriteOnly:!0},c))},request_body=({userHasEditedBody:e,requestBody:t,requestBodyValue:r,requestBodyInclusionSetting:a,requestBodyErrors:n,getComponent:s,getConfigs:o,specSelectors:l,fn:c,contentType:i,isExecute:p,specPath:m,onChange:u,onChangeIncludeEmpty:d,activeExamplesKey:h,updateActiveExamplesKey:g,setRetainRequestBodyValueFlag:y})=>{const handleFile=e=>{u(e.target.files[0])},setIsIncludedOptions=e=>{let t={key:e,shouldDispatchInit:!1,defaultValue:!0};return\"no value\"===a.get(e,\"no value\")&&(t.shouldDispatchInit=!0),t},f=s(\"Markdown\",!0),S=s(\"modelExample\"),E=s(\"RequestBodyEditor\"),_=s(\"HighlightCode\",!0),v=s(\"ExamplesSelectValueRetainer\"),w=s(\"Example\"),b=s(\"ParameterIncludeEmpty\"),{showCommonExtensions:C}=o(),x=t?.get(\"description\")??null,N=t?.get(\"content\")??new k.OrderedMap;i=i||N.keySeq().first()||\"\";const A=N.get(i)??(0,k.OrderedMap)(),I=A.get(\"schema\",(0,k.OrderedMap)()),j=A.get(\"examples\",null),q=j?.map(((e,r)=>{const a=e?.get(\"value\",null);return a&&(e=e.set(\"value\",getDefaultRequestBodyValue(t,i,r,c),a)),e}));n=k.List.isList(n)?n:(0,k.List)();if(c.isFileUploadIntended(A?.get(\"schema\"),i)){const e=s(\"Input\");return p?O().createElement(e,{type:\"file\",onChange:handleFile}):O().createElement(\"i\",null,\"Example values are not available for \",O().createElement(\"code\",null,i),\" media types.\")}if(!A.size)return null;if(c.hasSchemaType(A.get(\"schema\"),\"object\")&&(\"application/x-www-form-urlencoded\"===i||0===i.indexOf(\"multipart/\"))&&I.get(\"properties\",(0,k.OrderedMap)()).size>0){const e=s(\"JsonSchemaForm\"),t=s(\"ParameterExt\"),i=I.get(\"properties\",(0,k.OrderedMap)());return r=k.Map.isMap(r)?r:(0,k.OrderedMap)(),O().createElement(\"div\",{className:\"table-container\"},x&&O().createElement(f,{source:x}),O().createElement(\"table\",null,O().createElement(\"tbody\",null,k.Map.isMap(i)&&i.entrySeq().map((([i,h])=>{if(h.get(\"readOnly\"))return;const g=h.get(\"oneOf\")?.get(0)?.toJS(),y=h.get(\"anyOf\")?.get(0)?.toJS();h=(0,k.fromJS)(c.mergeJsonSchema(h.toJS(),g??y??{}));let E=C?getCommonExtensions(h):null;const _=I.get(\"required\",(0,k.List)()).includes(i),v=c.jsonSchema202012.getType(immutableToJS(h)),w=c.jsonSchema202012.foldType(immutableToJS(h?.get(\"type\"))),x=c.jsonSchema202012.foldType(immutableToJS(h?.getIn([\"items\",\"type\"]))),N=h.get(\"format\"),A=h.get(\"description\"),j=r.getIn([i,\"value\"]),q=r.getIn([i,\"errors\"])||n,P=a.get(i)||!1;let M=c.getSampleSchema(h,!1,{includeWriteOnly:!0});!1===M&&(M=\"false\"),0===M&&(M=\"0\"),\"string\"!=typeof M&&\"object\"===w&&(M=stringify(M)),\"string\"==typeof M&&\"array\"===w&&(M=JSON.parse(M));const T=c.isFileUploadIntended(h),R=O().createElement(e,{fn:c,dispatchInitialValue:!T,schema:h,description:i,getComponent:s,value:void 0===j?M:j,required:_,errors:q,onChange:e=>{u(e,[i])}});return O().createElement(\"tr\",{key:i,className:\"parameters\",\"data-property-name\":i},O().createElement(\"td\",{className:\"parameters-col_name\"},O().createElement(\"div\",{className:_?\"parameter__name required\":\"parameter__name\"},i,_?O().createElement(\"span\",null,\" *\"):null),O().createElement(\"div\",{className:\"parameter__type\"},v,N&&O().createElement(\"span\",{className:\"prop-format\"},\"($\",N,\")\"),C&&E.size?E.entrySeq().map((([e,r])=>O().createElement(t,{key:`${e}-${r}`,xKey:e,xVal:r}))):null),O().createElement(\"div\",{className:\"parameter__deprecated\"},h.get(\"deprecated\")?\"deprecated\":null)),O().createElement(\"td\",{className:\"parameters-col_description\"},O().createElement(f,{source:A}),p?O().createElement(\"div\",null,\"object\"===w||\"object\"===x?O().createElement(S,{getComponent:s,specPath:m.push(\"schema\"),getConfigs:o,isExecute:p,specSelectors:l,schema:h,example:R}):R,_?null:O().createElement(b,{onChange:e=>d(i,e),isIncluded:P,isIncludedOptions:setIsIncludedOptions(i),isDisabled:Array.isArray(j)?0!==j.length:!isEmptyValue(j)})):null))})))))}const P=getDefaultRequestBodyValue(t,i,h,c);let M=null;return getKnownSyntaxHighlighterLanguage(P)&&(M=\"json\"),O().createElement(\"div\",null,x&&O().createElement(f,{source:x}),q?O().createElement(v,{userHasEditedBody:e,examples:q,currentKey:h,currentUserInputValue:r,onSelect:e=>{g(e)},updateValue:u,defaultToFirstExample:!0,getComponent:s,setRetainRequestBodyValueFlag:y}):null,p?O().createElement(\"div\",null,O().createElement(E,{value:r,errors:n,defaultValue:P,onChange:u,getComponent:s})):O().createElement(S,{getComponent:s,getConfigs:o,specSelectors:l,expandDepth:1,isExecute:p,schema:A.get(\"schema\"),specPath:m.push(\"content\",i),example:O().createElement(_,{className:\"body-param__example\",language:M},stringify(r)||P),includeWriteOnly:!0}),q?O().createElement(w,{example:q.get(h),getComponent:s,getConfigs:o}):null)};class operation_link_OperationLink extends x.Component{render(){const{link:e,name:t,getComponent:r}=this.props,a=r(\"Markdown\",!0);let n=e.get(\"operationId\")||e.get(\"operationRef\"),s=e.get(\"parameters\")&&e.get(\"parameters\").toJS(),o=e.get(\"description\");return O().createElement(\"div\",{className:\"operation-link\"},O().createElement(\"div\",{className:\"description\"},O().createElement(\"b\",null,O().createElement(\"code\",null,t)),o?O().createElement(a,{source:o}):null),O().createElement(\"pre\",null,\"Operation `\",n,\"`\",O().createElement(\"br\",null),O().createElement(\"br\",null),\"Parameters \",function padString(e,t){if(\"string\"!=typeof t)return\"\";return t.split(\"\\n\").map(((t,r)=>r>0?Array(e+1).join(\" \")+t:t)).join(\"\\n\")}(0,JSON.stringify(s,null,2))||\"{}\",O().createElement(\"br\",null)))}}const In=operation_link_OperationLink,components_servers=({servers:e,currentServer:t,setSelectedServer:r,setServerVariableValue:a,getServerVariable:n,getEffectiveServerValue:s})=>{const o=(e.find((e=>e.get(\"url\")===t))||(0,k.OrderedMap)()).get(\"variables\")||(0,k.OrderedMap)(),l=0!==o.size;(0,x.useEffect)((()=>{t||r(e.first()?.get(\"url\"))}),[]),(0,x.useEffect)((()=>{const n=e.find((e=>e.get(\"url\")===t));if(!n)return void r(e.first().get(\"url\"));(n.get(\"variables\")||(0,k.OrderedMap)()).map(((e,r)=>{a({server:t,key:r,val:e.get(\"default\")||\"\"})}))}),[t,e]);const c=(0,x.useCallback)((e=>{r(e.target.value)}),[r]),i=(0,x.useCallback)((e=>{const r=e.target.getAttribute(\"data-variable\"),n=e.target.value;a({server:t,key:r,val:n})}),[a,t]);return O().createElement(\"div\",{className:\"servers\"},O().createElement(\"label\",{htmlFor:\"servers\"},O().createElement(\"select\",{onChange:c,value:t,id:\"servers\"},e.valueSeq().map((e=>O().createElement(\"option\",{value:e.get(\"url\"),key:e.get(\"url\")},e.get(\"url\"),e.get(\"description\")&&` - ${e.get(\"description\")}`))).toArray())),l&&O().createElement(\"div\",null,O().createElement(\"div\",{className:\"computed-url\"},\"Computed URL:\",O().createElement(\"code\",null,s(t))),O().createElement(\"h4\",null,\"Server variables\"),O().createElement(\"table\",null,O().createElement(\"tbody\",null,o.entrySeq().map((([e,r])=>O().createElement(\"tr\",{key:e},O().createElement(\"td\",null,e),O().createElement(\"td\",null,r.get(\"enum\")?O().createElement(\"select\",{\"data-variable\":e,onChange:i},r.get(\"enum\").map((r=>O().createElement(\"option\",{selected:r===n(t,e),key:r,value:r},r)))):O().createElement(\"input\",{type:\"text\",value:n(t,e)||\"\",onChange:i,\"data-variable\":e})))))))))};class ServersContainer extends O().Component{render(){const{specSelectors:e,oas3Selectors:t,oas3Actions:r,getComponent:a}=this.props,n=e.servers(),s=a(\"Servers\");return n&&n.size?O().createElement(\"div\",null,O().createElement(\"span\",{className:\"servers-title\"},\"Servers\"),O().createElement(s,{servers:n,currentServer:t.selectedServer(),setSelectedServer:r.setSelectedServer,setServerVariableValue:r.setServerVariableValue,getServerVariable:t.serverVariableValue,getEffectiveServerValue:t.serverEffectiveValue})):null}}const jn=Function.prototype;class RequestBodyEditor extends x.PureComponent{static defaultProps={onChange:jn,userHasEditedBody:!1};constructor(e,t){super(e,t),this.state={value:stringify(e.value)||e.defaultValue},e.onChange(e.value)}applyDefaultValue=e=>{const{onChange:t,defaultValue:r}=e||this.props;return this.setState({value:r}),t(r)};onChange=e=>{this.props.onChange(stringify(e))};onDomChange=e=>{const t=e.target.value;this.setState({value:t},(()=>this.onChange(t)))};UNSAFE_componentWillReceiveProps(e){this.props.value!==e.value&&e.value!==this.state.value&&this.setState({value:stringify(e.value)}),!e.value&&e.defaultValue&&this.state.value&&this.applyDefaultValue(e)}render(){let{getComponent:e,errors:t}=this.props,{value:r}=this.state,a=t.size>0;const n=e(\"TextArea\");return O().createElement(\"div\",{className:\"body-param\"},O().createElement(n,{className:pt()(\"body-param__text\",{invalid:a}),title:t.size?t.join(\", \"):\"\",value:r,onChange:this.onDomChange}))}}class HttpAuth extends O().Component{constructor(e,t){super(e,t);let{name:r,schema:a}=this.props,n=this.getValue();this.state={name:r,schema:a,value:n}}getValue(){let{name:e,authorized:t}=this.props;return t&&t.getIn([e,\"value\"])}onChange=e=>{let{onChange:t}=this.props,{value:r,name:a}=e.target,n=Object.assign({},this.state.value);a?n[a]=r:n=r,this.setState({value:n},(()=>t(this.state)))};render(){let{schema:e,getComponent:t,errSelectors:r,name:a,authSelectors:n}=this.props;const s=t(\"Input\"),o=t(\"Row\"),l=t(\"Col\"),c=t(\"authError\"),i=t(\"Markdown\",!0),p=t(\"JumpToPath\",!0),m=(e.get(\"scheme\")||\"\").toLowerCase(),u=n.selectAuthPath(a);let d=this.getValue(),h=r.allErrors().filter((e=>e.get(\"authId\")===a));if(\"basic\"===m){let t=d?d.get(\"username\"):null;return O().createElement(\"div\",null,O().createElement(\"h4\",null,O().createElement(\"code\",null,a),\"  (http, Basic)\",O().createElement(p,{path:u})),t&&O().createElement(\"h6\",null,\"Authorized\"),O().createElement(o,null,O().createElement(i,{source:e.get(\"description\")})),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"auth-basic-username\"},\"Username:\"),t?O().createElement(\"code\",null,\" \",t,\" \"):O().createElement(l,null,O().createElement(s,{id:\"auth-basic-username\",type:\"text\",required:\"required\",name:\"username\",\"aria-label\":\"auth-basic-username\",onChange:this.onChange,autoFocus:!0}))),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"auth-basic-password\"},\"Password:\"),t?O().createElement(\"code\",null,\" ****** \"):O().createElement(l,null,O().createElement(s,{id:\"auth-basic-password\",autoComplete:\"new-password\",name:\"password\",type:\"password\",\"aria-label\":\"auth-basic-password\",onChange:this.onChange}))),h.valueSeq().map(((e,t)=>O().createElement(c,{error:e,key:t}))))}return\"bearer\"===m?O().createElement(\"div\",null,O().createElement(\"h4\",null,O().createElement(\"code\",null,a),\"  (http, Bearer)\",O().createElement(p,{path:u})),d&&O().createElement(\"h6\",null,\"Authorized\"),O().createElement(o,null,O().createElement(i,{source:e.get(\"description\")})),O().createElement(o,null,O().createElement(\"label\",{htmlFor:\"auth-bearer-value\"},\"Value:\"),d?O().createElement(\"code\",null,\" ****** \"):O().createElement(l,null,O().createElement(s,{id:\"auth-bearer-value\",type:\"text\",\"aria-label\":\"auth-bearer-value\",onChange:this.onChange,autoFocus:!0}))),h.valueSeq().map(((e,t)=>O().createElement(c,{error:e,key:t})))):O().createElement(\"div\",null,O().createElement(\"em\",null,O().createElement(\"b\",null,a),\" HTTP authentication: unsupported scheme \",`'${m}'`))}}class OperationServers extends O().Component{setSelectedServer=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setSelectedServer(e,`${t}:${r}`)};setServerVariableValue=e=>{const{path:t,method:r}=this.props;return this.forceUpdate(),this.props.setServerVariableValue({...e,namespace:`${t}:${r}`})};getSelectedServer=()=>{const{path:e,method:t}=this.props;return this.props.getSelectedServer(`${e}:${t}`)};getServerVariable=(e,t)=>{const{path:r,method:a}=this.props;return this.props.getServerVariable({namespace:`${r}:${a}`,server:e},t)};getEffectiveServerValue=e=>{const{path:t,method:r}=this.props;return this.props.getEffectiveServerValue({server:e,namespace:`${t}:${r}`})};render(){const{operationServers:e,pathServers:t,getComponent:r}=this.props;if(!e&&!t)return null;const a=r(\"Servers\"),n=e||t,s=e?\"operation\":\"path\";return O().createElement(\"div\",{className:\"opblock-section operation-servers\"},O().createElement(\"div\",{className:\"opblock-section-header\"},O().createElement(\"div\",{className:\"tab-header\"},O().createElement(\"h4\",{className:\"opblock-title\"},\"Servers\"))),O().createElement(\"div\",{className:\"opblock-description-wrapper\"},O().createElement(\"h4\",{className:\"message\"},\"These \",s,\"-level options override the global server options.\"),O().createElement(a,{servers:n,currentServer:this.getSelectedServer(),setSelectedServer:this.setSelectedServer,setServerVariableValue:this.setServerVariableValue,getServerVariable:this.getServerVariable,getEffectiveServerValue:this.getEffectiveServerValue})))}}const qn={Callbacks:callbacks,HttpAuth,RequestBody:request_body,Servers:components_servers,ServersContainer,RequestBodyEditor,OperationServers,operationLink:In},Pn=new pn.Remarkable(\"commonmark\");Pn.block.ruler.enable([\"table\"]),Pn.set({linkTarget:\"_blank\"});const Mn=OAS3ComponentWrapFactory((({source:e,className:t=\"\",getConfigs:r=()=>({useUnsafeMarkdown:!1})})=>{if(\"string\"!=typeof e)return null;if(e){const{useUnsafeMarkdown:a}=r(),n=sanitizer(Pn.render(e),{useUnsafeMarkdown:a});let s;return\"string\"==typeof n&&(s=n.trim()),O().createElement(\"div\",{dangerouslySetInnerHTML:{__html:s},className:pt()(t,\"renderedMarkdown\")})}return null})),Tn=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:a,errSelectors:n,authorized:s,onAuthChange:o,name:l,authSelectors:c}=t,i=a(\"HttpAuth\");return\"http\"===r.get(\"type\")?O().createElement(i,{key:l,schema:r,name:l,errSelectors:n,authorized:s,getComponent:a,onChange:o,authSelectors:c}):O().createElement(e,t)})),Rn=OAS3ComponentWrapFactory(OnlineValidatorBadge);class ModelComponent extends x.Component{render(){let{getConfigs:e,schema:t,Ori:r}=this.props,a=[\"model-box\"],n=null;return!0===t.get(\"deprecated\")&&(a.push(\"deprecated\"),n=O().createElement(\"span\",{className:\"model-deprecated-warning\"},\"Deprecated:\")),O().createElement(\"div\",{className:a.join(\" \")},n,O().createElement(r,Qe()({},this.props,{getConfigs:e,depth:1,expandDepth:this.props.expandDepth||0})))}}const Jn=OAS3ComponentWrapFactory(ModelComponent),$n=OAS3ComponentWrapFactory((({Ori:e,...t})=>{const{schema:r,getComponent:a,errors:n,onChange:s,fn:o}=t,l=o.isFileUploadIntended(r),c=a(\"Input\");return l?O().createElement(c,{type:\"file\",className:n.length?\"invalid\":\"\",title:n.length?n:\"\",onChange:e=>{s(e.target.files[0])},disabled:e.isDisabled}):O().createElement(e,t)})),Vn={Markdown:Mn,AuthItem:Tn,OpenAPIVersion:function OAS30ComponentWrapFactory(e){return(t,r)=>a=>\"function\"==typeof r.specSelectors?.isOAS30?r.specSelectors.isOAS30()?O().createElement(e,Qe()({},a,r,{Ori:t})):O().createElement(t,a):(console.warn(\"OAS30 wrapper: couldn't get spec\"),null)}((e=>{const{Ori:t}=e;return O().createElement(t,{oasVersion:\"3.0\"})})),JsonSchema_string:$n,model:Jn,onlineValidatorBadge:Rn},Ln=\"oas3_set_servers\",Dn=\"oas3_set_request_body_value\",Un=\"oas3_set_request_body_retain_flag\",Kn=\"oas3_set_request_body_inclusion\",zn=\"oas3_set_active_examples_member\",Bn=\"oas3_set_request_content_type\",Fn=\"oas3_set_response_content_type\",Wn=\"oas3_set_server_variable_value\",Hn=\"oas3_set_request_body_validate_error\",Xn=\"oas3_clear_request_body_validate_error\",Gn=\"oas3_clear_request_body_value\";function setSelectedServer(e,t){return{type:Ln,payload:{selectedServerUrl:e,namespace:t}}}function setRequestBodyValue({value:e,pathMethod:t}){return{type:Dn,payload:{value:e,pathMethod:t}}}const setRetainRequestBodyValueFlag=({value:e,pathMethod:t})=>({type:Un,payload:{value:e,pathMethod:t}});function setRequestBodyInclusion({value:e,pathMethod:t,name:r}){return{type:Kn,payload:{value:e,pathMethod:t,name:r}}}function setActiveExamplesMember({name:e,pathMethod:t,contextType:r,contextName:a}){return{type:zn,payload:{name:e,pathMethod:t,contextType:r,contextName:a}}}function setRequestContentType({value:e,pathMethod:t}){return{type:Bn,payload:{value:e,pathMethod:t}}}function setResponseContentType({value:e,path:t,method:r}){return{type:Fn,payload:{value:e,path:t,method:r}}}function setServerVariableValue({server:e,namespace:t,key:r,val:a}){return{type:Wn,payload:{server:e,namespace:t,key:r,val:a}}}const setRequestBodyValidateError=({path:e,method:t,validationErrors:r})=>({type:Hn,payload:{path:e,method:t,validationErrors:r}}),clearRequestBodyValidateError=({path:e,method:t})=>({type:Xn,payload:{path:e,method:t}}),initRequestBodyValidateError=({pathMethod:e})=>({type:Xn,payload:{path:e[0],method:e[1]}}),clearRequestBodyValue=({pathMethod:e})=>({type:Gn,payload:{pathMethod:e}}),Yn=require(\"lodash/escapeRegExp\");var Qn=__webpack_require__.n(Yn);const oas3_selectors_onlyOAS3=e=>(t,...r)=>a=>{if(a.getSystem().specSelectors.isOAS3()){const n=e(t,...r);return\"function\"==typeof n?n(a):n}return null};const Zn=oas3_selectors_onlyOAS3(((e,t)=>{const r=t?[t,\"selectedServer\"]:[\"selectedServer\"];return e.getIn(r)||\"\"})),es=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"bodyValue\"])||null)),ts=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"retainBodyValue\"])||!1)),selectDefaultRequestBodyValue=(e,t,r)=>e=>{const{oas3Selectors:a,specSelectors:n,fn:s}=e.getSystem();if(n.isOAS3()){const e=a.requestContentType(t,r);if(e)return getDefaultRequestBodyValue(n.specResolvedSubtree([\"paths\",t,r,\"requestBody\"]),e,a.activeExamplesMember(t,r,\"requestBody\",\"requestBody\"),s)}return null},rs=oas3_selectors_onlyOAS3(((e,t,r)=>e=>{const{oas3Selectors:a,specSelectors:n,fn:s}=e;let o=!1;const l=a.requestContentType(t,r);let c=a.requestBodyValue(t,r);const i=n.specResolvedSubtree([\"paths\",t,r,\"requestBody\"]);if(!i)return!1;if(k.Map.isMap(c)&&(c=stringify(c.mapEntries((e=>k.Map.isMap(e[1])?[e[0],e[1].get(\"value\")]:e)).toJS())),k.List.isList(c)&&(c=stringify(c)),l){const e=getDefaultRequestBodyValue(i,l,a.activeExamplesMember(t,r,\"requestBody\",\"requestBody\"),s);o=!!c&&c!==e}return o})),as=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"bodyInclusion\"])||(0,k.Map)())),ns=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"errors\"])||null)),ss=oas3_selectors_onlyOAS3(((e,t,r,a,n)=>e.getIn([\"examples\",t,r,a,n,\"activeExample\"])||null)),os=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"requestContentType\"])||null)),ls=oas3_selectors_onlyOAS3(((e,t,r)=>e.getIn([\"requestData\",t,r,\"responseContentType\"])||null)),cs=oas3_selectors_onlyOAS3(((e,t,r)=>{let a;if(\"string\"!=typeof t){const{server:e,namespace:n}=t;a=n?[n,\"serverVariableValues\",e,r]:[\"serverVariableValues\",e,r]}else{a=[\"serverVariableValues\",t,r]}return e.getIn(a)||null})),is=oas3_selectors_onlyOAS3(((e,t)=>{let r;if(\"string\"!=typeof t){const{server:e,namespace:a}=t;r=a?[a,\"serverVariableValues\",e]:[\"serverVariableValues\",e]}else{r=[\"serverVariableValues\",t]}return e.getIn(r)||(0,k.OrderedMap)()})),ps=oas3_selectors_onlyOAS3(((e,t)=>{var r,a;if(\"string\"!=typeof t){const{server:n,namespace:s}=t;a=n,r=s?e.getIn([s,\"serverVariableValues\",a]):e.getIn([\"serverVariableValues\",a])}else a=t,r=e.getIn([\"serverVariableValues\",a]);r=r||(0,k.OrderedMap)();let n=a;return r.map(((e,t)=>{n=n.replace(new RegExp(`{${Qn()(t)}}`,\"g\"),e)})),n})),ms=function validateRequestBodyIsRequired(e){return(...t)=>r=>{const a=r.getSystem().specSelectors.specJson();let n=[...t][1]||[];return!a.getIn([\"paths\",...n,\"requestBody\",\"required\"])||e(...t)}}(((e,t)=>((e,t)=>(t=t||[],!!e.getIn([\"requestData\",...t,\"bodyValue\"])))(e,t))),validateShallowRequired=(e,{oas3RequiredRequestBodyContentType:t,oas3RequestContentType:r,oas3RequestBodyValue:a})=>{let n=[];if(!k.Map.isMap(a))return n;let s=[];return Object.keys(t.requestContentType).forEach((e=>{if(e===r){t.requestContentType[e].forEach((e=>{s.indexOf(e)<0&&s.push(e)}))}})),s.forEach((e=>{a.getIn([e,\"value\"])||n.push(e)})),n},us=Vt()([\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"]),ds={[Ln]:(e,{payload:{selectedServerUrl:t,namespace:r}})=>{const a=r?[r,\"selectedServer\"]:[\"selectedServer\"];return e.setIn(a,t)},[Dn]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;if(!k.Map.isMap(t))return e.setIn([\"requestData\",a,n,\"bodyValue\"],t);let s,o=e.getIn([\"requestData\",a,n,\"bodyValue\"])||(0,k.Map)();k.Map.isMap(o)||(o=(0,k.Map)());const[...l]=t.keys();return l.forEach((e=>{let r=t.getIn([e]);o.has(e)&&k.Map.isMap(r)||(s=o.setIn([e,\"value\"],r))})),e.setIn([\"requestData\",a,n,\"bodyValue\"],s)},[Un]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;return e.setIn([\"requestData\",a,n,\"retainBodyValue\"],t)},[Kn]:(e,{payload:{value:t,pathMethod:r,name:a}})=>{let[n,s]=r;return e.setIn([\"requestData\",n,s,\"bodyInclusion\",a],t)},[zn]:(e,{payload:{name:t,pathMethod:r,contextType:a,contextName:n}})=>{let[s,o]=r;return e.setIn([\"examples\",s,o,a,n,\"activeExample\"],t)},[Bn]:(e,{payload:{value:t,pathMethod:r}})=>{let[a,n]=r;return e.setIn([\"requestData\",a,n,\"requestContentType\"],t)},[Fn]:(e,{payload:{value:t,path:r,method:a}})=>e.setIn([\"requestData\",r,a,\"responseContentType\"],t),[Wn]:(e,{payload:{server:t,namespace:r,key:a,val:n}})=>{const s=r?[r,\"serverVariableValues\",t,a]:[\"serverVariableValues\",t,a];return e.setIn(s,n)},[Hn]:(e,{payload:{path:t,method:r,validationErrors:a}})=>{let n=[];if(n.push(\"Required field is not provided\"),a.missingBodyValue)return e.setIn([\"requestData\",t,r,\"errors\"],(0,k.fromJS)(n));if(a.missingRequiredKeys&&a.missingRequiredKeys.length>0){const{missingRequiredKeys:s}=a;return e.updateIn([\"requestData\",t,r,\"bodyValue\"],(0,k.fromJS)({}),(e=>s.reduce(((e,t)=>e.setIn([t,\"errors\"],(0,k.fromJS)(n))),e)))}return console.warn(\"unexpected result: SET_REQUEST_BODY_VALIDATE_ERROR\"),e},[Xn]:(e,{payload:{path:t,method:r}})=>{const a=e.getIn([\"requestData\",t,r,\"bodyValue\"]);if(!k.Map.isMap(a))return e.setIn([\"requestData\",t,r,\"errors\"],(0,k.fromJS)([]));const[...n]=a.keys();return n?e.updateIn([\"requestData\",t,r,\"bodyValue\"],(0,k.fromJS)({}),(e=>n.reduce(((e,t)=>e.setIn([t,\"errors\"],(0,k.fromJS)([]))),e))):e},[Gn]:(e,{payload:{pathMethod:t}})=>{let[r,a]=t;const n=e.getIn([\"requestData\",r,a,\"bodyValue\"]);return n?k.Map.isMap(n)?e.setIn([\"requestData\",r,a,\"bodyValue\"],(0,k.Map)()):e.setIn([\"requestData\",r,a,\"bodyValue\"],\"\"):e}};function oas3({getSystem:e}){const t=(e=>(t,r=null)=>{const{getConfigs:a,fn:n}=e(),{fileUploadMediaTypes:s}=a();if(\"string\"==typeof r&&s.some((e=>r.startsWith(e))))return!0;const o=k.Map.isMap(t);if(!o&&!wt()(t))return!1;const l=o?t.get(\"format\"):t.format;return n.hasSchemaType(t,\"string\")&&[\"binary\",\"byte\"].includes(l)})(e);return{components:qn,wrapComponents:Vn,statePlugins:{spec:{wrapSelectors:_,selectors:w},auth:{wrapSelectors:v},oas3:{actions:{...b},reducers:ds,selectors:{...C}}},fn:{isFileUploadIntended:t,isFileUploadIntendedOAS30:t}}}const webhooks=({specSelectors:e,getComponent:t})=>{const r=e.selectWebhooksOperations(),a=Object.keys(r),n=t(\"OperationContainer\",!0);return 0===a.length?null:O().createElement(\"div\",{className:\"webhooks\"},O().createElement(\"h2\",null,\"Webhooks\"),a.map((e=>O().createElement(\"div\",{key:`${e}-webhook`},r[e].map((t=>O().createElement(n,{key:`${e}-${t.method}-webhook`,op:t.operation,tag:\"webhooks\",method:t.method,path:e,specPath:(0,k.List)(t.specPath),allowTryItOut:!1})))))))},components_license=({getComponent:e,specSelectors:t})=>{const r=t.selectLicenseNameField(),a=t.selectLicenseUrl(),n=e(\"Link\");return O().createElement(\"div\",{className:\"info__license\"},a?O().createElement(\"div\",{className:\"info__license__url\"},O().createElement(n,{target:\"_blank\",href:sanitizeUrl(a)},r)):O().createElement(\"span\",null,r))},components_contact=({getComponent:e,specSelectors:t})=>{const r=t.selectContactNameField(),a=t.selectContactUrl(),n=t.selectContactEmailField(),s=e(\"Link\");return O().createElement(\"div\",{className:\"info__contact\"},a&&O().createElement(\"div\",null,O().createElement(s,{href:sanitizeUrl(a),target:\"_blank\"},r,\" - Website\")),n&&O().createElement(s,{href:sanitizeUrl(`mailto:${n}`)},a?`Send email to ${r}`:`Contact ${r}`))},oas31_components_info=({getComponent:e,specSelectors:t})=>{const r=t.version(),a=t.url(),n=t.basePath(),s=t.host(),o=t.selectInfoSummaryField(),l=t.selectInfoDescriptionField(),c=t.selectInfoTitleField(),i=t.selectInfoTermsOfServiceUrl(),p=t.selectExternalDocsUrl(),m=t.selectExternalDocsDescriptionField(),u=t.contact(),d=t.license(),h=e(\"Markdown\",!0),g=e(\"Link\"),y=e(\"VersionStamp\"),f=e(\"OpenAPIVersion\"),S=e(\"InfoUrl\"),E=e(\"InfoBasePath\"),_=e(\"License\",!0),v=e(\"Contact\",!0),w=e(\"JsonSchemaDialect\",!0);return O().createElement(\"div\",{className:\"info\"},O().createElement(\"hgroup\",{className:\"main\"},O().createElement(\"h2\",{className:\"title\"},c,O().createElement(\"span\",null,r&&O().createElement(y,{version:r}),O().createElement(f,{oasVersion:\"3.1\"}))),(s||n)&&O().createElement(E,{host:s,basePath:n}),a&&O().createElement(S,{getComponent:e,url:a})),o&&O().createElement(\"p\",{className:\"info__summary\"},o),O().createElement(\"div\",{className:\"info__description description\"},O().createElement(h,{source:l})),i&&O().createElement(\"div\",{className:\"info__tos\"},O().createElement(g,{target:\"_blank\",href:sanitizeUrl(i)},\"Terms of service\")),u.size>0&&O().createElement(v,null),d.size>0&&O().createElement(_,null),p&&O().createElement(g,{className:\"info__extdocs\",target:\"_blank\",href:sanitizeUrl(p)},m||p),O().createElement(w,null))},json_schema_dialect=({getComponent:e,specSelectors:t})=>{const r=t.selectJsonSchemaDialectField(),a=t.selectJsonSchemaDialectDefault(),n=e(\"Link\");return O().createElement(O().Fragment,null,r&&r===a&&O().createElement(\"p\",{className:\"info__jsonschemadialect\"},\"JSON Schema dialect:\",\" \",O().createElement(n,{target:\"_blank\",href:sanitizeUrl(r)},r)),r&&r!==a&&O().createElement(\"div\",{className:\"error-wrapper\"},O().createElement(\"div\",{className:\"no-margin\"},O().createElement(\"div\",{className:\"errors\"},O().createElement(\"div\",{className:\"errors-wrapper\"},O().createElement(\"h4\",{className:\"center\"},\"Warning\"),O().createElement(\"p\",{className:\"message\"},O().createElement(\"strong\",null,\"OpenAPI.jsonSchemaDialect\"),\" field contains a value different from the default value of\",\" \",O().createElement(n,{target:\"_blank\",href:a},a),\". Values different from the default one are currently not supported. Please either omit the field or provide it with the default value.\"))))))},version_pragma_filter=({bypass:e,isSwagger2:t,isOAS3:r,isOAS31:a,alsoShow:n,children:s})=>e?O().createElement(\"div\",null,s):t&&(r||a)?O().createElement(\"div\",{className:\"version-pragma\"},n,O().createElement(\"div\",{className:\"version-pragma__message version-pragma__message--ambiguous\"},O().createElement(\"div\",null,O().createElement(\"h3\",null,\"Unable to render this definition\"),O().createElement(\"p\",null,O().createElement(\"code\",null,\"swagger\"),\" and \",O().createElement(\"code\",null,\"openapi\"),\" fields cannot be present in the same Swagger or OpenAPI definition. Please remove one of the fields.\"),O().createElement(\"p\",null,\"Supported version fields are \",O().createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",O().createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",O().createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))):t||r||a?O().createElement(\"div\",null,s):O().createElement(\"div\",{className:\"version-pragma\"},n,O().createElement(\"div\",{className:\"version-pragma__message version-pragma__message--missing\"},O().createElement(\"div\",null,O().createElement(\"h3\",null,\"Unable to render this definition\"),O().createElement(\"p\",null,\"The provided definition does not specify a valid version field.\"),O().createElement(\"p\",null,\"Please indicate a valid Swagger or OpenAPI version field. Supported version fields are \",O().createElement(\"code\",null,'swagger: \"2.0\"'),\" and those that match \",O().createElement(\"code\",null,\"openapi: 3.x.y\"),\" (for example,\",\" \",O().createElement(\"code\",null,\"openapi: 3.1.0\"),\").\")))),getModelName=e=>\"string\"==typeof e&&e.includes(\"#/components/schemas/\")?(e=>{const t=e.replace(/~1/g,\"/\").replace(/~0/g,\"~\");try{return decodeURIComponent(t)}catch{return t}})(e.replace(/^.*#\\/components\\/schemas\\//,\"\")):null,hs=(0,x.forwardRef)((({schema:e,getComponent:t,onToggle:r=()=>{},specPath:a},n)=>{const s=t(\"JSONSchema202012\"),o=getModelName(e.get(\"$$ref\")),l=(0,x.useCallback)(((e,t)=>{r(o,t)}),[o,r]);return O().createElement(s,{name:o,schema:e.toJS(),ref:n,onExpand:l,identifier:a.toJS().join(\"_\")})})),gs=hs,models=({specActions:e,specSelectors:t,layoutSelectors:r,layoutActions:a,getComponent:n,getConfigs:s,fn:o})=>{const l=t.selectSchemas(),c=Object.keys(l).length>0,i=[\"components\",\"schemas\"],{docExpansion:p,defaultModelsExpandDepth:m}=s(),u=m>0&&\"none\"!==p,d=r.isShown(i,u),h=n(\"Collapse\"),g=n(\"JSONSchema202012\"),y=n(\"ArrowUpIcon\"),f=n(\"ArrowDownIcon\"),{getTitle:S}=o.jsonSchema202012.useFn();(0,x.useEffect)((()=>{const r=d&&m>1,a=null!=t.specResolvedSubtree(i);r&&!a&&e.requestResolvedSubtree(i)}),[d,m]);const E=(0,x.useCallback)((()=>{a.show(i,!d)}),[d]),_=(0,x.useCallback)((e=>{null!==e&&a.readyToScroll(i,e)}),[]),handleJSONSchema202012Ref=e=>t=>{null!==t&&a.readyToScroll([...i,e],t)},handleJSONSchema202012Expand=r=>(a,n)=>{if(n){const a=[...i,r];null!=t.specResolvedSubtree(a)||e.requestResolvedSubtree([...i,r])}};return!c||m<0?null:O().createElement(\"section\",{className:pt()(\"models\",{\"is-open\":d}),ref:_},O().createElement(\"h4\",null,O().createElement(\"button\",{\"aria-expanded\":d,className:\"models-control\",onClick:E},O().createElement(\"span\",null,\"Schemas\"),d?O().createElement(y,null):O().createElement(f,null))),O().createElement(h,{isOpened:d},Object.entries(l).map((([e,t])=>{const r=S(t,{lookup:\"basic\"})||e;return O().createElement(g,{key:e,ref:handleJSONSchema202012Ref(e),schema:t,name:r,onExpand:handleJSONSchema202012Expand(e)})}))))},mutual_tls_auth=({schema:e,getComponent:t,name:r,authSelectors:a})=>{const n=t(\"JumpToPath\",!0),s=a.selectAuthPath(r);return O().createElement(\"div\",null,O().createElement(\"h4\",null,r,\" (mutualTLS) \",O().createElement(n,{path:s})),O().createElement(\"p\",null,\"Mutual TLS is required by this API/Operation. Certificates are managed via your Operating System and/or your browser.\"),O().createElement(\"p\",null,e.get(\"description\")))};class auths_Auths extends O().Component{constructor(e,t){super(e,t),this.state={}}onAuthChange=e=>{let{name:t}=e;this.setState({[t]:e})};submitAuth=e=>{e.preventDefault();let{authActions:t}=this.props;t.authorizeWithPersistOption(this.state)};logoutClick=e=>{e.preventDefault();let{authActions:t,definitions:r}=this.props,a=r.map(((e,t)=>t)).toArray();this.setState(a.reduce(((e,t)=>(e[t]=\"\",e)),{})),t.logoutWithPersistOption(a)};close=e=>{e.preventDefault();let{authActions:t}=this.props;t.showDefinitions(!1)};render(){let{definitions:e,getComponent:t,authSelectors:r,errSelectors:a}=this.props;const n=t(\"AuthItem\"),s=t(\"oauth2\",!0),o=t(\"Button\"),l=r.authorized(),c=e.filter(((e,t)=>!!l.get(t))),i=e.filter((e=>\"oauth2\"!==e.get(\"type\")&&\"mutualTLS\"!==e.get(\"type\"))),p=e.filter((e=>\"oauth2\"===e.get(\"type\"))),m=e.filter((e=>\"mutualTLS\"===e.get(\"type\")));return O().createElement(\"div\",{className:\"auth-container\"},i.size>0&&O().createElement(\"form\",{onSubmit:this.submitAuth},i.map(((e,s)=>O().createElement(n,{key:s,schema:e,name:s,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a,authSelectors:r}))).toArray(),O().createElement(\"div\",{className:\"auth-btn-wrapper\"},i.size===c.size?O().createElement(o,{className:\"btn modal-btn auth\",onClick:this.logoutClick,\"aria-label\":\"Remove authorization\"},\"Logout\"):O().createElement(o,{type:\"submit\",className:\"btn modal-btn auth authorize\",\"aria-label\":\"Apply credentials\"},\"Authorize\"),O().createElement(o,{className:\"btn modal-btn auth btn-done\",onClick:this.close},\"Close\"))),p.size>0?O().createElement(\"div\",null,O().createElement(\"div\",{className:\"scope-def\"},O().createElement(\"p\",null,\"Scopes are used to grant an application different levels of access to data on behalf of the end user. Each API may declare one or more scopes.\"),O().createElement(\"p\",null,\"API requires the following scopes. Select which ones you want to grant to Swagger UI.\")),e.filter((e=>\"oauth2\"===e.get(\"type\"))).map(((e,t)=>O().createElement(\"div\",{key:t},O().createElement(s,{authorized:l,schema:e,name:t})))).toArray()):null,m.size>0&&O().createElement(\"div\",null,m.map(((e,s)=>O().createElement(n,{key:s,schema:e,name:s,getComponent:t,onAuthChange:this.onAuthChange,authorized:l,errSelectors:a,authSelectors:r}))).toArray()))}}const ys=auths_Auths,isOAS31=e=>{const t=e.get(\"openapi\");return\"string\"==typeof t&&/^3\\.1\\.(?:[1-9]\\d*|0)$/.test(t)},fn_createOnlyOAS31Selector=e=>(t,...r)=>a=>{if(a.getSystem().specSelectors.isOAS31()){const n=e(t,...r);return\"function\"==typeof n?n(a):n}return null},createOnlyOAS31SelectorWrapper=e=>(t,r)=>(a,...n)=>{if(r.getSystem().specSelectors.isOAS31()){const s=e(a,...n);return\"function\"==typeof s?s(t,r):s}return t(...n)},fn_createSystemSelector=e=>(t,...r)=>a=>{const n=e(t,a,...r);return\"function\"==typeof n?n(a):n},createOnlyOAS31ComponentWrapper=e=>(t,r)=>a=>r.specSelectors.isOAS31()?O().createElement(e,Qe()({},a,{originalComponent:t,getSystem:r.getSystem})):O().createElement(t,a),wrapOAS31Fn=(e,t)=>{const{fn:r,specSelectors:a}=t;return Object.fromEntries(Object.entries(e).map((([e,t])=>{const n=r[e];return[e,(...e)=>a.isOAS31()?t(...e):\"function\"==typeof n?n(...e):void 0]})))},fs=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31License\",!0);return O().createElement(t,null)})),Ss=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31Contact\",!0);return O().createElement(t,null)})),Es=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const t=e().getComponent(\"OAS31Info\",!0);return O().createElement(t,null)})),getProperties=(e,{includeReadOnly:t,includeWriteOnly:r})=>{if(!e?.properties)return{};const a=Object.entries(e.properties).filter((([,e])=>(!(!0===e?.readOnly)||t)&&(!(!0===e?.writeOnly)||r)));return Object.fromEntries(a)},makeGetSchemaKeywords=e=>{if(\"function\"!=typeof e)return null;const t=e();return()=>[...t,\"discriminator\",\"xml\",\"externalDocs\",\"example\",\"$$ref\"]},_s=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e(),{getComponent:a,fn:n,getConfigs:s}=r,o=s(),l=a(\"OAS31Model\"),c=a(\"withJSONSchema202012SystemContext\");return _s.ModelWithJSONSchemaContext??=c(l,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:o.defaultModelExpandDepth,includeReadOnly:t.includeReadOnly,includeWriteOnly:t.includeWriteOnly},fn:{getProperties:n.jsonSchema202012.getProperties,isExpandable:n.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(n.jsonSchema202012.getSchemaKeywords)}}),O().createElement(_s.ModelWithJSONSchemaContext,t)})),vs=_s,ws=createOnlyOAS31ComponentWrapper((({getSystem:e})=>{const{getComponent:t,fn:r,getConfigs:a}=e(),n=a();if(ws.ModelsWithJSONSchemaContext)return O().createElement(ws.ModelsWithJSONSchemaContext,null);const s=t(\"OAS31Models\",!0),o=t(\"withJSONSchema202012SystemContext\");return ws.ModelsWithJSONSchemaContext??=o(s,{config:{default$schema:\"https://spec.openapis.org/oas/3.1/dialect/base\",defaultExpandedLevels:n.defaultModelsExpandDepth-1,includeReadOnly:!0,includeWriteOnly:!0},fn:{getProperties:r.jsonSchema202012.getProperties,isExpandable:r.jsonSchema202012.isExpandable,getSchemaKeywords:makeGetSchemaKeywords(r.jsonSchema202012.getSchemaKeywords)}}),O().createElement(ws.ModelsWithJSONSchemaContext,null)}));ws.ModelsWithJSONSchemaContext=null;const bs=ws,wrap_components_version_pragma_filter=(e,t)=>e=>{const r=t.specSelectors.isOAS31(),a=t.getComponent(\"OAS31VersionPragmaFilter\");return O().createElement(a,Qe()({isOAS31:r},e))},Cs=createOnlyOAS31ComponentWrapper((({originalComponent:e,...t})=>{const{getComponent:r,schema:a,name:n}=t,s=r(\"MutualTLSAuth\",!0);return\"mutualTLS\"===a.get(\"type\")?O().createElement(s,{schema:a,name:n}):O().createElement(e,t)})),xs=Cs,Os=createOnlyOAS31ComponentWrapper((({getSystem:e,...t})=>{const r=e().getComponent(\"OAS31Auths\",!0);return O().createElement(r,t)})),Ns=(0,k.Map)(),ks=(0,_e.createSelector)(((e,t)=>t.specSelectors.specJson()),isOAS31),selectors_webhooks=()=>e=>{const t=e.specSelectors.specJson().get(\"webhooks\");return k.Map.isMap(t)?t:Ns},As=(0,_e.createSelector)([(e,t)=>t.specSelectors.webhooks(),(e,t)=>t.specSelectors.validOperationMethods(),(e,t)=>t.specSelectors.specResolvedSubtree([\"webhooks\"])],((e,t)=>e.reduce(((e,r,a)=>{if(!k.Map.isMap(r))return e;const n=r.entrySeq().filter((([e])=>t.includes(e))).map((([e,t])=>({operation:(0,k.Map)({operation:t}),method:e,path:a,specPath:[\"webhooks\",a,e]})));return e.concat(n)}),(0,k.List)()).groupBy((e=>e.path)).map((e=>e.toArray())).toObject())),selectors_license=()=>e=>{const t=e.specSelectors.info().get(\"license\");return k.Map.isMap(t)?t:Ns},selectLicenseNameField=()=>e=>e.specSelectors.license().get(\"name\",\"License\"),selectLicenseUrlField=()=>e=>e.specSelectors.license().get(\"url\"),Is=(0,_e.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectLicenseIdentifierField=()=>e=>e.specSelectors.license().get(\"identifier\"),selectors_contact=()=>e=>{const t=e.specSelectors.info().get(\"contact\");return k.Map.isMap(t)?t:Ns},selectContactNameField=()=>e=>e.specSelectors.contact().get(\"name\",\"the developer\"),selectContactEmailField=()=>e=>e.specSelectors.contact().get(\"email\"),selectContactUrlField=()=>e=>e.specSelectors.contact().get(\"url\"),js=(0,_e.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectContactUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectInfoTitleField=()=>e=>e.specSelectors.info().get(\"title\"),selectInfoSummaryField=()=>e=>e.specSelectors.info().get(\"summary\"),selectInfoDescriptionField=()=>e=>e.specSelectors.info().get(\"description\"),selectInfoTermsOfServiceField=()=>e=>e.specSelectors.info().get(\"termsOfService\"),qs=(0,_e.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectInfoTermsOfServiceField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectExternalDocsDescriptionField=()=>e=>e.specSelectors.externalDocs().get(\"description\"),selectExternalDocsUrlField=()=>e=>e.specSelectors.externalDocs().get(\"url\"),Ps=(0,_e.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectExternalDocsUrlField()],((e,t,r)=>{if(r)return safeBuildUrl(r,e,{selectedServer:t})})),selectJsonSchemaDialectField=()=>e=>e.specSelectors.specJson().get(\"jsonSchemaDialect\"),selectJsonSchemaDialectDefault=()=>\"https://spec.openapis.org/oas/3.1/dialect/base\",Ms=(0,_e.createSelector)(((e,t)=>t.specSelectors.definitions()),((e,t)=>t.specSelectors.specResolvedSubtree([\"components\",\"schemas\"])),((e,t)=>k.Map.isMap(e)?k.Map.isMap(t)?Object.entries(e.toJS()).reduce(((e,[r,a])=>{const n=t.get(r);return e[r]=n?.toJS()||a,e}),{}):e.toJS():{})),wrap_selectors_isOAS3=(e,t)=>(r,...a)=>t.specSelectors.isOAS31()||e(...a),Ts=createOnlyOAS31SelectorWrapper((()=>(e,t)=>t.oas31Selectors.selectLicenseUrl())),Rs=createOnlyOAS31SelectorWrapper((()=>(e,t)=>{const r=t.specSelectors.securityDefinitions();let a=e();return r?(r.entrySeq().forEach((([e,t])=>{const r=t?.get(\"type\");\"mutualTLS\"===r&&(a=a.push(new k.Map({[e]:t})))})),a):a})),Js=(0,_e.createSelector)([(e,t)=>t.specSelectors.url(),(e,t)=>t.oas3Selectors.selectedServer(),(e,t)=>t.specSelectors.selectLicenseUrlField(),(e,t)=>t.specSelectors.selectLicenseIdentifierField()],((e,t,r,a)=>r?safeBuildUrl(r,e,{selectedServer:t}):a?`https://spdx.org/licenses/${a}.html`:void 0)),keywords_Example=({schema:e,getSystem:t})=>{const{fn:r,getComponent:a}=t(),{hasKeyword:n}=r.jsonSchema202012.useFn(),s=a(\"JSONSchema202012JSONViewer\");return n(e,\"example\")?O().createElement(s,{name:\"Example\",value:e.example,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--example\"}):null},keywords_Xml=({schema:e,getSystem:t})=>{const r=e?.xml||{},{fn:a,getComponent:n,getConfigs:s}=t(),{showExtensions:o}=s(),{useComponent:l,useIsExpanded:c,usePath:i,useLevel:p}=a.jsonSchema202012,{path:m}=i(\"xml\"),{isExpanded:u,setExpanded:d,setCollapsed:h}=c(\"xml\"),[g,y]=p(),f=o?getExtensions(r):[],S=!!(r.name||r.namespace||r.prefix||f.length>0),E=l(\"Accordion\"),_=l(\"ExpandDeepButton\"),v=n(\"OpenAPI31Extensions\"),w=n(\"JSONSchema202012PathContext\")(),b=n(\"JSONSchema202012LevelContext\")(),C=(0,x.useCallback)((()=>{u?h():d()}),[u,d,h]),N=(0,x.useCallback)(((e,t)=>{t?d({deep:!0}):h({deep:!0})}),[d,h]);return 0===Object.keys(r).length?null:O().createElement(w.Provider,{value:m},O().createElement(b.Provider,{value:y},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--xml\",\"data-json-schema-level\":g},S?O().createElement(O().Fragment,null,O().createElement(E,{expanded:u,onChange:C},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\")),O().createElement(_,{expanded:u,onClick:N})):O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"XML\"),!0===r.attribute&&O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"attribute\"),!0===r.wrapped&&O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"wrapped\"),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!u})},u&&O().createElement(O().Fragment,null,r.name&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"name\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.name))),r.namespace&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"namespace\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.namespace))),r.prefix&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"prefix\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},r.prefix)))),f.length>0&&O().createElement(v,{openAPISpecObj:r,openAPIExtensions:f,getSystem:t})))))},Discriminator_DiscriminatorMapping=({discriminator:e})=>{const t=e?.mapping||{};return 0===Object.keys(t).length?null:Object.entries(t).map((([e,t])=>O().createElement(\"div\",{key:`${e}-${t}`,className:\"json-schema-2020-12-keyword\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},e),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},t))))},Discriminator_Discriminator=({schema:e,getSystem:t})=>{const r=e?.discriminator||{},{fn:a,getComponent:n,getConfigs:s}=t(),{showExtensions:o}=s(),{useComponent:l,useIsExpanded:c,usePath:i,useLevel:p}=a.jsonSchema202012,m=\"discriminator\",{path:u}=i(m),{isExpanded:d,setExpanded:h,setCollapsed:g}=c(m),[y,f]=p(),S=o?getExtensions(r):[],E=!!(r.mapping||S.length>0),_=l(\"Accordion\"),v=l(\"ExpandDeepButton\"),w=n(\"OpenAPI31Extensions\"),b=n(\"JSONSchema202012PathContext\")(),C=n(\"JSONSchema202012LevelContext\")(),N=(0,x.useCallback)((()=>{d?g():h()}),[d,h,g]),k=(0,x.useCallback)(((e,t)=>{t?h({deep:!0}):g({deep:!0})}),[h,g]);return 0===Object.keys(r).length?null:O().createElement(b.Provider,{value:u},O().createElement(C.Provider,{value:f},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--discriminator\",\"data-json-schema-level\":y},E?O().createElement(O().Fragment,null,O().createElement(_,{expanded:d,onChange:N},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\")),O().createElement(v,{expanded:d,onClick:k})):O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"Discriminator\"),r.propertyName&&O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},r.propertyName),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!d})},d&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(Discriminator_DiscriminatorMapping,{discriminator:r})),S.length>0&&O().createElement(w,{openAPISpecObj:r,openAPIExtensions:S,getSystem:t})))))},keywords_OpenAPIExtensions=({openAPISpecObj:e,getSystem:t,openAPIExtensions:r})=>{const{fn:a}=t(),{useComponent:n}=a.jsonSchema202012,s=n(\"JSONViewer\");return r.map((t=>O().createElement(s,{key:t,name:t,value:e[t],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))},keywords_ExternalDocs=({schema:e,getSystem:t})=>{const r=e?.externalDocs||{},{fn:a,getComponent:n,getConfigs:s}=t(),{showExtensions:o}=s(),{useComponent:l,useIsExpanded:c,usePath:i,useLevel:p}=a.jsonSchema202012,m=\"externalDocs\",{path:u}=i(m),{isExpanded:d,setExpanded:h,setCollapsed:g}=c(m),[y,f]=p(),S=o?getExtensions(r):[],E=!!(r.description||r.url||S.length>0),_=l(\"Accordion\"),v=l(\"ExpandDeepButton\"),w=n(\"JSONSchema202012KeywordDescription\"),b=n(\"Link\"),C=n(\"OpenAPI31Extensions\"),N=n(\"JSONSchema202012PathContext\")(),k=n(\"JSONSchema202012LevelContext\")(),A=(0,x.useCallback)((()=>{d?g():h()}),[d,h,g]),I=(0,x.useCallback)(((e,t)=>{t?h({deep:!0}):g({deep:!0})}),[h,g]);return 0===Object.keys(r).length?null:O().createElement(N.Provider,{value:u},O().createElement(k.Provider,{value:f},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--externalDocs\",\"data-json-schema-level\":y},E?O().createElement(O().Fragment,null,O().createElement(_,{expanded:d,onChange:A},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\")),O().createElement(v,{expanded:d,onClick:I})):O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"External documentation\"),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!d})},d&&O().createElement(O().Fragment,null,r.description&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(w,{schema:r,getSystem:t})),r.url&&O().createElement(\"li\",{className:\"json-schema-2020-12-property\"},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"url\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},O().createElement(b,{target:\"_blank\",href:sanitizeUrl(r.url)},r.url))))),S.length>0&&O().createElement(C,{openAPISpecObj:r,openAPIExtensions:S,getSystem:t})))))},keywords_Description=({schema:e,getSystem:t})=>{if(!e?.description)return null;const{getComponent:r}=t(),a=r(\"Markdown\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},O().createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},O().createElement(a,{source:e.description})))},$s=createOnlyOAS31ComponentWrapper(keywords_Description),Vs=createOnlyOAS31ComponentWrapper((({schema:e,getSystem:t,originalComponent:r})=>{const{getComponent:a}=t(),n=a(\"JSONSchema202012KeywordDiscriminator\"),s=a(\"JSONSchema202012KeywordXml\"),o=a(\"JSONSchema202012KeywordExample\"),l=a(\"JSONSchema202012KeywordExternalDocs\");return O().createElement(O().Fragment,null,O().createElement(r,{schema:e}),O().createElement(n,{schema:e,getSystem:t}),O().createElement(s,{schema:e,getSystem:t}),O().createElement(l,{schema:e,getSystem:t}),O().createElement(o,{schema:e,getSystem:t}))})),Ls=Vs,keywords_Properties=({schema:e,getSystem:t})=>{const{fn:r,getComponent:a}=t(),{useComponent:n,usePath:s}=r.jsonSchema202012,{getDependentRequired:o,getProperties:l}=r.jsonSchema202012.useFn(),c=r.jsonSchema202012.useConfig(),i=Array.isArray(e?.required)?e.required:[],{path:p}=s(\"properties\"),m=n(\"JSONSchema\"),u=a(\"JSONSchema202012PathContext\")(),d=l(e,c);return 0===Object.keys(d).length?null:O().createElement(u.Provider,{value:p},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},O().createElement(\"ul\",null,Object.entries(d).map((([t,r])=>{const a=i.includes(t),n=o(t,e);return O().createElement(\"li\",{key:t,className:pt()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":a})},O().createElement(m,{name:t,schema:r,dependentRequired:n}))})))))},Ds=createOnlyOAS31ComponentWrapper(keywords_Properties);const Us=function oas31_after_load_afterLoad({fn:e,getSystem:t}){if(e.jsonSchema202012){const r=((e,t)=>{const{fn:r}=t();if(\"function\"!=typeof e)return null;const{hasKeyword:a}=r.jsonSchema202012;return t=>e(t)||a(t,\"example\")||t?.xml||t?.discriminator||t?.externalDocs})(e.jsonSchema202012.isExpandable,t);Object.assign(this.fn.jsonSchema202012,{isExpandable:r,getProperties})}if(\"function\"==typeof e.sampleFromSchema&&e.jsonSchema202012){const r=wrapOAS31Fn({sampleFromSchema:e.jsonSchema202012.sampleFromSchema,sampleFromSchemaGeneric:e.jsonSchema202012.sampleFromSchemaGeneric,createXMLExample:e.jsonSchema202012.createXMLExample,memoizedSampleFromSchema:e.jsonSchema202012.memoizedSampleFromSchema,memoizedCreateXMLExample:e.jsonSchema202012.memoizedCreateXMLExample,getJsonSampleSchema:e.jsonSchema202012.getJsonSampleSchema,getYamlSampleSchema:e.jsonSchema202012.getYamlSampleSchema,getXmlSampleSchema:e.jsonSchema202012.getXmlSampleSchema,getSampleSchema:e.jsonSchema202012.getSampleSchema,mergeJsonSchema:e.jsonSchema202012.mergeJsonSchema},t());Object.assign(this.fn,r)}const r=(e=>(t,r=null)=>{const{fn:a}=e();if(a.isFileUploadIntendedOAS30(t,r))return!0;const n=k.Map.isMap(t);if(!n&&!wt()(t))return!1;const s=n?t.get(\"contentMediaType\"):t.contentMediaType,o=n?t.get(\"contentEncoding\"):t.contentEncoding;return\"string\"==typeof s&&\"\"!==s||\"string\"==typeof o&&\"\"!==o})(t),{isFileUploadIntended:a}=wrapOAS31Fn({isFileUploadIntended:r},t());if(this.fn.isFileUploadIntended=a,this.fn.isFileUploadIntendedOAS31=r,e.jsonSchema202012){const{hasSchemaType:r}=wrapOAS31Fn({hasSchemaType:e.jsonSchema202012.hasSchemaType},t());this.fn.hasSchemaType=r}},oas31=({fn:e})=>{const t=e.createSystemSelector||fn_createSystemSelector,r=e.createOnlyOAS31Selector||fn_createOnlyOAS31Selector;return{afterLoad:Us,fn:{isOAS31,createSystemSelector:fn_createSystemSelector,createOnlyOAS31Selector:fn_createOnlyOAS31Selector},components:{Webhooks:webhooks,JsonSchemaDialect:json_schema_dialect,MutualTLSAuth:mutual_tls_auth,OAS31Info:oas31_components_info,OAS31License:components_license,OAS31Contact:components_contact,OAS31VersionPragmaFilter:version_pragma_filter,OAS31Model:gs,OAS31Models:models,OAS31Auths:ys,JSONSchema202012KeywordExample:keywords_Example,JSONSchema202012KeywordXml:keywords_Xml,JSONSchema202012KeywordDiscriminator:Discriminator_Discriminator,JSONSchema202012KeywordExternalDocs:keywords_ExternalDocs,OpenAPI31Extensions:keywords_OpenAPIExtensions},wrapComponents:{InfoContainer:Es,License:fs,Contact:Ss,VersionPragmaFilter:wrap_components_version_pragma_filter,Model:vs,Models:bs,AuthItem:xs,auths:Os,JSONSchema202012KeywordDescription:$s,JSONSchema202012KeywordExamples:Ls,JSONSchema202012KeywordProperties:Ds},statePlugins:{auth:{wrapSelectors:{definitionsToAuthorize:Rs}},spec:{selectors:{isOAS31:t(ks),license:selectors_license,selectLicenseNameField,selectLicenseUrlField,selectLicenseIdentifierField:r(selectLicenseIdentifierField),selectLicenseUrl:t(Is),contact:selectors_contact,selectContactNameField,selectContactEmailField,selectContactUrlField,selectContactUrl:t(js),selectInfoTitleField,selectInfoSummaryField:r(selectInfoSummaryField),selectInfoDescriptionField,selectInfoTermsOfServiceField,selectInfoTermsOfServiceUrl:t(qs),selectExternalDocsDescriptionField,selectExternalDocsUrlField,selectExternalDocsUrl:t(Ps),webhooks:r(selectors_webhooks),selectWebhooksOperations:r(t(As)),selectJsonSchemaDialectField,selectJsonSchemaDialectDefault,selectSchemas:t(Ms)},wrapSelectors:{isOAS3:wrap_selectors_isOAS3,selectLicenseUrl:Ts}},oas31:{selectors:{selectLicenseUrl:r(t(Js))}}}}},Ks=Oe().object,zs=Oe().bool,Bs=(Oe().oneOfType([Ks,zs]),(0,x.createContext)(null));Bs.displayName=\"JSONSchemaContext\";const Fs=(0,x.createContext)(0);Fs.displayName=\"JSONSchemaLevelContext\";const Ws=(0,x.createContext)(new Set),Hs=(0,x.createContext)([]);class JSONSchemaIsExpandedState{static Collapsed=\"collapsed\";static Expanded=\"expanded\";static DeeplyExpanded=\"deeply-expanded\"}const useConfig=()=>{const{config:e}=(0,x.useContext)(Bs);return e},useComponent=e=>{const{components:t}=(0,x.useContext)(Bs);return t[e]||null},useFn=(e=void 0)=>{const{fn:t}=(0,x.useContext)(Bs);return void 0!==e?t[e]:t},useJSONSchemaContextState=()=>{const[,e]=(0,x.useState)(null),{state:t}=(0,x.useContext)(Bs);return{state:t,setState:r=>{r(t),e({})}}},useLevel=()=>{const e=(0,x.useContext)(Fs);return[e,e+1]},usePath=e=>{const t=(0,x.useContext)(Hs),{setState:r}=useJSONSchemaContextState(),a=\"string\"==typeof e?[...t,e]:t;return{path:a,pathMutator:(e,t={deep:!1})=>{const n=a.toString(),updateFn=t=>{t.paths[n]=e,e===JSONSchemaIsExpandedState.Collapsed&&Object.keys(t.paths).forEach((e=>{e.startsWith(n)&&t.paths[e]===JSONSchemaIsExpandedState.DeeplyExpanded&&(t.paths[e]=JSONSchemaIsExpandedState.Expanded)}))},updateDeepFn=t=>{Object.keys(t.paths).forEach((r=>{r.startsWith(n)&&(t.paths[r]=e)}))};t.deep?r(updateDeepFn):r(updateFn)}}},useIsExpanded=e=>{const[t]=useLevel(),{defaultExpandedLevels:r}=useConfig(),{path:a,pathMutator:n}=usePath(e),{path:s}=usePath(),{state:o}=useJSONSchemaContextState(),l=o.paths[a.toString()],c=o.paths[s.toString()]??o.paths[s.slice(0,-1).toString()],i=l??(r-t>0?JSONSchemaIsExpandedState.Expanded:JSONSchemaIsExpandedState.Collapsed),p=i!==JSONSchemaIsExpandedState.Collapsed;(0,x.useEffect)((()=>{n(c===JSONSchemaIsExpandedState.DeeplyExpanded?JSONSchemaIsExpandedState.DeeplyExpanded:i)}),[c]);return{isExpanded:p,setExpanded:(0,x.useCallback)(((e={deep:!1})=>{n(e.deep?JSONSchemaIsExpandedState.DeeplyExpanded:JSONSchemaIsExpandedState.Expanded)}),[]),setCollapsed:(0,x.useCallback)(((e={deep:!1})=>{n(JSONSchemaIsExpandedState.Collapsed,e)}),[])}},useRenderedSchemas=(e=void 0)=>{if(void 0===e)return(0,x.useContext)(Ws);const t=(0,x.useContext)(Ws);return new Set([...t,e])},Xs=(0,x.forwardRef)((({schema:e,name:t=\"\",dependentRequired:r=[],onExpand:a=()=>{},identifier:n=\"\"},s)=>{const o=useFn(),l=n||e?.$id||t,{path:c}=usePath(l),{isExpanded:i,setExpanded:p,setCollapsed:m}=useIsExpanded(l),[u,d]=useLevel(),h=(()=>{const[e]=useLevel();return e>0})(),g=o.isExpandable(e)||r.length>0,y=(e=>useRenderedSchemas().has(e))(e),f=useRenderedSchemas(e),S=o.stringifyConstraints(e),E=useComponent(\"Accordion\"),_=useComponent(\"Keyword$schema\"),v=useComponent(\"Keyword$vocabulary\"),w=useComponent(\"Keyword$id\"),b=useComponent(\"Keyword$anchor\"),C=useComponent(\"Keyword$dynamicAnchor\"),N=useComponent(\"Keyword$ref\"),k=useComponent(\"Keyword$dynamicRef\"),A=useComponent(\"Keyword$defs\"),I=useComponent(\"Keyword$comment\"),j=useComponent(\"KeywordAllOf\"),q=useComponent(\"KeywordAnyOf\"),P=useComponent(\"KeywordOneOf\"),M=useComponent(\"KeywordNot\"),T=useComponent(\"KeywordIf\"),R=useComponent(\"KeywordThen\"),J=useComponent(\"KeywordElse\"),$=useComponent(\"KeywordDependentSchemas\"),V=useComponent(\"KeywordPrefixItems\"),L=useComponent(\"KeywordItems\"),D=useComponent(\"KeywordContains\"),U=useComponent(\"KeywordProperties\"),K=useComponent(\"KeywordPatternProperties\"),z=useComponent(\"KeywordAdditionalProperties\"),B=useComponent(\"KeywordPropertyNames\"),F=useComponent(\"KeywordUnevaluatedItems\"),W=useComponent(\"KeywordUnevaluatedProperties\"),H=useComponent(\"KeywordType\"),X=useComponent(\"KeywordEnum\"),G=useComponent(\"KeywordConst\"),Y=useComponent(\"KeywordConstraint\"),Q=useComponent(\"KeywordDependentRequired\"),Z=useComponent(\"KeywordContentSchema\"),ee=useComponent(\"KeywordTitle\"),te=useComponent(\"KeywordDescription\"),re=useComponent(\"KeywordDefault\"),ae=useComponent(\"KeywordDeprecated\"),ne=useComponent(\"KeywordReadOnly\"),se=useComponent(\"KeywordWriteOnly\"),oe=useComponent(\"KeywordExamples\"),le=useComponent(\"ExtensionKeywords\"),ce=useComponent(\"ExpandDeepButton\"),ie=(0,x.useCallback)(((e,t)=>{t?p():m(),a(e,t,!1)}),[a,p,m]),pe=(0,x.useCallback)(((e,t)=>{t?p({deep:!0}):m({deep:!0}),a(e,t,!0)}),[a,p,m]);return O().createElement(Hs.Provider,{value:c},O().createElement(Fs.Provider,{value:d},O().createElement(Ws.Provider,{value:f},O().createElement(\"article\",{ref:s,\"data-json-schema-level\":u,className:pt()(\"json-schema-2020-12\",{\"json-schema-2020-12--embedded\":h,\"json-schema-2020-12--circular\":y})},O().createElement(\"div\",{className:\"json-schema-2020-12-head\"},g&&!y?O().createElement(O().Fragment,null,O().createElement(E,{expanded:i,onChange:ie},O().createElement(ee,{title:t,schema:e})),O().createElement(ce,{expanded:i,onClick:pe})):O().createElement(ee,{title:t,schema:e}),O().createElement(ae,{schema:e}),O().createElement(ne,{schema:e}),O().createElement(se,{schema:e}),O().createElement(H,{schema:e,isCircular:y}),S.length>0&&S.map((e=>O().createElement(Y,{key:`${e.scope}-${e.value}`,constraint:e})))),O().createElement(\"div\",{className:pt()(\"json-schema-2020-12-body\",{\"json-schema-2020-12-body--collapsed\":!i})},i&&O().createElement(O().Fragment,null,O().createElement(te,{schema:e}),!y&&g&&O().createElement(O().Fragment,null,O().createElement(U,{schema:e}),O().createElement(K,{schema:e}),O().createElement(z,{schema:e}),O().createElement(W,{schema:e}),O().createElement(B,{schema:e}),O().createElement(j,{schema:e}),O().createElement(q,{schema:e}),O().createElement(P,{schema:e}),O().createElement(M,{schema:e}),O().createElement(T,{schema:e}),O().createElement(R,{schema:e}),O().createElement(J,{schema:e}),O().createElement($,{schema:e}),O().createElement(V,{schema:e}),O().createElement(L,{schema:e}),O().createElement(F,{schema:e}),O().createElement(D,{schema:e}),O().createElement(Z,{schema:e})),O().createElement(X,{schema:e}),O().createElement(G,{schema:e}),O().createElement(Q,{schema:e,dependentRequired:r}),O().createElement(re,{schema:e}),O().createElement(oe,{schema:e}),O().createElement(_,{schema:e}),O().createElement(v,{schema:e}),O().createElement(w,{schema:e}),O().createElement(b,{schema:e}),O().createElement(C,{schema:e}),O().createElement(N,{schema:e}),!y&&g&&O().createElement(A,{schema:e}),O().createElement(k,{schema:e}),O().createElement(I,{schema:e}),O().createElement(le,{schema:e})))))))})),Gs=Xs,keywords_$schema=({schema:e})=>e?.$schema?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$schema\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$schema\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$schema)):null,$vocabulary_$vocabulary=({schema:e})=>{const t=\"$vocabulary\",{path:r}=usePath(t),{isExpanded:a,setExpanded:n,setCollapsed:s}=useIsExpanded(t),o=useComponent(\"Accordion\"),l=(0,x.useCallback)((()=>{a?s():n()}),[a,n,s]);return e?.$vocabulary?\"object\"!=typeof e.$vocabulary?null:O().createElement(Hs.Provider,{value:r},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$vocabulary\"},O().createElement(o,{expanded:a,onChange:l},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$vocabulary\")),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",null,a&&Object.entries(e.$vocabulary).map((([e,t])=>O().createElement(\"li\",{key:e,className:pt()(\"json-schema-2020-12-$vocabulary-uri\",{\"json-schema-2020-12-$vocabulary-uri--disabled\":!t})},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e))))))):null},keywords_$id=({schema:e})=>e?.$id?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$id\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$id\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$id)):null,keywords_$anchor=({schema:e})=>e?.$anchor?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$anchor\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$anchor\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$anchor)):null,keywords_$dynamicAnchor=({schema:e})=>e?.$dynamicAnchor?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicAnchor\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicAnchor\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$dynamicAnchor)):null,keywords_$ref=({schema:e})=>e?.$ref?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$ref\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$ref\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$ref)):null,keywords_$dynamicRef=({schema:e})=>e?.$dynamicRef?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$dynamicRef\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$dynamicRef\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$dynamicRef)):null,keywords_$defs=({schema:e})=>{const t=e?.$defs||{},r=\"$defs\",{path:a}=usePath(r),{isExpanded:n,setExpanded:s,setCollapsed:o}=useIsExpanded(r),[l,c]=useLevel(),i=useComponent(\"Accordion\"),p=useComponent(\"ExpandDeepButton\"),m=useComponent(\"JSONSchema\"),u=(0,x.useCallback)((()=>{n?o():s()}),[n,s,o]),d=(0,x.useCallback)(((e,t)=>{t?s({deep:!0}):o({deep:!0})}),[s,o]);return 0===Object.keys(t).length?null:O().createElement(Hs.Provider,{value:a},O().createElement(Fs.Provider,{value:c},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$defs\",\"data-json-schema-level\":l},O().createElement(i,{expanded:n,onChange:u},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$defs\")),O().createElement(p,{expanded:n,onClick:d}),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!n})},n&&O().createElement(O().Fragment,null,Object.entries(t).map((([e,t])=>O().createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},O().createElement(m,{name:e,schema:t})))))))))},keywords_$comment=({schema:e})=>e?.$comment?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--$comment\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--secondary\"},\"$comment\"),O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--secondary\"},e.$comment)):null,keywords_AllOf=({schema:e})=>{const t=e?.allOf||[],r=useFn(),a=\"allOf\",{path:n}=usePath(a),{isExpanded:s,setExpanded:o,setCollapsed:l}=useIsExpanded(a),[c,i]=useLevel(),p=useComponent(\"Accordion\"),m=useComponent(\"ExpandDeepButton\"),u=useComponent(\"JSONSchema\"),d=useComponent(\"KeywordType\"),h=(0,x.useCallback)((()=>{s?l():o()}),[s,o,l]),g=(0,x.useCallback)(((e,t)=>{t?o({deep:!0}):l({deep:!0})}),[o,l]);return Array.isArray(t)&&0!==t.length?O().createElement(Hs.Provider,{value:n},O().createElement(Fs.Provider,{value:i},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--allOf\",\"data-json-schema-level\":c},O().createElement(p,{expanded:s,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"All of\")),O().createElement(m,{expanded:s,onClick:g}),O().createElement(d,{schema:{allOf:t}}),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!s})},s&&O().createElement(O().Fragment,null,t.map(((e,t)=>O().createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},O().createElement(u,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null},keywords_AnyOf=({schema:e})=>{const t=e?.anyOf||[],r=useFn(),a=\"anyOf\",{path:n}=usePath(a),{isExpanded:s,setExpanded:o,setCollapsed:l}=useIsExpanded(a),[c,i]=useLevel(),p=useComponent(\"Accordion\"),m=useComponent(\"ExpandDeepButton\"),u=useComponent(\"JSONSchema\"),d=useComponent(\"KeywordType\"),h=(0,x.useCallback)((()=>{s?l():o()}),[s,o,l]),g=(0,x.useCallback)(((e,t)=>{t?o({deep:!0}):l({deep:!0})}),[o,l]);return Array.isArray(t)&&0!==t.length?O().createElement(Hs.Provider,{value:n},O().createElement(Fs.Provider,{value:i},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--anyOf\",\"data-json-schema-level\":c},O().createElement(p,{expanded:s,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Any of\")),O().createElement(m,{expanded:s,onClick:g}),O().createElement(d,{schema:{anyOf:t}}),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!s})},s&&O().createElement(O().Fragment,null,t.map(((e,t)=>O().createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},O().createElement(u,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null},keywords_OneOf=({schema:e})=>{const t=e?.oneOf||[],r=useFn(),a=\"oneOf\",{path:n}=usePath(a),{isExpanded:s,setExpanded:o,setCollapsed:l}=useIsExpanded(a),[c,i]=useLevel(),p=useComponent(\"Accordion\"),m=useComponent(\"ExpandDeepButton\"),u=useComponent(\"JSONSchema\"),d=useComponent(\"KeywordType\"),h=(0,x.useCallback)((()=>{s?l():o()}),[s,o,l]),g=(0,x.useCallback)(((e,t)=>{t?o({deep:!0}):l({deep:!0})}),[o,l]);return Array.isArray(t)&&0!==t.length?O().createElement(Hs.Provider,{value:n},O().createElement(Fs.Provider,{value:i},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--oneOf\",\"data-json-schema-level\":c},O().createElement(p,{expanded:s,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"One of\")),O().createElement(m,{expanded:s,onClick:g}),O().createElement(d,{schema:{oneOf:t}}),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!s})},s&&O().createElement(O().Fragment,null,t.map(((e,t)=>O().createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},O().createElement(u,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null},keywords_Not=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"not\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Not\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--not\"},O().createElement(r,{name:a,schema:e.not,identifier:\"not\"}))},keywords_If=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"if\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"If\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},O().createElement(r,{name:a,schema:e.if,identifier:\"if\"}))},keywords_Then=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"then\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Then\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--then\"},O().createElement(r,{name:a,schema:e.then,identifier:\"then\"}))},keywords_Else=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"else\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Else\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--if\"},O().createElement(r,{name:a,schema:e.else,identifier:\"else\"}))},keywords_DependentSchemas=({schema:e})=>{const t=e?.dependentSchemas||[],r=\"dependentSchemas\",{path:a}=usePath(r),{isExpanded:n,setExpanded:s,setCollapsed:o}=useIsExpanded(r),[l,c]=useLevel(),i=useComponent(\"Accordion\"),p=useComponent(\"ExpandDeepButton\"),m=useComponent(\"JSONSchema\"),u=(0,x.useCallback)((()=>{n?o():s()}),[n,s,o]),d=(0,x.useCallback)(((e,t)=>{t?s({deep:!0}):o({deep:!0})}),[s,o]);return\"object\"!=typeof t||0===Object.keys(t).length?null:O().createElement(Hs.Provider,{value:a},O().createElement(Fs.Provider,{value:c},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentSchemas\",\"data-json-schema-level\":l},O().createElement(i,{expanded:n,onChange:u},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Dependent schemas\")),O().createElement(p,{expanded:n,onClick:d}),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!n})},n&&O().createElement(O().Fragment,null,Object.entries(t).map((([e,t])=>O().createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},O().createElement(m,{name:e,schema:t})))))))))},keywords_PrefixItems=({schema:e})=>{const t=e?.prefixItems||[],r=useFn(),a=\"prefixItems\",{path:n}=usePath(a),{isExpanded:s,setExpanded:o,setCollapsed:l}=useIsExpanded(a),[c,i]=useLevel(),p=useComponent(\"Accordion\"),m=useComponent(\"ExpandDeepButton\"),u=useComponent(\"JSONSchema\"),d=useComponent(\"KeywordType\"),h=(0,x.useCallback)((()=>{s?l():o()}),[s,o,l]),g=(0,x.useCallback)(((e,t)=>{t?o({deep:!0}):l({deep:!0})}),[o,l]);return Array.isArray(t)&&0!==t.length?O().createElement(Hs.Provider,{value:n},O().createElement(Fs.Provider,{value:i},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--prefixItems\",\"data-json-schema-level\":c},O().createElement(p,{expanded:s,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Prefix items\")),O().createElement(m,{expanded:s,onClick:g}),O().createElement(d,{schema:{prefixItems:t}}),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!s})},s&&O().createElement(O().Fragment,null,t.map(((e,t)=>O().createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},O().createElement(u,{name:`#${t} ${r.getTitle(e)}`,schema:e}))))))))):null},keywords_Items=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"items\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Items\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--items\"},O().createElement(r,{name:a,schema:e.items,identifier:\"items\"}))},keywords_Contains=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"contains\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Contains\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contains\"},O().createElement(r,{name:a,schema:e.contains,identifier:\"contains\"}))},keywords_Properties_Properties=({schema:e})=>{const t=useFn(),r=e?.properties||{},a=Array.isArray(e?.required)?e.required:[],n=useComponent(\"JSONSchema\"),{path:s}=usePath(\"properties\");return 0===Object.keys(r).length?null:O().createElement(Hs.Provider,{value:s},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--properties\"},O().createElement(\"ul\",null,Object.entries(r).map((([r,s])=>{const o=a.includes(r),l=t.getDependentRequired(r,e);return O().createElement(\"li\",{key:r,className:pt()(\"json-schema-2020-12-property\",{\"json-schema-2020-12-property--required\":o})},O().createElement(n,{name:r,schema:s,dependentRequired:l}))})))))},PatternProperties_PatternProperties=({schema:e})=>{const t=e?.patternProperties||{},r=useComponent(\"JSONSchema\"),{path:a}=usePath(\"patternProperties\");return 0===Object.keys(t).length?null:O().createElement(Hs.Provider,{value:a},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--patternProperties\"},O().createElement(\"ul\",null,Object.entries(t).map((([e,t])=>O().createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},O().createElement(r,{name:e,schema:t})))))))},keywords_AdditionalProperties=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"additionalProperties\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Additional properties\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--additionalProperties\"},!0===e.additionalProperties?O().createElement(O().Fragment,null,a,O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"allowed\")):!1===e.additionalProperties?O().createElement(O().Fragment,null,a,O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},\"forbidden\")):O().createElement(r,{name:a,schema:e.additionalProperties,identifier:\"additionalProperties\"}))},keywords_PropertyNames=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\"),a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Property names\");return t.hasKeyword(e,\"propertyNames\")?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--propertyNames\"},O().createElement(r,{name:a,schema:e.propertyNames,identifier:\"propertyNames\"})):null},keywords_UnevaluatedItems=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"unevaluatedItems\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated items\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedItems\"},O().createElement(r,{name:a,schema:e.unevaluatedItems,identifier:\"unevaluatedItems\"}))},keywords_UnevaluatedProperties=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"unevaluatedProperties\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Unevaluated properties\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--unevaluatedProperties\"},O().createElement(r,{name:a,schema:e.unevaluatedProperties,identifier:\"unevaluatedProperties\"}))},keywords_Type=({schema:e,isCircular:t=!1})=>{const r=useFn().getType(e),a=t?\" [circular]\":\"\";return O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},`${r}${a}`)},Enum_Enum=({schema:e})=>{const t=useComponent(\"JSONViewer\");return Array.isArray(e?.enum)?O().createElement(t,{name:\"Enum\",value:e.enum,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--enum\"}):null},Const_Const=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONViewer\");return t.hasKeyword(e,\"const\")?O().createElement(r,{name:\"Const\",value:e.const,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--const\"}):null},fn_upperFirst=e=>\"string\"==typeof e?`${e.charAt(0).toUpperCase()}${e.slice(1)}`:e,makeGetTitle=e=>(t,{lookup:r=\"extended\"}={})=>{const a=e();if(null!=t?.title)return a.upperFirst(String(t.title));if(\"extended\"===r){if(null!=t?.$anchor)return a.upperFirst(String(t.$anchor));if(null!=t?.$id)return String(t.$id)}return\"\"},makeGetType=e=>{const getType=(t,r=new WeakSet)=>{const a=e();if(null==t)return\"any\";if(a.isBooleanJSONSchema(t))return t?\"any\":\"never\";if(\"object\"!=typeof t)return\"any\";if(r.has(t))return\"any\";r.add(t);const{type:n,prefixItems:s,items:o}=t,getArrayType=()=>{if(Array.isArray(s)){const e=s.map((e=>getType(e,r))),t=o?getType(o,r):\"any\";return`array<[${e.join(\", \")}], ${t}>`}if(o){return`array<${getType(o,r)}>`}return\"array<any>\"};if(t.not&&\"any\"===getType(t.not))return\"never\";const handleCombiningKeywords=(e,a)=>{if(Array.isArray(t[e])){return`(${t[e].map((e=>getType(e,r))).join(a)})`}return null},l=[Array.isArray(n)?n.map((e=>\"array\"===e?getArrayType():e)).join(\" | \"):\"array\"===n?getArrayType():[\"null\",\"boolean\",\"object\",\"array\",\"number\",\"integer\",\"string\"].includes(n)?n:(()=>{if(Object.hasOwn(t,\"prefixItems\")||Object.hasOwn(t,\"items\")||Object.hasOwn(t,\"contains\"))return getArrayType();if(Object.hasOwn(t,\"properties\")||Object.hasOwn(t,\"additionalProperties\")||Object.hasOwn(t,\"patternProperties\"))return\"object\";if([\"int32\",\"int64\"].includes(t.format))return\"integer\";if([\"float\",\"double\"].includes(t.format))return\"number\";if(Object.hasOwn(t,\"minimum\")||Object.hasOwn(t,\"maximum\")||Object.hasOwn(t,\"exclusiveMinimum\")||Object.hasOwn(t,\"exclusiveMaximum\")||Object.hasOwn(t,\"multipleOf\"))return\"number | integer\";if(Object.hasOwn(t,\"pattern\")||Object.hasOwn(t,\"format\")||Object.hasOwn(t,\"minLength\")||Object.hasOwn(t,\"maxLength\")||Object.hasOwn(t,\"contentEncoding\")||Object.hasOwn(t,\"contentMediaType\"))return\"string\";if(void 0!==t.const){if(null===t.const)return\"null\";if(\"boolean\"==typeof t.const)return\"boolean\";if(\"number\"==typeof t.const)return Number.isInteger(t.const)?\"integer\":\"number\";if(\"string\"==typeof t.const)return\"string\";if(Array.isArray(t.const))return\"array<any>\";if(\"object\"==typeof t.const)return\"object\"}return null})(),handleCombiningKeywords(\"oneOf\",\" | \"),handleCombiningKeywords(\"anyOf\",\" | \"),handleCombiningKeywords(\"allOf\",\" & \")].filter(Boolean).join(\" | \");return r.delete(t),l||\"any\"};return getType},isBooleanJSONSchema=e=>\"boolean\"==typeof e,hasKeyword=(e,t)=>null!==e&&\"object\"==typeof e&&Object.hasOwn(e,t),fn_makeIsExpandable=e=>t=>{const r=e();return t?.$schema||t?.$vocabulary||t?.$id||t?.$anchor||t?.$dynamicAnchor||t?.$ref||t?.$dynamicRef||t?.$defs||t?.$comment||t?.allOf||t?.anyOf||t?.oneOf||r.hasKeyword(t,\"not\")||r.hasKeyword(t,\"if\")||r.hasKeyword(t,\"then\")||r.hasKeyword(t,\"else\")||t?.dependentSchemas||t?.prefixItems||r.hasKeyword(t,\"items\")||r.hasKeyword(t,\"contains\")||t?.properties||t?.patternProperties||r.hasKeyword(t,\"additionalProperties\")||r.hasKeyword(t,\"propertyNames\")||r.hasKeyword(t,\"unevaluatedItems\")||r.hasKeyword(t,\"unevaluatedProperties\")||t?.description||t?.enum||r.hasKeyword(t,\"const\")||r.hasKeyword(t,\"contentSchema\")||r.hasKeyword(t,\"default\")||t?.examples||r.getExtensionKeywords(t).length>0},fn_stringify=e=>null===e||[\"number\",\"bigint\",\"boolean\"].includes(typeof e)?String(e):Array.isArray(e)?`[${e.map(fn_stringify).join(\", \")}]`:JSON.stringify(e),stringifyConstraintRange=(e,t,r)=>{const a=\"number\"==typeof t,n=\"number\"==typeof r;return a&&n?t===r?`${t} ${e}`:`[${t}, ${r}] ${e}`:a?`≥ ${t} ${e}`:n?`≤ ${r} ${e}`:null},stringifyConstraints=e=>{const t=[],r=(e=>{if(\"number\"!=typeof e?.multipleOf)return null;if(e.multipleOf<=0)return null;if(1===e.multipleOf)return null;const{multipleOf:t}=e;if(Number.isInteger(t))return`multiple of ${t}`;const r=10**t.toString().split(\".\")[1].length;return`multiple of ${t*r}/${r}`})(e);null!==r&&t.push({scope:\"number\",value:r});const a=(e=>{const t=e?.minimum,r=e?.maximum,a=e?.exclusiveMinimum,n=e?.exclusiveMaximum,s=\"number\"==typeof t,o=\"number\"==typeof r,l=\"number\"==typeof a,c=\"number\"==typeof n,i=l&&(!s||t<a),p=c&&(!o||r>n);if((s||l)&&(o||c))return`${i?\"(\":\"[\"}${i?a:t}, ${p?n:r}${p?\")\":\"]\"}`;if(s||l)return`${i?\">\":\"≥\"} ${i?a:t}`;if(o||c)return`${p?\"<\":\"≤\"} ${p?n:r}`;return null})(e);null!==a&&t.push({scope:\"number\",value:a}),e?.format&&t.push({scope:\"string\",value:e.format});const n=stringifyConstraintRange(\"characters\",e?.minLength,e?.maxLength);null!==n&&t.push({scope:\"string\",value:n}),e?.pattern&&t.push({scope:\"string\",value:`matches ${e?.pattern}`}),e?.contentMediaType&&t.push({scope:\"string\",value:`media type: ${e.contentMediaType}`}),e?.contentEncoding&&t.push({scope:\"string\",value:`encoding: ${e.contentEncoding}`});const s=stringifyConstraintRange(e?.uniqueItems?\"unique items\":\"items\",e?.minItems,e?.maxItems);null!==s&&t.push({scope:\"array\",value:s}),e?.uniqueItems&&!s&&t.push({scope:\"array\",value:\"unique\"});const o=stringifyConstraintRange(\"contained items\",e?.minContains,e?.maxContains);null!==o&&t.push({scope:\"array\",value:o});const l=stringifyConstraintRange(\"properties\",e?.minProperties,e?.maxProperties);return null!==l&&t.push({scope:\"object\",value:l}),t},getDependentRequired=(e,t)=>t?.dependentRequired?Array.from(Object.entries(t.dependentRequired).reduce(((t,[r,a])=>Array.isArray(a)&&a.includes(e)?(t.add(r),t):t),new Set)):[],isPlainObject=e=>\"object\"==typeof e&&null!==e&&!Array.isArray(e)&&(null===Object.getPrototypeOf(e)||Object.getPrototypeOf(e)===Object.prototype),getSchemaKeywords=()=>[\"$schema\",\"$vocabulary\",\"$id\",\"$anchor\",\"$dynamicAnchor\",\"$dynamicRef\",\"$ref\",\"$defs\",\"$comment\",\"allOf\",\"anyOf\",\"oneOf\",\"not\",\"if\",\"then\",\"else\",\"dependentSchemas\",\"prefixItems\",\"items\",\"contains\",\"properties\",\"patternProperties\",\"additionalProperties\",\"propertyNames\",\"unevaluatedItems\",\"unevaluatedProperties\",\"type\",\"enum\",\"const\",\"multipleOf\",\"maximum\",\"exclusiveMaximum\",\"minimum\",\"exclusiveMinimum\",\"maxLength\",\"minLength\",\"pattern\",\"maxItems\",\"minItems\",\"uniqueItems\",\"maxContains\",\"minContains\",\"maxProperties\",\"minProperties\",\"required\",\"dependentRequired\",\"title\",\"description\",\"default\",\"deprecated\",\"readOnly\",\"writeOnly\",\"examples\",\"format\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],makeGetExtensionKeywords=e=>t=>{const r=e().getSchemaKeywords();return isPlainObject(t)?((e,t)=>{const r=new Set(t);return e.filter((e=>!r.has(e)))})(Object.keys(t),r):[]},fn_hasSchemaType=(e,t)=>{const r=k.Map.isMap(e);if(!r&&!isPlainObject(e))return!1;const hasType=e=>t===e||Array.isArray(t)&&t.includes(e),a=r?e.get(\"type\"):e.type;return k.List.isList(a)||Array.isArray(a)?a.some((e=>hasType(e))):hasType(a)},Constraint=({constraint:e})=>isPlainObject(e)&&\"string\"==typeof e.scope&&\"string\"==typeof e.value?O().createElement(\"span\",{className:`json-schema-2020-12__constraint json-schema-2020-12__constraint--${e.scope}`},e.value):null,Ys=O().memo(Constraint),DependentRequired_DependentRequired=({dependentRequired:e})=>Array.isArray(e)&&0!==e.length?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--dependentRequired\"},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Required when defined\"),O().createElement(\"ul\",null,e.map((e=>O().createElement(\"li\",{key:e},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__value json-schema-2020-12-keyword__value--warning\"},e)))))):null,keywords_ContentSchema=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONSchema\");if(!t.hasKeyword(e,\"contentSchema\"))return null;const a=O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--primary\"},\"Content schema\");return O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--contentSchema\"},O().createElement(r,{name:a,schema:e.contentSchema,identifier:\"contentSchema\"}))},Title_Title=({title:e=\"\",schema:t})=>{const r=useFn(),a=e||r.getTitle(t);return a?O().createElement(\"div\",{className:\"json-schema-2020-12__title\"},a):null},keywords_Description_Description=({schema:e})=>e?.description?O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--description\"},O().createElement(\"div\",{className:\"json-schema-2020-12-core-keyword__value json-schema-2020-12-core-keyword__value--secondary\"},e.description)):null,Default_Default=({schema:e})=>{const t=useFn(),r=useComponent(\"JSONViewer\");return t.hasKeyword(e,\"default\")?O().createElement(r,{name:\"Default\",value:e.default,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--default\"}):null},keywords_Deprecated=({schema:e})=>!0!==e?.deprecated?null:O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--warning\"},\"deprecated\"),keywords_ReadOnly=({schema:e})=>!0!==e?.readOnly?null:O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"read-only\"),keywords_WriteOnly=({schema:e})=>!0!==e?.writeOnly?null:O().createElement(\"span\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--muted\"},\"write-only\"),keywords_Examples_Examples=({schema:e})=>{const t=e?.examples||[],r=useComponent(\"JSONViewer\");return Array.isArray(t)&&0!==t.length?O().createElement(r,{name:\"Examples\",value:e.examples,className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--examples\"}):null},ExtensionKeywords_ExtensionKeywords=({schema:e})=>{const t=useFn(),r=\"ExtensionKeywords\",{path:a}=usePath(r),{isExpanded:n,setExpanded:s,setCollapsed:o}=useIsExpanded(r),[l,c]=useLevel(),i=useComponent(\"Accordion\"),p=useComponent(\"ExpandDeepButton\"),m=useComponent(\"JSONViewer\"),{showExtensionKeywords:u}=useConfig(),d=t.getExtensionKeywords(e),h=(0,x.useCallback)((()=>{n?o():s()}),[n,s,o]),g=(0,x.useCallback)(((e,t)=>{t?s({deep:!0}):o({deep:!0})}),[s,o]);return u&&0!==d.length?O().createElement(Hs.Provider,{value:a},O().createElement(Fs.Provider,{value:c},O().createElement(\"div\",{className:\"json-schema-2020-12-keyword json-schema-2020-12-keyword--extension-keywords\",\"data-json-schema-level\":l},O().createElement(i,{expanded:n,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-keyword__name json-schema-2020-12-keyword__name--extension\"},\"Extension Keywords\")),O().createElement(p,{expanded:n,onClick:g}),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-keyword__children\",{\"json-schema-2020-12-keyword__children--collapsed\":!n})},n&&O().createElement(O().Fragment,null,d.map((t=>O().createElement(m,{key:t,name:t,value:e[t],className:\"json-schema-2020-12-json-viewer-extension-keyword\"})))))))):null},JSONViewer=({name:e,value:t,className:r})=>{const a=useFn(),{path:n}=usePath(e),{isExpanded:s,setExpanded:o,setCollapsed:l}=useIsExpanded(e),[c,i]=useLevel(),p=useComponent(\"Accordion\"),m=useComponent(\"ExpandDeepButton\"),u=\"string\"==typeof t||\"number\"==typeof t||\"bigint\"==typeof t||\"boolean\"==typeof t||\"symbol\"==typeof t||null==t,d=(e=>isPlainObject(e)&&0===Object.keys(e).length)(t)||(e=>Array.isArray(e)&&0===e.length)(t),h=(0,x.useCallback)((()=>{s?l():o()}),[s,o,l]),g=(0,x.useCallback)(((e,t)=>{t?o({deep:!0}):l({deep:!0})}),[o,l]);return u?O().createElement(\"div\",{className:pt()(\"json-schema-2020-12-json-viewer\",r)},O().createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e),O().createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__value json-schema-2020-12-json-viewer__value--secondary\"},a.stringify(t))):d?O().createElement(\"div\",{className:pt()(\"json-schema-2020-12-json-viewer\",r)},O().createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(t)?\"empty array\":\"empty object\")):O().createElement(Hs.Provider,{value:n},O().createElement(Fs.Provider,{value:i},O().createElement(\"div\",{className:pt()(\"json-schema-2020-12-json-viewer\",r),\"data-json-schema-level\":c},O().createElement(p,{expanded:s,onChange:h},O().createElement(\"span\",{className:\"json-schema-2020-12-json-viewer__name json-schema-2020-12-json-viewer__name--secondary\"},e)),O().createElement(m,{expanded:s,onClick:g}),O().createElement(\"strong\",{className:\"json-schema-2020-12__attribute json-schema-2020-12__attribute--primary\"},Array.isArray(t)?\"array\":\"object\"),O().createElement(\"ul\",{className:pt()(\"json-schema-2020-12-json-viewer__children\",{\"json-schema-2020-12-json-viewer__children--collapsed\":!s})},s&&O().createElement(O().Fragment,null,Array.isArray(t)?t.map(((e,t)=>O().createElement(\"li\",{key:`#${t}`,className:\"json-schema-2020-12-property\"},O().createElement(JSONViewer,{name:`#${t}`,value:e,className:r})))):Object.entries(t).map((([e,t])=>O().createElement(\"li\",{key:e,className:\"json-schema-2020-12-property\"},O().createElement(JSONViewer,{name:e,value:t,className:r})))))))))},Qs=JSONViewer,Accordion_Accordion=({expanded:e=!1,children:t,onChange:r})=>{const a=useComponent(\"ChevronRightIcon\"),n=(0,x.useCallback)((t=>{r(t,!e)}),[e,r]);return O().createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-accordion\",onClick:n},O().createElement(\"div\",{className:\"json-schema-2020-12-accordion__children\"},t),O().createElement(\"span\",{className:pt()(\"json-schema-2020-12-accordion__icon\",{\"json-schema-2020-12-accordion__icon--expanded\":e,\"json-schema-2020-12-accordion__icon--collapsed\":!e})},O().createElement(a,null)))},ExpandDeepButton_ExpandDeepButton=({expanded:e,onClick:t})=>{const r=(0,x.useCallback)((r=>{t(r,!e)}),[e,t]);return O().createElement(\"button\",{type:\"button\",className:\"json-schema-2020-12-expand-deep-button\",onClick:r},e?\"Collapse all\":\"Expand all\")},icons_ChevronRight=()=>O().createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\"},O().createElement(\"path\",{d:\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"})),withJSONSchemaContext=(e,t={})=>{const r={components:{JSONSchema:Gs,Keyword$schema:keywords_$schema,Keyword$vocabulary:$vocabulary_$vocabulary,Keyword$id:keywords_$id,Keyword$anchor:keywords_$anchor,Keyword$dynamicAnchor:keywords_$dynamicAnchor,Keyword$ref:keywords_$ref,Keyword$dynamicRef:keywords_$dynamicRef,Keyword$defs:keywords_$defs,Keyword$comment:keywords_$comment,KeywordAllOf:keywords_AllOf,KeywordAnyOf:keywords_AnyOf,KeywordOneOf:keywords_OneOf,KeywordNot:keywords_Not,KeywordIf:keywords_If,KeywordThen:keywords_Then,KeywordElse:keywords_Else,KeywordDependentSchemas:keywords_DependentSchemas,KeywordPrefixItems:keywords_PrefixItems,KeywordItems:keywords_Items,KeywordContains:keywords_Contains,KeywordProperties:keywords_Properties_Properties,KeywordPatternProperties:PatternProperties_PatternProperties,KeywordAdditionalProperties:keywords_AdditionalProperties,KeywordPropertyNames:keywords_PropertyNames,KeywordUnevaluatedItems:keywords_UnevaluatedItems,KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,KeywordType:keywords_Type,KeywordEnum:Enum_Enum,KeywordConst:Const_Const,KeywordConstraint:Ys,KeywordDependentRequired:DependentRequired_DependentRequired,KeywordContentSchema:keywords_ContentSchema,KeywordTitle:Title_Title,KeywordDescription:keywords_Description_Description,KeywordDefault:Default_Default,KeywordDeprecated:keywords_Deprecated,KeywordReadOnly:keywords_ReadOnly,KeywordWriteOnly:keywords_WriteOnly,KeywordExamples:keywords_Examples_Examples,ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONViewer:Qs,Accordion:Accordion_Accordion,ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,ChevronRightIcon:icons_ChevronRight,...t.components},config:{default$schema:\"https://json-schema.org/draft/2020-12/schema\",defaultExpandedLevels:0,showExtensionKeywords:!0,...t.config},fn:{upperFirst:fn_upperFirst,getTitle:makeGetTitle(useFn),getType:makeGetType(useFn),isBooleanJSONSchema,hasKeyword,isExpandable:fn_makeIsExpandable(useFn),stringify:fn_stringify,stringifyConstraints,getDependentRequired,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(useFn),...t.fn},state:{paths:{}}},HOC=t=>O().createElement(Bs.Provider,{value:r},O().createElement(e,t));return HOC.contexts={JSONSchemaContext:Bs},HOC.displayName=e.displayName,HOC},makeWithJSONSchemaSystemContext=({getSystem:e})=>(t,r={})=>{const{getComponent:a,getConfigs:n}=e(),s=n(),o=a(\"JSONSchema202012\"),l=a(\"JSONSchema202012Keyword$schema\"),c=a(\"JSONSchema202012Keyword$vocabulary\"),i=a(\"JSONSchema202012Keyword$id\"),p=a(\"JSONSchema202012Keyword$anchor\"),m=a(\"JSONSchema202012Keyword$dynamicAnchor\"),u=a(\"JSONSchema202012Keyword$ref\"),d=a(\"JSONSchema202012Keyword$dynamicRef\"),h=a(\"JSONSchema202012Keyword$defs\"),g=a(\"JSONSchema202012Keyword$comment\"),y=a(\"JSONSchema202012KeywordAllOf\"),f=a(\"JSONSchema202012KeywordAnyOf\"),S=a(\"JSONSchema202012KeywordOneOf\"),E=a(\"JSONSchema202012KeywordNot\"),_=a(\"JSONSchema202012KeywordIf\"),v=a(\"JSONSchema202012KeywordThen\"),w=a(\"JSONSchema202012KeywordElse\"),b=a(\"JSONSchema202012KeywordDependentSchemas\"),C=a(\"JSONSchema202012KeywordPrefixItems\"),x=a(\"JSONSchema202012KeywordItems\"),O=a(\"JSONSchema202012KeywordContains\"),N=a(\"JSONSchema202012KeywordProperties\"),k=a(\"JSONSchema202012KeywordPatternProperties\"),A=a(\"JSONSchema202012KeywordAdditionalProperties\"),I=a(\"JSONSchema202012KeywordPropertyNames\"),j=a(\"JSONSchema202012KeywordUnevaluatedItems\"),q=a(\"JSONSchema202012KeywordUnevaluatedProperties\"),P=a(\"JSONSchema202012KeywordType\"),M=a(\"JSONSchema202012KeywordEnum\"),T=a(\"JSONSchema202012KeywordConst\"),R=a(\"JSONSchema202012KeywordConstraint\"),J=a(\"JSONSchema202012KeywordDependentRequired\"),$=a(\"JSONSchema202012KeywordContentSchema\"),V=a(\"JSONSchema202012KeywordTitle\"),L=a(\"JSONSchema202012KeywordDescription\"),D=a(\"JSONSchema202012KeywordDefault\"),U=a(\"JSONSchema202012KeywordDeprecated\"),K=a(\"JSONSchema202012KeywordReadOnly\"),z=a(\"JSONSchema202012KeywordWriteOnly\"),B=a(\"JSONSchema202012KeywordExamples\"),F=a(\"JSONSchema202012ExtensionKeywords\"),W=a(\"JSONSchema202012JSONViewer\"),H=a(\"JSONSchema202012Accordion\"),X=a(\"JSONSchema202012ExpandDeepButton\"),G=a(\"JSONSchema202012ChevronRightIcon\");return withJSONSchemaContext(t,{components:{JSONSchema:o,Keyword$schema:l,Keyword$vocabulary:c,Keyword$id:i,Keyword$anchor:p,Keyword$dynamicAnchor:m,Keyword$ref:u,Keyword$dynamicRef:d,Keyword$defs:h,Keyword$comment:g,KeywordAllOf:y,KeywordAnyOf:f,KeywordOneOf:S,KeywordNot:E,KeywordIf:_,KeywordThen:v,KeywordElse:w,KeywordDependentSchemas:b,KeywordPrefixItems:C,KeywordItems:x,KeywordContains:O,KeywordProperties:N,KeywordPatternProperties:k,KeywordAdditionalProperties:A,KeywordPropertyNames:I,KeywordUnevaluatedItems:j,KeywordUnevaluatedProperties:q,KeywordType:P,KeywordEnum:M,KeywordConst:T,KeywordConstraint:R,KeywordDependentRequired:J,KeywordContentSchema:$,KeywordTitle:V,KeywordDescription:L,KeywordDefault:D,KeywordDeprecated:U,KeywordReadOnly:K,KeywordWriteOnly:z,KeywordExamples:B,ExtensionKeywords:F,JSONViewer:W,Accordion:H,ExpandDeepButton:X,ChevronRightIcon:G,...r.components},config:{showExtensionKeywords:s.showExtensions,...r.config},fn:{...r.fn}})},json_schema_2020_12=({getSystem:e,fn:t})=>{const fnAccessor=()=>({upperFirst:t.upperFirst,...t.jsonSchema202012});return{components:{JSONSchema202012:Gs,JSONSchema202012Keyword$schema:keywords_$schema,JSONSchema202012Keyword$vocabulary:$vocabulary_$vocabulary,JSONSchema202012Keyword$id:keywords_$id,JSONSchema202012Keyword$anchor:keywords_$anchor,JSONSchema202012Keyword$dynamicAnchor:keywords_$dynamicAnchor,JSONSchema202012Keyword$ref:keywords_$ref,JSONSchema202012Keyword$dynamicRef:keywords_$dynamicRef,JSONSchema202012Keyword$defs:keywords_$defs,JSONSchema202012Keyword$comment:keywords_$comment,JSONSchema202012KeywordAllOf:keywords_AllOf,JSONSchema202012KeywordAnyOf:keywords_AnyOf,JSONSchema202012KeywordOneOf:keywords_OneOf,JSONSchema202012KeywordNot:keywords_Not,JSONSchema202012KeywordIf:keywords_If,JSONSchema202012KeywordThen:keywords_Then,JSONSchema202012KeywordElse:keywords_Else,JSONSchema202012KeywordDependentSchemas:keywords_DependentSchemas,JSONSchema202012KeywordPrefixItems:keywords_PrefixItems,JSONSchema202012KeywordItems:keywords_Items,JSONSchema202012KeywordContains:keywords_Contains,JSONSchema202012KeywordProperties:keywords_Properties_Properties,JSONSchema202012KeywordPatternProperties:PatternProperties_PatternProperties,JSONSchema202012KeywordAdditionalProperties:keywords_AdditionalProperties,JSONSchema202012KeywordPropertyNames:keywords_PropertyNames,JSONSchema202012KeywordUnevaluatedItems:keywords_UnevaluatedItems,JSONSchema202012KeywordUnevaluatedProperties:keywords_UnevaluatedProperties,JSONSchema202012KeywordType:keywords_Type,JSONSchema202012KeywordEnum:Enum_Enum,JSONSchema202012KeywordConst:Const_Const,JSONSchema202012KeywordConstraint:Ys,JSONSchema202012KeywordDependentRequired:DependentRequired_DependentRequired,JSONSchema202012KeywordContentSchema:keywords_ContentSchema,JSONSchema202012KeywordTitle:Title_Title,JSONSchema202012KeywordDescription:keywords_Description_Description,JSONSchema202012KeywordDefault:Default_Default,JSONSchema202012KeywordDeprecated:keywords_Deprecated,JSONSchema202012KeywordReadOnly:keywords_ReadOnly,JSONSchema202012KeywordWriteOnly:keywords_WriteOnly,JSONSchema202012KeywordExamples:keywords_Examples_Examples,JSONSchema202012ExtensionKeywords:ExtensionKeywords_ExtensionKeywords,JSONSchema202012JSONViewer:Qs,JSONSchema202012Accordion:Accordion_Accordion,JSONSchema202012ExpandDeepButton:ExpandDeepButton_ExpandDeepButton,JSONSchema202012ChevronRightIcon:icons_ChevronRight,withJSONSchema202012Context:withJSONSchemaContext,withJSONSchema202012SystemContext:makeWithJSONSchemaSystemContext(e()),JSONSchema202012PathContext:()=>Hs,JSONSchema202012LevelContext:()=>Fs},fn:{upperFirst:fn_upperFirst,jsonSchema202012:{getTitle:makeGetTitle(fnAccessor),getType:makeGetType(fnAccessor),isExpandable:fn_makeIsExpandable(fnAccessor),isBooleanJSONSchema,hasKeyword,useFn,useConfig,useComponent,useIsExpanded,usePath,useLevel,getSchemaKeywords,getExtensionKeywords:makeGetExtensionKeywords(fnAccessor),hasSchemaType:fn_hasSchemaType}}}},array=(e,{sample:t=[]}={})=>((e,t={})=>{const{minItems:r,maxItems:a,uniqueItems:n}=t,{contains:s,minContains:o,maxContains:l}=t;let c=[...e];if(null!=s&&\"object\"==typeof s){if(Number.isInteger(o)&&o>1){const e=c.at(0);for(let t=1;t<o;t+=1)c.unshift(e)}Number.isInteger(l)}if(Number.isInteger(a)&&a>0&&(c=e.slice(0,a)),Number.isInteger(r)&&r>0)for(let e=0;c.length<r;e+=1)c.push(c[e%c.length]);return!0===n&&(c=Array.from(new Set(c))),c})(t,e),object=()=>{throw new Error(\"Not implemented\")},bytes=e=>ae()(e),pick=e=>e.at(0),predicates_isBooleanJSONSchema=e=>\"boolean\"==typeof e,isJSONSchemaObject=e=>wt()(e),isJSONSchema=e=>predicates_isBooleanJSONSchema(e)||isJSONSchemaObject(e);const Zs=class Registry{data={};register(e,t){this.data[e]=t}unregister(e){void 0===e?this.data={}:delete this.data[e]}get(e){return this.data[e]}},int32=()=>0,int64=()=>0,generators_float=()=>.1,generators_double=()=>.1,email=()=>\"user@example.com\",idn_email=()=>\"실례@example.com\",hostname=()=>\"example.com\",idn_hostname=()=>\"실례.com\",ipv4=()=>\"198.51.100.42\",ipv6=()=>\"2001:0db8:5b96:0000:0000:426f:8e17:642a\",uri=()=>\"https://example.com/\",uri_reference=()=>\"path/index.html\",iri=()=>\"https://실례.com/\",iri_reference=()=>\"path/실례.html\",uuid=()=>\"3fa85f64-5717-4562-b3fc-2c963f66afa6\",uri_template=()=>\"https://example.com/dictionary/{term:1}/{term}\",json_pointer=()=>\"/a/b/c\",relative_json_pointer=()=>\"1/0\",date_time=()=>(new Date).toISOString(),date=()=>(new Date).toISOString().substring(0,10),time=()=>(new Date).toISOString().substring(11),duration=()=>\"P3D\",generators_password=()=>\"********\",regex=()=>\"^[a-z]+$\";const eo=new class FormatRegistry extends Zs{#e={int32,int64,float:generators_float,double:generators_double,email,\"idn-email\":idn_email,hostname,\"idn-hostname\":idn_hostname,ipv4,ipv6,uri,\"uri-reference\":uri_reference,iri,\"iri-reference\":iri_reference,uuid,\"uri-template\":uri_template,\"json-pointer\":json_pointer,\"relative-json-pointer\":relative_json_pointer,\"date-time\":date_time,date,time,duration,password:generators_password,regex};data={...this.#e};get defaults(){return{...this.#e}}},formatAPI=(e,t)=>\"function\"==typeof t?eo.register(e,t):null===t?eo.unregister(e):eo.get(e);formatAPI.getDefaults=()=>eo.defaults;const to=formatAPI;var ro=__webpack_require__(158).Buffer;const _7bit=e=>ro.from(e).toString(\"ascii\");var ao=__webpack_require__(158).Buffer;const _8bit=e=>ao.from(e).toString(\"utf8\");var no=__webpack_require__(158).Buffer;const binary=e=>no.from(e).toString(\"binary\"),quoted_printable=e=>{let t=\"\";for(let r=0;r<e.length;r++){const a=e.charCodeAt(r);if(61===a)t+=\"=3D\";else if(a>=33&&a<=60||a>=62&&a<=126||9===a||32===a)t+=e.charAt(r);else if(13===a||10===a)t+=\"\\r\\n\";else if(a>126){const a=unescape(encodeURIComponent(e.charAt(r)));for(let e=0;e<a.length;e++)t+=\"=\"+(\"0\"+a.charCodeAt(e).toString(16)).slice(-2).toUpperCase()}else t+=\"=\"+(\"0\"+a.toString(16)).slice(-2).toUpperCase()}return t};var so=__webpack_require__(158).Buffer;const base16=e=>so.from(e).toString(\"hex\");var oo=__webpack_require__(158).Buffer;const base32=e=>{const t=oo.from(e).toString(\"utf8\"),r=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";let a=0,n=\"\",s=0,o=0;for(let e=0;e<t.length;e++)for(s=s<<8|t.charCodeAt(e),o+=8;o>=5;)n+=r.charAt(s>>>o-5&31),o-=5;o>0&&(n+=r.charAt(s<<5-o&31),a=(8-8*t.length%5)%5);for(let e=0;e<a;e++)n+=\"=\";return n};var lo=__webpack_require__(158).Buffer;const base64=e=>lo.from(e).toString(\"base64\");var co=__webpack_require__(158).Buffer;const base64url=e=>co.from(e).toString(\"base64url\");const io=new class EncoderRegistry extends Zs{#e={\"7bit\":_7bit,\"8bit\":_8bit,binary,\"quoted-printable\":quoted_printable,base16,base32,base64,base64url};data={...this.#e};get defaults(){return{...this.#e}}},encoderAPI=(e,t)=>\"function\"==typeof t?io.register(e,t):null===t?io.unregister(e):io.get(e);encoderAPI.getDefaults=()=>io.defaults;const po=encoderAPI,mo={\"text/plain\":()=>\"string\",\"text/css\":()=>\".selector { border: 1px solid red }\",\"text/csv\":()=>\"value1,value2,value3\",\"text/html\":()=>\"<p>content</p>\",\"text/calendar\":()=>\"BEGIN:VCALENDAR\",\"text/javascript\":()=>\"console.dir('Hello world!');\",\"text/xml\":()=>'<person age=\"30\">John Doe</person>',\"text/*\":()=>\"string\"},uo={\"image/*\":()=>bytes(25).toString(\"binary\")},ho={\"audio/*\":()=>bytes(25).toString(\"binary\")},go={\"video/*\":()=>bytes(25).toString(\"binary\")},yo={\"application/json\":()=>'{\"key\":\"value\"}',\"application/ld+json\":()=>'{\"name\": \"John Doe\"}',\"application/x-httpd-php\":()=>\"<?php echo '<p>Hello World!</p>'; ?>\",\"application/rtf\":()=>String.raw`{\\rtf1\\adeflang1025\\ansi\\ansicpg1252\\uc1`,\"application/x-sh\":()=>'echo \"Hello World!\"',\"application/xhtml+xml\":()=>\"<p>content</p>\",\"application/*\":()=>bytes(25).toString(\"binary\")};const fo=new class MediaTypeRegistry extends Zs{#e={...mo,...uo,...ho,...go,...yo};data={...this.#e};get defaults(){return{...this.#e}}},mediaTypeAPI=(e,t)=>{if(\"function\"==typeof t)return fo.register(e,t);if(null===t)return fo.unregister(e);const r=e.split(\";\").at(0),a=`${r.split(\"/\").at(0)}/*`;return fo.get(e)||fo.get(r)||fo.get(a)};mediaTypeAPI.getDefaults=()=>fo.defaults;const So=mediaTypeAPI,applyStringConstraints=(e,t={})=>{const{maxLength:r,minLength:a}=t;let n=e;if(Number.isInteger(r)&&r>0&&(n=n.slice(0,r)),Number.isInteger(a)&&a>0){let e=0;for(;n.length<a;)n+=n[e++%n.length]}return n},types_string=(e,{sample:t}={})=>{const{contentEncoding:r,contentMediaType:a,contentSchema:n}=e,{pattern:s,format:o}=e,l=po(r)||ma();let c;return c=\"string\"==typeof s?applyStringConstraints((e=>{try{return new(Ot())(e).gen()}catch{return\"string\"}})(s),e):\"string\"==typeof o?(e=>{const{format:t}=e,r=to(t);return\"function\"==typeof r?r(e):\"string\"})(e):isJSONSchema(n)&&\"string\"==typeof a&&void 0!==t?Array.isArray(t)||\"object\"==typeof t?JSON.stringify(t):applyStringConstraints(String(t),e):\"string\"==typeof a?(e=>{const{contentMediaType:t}=e,r=So(t);return\"function\"==typeof r?r(e):\"string\"})(e):applyStringConstraints(\"string\",e),l(c)},applyNumberConstraints=(e,t={})=>{const{minimum:r,maximum:a,exclusiveMinimum:n,exclusiveMaximum:s}=t,{multipleOf:o}=t,l=Number.isInteger(e)?1:Number.EPSILON;let c=\"number\"==typeof r?r:null,i=\"number\"==typeof a?a:null,p=e;if(\"number\"==typeof n&&(c=null!==c?Math.max(c,n+l):n+l),\"number\"==typeof s&&(i=null!==i?Math.min(i,s-l):s-l),p=c>i&&e||c||i||p,\"number\"==typeof o&&o>0){const e=p%o;p=0===e?p:p+o-e}return p},types_number=e=>{const{format:t}=e;let r;return r=\"string\"==typeof t?(e=>{const{format:t}=e,r=to(t);return\"function\"==typeof r?r(e):0})(e):0,applyNumberConstraints(r,e)},types_integer=e=>{const{format:t}=e;let r;return r=\"string\"==typeof t?(e=>{const{format:t}=e,r=to(t);if(\"function\"==typeof r)return r(e);switch(t){case\"int32\":return int32();case\"int64\":return int64()}return 0})(e):0,applyNumberConstraints(r,e)},types_boolean=e=>\"boolean\"!=typeof e.default||e.default,Eo=new Proxy({array,object,string:types_string,number:types_number,integer:types_integer,boolean:types_boolean,null:()=>null},{get:(e,t)=>\"string\"==typeof t&&Object.hasOwn(e,t)?e[t]:()=>`Unknown Type: ${t}`}),_o=[\"array\",\"object\",\"number\",\"integer\",\"string\",\"boolean\",\"null\"],hasExample=e=>{if(!isJSONSchemaObject(e))return!1;const{examples:t,example:r,default:a}=e;return!!(Array.isArray(t)&&t.length>=1)||(void 0!==a||void 0!==r)},extractExample=e=>{if(!isJSONSchemaObject(e))return null;const{examples:t,example:r,default:a}=e;return Array.isArray(t)&&t.length>=1?t.at(0):void 0!==a?a:void 0!==r?r:void 0},vo={array:[\"items\",\"prefixItems\",\"contains\",\"maxContains\",\"minContains\",\"maxItems\",\"minItems\",\"uniqueItems\",\"unevaluatedItems\"],object:[\"properties\",\"additionalProperties\",\"patternProperties\",\"propertyNames\",\"minProperties\",\"maxProperties\",\"required\",\"dependentSchemas\",\"dependentRequired\",\"unevaluatedProperties\"],string:[\"pattern\",\"format\",\"minLength\",\"maxLength\",\"contentEncoding\",\"contentMediaType\",\"contentSchema\"],integer:[\"minimum\",\"maximum\",\"exclusiveMinimum\",\"exclusiveMaximum\",\"multipleOf\"]};vo.number=vo.integer;const wo=\"string\",inferTypeFromValue=e=>void 0===e?null:null===e?\"null\":Array.isArray(e)?\"array\":Number.isInteger(e)?\"integer\":typeof e,foldType=e=>{if(Array.isArray(e)&&e.length>=1){if(e.includes(\"array\"))return\"array\";if(e.includes(\"object\"))return\"object\";{const t=e.filter((e=>\"null\"!==e)),r=pick(t.length>0?t:e);if(_o.includes(r))return r}}return _o.includes(e)?e:null},inferType=(e,t=new WeakSet)=>{if(!isJSONSchemaObject(e))return wo;if(t.has(e))return wo;t.add(e);let{type:r,const:a}=e;if(r=foldType(r),\"string\"!=typeof r){const t=Object.keys(vo);e:for(let a=0;a<t.length;a+=1){const n=t[a],s=vo[n];for(let t=0;t<s.length;t+=1){const a=s[t];if(Object.hasOwn(e,a)){r=n;break e}}}}if(\"string\"!=typeof r&&void 0!==a){const e=inferTypeFromValue(a);r=\"string\"==typeof e?e:r}if(\"string\"!=typeof r){const combineTypes=r=>{if(Array.isArray(e[r])){const a=e[r].map((e=>inferType(e,t)));return foldType(a)}return null},a=combineTypes(\"allOf\"),n=combineTypes(\"anyOf\"),s=combineTypes(\"oneOf\"),o=e.not?inferType(e.not,t):null;(a||n||s||o)&&(r=foldType([a,n,s,o].filter(Boolean)))}if(\"string\"!=typeof r&&hasExample(e)){const t=extractExample(e),a=inferTypeFromValue(t);r=\"string\"==typeof a?a:r}return t.delete(e),r||wo},getType=e=>inferType(e),typeCast=e=>predicates_isBooleanJSONSchema(e)?(e=>!1===e?{not:{}}:{})(e):isJSONSchemaObject(e)?e:{},merge=(e,t,r={})=>{if(predicates_isBooleanJSONSchema(e)&&!0===e)return!0;if(predicates_isBooleanJSONSchema(e)&&!1===e)return!1;if(predicates_isBooleanJSONSchema(t)&&!0===t)return!0;if(predicates_isBooleanJSONSchema(t)&&!1===t)return!1;if(!isJSONSchema(e))return t;if(!isJSONSchema(t))return e;const a={...t,...e};if(t.type&&e.type&&Array.isArray(t.type)&&\"string\"==typeof t.type){const r=normalizeArray(t.type).concat(e.type);a.type=Array.from(new Set(r))}if(Array.isArray(t.required)&&Array.isArray(e.required)&&(a.required=[...new Set([...e.required,...t.required])]),t.properties&&e.properties){const n=new Set([...Object.keys(t.properties),...Object.keys(e.properties)]);a.properties={};for(const s of n){const n=t.properties[s]||{},o=e.properties[s]||{};n.readOnly&&!r.includeReadOnly||n.writeOnly&&!r.includeWriteOnly?a.required=(a.required||[]).filter((e=>e!==s)):a.properties[s]=merge(o,n,r)}}return isJSONSchema(t.items)&&isJSONSchema(e.items)&&(a.items=merge(e.items,t.items,r)),isJSONSchema(t.contains)&&isJSONSchema(e.contains)&&(a.contains=merge(e.contains,t.contains,r)),isJSONSchema(t.contentSchema)&&isJSONSchema(e.contentSchema)&&(a.contentSchema=merge(e.contentSchema,t.contentSchema,r)),a},bo=merge,main_sampleFromSchemaGeneric=(e,t={},r=void 0,a=!1)=>{if(null==e&&void 0===r)return;\"function\"==typeof e?.toJS&&(e=e.toJS()),e=typeCast(e);let n=void 0!==r||hasExample(e);const s=!n&&Array.isArray(e.oneOf)&&e.oneOf.length>0,o=!n&&Array.isArray(e.anyOf)&&e.anyOf.length>0;if(!n&&(s||o)){const r=typeCast(pick(s?e.oneOf:e.anyOf));!(e=bo(e,r,t)).xml&&r.xml&&(e.xml=r.xml),hasExample(e)&&hasExample(r)&&(n=!0)}const l={};let{xml:c,properties:i,additionalProperties:p,items:m,contains:u}=e||{},d=getType(e),{includeReadOnly:h,includeWriteOnly:g}=t;c=c||{};let y,{name:f,prefix:S,namespace:E}=c,_={};if(Object.hasOwn(e,\"type\")||(e.type=d),a&&(f=f||\"notagname\",y=(S?`${S}:`:\"\")+f,E)){l[S?`xmlns:${S}`:\"xmlns\"]=E}a&&(_[y]=[]);const v=objectify(i);let w,b=0;const hasExceededMaxProperties=()=>Number.isInteger(e.maxProperties)&&e.maxProperties>0&&b>=e.maxProperties,canAddProperty=t=>!(Number.isInteger(e.maxProperties)&&e.maxProperties>0)||!hasExceededMaxProperties()&&(!(t=>!Array.isArray(e.required)||0===e.required.length||!e.required.includes(t))(t)||e.maxProperties-b-(()=>{if(!Array.isArray(e.required)||0===e.required.length)return 0;let t=0;return a?e.required.forEach((e=>t+=void 0===_[e]?0:1)):e.required.forEach((e=>{t+=void 0===_[y]?.find((t=>void 0!==t[e]))?0:1})),e.required.length-t})()>0);if(w=a?(r,n=void 0)=>{if(e&&v[r]){if(v[r].xml=v[r].xml||{},v[r].xml.attribute){const e=Array.isArray(v[r].enum)?pick(v[r].enum):void 0;if(hasExample(v[r]))l[v[r].xml.name||r]=extractExample(v[r]);else if(void 0!==e)l[v[r].xml.name||r]=e;else{const e=typeCast(v[r]),a=getType(e),s=v[r].xml.name||r;if(\"array\"===a){const e=main_sampleFromSchemaGeneric(v[r],t,n,!1);l[s]=e.map((e=>wt()(e)?\"UnknownTypeObject\":Array.isArray(e)?\"UnknownTypeArray\":e)).join(\" \")}else l[s]=\"object\"===a?\"UnknownTypeObject\":Eo[a](e)}return}v[r].xml.name=v[r].xml.name||r}else v[r]||!1===p||(v[r]={xml:{name:r}});let s=main_sampleFromSchemaGeneric(v[r],t,n,a);canAddProperty(r)&&(b++,Array.isArray(s)?_[y]=_[y].concat(s):_[y].push(s))}:(r,n)=>{if(canAddProperty(r)){if(wt()(e.discriminator?.mapping)&&e.discriminator.propertyName===r&&\"string\"==typeof e.$$ref){for(const t in e.discriminator.mapping)if(-1!==e.$$ref.search(e.discriminator.mapping[t])){_[r]=t;break}}else _[r]=main_sampleFromSchemaGeneric(v[r],t,n,a);b++}},n){let n;if(n=void 0!==r?r:extractExample(e),!a){if(\"number\"==typeof n&&\"string\"===d)return`${n}`;if(\"string\"!=typeof n||\"string\"===d)return n;try{return JSON.parse(n)}catch{return n}}if(\"array\"===d){if(!Array.isArray(n)){if(\"string\"==typeof n)return n;n=[n]}let r=[];return isJSONSchemaObject(m)&&(m.xml=m.xml||c||{},m.xml.name=m.xml.name||c.name,r=n.map((e=>main_sampleFromSchemaGeneric(m,t,e,a)))),isJSONSchemaObject(u)&&(u.xml=u.xml||c||{},u.xml.name=u.xml.name||c.name,r=[main_sampleFromSchemaGeneric(u,t,void 0,a),...r]),r=Eo.array(e,{sample:r}),c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l})):_=r,_}if(\"object\"===d){if(\"string\"==typeof n)return n;for(const e in n)Object.hasOwn(n,e)&&(v[e]?.readOnly&&!h||v[e]?.writeOnly&&!g||(v[e]?.xml?.attribute?l[v[e].xml.name||e]=n[e]:w(e,n[e])));return kt()(l)||_[y].push({_attr:l}),_}return _[y]=kt()(l)?n:[{_attr:l},n],_}if(\"array\"===d){let r=[];if(isJSONSchemaObject(u))if(a&&(u.xml=u.xml||e.xml||{},u.xml.name=u.xml.name||c.name),Array.isArray(u.anyOf)){const{anyOf:e,...n}=m;r.push(...u.anyOf.map((e=>main_sampleFromSchemaGeneric(bo(e,n,t),t,void 0,a))))}else if(Array.isArray(u.oneOf)){const{oneOf:e,...n}=m;r.push(...u.oneOf.map((e=>main_sampleFromSchemaGeneric(bo(e,n,t),t,void 0,a))))}else{if(!(!a||a&&c.wrapped))return main_sampleFromSchemaGeneric(u,t,void 0,a);r.push(main_sampleFromSchemaGeneric(u,t,void 0,a))}if(isJSONSchemaObject(m))if(a&&(m.xml=m.xml||e.xml||{},m.xml.name=m.xml.name||c.name),Array.isArray(m.anyOf)){const{anyOf:e,...n}=m;r.push(...m.anyOf.map((e=>main_sampleFromSchemaGeneric(bo(e,n,t),t,void 0,a))))}else if(Array.isArray(m.oneOf)){const{oneOf:e,...n}=m;r.push(...m.oneOf.map((e=>main_sampleFromSchemaGeneric(bo(e,n,t),t,void 0,a))))}else{if(!(!a||a&&c.wrapped))return main_sampleFromSchemaGeneric(m,t,void 0,a);r.push(main_sampleFromSchemaGeneric(m,t,void 0,a))}return r=Eo.array(e,{sample:r}),a&&c.wrapped?(_[y]=r,kt()(l)||_[y].push({_attr:l}),_):r}if(\"object\"===d){for(let e in v)Object.hasOwn(v,e)&&(v[e]?.deprecated||v[e]?.readOnly&&!h||v[e]?.writeOnly&&!g||w(e));if(a&&l&&_[y].push({_attr:l}),hasExceededMaxProperties())return _;if(predicates_isBooleanJSONSchema(p)&&p)a?_[y].push({additionalProp:\"Anything can be here\"}):_.additionalProp1={},b++;else if(isJSONSchemaObject(p)){const r=p,n=main_sampleFromSchemaGeneric(r,t,void 0,a);if(a&&\"string\"==typeof r?.xml?.name&&\"notagname\"!==r?.xml?.name)_[y].push(n);else{const t=Number.isInteger(e.minProperties)&&e.minProperties>0&&b<e.minProperties?e.minProperties-b:3;for(let e=1;e<=t;e++){if(hasExceededMaxProperties())return _;if(a){const t={};t[\"additionalProp\"+e]=n.notagname,_[y].push(t)}else _[\"additionalProp\"+e]=n;b++}}}return _}let C;if(void 0!==e.const)C=e.const;else if(e&&Array.isArray(e.enum))C=pick(normalizeArray(e.enum));else{const r=isJSONSchemaObject(e.contentSchema)?main_sampleFromSchemaGeneric(e.contentSchema,t,void 0,a):void 0;C=Eo[d](e,{sample:r})}return a?(_[y]=kt()(l)?C:[{_attr:l},C],_):C},main_createXMLExample=(e,t,r)=>{const a=main_sampleFromSchemaGeneric(e,t,r,!0);if(a)return\"string\"==typeof a?a:Ct()(a,{declaration:!0,indent:\"\\t\"})},main_sampleFromSchema=(e,t,r)=>main_sampleFromSchemaGeneric(e,t,r,!1),main_resolver=(e,t,r)=>[e,JSON.stringify(t),JSON.stringify(r)],Co=utils_memoizeN(main_createXMLExample,main_resolver),xo=utils_memoizeN(main_sampleFromSchema,main_resolver);const Oo=new class OptionRegistry extends Zs{#e={};data={...this.#e};get defaults(){return{...this.#e}}},api_optionAPI=(e,t)=>(void 0!==t&&Oo.register(e,t),Oo.get(e)),No=[{when:/json/,shouldStringifyTypes:[\"string\"]}],ko=[\"object\"],fn_get_json_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.jsonSchema202012.memoizedSampleFromSchema(t,r,n),l=typeof o,c=No.reduce(((e,t)=>t.when.test(a)?[...e,...t.shouldStringifyTypes]:e),ko);return X()(c,(e=>e===l))?JSON.stringify(o,null,2):o},fn_get_yaml_sample_schema=e=>(t,r,a,n)=>{const{fn:s}=e(),o=s.jsonSchema202012.getJsonSampleSchema(t,r,a,n);let l;try{l=qe().dump(qe().load(o),{lineWidth:-1},{schema:je.JSON_SCHEMA}),\"\\n\"===l[l.length-1]&&(l=l.slice(0,l.length-1))}catch(e){return console.error(e),\"error: could not generate yaml example\"}return l.replace(/\\t/g,\"  \")},fn_get_xml_sample_schema=e=>(t,r,a)=>{const{fn:n}=e();if(t&&!t.xml&&(t.xml={}),t&&!t.xml.name){if(!t.$$ref&&(t.type||t.items||t.properties||t.additionalProperties))return'<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\\x3c!-- XML example cannot be generated; root element name is undefined --\\x3e';if(t.$$ref){let e=t.$$ref.match(/\\S*\\/(\\S+)$/);t.xml.name=e[1]}}return n.jsonSchema202012.memoizedCreateXMLExample(t,r,a)},fn_get_sample_schema=e=>(t,r=\"\",a={},n=void 0)=>{const{fn:s}=e();return\"function\"==typeof t?.toJS&&(t=t.toJS()),\"function\"==typeof n?.toJS&&(n=n.toJS()),/xml/.test(r)?s.jsonSchema202012.getXmlSampleSchema(t,a,n):/(yaml|yml)/.test(r)?s.jsonSchema202012.getYamlSampleSchema(t,a,r,n):s.jsonSchema202012.getJsonSampleSchema(t,a,r,n)},json_schema_2020_12_samples=({getSystem:e})=>{const t=fn_get_json_sample_schema(e),r=fn_get_yaml_sample_schema(e),a=fn_get_xml_sample_schema(e),n=fn_get_sample_schema(e);return{fn:{jsonSchema202012:{sampleFromSchema:main_sampleFromSchema,sampleFromSchemaGeneric:main_sampleFromSchemaGeneric,sampleOptionAPI:api_optionAPI,sampleEncoderAPI:po,sampleFormatAPI:to,sampleMediaTypeAPI:So,createXMLExample:main_createXMLExample,memoizedSampleFromSchema:xo,memoizedCreateXMLExample:Co,getJsonSampleSchema:t,getYamlSampleSchema:r,getXmlSampleSchema:a,getSampleSchema:n,mergeJsonSchema:bo,foldType}}}};function PresetApis(){return[base,oas3,json_schema_2020_12,json_schema_2020_12_samples,oas31]}const inline_plugin=e=>()=>({fn:e.fn,components:e.components}),factorization_system=e=>{const t=j()({layout:{layout:e.layout,filter:e.filter},spec:{spec:\"\",url:e.url},requestSnippets:e.requestSnippets},e.initialState);if(e.initialState)for(const[r,a]of Object.entries(e.initialState))void 0===a&&delete t[r];return{system:{configs:e.configs},plugins:e.presets,state:t}},query=()=>e=>{const t=e.queryConfigEnabled?(()=>{const e=new URLSearchParams(K.location.search);return Object.fromEntries(e)})():{};return Object.entries(t).reduce(((e,[t,r])=>(\"config\"===t?e.configUrl=r:\"urls.primaryName\"===t?e[t]=r:e=br()(e,t,r),e)),{})},sources_url=({url:e,system:t})=>async r=>{if(!e)return{};if(\"function\"!=typeof t.configsActions?.getConfigByUrl)return{};const a=(()=>{const e={};return e.promise=new Promise(((t,r)=>{e.resolve=t,e.reject=r})),e})();return t.configsActions.getConfigByUrl({url:e,loadRemoteConfig:!0,requestInterceptor:r.requestInterceptor,responseInterceptor:r.responseInterceptor},(e=>{a.resolve(e)})),a.promise},runtime=()=>()=>{const e={};return globalThis.location&&(e.oauth2RedirectUrl=`${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0,globalThis.location.pathname.lastIndexOf(\"/\"))}/oauth2-redirect.html`),e},Ao=Object.freeze({dom_id:null,domNode:null,spec:{},url:\"\",urls:null,configUrl:null,layout:\"BaseLayout\",docExpansion:\"list\",maxDisplayedTags:-1,filter:!1,validatorUrl:\"https://validator.swagger.io/validator\",oauth2RedirectUrl:void 0,persistAuthorization:!1,configs:{},displayOperationId:!1,displayRequestDuration:!1,deepLinking:!1,tryItOutEnabled:!1,requestInterceptor:e=>(e.curlOptions=[],e),responseInterceptor:e=>e,showMutatedRequest:!0,defaultModelRendering:\"example\",defaultModelExpandDepth:1,defaultModelsExpandDepth:1,showExtensions:!1,showCommonExtensions:!1,withCredentials:!1,requestSnippetsEnabled:!1,requestSnippets:{generators:{curl_bash:{title:\"cURL (bash)\",syntax:\"bash\"},curl_powershell:{title:\"cURL (PowerShell)\",syntax:\"powershell\"},curl_cmd:{title:\"cURL (CMD)\",syntax:\"bash\"}},defaultExpanded:!0,languages:null},supportedSubmitMethods:[\"get\",\"put\",\"post\",\"delete\",\"options\",\"head\",\"patch\",\"trace\"],queryConfigEnabled:!1,presets:[PresetApis],plugins:[],initialState:{},fn:{},components:{},syntaxHighlight:{activated:!0,theme:\"agate\"},operationsSorter:null,tagsSorter:null,onComplete:null,modelPropertyMacro:null,parameterMacro:null,fileUploadMediaTypes:[\"application/octet-stream\",\"image/\",\"audio/\",\"video/\"],uncaughtExceptionHandler:null}),Io=require(\"lodash/has\");var jo=__webpack_require__.n(Io);const qo=require(\"lodash/fp/set\");var Po=__webpack_require__.n(qo);const type_casters_array=(e,t=[])=>Array.isArray(e)?e:t,type_casters_boolean=(e,t=!1)=>!0===e||\"true\"===e||1===e||\"1\"===e||!1!==e&&\"false\"!==e&&0!==e&&\"0\"!==e&&t,dom_node=e=>null===e||\"null\"===e?null:e,type_casters_filter=e=>{const t=String(e);return type_casters_boolean(e,t)},type_casters_function=(e,t)=>\"function\"==typeof e?e:t,nullable_array=e=>Array.isArray(e)?e:null,nullable_function=e=>\"function\"==typeof e?e:null,nullable_string=e=>null===e||\"null\"===e?null:String(e),type_casters_number=(e,t=-1)=>{const r=parseInt(e,10);return Number.isNaN(r)?t:r},type_casters_object=(e,t={})=>wt()(e)?e:t,sorter=e=>\"function\"==typeof e||\"string\"==typeof e?e:null,type_casters_string=e=>String(e),syntax_highlight=(e,t)=>wt()(e)?e:!1===e||\"false\"===e||0===e||\"0\"===e?{activated:!1}:t,undefined_string=e=>void 0===e||\"undefined\"===e?void 0:String(e),Mo={components:{typeCaster:type_casters_object},configs:{typeCaster:type_casters_object},configUrl:{typeCaster:nullable_string},deepLinking:{typeCaster:type_casters_boolean,defaultValue:Ao.deepLinking},defaultModelExpandDepth:{typeCaster:type_casters_number,defaultValue:Ao.defaultModelExpandDepth},defaultModelRendering:{typeCaster:type_casters_string},defaultModelsExpandDepth:{typeCaster:type_casters_number,defaultValue:Ao.defaultModelsExpandDepth},displayOperationId:{typeCaster:type_casters_boolean,defaultValue:Ao.displayOperationId},displayRequestDuration:{typeCaster:type_casters_boolean,defaultValue:Ao.displayRequestDuration},docExpansion:{typeCaster:type_casters_string},dom_id:{typeCaster:nullable_string},domNode:{typeCaster:dom_node},fileUploadMediaTypes:{typeCaster:type_casters_array,defaultValue:Ao.fileUploadMediaTypes},filter:{typeCaster:type_casters_filter},fn:{typeCaster:type_casters_object},initialState:{typeCaster:type_casters_object},layout:{typeCaster:type_casters_string},maxDisplayedTags:{typeCaster:type_casters_number,defaultValue:Ao.maxDisplayedTags},modelPropertyMacro:{typeCaster:nullable_function},oauth2RedirectUrl:{typeCaster:undefined_string},onComplete:{typeCaster:nullable_function},operationsSorter:{typeCaster:sorter},paramaterMacro:{typeCaster:nullable_function},persistAuthorization:{typeCaster:type_casters_boolean,defaultValue:Ao.persistAuthorization},plugins:{typeCaster:type_casters_array,defaultValue:Ao.plugins},presets:{typeCaster:type_casters_array,defaultValue:Ao.presets},requestInterceptor:{typeCaster:type_casters_function,defaultValue:Ao.requestInterceptor},requestSnippets:{typeCaster:type_casters_object,defaultValue:Ao.requestSnippets},requestSnippetsEnabled:{typeCaster:type_casters_boolean,defaultValue:Ao.requestSnippetsEnabled},responseInterceptor:{typeCaster:type_casters_function,defaultValue:Ao.responseInterceptor},showCommonExtensions:{typeCaster:type_casters_boolean,defaultValue:Ao.showCommonExtensions},showExtensions:{typeCaster:type_casters_boolean,defaultValue:Ao.showExtensions},showMutatedRequest:{typeCaster:type_casters_boolean,defaultValue:Ao.showMutatedRequest},spec:{typeCaster:type_casters_object,defaultValue:Ao.spec},supportedSubmitMethods:{typeCaster:type_casters_array,defaultValue:Ao.supportedSubmitMethods},syntaxHighlight:{typeCaster:syntax_highlight,defaultValue:Ao.syntaxHighlight},\"syntaxHighlight.activated\":{typeCaster:type_casters_boolean,defaultValue:Ao.syntaxHighlight.activated},\"syntaxHighlight.theme\":{typeCaster:type_casters_string},tagsSorter:{typeCaster:sorter},tryItOutEnabled:{typeCaster:type_casters_boolean,defaultValue:Ao.tryItOutEnabled},url:{typeCaster:type_casters_string},urls:{typeCaster:nullable_array},\"urls.primaryName\":{typeCaster:type_casters_string},validatorUrl:{typeCaster:nullable_string},withCredentials:{typeCaster:type_casters_boolean,defaultValue:Ao.withCredentials},uncaughtExceptionHandler:{typeCaster:nullable_function}},type_cast=e=>Object.entries(Mo).reduce(((e,[t,{typeCaster:r,defaultValue:a}])=>{if(jo()(e,t)){const n=r(Fe()(e,t),a);e=Po()(t,n,e)}return e}),{...e}),config_merge=(e,...t)=>{let r=Symbol.for(\"domNode\"),a=Symbol.for(\"primaryName\");const n=[];for(const e of t){const t={...e};Object.hasOwn(t,\"domNode\")&&(r=t.domNode,delete t.domNode),Object.hasOwn(t,\"urls.primaryName\")?(a=t[\"urls.primaryName\"],delete t[\"urls.primaryName\"]):Array.isArray(t.urls)&&Object.hasOwn(t.urls,\"primaryName\")&&(a=t.urls.primaryName,delete t.urls.primaryName),n.push(t)}const s=j()(e,...n);return r!==Symbol.for(\"domNode\")&&(s.domNode=r),a!==Symbol.for(\"primaryName\")&&Array.isArray(s.urls)&&(s.urls.primaryName=a),type_cast(s)};function SwaggerUI(e){const t=query()(e),r=runtime()(),a=SwaggerUI.config.merge({},SwaggerUI.config.defaults,r,e,t),n=factorization_system(a),s=inline_plugin(a),o=new Store(n);o.register([a.plugins,s]);const l=o.getSystem(),persistConfigs=e=>{o.setConfigs(e),l.configsActions.loaded()},updateSpec=e=>{!t.url&&\"object\"==typeof e.spec&&Object.keys(e.spec).length>0?(l.specActions.updateUrl(\"\"),l.specActions.updateLoadingStatus(\"success\"),l.specActions.updateSpec(JSON.stringify(e.spec))):\"function\"==typeof l.specActions.download&&e.url&&!e.urls&&(l.specActions.updateUrl(e.url),l.specActions.download(e.url))},render=e=>{if(e.domNode)l.render(e.domNode,\"App\");else if(e.dom_id){const t=document.querySelector(e.dom_id);l.render(t,\"App\")}else null===e.dom_id||null===e.domNode||console.error(\"Skipped rendering: no `dom_id` or `domNode` was specified\")};return a.configUrl?((async()=>{const{configUrl:e}=a,r=await sources_url({url:e,system:l})(a),n=SwaggerUI.config.merge({},a,r,t);persistConfigs(n),null!==r&&updateSpec(n),render(n)})(),l):(persistConfigs(a),updateSpec(a),render(a),l)}SwaggerUI.System=Store,SwaggerUI.config={defaults:Ao,merge:config_merge,typeCast:type_cast,typeCastMappings:Mo},SwaggerUI.presets={base,apis:PresetApis},SwaggerUI.plugins={Auth:auth,Configs:configsPlugin,DeepLining:deep_linking,Err:err,Filter:filter,Icons:icons,JSONSchema5:json_schema_5,JSONSchema5Samples:json_schema_5_samples,JSONSchema202012:json_schema_2020_12,JSONSchema202012Samples:json_schema_2020_12_samples,Layout:plugins_layout,Logs:logs,OpenAPI30:oas3,OpenAPI31:oas3,OnComplete:on_complete,RequestSnippets:plugins_request_snippets,Spec:plugins_spec,SwaggerClient:swagger_client,Util:util,View:view,ViewLegacy:view_legacy,DownloadUrl:downloadUrlPlugin,SyntaxHighlighting:syntax_highlighting,Versions:versions,SafeRender:safe_render};const To=SwaggerUI;return r=r.default})()));\n//# sourceMappingURL=swagger-ui.js.map"
  },
  {
    "path": "web/public/test.txt",
    "content": "test\n"
  },
  {
    "path": "web/src/App.vue",
    "content": "<template>\n  <v-app v-if=\"state === 'success'\" class=\"app\">\n    <YesNoDialog\n      :title=\"$t('projectRestoreResult')\"\n      v-model=\"restoreProjectResultDialog\"\n      hide-no-button\n      :yes-button-title=\"$t('close')\"\n      :max-width=\"400\"\n    >\n      <div class=\"pt-3\" v-if=\"restoreProjectResult\">\n        <v-alert dense outlined type=\"success\">\n          {{ $t('projectWithNameRestored', { projectName: restoreProjectResult.projectName }) }}\n        </v-alert>\n\n        <v-alert dense outlined type=\"error\" class=\"mb-0\">\n          <b>{{ $t('emptyKeysRestored', { emptyKeys: restoreProjectResult.emptyKeys }) }}</b>\n          {{ $t('pleaseUpdateAccessKeys') }}\n        </v-alert>\n      </div>\n    </YesNoDialog>\n\n    <EditDialog\n      v-model=\"userDialog\"\n      save-button-text=\"Save\"\n      :title=\"$t('editUser')\"\n      v-if=\"user\"\n      event-name=\"i-user\"\n      :hide-buttons=\"hideUserDialogButtons\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <UserForm\n          :project-id=\"projectId\"\n          :item-id=\"user.id\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :is-admin=\"user.admin\"\n          :auth-methods=\"(systemInfo || { auth_methods: {} }).auth_methods\"\n          @hide-action-buttons=\"hideUserDialogButtons = true\"\n          @show-action-buttons=\"hideUserDialogButtons = false\"\n        />\n      </template>\n    </EditDialog>\n\n    <TaskLogDialog\n      v-model=\"taskLogDialog\"\n      @close=\"onTaskLogDialogClosed()\"\n      :project-id=\"projectId\"\n      :item-id=\"taskId\"\n      :system-info=\"systemInfo\"\n    />\n\n    <EditDialog\n      v-model=\"newProjectDialog\"\n      save-button-text=\"Create\"\n      :title=\"$t('newProject')\"\n      event-name=\"i-project\"\n      @close=\"onNewProjectDialogueClosed()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <ProjectForm\n          v-if=\"newProjectType === ''\"\n          item-id=\"new\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <EditDialog\n      v-model=\"subscriptionDialog\"\n      hide-buttons\n      v-if=\"user\"\n      event-name=\"i-user\"\n      dont-close-on-save\n    >\n      <template v-slot:title=\"{}\">\n        {{\n          user.has_active_subscription ? 'Subscription &amp; Billing' : 'Upgrade to Semaphore PRO'\n        }}\n      </template>\n\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <SubscriptionForm\n          item-id=\"new\"\n          @save=\"\n            onSave();\n            onSubscriptionKeyUpdates();\n          \"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <EditDialog\n      v-model=\"restoreProjectDialog\"\n      save-button-text=\"Restore\"\n      :title=\"$t('restoreProject')\"\n      event-name=\"i-project\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <RestoreProjectForm\n          item-id=\"new\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <v-snackbar v-model=\"snackbar\" :color=\"snackbarColor\" :timeout=\"3000\" top>\n      {{ snackbarText }}\n      <v-btn text @click=\"snackbar = false\">\n        {{ $t('close') }}\n      </v-btn>\n    </v-snackbar>\n\n    <v-navigation-drawer\n      app\n      dark\n      :color=\"darkMode ? '#003236' : '#005057'\"\n      fixed\n      width=\"260\"\n      v-model=\"drawer\"\n      mobile-breakpoint=\"960\"\n      v-if=\"$route.path.startsWith('/project/')\"\n      class=\"NavDrawer\"\n    >\n      <v-menu bottom max-width=\"235\" max-height=\"100%\" v-if=\"project\">\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-list class=\"pa-0 overflow-y-auto\">\n            <v-list-item\n              key=\"project\"\n              class=\"app__project-selector\"\n              v-bind=\"attrs\"\n              v-on=\"on\"\n              data-testid=\"sidebar-currentProject\"\n            >\n              <v-list-item-icon>\n                <v-avatar\n                  :color=\"getProjectColor(project)\"\n                  size=\"24\"\n                  style=\"font-size: 13px; font-weight: bold\"\n                >\n                  <span class=\"white--text\">{{ getProjectInitials(project) }}</span>\n                </v-avatar>\n              </v-list-item-icon>\n\n              <v-list-item-content>\n                <v-list-item-title class=\"app__project-selector-title\">\n                  {{ project.name }}\n                </v-list-item-title>\n                <v-list-item-subtitle>{{ userRole.role }}</v-list-item-subtitle>\n              </v-list-item-content>\n\n              <v-list-item-icon>\n                <v-icon>mdi-chevron-down</v-icon>\n              </v-list-item-icon>\n            </v-list-item>\n          </v-list>\n        </template>\n        <v-list>\n          <v-list-item\n            v-for=\"(item, i) in projects\"\n            :key=\"i\"\n            :to=\"`/project/${item.id}`\"\n            @click=\"selectProject(item.id)\"\n          >\n            <v-list-item-icon>\n              <v-avatar\n                :color=\"getProjectColor(item)\"\n                size=\"24\"\n                style=\"font-size: 13px; font-weight: bold\"\n              >\n                <span class=\"white--text\">{{ getProjectInitials(item) }}</span>\n              </v-avatar>\n            </v-list-item-icon>\n            <v-list-item-content>{{ item.name }}</v-list-item-content>\n          </v-list-item>\n\n          <v-divider v-if=\"user.can_create_project\" />\n\n          <v-list-item\n            @click=\"showNewProjectDialogue()\"\n            v-if=\"user.can_create_project\"\n            data-testid=\"sidebar-newProject\"\n          >\n            <v-list-item-icon>\n              <v-icon>mdi-plus</v-icon>\n            </v-list-item-icon>\n\n            <v-list-item-content>\n              {{ $t('newProject2') }}\n            </v-list-item-content>\n          </v-list-item>\n\n          <v-list-item\n            @click=\"restoreProjectDialog = true\"\n            v-if=\"user.can_create_project\"\n            data-testid=\"sidebar-restoreProject\"\n          >\n            <v-list-item-icon>\n              <v-icon>mdi-backup-restore</v-icon>\n            </v-list-item-icon>\n\n            <v-list-item-content>\n              {{ $t('restoreProject') }}\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n\n      <v-list class=\"pt-0\" v-if=\"!project\">\n        <v-list-item key=\"new_project\" :to=\"`/project/new`\">\n          <v-list-item-icon>\n            <v-icon>mdi-plus</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('newProject2') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item key=\"restore_project\" :to=\"`/project/restore`\">\n          <v-list-item-icon>\n            <v-icon>mdi-restore</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('restoreProject') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n      </v-list>\n\n      <v-list class=\"pt-0\" v-if=\"project\">\n        <v-list-item\n          key=\"dashboard\"\n          :to=\"`/project/${projectId}/history`\"\n          data-testid=\"sidebar-dashboard\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-view-dashboard</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('dashboard') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"templates\"\n          :to=\"templatesUrl\"\n          data-testid=\"sidebar-templates\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-check-all</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('taskTemplates') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"schedule\"\n          :to=\"`/project/${projectId}/schedule`\"\n          data-testid=\"sidebar-schedule\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-clock-outline</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('schedule') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"inventory\"\n          :to=\"`/project/${projectId}/inventory`\"\n          data-testid=\"sidebar-inventory\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-monitor-multiple</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('inventory') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"environment\"\n          :to=\"`/project/${projectId}/environment`\"\n          data-testid=\"sidebar-environment\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-code-braces</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('environment') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"keys\"\n          :to=\"`/project/${projectId}/keys`\"\n          data-testid=\"sidebar-keys\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-key-change</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('keyStore') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"repositories\"\n          :to=\"`/project/${projectId}/repositories`\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-git</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('repositories') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item\n          v-if=\"project.type === ''\"\n          key=\"integrations\"\n          :to=\"`/project/${projectId}/integrations`\"\n          data-testid=\"sidebar-integrations\"\n        >\n          <v-list-item-icon>\n            <v-icon>mdi-connection</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('integrations') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-item key=\"team\" :to=\"`/project/${projectId}/team`\" data-testid=\"sidebar-team\">\n          <v-list-item-icon>\n            <v-icon>mdi-account-multiple</v-icon>\n          </v-list-item-icon>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ $t('team') }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n      </v-list>\n\n      <template v-slot:append>\n        <v-list class=\"pa-0\">\n          <v-list-item>\n            <v-switch\n              class=\"DarkModeSwitch\"\n              v-model=\"darkMode\"\n              prepend-icon=\"mdi-white-balance-sunny\"\n              append-icon=\"mdi-weather-night\"\n            ></v-switch>\n\n            <v-spacer />\n\n            <v-menu top min-width=\"150\" max-width=\"235\" nudge-top=\"12\" :position-x=\"50\" absolute>\n              <template v-slot:activator=\"{ on, attrs }\">\n                <v-btn icon v-bind=\"attrs\" v-on=\"on\">\n                  <img\n                    style=\"border-radius: 30px; max-width: 100%\"\n                    :src=\"`flags/${lang.flag}.svg`\"\n                    alt=\"\"\n                  />\n                </v-btn>\n              </template>\n\n              <v-list dense>\n                <v-list-item\n                  v-for=\"lang in languages\"\n                  :key=\"lang.id\"\n                  @click=\"selectLanguage(lang.id)\"\n                >\n                  <v-list-item-icon>\n                    <v-img\n                      style=\"border-radius: 20px; max-width: 24px\"\n                      :src=\"`flags/${lang.flag}.svg`\"\n                      alt=\"\"\n                    />\n                  </v-list-item-icon>\n\n                  <v-list-item-content>\n                    <v-list-item-title>{{ lang.title }}</v-list-item-title>\n                  </v-list-item-content>\n                </v-list-item>\n              </v-list>\n            </v-menu>\n          </v-list-item>\n\n          <v-menu top max-width=\"235\" nudge-top=\"12\">\n            <template v-slot:activator=\"{ on, attrs }\">\n              <v-list-item key=\"project\" v-bind=\"attrs\" v-on=\"on\">\n                <v-list-item-icon>\n                  <v-icon color=\"#f14668\" v-if=\"user.pro\"> mdi-professional-hexagon</v-icon>\n                  <v-icon v-else>mdi-account</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  <v-list-item-title>\n                    {{ user.name }}\n                  </v-list-item-title>\n                </v-list-item-content>\n\n                <v-list-item-action>\n                  <v-chip color=\"red\" v-if=\"user.admin\" small>{{ $i18n.t('admin') }}</v-chip>\n                </v-list-item-action>\n              </v-list-item>\n            </template>\n\n            <v-list>\n              <v-list-item key=\"version\">\n                <v-list-item-icon>\n                  <v-icon>mdi-information-variant</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ systemInfo.version }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item\n                key=\"subscription\"\n                v-if=\"isPro && user.admin\"\n                @click=\"subscriptionDialog = true\"\n              >\n                <v-list-item-icon>\n                  <v-icon color=\"#f14668\" style=\"transform: scale(1.4)\">\n                    mdi-professional-hexagon\n                  </v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{\n                    user.has_active_subscription\n                      ? 'Subscription &amp; Billing'\n                      : 'Upgrade to PRO or EE'\n                  }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-divider />\n\n              <v-list-item key=\"runners\" to=\"/runners\" v-if=\"user.admin\">\n                <v-list-item-icon>\n                  <v-icon>mdi-cogs</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('runners') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item key=\"tasks\" to=\"/tasks\" v-if=\"user.admin\">\n                <v-list-item-icon>\n                  <v-icon>mdi-check-all</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('activeTasks') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item key=\"tokens\" to=\"/tokens\" data-testid=\"sidebar-tokens\">\n                <v-list-item-icon>\n                  <v-icon>mdi-api</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('api_tokens') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item key=\"users\" to=\"/users\" v-if=\"user.admin\">\n                <v-list-item-icon>\n                  <v-icon>mdi-account-multiple</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('users') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item key=\"roles\" to=\"/roles\" v-if=\"isPro && user.admin\">\n                <v-list-item-icon>\n                  <v-icon>mdi-account-cog</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('Roles') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-list-item key=\"edit\" @click=\"userDialog = true\">\n                <v-list-item-icon>\n                  <v-icon>mdi-pencil</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('editAccount') }}\n                </v-list-item-content>\n              </v-list-item>\n\n              <v-divider />\n\n              <v-list-item key=\"sign_out\" @click=\"signOut()\" data-testid=\"sidebar-signout\">\n                <v-list-item-icon>\n                  <v-icon>mdi-exit-to-app</v-icon>\n                </v-list-item-icon>\n\n                <v-list-item-content>\n                  {{ $t('signOut') }}\n                </v-list-item-content>\n              </v-list-item>\n            </v-list>\n          </v-menu>\n        </v-list>\n      </template>\n    </v-navigation-drawer>\n\n    <v-main>\n      <router-view\n        :projectId=\"projectId\"\n        :projectType=\"(project || {}).type || ''\"\n        :userPermissions=\"(userRole || {}).permissions\"\n        :userRole=\"(userRole || {}).role\"\n        :userId=\"(user || {}).id\"\n        :isAdmin=\"(user || {}).admin\"\n        :user=\"user\"\n        :premiumFeatures=\"(systemInfo || { premium_features: {} }).premium_features\"\n        :authMethods=\"(systemInfo || { auth_methods: {} }).auth_methods\"\n        :systemInfo=\"systemInfo\"\n      ></router-view>\n    </v-main>\n  </v-app>\n  <v-app v-else-if=\"state === 'loading'\">\n    <v-main>\n      <v-container fluid fill-height align-center justify-center class=\"pa-0\">\n        <v-progress-circular :size=\"70\" color=\"primary\" indeterminate></v-progress-circular>\n      </v-container>\n    </v-main>\n  </v-app>\n  <v-app v-else-if=\"state === 'error'\">\n    <v-main>\n      <v-container\n        fluid\n        flex-column\n        fill-height\n        align-center\n        justify-center\n        class=\"pa-0 text-center\"\n      >\n        <v-alert text color=\"error\" class=\"d-inline-block\">\n          <h3 class=\"headline\">\n            {{ $t('error') }}\n          </h3>\n          {{ snackbarText }}\n        </v-alert>\n        <div class=\"mb-6\">\n          <v-btn text color=\"blue darken-1\" @click=\"refreshPage()\">\n            <v-icon left>mdi-refresh</v-icon>\n            {{ $t('refreshPage') }}\n          </v-btn>\n          <v-btn text color=\"blue darken-1\" @click=\"signOut()\">\n            <v-icon left>mdi-exit-to-app</v-icon>\n            {{ $t('relogin') }}\n          </v-btn>\n        </div>\n      </v-container>\n    </v-main>\n  </v-app>\n  <v-app v-else></v-app>\n</template>\n<style lang=\"scss\">\n.NavDrawer {\n  height: 100dvh !important;\n}\n\n.NewProSubscriptionMenuItem {\n  transition: 0.2s transform;\n\n  .v-list-item__content,\n  .v-list-item__icon {\n    transition: 0.5s transform;\n  }\n\n  &:hover {\n    transform: scale(1.05) translateY(-1px);\n\n    // .v-list-item__content {\n    //   transform: scale(1.05) translateX(2px);\n    // }\n    .v-list-item__icon {\n      // transform: rotate(-360deg);\n    }\n  }\n}\n\n.ActivatePremiumSubscriptionButton {\n  background: hsl(348deg, 86%, 61%);\n  //transform: scale(0.9);\n  //border-radius: 6px;\n  //transition: 0.2s transform;\n  //margin-bottom: 10px;\n}\n\n.theme--dark {\n  --highlighted-card-bg-color: #262626;\n}\n\n.theme--light {\n  --highlighted-card-bg-color: #f3f3f3;\n}\n\n.DarkModeSwitch {\n  .v-input__prepend-outer {\n    transform: translateY(1px);\n\n    .v-icon {\n      color: #cacaca !important;\n    }\n  }\n\n  .v-input__append-outer {\n    margin-left: 5px;\n    transform: translateY(-1px);\n\n    .v-icon {\n      color: #2196f3 !important;\n    }\n  }\n}\n\n.v-dialog > .v-card > .v-card__title {\n  flex-wrap: nowrap;\n  overflow: hidden;\n\n  & * {\n    white-space: nowrap;\n  }\n}\n\n.v-data-table tbody tr.v-data-table__expanded__content {\n  box-shadow: none !important;\n}\n\n.v-data-table a {\n  text-decoration-line: none;\n\n  &:hover {\n    text-decoration-line: underline;\n  }\n}\n\n.breadcrumbs__item--link {\n  text-decoration-line: none;\n\n  &:hover {\n    text-decoration-line: underline;\n  }\n}\n\n.breadcrumbs__separator {\n  padding: 0 10px;\n}\n\n.app__project-selector {\n  height: 64px;\n\n  & > .v-list-item__content {\n    padding: 0;\n  }\n\n  .v-list-item__icon {\n    margin-top: 20px !important;\n  }\n}\n\n.app__project-selector-title {\n  font-size: 1.25rem !important;\n  font-weight: bold;\n}\n\n.v-application--is-ltr .v-list-item__action:first-child,\n.v-application--is-ltr .v-list-item__icon:first-child {\n  margin-right: 16px !important;\n}\n\n.v-toolbar__content {\n  height: 64px !important;\n}\n\n.v-data-table .v-data-footer {\n  margin-left: 16px !important;\n  margin-right: 16px !important;\n}\n\n.v-data-table__wrapper {\n  padding-left: 16px !important;\n  padding-right: 16px !important;\n}\n\n.v-data-table {\n  td:first-child,\n  th:first-child {\n    padding-left: 2px !important;\n  }\n\n  td:last-child,\n  th:last-child {\n    padding-right: 2px !important;\n  }\n\n  .v-data-table__wrapper > table > thead > tr:last-child > th {\n    text-transform: uppercase;\n    white-space: nowrap;\n  }\n\n  .v-data-table__wrapper > table > tbody > tr {\n    background: transparent !important;\n\n    &:hover {\n      background-color: rgba(143, 143, 143, 0.04) !important;\n    }\n\n    & > td {\n      white-space: nowrap;\n    }\n  }\n}\n\n.v-data-table > .v-data-table__wrapper > table > tbody > tr > th,\n.v-data-table > .v-data-table__wrapper > table > thead > tr > th,\n.v-data-table > .v-data-table__wrapper > table > tfoot > tr > th,\n.v-data-table > .v-data-table__wrapper > table > tbody > tr > td {\n  font-size: 1rem !important;\n}\n\n.v-data-footer {\n  font-size: 1rem !important;\n}\n\n.v-toolbar__title {\n  font-weight: bold !important;\n}\n\n.v-app-bar__nav-icon {\n  margin-left: 0 !important;\n}\n\n.v-toolbar__title:not(:first-child) {\n  margin-left: 10px !important;\n}\n\n.v-slide-group__prev--disabled {\n  display: none !important;\n}\n\n@media (min-width: 960px) {\n  .v-app-bar__nav-icon {\n    display: none !important;\n  }\n\n  .v-toolbar__title:not(:first-child) {\n    padding-left: 0 !important;\n    margin-left: 0 !important;\n  }\n}\n\n.v-input {\n  .v-input__slot fieldset {\n    border-radius: 8px;\n    border-width: 1px;\n    border-color: rgba(133, 133, 133, 0.4);\n    background-color: rgba(133, 133, 133, 0.1);\n  }\n\n  .v-label--active {\n    text-shadow: 0 0 2px black;\n    font-weight: 500;\n  }\n\n  &.primary--text {\n    .v-input__slot fieldset {\n      border-width: 2px;\n      border-color: #2196f3;\n    }\n  }\n\n  &.error--text {\n    .v-input__slot fieldset {\n      border-width: 2px;\n      border-color: #ff5252;\n    }\n  }\n}\n\n.v-input--is-disabled {\n  opacity: 0.5;\n}\n\n.theme--light {\n  .v-input {\n    .v-label--active {\n      text-shadow: 0 0 2px white;\n    }\n  }\n}\n\n.v-list--dense .v-list-item .v-list-item__title {\n  font-weight: normal;\n  font-size: 1rem;\n}\n\n@import '~vuetify/src/styles/styles.sass';\n@media #{map-get($display-breakpoints, 'xl-only')} {\n  .CenterToScreen {\n    transform: translateX(-130px);\n  }\n}\n</style>\n\n<script>\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\nimport EditDialog from '@/components/EditDialog.vue';\nimport ProjectForm from '@/components/ProjectForm.vue';\nimport UserForm from '@/components/UserForm.vue';\nimport EventBus from '@/event-bus';\nimport socket from '@/socket';\n\nimport SubscriptionForm from '@/components/SubscriptionForm.vue';\nimport RestoreProjectForm from '@/components/RestoreProjectForm.vue';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport TaskLogDialog from '@/components/TaskLogDialog.vue';\nimport delay from '@/lib/delay';\n\nconst PROJECT_COLORS = ['red', 'blue', 'orange', 'green'];\n\nconst LANGUAGES = {\n  en: {\n    title: 'English',\n  },\n  es: {\n    title: 'Español',\n  },\n  ru: {\n    title: 'Russian',\n  },\n  de: {\n    title: 'German',\n  },\n  nl: {\n    title: 'Dutch (Netherlands)',\n  },\n  zh_cn: {\n    title: '中文(大陆)',\n  },\n  zh_tw: {\n    title: '中文(台灣)',\n  },\n  fr: {\n    title: 'French',\n  },\n  it: {\n    title: 'Italian',\n  },\n  pl: {\n    title: 'Polish',\n  },\n  pt: {\n    title: 'Portuguese',\n  },\n  pt_br: {\n    title: 'Português do Brasil',\n  },\n};\n\nfunction getLangInfo(locale) {\n  let lang = locale;\n  let res = LANGUAGES[lang];\n\n  // failback short i18n\n  if (!res) {\n    lang = lang.split('_')[0];\n    res = LANGUAGES[lang];\n  }\n\n  if (!res) {\n    lang = 'en';\n    res = LANGUAGES[lang];\n  }\n\n  res.flag = lang;\n\n  return res;\n}\n\nfunction getSystemLang() {\n  const locale = navigator.language.replace('-', '_').toLocaleLowerCase();\n\n  return getLangInfo(locale || 'en');\n}\n\nexport default {\n  name: 'App',\n  components: {\n    SubscriptionForm,\n    TaskLogDialog,\n    YesNoDialog,\n    RestoreProjectForm,\n    UserForm,\n    EditDialog,\n    ProjectForm,\n  },\n  data() {\n    return {\n      drawer: null,\n      user: null,\n      userRole: null,\n      systemInfo: null,\n      state: 'loading',\n      snackbar: false,\n      snackbarText: '',\n      snackbarColor: '',\n      projects: null,\n      newProjectDialog: null,\n      newProjectType: '',\n      userDialog: null,\n      hideUserDialogButtons: false,\n\n      subscriptionDialog: null,\n\n      restoreProjectDialog: null,\n      restoreProjectResult: null,\n      restoreProjectResultDialog: null,\n\n      taskLogDialog: null,\n      taskId: null,\n      template: null,\n      darkMode: false,\n      languages: [\n        {\n          id: '',\n          flag: getSystemLang().flag,\n          title: 'System',\n        },\n        ...Object.keys(LANGUAGES).map((lang) => ({\n          id: lang,\n          flag: lang,\n          ...LANGUAGES[lang],\n        })),\n      ],\n    };\n  },\n\n  watch: {\n    async projects(val) {\n      if (\n        val.length === 0\n        && this.$route.path.startsWith('/project/')\n        && this.$route.path !== '/project/new'\n        && this.$route.path !== '/project/premium'\n      ) {\n        if (this.$route.query.new_project === 'premium') {\n          await this.$router.push({ path: '/project/premium' });\n        } else {\n          await this.$router.push({ path: '/project/new' });\n        }\n      }\n    },\n\n    async $route(val) {\n      if (val.query.t == null) {\n        this.taskLogDialog = false;\n      } else {\n        const taskId = parseInt(this.$route.query.t || '', 10);\n        if (taskId) {\n          EventBus.$emit('i-show-task', { taskId });\n        }\n      }\n\n      if ((this.projects || []).length > 0 && this.$route.query.new_project) {\n        EventBus.$emit('i-new-project', { projectType: this.$route.query.new_project });\n      }\n    },\n\n    darkMode(val) {\n      this.$vuetify.theme.dark = val;\n      if (val) {\n        localStorage.setItem('darkMode', '1');\n      } else {\n        localStorage.removeItem('darkMode');\n      }\n    },\n  },\n\n  computed: {\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n\n    lang() {\n      const locale = localStorage.getItem('lang');\n\n      if (!locale) {\n        return getSystemLang();\n      }\n\n      return getLangInfo(locale || 'en');\n    },\n\n    projectId() {\n      return parseInt(this.$route.params.projectId, 10) || null;\n    },\n\n    project() {\n      if (this.projects == null) {\n        return null;\n      }\n      return this.projects.find((x) => x.id === this.projectId);\n    },\n\n    templatesUrl() {\n      let viewId = localStorage.getItem(`project${this.projectId}__lastVisitedViewId`);\n      if (viewId) {\n        viewId = parseInt(viewId, 10);\n        if (!Number.isNaN(viewId)) {\n          return `/project/${this.projectId}/views/${viewId}/templates`;\n        }\n      }\n      return `/project/${this.projectId}/templates`;\n    },\n  },\n\n  async created() {\n    if (localStorage.getItem('darkMode') === '1') {\n      this.darkMode = true;\n    }\n\n    try {\n      await this.loadData();\n      this.state = 'success';\n    } catch (err) {\n      if (err.response && err.response.status === 401) {\n        if (this.$route.path !== '/auth/login') {\n          await this.$router.replace({\n            path: '/auth/login',\n            query: { return: this.$route.fullPath },\n          });\n        }\n        this.state = 'success';\n        return;\n      }\n\n      EventBus.$emit('i-snackbar', {\n        color: 'error',\n        text: getErrorMessage(err),\n      });\n      this.state = 'error';\n      socket.stop();\n    }\n  },\n\n  mounted() {\n    EventBus.$on('i-subscription', () => {\n      this.subscriptionDialog = true;\n    });\n\n    EventBus.$on('i-snackbar', (e) => {\n      this.snackbar = true;\n      this.snackbarColor = e.color;\n      this.snackbarText = e.text;\n    });\n\n    EventBus.$on('i-account-change', async () => {\n      await this.loadUserInfo();\n    });\n\n    EventBus.$on('i-show-drawer', async () => {\n      this.drawer = true;\n    });\n\n    EventBus.$on('i-new-project', (e) => {\n      setTimeout(() => {\n        this.showNewProjectDialogue(e.projectType);\n      }, 500);\n    });\n\n    EventBus.$on('i-show-task', async (e) => {\n      if (parseInt(this.$route.query.t || '', 10) !== e.taskId) {\n        const query = { ...this.$route.query, t: e.taskId };\n        await this.$router.replace({ query });\n        return;\n      }\n\n      this.taskId = e.taskId;\n      await delay(1);\n      this.taskLogDialog = true;\n    });\n\n    EventBus.$on('i-open-last-project', async () => {\n      await this.trySelectMostSuitableProject();\n    });\n\n    EventBus.$on('i-user', async (e) => {\n      let text;\n\n      switch (e.action) {\n        case 'new':\n          text = `User ${e.item.name} created`;\n          break;\n        case 'edit':\n          text = `User ${e.item.name} saved`;\n          break;\n        case 'delete':\n          text = `User ${e.item.name} deleted`;\n          break;\n        default:\n          throw new Error('Unknown project action');\n      }\n\n      EventBus.$emit('i-snackbar', {\n        color: 'success',\n        text,\n      });\n\n      if (this.user && e.item.id === this.user.id) {\n        await this.loadUserInfo();\n      }\n    });\n\n    EventBus.$on('i-project', async (e) => {\n      let text;\n\n      const project = this.projects.find((p) => p.id === e.item.id) || e.item;\n      const projectName = project.name || `#${project.id}`;\n\n      switch (e.action) {\n        case 'new':\n          text = `Project ${projectName} created`;\n          break;\n        case 'edit':\n          text = `Project ${projectName} saved`;\n          break;\n        case 'delete':\n          text = `Project ${projectName} deleted`;\n          break;\n        case 'restore':\n          break;\n        default:\n          throw new Error('Unknown project action');\n      }\n\n      if (e.action === 'restore') {\n        const emptyKeys = (\n          await axios({\n            method: 'get',\n            url: `/api/project/${project.id}/keys`,\n            responseType: 'json',\n          })\n        ).data.filter((k) => k.empty);\n\n        this.restoreProjectResult = {\n          projectName,\n          emptyKeys: emptyKeys.length,\n        };\n        this.restoreProjectResultDialog = true;\n      } else {\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text,\n        });\n      }\n\n      await this.loadProjects();\n\n      switch (e.action) {\n        case 'new':\n        case 'restore':\n          await this.selectProject(e.item.id, { new_project: undefined });\n          break;\n        case 'delete':\n          if (this.projectId === e.item.id && this.projects.length > 0) {\n            await this.selectProject(this.projects[0].id);\n          }\n          break;\n        default:\n          break;\n      }\n    });\n  },\n\n  methods: {\n    async onSubscriptionKeyUpdates() {\n      EventBus.$emit('i-snackbar', {\n        color: 'success',\n        text: 'Subscription activated',\n      });\n\n      await this.loadUserInfo();\n    },\n\n    showNewProjectDialogue(projectType = '') {\n      this.newProjectDialog = true;\n      this.newProjectType = projectType;\n    },\n\n    selectLanguage(lang) {\n      localStorage.setItem('lang', lang);\n      window.location.reload();\n    },\n\n    async onNewProjectDialogueClosed() {\n      const query = { ...this.$route.query, new_project: undefined };\n      await this.$router.replace({ query });\n    },\n\n    async onTaskLogDialogClosed() {\n      const query = { ...this.$route.query, t: undefined };\n      await this.$router.replace({ query });\n    },\n\n    async loadData() {\n      await this.loadUserInfo();\n\n      // Activate session and start socket only after confirming user is authenticated\n      socket.setSessionActive(true);\n      if (!socket.isRunning()) {\n        socket.start();\n      }\n\n      await this.loadProjects();\n\n      // try to find project and switch to it if URL not pointing to any project\n      if (\n        this.$route.path === '/'\n        || this.$route.path === '/project'\n        || this.$route.path.startsWith('/project/')\n      ) {\n        await this.trySelectMostSuitableProject();\n      }\n\n      // display task dialog if query param t specified\n      if (this.$route.query.t) {\n        const taskId = parseInt(this.$route.query.t || '', 10);\n        if (taskId) {\n          EventBus.$emit('i-show-task', { taskId });\n        }\n      }\n\n      if ((this.projects || []).length > 0 && this.$route.query.new_project != null) {\n        EventBus.$emit('i-new-project', { projectType: this.$route.query.new_project });\n      }\n    },\n\n    async trySelectMostSuitableProject() {\n      if (this.projects.length === 0) {\n        if (this.$route.path !== '/project/new') {\n          await this.$router.push({ path: '/project/new' });\n        }\n        return;\n      }\n\n      let projectId;\n\n      if (this.projectId) {\n        projectId = this.projectId;\n      }\n\n      if (\n        (projectId == null || !this.projects.some((p) => p.id === projectId))\n        && localStorage.getItem('projectId')\n      ) {\n        projectId = parseInt(localStorage.getItem('projectId'), 10);\n      }\n\n      if (projectId == null || !this.projects.some((p) => p.id === projectId)) {\n        projectId = this.projects[0].id;\n      }\n\n      if (projectId != null) {\n        await this.selectProject(projectId);\n      }\n    },\n\n    async selectProject(projectId, overriderQuery = {}) {\n      this.userRole = (\n        await axios({\n          method: 'get',\n          url: `/api/project/${projectId}/role`,\n          responseType: 'json',\n        })\n      ).data;\n\n      localStorage.setItem('projectId', projectId);\n      if (this.projectId === projectId) {\n        return;\n      }\n\n      let query = {};\n\n      switch (this.$route.path) {\n        case '/project/new':\n          query.new_project = '';\n          break;\n        default:\n          break;\n      }\n\n      query = {\n        ...query,\n        ...overriderQuery,\n      };\n\n      await this.$router.push({\n        path: `/project/${projectId}${window.location.search}`,\n        query,\n      });\n    },\n\n    async loadProjects() {\n      this.projects = (\n        await axios({\n          method: 'get',\n          url: '/api/projects',\n          responseType: 'json',\n        })\n      ).data;\n    },\n\n    async loadUserInfo() {\n      this.user = (\n        await axios({\n          method: 'get',\n          url: '/api/user',\n          responseType: 'json',\n        })\n      ).data;\n\n      this.systemInfo = (\n        await axios({\n          method: 'get',\n          url: '/api/info',\n          responseType: 'json',\n        })\n      ).data;\n    },\n\n    getProjectColor(projectData) {\n      const i = this.projects.length - this.projects.findIndex((p) => p.id === projectData.id);\n      return PROJECT_COLORS[i % PROJECT_COLORS.length];\n    },\n\n    getProjectInitials(projectData) {\n      const parts = projectData.name.split(/\\s/);\n      if (parts.length >= 2) {\n        return `${parts[0][0]}${parts[1][0]}`.toUpperCase();\n      }\n      return parts[0].substr(0, 2).toUpperCase();\n    },\n\n    async restoreProject() {\n      const f = document.createElement('input');\n      f.setAttribute('type', 'file');\n      f.addEventListener('change', (e) => {\n        const file = e.target.files[0];\n        if (file) {\n          const reader = new FileReader();\n          reader.onload = async (ev) => {\n            const fileContent = ev.target.result;\n            try {\n              await axios.post('/api/projects/restore', fileContent).then(async (payload) => {\n                this.$router.push({ path: `/project/${payload.data.id}/history` });\n                this.state = 'success';\n                await this.loadProjects();\n              });\n            } catch (err) {\n              EventBus.$emit('i-snackbar', {\n                color: 'error',\n                text: getErrorMessage(err),\n              });\n            }\n          };\n          reader.readAsText(file);\n        }\n      });\n      f.click();\n    },\n\n    async signOut() {\n      this.snackbar = false;\n      this.snackbarColor = '';\n      this.snackbarText = '';\n\n      try {\n        await axios({\n          method: 'post',\n          url: '/api/auth/logout',\n          responseType: 'json',\n        });\n\n        socket.setSessionActive(false);\n        socket.stop();\n\n        if (this.$route.path !== '/auth/login') {\n          await this.$router.push({ path: '/auth/login' });\n          this.state = 'success';\n        }\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      }\n    },\n\n    refreshPage() {\n      const { location } = document;\n      document.location = location;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/assets/fonts/LICENSE.txt",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "web/src/assets/scss/components.scss",
    "content": ".FieldTable {\n  .v-data-table__wrapper {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n    td {\n      border-bottom: 0 !important;\n    }\n    td:last-child {\n      padding-right: 15px !important;\n    }\n    td:first-child {\n      padding-left: 5px !important;\n    }\n  }\n}\n\n.vue-codemirror {\n  border-radius: 6px !important;\n}\n\n.CodeMirror {\n  border-radius: 5px !important;\n}\n\n.PageAlert {\n  border-radius: 0;\n  .v-alert__content {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n  }\n}\n\n.TextInput {\n\n}\n\n.TextInput--no-legend {\n  legend {\n    width: 0 !important;\n  }\n\n  .v-label.v-label--active {\n    display: none;\n  }\n}"
  },
  {
    "path": "web/src/assets/scss/main.scss",
    "content": "$mdi-font-path: \"~@mdi/font/fonts\";\n@import '~@mdi/font/scss/materialdesignicons';\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 100;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Thin.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 100;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Thin.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 300;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Light.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 400;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Regular.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 500;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Medium.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 700;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Bold.ttf\") format('truetype');\n}\n\n@font-face {\n  font-family: \"Roboto\";\n  font-style: normal;\n  font-weight: 900;\n  font-display: swap;\n  src: url(\"../fonts/Roboto-Black.ttf\") format('truetype');\n}\n\n@import '~vuetify/src/styles/main';\n\n.v-application.theme--dark .v-overlay__scrim {\n  background: #878787 !important;\n}\n\n.v-bottom-sheet > .v-sheet.theme--dark {\n  background: #212121;\n}\n\n.opacity1 {\n  opacity: 1 !important;\n}\n\n.masked-secret-input input {\n  -webkit-text-security: disc;\n}\n\n@import \"components\";"
  },
  {
    "path": "web/src/components/AboutDialog.vue",
    "content": "<template></template>\n"
  },
  {
    "path": "web/src/components/AnsibleStageView.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div style=\"overflow: hidden;\" class=\"pb-5\">\n    <v-alert\n      type=\"info\"\n      text\n      color=\"hsl(348deg, 86%, 61%)\"\n      style=\"border-radius: 0;\"\n      v-if=\"!premiumFeatures.task_summary\"\n    >\n        <span class=\"mr-2\">\n          This is <b>DEMO</b> data.\n          Task summary available only in <b>PRO</b> version.\n        </span>\n      <v-btn\n        color=\"hsl(348deg, 86%, 61%)\"\n        target=\"_blank\"\n        href=\"https://semaphoreui.com/pro#task_result\"\n      >\n        Learn more\n        <v-icon>mdi-chevron-right</v-icon>\n      </v-btn>\n    </v-alert>\n\n    <div class=\"pl-5 pt-5 d-flex\" style=\"column-gap: 10px;\">\n      <div class=\"AnsibleServerStatus AnsibleServerStatus--ok\">\n        <div class=\"AnsibleServerStatus__count\">{{ okServers }}</div>\n        <div class=\"AnsibleServerStatus__title\">OK SERVERS</div>\n      </div>\n\n      <div class=\"AnsibleServerStatus AnsibleServerStatus--bad\">\n        <div class=\"AnsibleServerStatus__count\">{{ notOkServers }}</div>\n        <div class=\"AnsibleServerStatus__title\">NOT OK SERVERS</div>\n      </div>\n    </div>\n\n    <v-btn-toggle class=\"pl-5 mt-8 mb-3\" dense v-model=\"tab\" mandatory>\n      <v-btn value=\"notOkServers\">\n        Not ok servers\n      </v-btn>\n      <v-btn value=\"allServers\">\n        All servers\n      </v-btn>\n    </v-btn-toggle>\n\n    <v-data-table\n      v-if=\"tab === 'notOkServers'\"\n      hide-default-footer\n      single-expand\n      show-expand\n      :headers=\"notOkServersHeaders\"\n      :items=\"failedTasks\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      class=\"w-100\"\n    >\n      <template v-slot:item.error=\"{ item }\">\n        <div\n          style=\"overflow: hidden; color: #ff5252; max-width: 400px; text-overflow: ellipsis\">\n          {{ item.error }}\n        </div>\n      </template>\n      <template v-slot:expanded-item=\"{ headers, item }\">\n        <td\n          :colspan=\"headers.length\"\n        >\n            <pre style=\"overflow: auto;\n                  background: gray;\n                  font-size: 14px;\n                  color: white;\n                  border-radius: 10px;\n                  white-space: pre-wrap;\n                  margin-top: 5px;\n                  margin-bottom: 5px;\"\n\n                 class=\"pa-2\"\n            >{{ item.error.trim() }}</pre>\n        </td>\n      </template>\n    </v-data-table>\n\n<!--    <v-simple-table v-if=\"tab === 'notOkServers'\">-->\n<!--      <template v-slot:default>-->\n<!--        <thead>-->\n<!--        <tr>-->\n<!--          <th style=\"width: 150px;\">Server</th>-->\n<!--          <th style=\"width: 200px;\">Task</th>-->\n<!--          <th style=\"width: calc(100% - 350px);\">Error</th>-->\n<!--        </tr>-->\n<!--        </thead>-->\n<!--        <tbody>-->\n<!--        <tr v-if=\"!failedTasks || failedTasks.length === 0\">-->\n<!--          <td colspan=\"3\" class=\"text-center\">No failed tasks</td>-->\n<!--        </tr>-->\n\n<!--        <tr v-else v-for=\"(task, index) in failedTasks\" :key=\"index\">-->\n<!--          <td style=\"width: 150px;\">{{ task.host }}</td>-->\n<!--          <td style=\"width: 200px;\">{{ task.task }}</td>-->\n<!--          <td>-->\n<!--            <div-->\n<!--              style=\"overflow: hidden; color: #ff5252;\nmax-width: 400px; text-overflow: ellipsis\">-->\n<!--              {{ task.error }}-->\n<!--            </div>-->\n<!--          </td>-->\n<!--        </tr>-->\n\n<!--        </tbody>-->\n<!--      </template>-->\n<!--    </v-simple-table>-->\n\n    <v-simple-table v-else-if=\"tab === 'allServers'\">\n      <template v-slot:default>\n        <thead>\n        <tr>\n          <th>Host</th>\n          <th>Changed</th>\n          <th>Failed</th>\n          <th>Ignored</th>\n          <th>Ok</th>\n          <th>Rescued</th>\n          <th>Skipped</th>\n          <th>Unreachable</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr v-for=\"(host, index) in hosts\" :key=\"index\">\n          <td>{{ host.host }}</td>\n\n          <td :style=\"{\n            color: (host.changed > 0 ? 'rgb(170,85,0)' : undefined),\n            'font-weight': (host.changed > 0 ? 'bold' : undefined),\n          }\"\n          >{{ host.changed }}</td>\n\n          <td :style=\"{\n            color: (host.failed > 0 ? 'red' : undefined),\n            'font-weight': (host.failed > 0 ? 'bold' : undefined),\n          }\">{{ host.failed }}</td>\n\n          <td :style=\"{\n            color: (host.ignored > 0 ? 'red' : undefined),\n            'font-weight': (host.ignored > 0 ? 'bold' : undefined),\n          }\"\n          >{{ host.ignored }}</td>\n\n          <td :style=\"{\n            color: (host.ok > 0 ? 'green' : undefined),\n            'font-weight': (host.ok > 0 ? 'bold' : undefined),\n          }\"\n          >{{ host.ok }}</td>\n\n          <td :style=\"{\n            'font-weight': (host.rescued > 0 ? 'bold' : undefined),\n          }\"\n          >{{ host.rescued }}</td>\n\n          <td :style=\"{\n            color: (host.skipped > 0 ? 'rgb(0,170,170)' : undefined),\n            'font-weight': (host.skipped > 0 ? 'bold' : undefined),\n          }\"\n          >{{ host.skipped }}</td>\n\n          <td :style=\"{\n            color: (host.unreachable > 0 ? 'red' : undefined),\n            'font-weight': (host.unreachable > 0 ? 'bold' : undefined),\n          }\">\n            {{ host.unreachable }}\n          </td>\n        </tr>\n        </tbody>\n      </template>\n    </v-simple-table>\n  </div>\n</template>\n<style lang=\"scss\">\n.AnsibleServerStatus {\n  text-align: center;\n  width: 250px;\n  font-weight: bold;\n  color: white;\n  font-size: 24px;\n  line-height: 1.2;\n  border-radius: 8px;\n}\n\n.AnsibleServerStatus__count {\n  padding-top: 10px;\n  font-size: 80px;\n  line-height: 1;\n}\n\n.AnsibleServerStatus--ok {\n  background-color: #4caf50;\n}\n\n.AnsibleServerStatus--bad {\n  background-color: #ff5252;\n}\n\n.AnsibleServerStatus__title {\n  padding-bottom: 10px;\n}\n</style>\n\n<script>\n\nimport ProjectMixin from '@/components/ProjectMixin';\n\nexport default {\n  props: {\n    projectId: Number,\n    taskId: Number,\n    premiumFeatures: Object,\n  },\n\n  mixins: [ProjectMixin],\n\n  data() {\n    return {\n      stages: null,\n      okServers: 0,\n      notOkServers: 0,\n      tab: 'notOkServers',\n      failedTasks: [],\n      hosts: null,\n      notOkServersHeaders: [{\n        text: 'Server',\n        value: 'host',\n        sortable: false,\n      }, {\n        text: 'Task',\n        value: 'task',\n        sortable: false,\n      }, {\n        text: 'Error',\n        value: 'error',\n        sortable: false,\n      }],\n    };\n  },\n\n  watch: {\n    async taskId() {\n      await this.loadData();\n      this.calcStats();\n    },\n  },\n\n  async created() {\n    await this.loadData();\n    this.calcStats();\n  },\n\n  methods: {\n    async loadData() {\n      [this.failedTasks, this.hosts, this.stages] = await Promise.all([\n        this.loadProjectEndpoint(`/tasks/${this.taskId}/ansible/errors`),\n        this.loadProjectEndpoint(`/tasks/${this.taskId}/ansible/hosts`),\n        this.loadProjectEndpoint(`/tasks/${this.taskId}/stages`),\n      ]);\n\n      this.hosts.forEach((host) => {\n        if (host.unreachable) {\n          this.failedTasks.push({\n            host: host.host,\n            task: '—',\n            error: 'Host is unreachable',\n          });\n        }\n      });\n    },\n\n    calcStats() {\n      this.hosts.forEach((host) => {\n        if (host.failed > 0 || host.unreachable > 0) {\n          this.notOkServers += 1;\n        } else {\n          this.okServers += 1;\n        }\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/AppFieldsMixin.js",
    "content": "import { APP_FIELDS, UNKNOWN_APP_FIELDS } from '@/lib/constants';\n\nexport default {\n\n  computed: {\n    fields() {\n      return APP_FIELDS[this.app] || UNKNOWN_APP_FIELDS;\n    },\n  },\n\n  methods: {\n\n    fieldLabel(f) {\n      return this.$t((this.fields[f] || { label: f }).label);\n    },\n\n    needField(f) {\n      return this.fields[f] != null;\n    },\n\n    isFieldRequired(f) {\n      return this.fields[f] != null && !this.fields[f].optional;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/AppForm.vue",
    "content": "<template>\n  <v-form\n      ref=\"form\"\n      lazy-validation\n      v-model=\"formValid\"\n      v-if=\"item != null\"\n  >\n    <v-alert\n        :value=\"formError\"\n        color=\"error\"\n        class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n        v-model=\"id\"\n        :label=\"$t('ID')\"\n        :rules=\"[v => !!v || $t('id_required')]\"\n        required\n        :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n        v-model=\"item.icon\"\n        :label=\"$t('Icon')\"\n        :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n        v-model=\"item.title\"\n        :label=\"$t('name')\"\n        :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n        v-model=\"item.path\"\n        :label=\"$t('Path')\"\n        :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n      type=\"number\"\n      v-model.number=\"item.priority\"\n      :label=\"$t('Priority')\"\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <ArgsPicker style=\"margin-top: -10px;\" :vars=\"item.args\" @change=\"setArgs\"/>\n\n    <v-checkbox\n        v-model=\"item.active\"\n        :label=\"$t('Active')\"\n    ></v-checkbox>\n\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport ArgsPicker from './ArgsPicker.vue';\n\nexport default {\n  components: { ArgsPicker },\n  mixins: [ItemFormBase],\n\n  computed: {\n    isNew() {\n      return this.itemId === '';\n    },\n  },\n\n  data() {\n    return {\n      id: null,\n    };\n  },\n\n  watch: {\n    itemId() {\n      this.id = this.itemId;\n    },\n  },\n\n  methods: {\n    setArgs(args) {\n      this.item.args = args;\n    },\n\n    beforeLoadData() {\n      if (!this.isNew) {\n        this.id = this.itemId;\n      }\n    },\n\n    afterReset() {\n      this.id = null;\n    },\n\n    getItemsUrl() {\n      return `/api/apps/${this.id}`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/apps/${this.id}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/AppsMixin.js",
    "content": "import axios from 'axios';\nimport { APP_ICONS, APP_SHORT_TITLE, APP_TITLE } from '../lib/constants';\n\nexport default {\n  data() {\n    return {\n      appsMixin: {\n        activeAppIds: [],\n        apps: null,\n      },\n    };\n  },\n\n  async created() {\n    const apps = await this.loadAppsDataFromBackend();\n\n    this.appsMixin.activeAppIds = apps.filter((app) => app.active).map((app) => app.id);\n\n    this.appsMixin.apps = apps.reduce((prev, app) => ({\n      ...prev,\n      [app.id]: app,\n    }), {});\n  },\n\n  computed: {\n    isAppsLoaded() {\n      return this.appsMixin.apps != null;\n    },\n  },\n\n  methods: {\n    async loadAppsDataFromBackend() {\n      return (await axios({\n        method: 'get',\n        url: '/api/apps',\n        responseType: 'json',\n      })).data;\n    },\n\n    getAppColor(id) {\n      if (this.appsMixin.apps[id]?.color) {\n        return this.appsMixin.apps[id].color || 'gray';\n      }\n\n      if (APP_ICONS[id]) {\n        return this.$vuetify.theme.dark ? APP_ICONS[id].darkColor : APP_ICONS[id].color;\n      }\n\n      return 'gray';\n    },\n\n    getAppTitle(id, short = false) {\n      if (this.appsMixin.apps[id]?.title) {\n        return this.appsMixin.apps[id].title;\n      }\n\n      if (short) {\n        if (APP_SHORT_TITLE[id]) {\n          return APP_SHORT_TITLE[id];\n        }\n      }\n\n      if (APP_TITLE[id]) {\n        return APP_TITLE[id];\n      }\n\n      return '';\n    },\n\n    getAppIcon(id) {\n      if (this.appsMixin.apps[id]?.icon) {\n        return `mdi-${this.appsMixin.apps[id].icon}`;\n      }\n\n      if (APP_ICONS[id]) {\n        return APP_ICONS[id].icon;\n      }\n\n      return 'mdi-help';\n    },\n\n  },\n};\n"
  },
  {
    "path": "web/src/components/ArgsPicker.vue",
    "content": "<template>\n  <div class=\"pb-6\" style=\"margin-top: -10px;\">\n    <v-dialog\n      v-model=\"editDialog\"\n      hide-overlay\n      width=\"400\"\n    >\n      <v-card :color=\"$vuetify.theme.dark ? '#212121' : 'white'\">\n        <v-card-title></v-card-title>\n        <v-card-text class=\"pb-0\">\n          <v-form\n            ref=\"form\"\n            lazy-validation\n            v-if=\"editedVar != null\"\n          >\n            <v-alert\n              :value=\"formError\"\n              color=\"error\"\n            >{{ formError }}\n            </v-alert>\n\n            <v-text-field\n              :label=\"argTitle || $t('arg')\"\n              v-model.trim=\"editedVar.name\"\n              :rules=\"[(v) => !!v || $t('arg_required')]\"\n              required\n              outlined\n              dense\n            />\n\n            <div class=\"text-right mt-2\">\n\n              <v-btn\n                color=\"primary\"\n                v-if=\"editedVar.type === 'enum'\"\n                @click=\"addEditedVarValue()\"\n              >Add Value</v-btn>\n            </div>\n          </v-form>\n        </v-card-text>\n        <v-card-actions>\n          <v-spacer></v-spacer>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"editDialog = false\"\n          >\n            {{ $t('cancel') }}\n          </v-btn>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"saveVar()\"\n          >\n            {{ editedVarIndex == null ? $t('add') : $t('save') }}\n          </v-btn>\n        </v-card-actions>\n      </v-card>\n    </v-dialog>\n    <fieldset style=\"padding: 0 10px 2px 10px;\n                        border-width: 1px;\n                        border-color: rgba(133, 133, 133, 0.4);\n                        background-color: rgba(133, 133, 133, 0.1);\n                     border-radius: 8px;\n                     font-size: 12px;\"\n    >\n      <legend style=\"padding: 0 3px;\">{{ title || $t('Args') }}</legend>\n      <v-chip-group column style=\"margin-top: -4px;\">\n        <draggable\n          v-model=\"modifiedVars\"\n          @end=\"onDragEnd\"\n          :animation=\"200\"\n          class=\"d-flex flex-wrap\"\n          ghost-class=\"chip-ghost\"\n        >\n          <v-chip\n            v-for=\"(v, i) in modifiedVars\"\n            close\n            @click:close=\"deleteVar(i)\"\n            :key=\"i\"\n            @click=\"editVar(i)\"\n            class=\"draggable-chip\"\n          >\n            <div\n              style=\"\n                max-width: 200px;\n                overflow: hidden;\n                text-overflow: ellipsis;\n              \"\n            >{{ v.name }}</div>\n          </v-chip>\n        </draggable>\n        <v-chip @click=\"editVar(null)\">\n          + <span\n                class=\"ml-1\"\n                v-if=\"modifiedVars.length === 0\"\n            >{{ addArgTitle || $t('addArg') }}</span>\n        </v-chip>\n      </v-chip-group>\n    </fieldset>\n  </div>\n</template>\n<style lang=\"scss\">\n.draggable-chip {\n  cursor: grab;\n\n  &:active {\n    cursor: grabbing;\n  }\n}\n\n.chip-ghost {\n  opacity: 0.5;\n}\n</style>\n<script>\nimport draggable from 'vuedraggable';\n\nexport default {\n  components: {\n    draggable,\n  },\n  props: {\n    vars: Array,\n    title: String,\n    addArgTitle: String,\n    argTitle: String,\n  },\n  watch: {\n    vars(val) {\n      this.var = val || [];\n      this.fillModifiedVars();\n    },\n  },\n\n  created() {\n    this.fillModifiedVars();\n  },\n\n  data() {\n    return {\n      editDialog: null,\n      editedVar: null,\n      editedValues: [],\n      editedVarIndex: null,\n      modifiedVars: null,\n      formError: null,\n    };\n  },\n  methods: {\n    fillModifiedVars() {\n      this.modifiedVars = (this.vars || []).map((v) => ({ name: v }));\n    },\n\n    addEditedVarValue() {\n      this.editedValues.push({\n        name: '',\n        value: '',\n      });\n    },\n\n    editVar(index) {\n      this.editedVar = index != null ? { ...this.modifiedVars[index] } : {};\n\n      this.editedValues = [];\n      this.editedValues.push(...(this.editedVar.values || []));\n      this.editedVar.values = this.editedValues;\n\n      this.editedVarIndex = index;\n\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n\n      this.editDialog = true;\n    },\n\n    saveVar() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        return;\n      }\n\n      this.editedVar.values = [];\n\n      if (this.editedVarIndex != null) {\n        this.modifiedVars[this.editedVarIndex] = this.editedVar;\n      } else {\n        this.modifiedVars.push(this.editedVar);\n      }\n\n      this.editDialog = false;\n      this.editedVar = null;\n      this.$emit('change', this.modifiedVars.map((x) => x.name));\n    },\n\n    deleteVar(index) {\n      this.modifiedVars.splice(index, 1);\n      this.$emit('change', this.modifiedVars.map((x) => x.name));\n    },\n\n    onDragEnd() {\n      this.$emit('change', this.modifiedVars.map((x) => x.name));\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ChangePasswordForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.password\"\n      :label=\"$t('password2')\"\n      :class=\"{ 'masked-secret-input': !showPassword }\"\n      :append-icon=\"showPassword ? 'mdi-eye' : 'mdi-eye-off'\"\n      @click:append=\"showPassword = !showPassword\"\n      :rules=\"[v => !!v || $t('password_required')]\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      showPassword: false,\n    };\n  },\n\n  methods: {\n    async loadData() {\n      this.item = {};\n    },\n\n    getItemsUrl() {\n      return null;\n    },\n\n    getSingleItemUrl() {\n      return null;\n    },\n\n    getRequestOptions() {\n      return {\n        method: 'post',\n        url: `/api/users/${this.itemId}/password`,\n      };\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/CopyClipboardButton.vue",
    "content": "<template>\n  <span>\n    <!-- eslint-disable-next-line vuejs-accessibility/form-control-has-label -->\n    <textarea\n      style=\"position: absolute; left: -9999px; top: -9999px;\"\n      ref=\"copy_to_clipboard_textarea\"\n    ></textarea>\n\n    <v-btn\n      icon\n      @click=\"copy()\"\n      :large=\"large\"\n    >\n      <v-icon>mdi-content-copy</v-icon>\n    </v-btn>\n  </span>\n</template>\n\n<script>\nimport EventBus from '@/event-bus';\n\nexport default {\n  props: {\n    text: String,\n    successMessage: {\n      type: String,\n      default: 'Text copied to clipboard!',\n    },\n    large: Boolean,\n    color: String,\n  },\n  methods: {\n    copy() {\n      try {\n        const el = this.$refs.copy_to_clipboard_textarea;\n        el.value = this.text;\n        el.focus();\n        el.select();\n        const successful = document.execCommand('copy');\n\n        if (!successful) {\n          throw new Error('Fallback copy failed');\n        }\n\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: this.successMessage,\n        });\n      } catch (e) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: `Can't copy to clipboard: ${e.message}`,\n        });\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/CronInput.vue",
    "content": ""
  },
  {
    "path": "web/src/components/DashboardMenu.vue",
    "content": "<template>\n  <div>\n    <v-tabs class=\"pl-4\">\n      <v-tab\n        v-if=\"projectType === ''\"\n        key=\"history\"\n        :to=\"`/project/${projectId}/history`\"\n        data-testid=\"dashboard-history\"\n      >{{ $t('history') }}\n      </v-tab>\n\n      <v-tab\n        v-if=\"projectType === ''\"\n        key=\"stats\"\n        :to=\"`/project/${projectId}/stats`\"\n        data-testid=\"dashboard-stats\"\n      >{{ $t('project_stats') }}</v-tab>\n\n      <v-tab key=\"activity\" :to=\"`/project/${projectId}/activity`\">{{ $t('activity') }}</v-tab>\n\n      <v-tab\n        v-if=\"canUpdateProject\"\n        key=\"settings\"\n        :to=\"`/project/${projectId}/settings`\"\n        data-testid=\"dashboard-settings\"\n      >{{ $t('settings') }}\n      </v-tab>\n\n      <v-tab\n        v-if=\"isPro && canUpdateProject && projectType === ''\"\n        key=\"runners\"\n        :to=\"`/project/${projectId}/runners`\"\n        data-testid=\"dashboard-runners\"\n      >\n        {{ $t('runners') }}\n      </v-tab>\n    </v-tabs>\n\n    <v-divider style=\"margin-top: -1px;\" />\n  </div>\n</template>\n<script>\n\nexport default {\n\n  props: {\n    projectId: Number,\n    projectType: String,\n    canUpdateProject: Boolean,\n  },\n\n  computed: {\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n  },\n\n  data() {\n    return {\n      id: null,\n    };\n  },\n\n};\n</script>\n"
  },
  {
    "path": "web/src/components/DvlsIcon.vue",
    "content": "<template>\n  <svg width=\"36\" height=\"36\" viewBox=\"8 8 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <!-- eslint-disable max-len -->\n    <path d=\"M24 9.625L11.5 12.75V19.375C11.5 19.97 11.5338 20.6675 11.6063 21.2588C11.7788 22.665 12.1813 25.3012 12.9762 27.4962C14.9362 32.9087 18.5913 36.6188 23.5463 38.2275L24 38.375L24.4537 38.2275C29.4087 36.6188 33.0638 32.9087 35.0238 27.4962C35.8063 25.3337 36.21 22.7437 36.3863 21.3225C36.4613 20.71 36.5 19.9925 36.5 19.375V12.75L24 9.625ZM34 19.4262C34 19.95 33.9663 20.5162 33.9038 21.0162C33.7475 22.28 33.38 24.6925 32.6737 26.6437C31.03 31.1862 28.035 34.325 24.0013 35.7412C19.9663 34.3237 16.9725 31.185 15.3288 26.645C15.0425 25.855 14.8138 24.9925 14.63 24.1575L24 26.5V24L14.165 21.5412C14.1362 21.3287 14.11 21.13 14.0888 20.9562C14.0313 20.4912 14 19.9487 14 19.4262V19L24 21.5V19L14 16.5V14.6875L24 12.2025L34 14.6875V19.4262Z\" fill=\"#ED1F24\"/>\n    <!-- eslint-enable max-len -->\n  </svg>\n</template>\n\n<script>\nexport default {\n  name: 'DvlsIcon',\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EditDialog.vue",
    "content": "<!--\nModal dialog which contains slot \"form\" and two buttons (\"Cancel\" and \"OK\").\nShould be used to wrap forms which need to be displayed in modal dialog.\nCan use used in tandem with ItemFormBase.js. See KeyForm.vue for example.\n-->\n<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <v-dialog\n    v-model=\"dialog\"\n    :max-width=\"maxWidth || 400\"\n    persistent\n    :fullscreen=\"expandable && fullscreen\"\n    :transition=\"false\"\n    :content-class=\"\n      `item-dialog ${ expandable ? 'item-dialog--expandable' : ''}\n      item-dialog--${position} ${contentClass || ''}`\n    \"\n  >\n    <v-card :data-testid=\"testId\">\n      <v-card-title>\n        <slot name=\"title\">\n          <v-icon v-if=\"icon\" :color=\"iconColor\" class=\"mr-3\">{{ icon }}</v-icon>\n          {{ title }}\n        </slot>\n\n        <v-spacer></v-spacer>\n\n        <div class=\"item-dialog__title-actions\">\n          <v-btn\n            icon\n            @click=\"toggleHelp()\"\n            class=\"mr-3\"\n            :style=\"{opacity: needHelp ? 1 : 0.3}\"\n            v-if=\"helpButton\"\n          >\n            <v-icon>mdi-help-box</v-icon>\n          </v-btn>\n\n          <v-btn icon @click=\"toggleFullscreen()\" class=\"mr-3\" v-if=\"expandable\">\n            <v-icon>mdi-arrow-{{ fullscreen ? 'collapse' : 'expand' }}</v-icon>\n          </v-btn>\n\n          <v-btn icon @click=\"close()\" data-testid=\"editDialog-close\">\n            <v-icon>mdi-close</v-icon>\n          </v-btn>\n        </div>\n\n      </v-card-title>\n\n      <v-card-text\n        :class=\"{\n          'pb-0': !hideButtons,\n          'pa-0': noBodyPaddings,\n        }\"\n        :style=\"{\n          minHeight: minContentHeight + 'px'\n        }\"\n      >\n        <slot\n          name=\"form\"\n          :onSave=\"onSave\"\n          :onError=\"clearFlags\"\n          :needSave=\"needSave\"\n          :needReset=\"needReset\"\n          :needHelp=\"needHelp\"\n        ></slot>\n      </v-card-text>\n\n      <v-card-actions v-if=\"!hideButtons\">\n        <v-spacer></v-spacer>\n\n        <v-btn\n          color=\"blue darken-1\"\n          text\n          @click=\"close()\"\n        >\n          {{ cancelButtonText || $t('cancel') }}\n        </v-btn>\n\n        <v-btn\n          color=\"blue darken-1\"\n          text\n          @click=\"needSave = true\"\n          v-if=\"saveButtonText != null\"\n          data-testid=\"editDialog-save\"\n        >\n          {{ saveButtonText }}\n        </v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n<style lang=\"scss\">\n  .item-dialog--top {\n    align-self: flex-start;\n  }\n\n  .item-dialog__title-actions {\n    position: absolute;\n    right: 12px;\n  }\n\n  .item-dialog {\n    .v-card__title {\n      white-space: nowrap;\n      overflow: hidden;\n      margin-right: 12px;\n      padding-bottom: 20px !important;\n    }\n  }\n\n  .theme--dark {\n    .item-dialog__title-actions {\n        background: #1E1E1E;\n    }\n  }\n\n  .theme--light {\n    .item-dialog__title-actions {\n      background: white;\n    }\n  }\n</style>\n<script>\n\nimport EventBus from '@/event-bus';\n\nexport default {\n  props: {\n    testId: String,\n    contentClass: String,\n    position: String,\n    title: String,\n    icon: String,\n    iconColor: String,\n    value: Boolean,\n    maxWidth: Number,\n    minContentHeight: Number,\n    eventName: String,\n    hideButtons: Boolean,\n    dontCloseOnSave: Boolean,\n    cancelButtonText: String,\n    saveButtonText: String,\n    expandable: Boolean,\n    name: {\n      type: String,\n      default: 'Unnamed',\n    },\n    helpButton: Boolean,\n    noBodyPaddings: Boolean,\n    noEscape: Boolean,\n  },\n\n  data() {\n    return {\n      dialog: false,\n      needSave: false,\n      needReset: false,\n      fullscreen: null,\n      needHelp: false,\n    };\n  },\n\n  watch: {\n    async dialog(val) {\n      this.needReset = val;\n      this.$emit('input', val);\n      if (val) {\n        window.addEventListener('keydown', this.handleEscape);\n      } else {\n        window.removeEventListener('keydown', this.handleEscape);\n      }\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n\n    fullscreen(val) {\n      if (val) {\n        localStorage.setItem(`EditDialog_${this.name}__fullscreen`, '1');\n      } else {\n        localStorage.removeItem(`EditDialog_${this.name}__fullscreen`);\n      }\n    },\n  },\n\n  created() {\n    this.fullscreen = localStorage.getItem(`EditDialog_${this.name}__fullscreen`) === '1';\n  },\n\n  methods: {\n    toggleHelp() {\n      this.needHelp = !this.needHelp;\n    },\n\n    onSave(e) {\n      if (this.dontCloseOnSave) {\n        this.clearFlags();\n        return;\n      }\n\n      this.close(e);\n    },\n\n    toggleFullscreen() {\n      this.fullscreen = !this.fullscreen;\n    },\n\n    close(e) {\n      this.dialog = false;\n\n      this.clearFlags();\n      if (e) {\n        this.$emit('save', e);\n        if (this.eventName) {\n          EventBus.$emit(this.eventName, e);\n        }\n      }\n      this.$emit('close');\n    },\n\n    clearFlags() {\n      this.needSave = false;\n      this.needReset = false;\n    },\n\n    handleEscape(ev) {\n      if (ev.key === 'Escape' && this.dialog !== false && !this.noEscape) {\n        this.close();\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EditRoleForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('name')\"\n      :rules=\"[v => !!v || $t('name_required')]\"\n      outlined\n      dense\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n      v-model=\"item.slug\"\n      :label=\"$t('slug')\"\n      :rules=\"[v => !!v || $t('slug_required'), v => this.validateSlug(v)]\"\n      outlined\n      dense\n      required\n      :disabled=\"formSaving\"\n      :hint=\"$t('slugHint')\"\n    ></v-text-field>\n\n<!--    <v-divider class=\"my-4\"></v-divider>-->\n\n    <v-subheader class=\"pl-0\">{{ $t('permissions') }}</v-subheader>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"permissions.canRunProjectTasks\"\n      :label=\"$t('canRunProjectTasks')\"\n      :disabled=\"formSaving\"\n    ></v-checkbox>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"permissions.canUpdateProject\"\n      :label=\"$t('canUpdateProject')\"\n      :disabled=\"formSaving\"\n    ></v-checkbox>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"permissions.canManageProjectResources\"\n      :label=\"$t('canManageProjectResources')\"\n      :disabled=\"formSaving\"\n    ></v-checkbox>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"permissions.canManageProjectUsers\"\n      :label=\"$t('canManageProjectUsers')\"\n      :disabled=\"formSaving\"\n    ></v-checkbox>\n\n  </v-form>\n</template>\n\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      permissions: {\n        canRunProjectTasks: false,\n        canUpdateProject: false,\n        canManageProjectResources: false,\n        canManageProjectUsers: false,\n      },\n    };\n  },\n\n  watch: {\n    // Watch permissions and update the item.permissions value\n    permissions: {\n      handler(newPermissions) {\n        if (!this.item) return;\n\n        let permissionValue = 0;\n        if (newPermissions.canRunProjectTasks) permissionValue |= 1;\n        if (newPermissions.canUpdateProject) permissionValue |= 2;\n        if (newPermissions.canManageProjectResources) permissionValue |= 4;\n        if (newPermissions.canManageProjectUsers) permissionValue |= 8;\n\n        this.item.permissions = permissionValue;\n      },\n      deep: true,\n    },\n\n    // Watch item.permissions and update checkboxes\n    'item.permissions': {\n      handler(newPermissions) {\n        if (newPermissions === undefined || newPermissions === null) return;\n\n        this.permissions.canRunProjectTasks = !!(newPermissions & 1);\n        this.permissions.canUpdateProject = !!(newPermissions & 2);\n        this.permissions.canManageProjectResources = !!(newPermissions & 4);\n        this.permissions.canManageProjectUsers = !!(newPermissions & 8);\n      },\n      immediate: true,\n    },\n  },\n\n  methods: {\n    validateSlug(value) {\n      if (!value) return true; // Required validation is handled separately\n\n      // Slug should be lowercase, alphanumeric with underscores/hyphens\n      const slugPattern = /^[a-z0-9_-]+$/;\n      if (!slugPattern.test(value)) {\n        return this.$t('invalidSlugFormat');\n      }\n\n      return true;\n    },\n\n    getItemsUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/roles`;\n      }\n      return '/api/roles';\n    },\n\n    getSingleItemUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/roles/${this.itemId}`;\n      }\n      return `/api/roles/${this.itemId}`;\n    },\n\n    getNewItem() {\n      return {\n        name: '',\n        slug: '',\n        permissions: 0,\n      };\n    },\n\n    beforeSave() {\n      // Ensure permissions are properly set before saving\n      if (this.item) {\n        let permissionValue = 0;\n        if (this.permissions.canRunProjectTasks) permissionValue |= 1;\n        if (this.permissions.canUpdateProject) permissionValue |= 2;\n        if (this.permissions.canManageProjectResources) permissionValue |= 4;\n        if (this.permissions.canManageProjectUsers) permissionValue |= 8;\n\n        this.item.permissions = permissionValue;\n      }\n    },\n\n    afterLoadData() {\n      // Initialize permissions checkboxes after loading data\n      if (this.item && this.item.permissions !== undefined) {\n        this.permissions.canRunProjectTasks = !!(this.item.permissions & 1);\n        this.permissions.canUpdateProject = !!(this.item.permissions & 2);\n        this.permissions.canManageProjectResources = !!(this.item.permissions & 4);\n        this.permissions.canManageProjectUsers = !!(this.item.permissions & 8);\n      }\n    },\n\n    afterReset() {\n      // Reset permissions checkboxes\n      this.permissions = {\n        canRunProjectTasks: false,\n        canUpdateProject: false,\n        canManageProjectResources: false,\n        canManageProjectUsers: false,\n      };\n    },\n  },\n};\n</script>\n\n<style scoped>\n.v-subheader {\n  font-weight: 500;\n  font-size: 14px;\n}\n</style>\n"
  },
  {
    "path": "web/src/components/EditTeamMemberDialog.vue",
    "content": "<template>\n  <EditDialog\n    v-model=\"dialog\"\n    :save-button-text=\"(\n      itemId === 'new'\n        ? (invitesEnabled ? 'Invite' : 'Link')\n        : $t('save')\n    )\"\n    :title=\"$t('teamMember', { expr: itemId === 'new' ? $t('nnew') : $t('edit') })\"\n    @save=\"onSave\"\n  >\n    <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n      <TeamMemberForm\n        :project-id=\"projectId\"\n        :item-id=\"itemId\"\n        @save=\"onSave\"\n        @error=\"onError\"\n        :need-save=\"needSave\"\n        :need-reset=\"needReset\"\n        :invites-enabled=\"invitesEnabled\"\n        :invite-type=\"inviteType\"\n        :roles=\"roles\"\n      />\n    </template>\n  </EditDialog>\n\n</template>\n\n<style lang=\"scss\">\n</style>\n\n<script>\nimport EditDialog from './EditDialog.vue';\nimport TeamMemberForm from './TeamMemberForm.vue';\n\nexport default {\n  components: {\n    EditDialog,\n    TeamMemberForm,\n  },\n\n  props: {\n    value: Boolean,\n    projectId: Number,\n    itemId: [String, Number],\n    invitesEnabled: Boolean,\n    inviteType: String,\n    roles: Array,\n  },\n\n  data() {\n    return {\n      dialog: false,\n    };\n  },\n\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n\n  methods: {\n    onSave(e) {\n      this.$emit('save', e);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EditTemplateDialog.vue",
    "content": "<template>\n  <EditDialog\n    noEscape\n    v-if=\"isAppsLoaded\"\n    :max-width=\"dialogWidth\"\n    v-model=\"dialog\"\n    :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n    :icon=\"getAppIcon(itemApp)\"\n    :icon-color=\"getAppColor(itemApp)\"\n    :title=\"\n      (itemId === 'new' ? $t('newTemplate') : $t('editTemplate')) +\n      ' \\'' +\n      getAppTitle(itemApp) +\n      '\\''\n    \"\n    @save=\"onSave\"\n    :content-class=\"`EditTemplateDialog EditTemplateDialog--${id}`\"\n  >\n    <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n      <TemplateForm\n        :project-id=\"projectId\"\n        :item-id=\"itemId\"\n        @save=\"onSave\"\n        @error=\"onError\"\n        :need-save=\"needSave\"\n        :need-reset=\"needReset\"\n        :source-item-id=\"sourceItemId\"\n        :app=\"itemApp\"\n        :premium-features=\"premiumFeatures\"\n        :task-type=\"taskType\"\n      />\n    </template>\n  </EditDialog>\n</template>\n\n<style lang=\"scss\"></style>\n\n<script>\nimport TemplateForm from './TemplateForm.vue';\nimport EditDialog from './EditDialog.vue';\nimport AppsMixin from './AppsMixin';\n\nexport default {\n  components: {\n    TemplateForm,\n    EditDialog,\n  },\n\n  mixins: [AppsMixin],\n\n  props: {\n    value: Boolean,\n    itemApp: String,\n    projectId: Number,\n    itemId: [String, Number],\n    sourceItemId: Number,\n    premiumFeatures: Object,\n    taskType: String,\n  },\n\n  data() {\n    return {\n      id: Math.round(Math.random() * 1000000),\n      dialog: false,\n    };\n  },\n\n  computed: {\n    dialogWidth() {\n      if (['ansible', 'terraform', 'tofu'].includes(this.itemApp)) {\n        return 1200;\n      }\n\n      return 800;\n    },\n  },\n\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n\n  methods: {\n    onSave(e) {\n      this.$emit('save', e);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EditTemplatePermissionDialog.vue",
    "content": "<template>\n  <EditDialog\n    v-model=\"dialog\"\n    :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n    :title=\"$t('templatePermission', { expr: itemId === 'new' ? $t('nnew') : $t('edit') })\"\n    @save=\"onSave\"\n  >\n    <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n      <EditTemplatePermissionForm\n        :project-id=\"projectId\"\n        :template-id=\"templateId\"\n        :item-id=\"itemId\"\n        scope=\"template\"\n        @save=\"onSave\"\n        @error=\"onError\"\n        :need-save=\"needSave\"\n        :need-reset=\"needReset\"\n      />\n    </template>\n  </EditDialog>\n</template>\n\n<script>\nimport EditDialog from './EditDialog.vue';\nimport EditTemplatePermissionForm from './EditTemplatePermissionForm.vue';\n\nexport default {\n  components: {\n    EditDialog,\n    EditTemplatePermissionForm,\n  },\n\n  props: {\n    value: Boolean,\n    projectId: Number,\n    templateId: [String, Number],\n    itemId: [String, Number],\n  },\n\n  data() {\n    return {\n      dialog: false,\n    };\n  },\n\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n\n  methods: {\n    onSave(e) {\n      this.$emit('save', e);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EditTemplatePermissionForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-select\n      v-model=\"item.role_slug\"\n      :items=\"availableRoles\"\n      item-value=\"slug\"\n      item-text=\"name\"\n      :label=\"$t('role')\"\n      :rules=\"[v => !!v || $t('role_required')]\"\n      required\n      outlined\n      dense\n      :disabled=\"formSaving\"\n    >\n      <template v-slot:item=\"{ item: role }\">\n        <v-list-item-content>\n          <v-list-item-title>{{ role.name }}</v-list-item-title>\n          <v-list-item-subtitle>{{ role.slug }}</v-list-item-subtitle>\n        </v-list-item-content>\n      </template>\n    </v-select>\n\n    <v-subheader class=\"pl-0\">{{ $t('permissions') }}</v-subheader>\n\n    <v-checkbox\n      v-for=\"p in ROLE_PERMISSIONS[scope]\"\n      :key=\"p.permission\"\n      class=\"mt-0\"\n      v-model=\"permissions[p.permission]\"\n      :label=\"$t(p.label)\"\n      :disabled=\"formSaving\"\n    ></v-checkbox>\n\n  </v-form>\n</template>\n\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\nimport { ROLE_PERMISSIONS } from '@/lib/constants';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  props: {\n    templateId: [Number, String],\n    scope: {\n      type: String,\n      default: 'default',\n    },\n  },\n\n  data() {\n    return {\n      ROLE_PERMISSIONS,\n      availableRoles: [],\n      permissions: {},\n    };\n  },\n\n  async created() {\n    await this.loadRoles();\n    await this.loadData();\n  },\n\n  watch: {\n    // Watch permissions and update the item.permissions value\n    permissions: {\n      handler(newPermissions) {\n        if (!this.item) return;\n\n        this.item.permissions = Object.keys(newPermissions)\n          .filter((k) => newPermissions[k])\n          .reduce((res, k) => res | k, 0);\n      },\n      deep: true,\n    },\n\n    // Watch item.permissions and update checkboxes\n    'item.permissions': {\n      handler(newPermissions) {\n        if (newPermissions === undefined || newPermissions === null) return;\n\n        this.permissions = [1, 2, 4, 8].reduce((res, k) => ({\n          ...res,\n          [k]: !!(this.item.permissions & k),\n        }), {});\n      },\n      immediate: true,\n    },\n  },\n\n  methods: {\n    async loadRoles() {\n      try {\n        const response = await axios.get(`/api/project/${this.projectId}/roles/all`);\n        this.availableRoles = response.data;\n      } catch (error) {\n        this.formError = getErrorMessage(error);\n      }\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/templates/${this.templateId}/perms`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/templates/${this.templateId}/perms/${this.itemId}`;\n    },\n\n    getNewItem() {\n      return {\n        role_slug: null,\n        template_id: parseInt(this.templateId, 10),\n        project_id: this.projectId,\n        permissions: 0,\n      };\n    },\n\n    beforeSave() {\n      // Ensure permissions are properly set before saving\n      if (this.item) {\n        this.item.permissions = Object.keys(this.permissions)\n          .filter((k) => this.permissions[k])\n          .reduce((res, k) => res | k, 0);\n\n        this.item.template_id = parseInt(this.templateId, 10);\n        this.item.project_id = this.projectId;\n      }\n    },\n\n    afterLoadData() {\n      // Initialize permissions checkboxes after loading data\n      if (this.item && this.item.permissions !== undefined) {\n        this.permissions = [1, 2, 4, 8].reduce((res, k) => ({\n          ...res,\n          [k]: !!(this.item.permissions & k),\n        }), {});\n      }\n    },\n\n    afterReset() {\n      // Reset permissions checkboxes\n      this.permissions = {};\n    },\n  },\n};\n</script>\n\n<style scoped>\n.v-subheader {\n  font-weight: 500;\n  font-size: 14px;\n}\n</style>\n"
  },
  {
    "path": "web/src/components/EditViewsForm.vue",
    "content": "<template>\n  <div v-if=\"views != null\">\n    <draggable\n        v-if=\"views.length > 0\"\n        :list=\"views\"\n        handle=\".handle6785\"\n        class=\"mb-5\"\n        @end=\"onDragEnd\"\n    >\n      <div v-for=\"(view) in views\" :key=\"view.id\" class=\"mb-2\">\n        <div class=\"d-flex\">\n\n          <v-icon class=\"handle6785\" style=\"cursor: move;\">mdi-menu</v-icon>\n\n          <v-text-field\n            class=\"ml-2 mr-1\"\n            hide-details\n            dense\n            solo\n            :flat=\"!view.active\"\n            v-model=\"view.title\"\n            @focus=\"editView(view.id)\"\n            :disabled=\"view.disabled\"\n          />\n\n          <v-btn\n            class=\"mt-1\"\n            small\n            icon\n            @click=\"saveView(view.id)\"\n            v-if=\"view.active\"\n            :disabled=\"view.disabled\"\n          >\n            <v-icon small color=\"green\">mdi-check</v-icon>\n          </v-btn>\n          <v-btn\n            class=\"mt-1\"\n            small\n            icon\n            @click=\"resetView(view.id)\"\n            v-if=\"view.active && view.id > 0\"\n            :disabled=\"view.disabled\"\n          >\n            <v-icon small color=\"red\">mdi-close</v-icon>\n          </v-btn>\n\n          <v-btn\n            class=\"ml-4\"\n            icon\n            @click=\"activeViewId = (activeViewId === view.id ? null : view.id)\"\n          >\n            <v-icon>mdi-cog</v-icon>\n          </v-btn>\n\n          <v-btn class=\"ml-1\" icon @click=\"removeView(view.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n        </div>\n\n        <v-card\n          v-if=\"view.id === activeViewId\"\n          style=\"background: var(--highlighted-card-bg-color);\"\n          class=\"mb-6 pt-3 mt-5\"\n        >\n\n          <div style=\"\n            position: absolute;\n            background: var(--highlighted-card-bg-color);\n            width: 28px;\n            height: 28px;\n            transform: rotate(45deg);\n            right: 45px;\n            top: -14px;\n            border-radius: 0;\n          \"></div>\n\n          <v-card-text>\n            <v-select\n              :items=\"viewTypes\"\n              item-value=\"slug\"\n              item-text=\"title\"\n              v-model=\"view.type\"\n              label=\"Type\"\n              outlined\n              dense\n              @change=\"saveView(view.id)\"\n            />\n\n            <div\n              class=\"d-flex\"\n              style=\"align-items: center; column-gap: 12px;\"\n            >\n\n              <v-select\n                :items=\"sortableColumns\"\n                item-value=\"name\"\n                item-text=\"title\"\n                v-model=\"view.sort_column\"\n                label=\"Sort by\"\n                outlined\n                dense\n                hide-details\n                @change=\"saveView(view.id)\"\n              />\n\n              <v-checkbox\n                hide-details\n                label=\"Reverse\"\n                v-model=\"view.sort_reverse\"\n                class=\"mt-0 pt-0\"\n                @change=\"saveView(view.id)\"\n              />\n\n            </div>\n\n            <v-checkbox\n              hide-details\n              label=\"Hidden\"\n              v-model=\"view.hidden\"\n              @change=\"saveView(view.id)\"\n            />\n          </v-card-text>\n\n        </v-card>\n\n      </div>\n\n    </draggable>\n    <v-alert\n        v-else\n        type=\"info\"\n    >{{ $t('noViews') }}</v-alert>\n    <v-btn @click=\"addView()\" color=\"primary\">{{ $t('addView') }}</v-btn>\n  </div>\n</template>\n\n<script>\nimport draggable from 'vuedraggable';\nimport axios from 'axios';\n// import ArgsPicker from '@/components/ArgsPicker.vue';\n\nexport default {\n  props: {\n    projectId: Number,\n  },\n\n  components: {\n    // ArgsPicker,\n    draggable,\n  },\n\n  async created() {\n    this.views = (await axios({\n      method: 'get',\n      url: `/api/project/${this.projectId}/views`,\n      responseType: 'json',\n    })).data.map((view) => ({\n      ...view,\n      active: false,\n      disabled: false,\n      type: view.type ? view.type : '',\n    }));\n    this.views.sort((v1, v2) => v1.position - v2.position);\n  },\n\n  data() {\n    return {\n      views: null,\n      activeViewId: null,\n      viewTypes: [{\n        slug: '',\n        title: 'Custom',\n      }, {\n        slug: 'all',\n        title: 'All',\n      }],\n      sortableColumns: [{\n        name: 'name',\n        title: 'Name',\n      }],\n    };\n  },\n  methods: {\n    async onDragEnd() {\n      const viewPositions = this.views.reduce((ret, view, index) => {\n        if (view.id < 0 || view.position === index) {\n          return ret;\n        }\n        return {\n          ...ret,\n          [view.id]: index,\n        };\n      }, {});\n\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/views/positions`,\n        responseType: 'json',\n        data: viewPositions,\n      });\n\n      Object.keys(viewPositions).map((id) => parseInt(id, 10)).forEach((id) => {\n        const view = this.views.find((v) => v.id === id);\n        view.position = viewPositions[id];\n      });\n    },\n\n    async saveView(viewId) {\n      const i = this.views.findIndex((v) => v.id === viewId);\n      if (i === -1) {\n        return;\n      }\n\n      const view = this.views[i];\n\n      if (!view.title) {\n        return;\n      }\n\n      view.disabled = true;\n      try {\n        if (view.id < 0) {\n          const newView = (await axios({\n            method: 'post',\n            url: `/api/project/${this.projectId}/views`,\n            responseType: 'json',\n            data: {\n              project_id: this.projectId,\n              title: view.title,\n              position: i,\n              type: view.type,\n              sort_column: view.sort_column,\n              sort_reverse: view.sort_reverse,\n              hidden: view.hidden,\n            },\n          })).data;\n          view.id = newView.id;\n        } else {\n          await axios({\n            method: 'put',\n            url: `/api/project/${this.projectId}/views/${view.id}`,\n            responseType: 'json',\n            data: {\n              id: view.id,\n              project_id: this.projectId,\n              title: view.title,\n              position: i,\n              type: view.type,\n              sort_column: view.sort_column,\n              sort_reverse: view.sort_reverse,\n              hidden: view.hidden,\n            },\n          });\n        }\n      } finally {\n        view.disabled = false;\n      }\n      view.active = false;\n    },\n\n    async resetView(viewId) {\n      const view = this.views.find((v) => v.id === viewId);\n      if (view == null) {\n        return;\n      }\n\n      view.disabled = true;\n      try {\n        const oldView = (await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/views/${view.id}`,\n          responseType: 'json',\n        })).data;\n        view.title = oldView.title;\n      } finally {\n        view.disabled = false;\n      }\n\n      view.active = false;\n    },\n\n    editView(viewId) {\n      const view = this.views.find((v) => v.id === viewId);\n      if (view == null) {\n        return;\n      }\n      view.active = true;\n    },\n\n    async removeView(viewId) {\n      const i = this.views.findIndex((v) => v.id === viewId);\n      if (i === -1) {\n        return;\n      }\n\n      const view = this.views[i];\n\n      if (view.id >= 0) {\n        view.disabled = true;\n        try {\n          await axios({\n            method: 'delete',\n            url: `/api/project/${this.projectId}/views/${view.id}`,\n            responseType: 'json',\n          });\n        } finally {\n          view.disabled = false;\n        }\n      }\n\n      this.views.splice(i, 1);\n    },\n    addView() {\n      this.views.push({\n        id: -Math.round(Math.random() * 10000000),\n        title: '',\n        type: '',\n        active: true,\n        disabled: false,\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/EnvironmentForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null && (!supportStorages || secretStorages != null)\"\n    class=\"pb-3\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      data-testid=\"varGroup-error\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('environmentName')\"\n      :rules=\"[v => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-row v-if=\"supportStorages && isNew\">\n      <v-col>\n        <v-autocomplete\n          v-model=\"item.secret_storage_id\"\n          :label=\"$t('Secret storage (optional)')\"\n          :items=\"secretStorages\"\n          :disabled=\"formSaving || !isNew\"\n          item-value=\"id\"\n          item-text=\"name\"\n          outlined\n          dense\n          clearable\n        />\n      </v-col>\n      <v-col>\n        <v-text-field\n          v-model=\"item.secret_storage_key_prefix\"\n          :label=\"$t('Secret key prefix')\"\n          :disabled=\"formSaving || !item.secret_storage_id|| !isNew\"\n          outlined\n          dense\n        />\n      </v-col>\n    </v-row>\n\n    <v-tabs grow v-model=\"tab\">\n      <v-tab key=\"variables\">Variables</v-tab>\n      <v-tab key=\"secrets\">Secrets</v-tab>\n    </v-tabs>\n\n    <v-divider style=\"margin-top: -1px;\" class=\"mb-7\"/>\n\n    <v-tabs-items v-model=\"tab\">\n      <v-tab-item key=\"variables\">\n\n        <v-subheader class=\"px-0\">\n          {{ $t('extraVariables') }}\n\n          <v-tooltip v-if=\"needHelp\" bottom color=\"black\" open-delay=\"300\" max-width=\"400\">\n            <template v-slot:activator=\"{ on, attrs }\">\n              <v-icon\n                class=\"ml-1\"\n                v-bind=\"attrs\"\n                v-on=\"on\"\n              >mdi-help-box\n              </v-icon>\n            </template>\n            <div>\n              <div><code>--extra-vars</code> for Ansible</div>\n              <div><code>-var</code> for Terraform/OpenTofu</div>\n            </div>\n          </v-tooltip>\n\n          <v-spacer/>\n\n          <v-btn-toggle\n            v-model=\"extraVarsEditMode\"\n            tile\n            group\n          >\n            <v-btn value=\"table\" small class=\"mr-0\" style=\"border-radius: 4px;\">\n              Table\n            </v-btn>\n            <v-btn value=\"json\" small class=\"mr-0\" style=\"border-radius: 4px;\">\n              JSON\n            </v-btn>\n          </v-btn-toggle>\n\n          <v-btn icon @click=\"addExtraVar()\" data-testid=\"varGroup-addVar\">\n            <v-icon>\n              mdi-plus\n            </v-icon>\n          </v-btn>\n\n        </v-subheader>\n\n        <div v-if=\"extraVarsEditMode === 'json'\" style=\"position: relative;\">\n          <codemirror\n            :class=\"{\n              'EnvironmentEditor': true,\n            }\"\n            :style=\"{ border: '1px solid lightgray' }\"\n            v-model=\"json\"\n            :options=\"cmOptions\"\n            :placeholder=\"$t('enterExtraVariablesJson')\"\n          />\n\n          <RichEditor\n            v-model=\"json\"\n            type=\"json\"\n            v-if=\"extraVarsEditMode === 'json'\"\n            style=\"\n              position: absolute;\n              right: 0;\n              top: 0;\n              margin: 10px;\n            \"\n          />\n        </div>\n        <div v-else-if=\"extraVarsEditMode === 'table'\">\n          <v-data-table\n            v-if=\"extraVars != null\"\n            :items=\"extraVars\"\n            :items-per-page=\"-1\"\n            class=\"elevation-1 FieldTable\"\n            hide-default-footer\n            :no-data-text=\"$t('noValues')\"\n            style=\"background: #8585850f\"\n          >\n            <template v-slot:item=\"props\">\n              <tr>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.name\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('name')\"\n                  ></v-text-field>\n                </td>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.value\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('Value')\"\n                  ></v-text-field>\n                </td>\n                <td style=\"width: 38px;\">\n                  <v-icon\n                    small\n                    class=\"pa-1\"\n                    @click=\"removeExtraVar(props.item)\"\n                  >\n                    mdi-delete\n                  </v-icon>\n                </td>\n              </tr>\n            </template>\n          </v-data-table>\n\n          <v-alert color=\"warning\" v-else>\n            Oops! This JSON structure is a little too complex to display as a table.\n          </v-alert>\n        </div>\n\n        <div>\n          <v-subheader class=\"px-0 mt-4\">\n            {{ $t('environmentVariables') }}\n\n            <v-spacer/>\n\n            <v-btn icon @click=\"addEnvVar()\" data-testid=\"varGroup-addEnv\">\n              <v-icon>\n                mdi-plus\n              </v-icon>\n            </v-btn>\n          </v-subheader>\n          <v-data-table\n            :items=\"env\"\n            :items-per-page=\"-1\"\n            class=\"elevation-1 FieldTable\"\n            hide-default-footer\n            :no-data-text=\"$t('noValues')\"\n            style=\"background: #8585850f\"\n          >\n            <template v-slot:item=\"props\">\n              <tr>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.name\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('name')\"\n                  ></v-text-field>\n                </td>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.value\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('Value')\"\n                  ></v-text-field>\n                </td>\n                <td style=\"width: 38px;\">\n                  <v-icon\n                    small\n                    class=\"pa-1\"\n                    @click=\"removeEnvVar(props.item)\"\n                  >\n                    mdi-delete\n                  </v-icon>\n                </td>\n              </tr>\n            </template>\n          </v-data-table>\n        </div>\n      </v-tab-item>\n\n      <v-tab-item key=\"secrets\">\n\n        <div v-if=\"!isNew && secretStorage\" class=\"pb-3\">\n          <div style=\"font-weight: bold; font-size: 20px;\">\n            <v-icon small class=\"mr-1\">$vuetify.icons.hashicorp_vault</v-icon>\n            {{ secretStorage.name }}\n          </div>\n          <pre>{{ item.secret_storage_key_prefix }}*</pre>\n        </div>\n\n        <div>\n          <v-subheader class=\"px-0\">\n            {{ $t('extraVariables') }}\n\n            <v-tooltip v-if=\"needHelp\" bottom color=\"black\" open-delay=\"300\" max-width=\"400\">\n              <template v-slot:activator=\"{ on, attrs }\">\n                <v-icon\n                  class=\"ml-1\"\n                  v-bind=\"attrs\"\n                  v-on=\"on\"\n                >mdi-help-box\n                </v-icon>\n              </template>\n              <div>\n                <div><code>--extra-vars</code> for Ansible</div>\n                <div><code>-var</code> for Terraform/OpenTofu</div>\n              </div>\n            </v-tooltip>\n\n            <v-spacer/>\n            <v-btn icon @click=\"addSecret('var')\" data-testid=\"varGroup-addSecretVar\">\n              <v-icon>\n                mdi-plus\n              </v-icon>\n            </v-btn>\n          </v-subheader>\n\n          <v-data-table\n            :items=\"secrets.filter(s => !s.remove && s.type === 'var')\"\n            :items-per-page=\"-1\"\n            class=\"elevation-1 FieldTable\"\n            hide-default-footer\n            :no-data-text=\"$t('noValues')\"\n            style=\"background: #8585850f\"\n          >\n            <template v-slot:item=\"props\">\n              <tr>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.name\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('name')\"\n                  ></v-text-field>\n                </td>\n\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.value\"\n                    placeholder=\"*******\"\n                    class=\"v-text-field--solo--no-min-height\"\n                  ></v-text-field>\n                </td>\n\n                <td style=\"width: 38px;\">\n                  <v-icon\n                    small\n                    class=\"pa-1\"\n                    @click=\"removeSecret(props.item)\"\n                  >\n                    mdi-delete\n                  </v-icon>\n                </td>\n              </tr>\n            </template>\n          </v-data-table>\n        </div>\n\n        <div>\n          <v-subheader class=\"px-0 mt-4\">\n            {{ $t('environmentVariables') }}\n\n            <v-spacer/>\n\n            <v-btn icon @click=\"addSecret('env')\" data-testid=\"varGroup-addSecretEnv\">\n              <v-icon>\n                mdi-plus\n              </v-icon>\n            </v-btn>\n          </v-subheader>\n\n          <v-data-table\n            :items=\"secrets.filter(s => !s.remove && s.type === 'env')\"\n            :items-per-page=\"-1\"\n            class=\"elevation-1 FieldTable\"\n            hide-default-footer\n            :no-data-text=\"$t('noValues')\"\n            style=\"background: #8585850f\"\n          >\n            <template v-slot:item=\"props\">\n              <tr>\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.name\"\n                    class=\"v-text-field--solo--no-min-height\"\n                    :placeholder=\"$t('name')\"\n                  ></v-text-field>\n                </td>\n\n                <td class=\"pa-1\">\n                  <v-text-field\n                    solo-inverted\n                    flat\n                    hide-details\n                    v-model=\"props.item.value\"\n                    placeholder=\"*******\"\n                    class=\"v-text-field--solo--no-min-height\"\n                  ></v-text-field>\n                </td>\n\n                <td style=\"width: 38px;\">\n                  <v-icon\n                    small\n                    class=\"pa-1\"\n                    @click=\"removeSecret(props.item)\"\n                  >\n                    mdi-delete\n                  </v-icon>\n                </td>\n              </tr>\n            </template>\n          </v-data-table>\n        </div>\n\n      </v-tab-item>\n    </v-tabs-items>\n\n  </v-form>\n</template>\n<style lang=\"scss\">\n.EnvironmentEditor {\n  .CodeMirror {\n    height: 160px !important;\n  }\n}\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport ItemFormBase from '@/components/ItemFormBase';\n\nimport { codemirror } from 'vue-codemirror';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/vue/vue.js';\nimport 'codemirror/addon/display/placeholder.js';\nimport { getErrorMessage } from '@/lib/error';\nimport RichEditor from '@/components/RichEditor.vue';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  props: {\n    needHelp: Boolean,\n    supportStorages: Boolean,\n  },\n\n  components: {\n    RichEditor,\n    codemirror,\n  },\n\n  computed: {\n    secretStorage() {\n      if (this.item && this.item.secret_storage_id && this.secretStorages) {\n        return this.secretStorages.find((s) => s.id === this.item.secret_storage_id);\n      }\n      return null;\n    },\n  },\n\n  watch: {\n    extraVarsEditMode(val) {\n      let extraVars;\n\n      switch (val) {\n        case 'json':\n          if (this.extraVars == null) {\n            return;\n          }\n\n          this.json = JSON.stringify(this.extraVars.reduce((prev, curr) => ({\n            ...prev,\n            [curr.name]: curr.value,\n          }), {}), null, 2);\n          break;\n        case 'table':\n          try {\n            extraVars = JSON.parse(this.json);\n            this.formError = null;\n          } catch (err) {\n            this.formError = getErrorMessage(err);\n            this.extraVars = null;\n            return;\n          }\n          if (Object.keys(extraVars).some((x) => typeof extraVars[x] === 'object')) {\n            this.extraVars = null;\n          } else {\n            this.extraVars = Object.keys(extraVars)\n              .map((x) => ({\n                name: x,\n                value: extraVars[x],\n              }));\n          }\n          break;\n        default:\n          throw new Error(`Invalid extra variables edit mode: ${val}`);\n      }\n    },\n  },\n\n  data() {\n    return {\n      // PREDEFINED_ENV_VARS,\n      images: [\n        'dind-runner:v2.0.0',\n        'dind-runner:v2.0.2',\n        'dind-runner:v2.0.3',\n        'dind-runner:v2.0.4',\n        'dind-runner:v2.0.5',\n        'dind-runner:v2.0.6',\n        'dind-runner:v2.0.7',\n        'dind-runner:v2.0.8',\n        'dind-runner:v2.0.9',\n        'dind-runner:v2.0.10',\n        'nodejs-runner:v2.0.0',\n        'nodejs-runner:v2.0.3',\n        'nodejs-runner:v2.0.4',\n        'nodejs-runner:v2.0.5',\n        'nodejs-runner:v2.0.6',\n        'nodejs-runner:v2.0.7',\n        'nodejs-runner:v2.0.8',\n        'nodejs-runner:v2.0.9',\n        'nodejs-runner:v2.0.10',\n      ],\n\n      json: '{}',\n      extraVars: [],\n      env: [],\n      secrets: [],\n\n      tab: 'variables',\n\n      cmOptions: {\n        tabSize: 2,\n        mode: 'application/json',\n        lineNumbers: true,\n        line: true,\n        lint: true,\n        indentWithTabs: false,\n      },\n\n      extraVarsEditMode: 'json',\n\n      secretStorages: null,\n    };\n  },\n\n  methods: {\n    addExtraVar(name = '', value = '') {\n      this.extraVars.push({ name, value });\n    },\n\n    removeExtraVar(val) {\n      const i = this.extraVars.findIndex((v) => v.name === val.name);\n      if (i > -1) {\n        this.extraVars.splice(i, 1);\n      }\n    },\n\n    addEnvVar(name = '', value = '') {\n      this.env.push({ name, value });\n    },\n\n    removeEnvVar(val) {\n      const i = this.env.findIndex((v) => v.name === val.name);\n      if (i > -1) {\n        this.env.splice(i, 1);\n      }\n    },\n\n    addSecret(type) {\n      this.secrets.push({\n        type, name: '', value: '', new: true,\n      });\n    },\n\n    removeSecret(val) {\n      const i = this.secrets.findIndex((v) => v.name === val.name);\n      if (i > -1) {\n        const s = this.secrets[i];\n        this.secrets.splice(i, 1);\n\n        if (!s.new) {\n          this.secrets.push({\n            ...s,\n            remove: true,\n          });\n        }\n      }\n    },\n\n    beforeSave() {\n      switch (this.extraVarsEditMode) {\n        case 'json':\n          this.item.json = this.json;\n          break;\n        case 'table':\n          if (this.extraVars == null) {\n            this.item.json = this.json;\n          } else {\n            this.item.json = JSON.stringify(this.extraVars.reduce((prev, curr) => ({\n              ...prev,\n              [curr.name]: curr.value,\n            }), {}));\n          }\n          break;\n        default:\n          throw new Error(`Invalid extra variables edit mode: ${this.extraVarsEditMode}`);\n      }\n\n      const env = (this.env || []).reduce((prev, curr) => ({\n        ...prev,\n        [curr.name]: curr.value,\n      }), {});\n\n      const secrets = (this.secrets || []).map((s) => {\n        let operation;\n        if (s.new) {\n          operation = 'create';\n        } else if (s.remove) {\n          operation = 'delete';\n        } else {\n          operation = 'update';\n        }\n        return {\n          id: s.id,\n          name: s.name,\n          secret: s.value,\n          type: s.type,\n          operation,\n        };\n      }).filter((s) => s.operation != null);\n\n      this.item.env = JSON.stringify(env);\n      this.item.secrets = secrets;\n    },\n\n    async afterLoadData() {\n      if (this.itemId === 'new') {\n        [\n          this.secretStorages,\n        ] = await Promise.all([\n          this.loadProjectResources('secret_storages'),\n        ]);\n      } else {\n        this.secretStorages = [];\n\n        if (this.item.secret_storage_id) {\n          this.secretStorages.push(\n            await this.loadProjectResource('secret_storages', this.item.secret_storage_id),\n          );\n        }\n      }\n\n      this.json = JSON.stringify(JSON.parse(this.item?.json || '{}'), null, 2);\n\n      const json = JSON.parse(this.item?.json || '{}');\n\n      const env = JSON.parse(this.item?.env || '{}');\n\n      const secrets = this.item?.secrets || [];\n\n      if (Object.keys(json).some((x) => typeof json[x] === 'object')) {\n        this.extraVars = null;\n        this.extraVarsEditMode = 'json';\n      } else {\n        this.extraVars = Object.keys(json)\n          .map((x) => ({\n            name: x,\n            value: json[x],\n          }));\n        this.extraVarsEditMode = 'table';\n      }\n\n      this.env = Object.keys(env)\n        // .filter((x) => {\n        //   const index = PREDEFINED_ENV_VARS.findIndex((v) => v.name === x);\n        //   return index === -1 || PREDEFINED_ENV_VARS[index].value !== env[x];\n        // })\n        .map((x) => ({\n          name: x,\n          value: env[x],\n        }));\n\n      this.secrets = secrets.map((x) => ({\n        id: x.id,\n        name: x.name,\n        value: '',\n        type: x.type,\n      }));\n\n      // Object.keys(env).forEach((x) => {\n      //   const index = PREDEFINED_ENV_VARS.findIndex((v) => v.name === x);\n      //   if (index !== -1 && PREDEFINED_ENV_VARS[index].value === env[x]) {\n      //     this.predefinedEnvVars.push(index);\n      //   }\n      // });\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/environment`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/environment/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/HashicorpVaultIcon.vue",
    "content": "<template>\n  <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"><path fill=\"#FFD814\" d=\"M0 0l7.971 15.516L16 0H0zm6.732 6.16h-1.27V4.89h1.27v1.27zm0-1.906h-1.27V2.985h1.27v1.269zm1.904 3.81h-1.27v-1.27h1.27v1.27zm0-1.905h-1.27V4.89h1.27v1.27zm0-1.905h-1.27V2.985h1.27v1.269zm1.894 1.905H9.26V4.89h1.27v1.27zM9.26 4.254V2.985h1.27v1.269H9.26z\"/></svg>\n</template>\n\n<script>\nexport default {\n  name: 'HashicorpVaultIcon',\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IndeterminateProgressCircular.vue",
    "content": "<template>\n  <v-progress-circular\n    color=\"white\"\n    class=\"indeterminate-progress-circular mr-2\"\n    size=\"20\"\n    width=\"10\"\n    :rotate=\"rotate\"\n    :value=\"value\"\n  >\n  </v-progress-circular>\n</template>\n<style lang=\"scss\">\n  .indeterminate-progress-circular {\n    .v-progress-circular__overlay {\n      transition: 0s !important;\n    }\n  }\n</style>\n<script>\nimport Listenable from '@/lib/Listenable';\n\nclass IndeterminateTimer extends Listenable {\n  constructor() {\n    super();\n    this.direction = 1;\n    this.value = 0;\n    this.rotate = 0;\n  }\n\n  start() {\n    const STEP = 1;\n    const self = this;\n\n    self.valueTimer = setInterval(() => {\n      if (self.direction === 1 && self.value >= 100) {\n        self.direction = -1;\n      } else if (self.direction === -1 && self.value <= 0) {\n        self.direction = 1;\n      }\n      if (self.direction === 1) {\n        self.rotate += STEP;\n        self.value += STEP;\n      } else {\n        self.rotate += STEP * 5;\n        self.value += -STEP;\n      }\n\n      if (self.rotate > 360) {\n        self.rotate %= 360;\n      }\n\n      self.callListeners({\n        value: self.value,\n        rotate: self.rotate,\n      });\n    }, 50);\n  }\n\n  stop() {\n    clearInterval(this.valueTimer);\n  }\n\n  addListener(callback) {\n    if (!this.hasListeners()) {\n      this.start();\n    }\n    return super.addListener(callback);\n  }\n\n  removeListener(id) {\n    super.removeListener(id);\n    if (!this.hasListeners()) {\n      this.stop();\n    }\n  }\n}\n\nconst indeterminateTimer = new IndeterminateTimer();\n\nexport default {\n  data() {\n    return {\n      value: null,\n      rotate: null,\n      listenerId: null,\n    };\n  },\n\n  mounted() {\n    this.value = indeterminateTimer.value;\n    this.rotate = indeterminateTimer.rotate;\n    this.listenerId = indeterminateTimer.addListener(({ value, rotate }) => {\n      this.value = value;\n      this.rotate = rotate;\n    });\n  },\n\n  beforeDestroy() {\n    indeterminateTimer.removeListener(this.listenerId);\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IntegrationExtractValueForm.vue",
    "content": "<template>\n  <v-form ref=\"form\" lazy-validation v-model=\"formValid\" v-if=\"item\">\n    <v-alert :value=\"formError\" color=\"error\" class=\"pb-2\">{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      label=\"Name\"\n      :rules=\"[(v) => !!v || 'Name is required']\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n    <v-row>\n      <v-col cols=\"12\" md=\"12\" class=\"pb-0\">\n        <div class=\"ml-4 mr-4 mt-6\">\n          <v-select\n            v-model=\"item.value_source\"\n            label=\"Source of the Value\"\n            :items=\"valueSources\"\n            item-value=\"id\"\n            item-text=\"text\"\n            :rules=\"[(v) => !!v || 'Value Source is required']\"\n            outlined\n            dense\n            required\n            :disabled=\"formSaving\"\n          >\n          </v-select>\n          <v-select\n            v-model=\"item.body_data_type\"\n            label=\"Data Type of Body\"\n            v-if=\"item.value_source == 'body'\"\n            :items=\"bodyDataTypes\"\n            item-value=\"id\"\n            item-text=\"text\"\n            :rules=\"[(v) => !!v || 'Body Data Type is required']\"\n            outlined\n            dense\n            required\n            :disabled=\"formSaving\"\n          >\n          </v-select>\n          <v-text-field\n            v-model=\"item.key\"\n            label=\"Key *\"\n            :rules=\"[(v) => !!v || 'Key is required']\"\n            outlined\n            dense\n            required\n            :disabled=\"formSaving\"\n          >\n          </v-text-field>\n          <v-select\n            v-model=\"item.variable_type\"\n            label=\"Variable Usage *\"\n            :items=\"variableTypes\"\n            item-value=\"id\"\n            item-text=\"text\"\n            :rules=\"[(v) => !!v || 'Variable Type is required']\"\n            outlined\n            dense\n            required\n            :disabled=\"formSaving\"\n          >\n          </v-select>\n          <v-text-field\n            v-model=\"item.variable\"\n            label=\"Variable *\"\n            :rules=\"[(v) => !!v || 'Variable is required']\"\n            outlined\n            dense\n            required\n            :disabled=\"formSaving\"\n          ></v-text-field>\n        </div>\n      </v-col>\n    </v-row>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport IntegrationExtractorChildValueFormBase from './IntegrationExtractorChildValueFormBase';\nimport { EXTRACT_VALUE_TYPE_ICONS, EXTRACT_VALUE_TYPE_TITLES } from '../lib/constants';\n\nexport default {\n  mixins: [ItemFormBase, IntegrationExtractorChildValueFormBase],\n  props: {\n    integrationId: Number,\n  },\n  data() {\n    return {\n      EXTRACT_VALUE_TYPE_ICONS,\n      EXTRACT_VALUE_TYPE_TITLES,\n      valueSources: [\n        {\n          id: 'body',\n          text: 'Body',\n        },\n        {\n          id: 'header',\n          text: 'Header',\n        },\n      ],\n      bodyDataTypes: [\n        {\n          id: 'json',\n          text: 'JSON',\n        },\n        {\n          id: 'string',\n          text: 'String',\n        },\n      ],\n      variableTypes: [\n        {\n          id: 'environment',\n          text: 'Variables',\n        },\n        {\n          id: 'task',\n          text: 'Task Params',\n        },\n      ],\n    };\n  },\n  computed: {\n    // integrationId() {\n    //   if (/^-?\\d+$/.test(this.$route.params.integrationId)) {\n    //     return parseInt(this.$route.params.integrationId, 10);\n    //   }\n    //   return this.$route.params.integrationId;\n    // },\n  },\n  methods: {\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/values`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/values/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IntegrationExtractorChildValueFormBase.js",
    "content": "import axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\n\nexport default {\n  props: {\n    // integrationId: [Number, String],\n  },\n  methods: {\n    /**\n     * Saves or creates item via API.\n     * @returns {Promise<null>} null if validation didn't pass or user data if user saved.\n     */\n    async save() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        this.$emit('error', {});\n        return null;\n      }\n\n      this.formSaving = true;\n      let item;\n\n      try {\n        await this.beforeSave();\n\n        item = (await axios({\n          method: this.isNew ? 'post' : 'put',\n          url: this.isNew\n            ? this.getItemsUrl()\n            : this.getSingleItemUrl(),\n          responseType: 'json',\n          data: {\n            ...this.item,\n            integration_id: this.integrationId,\n          },\n          ...(this.getRequestOptions()),\n        })).data;\n\n        await this.afterSave(item);\n\n        this.$emit('save', {\n          item: item || this.item,\n          action: this.isNew ? 'new' : 'edit',\n        });\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      } finally {\n        this.formSaving = false;\n      }\n\n      return item || this.item;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/IntegrationExtractorForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      label=\"Name\"\n      :rules=\"[v => !!v || 'Name is required']\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport IntegrationExtractorFormBase from '@/components/IntegrationExtractorFormBase';\n\nexport default {\n  mixins: [ItemFormBase, IntegrationExtractorFormBase],\n  data() {\n    return {\n      projectId: this.$route.params.projectId,\n      integrationId: this.$route.params.integrationId,\n    };\n  },\n  methods: {\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IntegrationExtractorFormBase.js",
    "content": "import axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\n\nexport default {\n  props: {\n    integrationId: [Number, String],\n  },\n  methods: {\n    /**\n     * Saves or creates item via API.\n     * @returns {Promise<null>} null if validation didn't pass or user data if user saved.\n     */\n    async save() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        this.$emit('error', {});\n        return null;\n      }\n\n      this.formSaving = true;\n      let item;\n\n      try {\n        await this.beforeSave();\n\n        item = (await axios({\n          method: this.isNew ? 'post' : 'put',\n          url: this.isNew\n            ? this.getItemsUrl()\n            : this.getSingleItemUrl(),\n          responseType: 'json',\n          data: {\n            ...this.item,\n            project_id: this.$route.params.projectId,\n            integration_id: this.integrationId,\n          },\n          ...(this.getRequestOptions()),\n        })).data;\n\n        await this.afterSave(item);\n\n        this.$emit('save', {\n          item: item || this.item,\n          action: this.isNew ? 'new' : 'edit',\n        });\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      } finally {\n        this.formSaving = false;\n      }\n\n      return item || this.item;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/IntegrationExtractorRefsView.vue",
    "content": "<template>\n  <div class=\"object-refs-view integration-extractor-refs-view\">\n    <v-alert\n      type=\"warning\"\n    >\n      The {{ objectTitle }} can't be deleted because it used by the resources below\n    </v-alert>\n    <div\n      v-for=\"s in sections\"\n      class=\"object-refs-view__section\"\n      :key=\"s.slug\"\n    >\n      <div class=\"object-refs-view__section-title\">\n        <v-icon small class=\"mr-2\">mdi-{{ s.icon }}</v-icon>{{ s.title }}:\n      </div>\n\n      <div class=\"ml-6\">\n        <span\n            v-for=\"t in integrationExtractorRefs[s.slug]\"\n            class=\"object-refs-view__link-wrap\"\n            :key=\"t.id\"\n        >\n          <router-link\n            :to=\"`/project/${projectId}/integrations/${t.integrationId}/extractor/${t.itemId}`\"\n            class=\"object-refs-view__link\">{{ t.name }}</router-link>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "web/src/components/IntegrationExtractorsBase.js",
    "content": "export default {\n  props: {\n    // integrationId: Number,\n    // projectId: Number,\n  },\n};\n"
  },
  {
    "path": "web/src/components/IntegrationForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"isLoaded\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      label=\"Name\"\n      :rules=\"[v => !!v || 'Name is required']\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-autocomplete\n      v-model=\"item.template_id\"\n      label=\"Task Template to run\"\n      clearable\n      :items=\"templates\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-autocomplete>\n\n    <v-card\n      v-if=\"item.template_id\"\n      style=\"background: rgba(133, 133, 133, 0.06)\"\n      class=\"mb-6 pt-3\"\n    >\n\n      <div style=\"\n        position: absolute;\n        background: var(--highlighted-card-bg-color);\n        width: 28px;\n        height: 28px;\n        transform: rotate(45deg);\n        left: calc(50% - 14px);\n        top: -14px;\n        border-radius: 0;\n      \"></div>\n\n      <v-card-text>\n        <TaskParamsForm\n          :template=\"templates.find(t => t.id === item.template_id)\"\n          v-model=\"item.task_params\"\n        />\n\n      </v-card-text>\n    </v-card>\n\n    <v-select\n      v-model=\"item.auth_method\"\n      label=\"Auth method\"\n      :items=\"authMethods\"\n      item-value=\"id\"\n      item-text=\"title\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-select>\n\n    <v-text-field\n      v-if=\"['token', 'hmac'].includes(item.auth_method)\"\n      v-model=\"item.auth_header\"\n      label=\"Auth header\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-select\n      v-if=\"item.auth_method\"\n      v-model=\"item.auth_secret_id\"\n      :label=\"$t('vaultPassword2')\"\n      clearable\n      :items=\"loginPasswordKeys\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-select>\n\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport TaskParamsForm from '@/components/TaskParamsForm.vue';\n\nexport default {\n  components: { TaskParamsForm },\n  mixins: [ItemFormBase],\n  data() {\n    return {\n      templates: [],\n      authMethods: [{\n        id: '',\n        title: 'None',\n      }, {\n        id: 'github',\n        title: 'GitHub Webhooks',\n      }, {\n        id: 'bitbucket',\n        title: 'Bitbucket Webhooks',\n      }, {\n        id: 'token',\n        title: 'Token',\n      }, {\n        id: 'hmac',\n        title: 'HMAC',\n      }, {\n        id: 'basic',\n        title: 'BasicAuth',\n      }],\n      keys: null,\n    };\n  },\n  async created() {\n    this.templates = (await axios({\n      templates: 'get',\n      url: `/api/project/${this.projectId}/templates`,\n      responseType: 'json',\n    })).data;\n  },\n\n  computed: {\n    isLoaded() {\n      return this.item && this.keys != null;\n    },\n\n    loginPasswordKeys() {\n      if (this.keys == null) {\n        return null;\n      }\n      return this.keys.filter((key) => key.type === 'login_password');\n    },\n\n    template() {\n      return this.templates.find((t) => t.id === this.item.template_id);\n    },\n  },\n\n  methods: {\n\n    getNewItem() {\n      return {\n        template_id: null,\n      };\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.itemId}`;\n    },\n\n    async afterLoadData() {\n      this.keys = (await axios({\n        method: 'get',\n        url: `/api/project/${this.projectId}/keys`,\n        responseType: 'json',\n      })).data;\n\n      if (this.item.task_params == null) {\n        this.item.task_params = {};\n      }\n    },\n\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IntegrationMatcherForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n    <v-text-field\n      v-model=\"item.name\"\n      label=\"Name\"\n      :rules=\"[v => !!v || 'Name is required']\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-divider class=\"mb-5\" />\n\n    <div>\n      <v-select\n        v-model=\"item.match_type\"\n        label=\"Match on *\"\n        :items=\"matchTypes\"\n        item-value=\"id\"\n        item-text=\"text\"\n        :rules=\"[v => !!v || 'Match source is required']\"\n        outlined\n        dense\n        required\n        :disabled=\"formSaving\"\n      ></v-select>\n      <v-select\n        v-model=\"item.body_data_type\"\n        v-if=\"item.match_type == 'body'\"\n        label=\"Body Data Format *\"\n        :items=\"bodyDataFormats\"\n        item-value=\"id\"\n        item-text=\"text\"\n        :rules=\"[v => !!v || 'Body Data Format is required']\"\n        outlined\n        dense\n        required\n        :disabled=\"formSaving\"\n      ></v-select>\n      <v-text-field\n        v-model=\"item.key\"\n        label=\"Key *\"\n        :rules=\"[v => !!v || 'Key is required']\"\n        outlined\n        dense\n        required\n        :disabled=\"formSaving\"\n      ></v-text-field>\n      <v-select\n        v-model=\"item.method\"\n        label=\"Comparison Method *\"\n        :items=\"methods\"\n        item-value=\"id\"\n        item-text=\"text\"\n        :rules=\"[v => !!v || 'Comparison Method is required']\"\n        outlined\n        dense\n        required\n        :disabled=\"formSaving\"\n      ></v-select>\n      <v-text-field\n        v-model=\"item.value\"\n        label=\"Value *\"\n        :rules=\"[v => !!v || 'Value is required']\"\n        outlined\n        dense\n        required\n        :disabled=\"formSaving\"\n      ></v-text-field>\n    </div>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport IntegrationExtractorChildValueFormBase from './IntegrationExtractorChildValueFormBase';\nimport { MATCHER_TYPE_ICONS, MATCHER_TYPE_TITLES } from '../lib/constants';\n\nexport default {\n  mixins: [ItemFormBase, IntegrationExtractorChildValueFormBase],\n  data() {\n    return {\n      MATCHER_TYPE_ICONS,\n      MATCHER_TYPE_TITLES,\n      matchTypes: [{\n        id: 'body',\n        text: 'Body',\n      }, {\n        id: 'header',\n        text: 'Header',\n      }],\n      bodyDataFormats: [{\n        id: 'json',\n        text: 'JSON',\n      }, {\n        id: 'string',\n        text: 'String',\n      }],\n      methods: [{\n        id: 'equals',\n        text: '==',\n      }, {\n        id: 'unequals',\n        text: '!=',\n      }, {\n        id: 'contains',\n        text: 'Contains',\n      }],\n    };\n  },\n  computed: {\n    integrationId() {\n      if (/^-?\\d+$/.test(this.$route.params.integrationId)) {\n        return parseInt(this.$route.params.integrationId, 10);\n      }\n      return this.$route.params.integrationId;\n    },\n  },\n  methods: {\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/matchers`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/matchers/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/IntegrationRefsView.vue",
    "content": "<template>\n  <div class=\"object-refs-view integration-refs-view\">\n    <v-alert\n      type=\"warning\"\n    >\n      The {{ objectTitle }} can't be deleted because it used by the resources below\n    </v-alert>\n    <div\n      v-for=\"s in sections\"\n      class=\"object-refs-view__section\"\n      :key=\"s.slug\"\n    >\n      <div class=\"object-refs-view__section-title\">\n        <v-icon small class=\"mr-2\">mdi-{{ s.icon }}</v-icon>{{ s.title }}:\n      </div>\n\n      <div class=\"ml-6\">\n        <span v-for=\"t in integrationRefs[s.slug]\" class=\"object-refs-view__link-wrap\" :key=\"t.id\">\n          <router-link\n            :to=\"`/project/${projectId}/integrations/${t.id}`\"\n            class=\"object-refs-view__link\">{{ t.name }}</router-link>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n"
  },
  {
    "path": "web/src/components/InventoryForm.vue",
    "content": "<template>\n  <v-skeleton-loader\n    v-if=\"!isLoaded\"\n    type=\"\n            table-heading,\n            image,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line\"\n  ></v-skeleton-loader>\n  <v-form\n    v-else\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('name')\"\n      :rules=\"[v => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-autocomplete\n      v-if=\"premiumFeatures.project_runners\"\n      v-model=\"item.runner_tag\"\n      :items=\"runnerTags\"\n      :label=\"$t('runner_tag')\"\n      item-value=\"tag\"\n      item-text=\"tag\"\n      outlined\n      dense\n      clearable\n      :disabled=\"formSaving\"\n      :placeholder=\"$t('runner_tag')\"\n    ></v-autocomplete>\n\n    <v-autocomplete\n      v-model=\"item.ssh_key_id\"\n      :label=\"$t('userCredentials')\"\n      :items=\"keys\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :rules=\"[v => !!v || $t('user_credentials_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-autocomplete>\n\n    <v-autocomplete\n      v-model=\"item.become_key_id\"\n      :label=\"$t('sudoCredentialsOptional')\"\n      clearable\n      :items=\"loginPasswordKeys\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-autocomplete>\n\n    <v-select\n      v-model=\"item.type\"\n      :label=\"$t('type')\"\n      :rules=\"[v => !!v || $t('type_required')]\"\n      :items=\"inventoryTypes\"\n      item-value=\"id\"\n      item-text=\"name\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-select>\n\n    <v-text-field\n      v-model.trim=\"item.inventory\"\n      :label=\"$t('pathToInventoryFile')\"\n      :rules=\"[v => !!v || $t('path_required')]\"\n      required\n      :disabled=\"formSaving\"\n      v-if=\"item.type === 'file'\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-select\n      v-model=\"item.repository_id\"\n      :label=\"$t('repository') + ' (Optional)'\"\n      clearable\n      :items=\"repositories\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :disabled=\"formSaving\"\n      v-if=\"item.type === 'file'\"\n      outlined\n      dense\n    ></v-select>\n\n    <div\n      style=\"position: relative\"\n      v-if=\"item.type === 'static' || item.type === 'static-yaml'\"\n    >\n      <codemirror\n        :class=\"{\n        'InventoryEditor': true,\n        'InventoryEditor--static': item.type === 'static',\n        'InventoryEditor--static-yaml': item.type === 'static-yaml',\n      }\"\n        :style=\"{ border: '1px solid lightgray' }\"\n        v-model.trim=\"item.inventory\"\n        :options=\"cmOptions\"\n        :placeholder=\"$t('enterInventory')\"\n      />\n\n      <RichEditor\n        v-model.trim=\"item.inventory\"\n        type=\"ini\"\n        style=\"\n              position: absolute;\n              right: 0;\n              top: 0;\n              margin: 10px;\n            \"\n      />\n\n    </div>\n\n  </v-form>\n</template>\n<style>\n.InventoryEditor .CodeMirror {\n  height: 160px !important;\n}\n\n.v-dialog--fullscreen .InventoryEditor--static .CodeMirror {\n  height: calc(100dvh - 540px) !important;\n}\n\n.v-dialog--fullscreen .InventoryEditor--static-yaml .CodeMirror {\n  height: calc(100dvh - 600px) !important;\n}\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport ItemFormBase from '@/components/ItemFormBase';\n\nimport { codemirror } from 'vue-codemirror';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/vue/vue.js';\nimport 'codemirror/addon/display/placeholder.js';\nimport RichEditor from '@/components/RichEditor.vue';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  components: {\n    RichEditor,\n    codemirror,\n  },\n\n  props: {\n    premiumFeatures: Object,\n  },\n\n  data() {\n    return {\n      cmOptions: {\n        tabSize: 2,\n        indentUnit: 2,\n        mode: 'text/x-ini',\n        lineNumbers: true,\n        line: true,\n        lint: true,\n        indentWithTabs: false,\n        extraKeys: {\n          Tab(cm) {\n            // If something is selected, indent that selection\n            if (cm.somethingSelected()) {\n              cm.indentSelection('add');\n            } else {\n              // Otherwise, insert two spaces at the cursor\n              cm.replaceSelection('  ', 'end');\n            }\n          },\n        },\n      },\n      inventoryTypes: [{\n        id: 'static',\n        name: 'Static',\n      }, {\n        id: 'static-yaml',\n        name: 'Static YAML',\n      }, {\n        id: 'file',\n        name: 'File',\n      }],\n      keys: null,\n      repositories: null,\n      runnerTags: null,\n    };\n  },\n\n  computed: {\n    loginPasswordKeys() {\n      if (this.keys == null) {\n        return null;\n      }\n      return this.keys.filter((key) => key.type === 'login_password');\n    },\n    isLoaded() {\n      return this.item != null && this.keys != null;\n    },\n  },\n\n  async created() {\n    [\n      this.keys,\n      this.repositories,\n      this.runnerTags,\n    ] = await Promise.all([\n      this.loadProjectResources('keys'),\n      this.loadProjectResources('repositories'),\n      this.loadProjectResources('runner_tags'),\n    ]);\n  },\n\n  methods: {\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/inventory`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/inventory/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/InventorySelectForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"items != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-select\n      :rules=\"[v => !!v || $t('inventory_required')]\"\n      :items=\"items\"\n      v-model=\"itemId\"\n      label=\"Workspace\"\n      item-value=\"id\"\n      item-text=\"name\"\n    />\n  </v-form>\n</template>\n<style>\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\n\nexport default {\n\n  props: {\n    app: String,\n    projectId: Number,\n    needSave: Boolean,\n    needReset: Boolean,\n  },\n\n  components: {},\n\n  watch: {\n    async needSave(val) {\n      if (val) {\n        await this.save();\n      }\n    },\n    async needReset(val) {\n      if (val) {\n        await this.reset();\n      }\n    },\n  },\n\n  data() {\n    return {\n      itemId: null,\n      items: null,\n      formValid: false,\n      formError: null,\n    };\n  },\n\n  async created() {\n    await this.loadData();\n  },\n\n  methods: {\n    async loadData() {\n      this.formError = null;\n      try {\n        this.items = (await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/inventory?app=${this.app}`,\n          responseType: 'json',\n        })).data;\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      }\n    },\n\n    async reset() {\n      this.itemId = null;\n      this.formError = null;\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n      await this.loadData();\n    },\n\n    async save() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        this.$emit('error', {});\n        return null;\n      }\n\n      this.$emit('save', {\n        itemId: this.itemId,\n      });\n\n      return this.itemId;\n    },\n\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ItemFormBase.js",
    "content": "import axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\nimport ProjectMixin from '@/components/ProjectMixin';\n\n/**\n * Most of Semaphore entities (keys, environments, etc) have similar REST API for\n * access and manipulation.\n * This class presents mixin for creating editing form for such entities.\n * This class should be used as mixin in Vue-template.\n *\n * Simplest example: KeyForm.vue. It demonstrate all you need to understand how it works.\n *\n * You must provide next required properties to use this mixin:\n *\n * * itemId\n * * projectId\n *\n * Your template must have <v-form ref=\"form\">...</v-form>.\n *\n * You must provide next methods in your template:\n *\n * * getItemsUrl() - returns URL for retrieving collection of entities (GET-method).\n * * getSingleItemUrl() - returns URL for retrieving and manipulation of single entity\n *                        (GET, POST, PUT, DELETE methods).\n */\nexport default {\n\n  mixins: [ProjectMixin],\n\n  props: {\n    itemId: [Number, String],\n    projectId: [Number, String],\n    needSave: Boolean, // flag which signal about user want to save form\n    needReset: Boolean, // flag which signal about user want to reset form\n  },\n\n  data() {\n    return {\n      item: null,\n      formValid: false,\n      formError: null,\n      formSaving: false,\n    };\n  },\n\n  async created() {\n    await this.loadData();\n  },\n\n  computed: {\n    isNew() {\n      return this.itemId === 'new';\n    },\n  },\n\n  watch: {\n    async needSave(val) {\n      if (val) {\n        await this.save();\n      }\n    },\n    async needReset(val) {\n      if (val) {\n        await this.reset();\n      }\n    },\n  },\n\n  methods: {\n    async reset() {\n      this.item = null;\n      this.formError = null;\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n      await this.afterReset();\n      await this.loadData();\n    },\n\n    getItemsUrl() {\n      throw new Error('Not implemented'); // must me implemented in template\n    },\n\n    getSingleItemUrl() {\n      throw new Error('Not implemented'); // must me implemented in template\n    },\n\n    beforeSave() {},\n\n    afterReset() {},\n\n    afterSave() {},\n\n    beforeLoadData() {},\n\n    afterLoadData() {},\n\n    getNewItem() {\n      return {};\n    },\n\n    getSaveAction() {\n      return this.isNew ? 'new' : 'edit';\n    },\n\n    async loadData() {\n      this.formError = null;\n      try {\n        await this.beforeLoadData();\n\n        this.item = this.isNew\n          ? this.getNewItem()\n          : await this.loadEndpoint(this.getSingleItemUrl());\n\n        await this.afterLoadData();\n      } catch (err) {\n        console.error(err);\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      }\n    },\n\n    /**\n     * You add add/override some PUT/POST request options with using this method.\n     * For example, you want to change response type, just override this method:\n     * ```\n     * getRequestOptions() {\n     *   return {\n     *     responseType: 'text'\n     *   }\n     * }\n     * ```\n     *\n     * This method works only for create (POST) and update (PUT) requests.\n     * @returns {Object}\n     */\n    getRequestOptions() {\n      return {};\n    },\n\n    /**\n     * Saves or creates item via API.\n     * @returns {Promise<null>} null if validation didn't pass or user data if user saved.\n     */\n    async save(data = {}) {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        this.$emit('error', {});\n        return null;\n      }\n\n      this.formSaving = true;\n      let item;\n\n      try {\n        await this.beforeSave();\n\n        item = (await axios({\n          method: this.isNew ? 'post' : 'put',\n          url: this.isNew\n            ? this.getItemsUrl()\n            : this.getSingleItemUrl(),\n          responseType: 'json',\n          data: {\n            ...this.item,\n            project_id: this.projectId,\n            ...data,\n          },\n          ...(this.getRequestOptions()),\n        })).data;\n\n        await this.afterSave(item);\n\n        this.$emit('save', {\n          item: item || this.item,\n          action: this.getSaveAction(),\n        });\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      } finally {\n        this.formSaving = false;\n      }\n\n      return item || this.item;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/ItemListPageBase.js",
    "content": "import axios from 'axios';\nimport EventBus from '@/event-bus';\nimport EditDialog from '@/components/EditDialog.vue';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport ObjectRefsDialog from '@/components/ObjectRefsDialog.vue';\n\nimport { getErrorMessage } from '@/lib/error';\nimport { USER_PERMISSIONS } from '@/lib/constants';\nimport PermissionsCheck from '@/components/PermissionsCheck';\nimport ProjectMixin from '@/components/ProjectMixin';\n\nexport default {\n  components: {\n    YesNoDialog,\n    EditDialog,\n    ObjectRefsDialog,\n  },\n\n  mixins: [\n    PermissionsCheck,\n    ProjectMixin,\n  ],\n\n  props: {\n    projectType: String,\n    userId: Number,\n    userRole: String,\n    user: Object,\n  },\n\n  computed: {\n    IDFieldName() {\n      return 'id';\n    },\n  },\n\n  data() {\n    const allowActions = this.allowActions();\n\n    const headers = this.getHeaders().filter((header) => allowActions || header.value !== 'actions');\n\n    return {\n      headers,\n      items: null,\n\n      itemId: null,\n      editDialog: null,\n      deleteItemDialog: null,\n\n      itemRefs: null,\n      itemRefsDialog: null,\n\n      USER_PERMISSIONS,\n    };\n  },\n\n  async created() {\n    await this.beforeLoadItems();\n    await this.loadItems();\n  },\n\n  methods: {\n    allowActions() {\n      return this.can(USER_PERMISSIONS.manageProjectResources);\n    },\n\n    // eslint-disable-next-line no-empty-function\n    async beforeLoadItems() {\n    },\n\n    getSingleItemUrl() {\n      throw new Error('Not implemented');\n    },\n\n    getHeaders() {\n      throw new Error('Not implemented');\n    },\n\n    getEventName() {\n      throw new Error('Not implemented');\n    },\n\n    showDrawer() {\n      EventBus.$emit('i-show-drawer');\n    },\n\n    async onItemSave() {\n      await this.loadItems();\n    },\n\n    async askDeleteItem(itemId) {\n      this.itemId = itemId;\n\n      try {\n        this.itemRefs = (await axios({\n          method: 'get',\n          url: `${this.getSingleItemUrl()}/refs`,\n          responseType: 'json',\n        })).data;\n\n        if (this.itemRefs.templates.length > 0\n          || this.itemRefs.repositories.length > 0\n          || this.itemRefs.inventories.length > 0\n          || this.itemRefs.access_keys.length > 0\n          || this.itemRefs.schedules.length > 0) {\n          this.itemRefsDialog = true;\n          return;\n        }\n      } catch (e) {\n        // Do nothing\n      }\n\n      this.deleteItemDialog = true;\n    },\n\n    async deleteItem(itemId) {\n      this.itemId = itemId;\n\n      try {\n        const item = this.items.find((x) => x[this.IDFieldName] === itemId);\n\n        await axios({\n          method: 'delete',\n          url: this.getSingleItemUrl(),\n          responseType: 'json',\n        });\n\n        EventBus.$emit(this.getEventName(), {\n          action: 'delete',\n          item,\n        });\n\n        await this.loadItems();\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      }\n    },\n\n    editItem(itemId) {\n      this.itemId = itemId;\n      this.editDialog = true;\n    },\n\n    async loadItems() {\n      this.items = (await axios({\n        method: 'get',\n        url: this.getItemsUrl(),\n        responseType: 'json',\n      })).data;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/KeyForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null && secretStorages != null\"\n  >\n    <v-alert :value=\"formError\" color=\"error\" class=\"mb-6\">{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('keyName')\"\n      :rules=\"[(v) => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    />\n\n    <v-card\n      class=\"mb-6\"\n      :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n      style=\"background: #8585850f\"\n    >\n      <v-tabs\n          fixed-tabs\n          v-model=\"sourceStorageTypeIndex\"\n      >\n        <v-tab\n            :disabled=\"formSaving || !canEditSecrets || isSynced\" style=\"padding: 0\">Local</v-tab>\n        <v-tab\n            :disabled=\"formSaving || !canEditSecrets || isSynced\" style=\"padding: 0\">Storage</v-tab>\n        <v-tab :disabled=\"formSaving || !canEditSecrets || isSynced\" style=\"padding: 0\">Env</v-tab>\n        <v-tab :disabled=\"formSaving || !canEditSecrets || isSynced\" style=\"padding: 0\">File</v-tab>\n      </v-tabs>\n\n      <div class=\"ml-4 mr-4 mt-6\" v-if=\"sourceStorageType\">\n        <v-autocomplete\n          v-if=\"supportStorages && sourceStorageType === 'vault'\"\n          v-model=\"item.source_storage_id\"\n          :label=\"$t('Storage')\"\n          :items=\"secretStorages\"\n          item-value=\"id\"\n          item-text=\"name\"\n          :disabled=\"formSaving || !canEditSecrets || isSynced\"\n          outlined\n          dense\n          clearable\n        />\n\n        <v-text-field\n          v-if=\"supportStorages && sourceStorageType === 'vault' && item.source_storage_id != null\"\n          v-model=\"item.source_storage_key\"\n          :label=\"$t('Source Key')\"\n          :disabled=\"formSaving || !canEditSecrets || isSynced\"\n          outlined\n          dense\n        />\n\n        <v-text-field\n          v-if=\"supportStorages && ['env', 'file'].includes(sourceStorageType)\"\n          v-model=\"item.source_storage_key\"\n          :label=\"\n            sourceStorageType === 'env' ? $t('Environment variable name') : $t('Path to the file')\n          \"\n          :rules=\"[(v) => !!v || $t('type_required')]\"\n          :disabled=\"formSaving || !canEditSecrets\"\n          outlined\n          dense\n        />\n      </div>\n    </v-card>\n\n    <v-select\n      v-model=\"item.type\"\n      :label=\"$t('type')\"\n      :rules=\"[(v) => !!v || !canEditSecrets || $t('type_required')]\"\n      :items=\"inventoryTypes\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :required=\"canEditSecrets\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      outlined\n      dense\n    />\n\n    <v-alert v-if=\"isReadOnly\" type=\"info\" text>Read-only secret storage chosen.</v-alert>\n\n    <v-text-field\n      v-model=\"item.login_password.login\"\n      :label=\"$t('usernameOptional')\"\n      v-if=\"!isReadOnly && item.type === 'login_password'\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      outlined\n      dense\n    />\n\n    <v-text-field\n      v-model=\"item.login_password.password\"\n      :append-icon=\"showLoginPassword ? 'mdi-eye' : 'mdi-eye-off'\"\n      :label=\"$t('password')\"\n      :rules=\"[(v) => !!v || !canEditSecrets || $t('password_required')]\"\n      :class=\"{ 'masked-secret-input': !showLoginPassword }\"\n      v-if=\"!isReadOnly && item.type === 'login_password'\"\n      :required=\"canEditSecrets\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      autocomplete=\"new-password\"\n      @click:append=\"showLoginPassword = !showLoginPassword\"\n      outlined\n      dense\n    />\n\n    <v-text-field\n      v-model=\"item.ssh.login\"\n      :label=\"$t('usernameOptional')\"\n      v-if=\"!isReadOnly && item.type === 'ssh'\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      outlined\n      dense\n    />\n\n    <v-text-field\n      v-model=\"item.ssh.passphrase\"\n      :append-icon=\"showSSHPassphrase ? 'mdi-eye' : 'mdi-eye-off'\"\n      label=\"Passphrase (Optional)\"\n      :class=\"{ 'masked-secret-input': !showSSHPassphrase }\"\n      v-if=\"!isReadOnly && item.type === 'ssh'\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      @click:append=\"showSSHPassphrase = !showSSHPassphrase\"\n      outlined\n      dense\n    />\n\n    <v-textarea\n      outlined\n      v-model=\"item.ssh.private_key\"\n      :label=\"$t('privateKey')\"\n      :disabled=\"formSaving || !canEditSecrets\"\n      :rules=\"[(v) => !canEditSecrets || !!v || $t('private_key_required')]\"\n      v-if=\"!isReadOnly && item.type === 'ssh'\"\n    />\n\n    <v-checkbox\n        v-model=\"item.override_secret\"\n        :label=\"$t('override')\"\n        v-if=\"!isNew\"\n    />\n\n    <v-alert dense text type=\"info\" v-if=\"item.type === 'none'\">\n      {{ $t('useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook') }}\n    </v-alert>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  props: {\n    supportStorages: Boolean,\n  },\n\n  data() {\n    return {\n      showLoginPassword: false,\n      showSSHPassphrase: false,\n      inventoryTypes: [\n        {\n          id: 'ssh',\n          name: `${this.$t('keyFormSshKey')}`,\n        },\n        {\n          id: 'login_password',\n          name: `${this.$t('keyFormLoginPassword')}`,\n        },\n        {\n          id: 'none',\n          name: `${this.$t('keyFormNone')}`,\n        },\n      ],\n      secretStorages: null,\n      isSynced: false,\n    };\n  },\n\n  computed: {\n    sourceStorageType() {\n      return this.item?.source_storage_type;\n    },\n\n    sourceStorageTypeIndex: {\n      get() {\n        return (\n          {\n            vault: 1,\n            env: 2,\n            file: 3,\n          }[this.item.source_storage_type] || 0\n        );\n      },\n      set(index) {\n        this.item = {\n          ...this.item,\n          source_storage_type: [undefined, 'vault', 'env', 'file'][index],\n        };\n      },\n    },\n\n    canEditSecrets() {\n      return this.isNew || this.item.override_secret;\n    },\n\n    isReadOnly() {\n      if (!this.sourceStorageType) {\n        return false;\n      }\n\n      if (['env', 'file'].includes(this.sourceStorageType)) {\n        return true;\n      }\n\n      if (this.item.source_storage_id == null) {\n        return false;\n      }\n\n      const storage = this.secretStorages.find((s) => s.id === this.item.source_storage_id);\n      if (storage == null) {\n        return false;\n      }\n\n      return storage.readonly;\n    },\n  },\n\n  async created() {\n    [this.secretStorages] = await Promise.all([this.loadProjectResources('secret_storages')]);\n  },\n\n  methods: {\n    afterLoadData() {\n      this.isSynced = JSON.parse(this.item.plain || '{}').dvls_id != null;\n    },\n\n    getNewItem() {\n      return {\n        ssh: {},\n        login_password: {},\n      };\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/keys`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/keys/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/KeyStoreMenu.vue",
    "content": "<template>\n  <div>\n    <v-tabs class=\"pl-4\">\n      <v-tab\n        key=\"keys\"\n        :to=\"`/project/${projectId}/keys`\"\n        data-testid=\"keystore-keys\"\n      >\n        Keys\n      </v-tab>\n\n      <v-tab\n        key=\"storages\"\n        :to=\"`/project/${projectId}/secret_storages`\"\n        data-testid=\"keystore-storages\"\n      >\n        Storages\n      </v-tab>\n    </v-tabs>\n    <v-divider style=\"margin-top: -1px;\" />\n  </div>\n</template>\n\n<script>\nexport default {\n\n  props: {\n    projectId: Number,\n  },\n\n};\n</script>\n"
  },
  {
    "path": "web/src/components/LineChart.vue",
    "content": "<template>\n  <BarChartGenerator\n    :chart-id=\"chartId\"\n    :dataset-id-key=\"chartId\"\n    :chart-options=\"chartOptions\"\n    :chart-data=\"chartData\"\n  />\n</template>\n\n<script>\n\nimport {\n  BarElement,\n  CategoryScale,\n  Chart as ChartJS,\n  Legend,\n  LinearScale,\n  LineElement,\n  PointElement,\n  TimeScale,\n  Title,\n  Tooltip,\n} from 'chart.js';\n\nimport './chartjs-adapter-day';\n\nChartJS.register(\n  Title,\n  Tooltip,\n  Legend,\n  BarElement,\n  LineElement,\n  LinearScale,\n  CategoryScale,\n  PointElement,\n  TimeScale,\n);\n\nexport default {\n\n  name: 'LineChart',\n\n  props: {\n\n    sourceData: Array,\n\n    chartId: String,\n  },\n\n  computed: {\n    chartData() {\n      return {\n\n        labels: (this.sourceData || []).map((row) => new Date(row.date)),\n\n        datasets: [\n          {\n            label: 'Success',\n            borderColor: '#4caf50',\n            backgroundColor: '#4caf50',\n            data: (this.sourceData || []).map((row) => row.count_by_status.success),\n            cubicInterpolationMode: 'monotone',\n          },\n          {\n            label: 'Failed',\n            borderColor: '#ff5252',\n            backgroundColor: '#ff5252',\n            data: (this.sourceData || []).map((row) => row.count_by_status.error),\n            cubicInterpolationMode: 'monotone',\n          },\n          {\n            label: 'Stopped',\n            borderColor: '#555',\n            backgroundColor: '#555',\n            data: (this.sourceData || []).map((row) => row.count_by_status.stopped),\n            cubicInterpolationMode: 'monotone',\n          },\n        ],\n      };\n    },\n  },\n\n  data() {\n    return {\n      chartOptions: {\n        scales: {\n          x: {\n            stacked: true,\n            type: 'time',\n            time: {\n              unit: 'day',\n            },\n          },\n          y: {\n            stacked: true,\n            ticks: {\n              maxTicksLimit: 20,\n              stepSize: 1,\n            },\n          },\n        },\n        responsive: true,\n        maintainAspectRatio: false,\n        animation: {\n          duration: 0,\n        },\n      },\n    };\n  },\n};\n\n</script>\n"
  },
  {
    "path": "web/src/components/NewTaskDialog.vue",
    "content": "<template>\n  <EditDialog\n    v-model=\"dialog\"\n    :save-button-text=\"$t(TEMPLATE_TYPE_ACTION_TITLES[template?.type || ''])\"\n    :title=\"$t('newTask')\"\n    @save=\"closeDialog\"\n    @close=\"closeDialog\"\n    test-id=\"newTaskDialog\"\n  >\n    <template v-slot:title={}>\n      <v-icon small class=\"mr-4\">{{ TEMPLATE_TYPE_ICONS[template?.type || ''] }}</v-icon>\n      <span class=\"breadcrumbs__item\">{{ templateTitle }}</span>\n      <v-icon>mdi-chevron-right</v-icon>\n      <span class=\"breadcrumbs__item\">{{ $t('newTask') }}</span>\n    </template>\n\n    <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n      <TaskForm\n        :project-id=\"projectId\"\n        item-id=\"new\"\n        :template=\"template\"\n        @save=\"onSave\"\n        @error=\"onError\"\n        :need-save=\"needSave\"\n        :need-reset=\"needReset\"\n        :source-task=\"sourceTask\"\n      />\n    </template>\n  </EditDialog>\n</template>\n<script>\nimport { TEMPLATE_TYPE_ACTION_TITLES, TEMPLATE_TYPE_ICONS } from '@/lib/constants';\nimport TaskForm from './TaskForm.vue';\nimport EditDialog from './EditDialog.vue';\n\nimport EventBus from '../event-bus';\n\nexport default {\n  components: {\n    TaskForm,\n    EditDialog,\n  },\n  props: {\n    value: Boolean,\n    projectId: Number,\n    template: Object,\n    sourceTask: Object,\n  },\n  data() {\n    return {\n      dialog: false,\n      TEMPLATE_TYPE_ACTION_TITLES,\n      TEMPLATE_TYPE_ICONS,\n    };\n  },\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n\n  computed: {\n    templateTitle() {\n      let res = this.template?.name || '';\n      if (res.length > 16) {\n        res = `${res.substring(0, 14)}...`;\n      }\n\n      return res;\n    },\n  },\n\n  methods: {\n    closeDialog(e) {\n      this.dialog = false;\n      if (e) {\n        EventBus.$emit('i-show-task', {\n          taskId: e.item.id,\n        });\n        this.$emit('save', e);\n      }\n      this.$emit('close');\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ObjectRefsDialog.vue",
    "content": "<template>\n  <v-dialog\n    v-model=\"dialog\"\n    max-width=\"400\"\n  >\n    <v-card>\n      <v-card-title class=\"headline\">{{ $t('cantDeleteThe', {objectTitle: objectTitle}) }}\n      </v-card-title>\n\n      <v-card-text class=\"pb-0\">\n        <ObjectRefsView\n          :object-title=\"objectTitle\"\n          :object-refs=\"objectRefs\"\n          :project-id=\"projectId\"\n        />\n      </v-card-text>\n\n      <v-card-actions>\n        <v-spacer></v-spacer>\n        <v-btn\n          color=\"blue darken-1\"\n          text\n          @click=\"dialog = false\"\n        >{{ $t('close2') }}</v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n<script>\nimport ObjectRefsView from '@/components/ObjectRefsView.vue';\n\nexport default {\n  components: {\n    ObjectRefsView,\n  },\n  props: {\n    value: Boolean,\n    objectRefs: Object,\n    projectId: Number,\n    objectTitle: String,\n  },\n  data() {\n    return {\n      dialog: false,\n    };\n  },\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ObjectRefsView.vue",
    "content": "<template>\n  <div class=\"object-refs-view\">\n    <v-alert\n      type=\"warning\"\n    >\n      {{ $t('theCantBeDeletedBecauseItUsedByTheResourcesBelow', {objectTitle: objectTitle}) }}\n    </v-alert>\n    <div\n      v-for=\"s in sections\"\n      class=\"object-refs-view__section\"\n      :key=\"s.slug\"\n    >\n      <div class=\"object-refs-view__section-title\">\n        <v-icon small class=\"mr-2\">mdi-{{ s.icon }}</v-icon>{{ s.title }}:\n      </div>\n\n      <div class=\"ml-6\">\n        <span\n            v-for=\"t in (objectRefs[s.slug] || [])\"\n            class=\"object-refs-view__link-wrap\"\n            :key=\"t.id\"\n        >\n          <router-link\n            :to=\"`/project/${projectId}/${s.path || s.slug}/${s.pageless ? '' : t.id}`\"\n            class=\"object-refs-view__link\">{{ t.name }}</router-link>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n<style lang=\"scss\">\n.object-refs-view__section {\n  margin-bottom: 10px;\n}\n\n.object-refs-view__link-wrap + .object-refs-view__link-wrap {\n  &:before {\n    content: \", \";\n  }\n}\n</style>\n<script>\nexport default {\n  props: {\n    objectRefs: Object,\n    projectId: Number,\n    objectTitle: String,\n  },\n  computed: {\n    sections() {\n      return [{\n        slug: 'templates',\n        title: 'Templates',\n        icon: 'check-all',\n      }, {\n        slug: 'inventories',\n        title: 'Inventories',\n        icon: 'monitor-multiple',\n      }, {\n        slug: 'repositories',\n        title: 'Repositories',\n        icon: 'git',\n      }, {\n        slug: 'integrations',\n        title: 'Integrations',\n        icon: 'connection',\n      }, {\n        slug: 'access_keys',\n        pageless: true,\n        path: 'keys',\n        title: 'Access Keys',\n        icon: 'key-change',\n      }, {\n        slug: 'schedules',\n        title: 'Schedules',\n        icon: 'clock-outline',\n      }].filter((s) => (this.objectRefs[s.slug] || []).length > 0);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/OpenTofuIcon.vue",
    "content": "<template>\n  <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n          d=\"M25.461 2.7578C24.5513 2.25782 23.4491 2.25782 22.5395 2.7578L7.56956 10.9858C7.5571\n          10.9927 7.54472 10.9996 7.5324 11.0066L5.5614 12.0899C4.59191 12.6228 3.9895 13.6413\n          3.9895 14.7476V33.2547C3.9895 34.3609 4.59191 35.3795 5.5614 35.9123L20.6733\n          44.2184C20.6928 44.2291 20.7123 44.2396 20.7319 44.2499L22.5395 45.2434C23.4491 45.7433\n          24.5513 45.7433 25.461 45.2434L27.2731 44.2474C27.2911 44.2379 27.309 44.2283 27.3269\n          44.2184L42.4388 35.9123C43.4083 35.3795 44.0107 34.3609 44.0107 33.2547V14.7476C44.0107\n          13.6413 43.4083 12.6228 42.4388 12.0899L40.4746 11.0103C40.4601 11.0021 40.4455 10.9939\n          40.4309 10.9858L25.461 2.7578ZM26.4228 24.0006L40.4309 16.3012C40.4453 16.2933 40.4595\n          16.2853 40.4737 16.2772L40.641 16.1853C41.1074 15.9289 41.6779 16.2664 41.6779\n          16.7986V31.2037C41.6779 31.7359 41.1074 32.0734 40.641 31.817L40.5118 31.746C40.4852\n          31.7304 40.4582 31.715 40.4309 31.7L26.4228 24.0006ZM7.53343 16.281C7.5454 16.2878\n          7.55745 16.2945 7.56956 16.3012L21.5777 24.0006L7.56956 31.7C7.54334 31.7144 7.51745\n          31.7291 7.49188 31.7441L7.35925 31.817C6.89284 32.0733 6.32231 31.7359 6.32231\n          31.2037V16.7986C6.32231 16.2664 6.89284 15.9289 7.35925 16.1853L7.53343 16.281ZM39.3281\n          13.0421L26.2033 5.8282C25.743 5.57521 25.1813 5.90054 25.1666 6.42067C25.1667 6.42761\n          25.1667 6.43456 25.1667 6.44151V22.0286L39.3277 14.2451C39.7839 13.9752 39.784 13.3122\n          39.3281 13.0421ZM8.67593 14.247L22.8335 22.0286V6.44151C22.8335 6.43455 22.8335 6.42761\n          22.8336 6.42067C22.8189 5.90054 22.2572 5.57521 21.7969 5.8282L8.67549 13.0403C8.21532\n          13.3098 8.21547 13.9777 8.67593 14.247ZM8.69322 34.971C8.22218 34.7121 8.20989 34.0462\n          8.65635 33.766L22.8335 25.9737V41.5608C22.8335 41.5677 22.8335 41.5747 22.8336\n          41.5816C22.8192 42.0911 22.2799 42.4137 21.8252 42.1888L8.69322 34.971ZM25.1667\n          41.5608V25.9737L39.3456 33.767C39.7905 34.0477 39.7777 34.7124 39.3072 34.971L26.1773\n          42.1877C25.7221 42.4148 25.181 42.092 25.1666 41.5816C25.1666 41.5782 25.1667 41.5747\n          25.1667 41.5713C25.1667 41.5678 25.1667 41.5643 25.1667 41.5608Z\"\n          fill=\"#0D1A2B\"/>\n    <path\n      d=\"M23.6628 4.80138C23.8728 4.686 24.1271 4.686 24.337 4.80138L39.3069 13.0294C39.7906\n      13.2953 39.7906 13.9902 39.3069 14.256L24.337 22.4841C24.1271 22.5995 23.8728 22.5995\n      23.6628 22.4841L8.69295 14.256C8.20929 13.9902 8.20929 13.2953 8.69295 13.0294L23.6628\n      4.80138Z\"\n      fill=\"#E7C200\"/>\n    <path\n      d=\"M6.32202 16.7975C6.32202 16.2653 6.89255 15.9279 7.35896 16.1842L22.4708 24.4903C22.6946\n      24.6133 22.8336 24.8483 22.8336 25.1036V41.5597C22.8336 42.0919 22.2631 42.4294 21.7967\n      42.173L6.68477 33.8669C6.46104 33.7439 6.32202 33.5089 6.32202 33.2536V16.7975Z\"\n      fill=\"#FFDA18\"/>\n    <path\n      d=\"M40.6406 16.1842C41.1071 15.9279 41.6776 16.2653 41.6776 16.7975V33.2536C41.6776\n      33.5089 41.5386 33.7439 41.3148 33.8669L26.203 42.173C25.7365 42.4294 25.166 42.0919\n      25.166 41.5597V25.1036C25.166 24.8483 25.305 24.6133 25.5288 24.4903L40.6406 16.1842Z\"\n      fill=\"white\"/>\n    <path\n      d=\"M12.669 29.7093C12.6684 29.717 12.6678 29.7246 12.6672 29.7322L9.125 27.8686C9.12549\n      27.8609 9.12602 27.8532 9.12659 27.8456C9.2087 26.7433 10.0683 26.2669 11.0465\n      26.7816C12.0247 27.2962 12.7511 28.607 12.669 29.7093Z\"\n      fill=\"#0D1A2B\"/>\n    <path\n      d=\"M18.2432 32.928C18.2427 32.9357 18.2421 32.9433 18.2414 32.9509L14.6992\n      31.0872C14.6997 31.0796 14.7003 31.0719 14.7008 31.0643C14.7829 29.962\n      15.6425 29.4856 16.6207 30.0003C17.5989 30.5149 18.3253 31.8257 18.2432 32.928Z\"\n      fill=\"#0D1A2B\"/>\n  </svg>\n</template>\n"
  },
  {
    "path": "web/src/components/PageBottomSheet.vue",
    "content": "<template>\n  <div class=\"page-bottom-sheet\" ref=\"sheet\">\n    <v-bottom-sheet\n      :attach=\"this.$refs.sheet\"\n      hide-overlay\n      v-model=\"sheet\"\n    >\n      <v-sheet class=\"pa-4\">\n        <slot></slot>\n      </v-sheet>\n    </v-bottom-sheet>\n  </div>\n</template>\n\n<style lang=\"scss\">\n.page-bottom-sheet {\n  .v-dialog__content {\n    left: unset !important;\n    width: unset !important;\n    overflow: hidden;\n  }\n  .v-sheet:after {\n    content: \"a b c d e f g h i j k l m n o p q r s t u v w x y z \\\n      a b c d e f g h i j k l m n o p q r s t u v w x y z \\\n      a b c d e f g h i j k l m n o p q r s t u v w x y z \\\n      a b c d e f g h i j k l m n o p q r s t u v w x y z \\\n      a b c d e f g h i j k l m n o p q r s t u v w x y z \\\n      a b c d e f g h i j k l m n o p q r s t u v w x y z\";\n    display: block;\n    height: 0;\n    overflow: hidden;\n    visibility: hidden;\n    font-size: 100px;\n  }\n}\n</style>\n\n<script>\nexport default {\n  props: {\n    value: Boolean,\n  },\n\n  data() {\n    return {\n      sheet: false,\n    };\n  },\n\n  watch: {\n    async sheet(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.sheet = val;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/PageMixin.js",
    "content": "export default {\n  props: {\n    systemInfo: Object,\n  },\n\n  computed: {\n\n    premiumFeatures() {\n      return this.systemInfo?.premium_features || {};\n    },\n\n  },\n};\n"
  },
  {
    "path": "web/src/components/PermissionsCheck.js",
    "content": "export default {\n  props: {\n    userPermissions: Number,\n    isAdmin: Boolean,\n  },\n\n  methods: {\n\n    can(permission) {\n      if (this.isAdmin) {\n        return true;\n      }\n\n      if (this.item && this.item.permissions) {\n        return (this.item.permissions & permission) === permission;\n      }\n\n      // eslint-disable-next-line no-bitwise\n      return (this.userPermissions & permission) === permission;\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/ProjectForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t(projectNameTitle)\"\n      :rules=\"[v => !!v || $t('project_name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      data-testid=\"newProject-name\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-text-field\n      v-model.number=\"item.max_parallel_tasks\"\n      :label=\"$t('maxNumberOfParallelTasksOptional')\"\n      :disabled=\"formSaving\"\n      :rules=\"[\n        v => (v == null || v === '' || Math.floor(v) === v) || $t('mustBeInteger'),\n        v => (v == null || v === '' || v >= 0) || $t('mustBe0OrGreater'),\n      ]\"\n      hint=\"Should be 0 or greater, 0 - unlimited.\"\n      type=\"number\"\n      :step=\"1\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-text-field\n      v-model=\"item.alert_chat\"\n      :label=\"$t('telegramChatIdOptional')\"\n      :disabled=\"formSaving\"\n      data-testid=\"newProject-tg\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"item.alert\"\n      :label=\"$t('allowAlertsForThisProject')\"\n      data-testid=\"newProject-alert\"\n    ></v-checkbox>\n\n    <v-switch\n      v-if=\"itemId === 'new'\"\n      v-model=\"item.demo\"\n      label=\"Demo\"\n      style=\"position: absolute; left: 24px; bottom: 15px;\"\n      hide-details\n    />\n\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n  props: {\n    projectNameTitle: {\n      type: String,\n      default: 'projectName',\n    },\n  },\n  methods: {\n    getItemsUrl() {\n      return '/api/projects';\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.itemId}`;\n    },\n    beforeSave() {\n      if (this.item.max_parallel_tasks === '') {\n        this.item.max_parallel_tasks = 0;\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ProjectMixin.js",
    "content": "import axios from 'axios';\n\nexport default {\n  props: {\n    projectId: Number,\n  },\n\n  methods: {\n    async loadEndpoint(endpoint) {\n      return (await axios({\n        method: 'get',\n        url: endpoint,\n        responseType: 'json',\n      })).data;\n    },\n\n    async loadProjectEndpoint(endpoint) {\n      return this.loadEndpoint(`/api/project/${this.projectId}${endpoint}`);\n    },\n\n    async loadProjectResources(name) {\n      return this.loadProjectEndpoint(`/${name}`);\n    },\n\n    async loadProjectResource(name, id) {\n      return this.loadProjectEndpoint(`/${name}/${id}`);\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/components/PulumiIcon.vue",
    "content": "<template>\n  <svg width=\"106\" height=\"106\" viewBox=\"0 0 106 106\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.0724 58.8698C20.9836 56.6116 20.9901\n    49.3006 17.0869 42.5403C13.1837 35.7799 6.84888 32.1302 2.93767 34.3885C-0.973544 36.6467\n    -0.980046 43.9576 2.92315 50.718C6.82634 57.4783 13.1612 61.128 17.0724 58.8698ZM17.0958\n    73.3454C20.999 80.1057 20.9925 87.4166 17.0813 89.6749C13.17 91.9331 6.83522 88.2834 2.93203\n    81.523C-0.971167 74.7627 -0.964667 67.4517 2.94655 65.1935C6.85776 62.9353 13.1926 66.585\n    17.0958 73.3454ZM43.7495 88.7551C47.6527 95.5154 47.6462 102.826 43.735 105.085C39.8238\n    107.343 33.4889 103.693 29.5857 96.9328C25.6826 90.1725 25.6891 82.8615 29.6003\n    80.6033C33.5115 78.3451 39.8463 81.9948 43.7495 88.7551ZM43.7408 57.9504C47.644 64.7107\n    47.6375 72.0217 43.7263 74.2799C39.8151 76.5381 33.4803 72.8884 29.5771 66.1281C25.6739\n    59.3678 25.6804 52.0568 29.5916 49.7986C33.5028 47.5404 39.8377 51.1901 43.7408 57.9504Z\"\n          fill=\"#F26E7E\"/>\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M97.0612 50.7349C100.964 43.9746 100.958\n    36.6636 97.0467 34.4054C93.1355 32.1472 86.8007 35.7969 82.8975 42.5572C78.9943 49.3176\n    79.0008 56.6285 82.912 58.8867C86.8232 61.1449 93.1581 57.4953 97.0612 50.7349ZM97.062\n    65.2032C100.973 67.4614 100.98 74.7723 97.0766 81.5327C93.1734 88.293 86.8385 91.9427\n    82.9273 89.6845C79.0161 87.4263 79.0096 80.1153 82.9128 73.355C86.816 66.5946 93.1508\n    62.9449 97.062 65.2032ZM70.4136 80.5876C74.3249 82.8458 74.3314 90.1568 70.4282\n    96.9171C66.525 103.677 60.1901 107.327 56.2789 105.069C52.3677 102.811 52.3612 95.4998\n    56.2644 88.7395C60.1676 81.9791 66.5024 78.3294 70.4136 80.5876ZM70.3986 49.7897C74.3098\n    52.0479 74.3163 59.3589 70.4131 66.1192C66.5099 72.8796 60.1751 76.5292 56.2638\n    74.271C52.3526 72.0128 52.3461 64.7019 56.2493 57.9415C60.1525 51.1812 66.4873 47.5315\n    70.3986 49.7897Z\" fill=\"#8A3391\"/>\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M64.1222 8.17769C64.1222 12.6941 57.7939\n    16.3554 49.9875 16.3554C42.1811 16.3554 35.8528 12.6941 35.8528 8.17769C35.8528 3.66127\n    42.1811 0 49.9875 0C57.7939 0 64.1222 3.66127 64.1222 8.17769ZM37.474 23.5464C37.474\n    28.0628 31.1457 31.7241 23.3393 31.7241C15.5329 31.7241 9.20459 28.0628 9.20459\n    23.5464C9.20459 19.03 15.5329 15.3687 23.3393 15.3687C31.1457 15.3687 37.474 19.03\n    37.474 23.5464ZM76.6705 31.7241C84.4769 31.7241 90.8052 28.0628 90.8052 23.5464C90.8052\n    19.03 84.4769 15.3687 76.6705 15.3687C68.8641 15.3687 62.5358 19.03 62.5358 23.5464C62.5358\n    28.0628 68.8641 31.7241 76.6705 31.7241ZM64.1222 38.9496C64.1222 43.466 57.7939 47.1272\n    49.9875 47.1272C42.1811 47.1272 35.8528 43.466 35.8528 38.9496C35.8528 34.4332 42.1811\n    30.7719 49.9875 30.7719C57.7939 30.7719 64.1222 34.4332 64.1222 38.9496Z\" fill=\"#F7BF2A\"/>\n  </svg>\n\n</template>\n"
  },
  {
    "path": "web/src/components/RepositoryForm.vue",
    "content": "<template>\n  <v-form\n      ref=\"form\"\n      lazy-validation\n      v-model=\"formValid\"\n      v-if=\"item != null && keys != null\"\n  >\n    <v-alert\n        :value=\"formError\"\n        color=\"error\"\n        class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n        v-model=\"item.name\"\n        :label=\"$t('name')\"\n        :rules=\"[v => !!v || $t('name_required')]\"\n        required\n        :disabled=\"formSaving\"\n        outlined\n        dense\n    ></v-text-field>\n\n    <v-text-field\n        v-model.trim=\"item.git_url\"\n        :label=\"$t('urlOrPath')\"\n        :rules=\"[\n          v => !!v || $t('repository_required'),\n          v => getTypeOfUrl(v) != null || $t('incorrectUrl'),\n        ]\"\n        required\n        :disabled=\"formSaving\"\n        :hide-details=\"true\"\n        outlined\n        dense\n    ></v-text-field>\n\n    <div class=\"mt-1 mb-5\">\n      <span class=\"caption\">git:</span>\n      <v-chip\n        v-for=\"x in ['ssh', 'http', 'https', 'file', 'git']\"\n        x-small\n        class=\"ml-1\"\n        :color=\"type ===x ? 'primary' : ''\"\n        @click=\"setType(x)\"\n        style=\"font-weight: bold;\"\n        :key=\"x\"\n      >{{ x }}</v-chip>\n      <span class=\"caption ml-3\">local:</span>\n      <v-chip\n        x-small\n        class=\"ml-1\"\n        :color=\"type ==='local' ? 'primary' : ''\"\n        @click=\"setType('local')\"\n        style=\"font-weight: bold;\"\n      >\n        {{ $t('absPath') }}\n      </v-chip>\n    </div>\n\n    <v-text-field\n      v-model.trim=\"item.git_branch\"\n      :label=\"$t('branch')\"\n      :rules=\"[v => (!!v || type === 'local') || $t('branch_required')]\"\n      required\n      :disabled=\"formSaving || type === 'local'\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-autocomplete\n        v-model=\"item.ssh_key_id\"\n        :label=\"$t('accessKey')\"\n        :items=\"keys\"\n        item-value=\"id\"\n        item-text=\"name\"\n        :rules=\"[v => !!v || $t('key_required')]\"\n        required\n        :disabled=\"formSaving\"\n        outlined\n        dense\n    >\n      <template v-slot:append-outer>\n        <v-tooltip left color=\"black\" content-class=\"opacity1\">\n          <template v-slot:activator=\"{ on, attrs }\">\n            <v-icon\n              v-bind=\"attrs\"\n              v-on=\"on\"\n            >\n              mdi-help-circle\n            </v-icon>\n          </template>\n          <div class=\"py-4\">\n            <p>{{ $t('credentialsToAccessToTheGitRepositoryItShouldBe') }}</p>\n            <ul>\n              <li><code>{{ $t('ssh') }}</code> {{ $t('ifYouUseGitOrSshUrl') }}</li>\n              <li><code>{{ $t('none') }}</code> {{ $t('ifYouUseHttpsOrFileUrl') }}</li>\n            </ul>\n          </div>\n        </v-tooltip>\n      </template>\n    </v-autocomplete>\n  </v-form>\n</template>\n<script>\nimport axios from 'axios';\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n  data() {\n    return {\n      helpDialog: null,\n      helpKey: null,\n\n      keys: null,\n      inventoryTypes: [{\n        id: 'static',\n        name: 'Static',\n      }, {\n        id: 'static-yaml',\n        name: 'Static YAML',\n      }, {\n        id: 'file',\n        name: 'File',\n      }],\n    };\n  },\n  async created() {\n    this.keys = (await axios({\n      keys: 'get',\n      url: `/api/project/${this.projectId}/keys`,\n      responseType: 'json',\n    })).data;\n  },\n  computed: {\n    type() {\n      return this.getTypeOfUrl(this.item.git_url);\n    },\n  },\n\n  methods: {\n    getTypeOfUrl(url) {\n      if (url == null || url === '') {\n        return null;\n      }\n\n      if (url.startsWith('/')) {\n        return 'local';\n      }\n\n      const m = url.match(/^(\\w+):\\/\\//);\n\n      if (m == null) {\n        return 'ssh';\n      }\n\n      if (!['git', 'file', 'ssh', 'http', 'https'].includes(m[1])) {\n        return null;\n      }\n\n      return m[1];\n    },\n\n    setType(type) {\n      let url;\n\n      const m = this.item.git_url.match(/^\\w+:\\/\\/(.*)$/);\n      if (m != null) {\n        url = m[1];\n      } else {\n        url = this.item.git_url;\n      }\n\n      if (type === 'local') {\n        url = url.startsWith('/') ? url : `/${url}`;\n      } else {\n        url = `${type}://${url}`;\n      }\n\n      this.item.git_url = url;\n    },\n\n    showHelpDialog(key) {\n      this.helpKey = key;\n      this.helpDialog = true;\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/repositories`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/repositories/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/RestoreProjectForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"projectName\"\n      :label=\"$t('projectName')\"\n      :rules=\"[v => !!v || $t('project_name_required')]\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-file-input\n      show-size\n      truncate-length=\"15\"\n      :placeholder=\"$t('Backup file')\"\n      @change=\"setFile\"\n    ></v-file-input>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  mixins: [ItemFormBase],\n  data() {\n    return {\n      projectName: null,\n    };\n  },\n  methods: {\n\n    beforeSave() {\n      this.item.meta.name = this.projectName;\n    },\n\n    getSaveAction() {\n      return 'restore';\n    },\n\n    /**\n     * @param file {File}\n     */\n    async setFile(file) {\n      if (file == null) {\n        this.item = {};\n        return;\n      }\n      this.item = JSON.parse(await file.text());\n    },\n\n    getItemsUrl() {\n      return '/api/projects/restore';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/RichEditor.vue",
    "content": "<template>\n  <div>\n    <v-dialog\n        v-model=\"envEditorDialog\"\n        persistent\n        :fullscreen=\"true\"\n        :transition=\"false\"\n    >\n      <div style=\"position: relative; height: 100%;\">\n        <codemirror\n            v-if=\"envEditorDialog\"\n            class=\"EnvironmentMaximizedEditor\"\n            :style=\"{ border: '1px solid lightgray' }\"\n            v-model=\"text\"\n            :options=\"cmOptions\"\n            :placeholder=\"$t('enterExtraVariablesJson')\"\n        />\n\n        <v-btn\n            v-if=\"validatable\"\n            dark\n            fab\n            small\n            color=\"success\"\n            style=\"\n            position: absolute;\n            right: 70px;\n            top: 0;\n            margin: 10px;\n          \"\n            @click=\"spellcheck()\"\n        >\n          <v-icon>mdi-spellcheck</v-icon>\n        </v-btn>\n\n        <v-btn\n            dark\n            fab\n            small\n            color=\"blue-grey\"\n            style=\"\n            position: absolute;\n            right: 20px;\n            top: 0;\n            margin: 10px;\n          \"\n            @click=\"save()\"\n        >\n          <v-icon>mdi-arrow-collapse</v-icon>\n        </v-btn>\n\n        <v-alert\n            v-model=\"showAlert\"\n            :color=\"errorMessage ? 'error' : 'success'\"\n            dismissible\n            style=\"\n            position: absolute;\n            bottom: 0;\n            left: 50%;\n            transform: translateX(-50%);\n          \"\n        >{{ errorMessage || validationSuccessMessage }}\n        </v-alert>\n      </div>\n    </v-dialog>\n\n    <v-btn\n        dark\n        fab\n        small\n        color=\"blue-grey\"\n        @click=\"envEditorDialog = true\"\n    >\n      <v-icon>mdi-arrow-expand</v-icon>\n    </v-btn>\n\n  </div>\n</template>\n\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\nimport { codemirror } from 'vue-codemirror';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/vue/vue.js';\nimport 'codemirror/addon/display/placeholder.js';\nimport { getErrorMessage } from '../lib/error';\n// import { getErrorMessage } from '@/lib/error';\n\nexport default {\n  props: {\n    value: String,\n    type: String,\n  },\n\n  components: {\n    codemirror,\n  },\n\n  watch: {\n    envEditorDialog(val) {\n      this.$emit('maximize', {\n        maximized: val,\n      });\n    },\n\n    value() {\n      this.text = this.value;\n    },\n  },\n\n  created() {\n    this.text = this.value;\n  },\n\n  data() {\n    return {\n      text: null,\n      envEditorDialog: false,\n      errorMessage: null,\n      showAlert: false,\n    };\n  },\n\n  computed: {\n\n    cmOptions() {\n      return {\n        tabSize: 2,\n        mode: 'application/json',\n        lineNumbers: true,\n        line: true,\n        lint: true,\n        indentWithTabs: false,\n      };\n    },\n\n    validatable() {\n      return ['json', 'json_array'].includes(this.type);\n    },\n\n    validationSuccessMessage() {\n      switch (this.type) {\n        case 'json':\n          return 'Valid JSON format.';\n        case 'json_array':\n          return 'Valid JSON array format.';\n        default:\n          return 'Validation passed successfully.';\n      }\n    },\n  },\n\n  methods: {\n    cancel() {\n      this.errorMessage = null;\n      this.text = this.value;\n      this.envEditorDialog = false;\n    },\n    spellcheck() {\n      this.errorMessage = null;\n      switch (this.type) {\n        case 'json':\n          try {\n            JSON.parse(this.text);\n          } catch (e) {\n            this.errorMessage = getErrorMessage(e);\n          }\n          break;\n        case 'json_array':\n          try {\n            const res = JSON.parse(this.text);\n            if (!Array.isArray(res)) {\n              throw new Error('Must be JSON array');\n            }\n          } catch (e) {\n            this.errorMessage = getErrorMessage(e);\n          }\n          break;\n        default:\n      }\n      this.showAlert = true;\n    },\n    save() {\n      // this.errorMessage = null;\n      // switch (this.type) {\n      //   case 'json':\n      //     try {\n      //       JSON.parse(this.text);\n      //     } catch (e) {\n      //       this.errorMessage = getErrorMessage(e);\n      //       return;\n      //     }\n      //     break;\n      //   case 'json_array':\n      //     try {\n      //       const res = JSON.parse(this.text);\n      //       if (!Array.isArray(res)) {\n      //         throw new Error('Must be JSON array');\n      //       }\n      //     } catch (e) {\n      //       this.errorMessage = getErrorMessage(e);\n      //       return;\n      //     }\n      //     break;\n      //   default:\n      // }\n      if (this.text !== this.value) {\n        this.$emit('input', this.text);\n      }\n      this.envEditorDialog = false;\n    },\n  },\n};\n</script>\n<style lang=\"scss\">\n.vue-codemirror.EnvironmentMaximizedEditor {\n  height: 100% !important;\n  border-radius: 0 !important;\n\n  .CodeMirror {\n    height: 100% !important;\n    font-size: 14px;\n    border-radius: 0 !important;\n  }\n}\n</style>\n"
  },
  {
    "path": "web/src/components/RunnerForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('name')\"\n      :rules=\"[v => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n      v-if=\"projectId\"\n      v-model=\"item.tag\"\n      :label=\"$t('tag')\"\n      :rules=\"[v => !!v || $t('tag_required')]\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n      v-model=\"item.webhook\"\n      :label=\"$t('webhook')\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-text-field\n      type=\"number\"\n      v-model.number=\"item.max_parallel_tasks\"\n      :label=\"$t('maxNumberOfParallelTasksOptional')\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-checkbox\n      class=\"mt-0\"\n      v-model=\"item.active\"\n      :label=\"$t('enabled')\"\n      :disabled=\"formSaving\"\n      hide-details\n    ></v-checkbox>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\n\nexport default {\n  props: {\n    isAdmin: Boolean,\n    projectId: Number,\n  },\n\n  mixins: [ItemFormBase],\n\n  methods: {\n    getItemsUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/runners`;\n      }\n\n      return '/api/runners';\n    },\n\n    beforeSave() {\n      if (!this.item.max_parallel_tasks) {\n        this.item.max_parallel_tasks = 0;\n      }\n    },\n\n    getSingleItemUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/runners/${this.itemId}`;\n      }\n      return `/api/runners/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/ScheduleForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"templates && item != null\"\n  >\n    <v-alert\n      v-model=\"showInfo\"\n      color=\"info\"\n      text\n      class=\"mb-6\"\n    >\n      Use environment variable <code>SEMAPHORE_SCHEDULE_TIMEZONE</code> or config param\n      <code>schedule.timezone</code> to set timezone for Schedule.\n    </v-alert>\n\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('Name')\"\n      :rules=\"[v => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-autocomplete\n      v-model=\"item.template_id\"\n      :label=\"$t('Template')\"\n      :items=\"templates\"\n      item-value=\"id\"\n      :item-text=\"(itm) => itm.name\"\n      :rules=\"[v => !!v || $t('template_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    />\n\n    <v-card\n      style=\"background: var(--highlighted-card-bg-color)\"\n      v-if=\"item.template_id\"\n      class=\"mb-8 pt-3\"\n    >\n      <div style=\"\n        position: absolute;\n        background: var(--highlighted-card-bg-color);\n        width: 28px;\n        height: 28px;\n        transform: rotate(45deg);\n        left: calc(50% - 14px);\n        top: -14px;\n        border-radius: 0;\n      \"></div>\n\n      <v-card-text>\n        <TaskParamsForm\n          :template=\"templates.find(t => t.id === item.template_id)\"\n          v-model=\"item.task_params\"\n        />\n\n      </v-card-text>\n    </v-card>\n\n    <div v-if=\"type === 'run_at'\">\n      <v-text-field\n\n        v-model=\"runAtInput\"\n        type=\"datetime-local\"\n        label=\"Run at\"\n        :rules=\"runAtRules\"\n        :disabled=\"formSaving\"\n        :suffix=\"timezone + ' time'\"\n        outlined\n        dense\n      ></v-text-field>\n\n      <div class=\"d-flex justify-end\">\n\n        <v-checkbox\n          v-model=\"item.delete_after_run\"\n          hide-details\n          class=\"mt-0 pt-0\"\n        >\n          <template v-slot:label>\n            {{ $t('Delete after run') }}\n          </template>\n        </v-checkbox>\n      </div>\n    </div>\n\n    <div v-else>\n      <v-switch\n        v-model=\"rawCron\"\n        label=\"Show cron format\"\n        :disabled=\"disableRawCron\"\n      />\n\n      <v-text-field\n        v-if=\"rawCron\"\n        v-model=\"item.cron_format\"\n        :label=\"$t('Cron')\"\n        :rules=\"[v => !!v || $t('Cron required')]\"\n        required\n        :disabled=\"formSaving\"\n        @input=\"refreshCheckboxes()\"\n        :suffix=\"timezone + ' time'\"\n        outlined\n        :error=\"cronFormatError != null\"\n        :error-messages=\"cronFormatError\"\n        dense\n      ></v-text-field>\n\n      <div v-else>\n        <v-select\n          v-model=\"timing\"\n          :label=\"$t('Timing')\"\n          :items=\"TIMINGS\"\n          item-value=\"id\"\n          item-text=\"title\"\n          :rules=\"[v => !!v || $t('template_required')]\"\n          required\n          :disabled=\"formSaving\"\n          @change=\"refreshCron()\"\n          outlined\n          hide-details\n          dense\n        />\n\n        <div v-if=\"['yearly'].includes(timing)\">\n          <div class=\"mt-4\">Months</div>\n          <div class=\"d-flex flex-wrap\">\n            <v-checkbox\n              class=\"mr-2 mt-0 ScheduleCheckbox\"\n              v-for=\"m in MONTHS\"\n              :key=\"m.id\"\n              :value=\"m.id\"\n              :label=\"m.title\"\n              v-model=\"months\"\n              color=\"white\"\n              :class=\"{'ScheduleCheckbox--active': months.includes(m.id)}\"\n              @change=\"refreshCron()\"\n            ></v-checkbox>\n          </div>\n        </div>\n\n        <div v-if=\"['weekly'].includes(timing)\">\n          <div class=\"mt-4\">Weekdays</div>\n          <div class=\"d-flex flex-wrap\">\n            <v-checkbox\n              class=\"mr-2 mt-0 ScheduleCheckbox\"\n              v-for=\"d in WEEKDAYS\" :key=\"d.id\"\n              :value=\"d.id\"\n              :label=\"d.title\"\n              v-model=\"weekdays\"\n              color=\"white\"\n              :class=\"{'ScheduleCheckbox--active': weekdays.includes(d.id)}\"\n              @change=\"refreshCron()\"\n            ></v-checkbox>\n          </div>\n        </div>\n\n        <div v-if=\"['yearly', 'monthly'].includes(timing)\">\n          <div class=\"mt-4\">Days</div>\n          <div class=\"d-flex flex-wrap\">\n            <v-checkbox\n              class=\"mr-2 mt-0 ScheduleCheckbox\"\n              v-for=\"d in 31\"\n              :key=\"d\"\n              :value=\"d\"\n              :label=\"`${d}`\"\n              v-model=\"days\"\n              color=\"white\"\n              :class=\"{'ScheduleCheckbox--active': days.includes(d)}\"\n              @change=\"refreshCron()\"\n            ></v-checkbox>\n          </div>\n        </div>\n\n        <div v-if=\"['yearly', 'monthly', 'weekly', 'daily'].includes(timing)\">\n          <div class=\"mt-4 d-flex justify-space-between\">\n            <span>Hours</span>\n            <b style=\"color: red;\">{{ timezone + ' time' }}</b>\n          </div>\n          <div class=\"d-flex flex-wrap\">\n            <v-checkbox\n              class=\"mr-2 mt-0 ScheduleCheckbox\"\n              v-for=\"h in 24\"\n              :key=\"h - 1\"\n              :value=\"h - 1\"\n              :label=\"`${h - 1}`\"\n              v-model=\"hours\"\n              color=\"white\"\n              :class=\"{'ScheduleCheckbox--active': hours.includes(h - 1)}\"\n              @change=\"refreshCron()\"\n            ></v-checkbox>\n          </div>\n        </div>\n\n        <div>\n          <div class=\"mt-4\">Minutes</div>\n          <div class=\"d-flex flex-wrap\">\n            <v-checkbox\n              class=\"mr-2 mt-0 ScheduleCheckbox\"\n              v-for=\"m in MINUTES\"\n              :key=\"m.id\"\n              :value=\"m.id\"\n              :label=\"m.title\"\n              v-model=\"minutes\"\n              color=\"white\"\n              :class=\"{'ScheduleCheckbox--active': minutes.includes(m.id)}\"\n              @change=\"refreshCron()\"\n            ></v-checkbox>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div\n      class=\"text-center text-subtitle-1 mb-3\"\n      :class=\"{'mt-8': !rawCron, 'mt-3': rawCron}\"\n      style=\"color: limegreen; font-weight: bold;\"\n    >\n      Next run time\n    </div>\n\n    <v-simple-table class=\"TaskDetails__table text-sub mb-2\">\n      <template v-slot:default>\n        <thead>\n        <tr>\n          <th>Time Zone</th>\n          <th>Date</th>\n          <th>Time</th>\n        </tr>\n        </thead>\n        <tbody>\n        <tr>\n          <td>{{ timezone }}</td>\n          <td>{{ nextRunUtcDate }}</td>\n          <td>{{ nextRunUtcTime }}</td>\n        </tr>\n        <tr>\n          <td>{{ localTimezone }}</td>\n          <td>{{ nextRunLocalDate }}</td>\n          <td>{{ nextRunLocalTime }}</td>\n        </tr>\n        </tbody>\n      </template>\n    </v-simple-table>\n\n    <v-checkbox\n      style=\"position: absolute; bottom: 15px; left: 22px;\"\n      v-model=\"item.active\"\n      hide-details\n    >\n      <template v-slot:label>\n        {{ $t('enabled') }}\n      </template>\n    </v-checkbox>\n\n  </v-form>\n</template>\n\n<style lang=\"scss\">\n.ScheduleCheckbox {\n\n  .v-input__slot {\n    padding: 4px 6px;\n    font-weight: bold;\n    border-radius: 6px;\n  }\n\n  .v-messages {\n    display: none;\n  }\n\n  &.theme--light {\n    .v-input__slot {\n      background: #e4e4e4;\n    }\n  }\n\n  &.theme--dark {\n    .v-input__slot {\n      background: gray;\n    }\n  }\n}\n\n.ScheduleCheckbox--active {\n  .v-input__slot {\n    background: #4caf50 !important;\n  }\n\n  .v-label {\n    color: white;\n  }\n}\n\n</style>\n\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezonePlugin from 'dayjs/plugin/timezone';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\nimport { CronExpression, CronExpressionParser, CronFieldCollection } from 'cron-parser';\nimport { getErrorMessage } from '@/lib/error';\nimport TaskParamsForm from '@/components/TaskParamsForm.vue';\n\ndayjs.extend(utc);\ndayjs.extend(timezonePlugin);\ndayjs.extend(customParseFormat);\n\nconst MONTHS = [{\n  id: 1,\n  title: 'Jan',\n}, {\n  id: 2,\n  title: 'Feb',\n}, {\n  id: 3,\n  title: 'March',\n}, {\n  id: 4,\n  title: 'April',\n}, {\n  id: 5,\n  title: 'May',\n}, {\n  id: 6,\n  title: 'June',\n}, {\n  id: 7,\n  title: 'July',\n}, {\n  id: 8,\n  title: 'August',\n}, {\n  id: 9,\n  title: 'September',\n}, {\n  id: 10,\n  title: 'October',\n}, {\n  id: 11,\n  title: 'November',\n}, {\n  id: 12,\n  title: 'December',\n}];\n\nconst TIMINGS = [{\n  id: 'yearly',\n  title: 'Yearly',\n}, {\n  id: 'monthly',\n  title: 'Monthly',\n}, {\n  id: 'weekly',\n  title: 'Weekly',\n}, {\n  id: 'daily',\n  title: 'Daily',\n}, {\n  id: 'hourly',\n  title: 'Hourly',\n}];\n\nconst WEEKDAYS = [{\n  id: 0,\n  title: 'Sunday',\n}, {\n  id: 1,\n  title: 'Monday',\n}, {\n  id: 2,\n  title: 'Tuesday',\n}, {\n  id: 3,\n  title: 'Wednesday',\n}, {\n  id: 4,\n  title: 'Thursday',\n}, {\n  id: 5,\n  title: 'Friday',\n}, {\n  id: 6,\n  title: 'Saturday',\n}];\n\nconst MINUTES = [\n  { id: 0, title: ':00' },\n  { id: 5, title: ':05' },\n  { id: 10, title: ':10' },\n  { id: 15, title: ':15' },\n  { id: 20, title: ':20' },\n  { id: 25, title: ':25' },\n  { id: 30, title: ':30' },\n  { id: 35, title: ':35' },\n  { id: 40, title: ':40' },\n  { id: 45, title: ':45' },\n  { id: 50, title: ':50' },\n  { id: 55, title: ':55' },\n];\n\nconst RUN_AT_FORMAT = 'YYYY-MM-DDTHH:mm';\n\nfunction formatDateInTZ(date, tz) {\n  if (date == null) {\n    return '—';\n  }\n  const parts = new Intl.DateTimeFormat('en-GB', {\n    timeZone: tz,\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    second: '2-digit',\n    hour12: false,\n  }).formatToParts(date);\n\n  const get = (type) => parts.find((p) => p.type === type)?.value;\n\n  return `${get('year')}-${get('month')}-${get('day')}`;\n}\n\nfunction formatTimeInTZ(date, tz) {\n  if (date == null) {\n    return '—';\n  }\n\n  const parts = new Intl.DateTimeFormat('en-GB', {\n    timeZone: tz,\n    year: 'numeric',\n    month: '2-digit',\n    day: '2-digit',\n    hour: '2-digit',\n    minute: '2-digit',\n    second: '2-digit',\n    hour12: false,\n  }).formatToParts(date);\n\n  const get = (type) => parts.find((p) => p.type === type)?.value;\n\n  return `${get('hour')}:${get('minute')}`;\n}\n\nexport default {\n  components: { TaskParamsForm },\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      templates: null,\n      timing: 'hourly',\n      TIMINGS,\n      MONTHS,\n      WEEKDAYS,\n      MINUTES,\n      minutes: [],\n      hours: [],\n      days: [],\n      months: [],\n      weekdays: [],\n      rawCron: false,\n      disableRawCron: false,\n      showInfo: true,\n      cronFormatError: null,\n      runAtInput: '',\n    };\n  },\n\n  watch: {\n    rawCron(val) {\n      if (val) {\n        localStorage.removeItem('schedule__raw_cron');\n      } else {\n        localStorage.setItem('schedule__raw_cron', '1');\n      }\n    },\n\n    showInfo(val) {\n      if (val) {\n        localStorage.removeItem('schedule__hide_info');\n      } else {\n        localStorage.setItem('schedule__hide_info', '1');\n      }\n    },\n  },\n\n  async created() {\n    this.showInfo = localStorage.getItem('schedule_hide_info') !== '1';\n    this.rawCron = localStorage.getItem('schedule__raw_cron') !== '1';\n\n    this.templates = (await axios({\n      method: 'get',\n      url: `/api/project/${this.projectId}/templates`,\n      responseType: 'json',\n    })).data;\n  },\n\n  props: {\n    timezone: String,\n    type: String,\n  },\n\n  computed: {\n    localTimezone() {\n      return 'Local';\n    },\n\n    runAtRules() {\n      if (this.type === 'run_at') {\n        return [];\n      }\n\n      return [\n        (v) => !!v || 'Run time is required',\n      ];\n    },\n\n    nextRunUtcDate() {\n      return formatDateInTZ(this.nextRunTime(), this.timezone);\n    },\n\n    nextRunLocalDate() {\n      const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n      return formatDateInTZ(this.nextRunTime(), tz);\n    },\n\n    nextRunUtcTime() {\n      return formatTimeInTZ(this.nextRunTime(), this.timezone);\n    },\n\n    nextRunLocalTime() {\n      const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n      return formatTimeInTZ(this.nextRunTime(), tz);\n    },\n  },\n\n  methods: {\n    getNewItem() {\n      return {\n        name: '',\n        template_id: null,\n        cron_format: '* * * * *',\n        active: true,\n        run_once: false,\n        delete_after_run: false,\n        task_params: {},\n        run_at: null,\n      };\n    },\n\n    setDefaultRunAt() {\n      const nextHour = dayjs().tz(this.timezone).add(1, 'hour').minute(0)\n        .second(0)\n        .millisecond(0);\n\n      this.runAtInput = nextHour.format(RUN_AT_FORMAT);\n    },\n\n    setRunAtInputFromItem() {\n      if (!this.item.run_at) {\n        this.runAtInput = '';\n        return;\n      }\n\n      const parsed = dayjs(this.item.run_at).tz(this.timezone);\n      this.runAtInput = parsed.isValid() ? parsed.format(RUN_AT_FORMAT) : '';\n    },\n\n    nextRunTime() {\n      if (this.type === 'run_at') {\n        const runAt = this.item.run_at ? dayjs(this.item.run_at) : null;\n        const parsed = this.runAtInput\n          ? dayjs.tz(this.runAtInput, RUN_AT_FORMAT, this.timezone)\n          : runAt;\n\n        if (!parsed || !parsed.isValid()) {\n          return null;\n        }\n\n        return parsed.toDate();\n      }\n\n      try {\n        return CronExpressionParser.parse(this.item.cron_format, {\n          tz: this.timezone,\n        }).next().toDate();\n      } catch {\n        return null;\n      }\n    },\n\n    refreshCheckboxes() {\n      if (this.type === 'run_at') {\n        this.cronFormatError = null;\n        this.disableRawCron = false;\n        return;\n      }\n\n      // if (!/test/.test(this.item.cron_format)) {\n      //   this.rawCron = true;\n      //   this.disableRawCron = true;\n      // } else {\n      //   this.disableRawCron = false;\n      // }\n\n      this.cronFormatError = null;\n      this.disableRawCron = false;\n\n      let cron;\n      try {\n        cron = CronExpressionParser.parse(this.item.cron_format, {\n          tz: this.timezone,\n        });\n      } catch (err) {\n        this.cronFormatError = getErrorMessage(err);\n        this.rawCron = true;\n        this.disableRawCron = true;\n        return;\n      }\n\n      const fields = cron.fields; // JSON.parse(JSON.stringify(cron.fields));\n\n      this.months = [];\n      this.weekdays = [];\n      this.hours = [];\n      this.minutes = [];\n\n      if (this.isHourly(this.item.cron_format)) {\n        this.minutes = fields.minute.values;\n        this.timing = 'hourly';\n      } else {\n        this.minutes = [];\n      }\n\n      if (this.isDaily(this.item.cron_format)) {\n        this.hours = fields.hour.values;\n        this.timing = 'daily';\n      } else {\n        this.hours = [];\n      }\n\n      if (this.isWeekly(this.item.cron_format)) {\n        this.weekdays = fields.dayOfWeek.values;\n        this.timing = 'weekly';\n      } else {\n        this.weekdays = [];\n      }\n\n      if (this.isMonthly(this.item.cron_format)) {\n        this.days = fields.dayOfMonth.values;\n        this.timing = 'monthly';\n      } else {\n        this.months = [];\n      }\n\n      if (this.isYearly(this.item.cron_format)) {\n        this.months = fields.month.values;\n        this.timing = 'yearly';\n      }\n    },\n\n    afterLoadData() {\n      // if (!this.item.type) {\n      //   this.item.type = this.item.run_at ? 'run_at' : '';\n      // }\n\n      if (this.item.run_at) {\n        this.setRunAtInputFromItem();\n      } else if (this.type === 'run_at') {\n        this.setDefaultRunAt();\n      } else if (this.isNew) {\n        this.item.cron_format = '* * * * *';\n      }\n\n      this.refreshCheckboxes();\n    },\n\n    async beforeSave() {\n      this.item.type = this.type;\n\n      if (this.type === 'run_at') {\n        const parsed = this.runAtInput\n          ? dayjs.tz(this.runAtInput, RUN_AT_FORMAT, this.timezone)\n          : null;\n\n        if (!parsed || !parsed.isValid()) {\n          this.formError = 'Please provide a valid run time for the run_at schedule.';\n          throw new Error(this.formError);\n        }\n\n        this.item.run_at = parsed.toISOString();\n        this.item.cron_format = this.item.cron_format || '';\n      } else {\n        this.item.run_at = null;\n      }\n    },\n\n    isWeekly(s) {\n      return /^\\S+\\s\\S+\\s\\S+\\s\\S+\\s[^*]\\S*$/.test(s);\n    },\n\n    isYearly(s) {\n      return /^\\S+\\s\\S+\\s\\S+\\s[^*]\\S*\\s\\S+$/.test(s);\n    },\n\n    isMonthly(s) {\n      return /^\\S+\\s\\S+\\s[^*]\\S*\\s\\S+\\s\\S+$/.test(s);\n    },\n\n    isDaily(s) {\n      return /^\\S+\\s[^*]\\S*\\s\\S+\\s\\S+\\s\\S+$/.test(s);\n    },\n\n    isHourly(s) {\n      return /^[^*]\\S*\\s\\S+\\s\\S+\\s\\S+\\s\\S+$/.test(s);\n    },\n\n    refreshCron() {\n      const fields = {};\n\n      switch (this.timing) {\n        case 'hourly':\n          this.months = [];\n          this.weekdays = [];\n          this.days = [];\n          this.hours = [];\n          break;\n        case 'daily':\n          this.days = [];\n          this.months = [];\n          this.weekdays = [];\n          break;\n        case 'monthly':\n          this.months = [];\n          this.weekdays = [];\n          break;\n        case 'weekly':\n          this.months = [];\n          this.days = [];\n          break;\n        default:\n          break;\n      }\n\n      if (this.months.length > 0) {\n        fields.month = this.months;\n      }\n\n      if (this.weekdays.length > 0) {\n        fields.dayOfWeek = this.weekdays;\n      }\n\n      if (this.days.length > 0) {\n        fields.dayOfMonth = this.days;\n      }\n\n      if (this.hours.length > 0) {\n        fields.hour = this.hours;\n      }\n\n      if (this.minutes.length > 0) {\n        fields.minute = this.minutes;\n      }\n\n      const origFields = CronExpressionParser.parse('* * * * *').fields;\n      const modFields = CronFieldCollection.from(origFields, fields);\n      const exp = CronExpression.fieldsToExpression(modFields);\n      this.item.cron_format = exp.stringify();\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/schedules`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/schedules/${this.itemId}`;\n    },\n\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SecretStorageForm.vue",
    "content": "<template>\n  <v-form ref=\"form\" lazy-validation v-model=\"formValid\" v-if=\"item != null\">\n    <v-alert :value=\"formError\" color=\"error\" class=\"pb-2\">{{ formError }} </v-alert>\n\n    <v-text-field\n      v-model=\"item.name\"\n      :label=\"$t('name')\"\n      :rules=\"[(v) => !!v || $t('name_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <v-text-field\n      v-model=\"item.params.url\"\n      :label=\"$t('Server URL')\"\n      :disabled=\"formSaving\"\n      :rules=\"[(v) => !!v || $t('url_required')]\"\n      required\n      data-testid=\"secretStorage-vaultURL\"\n      outlined\n      dense\n    ></v-text-field>\n\n    <div v-if=\"item.type === 'vault'\">\n      <v-text-field\n        v-model=\"item.params.mount\"\n        :label=\"$t('Mount')\"\n        hint=\"'secret' by default\"\n        :disabled=\"formSaving\"\n        data-testid=\"secretStorage-dvlsKey\"\n        outlined\n        dense\n      ></v-text-field>\n\n      <div class=\"d-flex justify-space-between align-center mb-2\">\n        <b style=\"font-size: 13px; margin-left: 5px\">Token</b>\n        <v-btn-toggle v-model=\"secretStorage\" tile group mandatory>\n          <v-btn value=\"database\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\">\n            Store in DB\n          </v-btn>\n          <v-btn value=\"env\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\"> From ENV </v-btn>\n          <v-btn value=\"file\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\"> From File </v-btn>\n        </v-btn-toggle>\n      </div>\n\n      <v-text-field\n        v-if=\"secretStorage === 'database'\"\n        class=\"masked-secret-input\"\n        v-model=\"item.secret\"\n        :label=\"$t('Token')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('token_required')]\"\n        required\n        data-testid=\"secretStorage-vaultToken\"\n        outlined\n        dense\n        append-icon=\"mdi-lock\"\n      ></v-text-field>\n\n      <v-text-field\n        v-else\n        v-model=\"item.secret\"\n        :label=\"secretStorage === 'env' ? $t('Env var name') : $t('Path to the file')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('envvar_required')]\"\n        required\n        data-testid=\"secretStorage-vaultTokenSource\"\n        outlined\n        dense\n      ></v-text-field>\n    </div>\n\n    <div v-else-if=\"item.type === 'dvls'\">\n      <v-checkbox\n        class=\"pt-0 mb-2\"\n        style=\"margin-top: -5px\"\n        v-model=\"item.params.insecure_tls\"\n        label=\"Skip TLS certificate verification (insecure)\"\n        :disabled=\"formSaving\"\n      />\n\n      <v-text-field\n        v-model=\"item.params.vault_id\"\n        :label=\"$t('Vault ID')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('key_required')]\"\n        required\n        data-testid=\"secretStorage-dvlsKey\"\n        outlined\n        dense\n      ></v-text-field>\n\n      <v-text-field\n        v-model=\"item.params.app_key\"\n        :label=\"$t('App Key')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('key_required')]\"\n        required\n        data-testid=\"secretStorage-dvlsKey\"\n        outlined\n        dense\n      ></v-text-field>\n\n      <div class=\"d-flex justify-space-between align-center\">\n        <b style=\"font-size: 13px; margin-left: 5px\">App secret</b>\n        <v-btn-toggle v-model=\"secretStorage\" tile group mandatory>\n          <v-btn value=\"database\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\">\n            Store in DB\n          </v-btn>\n          <v-btn value=\"env\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\"> From ENV </v-btn>\n          <v-btn value=\"file\" small class=\"mr-0 mt-0\" style=\"border-radius: 4px\"> From File </v-btn>\n        </v-btn-toggle>\n      </div>\n\n      <v-text-field\n        v-if=\"secretStorage === 'database'\"\n        class=\"TextInput TextInput--no-legend masked-secret-input\"\n        v-model=\"item.secret\"\n        :label=\"$t('Secret')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('secret_required')]\"\n        required\n        data-testid=\"secretStorage-dvlsSecret\"\n        outlined\n        dense\n        append-icon=\"mdi-lock\"\n      ></v-text-field>\n\n      <v-text-field\n        v-else\n        class=\"TextInput TextInput--no-legend\"\n        v-model=\"item.secret\"\n        :label=\"secretStorage === 'env' ? $t('Env var name') : $t('Path to the file')\"\n        :disabled=\"formSaving\"\n        :rules=\"[(v) => !!v || itemId !== 'new' || $t('envvar_required')]\"\n        required\n        data-testid=\"secretStorage-dvlsEnv\"\n        outlined\n        dense\n      ></v-text-field>\n    </div>\n\n    <v-checkbox v-model=\"item.readonly\" :label=\"$t('Read only')\" :disabled=\"formSaving\" />\n\n    <v-btn\n        text\n        color=\"primary\"\n        @click=\"syncSettingsDialog = true\"\n        :disabled=\"formSaving\"\n        style=\"margin-bottom: -70px; margin-left: -12px;\"\n    >\n      <v-icon left>mdi-cog-sync</v-icon>\n      Sync paths ({{ item.params.sync_paths.length }})\n    </v-btn>\n\n    <v-dialog v-model=\"syncSettingsDialog\" max-width=\"500\" persistent>\n      <v-card>\n        <v-card-title>Sync paths</v-card-title>\n        <v-card-text class=\"pt-4 pb-0\">\n          <SecretStorageSyncOptionsForm v-model=\"item.params.sync_paths\" />\n        </v-card-text>\n        <v-card-actions>\n          <v-spacer />\n          <v-btn text color=\"blue darken-1\" @click=\"syncSettingsDialog = false\">\n            {{ $t('close') }}\n          </v-btn>\n        </v-card-actions>\n      </v-card>\n    </v-dialog>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport SecretStorageSyncOptionsForm from '@/components/SecretStorageSyncOptionsForm.vue';\n\nexport default {\n  components: { SecretStorageSyncOptionsForm },\n\n  props: {\n    itemType: String,\n  },\n\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      secretStorage: 'database',\n      secretStorageReady: false,\n      syncSettingsDialog: false,\n    };\n  },\n\n  methods: {\n    getNewItem() {\n      return {\n        params: {\n          sync_paths: [],\n        },\n      };\n    },\n\n    afterLoadData() {\n      if (!this.item.params) {\n        this.item.params = {};\n      }\n\n      if (!this.item.params.sync_paths) {\n        this.$set(this.item.params, 'sync_paths', []);\n      }\n\n      if (this.itemId === 'new') {\n        this.item.type = this.itemType;\n      }\n\n      this.secretStorageReady = false;\n      this.secretStorage = this.item.source_storage_type || 'database';\n      this.$nextTick(() => {\n        this.secretStorageReady = true;\n      });\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/secret_storages`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/secret_storages/${this.itemId}`;\n    },\n  },\n\n  watch: {\n    secretStorage(value, oldValue) {\n      this.item.source_storage_type = value === 'database' ? undefined : value;\n\n      if (!this.secretStorageReady || value === oldValue) {\n        return;\n      }\n\n      this.item.secret = '';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SecretStorageSyncOptionsForm.vue",
    "content": "<template>\n  <div>\n    <v-alert text v-if=\"!paths || paths.length === 0\">\n      {{ $t('No sync paths are defined.') }}\n    </v-alert>\n    <div v-for=\"(p, i) in paths\" :key=\"i\" class=\"d-flex align-start mb-4\">\n      <div style=\"flex: 1; min-width: 0\" class=\"mb-2\">\n        <v-text-field\n          class=\"mb-2\"\n          v-model=\"p.path\"\n          :label=\"$t('path')\"\n          outlined\n          dense\n          @input=\"emitPaths\"\n          hide-details\n        />\n\n        <div class=\"d-flex\" style=\"gap: 8px\">\n          <v-text-field\n            v-model=\"p.separator\"\n            :label=\"$t('separator')\"\n            outlined\n            dense\n            style=\"flex: 1\"\n            @input=\"emitPaths\"\n            hide-details\n          />\n          <v-text-field\n            v-model=\"p.prefix\"\n            :label=\"$t('prefix')\"\n            outlined\n            dense\n            style=\"flex: 1\"\n            @input=\"emitPaths\"\n            hide-details\n          />\n        </div>\n      </div>\n\n      <v-btn icon class=\"ml-1 mt-1\" @click=\"removePath(i)\">\n        <v-icon>mdi-delete</v-icon>\n      </v-btn>\n    </div>\n\n    <v-btn\n      text\n      color=\"primary\"\n      @click=\"addPath\"\n      style=\"position: absolute; left: 12px; bottom: 12px\"\n    >\n      <v-icon left>mdi-plus</v-icon>\n      Add path\n    </v-btn>\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    value: {\n      type: Array,\n      default: () => [],\n    },\n  },\n\n  data() {\n    return {\n      paths: [],\n    };\n  },\n\n  created() {\n    this.paths = this.value && this.value.length ? this.value.map((p) => ({ ...p })) : [];\n  },\n\n  watch: {\n    value(val) {\n      if (JSON.stringify(val) !== JSON.stringify(this.paths)) {\n        this.paths = (val || []).map((p) => ({ ...p }));\n      }\n    },\n  },\n\n  methods: {\n    emitPaths() {\n      this.$emit(\n        'input',\n        this.paths.map((p) => ({ ...p })),\n      );\n    },\n\n    addPath() {\n      this.paths.push({ path: '', separator: '', prefix: '' });\n      this.emitPaths();\n    },\n\n    removePath(index) {\n      this.paths.splice(index, 1);\n      this.emitPaths();\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SingleLineEditable.vue",
    "content": "<template>\n  <div>\n    <v-icon small class=\"pr-1\">mdi-message-outline</v-icon>\n\n    <span\n      key=\"placeholder\"\n      v-if=\"!editable\"\n      class=\"SingleLineEditable__content\"\n      :class=\"{\n        'SingleLineEditable__content--placeholder': !value,\n      }\"\n    >{{ value || placeholder || $t('empty') }}</span>\n\n    <span\n      key=\"content\"\n      v-else\n      ref=\"editableDiv\"\n      :contenteditable=\"true\"\n      class=\"SingleLineEditable__editable\"\n      @paste=\"handlePaste\"\n      @keypress=\"handleKeypress\"\n    >{{ value }}</span>\n\n    <v-btn\n      icon @click=\"edit()\"\n      small\n      v-if=\"canEdit && !editable\"\n      class=\"ml-1 SingleLineEditable__button\"\n    >\n      <v-icon>mdi-pencil</v-icon>\n    </v-btn>\n\n    <v-btn\n      icon\n      @click=\"save()\"\n      v-if=\"editable\"\n      class=\"ml-2 SingleLineEditable__button\"\n      small\n    >\n      <v-icon color=\"green\">mdi-check</v-icon>\n    </v-btn>\n\n    <v-btn\n      icon\n      @click=\"cancel()\"\n      v-if=\"editable\"\n      class=\"SingleLineEditable__button\"\n      small\n    >\n      <v-icon color=\"red\">mdi-close</v-icon>\n    </v-btn>\n  </div>\n</template>\n<style lang=\"scss\" scoped>\n  .SingleLineEditable__editable {\n    min-width: 50px;\n    outline: none;\n    background-color: rgba(128, 128, 128, 0.4);\n    border-radius: 4px;\n    padding: 2px 5px;\n  }\n\n  .SingleLineEditable__content {\n    padding: 2px 5px;\n  }\n\n  .SingleLineEditable__content--placeholder {\n    color: grey;\n  }\n\n  .SingleLineEditable__button {\n    margin-bottom: -7px;\n    margin-top: -10px;\n  }\n</style>\n<script>\nexport default {\n  props: {\n    value: String,\n    placeholder: String,\n    canEdit: Boolean,\n  },\n  data() {\n    return {\n      editable: false,\n    };\n  },\n  watch: {\n    value(newVal) {\n      if (this.$refs.editableDiv.innerText !== newVal) {\n        this.$refs.editableDiv.innerText = newVal || '';\n      }\n    },\n  },\n  methods: {\n\n    handlePaste(e) {\n      if (!this.editable) {\n        return;\n      }\n      e.preventDefault();\n      const text = (e.clipboardData || window.clipboardData).getData('text');\n      document.execCommand('insertText', false, text.replace(/\\n/g, ' '));\n    },\n\n    edit() {\n      this.editable = true;\n      setTimeout(() => {\n        this.$refs.editableDiv.focus({ preventScroll: true });\n      }, 100);\n    },\n\n    save() {\n      this.editable = false;\n      this.$emit('input', this.$refs.editableDiv.innerText);\n      this.$emit('save');\n    },\n\n    cancel() {\n      this.$refs.editableDiv.innerText = this.value;\n      this.editable = false;\n    },\n\n    handleKeypress(e) {\n      if (!this.editable) {\n        return;\n      }\n      if (e.key === 'Enter') {\n        e.preventDefault();\n        this.save();\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SubscriptionForm.vue",
    "content": "<template>\n  <v-form ref=\"form\" lazy-validation v-model=\"formValid\" v-if=\"item != null\">\n    <v-alert\n      :value=\"formError\"\n      :type=\"(formError || '').includes('already activated') ? 'warning' : 'error'\"\n      >{{ formError }}\n    </v-alert>\n\n    <div v-if=\"showProUser\" style=\"margin-bottom: 30px\">\n      <v-alert class=\"mb-3\" type=\"success\">\n        <span> Congrats! You are now using a Pro subscription. </span>\n      </v-alert>\n\n      <div style=\"margin: 20px 0; font-size: 16px\">\n        Are you want to make your current user <strong>Pro</strong>?\n      </div>\n\n      <div>\n        <v-btn\n          @click=\"showProUser = false\"\n          color=\"primary\"\n          :disabled=\"formSaving\"\n          style=\"width: calc(50% - 5px); margin-right: 10px\"\n        >\n          No\n        </v-btn>\n        <v-btn\n          @click=\"makeProUser\"\n          color=\"primary\"\n          :disabled=\"formSaving\"\n          style=\"width: calc(50% - 5px)\"\n        >\n          Yes\n        </v-btn>\n      </div>\n    </div>\n\n    <div v-else style=\"margin-bottom: 30px; position: relative\">\n      <div\n        v-if=\"item.state === 'active'\"\n        style=\"line-height: 1.3; font-weight: bold; color: rgb(0, 188, 0)\"\n        class=\"mb-5\"\n      >\n        You {{ item.plan.startsWith('enterprise_') ? 'Enterprise' : 'PRO' }} subscription is active.\n      </div>\n      <div v-else style=\"line-height: 1.3\">\n        Enter your subscription key to unlock advanced features, or get a new one instantly.\n      </div>\n\n      <v-textarea\n        class=\"mt-4\"\n        rows=\"4\"\n        auto-grow\n        v-model=\"item.key\"\n        label=\"Enter your PRO or EE key\"\n        :rules=\"[(v) => !!v || $t('key_required')]\"\n        required\n        :disabled=\"formSaving || item.managed_by_config\"\n        outlined\n        dense\n      ></v-textarea>\n\n      <v-menu offset-y v-if=\"item.state === 'active'\">\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n            color=\"primary\"\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            fab\n            small\n            style=\"position: absolute; top: 15px; right: -15px\"\n          >\n            <v-icon>mdi-dots-horizontal</v-icon>\n          </v-btn>\n        </template>\n\n        <v-list>\n          <v-list-item link @click=\"reloadToken\">\n            <v-list-item-icon>\n              <v-icon>mdi-refresh</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Reload</v-list-item-title>\n          </v-list-item>\n          <v-list-item link @click=\"uploadKeyFile\">\n            <v-list-item-icon>\n              <v-icon>mdi-upload</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Upload</v-list-item-title>\n          </v-list-item>\n          <v-list-item link @click=\"resetToken\">\n            <v-list-item-icon>\n              <v-icon>mdi-delete</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Reset</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n\n      <v-btn\n        v-else\n        color=\"primary\"\n        v-bind=\"attrs\"\n        v-on=\"on\"\n        fab\n        small\n        style=\"position: absolute; top: 30px; right: -15px\"\n        @click=\"uploadKeyFile()\"\n      >\n        <v-icon>mdi-upload</v-icon>\n      </v-btn>\n\n      <v-row>\n        <v-col>\n          <v-btn\n            @click=\"save\"\n            style=\"width: 100%\"\n            color=\"success\"\n            :disabled=\"formSaving || item.managed_by_config\"\n          >\n            <v-progress-circular\n              v-if=\"formSaving\"\n              indeterminate\n              color=\"white\"\n              :size=\"24\"\n            ></v-progress-circular>\n            <span v-else>Activate New Key</span>\n          </v-btn>\n        </v-col>\n        <v-col>\n          <v-btn\n            style=\"width: 100%\"\n            color=\"primary\"\n            :disabled=\"formSaving\"\n            target=\"_blank\"\n            href=\"https://portal.semaphoreui.com/buy_pro?utm_source=app\"\n            >Buy Pro</v-btn\n          >\n        </v-col>\n      </v-row>\n\n      <v-btn\n        v-if=\"item.state !== 'active'\"\n        style=\"width: 100%\"\n        color=\"primary\"\n        class=\"mt-4\"\n        :disabled=\"formSaving\"\n        target=\"_blank\"\n        outlined\n        href=\"https://portal.semaphoreui.com/start_trial?utm_source=app\"\n      >\n        Get 30-day free trial\n      </v-btn>\n    </div>\n\n    <v-card v-if=\"item.plan\" class=\"mb-3\" style=\"background: var(--highlighted-card-bg-color)\">\n      <v-card-title>Plan &amp; status</v-card-title>\n      <v-card-text class=\"pb-2\">\n        <v-list class=\"py-0 pb-5\" style=\"background: unset\" v-if=\"item.company\">\n          <v-list-item class=\"pa-0\">\n            <v-list-item-content class=\"py-0\">\n              <v-list-item-title>Subscription holder</v-list-item-title>\n              <v-list-item-subtitle>{{ item.company }}</v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n\n        <v-row>\n          <v-col class=\"py-0\">\n            <v-list class=\"py-0\" style=\"background: unset\">\n              <v-list-item class=\"pa-0\">\n                <v-list-item-content>\n                  <v-list-item-title>Plan</v-list-item-title>\n                  <v-list-item-subtitle>{{ item.plan }}</v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\">\n                <v-list-item-content>\n                  <v-list-item-title>Expires at</v-list-item-title>\n                  <v-list-item-subtitle>{{ item.expiresAt }}</v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\" v-if=\"item.nodes\">\n                <v-list-item-content>\n                  <v-list-item-title>Nodes</v-list-item-title>\n                  <v-list-item-subtitle>\n                    {{ item.nodes_used }} / {{ item.nodes }}\n                  </v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\" v-if=\"item.runners < 100000\">\n                <v-list-item-content>\n                  <v-list-item-title>Project runners</v-list-item-title>\n                  <v-list-item-subtitle>\n                    {{ item.runners_used }} / {{ item.runners }}\n                  </v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n            </v-list>\n          </v-col>\n          <v-col class=\"py-0\">\n            <v-list class=\"py-0\" style=\"background: unset\">\n              <v-list-item class=\"pa-0\">\n                <v-list-item-content>\n                  <v-list-item-title>Status</v-list-item-title>\n                  <v-list-item-subtitle style=\"display: flex; align-items: center\">\n                    <div\n                      style=\"\n                        border-radius: 100px;\n                        width: 8px;\n                        height: 8px;\n                        background: #00bc00;\n                        margin-right: 5px;\n                        margin-top: 1px;\n                      \"\n                    ></div>\n                    <div>{{ item.state }}</div>\n                  </v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\" v-if=\"item.users < 100000\">\n                <v-list-item-content>\n                  <v-list-item-title>Pro users</v-list-item-title>\n                  <v-list-item-subtitle>{{ item.used }} / {{ item.users }}</v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\" v-if=\"item.terraform_states < 100000\">\n                <v-list-item-content>\n                  <v-list-item-title>Terraform backends</v-list-item-title>\n                  <v-list-item-subtitle>\n                    {{ item.terraform_states_used }} / {{ item.terraform_states }}\n                  </v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n              <v-list-item class=\"pa-0\" v-if=\"item.uis\">\n                <v-list-item-content>\n                  <v-list-item-title>UIs</v-list-item-title>\n                  <v-list-item-subtitle>\n                    {{ item.uis_used }} / {{ item.uis }}\n                  </v-list-item-subtitle>\n                </v-list-item-content>\n              </v-list-item>\n            </v-list>\n          </v-col>\n        </v-row>\n\n        <div style=\"margin-top: 20px; font-weight: bold; color: #00bc00\">\n          Renews in {{ (new Date() - new Date(item.expiresAt)) | formatMilliseconds }}\n          <span>(if auto-renew is activated)</span>\n        </div>\n      </v-card-text>\n    </v-card>\n\n    <div v-else class=\"mb-4 mt-2\">\n      <div>\n        Need help?\n        <a\n          target=\"_blank\"\n          class=\"LinkHoverable\"\n          href=\"https://portal.semaphoreui.com/auth/login?new_project=premium\"\n          >Contact support</a\n        >\n      </div>\n    </div>\n  </v-form>\n</template>\n<style lang=\"scss\">\n.LinkHoverable {\n  text-decoration: none;\n  &:hover {\n    text-decoration: underline;\n  }\n}\n</style>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport { getErrorMessage } from '@/lib/error';\nimport axios from 'axios';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      tab: 0,\n      showProUser: false,\n    };\n  },\n\n  computed: {\n    isNew() {\n      return false;\n    },\n\n    statusColor() {\n      switch (this.item.state) {\n        case 'expired':\n          return 'error';\n        case 'active':\n          return 'success';\n        default:\n          return '';\n      }\n    },\n  },\n\n  methods: {\n    uploadKeyFile() {\n      const input = document.createElement('input');\n      input.type = 'file';\n      input.accept = '.txt,.key,.pem,.lic';\n      input.onchange = (e) => {\n        const file = e.target.files[0];\n        if (file) {\n          const reader = new FileReader();\n          reader.onload = (event) => {\n            this.item.key = event.target.result.trim();\n          };\n          reader.readAsText(file);\n        }\n      };\n      input.click();\n    },\n\n    async resetToken() {\n      this.formError = null;\n      this.formSaving = true;\n      try {\n        await axios.delete('/api/subscription');\n        await this.loadData();\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n      } finally {\n        this.formSaving = false;\n      }\n    },\n    async reloadToken() {\n      this.formError = null;\n      this.formSaving = true;\n      try {\n        await axios.post('/api/subscription/refresh');\n        await this.loadData();\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n      } finally {\n        this.formSaving = false;\n      }\n    },\n    afterLoadData() {\n      if (this.item.error) {\n        this.formError = this.item.error;\n      }\n    },\n\n    async makeProUser() {\n      try {\n        const user = (await axios.get('/api/user')).data;\n        user.pro = true;\n        await axios.put(`/api/users/${user.id}`, user);\n        await this.loadData();\n        this.$emit('save', {\n          item: this.item,\n          action: 'edit',\n        });\n        this.showProUser = false;\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n      }\n    },\n\n    async afterSave() {\n      await this.loadData();\n      const user = (await axios.get('/api/user')).data;\n      this.showProUser = this.item.used < this.item.users && !user.pro;\n    },\n\n    getItemsUrl() {\n      return '/api/subscription';\n    },\n\n    getSingleItemUrl() {\n      return '/api/subscription';\n    },\n\n    getRequestOptions() {\n      return {\n        method: 'post',\n        url: '/api/subscription',\n      };\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SubscriptionLabel.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n    <span\n        style=\"\n        background: #f14668;\n        color: white;\n        margin-left: 20px;\n        padding: 2px 8px 2px;\n        border-radius: 6px;\n        font-size: 16px;\n        transform: translateY(-2px);\n        display: inline-block;\n        \"\n    >\n        <v-icon\n        color=\"white\"\n        style=\"transform: scale(1.1) translateY(-1px)\"\n        >\n        mdi-professional-hexagon\n        </v-icon> Subscription\n    </span>\n</template>\n<script>\nexport default {\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SurveyVars.vue",
    "content": "<template>\n  <div class=\"pb-6\" style=\"margin-top: -10px;\">\n    <v-dialog\n      v-model=\"editDialog\"\n      hide-overlay\n      width=\"400\"\n    >\n      <v-card :color=\"$vuetify.theme.dark ? '#212121' : 'white'\">\n        <v-card-title></v-card-title>\n        <v-card-text class=\"pb-0\">\n          <v-form\n            ref=\"form\"\n            lazy-validation\n            v-if=\"editedVar != null\"\n          >\n            <v-alert\n              :value=\"formError\"\n              color=\"error\"\n            >{{ formError }}\n            </v-alert>\n\n            <v-text-field\n              :label=\"$t('name2')\"\n              v-model.trim=\"editedVar.name\"\n              :rules=\"[(v) => !!v || $t('name_required')]\"\n              required\n            />\n\n            <v-text-field\n              :label=\"$t('title')\"\n              v-model=\"editedVar.title\"\n              :rules=\"[(v) => !!v || $t('title_required')]\"\n              required\n            />\n\n            <v-text-field\n              :label=\"$t('description')\"\n              v-model=\"editedVar.description\"\n              required\n            />\n\n            <v-select\n              v-model=\"editedVar.type\"\n              :label=\"$t('type')\"\n              :items=\"varTypes\"\n              item-value=\"id\"\n              item-text=\"name\"\n            ></v-select>\n\n            <v-data-table\n              v-if=\"editedVar.type === 'enum'\"\n              :items=\"editedValues\"\n              :items-per-page=\"-1\"\n              class=\"elevation-1 FieldTable\"\n              hide-default-footer\n              :no-data-text=\"$t('noValues')\"\n            >\n              <template v-slot:item=\"props\">\n                <tr>\n                  <td class=\"pa-1\">\n                    <v-text-field\n                      solo-inverted\n                      flat\n                      hide-details\n                      v-model=\"props.item.name\"\n                      :label=\"$t('matchKey')\"\n                      class=\"v-text-field--solo--no-min-height\"\n                    ></v-text-field>\n                  </td>\n                  <td class=\"pa-1\">\n                    <v-text-field\n                      solo-inverted\n                      flat\n                      hide-details\n                      v-model=\"props.item.value\"\n                      :label=\"$t('matchValue')\"\n                      class=\"v-text-field--solo--no-min-height\"\n                    ></v-text-field>\n                  </td>\n                  <td style=\"width: 38px;\">\n                    <v-icon\n                      small\n                      class=\"pa-1\"\n                      @click=\"removeEditedVarValue(props.item)\"\n                    >\n                      mdi-delete\n                    </v-icon>\n                  </td>\n                </tr>\n              </template>\n            </v-data-table>\n\n            <div class=\"text-right mt-2\">\n              <v-btn\n                color=\"primary\"\n                v-if=\"editedVar.type === 'enum'\"\n                @click=\"addEditedVarValue()\"\n              >Add Value</v-btn>\n            </div>\n\n            <v-select\n              v-if=\"editedVar.type === 'enum'\"\n              v-model=\"editedVar.default_value\"\n              :label=\"$t('default_value')\"\n              :items=\"editedValues\"\n              item-value=\"value\"\n              item-text=\"name\"\n              clearable\n            ></v-select>\n\n            <v-text-field\n              type=\"number\"\n              v-else-if=\"editedVar.type === 'int'\"\n              :label=\"$t('default_value')\"\n              v-model=\"editedVar.default_value\"\n            />\n\n            <v-text-field\n              v-else-if=\"editedVar.type !== 'secret'\"\n              :label=\"$t('default_value')\"\n              v-model=\"editedVar.default_value\"\n            />\n\n            <v-checkbox\n              :label=\"$t('required')\"\n              v-model=\"editedVar.required\"\n            />\n          </v-form>\n        </v-card-text>\n        <v-card-actions>\n          <v-spacer></v-spacer>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"editDialog = false\"\n          >\n            {{ $t('cancel') }}\n          </v-btn>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"saveVar()\"\n          >\n            {{ editedVarIndex == null ? $t('add') : $t('save') }}\n          </v-btn>\n        </v-card-actions>\n      </v-card>\n    </v-dialog>\n    <fieldset style=\"padding: 0 10px 2px 10px;\n                        border-width: 1px;\n                        border-color: rgba(133, 133, 133, 0.4);\n                        background-color: rgba(133, 133, 133, 0.1);\n                     border-radius: 8px;\n                     font-size: 12px;\"\n    >\n      <legend style=\"padding: 0 3px;\">{{ $t('surveyVariables') }}</legend>\n      <v-chip-group column style=\"margin-top: -4px;\">\n        <draggable\n          v-model=\"modifiedVars\"\n          @end=\"onDragEnd\"\n          :animation=\"200\"\n          class=\"d-flex flex-wrap\"\n          ghost-class=\"chip-ghost\"\n        >\n          <v-chip\n            v-for=\"(v, i) in modifiedVars\"\n            close\n            @click:close=\"deleteVar(i)\"\n            :key=\"v.name\"\n            @click=\"editVar(i)\"\n            :color=\"v.type === 'int' ? '#61e2ff' : 'gray'\"\n            class=\"draggable-chip\"\n          >\n            {{ v.title }}\n          </v-chip>\n        </draggable>\n        <v-chip @click=\"editVar(null)\">\n          + <span class=\"ml-1\" v-if=\"modifiedVars.length === 0\">{{ $t('addVariable') }}</span>\n        </v-chip>\n      </v-chip-group>\n    </fieldset>\n  </div>\n</template>\n<style lang=\"scss\">\n.draggable-chip {\n  cursor: grab;\n\n  &:active {\n    cursor: grabbing;\n  }\n}\n\n.chip-ghost {\n  opacity: 0.5;\n}\n</style>\n<script>\nimport draggable from 'vuedraggable';\n\nexport default {\n  components: {\n    draggable,\n  },\n  props: {\n    vars: Array,\n  },\n  watch: {\n    vars(val) {\n      this.var = val || [];\n    },\n  },\n\n  created() {\n    this.modifiedVars = (this.vars || []).map((v) => ({ ...v }));\n  },\n\n  data() {\n    return {\n      editDialog: null,\n      editedVar: null,\n      editedValues: [],\n      editedVarIndex: null,\n      modifiedVars: null,\n      varTypes: [{\n        id: '',\n        name: 'String',\n      }, {\n        id: 'int',\n        name: 'Integer',\n      }, {\n        id: 'secret',\n        name: 'Secret',\n      }, {\n        id: 'enum',\n        name: 'Enum',\n      }],\n      formError: null,\n    };\n  },\n  methods: {\n    addEditedVarValue() {\n      this.editedValues.push({\n        name: '',\n        value: '',\n      });\n    },\n\n    removeEditedVarValue(val) {\n      const i = this.editedValues.findIndex((v) => v.name === val.name);\n      if (i > -1) {\n        this.editedValues.splice(i, 1);\n      }\n    },\n\n    editVar(index) {\n      this.editedVar = index != null ? { ...this.modifiedVars[index] } : {};\n\n      this.editedValues = [];\n      this.editedValues.push(...(this.editedVar.values || []));\n      this.editedVar.values = this.editedValues;\n\n      this.editedVarIndex = index;\n\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n\n      this.editDialog = true;\n    },\n\n    saveVar() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        return;\n      }\n\n      if (this.editedVar.type === 'enum') {\n        if (this.editedValues.length === 0) {\n          this.formError = 'Enumeration must have values.';\n          return;\n        }\n\n        const uniq = new Set(this.editedValues.map((v) => v.name));\n\n        if (this.editedValues.length !== uniq.size) {\n          this.formError = 'Enumeration values must have unique names.';\n          return;\n        }\n\n        this.editedValues.forEach((v) => {\n          if (v.name === '') {\n            this.formError = 'Value name cannot be empty.';\n          }\n        });\n\n        if (this.formError != null) {\n          return;\n        }\n      } else {\n        this.editedVar.values = [];\n      }\n\n      if (this.editedVarIndex != null) {\n        this.modifiedVars[this.editedVarIndex] = this.editedVar;\n      } else {\n        this.modifiedVars.push(this.editedVar);\n      }\n\n      this.editDialog = false;\n      this.editedVar = null;\n      this.$emit('change', this.modifiedVars);\n    },\n\n    deleteVar(index) {\n      this.modifiedVars.splice(index, 1);\n      this.$emit('change', this.modifiedVars);\n    },\n\n    onDragEnd() {\n      this.$emit('change', this.modifiedVars);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SystemInfoDialog.vue",
    "content": "<template>\n  <v-dialog></v-dialog>\n</template>\n<script>\nexport default {\n\n};\n</script>\n"
  },
  {
    "path": "web/src/components/SystemSettingsDialog.vue",
    "content": "<template>\n  <v-dialog></v-dialog>\n</template>\n<script>\nexport default {\n\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TableSettingsSheet.vue",
    "content": "<template>\n  <PageBottomSheet v-model=\"sheet\" v-if=\"settings\">\n    <h4>{{ $t('columns') }}</h4>\n    <div class=\"d-flex flex-row flex-wrap\">\n      <v-checkbox\n        class=\"mr-6\"\n        v-for=\"(header) in headers.filter((header) => header.value !== 'actions')\"\n        :key=\"header.value\"\n        :label=\"header.text\"\n        v-model=\"settings.columns[header.value].visible\"\n        @change=\"saveSettings()\"\n      />\n    </div>\n  </PageBottomSheet>\n</template>\n\n<script>\nimport PageBottomSheet from '@/components/PageBottomSheet.vue';\n\nexport default {\n  props: {\n    value: Boolean,\n    tableName: String,\n    headers: Array,\n  },\n\n  components: { PageBottomSheet },\n\n  data() {\n    return {\n      sheet: false,\n      settings: null,\n    };\n  },\n\n  watch: {\n    async sheet(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.sheet = val;\n    },\n    headers() {\n      this.loadSettings();\n    },\n  },\n\n  created() {\n    this.loadSettings();\n  },\n\n  methods: {\n    saveSettings() {\n      localStorage.setItem(`${this.tableName}__settings`, JSON.stringify(this.settings));\n      this.loadSettings();\n    },\n    loadSettings() {\n      if (localStorage.getItem(`${this.tableName}__settings`)) {\n        this.settings = JSON.parse(\n          localStorage.getItem(`${this.tableName}__settings`),\n        );\n      } else {\n        this.settings = {\n          columns: {},\n        };\n      }\n\n      this.headers.forEach((header) => {\n        if (!this.settings.columns[header.value]) {\n          this.settings.columns[header.value] = {\n            visible: true,\n          };\n        }\n      });\n\n      this.$emit('change', {\n        settings: this.settings,\n        headers: this.headers.filter((header) => {\n          const column = this.settings.columns[header.value];\n          return !column || column.visible;\n        }),\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskDetails.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div class=\"pb-3\">\n    <v-row>\n      <v-col cols=\"12\" md=\"6\">\n        <v-card\n          v-if=\"template\"\n          :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n          style=\"background: #8585850f\"\n        >\n          <v-card-title>Template info</v-card-title>\n          <v-card-text>\n            <v-simple-table class=\"TaskDetails__table\">\n              <template v-slot:default>\n                <tbody>\n                <tr>\n                  <td><b>App</b></td>\n                  <td>{{ getAppTitle(template.app) }}</td>\n                </tr>\n                <tr>\n                  <td><b>Template</b></td>\n                  <td>\n                    <RouterLink :to=\"`/project/${projectId}/templates/${template.id}`\">\n                      {{ template.name }}\n                    </RouterLink>\n                  </td>\n                </tr>\n                </tbody>\n              </template>\n            </v-simple-table>\n          </v-card-text>\n        </v-card>\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\">\n        <v-card\n          v-if=\"item.commit_hash\"\n          :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n          style=\"background: #8585850f\"\n        >\n          <v-card-title>Commit info</v-card-title>\n\n          <v-card-text>\n            <v-simple-table class=\"TaskDetails__table\">\n              <template v-slot:default>\n                <tbody>\n                <tr>\n                  <td><b>Message</b></td>\n                  <td>{{ item.commit_message }}</td>\n                </tr>\n                <tr>\n                  <td><b>Hash</b></td>\n                  <td>{{ item.commit_hash }}</td>\n                </tr>\n                </tbody>\n              </template>\n            </v-simple-table>\n          </v-card-text>\n        </v-card>\n      </v-col>\n    </v-row>\n\n    <v-row>\n      <v-col cols=\"12\" md=\"6\">\n        <v-card\n          :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n          style=\"background: #8585850f\"\n          class=\"mb-5\"\n        >\n          <v-card-title>Running info</v-card-title>\n          <v-card-text>\n            <v-simple-table class=\"pa-0 TaskDetails__table\">\n              <template v-slot:default>\n                <tbody>\n                <tr>\n                  <td><b>Message</b></td>\n                  <td>{{ item.message || '—' }}</td>\n                </tr>\n                <tr v-if=\"item.user_id != null\">\n                  <td><b>{{ $t('author') }}</b></td>\n                  <td>{{ user?.name || '—' }}</td>\n                </tr>\n                <tr v-else-if=\"item.integration_id != null\">\n                  <td><b>{{ $t('integration') }}</b></td>\n                  <td>{{ item.integration_id }}</td>\n                </tr>\n                <tr v-else-if=\"item.schedule_id != null\">\n                  <td><b>{{ $t('schedule') }}</b></td>\n                  <td>{{ item.schedule_id }}</td>\n                </tr>\n                <tr>\n                  <td><b>{{ $t('created') }}</b></td>\n                  <td>{{ item.created | formatDate }}</td>\n                </tr>\n                <tr>\n                  <td><b>{{ $t('started') }}</b></td>\n                  <td>{{ item.start | formatDate }}</td>\n                </tr>\n                <tr>\n                  <td><b>{{ $t('end') }}</b></td>\n                  <td>{{ item.end | formatDate }}</td>\n                </tr>\n                <tr>\n                  <td><b>{{ $t('duration') }}</b></td>\n                  <td>{{ [item.start, item.end] | formatMilliseconds }}</td>\n                </tr>\n                </tbody>\n              </template>\n            </v-simple-table>\n          </v-card-text>\n        </v-card>\n      </v-col>\n      <v-col cols=\"12\" md=\"6\">\n        <v-card\n          v-if=\"item?.params\"\n          :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n          style=\"background: #8585850f\"\n          class=\"mb-5\"\n        >\n          <v-card-title>Task parameters</v-card-title>\n          <v-card-text>\n            <v-simple-table class=\"pa-0 TaskDetails__table\">\n              <template v-slot:default>\n                <tbody>\n                <tr>\n                  <td><b>Branch</b></td>\n                  <td>\n                    {{ item.get_branch || '—' }}\n                  </td>\n                </tr>\n                <tr>\n                  <td><b>Limit</b></td>\n                  <td>\n                    <span v-if=\"Array.isArray(item.params.limit) && item.params.limit.length > 0\">\n                      {{ item.params.limit.join(', ') }}</span>\n                    <span v-else>'No'</span>\n                  </td>\n                </tr>\n                <tr>\n                  <td><b>Debug</b></td>\n                  <td>\n                    {{ item.params.debug ? 'Yes' : 'No' }}\n                  </td>\n                </tr>\n                <tr>\n                  <td><b>Debug level</b></td>\n                  <td>{{ item.params.debug_level || '—' }}</td>\n                </tr>\n                <tr>\n                  <td><b>Diff</b> <code>--diff</code></td>\n                  <td>{{ item.params.diff ? 'Yes' : 'No' }}</td>\n                </tr>\n                <tr>\n                  <td><b>Dry run</b> <code>--check</code></td>\n                  <td>{{ item.params.dry_run ? 'Yes' : 'No' }}</td>\n                </tr>\n                <tr>\n                  <td><b>Environment</b></td>\n                  <td>\n                    {{ !item.environment || item.environment === '{}' ? '—' : item.environment }}\n                  </td>\n                </tr>\n                </tbody>\n              </template>\n            </v-simple-table>\n          </v-card-text>\n        </v-card>\n      </v-col>\n    </v-row>\n  </div>\n</template>\n\n<style lang=\"scss\">\n.TaskDetails__table {\n  background-color: transparent !important;\n  .v-data-table__wrapper {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n}\n\n</style>\n\n<script>\n\nimport ProjectMixin from '@/components/ProjectMixin';\nimport AppsMixin from '@/components/AppsMixin';\n\nexport default {\n  props: {\n    item: Object,\n    user: Object,\n    projectId: Number,\n  },\n\n  mixins: [ProjectMixin, AppsMixin],\n\n  data() {\n    return {\n      template: null,\n    };\n  },\n\n  watch: {\n    async item() {\n      if (this.item?.template_id !== this.template?.id) {\n        await this.loadData();\n      }\n    },\n  },\n\n  computed: {},\n\n  async created() {\n    await this.loadData();\n  },\n\n  methods: {\n    async loadData() {\n      this.template = await this.loadProjectResource('templates', this.item.template_id);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"isLoaded()\"\n    @submit.prevent=\"save()\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-alert\n      color=\"blue\"\n      dark\n      dismissible\n      dense\n      @input=\"item.commit_hash=null\"\n      v-model=\"hasCommit\"\n      class=\"overflow-hidden mt-2\"\n    >\n      <div\n        style=\"font-weight: bold;\"\n      >\n        <v-icon small>mdi-source-fork</v-icon>\n        {{ (item.commit_hash || '').substr(0, 10) }}\n      </div>\n      <div v-if=\"sourceTask && sourceTask.commit_message\">\n        {{ sourceTask.commit_message.substring(0, 50) }}\n      </div>\n    </v-alert>\n\n    <v-autocomplete\n      v-if=\"buildTasks != null && template.type === 'deploy'\"\n      v-model=\"item.build_task_id\"\n      :label=\"$t('buildVersion')\"\n      :items=\"buildTasks\"\n      item-value=\"id\"\n      :item-text=\"(itm) => getTaskMessage(itm)\"\n      :rules=\"[v => !!v || $t('build_version_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    />\n\n    <v-skeleton-loader\n      v-else-if=\"template.type === 'deploy'\"\n      type=\"card\"\n      height=\"54\"\n      style=\"margin-bottom: 16px; margin-top: 4px;\"\n    ></v-skeleton-loader>\n\n    <v-text-field\n      v-model=\"item.message\"\n      :label=\"$t('messageOptional')\"\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    />\n\n    <div v-for=\"(v) in template.survey_vars || []\" :key=\"v.name\">\n\n      <v-text-field\n        v-if=\"v.type === 'secret'\"\n        :label=\"v.title\"\n        :hint=\"v.description\"\n        v-model=\"editedSecretEnvironment[v.name]\"\n        :required=\"v.required\"\n        class=\"masked-secret-input\"\n        :rules=\"[\n            val => !v.required || !!val || v.title + $t('isRequired'),\n          ]\"\n        outlined\n        dense\n      />\n\n      <v-select\n        clearable\n        v-else-if=\"v.type === 'enum'\"\n        :label=\"v.title + (v.required ? ' *' : '')\"\n        :hint=\"v.description\"\n        v-model=\"editedEnvironment[v.name]\"\n        :required=\"v.required\"\n        :rules=\"[\n          val => !v.required || val != null || v.title + ' ' + $t('isRequired')\n        ]\"\n        :items=\"v.values\"\n        item-text=\"name\"\n        item-value=\"value\"\n        outlined\n        dense\n      />\n\n      <v-text-field\n        v-else\n        :label=\"v.title + (v.required ? ' *' : '')\"\n        :hint=\"v.description\"\n        v-model=\"editedEnvironment[v.name]\"\n        :required=\"v.required\"\n        :rules=\"[\n          val => !v.required || !!val || v.title + ' ' + $t('isRequired'),\n          val => !val || v.type !== 'int' || /^\\d+$/.test(val) ||\n          v.title + ' ' + $t('mustBeInteger'),\n        ]\"\n        outlined\n        dense\n      />\n    </div>\n\n    <v-text-field\n      v-model=\"git_branch\"\n      :label=\"fieldLabel('branch')\"\n      outlined\n      dense\n      required\n      :disabled=\"formSaving\"\n      v-if=\"\n        needField('allow_override_branch')\n        && template.allow_override_branch_in_task\"\n    />\n\n    <v-autocomplete\n      v-model=\"inventory_id\"\n      :label=\"fieldLabel('inventory')\"\n      :items=\"inventory\"\n      item-value=\"id\"\n      item-text=\"name\"\n      outlined\n      dense\n      required\n      :disabled=\"formSaving\"\n      v-if=\"inventory != null && needInventory\"\n    ></v-autocomplete>\n\n    <v-skeleton-loader\n      v-else-if=\"needInventory\"\n      type=\"card\"\n      height=\"46\"\n      style=\"margin-bottom: 16px; margin-top: 4px;\"\n    ></v-skeleton-loader>\n\n    <TaskParamsAnsibleForm\n      v-if=\"template.app === 'ansible'\"\n      v-model=\"item.params\"\n      :app=\"template.app\"\n      :template-params=\"template.task_params || {}\"\n    />\n\n    <TaskParamsTerraformForm\n      v-else-if=\"['terraform', 'tofu', 'terragrunt'].includes(template.app)\"\n      v-model=\"item.params\"\n      :app=\"template.app\"\n      :template-params=\"template.task_params || {}\"\n    />\n\n    <ArgsPicker\n      v-if=\"template.allow_override_args_in_task\"\n      :vars=\"args\"\n      title=\"CLI args\"\n      @change=\"setArgs\"\n    />\n\n  </v-form>\n</template>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport ArgsPicker from '@/components/ArgsPicker.vue';\nimport AppFieldsMixin from '@/components/AppFieldsMixin';\nimport TaskParamsAnsibleForm from '@/components/TaskParamsAnsibleForm.vue';\nimport TaskParamsTerraformForm from '@/components/TaskParamsTerraformForm.vue';\n\nexport default {\n  mixins: [ItemFormBase, AppFieldsMixin],\n\n  props: {\n    template: Object,\n    sourceTask: Object,\n  },\n\n  components: {\n    TaskParamsAnsibleForm,\n    TaskParamsTerraformForm,\n    ArgsPicker,\n  },\n\n  data() {\n    return {\n      buildTasks: null,\n      hasCommit: null,\n      editedEnvironment: null,\n      editedSecretEnvironment: null,\n      cmOptions: {\n        tabSize: 2,\n        mode: 'application/json',\n        lineNumbers: true,\n        line: true,\n        lint: true,\n        indentWithTabs: false,\n      },\n      inventory: null,\n    };\n  },\n\n  computed: {\n    needInventory() {\n      return this.needField('inventory') && this.template.task_params?.allow_override_inventory;\n    },\n\n    args() {\n      let res = this.item.arguments;\n\n      if (res == null) {\n        res = this.template.arguments;\n      }\n\n      if (res == null) {\n        res = '[]';\n      }\n\n      return JSON.parse(res);\n    },\n\n    app() {\n      return this.template.app;\n    },\n\n    inventory_id: {\n      get() {\n        return (this.item || {}).inventory_id || this.template.inventory_id;\n      },\n      set(newValue) {\n        this.item.inventory_id = newValue;\n      },\n    },\n\n    git_branch: {\n      get() {\n        return (this.item || {}).git_branch || this.template.git_branch;\n      },\n      set(newValue) {\n        this.item.git_branch = newValue;\n      },\n    },\n  },\n\n  watch: {\n    needReset(val) {\n      if (val) {\n        if (this.item) {\n          this.item.template_id = this.template.id;\n        }\n        this.buildTasks = null;\n        this.inventory = null;\n        // this.template = null;\n      }\n    },\n\n    template(val) {\n      if (this.item) {\n        this.item.template_id = val?.id;\n      }\n    },\n\n    sourceTask(val) {\n      this.assignItem(val);\n    },\n\n    hasCommit(val) {\n      if (val == null) {\n        this.commit_hash = null;\n      }\n    },\n  },\n\n  created() {\n    this.refreshItem();\n  },\n\n  methods: {\n\n    setArgs(args) {\n      this.item.arguments = JSON.stringify(args || []);\n    },\n\n    getTaskMessage(task) {\n      let buildTask = task;\n\n      while (buildTask.version == null && buildTask.build_task != null) {\n        buildTask = buildTask.build_task;\n      }\n\n      if (!buildTask) {\n        return '';\n      }\n\n      return buildTask.version + (buildTask.message ? ` — ${buildTask.message}` : '');\n    },\n\n    assignItem(val) {\n      const v = val || {};\n\n      if (this.item == null) {\n        this.item = {};\n      }\n\n      Object.keys(v).forEach((field) => {\n        this.item[field] = v[field];\n      });\n\n      this.editedEnvironment = JSON.parse(v.environment || '{}');\n      this.editedSecretEnvironment = JSON.parse(v.secret || '{}');\n      this.hasCommit = v.commit_hash != null;\n    },\n\n    isLoaded() {\n      return this.item != null && this.template != null;\n    },\n\n    beforeSave() {\n      this.item.environment = JSON.stringify(this.editedEnvironment);\n      this.item.secret = JSON.stringify(this.editedSecretEnvironment);\n    },\n\n    refreshItem() {\n      this.assignItem(this.sourceTask);\n\n      this.item.template_id = this.template.id;\n\n      if (!this.item.params) {\n        this.item.params = {};\n      }\n\n      ['tags', 'limit', 'skip_tags'].forEach((param) => {\n        if (!this.item.params[param]) {\n          this.item.params[param] = (this.template.task_params || {})[param];\n        }\n      });\n    },\n\n    async afterLoadData() {\n      this.refreshItem();\n\n      [\n        this.buildTasks,\n        this.inventory,\n      ] = await Promise.all([\n\n        this.template.type === 'deploy' ? (await axios({\n          keys: 'get',\n          url: `/api/project/${this.projectId}/templates/${this.template.build_template_id}/tasks?status=success&limit=20`,\n          responseType: 'json',\n        })).data.filter((task) => task.status === 'success') : [],\n\n        this.needInventory ? (await axios({\n          keys: 'get',\n          url: this.getInventoryUrl(),\n          responseType: 'json',\n        })).data : [],\n      ]);\n\n      if (this.item.build_task_id == null\n        && this.buildTasks.length > 0\n        && this.buildTasks.length > 0) {\n        this.item.build_task_id = this.buildTasks[0].id;\n      }\n\n      ['tags', 'limit', 'skip_tags'].forEach((param) => {\n        if (!this.item.params[param]) {\n          this.item.params[param] = (this.template.task_params || {})[param];\n        }\n      });\n\n      const defaultVars = (this.template.survey_vars || [])\n        .filter((s) => s.default_value)\n        .reduce((res, curr) => ({\n          ...res,\n          [curr.name]: curr.default_value,\n        }), {});\n\n      this.editedEnvironment = {\n        ...defaultVars,\n        ...this.editedEnvironment,\n      };\n    },\n\n    getInventoryUrl() {\n      let res = `/api/project/${this.projectId}/inventory?app=${this.app}`;\n      switch (this.app) {\n        case 'terraform':\n        case 'tofu':\n          res += `&template_id=${this.template.id}`;\n          break;\n        default:\n          break;\n      }\n      return res;\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/tasks`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskLink.vue",
    "content": "<template>\n  <span>\n    <v-icon\n        v-if=\"status != null\"\n        small\n        class=\"mr-1\"\n        :color=\"statusColor\"\n    >\n      mdi-{{ statusIcon }}\n    </v-icon>\n\n    <span v-if=\"disabled\">{{ label }}</span>\n\n    <v-tooltip\n        v-else\n        right\n        max-width=\"350\"\n        transition=\"fade-transition\"\n        :disabled=\"!tooltip\"\n    >\n      <template v-slot:activator=\"{ on, attrs }\">\n        <a\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            @click=\"showTaskLog()\"\n            :class=\"{'task-link-with-tooltip': tooltip}\"\n        >\n          {{ label }}\n        </a>\n      </template>\n\n      <span>{{ tooltip }}</span>\n\n    </v-tooltip>\n  </span>\n</template>\n<style lang=\"scss\">\n\n@import '~vuetify/src/styles/settings/_colors.scss';\n\n.task-link-with-tooltip {\n  text-decoration: underline !important;\n  text-decoration-style: dashed !important;\n  text-decoration-color: gray !important;\n}\n\na.task-link-with-tooltip {\n  &:hover {\n    text-decoration-style: solid !important;\n    text-decoration-color: map-deep-get($blue, 'darken-2') !important;\n  }\n}\n\n</style>\n<script>\nimport EventBus from '@/event-bus';\n\nexport default {\n  props: {\n    label: String,\n    tooltip: String,\n    taskId: Number,\n    disabled: Boolean,\n    status: String,\n  },\n  computed: {\n    statusColor() {\n      switch (this.status) {\n        case 'success':\n          return 'success';\n        case 'error':\n          return 'red';\n        default:\n          return 'gray';\n      }\n    },\n    statusIcon() {\n      switch (this.status) {\n        case 'success':\n          return 'check';\n        case 'error':\n          return 'close';\n        default:\n          return 'clock-time-three-outline';\n      }\n    },\n  },\n  methods: {\n    showTaskLog() {\n      EventBus.$emit('i-show-task', {\n        taskId: this.taskId,\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskList.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"tasks != null\">\n\n    <NewTaskDialog\n      v-model=\"newTaskDialog\"\n      :project-id=\"template.project_id\"\n      :template=\"template\"\n      :source-task=\"sourceTask\"\n    />\n\n    <v-data-table\n        :headers=\"headers\"\n        :items=\"tasks\"\n        :hide-default-footer=\"hideFooter\"\n        :footer-props=\"{ itemsPerPageOptions: [20] }\"\n        class=\"mt-0 TaskListTable\"\n    >\n      <template v-slot:item.id=\"{ item }\">\n        <TaskLink\n            :task-id=\"item.id\"\n            :label=\"'#' + item.id\"\n        />\n        <div style=\"font-size: 14px;\">\n          <span v-if=\"item.message\">\n            <v-icon x-small>mdi-message-outline</v-icon> {{ item.message }}\n          </span>\n          <span v-else-if=\"item.commit_hash\">\n            <v-icon x-small>mdi-source-fork</v-icon> {{ item.commit_message }}\n          </span>\n        </div>\n      </template>\n\n      <template v-slot:item.version=\"{ item }\">\n        <div v-if=\"item.tpl_type !== ''\">\n          <TaskLink\n              :disabled=\"item.tpl_type === 'build'\"\n              :task-id=\"item.build_task_id\"\n              :tooltip=\"item.tpl_type === 'build' ? item.message : (item.build_task || {}).message\"\n              :label=\"item.tpl_type === 'build' ? item.version : (item.build_task || {}).version\"\n              :status=\"item.status\"\n          />\n        </div>\n        <div v-else>&mdash;</div>\n      </template>\n\n      <template v-slot:item.status=\"{ item }\">\n        <TaskStatus :status=\"item.status\"/>\n      </template>\n\n      <template v-slot:item.start=\"{ item }\">\n        {{ item.start | formatDate }}\n      </template>\n\n      <template v-slot:item.end=\"{ item }\">\n        {{ [item.start, item.end] | formatMilliseconds }}\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"createTask(item)\">\n            <v-icon>mdi-replay</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<style lang=\"scss\">\n.TaskListTable td {\n  height: 60px !important;\n}\n</style>\n<script>\nimport axios from 'axios';\nimport TaskStatus from '@/components/TaskStatus.vue';\nimport TaskLink from '@/components/TaskLink.vue';\nimport { TEMPLATE_TYPE_ACTION_TITLES, TEMPLATE_TYPE_ICONS } from '@/lib/constants';\nimport NewTaskDialog from '@/components/NewTaskDialog.vue';\n\nexport default {\n  components: {\n    NewTaskDialog,\n    TaskStatus,\n    TaskLink,\n  },\n  props: {\n    template: Object,\n    limit: Number,\n    hideFooter: Boolean,\n  },\n  data() {\n    return {\n      headers: [\n        {\n          text: this.$i18n.t('taskId'),\n          value: 'id',\n          sortable: false,\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n        {\n          text: this.$i18n.t('version'),\n          value: 'version',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('status'),\n          value: 'status',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('user'),\n          value: 'user_name',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('start'),\n          value: 'start',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('duration'),\n          value: 'end',\n          sortable: false,\n        },\n      ],\n      tasks: null,\n      taskId: null,\n      newTaskDialog: null,\n      sourceTask: null,\n      TEMPLATE_TYPE_ICONS,\n    };\n  },\n  watch: {\n    async template() {\n      await this.loadData();\n    },\n  },\n  async created() {\n    await this.loadData();\n  },\n  methods: {\n    async loadData() {\n      this.tasks = null;\n      this.tasks = (await axios({\n        method: 'get',\n        url: `/api/project/${this.template.project_id}/templates/${this.template.id}/tasks/last?limit=${this.limit || 200}`,\n        responseType: 'json',\n      })).data;\n    },\n\n    getActionButtonTitle() {\n      return this.$i18n.t(`Re${TEMPLATE_TYPE_ACTION_TITLES[this.template.type]}`);\n    },\n\n    createTask(task) {\n      this.sourceTask = task;\n      this.newTaskDialog = true;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskLogDialog.vue",
    "content": "<template>\n  <EditDialog\n    v-model=\"dialog\"\n    :max-width=\"1000\"\n    :hide-buttons=\"true\"\n    :expandable=\"true\"\n    no-body-paddings\n    @close=\"onClose()\"\n    test-id=\"taskLogDialog\"\n  >\n    <template v-slot:title={}>\n      <div class=\"text-truncate\" style=\"max-width: calc(100% - 36px);\">\n        <v-skeleton-loader\n          v-if=\"template == null\"\n          type=\"button\"\n          style=\"display: inline-block; margin-right: 10px;\"\n        ></v-skeleton-loader>\n        <router-link\n          v-else\n          class=\"breadcrumbs__item breadcrumbs__item--link\"\n          :to=\"`/project/${projectId}/templates/${template ? template.id : null}`\"\n          @click=\"close()\"\n        >{{ template ? template.name : null }}</router-link>\n        <v-icon>mdi-chevron-right</v-icon>\n        <span class=\"breadcrumbs__item\">{{ $t('task', {expr: item ? item.id : null}) }}</span>\n      </div>\n    </template>\n    <template v-slot:form=\"{}\">\n\n      <TaskLogView\n        v-if=\"item != null\"\n        :project-id=\"projectId\"\n        :item=\"item\"\n        :system-info=\"systemInfo\"\n      />\n\n      <v-skeleton-loader\n        class=\"task-log-view__placeholder\"\n        v-else\n        type=\"\n            table-heading,\n            image,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line\"\n      ></v-skeleton-loader>\n    </template>\n  </EditDialog>\n</template>\n<style lang=\"scss\">\n.task-log-view__placeholder {\n  margin-left: 24px;\n  margin-right: 24px;\n  height: calc(100dvh - 208px);\n}\n</style>\n<script>\nimport TaskLogView from '@/components/TaskLogView.vue';\nimport EditDialog from '@/components/EditDialog.vue';\nimport ProjectMixin from '@/components/ProjectMixin';\n\nexport default {\n  components: { EditDialog, TaskLogView },\n\n  mixins: [ProjectMixin],\n\n  props: {\n    value: Boolean,\n    projectId: Number,\n    itemId: Number,\n    systemInfo: Object,\n  },\n\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.item = null;\n      this.template = null;\n      this.dialog = val;\n      await this.loadData();\n    },\n\n    async itemId() {\n      await this.loadData();\n    },\n  },\n\n  data() {\n    return {\n      item: null,\n      dialog: null,\n      template: null,\n    };\n  },\n\n  methods: {\n    close() {\n      this.dialog = false;\n      this.item = null;\n      this.template = null;\n      this.onClose();\n    },\n\n    async loadData() {\n      if (this.itemId == null) {\n        return;\n      }\n      this.item = await this.loadProjectResource('tasks', this.itemId);\n      this.template = await this.loadProjectResource('templates', this.item.template_id);\n    },\n\n    onClose() {\n      this.$emit('close');\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskLogView.vue",
    "content": "<template>\n  <div\n    class=\"task-log-view\"\n    :class=\"{'task-log-view--with-message': item.message || item.commit_message}\"\n  >\n    <div class=\"px-5 task-log-view__message\">\n      <span\n        v-if=\"item.message\"\n        class=\"mr-3\"\n      >\n        <v-icon small>mdi-message-outline</v-icon>\n        {{ item.message }}\n      </span>\n\n      <span\n        class=\"d-inline-block\"\n        v-if=\"item.commit_message\"\n      >\n        <v-icon small>mdi-source-fork</v-icon>\n        {{ item.commit_message }}\n      </span>\n    </div>\n\n    <div\n      class=\"overflow-auto text-no-wrap px-5 task-log-view__status\"\n    >\n      <TaskStatus :status=\"item.status\" data-testid=\"task-status\" />\n\n      <span class=\"ml-3 hidden-xs-only task-log-view__status_part\">\n\n        Started <span v-if=\"user\">by <b>{{ user.name }}</b></span>\n\n        at <b>{{ item.start | formatDate }}</b>\n      </span>\n\n      <span class=\"ml-3 hidden-sm-and-down task-log-view__status_part\">\n        <v-icon\n          small style=\"transform: translateY(-1px)\">mdi-clock-outline</v-icon>\n        {{ [item.start, item.end] | formatMilliseconds }}\n      </span>\n    </div>\n\n    <v-tabs class=\"task-log-view__tabs\" right v-model=\"tab\">\n      <v-tab>Log</v-tab>\n      <v-tab :disabled=\"!isTaskStopped\">Details</v-tab>\n      <v-tab v-if=\"isPro\" :disabled=\"!isTaskStopped\">Summary</v-tab>\n    </v-tabs>\n\n    <div v-if=\"tab === 0\">\n      <VirtualList\n        class=\"task-log-records\"\n        :data-key=\"'id'\"\n        :data-sources=\"output\"\n        :data-component=\"itemComponent\"\n        :estimate-size=\"22\"\n        :keeps=\"100\"\n        ref=\"records\"\n      >\n        <div class=\"task-log-records__record\" v-for=\"record in output\" :key=\"record.id\">\n          <div class=\"task-log-records__time\">\n            {{ record.time | formatTime }}\n          </div>\n          <div class=\"task-log-records__output\" v-html=\"$options.filters.formatLog(record.output)\">\n          </div>\n        </div>\n      </VirtualList>\n\n      <v-btn\n        color=\"success\"\n        class=\"task-log-action-button\"\n        style=\"right: 260px; width: 70px;\"\n        v-if=\"item.status === 'waiting_confirmation'\"\n        @click=\"confirmTask()\"\n      >\n        <v-icon>mdi-check</v-icon>\n      </v-btn>\n\n      <v-btn\n        color=\"warning\"\n        class=\"task-log-action-button\"\n        style=\"right: 180px; width: 70px;\"\n        v-if=\"item.status === 'waiting_confirmation'\"\n        @click=\"rejectTask()\"\n      >\n        <v-icon>mdi-close</v-icon>\n      </v-btn>\n\n      <v-btn\n        color=\"error\"\n        class=\"task-log-action-button\"\n        style=\"right: 20px; width: 150px;\"\n        v-if=\"canStop\"\n        @click=\"stopTask(item.status === 'stopping')\"\n      >\n        {{ item.status === 'stopping' ? $t('forceStop') : $t('stop') }}\n      </v-btn>\n\n      <v-btn\n        v-if=\"isTaskStopped\"\n        color=\"blue-grey\"\n        :href=\"rawLogURL\"\n        class=\"task-log-action-button\"\n        style=\"right: 20px; width: 150px;\"\n        target=\"_blank\"\n        data-testid=\"task-rawLog\"\n      >{{ $t('raw_log') }}\n      </v-btn>\n    </div>\n\n    <div v-else-if=\"tab === 1\">\n      <v-divider style=\"margin-top: -1px;\" />\n\n      <v-container fluid class=\"py-0 px-5 overflow-auto pt-4\">\n        <TaskDetails :item=\"item\" :user=\"user\" :project-id=\"projectId\" />\n      </v-container>\n    </div>\n\n    <div v-else-if=\"tab === 2\">\n      <v-divider style=\"margin-top: -1px;\" />\n\n      <AnsibleStageView\n        :premium-features=\"systemInfo.premium_features\"\n        :project-id=\"projectId\"\n        :task-id=\"itemId\"\n      />\n    </div>\n\n  </div>\n</template>\n\n<style lang=\"scss\">\n\n@import '~vuetify/src/styles/settings/_variables';\n\n$card-title-height: 68px;\n\n$task-log-message-offset: -18px;\n$task-log-message-height: 40px;\n$task-log-message-height-total: $task-log-message-height + $task-log-message-offset;\n\n$task-log-status-height: 32px;\n$task-log-status-offset: -40px;\n$task-log-tabs-height: 48px;\n\n$task-log-status-tab-height:\n  $task-log-tabs-height +\n  $task-log-status-offset +\n  $task-log-status-height;\n\n.task-log-view__message {\n  display: none;\n  margin-top: $task-log-message-offset;\n  height: $task-log-message-height;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.task-log-view__status {\n  height: $task-log-status-height;\n  margin-bottom: $task-log-status-offset;\n}\n\n.task-log-view__status_part {\n  padding: 6px 10px;\n  border-radius: 6px;\n  background-color: var(--highlighted-card-bg-color);\n}\n\n.task-log-view__tabs {\n  height: $task-log-tabs-height;\n}\n\n.task-log-action-button {\n  position: absolute;\n  bottom: 10px;\n}\n\n.task-log-records {\n  background: black;\n  color: white;\n  height: calc(90dvh - #{$card-title-height + $task-log-status-tab-height});\n  overflow: auto;\n  font-family: monospace;\n  margin: 0;\n  padding: 5px 10px 50px;\n}\n\n.task-log-view--with-message .task-log-view__message {\n  display: block;\n}\n\n.task-log-view--with-message .task-log-records {\n  height: calc(90dvh -\n    #{$card-title-height + $task-log-message-height-total + $task-log-status-tab-height});\n}\n\n.v-dialog--fullscreen {\n\n  .task-log-records {\n    height: calc(100dvh - #{$card-title-height + $task-log-status-tab-height});\n  }\n\n  .task-log-view--with-message .task-log-records {\n    height: calc(100dvh -\n      #{$card-title-height + $task-log-message-height-total + $task-log-status-tab-height});\n  }\n}\n\n.task-log-records__record {\n  display: flex;\n  flex-direction: row;\n  justify-content: left;\n}\n\n.task-log-records__time {\n  width: 120px;\n  min-width: 120px;\n}\n\n.task-log-records__output {\n  width: 100%;\n  white-space: pre-wrap;\n}\n\n</style>\n<script>\nimport axios from 'axios';\nimport TaskStatus from '@/components/TaskStatus.vue';\nimport socket from '@/socket';\nimport VirtualList from 'vue-virtual-scroll-list';\nimport TaskLogViewRecord from '@/components/TaskLogViewRecord.vue';\nimport ProjectMixin from '@/components/ProjectMixin';\nimport AnsibleStageView from '@/components/AnsibleStageView.vue';\nimport TaskDetails from '@/components/TaskDetails.vue';\n\nexport default {\n  components: {\n    TaskDetails, AnsibleStageView, TaskStatus, VirtualList,\n  },\n\n  mixins: [ProjectMixin],\n\n  props: {\n    item: Object,\n    projectId: Number,\n    systemInfo: Object,\n    premiumFeatures: null,\n  },\n\n  data() {\n    return {\n      tab: 0,\n      itemComponent: TaskLogViewRecord,\n      output: [],\n      outputBuffer: [],\n      user: {},\n      autoScroll: true,\n      // stages: null,\n    };\n  },\n\n  watch: {\n    async itemId() {\n      this.reset();\n      await this.loadData();\n    },\n\n    async projectId() {\n      this.reset();\n      await this.loadData();\n    },\n\n    // async tab() {\n    //   if (this.tab === 1) {\n    //     this.stages = await this.loadProjectEndpoint(`/tasks/${this.itemId}/stages`);\n    //   }\n    // },\n  },\n\n  computed: {\n    itemId() {\n      return this.item?.id;\n    },\n\n    isTaskStopped() {\n      return [\n        'stopped',\n        'error',\n        'success',\n        'canceled',\n        'rejected',\n      ].includes(this.item.status);\n    },\n\n    rawLogURL() {\n      return `${this.systemInfo?.web_host || ''}/api/project/${this.projectId}/tasks/${this.itemId}/raw_output`;\n    },\n\n    canStop() {\n      return [\n        'running',\n        'stopping',\n        'waiting',\n        'starting',\n        'waiting_confirmation',\n        'confirmed',\n        'rejected',\n      ].includes(this.item.status);\n    },\n\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n  },\n\n  async created() {\n    this.outputInterval = setInterval(() => {\n      this.$nextTick(() => {\n        const len = this.outputBuffer.length;\n        if (len === 0) {\n          return;\n        }\n\n        const scrollContainer = this.$refs.records?.$el;\n        if (!scrollContainer) {\n          return;\n        }\n\n        // Check if the current position is already at the bottom\n        const currentScrollTop = scrollContainer.scrollTop;\n        const maxScrollTop = scrollContainer.scrollHeight - scrollContainer.clientHeight;\n\n        // Add a new item to the list\n        this.output.push(...this.outputBuffer.splice(0, len));\n\n        // If the user is already at the bottom, keep it scrolled to the bottom\n        // Otherwise, maintain the current scroll position\n        this.$nextTick(() => {\n          if (Math.abs(currentScrollTop - maxScrollTop) <= 1) {\n            // User is at the bottom, scroll to the bottom\n            scrollContainer.scrollTop = scrollContainer.scrollHeight;\n          } else {\n            // User is not at the bottom, preserve current scroll position\n            scrollContainer.scrollTop = currentScrollTop;\n          }\n        });\n      });\n    }, 1000);\n    socket.addListener((data) => this.onWebsocketDataReceived(data));\n    await this.loadData();\n  },\n\n  beforeDestroy() {\n    clearInterval(this.outputInterval);\n  },\n\n  methods: {\n    async confirmTask() {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/tasks/${this.itemId}/confirm`,\n        responseType: 'json',\n        data: {},\n      });\n    },\n\n    async rejectTask() {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/tasks/${this.itemId}/reject`,\n        responseType: 'json',\n        data: {},\n      });\n    },\n\n    async stopTask(force) {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/tasks/${this.itemId}/stop`,\n        responseType: 'json',\n        data: {\n          force,\n        },\n      });\n    },\n\n    reset() {\n      this.output = [];\n      this.outputBuffer = [];\n      this.outputInterval = null;\n      this.user = {};\n    },\n\n    onWebsocketDataReceived(data) {\n      if (data.project_id !== this.projectId || data.task_id !== this.itemId) {\n        return;\n      }\n\n      switch (data.type) {\n        case 'update':\n          Object.assign(this.item, {\n            ...data,\n            type: undefined,\n          });\n          break;\n        case 'log':\n          this.outputBuffer.push({\n            ...data,\n            id: data.time + data.output,\n          });\n          break;\n        default:\n          break;\n      }\n    },\n\n    async loadData() {\n      [\n        this.output,\n        this.user,\n      ] = await Promise.all([\n\n        (await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/tasks/${this.itemId}/output`,\n          responseType: 'json',\n        })).data.map((item) => ({\n          ...item,\n          id: item.time + item.output,\n        })),\n\n        this.item.user_id ? (await axios({\n          method: 'get',\n          url: `/api/users/${this.item.user_id}`,\n          responseType: 'json',\n        })).data : null,\n      ]);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskLogViewRecord.vue",
    "content": "<template>\n  <div class=\"task-log-records__record\">\n    <div class=\"task-log-records__time\">\n      {{ source.time | formatTime }}\n    </div>\n    <div class=\"task-log-records__output\" v-html=\"$options.filters.formatLog(source.output)\">\n    </div>\n  </div>\n</template>\n<script>\nexport default {\n  props: {\n    index: { // index of current item\n      type: Number,\n    },\n    source: { // here is: {uid: 'unique_1', text: 'abc'}\n      type: Object,\n      default() {\n        return {};\n      },\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskParamsAnsibleForm.vue",
    "content": "<template>\n  <div>\n\n    <ArgsPicker\n      v-if=\"templateParams.allow_override_limit\"\n      :vars=\"params.limit\"\n      @change=\"setLimit\"\n      :title=\"$t('limit')\"\n      :arg-title=\"$t('limit')\"\n      :add-arg-title=\"$t('addLimit')\"\n    />\n\n    <ArgsPicker\n      v-if=\"templateParams.allow_override_tags\"\n      :vars=\"params.tags\"\n      @change=\"setTags\"\n      :title=\"$t('tags')\"\n      :arg-title=\"$t('tags')\"\n      :add-arg-title=\"$t('addTag')\"\n    />\n\n    <ArgsPicker\n      v-if=\"templateParams.allow_override_skip_tags\"\n      :vars=\"params.skip_tags\"\n      @change=\"setSkipTags\"\n      :title=\"$t('skipTags')\"\n      :arg-title=\"$t('tag')\"\n      :add-arg-title=\"$t('addSkippedTag')\"\n    />\n\n    <v-row no-gutters>\n      <v-col v-if=\"templateParams.allow_debug\">\n        <v-checkbox\n          class=\"mt-0\"\n          :input-value=\"params.debug\"\n          v-model=\"params.debug\"\n          @change=\"updateValue('debug', $event)\"\n          hide-details\n        >\n          <template v-slot:label>\n            <div class=\"text-no-wrap\">\n              {{ $t('debug') }} <code>-{{ 'v'.repeat(params.debug_level || 4) }}</code>\n            </div>\n          </template>\n        </v-checkbox>\n        <v-slider\n          :disabled=\"!params.debug\"\n          class=\"ml-7 mb-2\"\n          style=\"max-width: 100px;\"\n          v-model=\"params.debug_level\"\n          @change=\"updateValue('debug_level', $event)\"\n          step=\"1\"\n          min=\"1\"\n          max=\"6\"\n          hide-details\n        ></v-slider>\n      </v-col>\n      <v-col>\n        <v-checkbox\n          class=\"mt-0\"\n          :input-value=\"params.dry_run\"\n          @change=\"updateValue('dry_run', $event)\"\n        >\n          <template v-slot:label>\n            <div class=\"text-no-wrap\">{{ $t('dryRun') }} <code>--check</code></div>\n          </template>\n        </v-checkbox>\n      </v-col>\n      <v-col>\n        <v-checkbox\n          class=\"mt-0\"\n          :input-value=\"params.diff\"\n          @change=\"updateValue('diff', $event)\"\n        >\n          <template v-slot:label>\n            <div class=\"text-no-wrap\">{{ $t('diff') }} <code>--diff</code></div>\n          </template>\n        </v-checkbox>\n      </v-col>\n    </v-row>\n  </div>\n</template>\n\n<style lang=\"scss\">\n\n</style>\n\n<script>\n\nimport ArgsPicker from '@/components/ArgsPicker.vue';\n\nconst APP_PARAMS = {\n  ansible: [\n    'diff',\n    'debug',\n    'debug_level',\n    'dry_run',\n    'tags',\n    'skip_tags',\n    'limit',\n  ],\n};\n\nexport default {\n  components: { ArgsPicker },\n  props: {\n    value: Object,\n    app: String,\n    templateParams: Object,\n  },\n\n  watch: {\n    value(val) {\n      this.params = val;\n    },\n  },\n\n  data() {\n    return {\n      params: {\n        debug_level: 4,\n      },\n    };\n  },\n\n  created() {\n    this.params = {\n      ...this.value,\n      debug_level: this.value.debug_level || 4,\n    };\n  },\n\n  methods: {\n\n    setSkipTags(tags) {\n      this.updateValue('skip_tags', tags);\n    },\n\n    setTags(tags) {\n      this.updateValue('tags', tags);\n    },\n\n    setLimit(limit) {\n      this.updateValue('limit', limit);\n    },\n\n    updateValue(prop, value) {\n      this.params[prop] = value;\n\n      let input = { ...this.params, [prop]: value };\n\n      if (APP_PARAMS[this.app]) {\n        input = (APP_PARAMS[this.app] || []).reduce((res, param) => ({\n          ...res,\n          [param]: input[param],\n        }), {});\n      }\n\n      this.$emit('input', input);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskParamsForm.vue",
    "content": "<template>\n  <div>\n    <v-text-field\n        v-model=\"item.message\"\n        :label=\"$t('messageOptional')\"\n        outlined\n        dense\n    />\n\n    <div v-for=\"(v) in template.survey_vars || []\" :key=\"v.name\">\n\n      <v-text-field\n          v-if=\"v.type === 'secret'\"\n          :label=\"v.title\"\n          :hint=\"v.description\"\n          v-model=\"editedSecretEnvironment[v.name]\"\n          :required=\"v.required\"\n          class=\"masked-secret-input\"\n          :rules=\"[\n            val => !v.required || !!val || v.title + $t('isRequired'),\n          ]\"\n          outlined\n          dense\n      />\n\n      <v-select\n          clearable\n          v-else-if=\"v.type === 'enum'\"\n          :label=\"v.title + (v.required ? ' *' : '')\"\n          :hint=\"v.description\"\n          v-model=\"editedEnvironment[v.name]\"\n          :required=\"v.required\"\n          :rules=\"[\n          val => !v.required || val != null || v.title + ' ' + $t('isRequired')\n        ]\"\n          :items=\"v.values\"\n          item-text=\"name\"\n          item-value=\"value\"\n          outlined\n          dense\n      />\n\n      <v-text-field\n          v-else\n          :label=\"v.title + (v.required ? ' *' : '')\"\n          :hint=\"v.description\"\n          v-model=\"editedEnvironment[v.name]\"\n          :required=\"v.required\"\n          :rules=\"[\n          val => !v.required || !!val || v.title + ' ' + $t('isRequired'),\n          val => !val || v.type !== 'int' || /^\\d+$/.test(val) ||\n          v.title + ' ' + $t('mustBeInteger'),\n        ]\"\n          outlined\n          dense\n      />\n    </div>\n\n    <v-text-field\n        v-model=\"git_branch\"\n        :label=\"fieldLabel('branch')\"\n        outlined\n        dense\n        required\n        v-if=\"\n        needField('allow_override_branch')\n        && template.allow_override_branch_in_task\"\n    />\n\n    <v-autocomplete\n        v-model=\"inventory_id\"\n        :label=\"fieldLabel('inventory')\"\n        :items=\"inventory\"\n        item-value=\"id\"\n        item-text=\"name\"\n        outlined\n        dense\n        required\n        v-if=\"inventory != null && needInventory\"\n    ></v-autocomplete>\n\n    <v-skeleton-loader\n        v-else-if=\"needInventory\"\n        type=\"card\"\n        height=\"46\"\n        style=\"margin-bottom: 16px; margin-top: 4px;\"\n    ></v-skeleton-loader>\n\n    <TaskParamsAnsibleForm\n        v-if=\"template.app === 'ansible'\"\n        v-model=\"item.params\"\n        :app=\"template.app\"\n        :template-params=\"template.task_params || {}\"\n    />\n\n    <TaskParamsTerraformForm\n        v-else-if=\"['terraform', 'tofu', 'terragrunt'].includes(template.app)\"\n        v-model=\"item.params\"\n        :app=\"template.app\"\n        :template-params=\"template.task_params || {}\"\n    />\n\n    <ArgsPicker\n        v-if=\"template.allow_override_args_in_task\"\n        :vars=\"args\"\n        title=\"CLI args\"\n        @change=\"setArgs\"\n    />\n\n  </div>\n</template>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport axios from 'axios';\nimport ArgsPicker from '@/components/ArgsPicker.vue';\nimport AppFieldsMixin from '@/components/AppFieldsMixin';\nimport TaskParamsAnsibleForm from '@/components/TaskParamsAnsibleForm.vue';\nimport TaskParamsTerraformForm from '@/components/TaskParamsTerraformForm.vue';\n\nexport default {\n  mixins: [AppFieldsMixin],\n\n  props: {\n    value: Object,\n    template: Object,\n  },\n\n  components: {\n    TaskParamsAnsibleForm,\n    TaskParamsTerraformForm,\n    ArgsPicker,\n  },\n\n  data() {\n    return {\n      item: null,\n      editedEnvironment: null,\n      editedSecretEnvironment: null,\n      inventory: null,\n    };\n  },\n\n  computed: {\n    needInventory() {\n      return this.template.task_params?.allow_override_inventory;\n    },\n\n    args() {\n      let res = this.item.arguments;\n\n      if (res == null) {\n        res = this.template.arguments;\n      }\n\n      if (res == null) {\n        res = '[]';\n      }\n\n      return JSON.parse(res);\n    },\n\n    app() {\n      return this.template.app;\n    },\n\n    inventory_id: {\n      get() {\n        return (this.item || {}).inventory_id || this.template.inventory_id;\n      },\n      set(newValue) {\n        this.item.inventory_id = newValue;\n      },\n    },\n\n    git_branch: {\n      get() {\n        return (this.item || {}).git_branch || this.template.git_branch;\n      },\n      set(newValue) {\n        this.item.git_branch = newValue;\n      },\n    },\n  },\n\n  watch: {\n    editedEnvironment: {\n      handler(newVal, oldVal) {\n        if (oldVal == null) {\n          return;\n        }\n        this.item.environment = JSON.stringify(this.editedEnvironment);\n        this.$emit('input', this.item);\n      },\n      deep: true,\n      immediate: true,\n    },\n\n    editedSecretEnvironment: {\n      handler(newVal, oldVal) {\n        if (oldVal == null) {\n          return;\n        }\n        this.item.secret = JSON.stringify(this.editedSecretEnvironment);\n        this.$emit('input', this.item);\n      },\n      deep: true,\n      immediate: true,\n    },\n\n    item: {\n      handler(newVal, oldVal) {\n        if (oldVal == null) {\n          return;\n        }\n        this.$emit('input', newVal);\n      },\n      deep: true,\n      immediate: true,\n    },\n\n    needReset(val) {\n      if (val) {\n        // if (this.item) {\n        //   this.item.template_id = this.template.id;\n        // }\n        this.buildTasks = null;\n        this.inventory = null;\n        // this.template = null;\n      }\n    },\n  },\n\n  async created() {\n    await this.afterLoadData();\n  },\n\n  methods: {\n\n    setArgs(args) {\n      this.item.arguments = JSON.stringify(args || []);\n    },\n\n    assignItem(val) {\n      const v = val || {};\n\n      if (this.item == null) {\n        this.item = {};\n      }\n\n      Object.keys(v).forEach((field) => {\n        this.item[field] = v[field];\n      });\n\n      this.editedEnvironment = JSON.parse(v.environment || '{}');\n      this.editedSecretEnvironment = JSON.parse(v.secret || '{}');\n    },\n\n    isLoaded() {\n      return this.item != null && this.template != null;\n    },\n\n    refreshItem() {\n      this.assignItem(this.value);\n\n      if (!this.item.params) {\n        this.item.params = {};\n      }\n\n      ['tags', 'limit', 'skip_tags'].forEach((param) => {\n        if (!this.item.params[param]) {\n          this.item.params[param] = (this.template.task_params || {})[param];\n        }\n      });\n    },\n\n    async afterLoadData() {\n      this.refreshItem();\n\n      [\n        this.buildTasks,\n        this.inventory,\n      ] = await Promise.all([\n\n        this.template.type === 'deploy' ? (await axios({\n          keys: 'get',\n          url: `/api/project/${this.projectId}/templates/${this.template.build_template_id}/tasks?status=success&limit=20`,\n          responseType: 'json',\n        })).data.filter((task) => task.status === 'success') : [],\n\n        this.needInventory ? (await axios({\n          keys: 'get',\n          url: this.getInventoryUrl(),\n          responseType: 'json',\n        })).data : [],\n      ]);\n\n      ['tags', 'limit', 'skip_tags'].forEach((param) => {\n        if (!this.item.params[param]) {\n          this.item.params[param] = (this.template.task_params || {})[param];\n        }\n      });\n\n      const defaultVars = (this.template.survey_vars || [])\n        .filter((s) => s.default_value)\n        .reduce((res, curr) => ({\n          ...res,\n          [curr.name]: curr.default_value,\n        }), {});\n\n      this.editedEnvironment = {\n        ...defaultVars,\n        ...this.editedEnvironment,\n      };\n    },\n\n    getInventoryUrl() {\n      let res = `/api/project/${this.template.project_id}/inventory?app=${this.app}`;\n      switch (this.app) {\n        case 'terraform':\n        case 'tofu':\n          res += `&template_id=${this.template.id}`;\n          break;\n        default:\n          break;\n      }\n      return res;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskParamsTerraformForm.vue",
    "content": "<template>\n  <v-row no-gutters>\n    <v-col>\n      <v-checkbox\n        class=\"mt-0\"\n        :input-value=\"params.plan\"\n        @change=\"updateValue('plan', $event)\"\n      >\n        <template v-slot:label>\n          <div class=\"text-no-wrap\">{{ $t('Plan') }}</div>\n        </template>\n      </v-checkbox>\n    </v-col>\n\n    <v-col>\n      <v-checkbox\n        class=\"mt-0\"\n        :input-value=\"params.destroy\"\n        @change=\"updateValue('destroy', $event)\"\n      >\n        <template v-slot:label>\n          <div class=\"text-no-wrap\">{{ $t('Destroy') }} <code>-destroy</code></div>\n        </template>\n      </v-checkbox>\n    </v-col>\n\n    <v-col>\n      <v-checkbox\n        class=\"mt-0\"\n        :input-value=\"params.auto_approve\"\n        @change=\"updateValue('auto_approve', $event)\"\n      >\n        <template v-slot:label>\n          <div class=\"text-no-wrap\">{{ $t('Auto Approve') }} <code>-auto-approve</code></div>\n        </template>\n      </v-checkbox>\n    </v-col>\n\n    <v-col>\n      <v-checkbox\n        class=\"mt-0\"\n        :input-value=\"params.upgrade\"\n        @change=\"updateValue('upgrade', $event)\"\n      >\n        <template v-slot:label>\n          <div class=\"text-no-wrap\">{{ $t('Upgrade') }} <code>-upgrade</code></div>\n        </template>\n      </v-checkbox>\n    </v-col>\n\n    <v-col>\n      <v-checkbox\n        class=\"mt-0\"\n        :input-value=\"params.reconfigure\"\n        @change=\"updateValue('reconfigure', $event)\"\n      >\n        <template v-slot:label>\n          <div class=\"text-no-wrap\">{{ $t('Reconfigure') }} <code>-reconfigure</code></div>\n        </template>\n      </v-checkbox>\n    </v-col>\n  </v-row>\n</template>\n\n<style lang=\"scss\">\n\n</style>\n\n<script>\nconst TERRAFORM_APP_PARAMS = [\n  'plan',\n  'auto_approve',\n  'destroy',\n  'reconfigure',\n  'upgrade',\n];\n\nconst APP_PARAMS = {\n  terraform: TERRAFORM_APP_PARAMS,\n  tofu: TERRAFORM_APP_PARAMS,\n  terragrunt: TERRAFORM_APP_PARAMS,\n};\n\nexport default {\n  props: {\n    value: Object,\n    app: String,\n    templateParams: Object,\n  },\n\n  watch: {\n    value(val) {\n      this.params = val;\n    },\n  },\n\n  data() {\n    return {\n      params: {\n        debug_level: 4,\n      },\n    };\n  },\n\n  created() {\n    this.params = {\n      ...this.value,\n      debug_level: this.value.debug_level || 4,\n    };\n  },\n\n  methods: {\n    updateValue(prop, value) {\n      this.params[prop] = value;\n\n      let input = { ...this.params, [prop]: value };\n\n      if (APP_PARAMS[this.app]) {\n        input = (APP_PARAMS[this.app] || []).reduce((res, param) => ({\n          ...res,\n          [param]: input[param],\n        }), {});\n      }\n\n      this.$emit('input', input);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskStats.vue",
    "content": "<template>\n  <v-card style=\"background: rgba(133, 133, 133, 0.06)\" class=\"mx-4\">\n    <v-card-title>\n      Task Status\n      <v-spacer />\n      <v-select\n        hide-details\n        dense\n        :items=\"dateRanges\"\n        class=\"mr-6\"\n        style=\"max-width: 200px\"\n        v-model=\"dateRange\"\n      />\n\n      <v-select\n        hide-details\n        dense\n        :items=\"users\"\n        style=\"max-width: 200px\"\n        v-model=\"user\"\n      />\n    </v-card-title>\n    <v-card-text>\n      <LineChart :source-data=\"stats\"/>\n    </v-card-text>\n  </v-card>\n</template>\n<script>\nimport axios from 'axios';\nimport LineChart from '@/components/LineChart.vue';\n\nexport default {\n  components: { LineChart },\n\n  props: {\n    templateId: Number,\n    projectId: Number,\n  },\n\n  data() {\n    return {\n      dateRanges: [{\n        text: 'Past week',\n        value: 'last_week',\n      }, {\n        text: 'Past month',\n        value: 'last_month',\n      }, {\n        text: 'Past year',\n        value: 'last_year',\n      }],\n      users: [{\n        text: 'All users',\n        value: null,\n      }],\n      user: null,\n      stats: null,\n      dateRange: 'last_week',\n    };\n  },\n\n  computed: {\n    startDate() {\n      const date = new Date();\n\n      switch (this.dateRange) {\n        case 'last_year':\n          date.setFullYear(date.getFullYear() - 1);\n          break;\n        case 'last_month':\n          date.setDate(date.getDate() - 30);\n          break;\n        case 'last_week':\n        default:\n          date.setDate(date.getDate() - 7);\n          break;\n      }\n\n      return date.toISOString().split('T')[0];\n    },\n  },\n\n  watch: {\n    async startDate() {\n      await this.refreshData();\n    },\n    async user() {\n      await this.refreshData();\n    },\n  },\n\n  async created() {\n    await this.refreshData();\n\n    this.users = [{\n      text: 'All users',\n      value: null,\n    }, ...(await axios({\n      method: 'get',\n      url: `/api/project/${this.projectId}/users`,\n      responseType: 'json',\n    })).data.map((x) => ({\n      value: x.id,\n      text: x.name,\n    }))];\n  },\n\n  methods: {\n    async refreshData() {\n      let url;\n\n      if (this.templateId) {\n        url = `/api/project/${this.projectId}/templates/${this.templateId}/stats?start=${this.startDate}`;\n      } else {\n        url = `/api/project/${this.projectId}/stats?start=${this.startDate}`;\n      }\n\n      if (this.user) {\n        url += `&user_id=${this.user}`;\n      }\n\n      this.stats = (await axios({\n        method: 'get',\n        url,\n        responseType: 'json',\n      })).data;\n\n      const firstPoint = this.stats[0];\n\n      if (!firstPoint || firstPoint.date > this.startDate) {\n        this.stats.unshift({\n          date: this.startDate,\n          count_by_status: {\n            success: 0,\n            failed: 0,\n            stopped: 0,\n          },\n        });\n      }\n\n      const lastPoint = this.stats[this.stats.length - 1];\n\n      if (lastPoint.date < new Date().toISOString().split('T')[0]) {\n        this.stats.push({\n          date: new Date().toISOString().split('T')[0],\n          count_by_status: {\n            success: 0,\n            failed: 0,\n            stopped: 0,\n          },\n        });\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TaskStatus.vue",
    "content": "<template>\n  <v-chip v-if=\"status\" style=\"font-weight: bold;\" :color=\"getStatusColor(status)\">\n    <v-icon v-if=\"status !== 'running'\" left>{{ getStatusIcon(status) }}</v-icon>\n    <IndeterminateProgressCircular v-else style=\"margin-left: -5px;\" />\n    {{ humanizeStatus(status) }}\n  </v-chip>\n</template>\n<script>\nimport IndeterminateProgressCircular from '@/components/IndeterminateProgressCircular.vue';\n\nconst TaskStatus = Object.freeze({\n  WAITING: 'waiting',\n  STARTING: 'starting',\n  WAITING_CONFIRMATION: 'waiting_confirmation',\n  CONFIRMED: 'confirmed',\n  REJECTED: 'rejected',\n  RUNNING: 'running',\n  SUCCESS: 'success',\n  ERROR: 'error',\n  STOPPING: 'stopping',\n  STOPPED: 'stopped',\n});\n\nexport default {\n  components: { IndeterminateProgressCircular },\n  props: {\n    status: String,\n  },\n\n  methods: {\n    getStatusIcon(status) {\n      switch (status) {\n        case TaskStatus.WAITING:\n          return 'mdi-alarm';\n        case TaskStatus.STARTING:\n          return 'mdi-play-circle';\n        case TaskStatus.RUNNING:\n          return '';\n        case TaskStatus.SUCCESS:\n          return 'mdi-check-circle';\n        case TaskStatus.ERROR:\n          return 'mdi-information';\n        case TaskStatus.STOPPING:\n          return 'mdi-stop-circle';\n        case TaskStatus.STOPPED:\n          return 'mdi-stop-circle';\n        case TaskStatus.CONFIRMED:\n          return 'mdi-check-circle';\n        case TaskStatus.WAITING_CONFIRMATION:\n          return 'mdi-pause-circle';\n        default:\n          throw new Error(`Unknown task status ${status}`);\n      }\n    },\n\n    humanizeStatus(status) {\n      switch (status) {\n        case TaskStatus.WAITING:\n          return 'Waiting';\n        case TaskStatus.STARTING:\n          return 'Starting...';\n        case TaskStatus.RUNNING:\n          return 'Running';\n        case TaskStatus.SUCCESS:\n          return 'Success';\n        case TaskStatus.ERROR:\n          return 'Failed';\n        case TaskStatus.STOPPING:\n          return 'Stopping...';\n        case TaskStatus.STOPPED:\n          return 'Stopped';\n        case TaskStatus.CONFIRMED:\n          return 'Confirmed';\n        case TaskStatus.WAITING_CONFIRMATION:\n          return 'Waiting confirmation';\n        default:\n          throw new Error(`Unknown task status ${status}`);\n      }\n    },\n\n    getStatusColor(status) {\n      switch (status) {\n        case TaskStatus.WAITING:\n          return '';\n        case TaskStatus.STARTING:\n          return 'warning';\n        case TaskStatus.RUNNING:\n          return 'primary';\n        case TaskStatus.SUCCESS:\n          return 'success';\n        case TaskStatus.ERROR:\n          return 'error';\n        case TaskStatus.STOPPING:\n          return '';\n        case TaskStatus.STOPPED:\n          return '';\n        case TaskStatus.CONFIRMED:\n          return 'warning';\n        case TaskStatus.WAITING_CONFIRMATION:\n          return 'warning';\n        default:\n          throw new Error(`Unknown task status ${status}`);\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TeamMemberForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"teamMembers != null && users != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <div class=\"d-flex justify-end mb-1\" v-if=\"inviteType === 'both'\">\n      <v-btn-toggle\n        v-model=\"selectedInviteType\"\n        tile\n        group\n      >\n        <v-btn value=\"email\" small class=\"mr-0\" style=\"border-radius: 4px;\">\n          Email\n        </v-btn>\n        <v-btn value=\"username\" small class=\"mr-0\" style=\"border-radius: 4px;\">\n          Username\n        </v-btn>\n      </v-btn-toggle>\n    </div>\n\n    <v-text-field\n      v-if=\"selectedInviteType === 'email'\"\n      type=\"email\"\n      :label=\"$t('email')\"\n      v-model=\"item.email\"\n      outlined\n      dense\n    />\n\n    <v-autocomplete\n      v-else\n      v-model=\"item.user_id\"\n      :label=\"$t('user')\"\n      :items=\"users\"\n      item-value=\"id\"\n      :item-text=\"(itm) => `${itm.username} (${itm.name})`\"\n      :rules=\"[v => !!v || $t('user_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-autocomplete>\n\n    <v-select\n      v-model=\"item.role\"\n      :label=\"$t('role')\"\n      :items=\"userRoles\"\n      item-value=\"slug\"\n      item-text=\"name\"\n      :rules=\"[v => !!v || $t('user_required')]\"\n      required\n      :disabled=\"formSaving\"\n      outlined\n      dense\n    ></v-select>\n  </v-form>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport { USER_ROLES } from '@/lib/constants';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  props: {\n    invitesEnabled: Boolean,\n    inviteType: String,\n    roles: Array,\n  },\n\n  computed: {\n    userRoles() {\n      return [...USER_ROLES, ...(this.roles || [])];\n    },\n  },\n\n  data() {\n    return {\n      users: null,\n      userId: null,\n      teamMembers: null,\n      USER_ROLES,\n      selectedInviteType: this.inviteType === 'both' ? 'username' : this.inviteType,\n    };\n  },\n\n  async created() {\n    this.teamMembers = (await axios({\n      method: 'get',\n      url: this.getItemsUrl(),\n      responseType: 'json',\n    })).data;\n\n    this.users = (await axios({\n      method: 'get',\n      url: '/api/users',\n      responseType: 'json',\n    })).data.filter((user) => !this.teamMembers.some((teamMember) => user.id === teamMember.id));\n  },\n\n  methods: {\n    getItemsUrl() {\n      if (this.invitesEnabled) {\n        return `/api/project/${this.projectId}/invites`;\n      }\n      return `/api/project/${this.projectId}/users`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/users/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TeamMenu.vue",
    "content": "<template>\n  <v-tabs class=\"pl-4\">\n    <v-tab\n      key=\"team\"\n      :to=\"`/project/${projectId}/team`\"\n      data-testid=\"team-members\"\n    >\n      Members\n    </v-tab>\n\n    <v-tab\n      v-if=\"systemInfo.teams.invites_enabled\"\n      key=\"invites\"\n      :to=\"`/project/${projectId}/invites`\"\n      data-testid=\"team-invites\"\n    >\n      Invites\n    </v-tab>\n\n    <v-tab\n      key=\"roles\"\n      :to=\"`/project/${projectId}/roles`\"\n      data-testid=\"team-roles\"\n    >\n      Roles\n    </v-tab>\n  </v-tabs>\n</template>\n\n<script>\nexport default {\n\n  props: {\n    projectId: Number,\n    systemInfo: Object,\n  },\n\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TemplateForm.vue",
    "content": "<template>\n  <div v-if=\"!isLoaded\" :style=\"{ height: `${loaderHeight}px` }\" class=\"mt-1\">\n    <v-row>\n      <v-col>\n        <v-skeleton-loader\n          type=\"\n            table-heading,\n            image,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line\"\n        ></v-skeleton-loader>\n      </v-col>\n      <v-col>\n        <v-skeleton-loader\n          type=\"\n            table-heading,\n            list-item-two-line,\n            list-item-two-line,\n            list-item-two-line,\n            article\"\n        ></v-skeleton-loader>\n      </v-col>\n      <v-col v-if=\"needAppBlock\">\n        <v-skeleton-loader\n          type=\"\n            table-heading,\n            list-item-two-line,\n            article,\n            list-item-two-line,\n            article\"\n        ></v-skeleton-loader>\n      </v-col>\n    </v-row>\n  </div>\n  <v-form\n    class=\"mt-1\"\n    v-else\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n  >\n    <v-dialog\n      v-model=\"helpDialog\"\n      hide-overlay\n      width=\"300\"\n    >\n      <v-alert\n        border=\"top\"\n        colored-border\n        type=\"info\"\n        elevation=\"2\"\n        class=\"mb-0 pb-0\"\n      >\n        <div v-if=\"helpKey === 'build_version'\">\n          <p>\n            {{ $t('definesStartVersionOfYourArtifactEachRunIncrements') }}\n          </p>\n          <p>\n            {{ $t('forMoreInformationAboutBuildingSeeThe') }}\n            <a href=\"https://docs.semaphoreui.com/user-guide/task-templates#build\"\n               target=\"_blank\"\n            >{{ $t('taskTemplateReference') }}</a>.\n          </p>\n        </div>\n        <div v-else-if=\"helpKey === 'build'\">\n          <p>\n            {{ $t('definesWhatArtifactShouldBeDeployedWhenTheTaskRun') }}\n          </p>\n          <p>\n            {{ $t('forMoreInformationAboutDeployingSeeThe') }}\n            <a href=\"https://docs.semaphoreui.com/user-guide/task-templates#build\"\n               target=\"_blank\"\n            >{{ $t('taskTemplateReference2') }}</a>.\n          </p>\n        </div>\n        <div v-if=\"helpKey === 'cron'\">\n          <p>{{ $t('definesAutorunSchedule') }}</p>\n          <p>\n            {{ $t('forMoreInformationAboutCronSeeThe') }}\n            <a href=\"https://pkg.go.dev/github.com/robfig/cron/v3#hdr-CRON_Expression_Format\"\n               target=\"_blank\"\n            >{{ $t('cronExpressionFormatReference') }}</a>.\n          </p>\n        </div>\n      </v-alert>\n    </v-dialog>\n\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-row class=\"mb-0\">\n      <v-col>\n        <h2 class=\"mb-4\">{{ $t('template_common_options') }}</h2>\n\n        <v-card\n          class=\"mb-6\"\n          :color=\"$vuetify.theme.dark ? '#212121' : 'white'\"\n          style=\"background: #8585850f\"\n        >\n          <v-tabs\n            fixed-tabs\n            v-model=\"itemTypeIndex\"\n          >\n            <v-tab\n              style=\"padding: 0\"\n              v-for=\"(key) in Object.keys(TEMPLATE_TYPE_ICONS)\"\n              :key=\"key\"\n            >\n              <v-icon small class=\"mr-2\">{{ TEMPLATE_TYPE_ICONS[key] }}</v-icon>\n              {{ $t(TEMPLATE_TYPE_TITLES[key]) }}\n            </v-tab>\n          </v-tabs>\n\n          <div class=\"ml-4 mr-4 mt-6\" v-if=\"item.type\">\n            <v-text-field\n              v-if=\"item.type === 'build'\"\n              v-model=\"item.start_version\"\n              :label=\"$t('startVersion')\"\n              :rules=\"[v => !!v || $t('start_version_required')]\"\n              required\n              :disabled=\"formSaving\"\n              :placeholder=\"$t('example000')\"\n              append-outer-icon=\"mdi-help-circle\"\n              @click:append-outer=\"showHelpDialog('build_version')\"\n            ></v-text-field>\n\n            <v-autocomplete\n              v-if=\"item.type === 'deploy'\"\n              v-model=\"item.build_template_id\"\n              :label=\"$t('buildTemplate')\"\n              :items=\"buildTemplates\"\n              item-value=\"id\"\n              item-text=\"name\"\n              :rules=\"[v => !!v || $t('build_template_required')]\"\n              required\n              :disabled=\"formSaving\"\n              append-outer-icon=\"mdi-help-circle\"\n              @click:append-outer=\"showHelpDialog('build')\"\n            ></v-autocomplete>\n\n            <v-checkbox\n              v-if=\"item.type === 'deploy'\"\n              class=\"mt-0\"\n              :label=\"$t('autorun')\"\n              v-model=\"item.autorun\"\n            />\n          </div>\n\n        </v-card>\n\n        <v-text-field\n          v-model=\"item.name\"\n          :label=\"$t('name2')\"\n          :rules=\"[v => !!v || $t('name_required')]\"\n          outlined\n          dense\n          required\n          :disabled=\"formSaving\"\n        ></v-text-field>\n\n        <v-text-field\n          v-model=\"item.playbook\"\n          :label=\"fieldLabel('playbook')\"\n          :rules=\"\n              isFieldRequired('playbook')\n              ? [v => !!v || $t('playbook_filename_required')]\n              : []\"\n          outlined\n          dense\n          :required=\"isFieldRequired('playbook')\"\n          :disabled=\"formSaving\"\n          :placeholder=\"$t('exampleSiteyml')\"\n          v-if=\"needField('playbook')\"\n        ></v-text-field>\n\n        <v-autocomplete\n          v-model=\"item.inventory_id\"\n          :label=\"fieldLabel('inventory')\"\n          :items=\"inventory\"\n          item-value=\"id\"\n          item-text=\"name\"\n          outlined\n          dense\n          required\n          :disabled=\"formSaving\"\n          v-if=\"needField('inventory')\"\n        ></v-autocomplete>\n\n        <v-autocomplete\n          v-model=\"item.repository_id\"\n          :label=\"fieldLabel('repository') + ' *'\"\n          :items=\"repositories\"\n          item-value=\"id\"\n          item-text=\"name\"\n          :rules=\"isFieldRequired('repository') ? [v => !!v || $t('repository_required')] : []\"\n          outlined\n          dense\n          hide-details\n          :required=\"isFieldRequired('repository')\"\n          :disabled=\"formSaving\"\n          v-if=\"needField('repository')\"\n        ></v-autocomplete>\n\n        <div class=\"mb-3 text-right\">\n\n          <a\n            v-if=\"!item.git_branch && !setBranch\"\n            @click=\"setBranch = true\"\n          >Set branch</a>\n\n        </div>\n\n        <div v-if=\"item.git_branch || setBranch\">\n          <div v-if=\"branches != null\">\n            <v-autocomplete\n              clearable\n              :items=\"branches\"\n              v-model=\"item.git_branch\"\n              :label=\"fieldLabel('branch')\"\n              outlined\n              dense\n              :disabled=\"formSaving\"\n              :placeholder=\"$t('branch')\"\n            ></v-autocomplete>\n          </div>\n          <div v-else>\n            <v-text-field\n              clearable\n              v-model=\"item.git_branch\"\n              :label=\"fieldLabel('branch')\"\n              outlined\n              dense\n              :disabled=\"formSaving\"\n              :placeholder=\"$t('branch')\"\n            ></v-text-field>\n          </div>\n        </div>\n\n        <v-autocomplete\n          v-model=\"item.environment_id\"\n          :label=\"fieldLabel('environment')\"\n          :items=\"environment\"\n          item-value=\"id\"\n          item-text=\"name\"\n          :rules=\"isFieldRequired('environment') ? [v => !!v || $t('environment_required')] : []\"\n          outlined\n          dense\n          :required=\"isFieldRequired('environment')\"\n          :disabled=\"formSaving\"\n          v-if=\"needField('environment')\"\n        ></v-autocomplete>\n\n        <v-autocomplete\n          class=\"mb-3\"\n          style=\"max-height: 60px;\"\n          v-model=\"item.view_id\"\n          :label=\"$t('view')\"\n          clearable\n          :items=\"views\"\n          item-value=\"id\"\n          item-text=\"title\"\n          :disabled=\"formSaving\"\n          outlined\n          dense\n        ></v-autocomplete>\n      </v-col>\n\n      <v-col>\n        <h2 class=\"mb-4\">{{ $t('template_advanced') }}</h2>\n\n        <div class=\"mb-4\">\n\n          <v-autocomplete\n            v-if=\"premiumFeatures.project_runners\"\n            v-model=\"item.runner_tag\"\n            :items=\"runnerTags\"\n            :label=\"fieldLabel('runner_tag')\"\n            item-value=\"tag\"\n            item-text=\"tag\"\n            outlined\n            dense\n            :disabled=\"formSaving\"\n            :placeholder=\"$t('runner_tag')\"\n          ></v-autocomplete>\n\n          <SurveyVars\n            :vars=\"surveyVars\"\n            @change=\"setSurveyVars\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            v-model=\"item.allow_parallel_tasks\"\n          >\n            <template v-slot:label>\n              {{ $t('allow_parallel_tasks') }}\n              <v-chip class=\"ml-2\" small color=\"error\">New</v-chip>\n            </template>\n          </v-checkbox>\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome')\"\n            v-model=\"cronVisible\"\n          />\n\n          <v-select\n            v-if=\"cronVisible\"\n            v-model=\"cronRepositoryId\"\n            :label=\"$t('repository2')\"\n            :placeholder=\"$t('cronChecksNewCommitBeforeRun')\"\n            :rules=\"[v => !!v || $t('repository_required')]\"\n            :items=\"repositories\"\n            item-value=\"id\"\n            item-text=\"name\"\n            clearable\n            :disabled=\"formSaving\"\n            outlined\n            dense\n          ></v-select>\n\n          <v-select\n            v-if=\"cronVisible\"\n            v-model=\"cronFormat\"\n            :label=\"$t('checkInterval')\"\n            :hint=\"$t('newCommitCheckInterval')\"\n            item-value=\"cron\"\n            item-text=\"title\"\n            :items=\"cronFormats\"\n            :disabled=\"formSaving\"\n            outlined\n            dense\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('suppressSuccessAlerts')\"\n            v-model=\"item.suppress_success_alerts\"\n          />\n\n          <div style=\"position: relative\">\n            <ArgsPicker\n              :vars=\"args\"\n              @change=\"setArgs\"\n              title=\"CLI args\"\n            />\n\n            <RichEditor\n              v-model=\"argsJson\"\n              type=\"json_array\"\n              style=\"\n              position: absolute;\n              right: -23px;\n              top: -18px;\n              margin: 10px;\n            \"\n            />\n\n          </div>\n\n        </div>\n\n        <h2 class=\"mb-4\">{{ $t('task_prompts') }}</h2>\n        <div class=\"d-flex\" style=\"column-gap: 20px; flex-wrap: wrap\">\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('allowCliArgsInTask')\"\n            v-model=\"item.allow_override_args_in_task\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('allow_override_branch')\"\n            v-model=\"item.allow_override_branch_in_task\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('allowInventoryInTask')\"\n            v-model=\"allow_override_inventory\"\n            v-if=\"needField('allow_override_inventory')\"\n          />\n        </div>\n      </v-col>\n\n      <v-col v-if=\"needAppBlock\">\n        <div class=\"mb-3\">\n          <h2 class=\"mb-4\">\n            {{ $t('template_app_options', { app: getAppTitle(app, true) }) }}\n          </h2>\n\n          <ArgsPicker\n            v-if=\"needField('limit')\"\n            :vars=\"item.task_params.limit\"\n            @change=\"setLimit\"\n            :title=\"$t('limit')\"\n            :arg-title=\"$t('limit')\"\n            :add-arg-title=\"$t('addLimit')\"\n          />\n\n          <ArgsPicker\n            v-if=\"needField('tags')\"\n            :vars=\"item.task_params.tags\"\n            @change=\"setTags\"\n            :title=\"$t('tags')\"\n            :arg-title=\"$t('tag')\"\n            :add-arg-title=\"$t('addTag')\"\n          />\n\n          <ArgsPicker\n            v-if=\"needField('skip_tags')\"\n            :vars=\"item.task_params.skip_tags\"\n            @change=\"setSkipTags\"\n            :title=\"$t('skipTags')\"\n            :arg-title=\"$t('tag')\"\n            :add-arg-title=\"$t('addSkippedTag')\"\n          />\n\n          <TemplateVaults\n            v-if=\"needField('vault')\"\n            :project-id=\"this.projectId\"\n            :vaults=\"vaults\"\n            @change=\"setTemplateVaults\"\n          ></TemplateVaults>\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('auto_approve')\"\n            v-model=\"item.task_params.auto_approve\"\n            v-if=\"needField('auto_approve')\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('terraform_override_backend')\"\n            v-model=\"item.task_params.override_backend\"\n            :true-value=\"true\"\n            :false-value=\"false\"\n            v-if=\"needField('override_backend') && premiumFeatures.terraform_backend\"\n          />\n\n          <v-text-field\n            v-model=\"item.task_params.backend_filename\"\n            :label=\"fieldLabel('terraform_backend_filename')\"\n            outlined\n            dense\n            :disabled=\"formSaving || !item.task_params.override_backend\"\n            placeholder=\"backend.tf\"\n            :rules=\"[v => validateBackendFilename(v) || $t('terraform_invalid_backend_filename')]\"\n            v-if=\"needField('backend_filename') && premiumFeatures.terraform_backend\"\n          ></v-text-field>\n\n        </div>\n\n        <h2 class=\"mb-4\">\n          {{ $t('template_app_prompts', { app: getAppTitle(app, true) }) }}\n        </h2>\n        <div class=\"d-flex\" style=\"column-gap: 20px; flex-wrap: wrap\">\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('allowLimitInTask')\"\n            v-model=\"item.task_params.allow_override_limit\"\n            v-if=\"needField('allow_override_limit')\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('tags')\"\n            v-model=\"item.task_params.allow_override_tags\"\n            v-if=\"needField('allow_override_tags')\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('skipTags')\"\n            v-model=\"item.task_params.allow_override_skip_tags\"\n            v-if=\"needField('allow_override_skip_tags')\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('allowDebug')\"\n            v-model=\"item.task_params.allow_debug\"\n            v-if=\"needField('allow_debug')\"\n          />\n\n          <v-checkbox\n            class=\"mt-0\"\n            :label=\"$t('auto_approve')\"\n            v-model=\"item.task_params.allow_auto_approve\"\n            v-if=\"needField('allow_auto_approve')\"\n          />\n\n        </div>\n      </v-col>\n\n    </v-row>\n  </v-form>\n</template>\n<style lang=\"scss\">\n.CodeMirror-placeholder {\n  color: #a4a4a4 !important;\n}\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport axios from 'axios';\n\nimport ItemFormBase from '@/components/ItemFormBase';\nimport 'codemirror/lib/codemirror.css';\nimport 'codemirror/mode/vue/vue.js';\nimport 'codemirror/addon/lint/json-lint.js';\nimport 'codemirror/addon/display/placeholder.js';\nimport ArgsPicker from '@/components/ArgsPicker.vue';\nimport TemplateVaults from '@/components/TemplateVaults.vue';\nimport { TEMPLATE_TYPE_ICONS, TEMPLATE_TYPE_TITLES } from '@/lib/constants';\nimport AppFieldsMixin from '@/components/AppFieldsMixin';\nimport AppsMixin from '@/components/AppsMixin';\nimport RichEditor from '@/components/RichEditor.vue';\nimport SurveyVars from './SurveyVars';\n\nexport default {\n  mixins: [ItemFormBase, AppFieldsMixin, AppsMixin],\n\n  components: {\n    RichEditor,\n    TemplateVaults,\n    ArgsPicker,\n    SurveyVars,\n  },\n\n  props: {\n    sourceItemId: Number,\n    app: String,\n    premiumFeatures: Object,\n    taskType: String,\n  },\n\n  data() {\n    return {\n      cronFormats: [{\n        cron: '* * * * *',\n        title: '1 minute',\n      }, {\n        cron: '*/5 * * * *',\n        title: '5 minutes',\n      }, {\n        cron: '*/10 * * * *',\n        title: '10 minutes',\n      }, {\n        cron: '@hourly',\n        title: '1 hour',\n      }, {\n        cron: '@daily',\n        title: '24 hours',\n      }],\n      itemTypeIndex: 0,\n      TEMPLATE_TYPE_ICONS,\n      TEMPLATE_TYPE_TITLES,\n      cmOptions: {\n        tabSize: 2,\n        mode: 'application/json',\n        lineNumbers: true,\n        line: true,\n        lint: true,\n        indentWithTabs: false,\n      },\n      item: {\n        task_params: {},\n      },\n      inventory: null,\n      repositories: null,\n      environment: null,\n      views: null,\n      schedules: null,\n      buildTemplates: null,\n      cronFormat: '* * * * *',\n      cronRepositoryId: null,\n      cronVisible: false,\n\n      helpDialog: null,\n      helpKey: null,\n\n      args: [],\n      runnerTags: null,\n      branches: null,\n      setBranch: false,\n    };\n  },\n\n  watch: {\n    gitBranch() {\n      this.setBranch = false;\n    },\n\n    async repositoryId() {\n      this.branches = null;\n\n      await this.loadBranches();\n    },\n\n    needReset(val) {\n      if (val) {\n        if (this.item != null) {\n          this.item.template_id = this.templateId;\n        }\n        this.inventory = null;\n      }\n    },\n\n    sourceItemId(val) {\n      this.item.template_id = val;\n    },\n\n    itemTypeIndex(val) {\n      this.item.type = Object.keys(TEMPLATE_TYPE_ICONS)[val];\n    },\n  },\n\n  async created() {\n    await this.loadBranches();\n  },\n\n  computed: {\n    argsJson: {\n      get() {\n        return JSON.stringify(this.args);\n      },\n      set(val) {\n        this.args = JSON.parse(val);\n      },\n    },\n\n    repositoryId() {\n      return this.item?.repository_id;\n    },\n\n    gitBranch() {\n      return this.item?.git_branch;\n    },\n\n    allow_override_inventory: {\n      get() {\n        return this.item.task_params.allow_override_inventory;\n      },\n      set(newValue) {\n        this.item.task_params.allow_override_inventory = newValue;\n      },\n    },\n\n    loaderHeight() {\n      switch (this.taskType) {\n        case 'build':\n          if (['', 'ansible', 'terraform', 'tofu'].includes(this.app)) {\n            return 626;\n          }\n          return 560;\n        case 'deploy':\n          if (['', 'ansible', 'terraform', 'tofu'].includes(this.app)) {\n            return 676;\n          }\n          return 610;\n        default:\n          if (['', 'ansible', 'terraform', 'tofu'].includes(this.app)) {\n            return 564;\n          }\n          return 514;\n      }\n    },\n\n    appBlockTitle() {\n      switch (this.app) {\n        case '':\n        case 'ansible':\n          return this.$t('ansible_playbook_options');\n        default:\n          return this.app;\n      }\n    },\n\n    needAppBlock() {\n      return ['', 'ansible', 'ansible', 'tofu', 'terraform'].includes(this.app);\n    },\n\n    surveyVars() {\n      // if (this.sourceItemId != null && this.item.survey_vars === undefined) {\n      //   throw new Error();\n      // }\n      return this.item.survey_vars;\n    },\n\n    vaults() {\n      // if (this.sourceItemId != null && this.item.vaults === undefined) {\n      //   throw new Error();\n      // }\n      return this.item.vaults;\n    },\n\n    isLoaded() {\n      // if (this.isNew && this.sourceItemId == null) {\n      //   return true;\n      // }\n\n      return this.repositories != null\n        && this.inventory != null\n        && this.environment != null\n        && this.item != null\n        && this.schedules != null\n        && this.views != null\n        && this.runnerTags != null;\n    },\n\n  },\n\n  methods: {\n    async loadBranches() {\n      if (this.repositoryId == null) {\n        return;\n      }\n\n      this.branches = await this.loadProjectEndpoint(\n        `/repositories/${this.repositoryId}/branches`,\n      );\n    },\n\n    validateBackendFilename(v) {\n      if (!v) {\n        return true;\n      }\n\n      if (!v.endsWith('.tf')) {\n        return 'File must have extension .tf';\n      }\n\n      return /^[a-zA-Z0-9_\\-.]+\\.tf$/.test(v);\n    },\n\n    setSkipTags(tags) {\n      this.item.task_params.skip_tags = tags;\n    },\n\n    setTags(tags) {\n      this.item.task_params.tags = tags;\n    },\n\n    setLimit(limit) {\n      this.item.task_params.limit = limit;\n    },\n\n    setArgs(args) {\n      this.args = args;\n    },\n\n    setSurveyVars(v) {\n      this.item.survey_vars = v;\n    },\n\n    setTemplateVaults(v) {\n      this.item.vaults = v;\n    },\n\n    showHelpDialog(key) {\n      this.helpKey = key;\n      this.helpDialog = true;\n    },\n\n    getNewItem() {\n      return {\n        task_params: {},\n      };\n    },\n\n    async loadRelativeData() {\n      let templates;\n      let inventory1;\n      let inventory2;\n\n      [\n        this.repositories,\n        inventory1,\n        inventory2,\n        this.schedules,\n        this.views,\n        this.environment,\n        templates,\n        this.runnerTags,\n      ] = await Promise.all([\n        this.loadProjectResources('repositories'),\n        this.loadProjectEndpoint(`/inventory?app=${this.app}&template_id=${this.itemId}`),\n        this.loadProjectEndpoint(`/inventory?app=${this.app}`),\n        this.isNew ? [] : this.loadProjectEndpoint(`/templates/${this.itemId}/schedules`),\n        this.loadProjectResources('views'),\n        this.loadProjectResources('environment'),\n        this.loadProjectResources('templates'),\n        this.loadProjectResources('runner_tags'),\n      ]);\n\n      this.inventory = [...inventory1, ...inventory2];\n\n      const builds = [];\n      const deploys = [];\n\n      templates.forEach((t) => {\n        switch (t.type) {\n          case 'build':\n            if (builds.length === 0) {\n              builds.push({ header: 'Build Templates' });\n            }\n            builds.push(t);\n            break;\n          case 'deploy':\n            if (deploys.length === 0) {\n              deploys.push({ header: 'Deploy Templates' });\n            }\n            deploys.push(t);\n            break;\n          default:\n            break;\n        }\n      });\n\n      this.buildTemplates = builds;\n      if (this.buildTemplates.length > 0 && deploys.length > 0) {\n        this.buildTemplates.push({ divider: true });\n      }\n      this.buildTemplates.push(...deploys);\n    },\n\n    async afterLoadData() {\n      if (this.sourceItemId) {\n        const item = await this.loadProjectResource('templates', this.sourceItemId);\n\n        item.id = null;\n\n        if (item.vaults) {\n          for (let i = 0; i < item.vaults.length; i += 1) {\n            item.vaults[i].id = null;\n          }\n        }\n\n        const sourceSchedule = (await this.loadProjectEndpoint(`/templates/${this.sourceItemId}/schedules`))[0];\n\n        if (sourceSchedule != null) {\n          this.cronFormat = sourceSchedule.cron_format;\n          this.cronRepositoryId = sourceSchedule.repository_id;\n          this.cronVisible = this.cronRepositoryId != null;\n        }\n\n        this.item = item;\n      }\n\n      if (!this.item.task_params) {\n        this.item.task_params = {};\n      }\n\n      this.args = JSON.parse(this.item.arguments || '[]');\n\n      await this.loadRelativeData();\n\n      if (this.schedules.length > 0) {\n        const schedule = this.schedules.find((s) => s.repository_id != null);\n        if (schedule != null) {\n          this.cronFormat = schedule.cron_format;\n          this.cronRepositoryId = schedule.repository_id;\n          this.cronVisible = this.cronRepositoryId != null;\n        }\n      }\n\n      this.itemTypeIndex = Object.keys(TEMPLATE_TYPE_ICONS).indexOf(this.item.type);\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/templates`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/templates/${this.itemId}`;\n    },\n\n    async beforeSave() {\n      if (this.cronFormat == null || this.cronFormat === '') {\n        return;\n      }\n\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/schedules/validate`,\n        responseType: 'json',\n        data: {\n          cron_format: this.cronFormat,\n        },\n      });\n\n      this.item.app = this.app;\n\n      this.item.arguments = JSON.stringify(this.args);\n    },\n\n    async afterSave(newItem) {\n      if (newItem || this.schedules.length === 0) {\n        if (this.cronFormat != null && this.cronFormat !== '' && this.cronVisible) {\n          // new schedule\n          await axios({\n            method: 'post',\n            url: `/api/project/${this.projectId}/schedules`,\n            responseType: 'json',\n            data: {\n              project_id: this.projectId,\n              template_id: newItem ? newItem.id : this.itemId,\n              cron_format: this.cronFormat,\n              repository_id: this.cronRepositoryId,\n              active: true,\n            },\n          });\n        }\n      } else if (this.schedules.length > 1) {\n        // do nothing\n      } else if (this.cronFormat == null || this.cronFormat === '' || !this.cronVisible) {\n        // drop schedule\n        await axios({\n          method: 'delete',\n          url: `/api/project/${this.projectId}/schedules/${this.schedules[0].id}`,\n          responseType: 'json',\n        });\n      } else {\n        // update schedule\n        await axios({\n          method: 'put',\n          url: `/api/project/${this.projectId}/schedules/${this.schedules[0].id}`,\n          responseType: 'json',\n          data: {\n            id: this.schedules[0].id,\n            project_id: this.projectId,\n            template_id: this.itemId,\n            cron_format: this.cronFormat,\n            repository_id: this.cronRepositoryId,\n          },\n        });\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TemplatePermissionsChips.vue",
    "content": "<template>\n  <div class=\"permissions-list\">\n    <v-chip\n      v-for=\"p in ROLE_PERMISSIONS[scope].filter(x => permissions & x.permission)\"\n      :key=\"p.permission\"\n      small\n      :color=\"p.color\"\n      :text-color=\"p.textColor\"\n    >{{ $t(p.label) }}</v-chip>\n\n    <span v-if=\"permissions === 0\" class=\"text--secondary\">\n      &mdash;\n    </span>\n  </div>\n</template>\n\n<script>\nimport { ROLE_PERMISSIONS } from '@/lib/constants';\n\nexport default {\n  props: {\n    permissions: {\n      type: Number,\n      required: true,\n    },\n    scope: {\n      type: String,\n      default: 'default',\n    },\n  },\n  data() {\n    return {\n      ROLE_PERMISSIONS,\n    };\n  },\n};\n</script>\n\n<style scoped>\n.permissions-list {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 4px;\n}\n</style>\n"
  },
  {
    "path": "web/src/components/TemplateSelectForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"items != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}\n    </v-alert>\n\n    <v-select\n      :rules=\"[v => !!v || $t('template_required')]\"\n      :items=\"items\"\n      v-model=\"itemId\"\n      label=\"Template\"\n      item-value=\"id\"\n      item-text=\"name\"\n    />\n  </v-form>\n</template>\n<style>\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\n\nexport default {\n\n  props: {\n    app: String,\n    projectId: Number,\n    needSave: Boolean,\n    needReset: Boolean,\n  },\n\n  components: {},\n\n  watch: {\n    async needSave(val) {\n      if (val) {\n        await this.save();\n      }\n    },\n    async needReset(val) {\n      if (val) {\n        await this.reset();\n      }\n    },\n  },\n\n  data() {\n    return {\n      itemId: null,\n      items: null,\n      formValid: false,\n      formError: null,\n    };\n  },\n\n  async created() {\n    await this.loadData();\n  },\n\n  methods: {\n    async loadData() {\n      this.formError = null;\n      try {\n        this.items = (await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/templates?app=${this.app}`,\n          responseType: 'json',\n        })).data;\n      } catch (err) {\n        this.formError = getErrorMessage(err);\n        this.$emit('error', {\n          message: this.formError,\n        });\n      }\n    },\n\n    async reset() {\n      this.itemId = null;\n      this.formError = null;\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n      await this.loadData();\n    },\n\n    async save() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        this.$emit('error', {});\n        return null;\n      }\n\n      this.$emit('save', {\n        itemId: this.itemId,\n      });\n\n      return this.itemId;\n    },\n\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TemplateVaults.vue",
    "content": "<template>\n  <div class=\"pb-6\" style=\"margin-top: -10px;\">\n    <v-dialog\n      v-model=\"editDialog\"\n      hide-overlay\n      width=\"300\"\n    >\n      <v-card :color=\"$vuetify.theme.dark ? '#212121' : 'white'\">\n        <v-card-title></v-card-title>\n        <v-card-text class=\"pb-0\">\n          <v-form\n            ref=\"form\"\n            lazy-validation\n            v-if=\"editedVault != null\"\n          >\n            <v-alert\n              :value=\"formError\"\n              color=\"error\"\n            >{{ formError }}\n            </v-alert>\n\n            <v-text-field\n              :label=\"$t('vaultName')\"\n              placeholder=\"default\"\n              v-model.trim=\"editedVault.name\"\n              :rules=\"[v => this.vaultNameRules(v)]\"\n            />\n\n            <v-select\n              v-model=\"editedVault.type\"\n              :label=\"$t('type')\"\n              :items=\"vaultTypes\"\n              item-value=\"id\"\n              item-text=\"name\"\n              required\n              :rules=\"[v => !!v  || $t('type_required')]\"\n              @change=\"updateType\"\n            />\n\n            <v-select\n              v-model=\"editedVault.vault_key_id\"\n              v-if=\"editedVault.type === 'password'\"\n              :label=\"$t('vaultPassword2')\"\n              :items=\"vaultKeys\"\n              item-value=\"id\"\n              item-text=\"name\"\n              required\n              :rules=\"[(v) => !!v || $t('vaultRequired')]\"\n            ></v-select>\n\n            <v-text-field\n              v-model=\"editedVault.script\"\n              v-if=\"editedVault.type === 'script'\"\n              :label=\"$t('vaultScript')\"\n              :rules=\"[v => this.vaultScriptRules(v)]\"\n            />\n\n          </v-form>\n        </v-card-text>\n        <v-card-actions>\n          <v-spacer></v-spacer>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"editDialog = false\"\n          >\n            {{ $t('cancel') }}\n          </v-btn>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"saveVault()\"\n          >\n            {{ editedVaultIndex == null ? $t('add') : $t('save') }}\n          </v-btn>\n        </v-card-actions>\n      </v-card>\n    </v-dialog>\n    <fieldset style=\"padding: 0 10px 2px 10px;\n                     border: 1px solid rgba(0, 0, 0, 0.38);\n                     border-radius: 4px;\n                     font-size: 12px;\"\n              :style=\"{\n                       'border-color': $vuetify.theme.dark ?\n                         'rgba(200, 200, 200, 0.38)' :\n                         'rgba(0, 0, 0, 0.38)'\n                     }\">\n      <legend style=\"padding: 0 3px;\">{{ $t('vaults') }}</legend>\n      <v-chip-group column style=\"margin-top: -4px;\">\n        <v-chip\n          v-for=\"(v, i) in modifiedVaults\"\n          close\n          @click:close=\"deleteVault(i)\"\n          :key=\"v.name\"\n          @click=\"editVault(i)\"\n          color=\"gray\"\n        >\n          {{ v.name || 'default' }}\n        </v-chip>\n        <v-chip @click=\"editVault(null)\">\n          + <span class=\"ml-1\" v-if=\"modifiedVaults.length === 0\">{{ $t('vaultAdd') }}</span>\n        </v-chip>\n      </v-chip-group>\n    </fieldset>\n  </div>\n</template>\n<style lang=\"scss\">\n\n</style>\n<script>\nimport axios from 'axios';\n\nexport default {\n  props: {\n    projectId: Number,\n    vaults: Array,\n  },\n  watch: {\n    vaults(val) {\n      this.var = val || [];\n    },\n  },\n\n  async created() {\n    this.modifiedVaults = (this.vaults || []).map((v) => ({ ...v }));\n    this.keys = (await axios({\n      keys: 'get',\n      url: `/api/project/${this.projectId}/keys`,\n      responseType: 'json',\n    })).data;\n  },\n\n  data() {\n    return {\n      editDialog: null,\n      editedVault: null,\n      editedVaultIndex: null,\n      modifiedVaults: null,\n      formError: null,\n      keys: null,\n      vaultTypes: [{\n        id: 'password',\n        name: `${this.$t('vaultTypePassword')}`,\n      }, {\n        id: 'script',\n        name: `${this.$t('vaultTypeScript')}`,\n      }],\n    };\n  },\n\n  computed: {\n    vaultKeys() {\n      if (this.keys == null) {\n        return null;\n      }\n      return this.keys.filter((key) => ['login_password'].includes(key.type));\n    },\n  },\n\n  methods: {\n    vaultNameRules(v) {\n      // Increase the max if we are editing an existing vault\n      const max = this.editedVaultIndex == null ? 0 : 1;\n      if (v == null || v === '') {\n        if (this.modifiedVaults.filter((vault) => vault.name === null).length > max) {\n          return this.$t('vaultNameDefault');\n        }\n      } else if (\n        this.modifiedVaults.filter((vault) => vault.name === v.toLowerCase().trim()).length > max\n      ) {\n        return this.$t('vaultNameUnique');\n      }\n      return true;\n    },\n\n    vaultScriptRules(v) {\n      if (v == null || v === '') {\n        return this.$t('vaultScriptRequired');\n      }\n      if (v.match(/-client(\\..*)?$/i) === null) {\n        return this.$t('vaultScriptClientRequired');\n      }\n      return true;\n    },\n\n    updateType() {\n      if (this.editedVault.type === 'password') {\n        this.editedVault.script = null;\n      } else {\n        this.editedVault.vault_key_id = null;\n      }\n    },\n\n    editVault(index) {\n      this.editedVault = index != null ? { ...this.modifiedVaults[index] } : {\n        name: null,\n        vault_key_id: null,\n        type: 'password',\n        script: null,\n      };\n      this.editedVaultIndex = index;\n\n      if (this.$refs.form) {\n        this.$refs.form.resetValidation();\n      }\n\n      this.editDialog = true;\n    },\n\n    saveVault() {\n      this.formError = null;\n\n      if (!this.$refs.form.validate()) {\n        return;\n      }\n\n      if (this.editedVault.name == null || this.editedVault.name === '') {\n        this.editedVault.name = null;\n      } else {\n        this.editedVault.name = this.editedVault.name.toLowerCase().trim();\n      }\n\n      if (this.editedVaultIndex != null) {\n        this.modifiedVaults[this.editedVaultIndex] = this.editedVault;\n      } else {\n        this.modifiedVaults.push(this.editedVault);\n      }\n\n      this.editDialog = false;\n      this.editedVault = null;\n      this.$emit('change', this.modifiedVaults);\n    },\n\n    deleteVault(index) {\n      this.modifiedVaults.splice(index, 1);\n      this.$emit('change', this.modifiedVaults);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TerraformAliasForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-select\n      v-model=\"item.auth_key_id\"\n      :label=\"$t('Auth key')\"\n      :items=\"keys\"\n      item-value=\"id\"\n      item-text=\"name\"\n      outlined\n      dense\n      required\n      :disabled=\"formSaving\"\n    ></v-select>\n\n  </v-form>\n</template>\n<style>\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  components: {\n  },\n\n  props: {\n    inventoryId: Number,\n  },\n\n  data() {\n    return {\n      keys: null,\n    };\n  },\n\n  async created() {\n    this.keys = (await axios({\n      url: `/api/project/${this.projectId}/keys`,\n      responseType: 'json',\n    })).data.filter((key) => key.type === 'login_password');\n  },\n\n  methods: {\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/inventory/${this.inventoryId}/terraform/aliases`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/inventory/${this.inventoryId}/terraform/aliases/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TerraformInventoryForm.vue",
    "content": "<template>\n  <v-form\n    ref=\"form\"\n    lazy-validation\n    v-model=\"formValid\"\n    v-if=\"item != null && keys != null\"\n  >\n    <v-alert\n      :value=\"formError\"\n      color=\"error\"\n      class=\"pb-2\"\n    >{{ formError }}</v-alert>\n\n    <v-text-field\n      v-model=\"item.inventory\"\n      label=\"Workspace name\"\n      :rules=\"[v => !!v || $t('path_required')]\"\n      required\n      :disabled=\"formSaving\"\n    ></v-text-field>\n\n    <v-select\n      v-model=\"item.ssh_key_id\"\n      label=\"SSH key for private modules *\"\n      :rules=\"[v => !!v || 'Key is required']\"\n      dense\n      required\n      :items=\"keys\"\n      item-value=\"id\"\n      item-text=\"name\"\n      :disabled=\"formSaving\"\n    ></v-select>\n\n  </v-form>\n</template>\n<style>\n</style>\n<script>\n/* eslint-disable import/no-extraneous-dependencies,import/extensions */\n\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\n\nexport default {\n  mixins: [ItemFormBase],\n\n  props: {\n    namePrefix: String,\n    type: String,\n    templateId: Number,\n  },\n\n  components: {\n  },\n\n  data() {\n    return {\n      keys: null,\n    };\n  },\n\n  async created() {\n    this.keys = (await axios({\n      method: 'get',\n      url: `/api/project/${this.projectId}/keys`,\n      responseType: 'json',\n    })).data;\n  },\n\n  methods: {\n    async beforeSave() {\n      this.item.name = this.namePrefix + this.item.inventory;\n      this.item.type = this.type;\n      this.item.template_id = this.templateId;\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/inventory`;\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/inventory/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TerraformStateView.vue",
    "content": "<template>\n    <pre v-if=\"state\" style=\"white-space: pre-wrap;\n            background: gray;\n            color: white;\n            border-radius: 10px;\n            overflow: auto;\n            font-size: 14px;\n            max-height: 400px;\n            margin-top: 5px;\"\n         class=\"pa-2\"\n    >{{ state.state }}</pre>\n    <div v-else-if=\"error\" class=\"text-center\">{{ error.message }}</div>\n</template>\n\n<script>\nimport axios from 'axios';\n\nexport default {\n  props: {\n    projectId: Number,\n    inventoryId: Number,\n    stateId: Number,\n  },\n\n  data() {\n    return {\n      state: null,\n      error: null,\n    };\n  },\n\n  async created() {\n    try {\n      this.state = (await axios.get(`/api/project/${this.projectId}/inventory/${this.inventoryId}/terraform/states/${this.stateId}`)).data;\n    } catch (e) {\n      if (e.response.status === 404) {\n        this.error = {\n          message: 'No state available.',\n        };\n      } else {\n        this.error = e;\n      }\n    }\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/TerragruntIcon.vue",
    "content": "<template>\n  <svg width=\"128\" height=\"129\" viewBox=\"0 0 128 129\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M64.2167 0.878418L119.797 32.8784V96.8784L64.2167 128.878L8.63672 96.8784V32.8784L64.2167\n         0.878418ZM113.797 36.3329L64.2167 7.78738L14.6367 36.3329V93.4239L64.2167 121.969L113.797\n         93.4239V36.3329Z\" fill=\"#160C56\"\n    />\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M64.2167 121.97V93.4241V64.8786L39.4267 50.6059L14.6367 36.3331V64.8786V93.4241L64.2167\n         121.97Z\"\n      fill=\"white\"\n    />\n    <path\n      d=\"M89.0067 107.697L113.797 93.4241L89.0067 79.1514L64.2167 93.4241V121.97L89.0067 107.697Z\"\n      fill=\"#87E0E1\"\n    />\n    <path d=\"M64.2167 64.8786V93.4241L89.0067 79.1514L64.2167 64.8786Z\" fill=\"#1B46DD\"/>\n    <path\n      d=\"M89.0067 50.6059L64.2167 64.8786L89.0067 79.1514L113.797 64.8786L89.0067 50.6059Z\"\n      fill=\"#B068E9\"\n    />\n    <path\n      d=\"M89.0067 22.0604L64.2167 7.7876L39.4267 22.0604L14.6367 36.3331L39.4267 50.6059L64.2167\n         36.3331L89.0067 50.6059L113.797 36.3331L89.0067 22.0604Z\" fill=\"#F9DB4E\"/>\n    <path\n      d=\"M64.2167 64.8786L89.0067 50.6059L64.2167 36.3331L39.4267 50.6059L64.2167 64.8786Z\"\n      fill=\"#E94A5D\"\n    />\n  </svg>\n</template>\n\n<script>\nexport default {\n  name: 'TerragruntIcon',\n};\n</script>\n"
  },
  {
    "path": "web/src/components/UserForm.vue",
    "content": "<template>\n  <div>\n\n    <EditDialog\n      v-model=\"passwordDialog\"\n      save-button-text=\"Save\"\n      :title=\"$t('changePassword')\"\n      v-if=\"item\"\n      event-name=\"i-user\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <ChangePasswordForm\n          :project-id=\"projectId\"\n          :item-id=\"item.id\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <v-tabs v-model=\"tab\">\n      <v-tab key=\"settings\">Settings</v-tab>\n      <v-tab\n        key=\"2fa\"\n        v-if=\"!isNew || authMethods.totp\"\n      >\n        Security\n      </v-tab>\n    </v-tabs>\n\n    <v-divider class=\"mb-6\" style=\"margin-top: -1px;\"/>\n\n    <v-tabs-items v-model=\"tab\" style=\"overflow: unset;\">\n      <v-tab-item key=\"settings\">\n        <v-form\n          ref=\"form\"\n          lazy-validation\n          v-model=\"formValid\"\n          v-if=\"item != null\"\n        >\n          <v-alert\n            :value=\"formError\"\n            color=\"error\"\n            class=\"pb-2\"\n          >{{ formError }}\n          </v-alert>\n\n          <v-text-field\n            v-model=\"item.name\"\n            :label=\"$t('name')\"\n            :rules=\"[v => !!v || $t('name_required')]\"\n            required\n            :disabled=\"formSaving\"\n            outlined\n            dense\n          ></v-text-field>\n\n          <v-text-field\n            v-model=\"item.username\"\n            :label=\"$t('username')\"\n            :rules=\"[v => !!v || $t('user_name_required')]\"\n            required\n            :disabled=\"formSaving\"\n            outlined\n            dense\n          ></v-text-field>\n\n          <v-text-field\n            v-model=\"item.email\"\n            :label=\"$t('email')\"\n            :rules=\"[v => !!v || $t('email_required')]\"\n            required\n            :disabled=\"!isNew && item.external || formSaving\"\n            outlined\n            dense\n          >\n\n            <template v-slot:append>\n              <v-chip outlined color=\"green\" disabled small style=\"opacity: 1\">private</v-chip>\n            </template>\n          </v-text-field>\n\n          <v-text-field\n            v-if=\"isNew\"\n            v-model=\"item.password\"\n            :label=\"$t('password')\"\n            class=\"masked-secret-input\"\n            :required=\"isNew && !item.external\"\n            :rules=\"isNew && !item.external ? [v => !!v || $t('password_required')] : []\"\n            :disabled=\"item.external || formSaving\"\n            outlined\n            dense\n          ></v-text-field>\n\n          <v-row class=\"pb-5 pt-2\">\n            <v-col cols=\"6\">\n              <v-checkbox\n                dense\n                hide-details\n                v-model=\"item.alert\"\n                :label=\"$t('sendAlerts')\"\n              ></v-checkbox>\n            </v-col>\n            <v-col cols=\"6\" v-if=\"isAdmin\">\n              <v-checkbox\n                dense\n                hide-details\n                v-model=\"item.admin\"\n                :label=\"$t('adminUser')\"\n              ></v-checkbox>\n            </v-col>\n            <v-col cols=\"6\" v-if=\"isPro\">\n              <v-checkbox\n                :disabled=\"!isAdmin\"\n                dense\n                hide-details\n                v-model=\"item.pro\"\n                :label=\"$t('Pro user')\"\n              ></v-checkbox>\n            </v-col>\n            <v-col cols=\"6\" v-if=\"isAdmin\">\n              <v-checkbox\n                :disabled=\"!isNew\"\n                dense\n                hide-details\n                v-model=\"item.external\"\n                :label=\"$t('external')\"\n              ></v-checkbox>\n            </v-col>\n          </v-row>\n        </v-form>\n      </v-tab-item>\n\n      <v-tab-item key=\"2fa\" v-if=\"item != null\">\n\n        <div v-if=\"!isNew\">\n          <div class=\"title mb-3\">Password</div>\n          <v-btn color=\"primary\" @click=\"passwordDialog = true;\">Change password</v-btn>\n        </div>\n\n        <div\n          :class=\"{'pt-10': !isNew}\"\n          v-if=\"authMethods.totp\"\n        >\n          <div class=\"title mb-2\">Two-factor authentication</div>\n\n          <v-switch\n            class=\"mt-0\"\n            v-model=\"totpEnabled\"\n            label=\"Time-based one-time password\"\n          ></v-switch>\n\n          <img\n            v-if=\"totpQrUrl\"\n            :src=\"totpQrUrl\"\n            style=\"\n        width: 100%;\n        aspect-ratio: 1;\n        border-radius: 4px;\n        display: block;\n        margin: 0 auto 10px auto;\n        border: 10px solid white;\n        background-color: white;\n      \"\n            alt=\"QR code\"\n          />\n\n          <div\n            v-if=\"authMethods.totp.allow_recovery && item.totp && item.totp.recovery_code\"\n            class=\"mt-5 pb-3\"\n          >\n            <div class=\"subtitle-1 mb-2\">Recovery code</div>\n            <div style=\"position: relative;\">\n              <code\n                style=\"font-size: 18px; background-color: #e03755;\"\n              >\n                {{ item.totp.recovery_code }}\n              </code>\n\n              <CopyClipboardButton\n                style=\"position: absolute; right: -4px; top: -12px;\"\n                :text=\"item.totp.recovery_code\"\n                large\n                color=\"white\"\n              />\n            </div>\n          </div>\n        </div>\n      </v-tab-item>\n    </v-tabs-items>\n  </div>\n</template>\n<script>\nimport ItemFormBase from '@/components/ItemFormBase';\nimport axios from 'axios';\nimport EditDialog from '@/components/EditDialog.vue';\nimport ChangePasswordForm from '@/components/ChangePasswordForm.vue';\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\n\nexport default {\n  components: { CopyClipboardButton, ChangePasswordForm, EditDialog },\n  props: {\n    isAdmin: Boolean,\n    authMethods: Object,\n  },\n\n  mixins: [ItemFormBase],\n\n  data() {\n    return {\n      passwordDialog: null,\n      totpEnabled: false,\n      totpQrUrl: null,\n\n      tab: null,\n    };\n  },\n\n  watch: {\n    tab(value) {\n      if (value === 0) {\n        this.$emit('show-action-buttons');\n      } else {\n        this.$emit('hide-action-buttons');\n      }\n    },\n\n    async totpEnabled(val) {\n      if (val) {\n        if (this.item.totp == null) {\n          this.item.totp = (await axios({\n            method: 'post',\n            url: `/api/users/${this.itemId}/2fas/totp`,\n            responseType: 'json',\n          })).data;\n\n          // let baseURI = document.baseURI;\n          // if (baseURI.endsWith('/')) {\n          //   baseURI = baseURI.substring(0, baseURI.length - 1);\n          // }\n\n          this.totpQrUrl = `${document.baseURI}api/users/${this.itemId}/2fas/totp/${this.item.totp.id}/qr`;\n        }\n      } else if (this.item.totp != null) {\n        await axios({\n          method: 'delete',\n          url: `/api/users/${this.itemId}/2fas/totp/${this.item.totp.id}`,\n          responseType: 'json',\n        });\n        this.item.totp = null;\n        this.totpQrUrl = null;\n      }\n    },\n  },\n\n  computed: {\n\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n\n  },\n\n  methods: {\n\n    afterLoadData() {\n      if (this.item.totp == null) {\n        this.totpEnabled = false;\n        this.totpQrUrl = null;\n      } else {\n        this.totpEnabled = true;\n        this.totpQrUrl = `${document.baseURI}api/users/${this.itemId}/2fas/totp/${this.item.totp.id}/qr`;\n      }\n    },\n\n    getItemsUrl() {\n      return '/api/users';\n    },\n\n    getSingleItemUrl() {\n      return `/api/users/${this.itemId}`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/YesNoDialog.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <v-dialog\n    v-model=\"dialog\"\n    :max-width=\"maxWidth || 290\"\n  >\n    <v-card>\n      <v-card-title class=\"headline\">{{ title }}</v-card-title>\n\n      <v-card-text>\n        <slot>{{ text }}</slot>\n      </v-card-text>\n\n      <v-card-actions>\n        <v-spacer></v-spacer>\n\n        <v-btn\n          v-if=\"!hideNoButton\"\n          color=\"blue darken-1\"\n          text\n          @click=\"no()\"\n        >\n          {{ noButtonTitle || $t('cancel') }}\n        </v-btn>\n\n        <v-btn\n          color=\"blue darken-1\"\n          text\n          @click=\"yes()\"\n        >\n          {{ yesButtonTitle || $t('yes') }}\n        </v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n<script>\n\nexport default {\n  props: {\n    value: Boolean,\n    title: String,\n    text: String,\n    yesButtonTitle: String,\n    noButtonTitle: String,\n    hideNoButton: Boolean,\n    maxWidth: Number,\n  },\n\n  data() {\n    return {\n      dialog: false,\n    };\n  },\n\n  watch: {\n    async dialog(val) {\n      this.$emit('input', val);\n    },\n\n    async value(val) {\n      this.dialog = val;\n    },\n  },\n\n  methods: {\n    async yes() {\n      this.$emit('yes');\n      this.dialog = false;\n    },\n    async no() {\n      this.$emit('no');\n      this.dialog = false;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/components/chartjs-adapter-day.js",
    "content": "/* eslint-disable no-underscore-dangle,no-param-reassign */\nimport dayjs from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek'; // for isoWeekday functionality\nimport customParseFormat from 'dayjs/plugin/customParseFormat'; // for parsing with format\nimport { _adapters } from 'chart.js';\n\n// Register required Day.js plugins\ndayjs.extend(isoWeek);\ndayjs.extend(customParseFormat);\n\nconst FORMATS = {\n  datetime: 'MMM D, YYYY, h:mm:ss a',\n  millisecond: 'h:mm:ss.SSS a',\n  second: 'h:mm:ss a',\n  minute: 'h:mm a',\n  hour: 'hA',\n  day: 'MMM D',\n  week: 'll',\n  month: 'MMM YYYY',\n  quarter: '[Q]Q - YYYY',\n  year: 'YYYY',\n};\n\n_adapters._date.override(typeof dayjs === 'function' ? {\n  _id: 'dayjs', // DEBUG ONLY\n\n  formats() {\n    return FORMATS;\n  },\n\n  parse(value, format) {\n    if (typeof value === 'string' && typeof format === 'string') {\n      value = dayjs(value, format);\n    } else {\n      value = dayjs(value);\n    }\n    return value.isValid() ? value.valueOf() : null;\n  },\n\n  format(time, format) {\n    return dayjs(time).format(format);\n  },\n\n  add(time, amount, unit) {\n    return dayjs(time).add(amount, unit).valueOf();\n  },\n\n  diff(max, min, unit) {\n    return dayjs(max).diff(dayjs(min), unit);\n  },\n\n  startOf(time, unit, weekday) {\n    time = dayjs(time);\n    if (unit === 'isoWeek') {\n      // Day.js counts from 1 (Monday) to 7 (Sunday)\n      weekday = Math.trunc(Math.min(Math.max(1, weekday || 1), 7));\n      return time.isoWeekday(weekday).startOf('day').valueOf();\n    }\n    return time.startOf(unit).valueOf();\n  },\n\n  endOf(time, unit) {\n    return dayjs(time).endOf(unit).valueOf();\n  },\n} : {});\n"
  },
  {
    "path": "web/src/event-bus.js",
    "content": "import Vue from 'vue';\nimport i18n from '@/plugins/i18';\n\nexport default new Vue(i18n);\n"
  },
  {
    "path": "web/src/lang/de.js",
    "content": "export default {\n  checkInterval: 'Prüfintervall',\n  newCommitCheckInterval: 'Prüfintervall für neue Commits',\n  schedule: 'Zeitplan',\n  newSchedule: 'Neuer Zeitplan',\n  deleteSchedule: 'Zeitplan löschen',\n  editSchedule: 'Zeitplan bearbeiten',\n  backup: 'Projekt-Backup',\n  downloadTheProjectBackupFile: 'Projekt-Backup-Datei herunterladen.',\n  restoreProject: 'Projekt wiederherstellen...',\n  incorrectUsrPwd: 'Falscher Login oder falsches Passwort',\n  askDeleteUser: 'Möchten Sie diesen Benutzer wirklich löschen?',\n  askDeleteTemp: 'Möchten Sie diese Vorlage wirklich löschen?',\n  askDeleteEnv: 'Möchten Sie diese Variable-Gruppe wirklich löschen?',\n  askDeleteInv: 'Möchten Sie dieses Inventory wirklich löschen?',\n  askDeleteKey: 'Möchten Sie diesen Schlüssel wirklich löschen?',\n  askDeleteRepo: 'Möchten Sie dieses Repository wirklich löschen?',\n  askDeleteProj: 'Möchten Sie dieses Projekt wirklich löschen?',\n  askDeleteTMem: 'Möchten Sie dieses Teammitglied wirklich löschen?',\n  askDeleteSchedule: 'Möchten Sie diesen Zeitplan wirklich löschen?',\n  edit: 'Bearbeiten',\n  nnew: 'Neu',\n  keyFormSshKey: 'SSH-Schlüssel',\n  keyFormLoginPassword: 'Login mit Passwort',\n  keyFormNone: 'Keine',\n  incorrectUrl: 'Ungültige URL',\n  username: 'Benutzername',\n  username_required: 'Benutzername ist erforderlich',\n  dashboard: 'Dashboard',\n  history: 'Verlauf',\n  activity: 'Aktivität',\n  settings: 'Einstellungen',\n  signIn: 'Anmelden',\n  password: 'Passwort',\n  changePassword: 'Passwort ändern',\n  editUser: 'Benutzer bearbeiten',\n  newProject: 'Neues Projekt',\n  close: 'Schließen',\n  newProject2: 'Neues Projekt...',\n  demoMode: 'DEMO-MODUS',\n  task: 'Task #{expr}',\n  youCanRunAnyTasks: 'Sie können beliebige Tasks ausführen',\n  youHaveReadonlyAccess: 'Sie haben nur Lesezugriff',\n  taskTemplates: 'Task-Vorlagen',\n  inventory: 'Inventory',\n  environment: 'Variablengruppen',\n  keyStore: 'Schlüsselspeicher',\n  repositories: 'Repositories',\n  darkMode: 'Dunkelmodus',\n  team: 'Team',\n  users: 'Benutzer',\n  editAccount: 'Konto bearbeiten',\n  signOut: 'Abmelden',\n  error: 'Fehler',\n  refreshPage: 'Seite neu laden',\n  relogin: 'Neu anmelden',\n  howToFixSigninIssues: 'Wie man Anmeldeprobleme behebt',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Zuerst benötigen Sie Zugriff auf den Server, auf dem Semaphore läuft.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Führen Sie folgenden Befehl auf dem Server aus, um vorhandene Benutzer zu sehen:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Sie können das Passwort eines bestehenden Benutzers ändern:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Oder erstellen Sie einen neuen Admin-Benutzer:',\n  close2: 'Schließen',\n  semaphore: 'SEMAPHORE',\n  dontHaveAccountOrCantSignIn: 'Kein Konto oder Anmeldung nicht möglich?',\n  password2: 'Passwort',\n  cancel: 'Abbrechen',\n  noViews: 'Keine Ansichten',\n  addView: 'Ansicht hinzufügen',\n  editEnvironment: 'Variablengruppe bearbeiten',\n  deleteEnvironment: 'Variablengruppe löschen',\n  newEnvironment: 'Neue Gruppe',\n  environmentName: 'Gruppenname',\n  dockerImage: 'Runner Docker Image (optional)',\n  extraVariables: 'Zusätzliche Variablen',\n  enterExtraVariablesJson: 'Zusätzliche Variablen als JSON eingeben...',\n  environmentVariables: 'Umgebungsvariablen',\n  enterEnvJson: 'Env JSON eingeben...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Variablen müssen gültiges JSON sein. Beispiel:',\n  dashboard2: 'Dashboard',\n  ansibleSemaphore: 'Semaphore UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor:\n    'JavaScript ist deaktiviert. Bitte aktivieren Sie es für die vollständige Funktionalität.',\n  deleteInventory: 'Inventory löschen',\n  newInventory: 'Neues Inventory',\n  name: 'Name',\n  userCredentials: 'Benutzer-Credentials',\n  sudoCredentialsOptional: 'Sudo-Credentials (optional)',\n  type: 'Typ',\n  pathToInventoryFile: 'Pfad zur Inventory-Datei',\n  enterInventory: 'Inventory eingeben...',\n  staticInventoryExample: 'Beispiel statisches Inventory:',\n  staticYamlInventoryExample: 'Beispiel statisches YAML-Inventory:',\n  keyName: 'Schlüsselname',\n  loginOptional: 'Login (optional)',\n  usernameOptional: 'Benutzername (optional)',\n  privateKey: 'Privater Schlüssel',\n  override: 'Überschreiben',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook:\n    'Verwenden Sie diesen Schlüsselt-Typ für HTTPS-Repositories und Playbooks ohne SSH-Verbindungen.',\n  deleteKey: 'Schlüssel löschen',\n  newKey: 'Neuer Schlüssel',\n  create: 'Erstellen',\n  newTask: 'Neuer Task',\n  cantDeleteThe: '{objectTitle} kann nicht gelöscht werden',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow:\n    '{objectTitle} kann nicht gelöscht werden, da es von folgenden Ressourcen verwendet wird',\n  projectName: 'Projektname',\n  allowAlertsForThisProject: 'Benachrichtigungen für dieses Projekt erlauben',\n  telegramChatIdOptional: 'Telegram Chat ID (optional)',\n  maxNumberOfParallelTasksOptional: 'Max. Anzahl paralleler Tasks (optional)',\n  deleteRepository: 'Repository löschen',\n  newRepository: 'Neues Repository',\n  urlOrPath: 'URL oder Pfad',\n  absPath: 'Absoluter Pfad',\n  branch: 'Branch',\n  accessKey: 'Zugangsschlüssel',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Zugangsdaten zum Git Repository. Dies sollte sein:',\n  ifYouUseGitOrSshUrl: 'wenn Sie Git- oder SSH-URL verwenden.',\n  ifYouUseHttpsOrFileUrl: 'wenn Sie HTTPS- oder Datei-URL verwenden.',\n  none: 'Keine',\n  ssh: 'SSH',\n  deleteProject: 'Projekt löschen',\n  save: 'Speichern',\n  deleteProject2: 'Projekt löschen',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer:\n    'Nach dem Löschen eines Projektes gibt es kein Zurück. Bitte seien Sie sicher.',\n\n  clear_cache: 'Cache leeren',\n  clear_cache_message: 'Alle Cache-Dateien für dieses Projekt löschen. Diese Aktion ist irreversibel.',\n\n  name2: 'Name *',\n  title: 'Titel *',\n  description: 'Beschreibung',\n  required: 'Erforderlich',\n  key: '{expr}',\n  surveyVariables: 'Survey-Variablen',\n  addVariable: 'Variable hinzufügen',\n  vaultName: 'Vault ID (optional)',\n  vaultNameDefault: 'Nur ein `default` Name (leer) erlaubt',\n  default_value: 'Standardwert',\n  vaultNameUnique: 'Muss eindeutig sein',\n  vaultTypePassword: 'Passwort',\n  vaultTypeScript: 'Client-Skript',\n  vaultScript: 'Skriptpfad',\n  vaultScriptRequired: 'Skriptpfad ist erforderlich',\n  vaultScriptClientRequired: 'Skriptpfad muss mit \"-client\" und Dateiendung enden',\n  vaults: 'Vaults',\n  vaultAdd: 'Vault hinzufügen',\n  vaultRequired: 'Vault-Passwort ist erforderlich',\n  columns: 'Spalten',\n  buildVersion: 'Build-Version',\n  messageOptional: 'Nachricht (optional)',\n  debug: 'Debug',\n  dryRun: 'Testlauf',\n  diff: 'Diff',\n  advanced: 'Erweitert',\n  hide: 'Ausblenden',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett:\n    'Erlauben Sie das Überschreiben von CLI-Argumenten in den Task-Template-Einstellungen.',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe:\n    'CLI-Argumente (JSON Array). Beispiel: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Gestartet',\n  author: 'Autor',\n  duration: 'Dauer',\n  stop: 'Stoppen',\n  forceStop: 'Erzwingen',\n  stopAll: 'Alle stoppen',\n  stopAllTasks: 'Alle Aufgaben stoppen',\n  askStopAllTasks: 'Sind Sie sicher, dass Sie alle Aufgaben stoppen möchten?',\n  forceStopAllTasks: 'Alle Aufgaben erzwingen stoppen',\n  askForceStopAllTasks: 'Sind Sie sicher, dass Sie alle Aufgaben erzwingen stoppen möchten?',\n  raw_log: 'Roh-Log',\n\n  confirmTask: 'Bestätigen',\n  deleteTeamMember: 'Teammitglied löschen',\n  team2: 'Team',\n  newTeamMember: 'Neues Teammitglied',\n  user: 'Benutzer',\n  administrator: 'Administrator',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Definiert die Startversion des Artefakts. Jeder Lauf erhöht die Version.',\n  forMoreInformationAboutBuildingSeeThe: 'Weitere Informationen zum Build finden Sie in der',\n  taskTemplateReference: 'Task Template Referenz',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definiert, welches Artefakt beim Task ausgeführt wird.',\n  forMoreInformationAboutDeployingSeeThe: 'Weitere Informationen zum Deployment finden Sie in der',\n  taskTemplateReference2: 'Task Template Referenz',\n  definesAutorunSchedule: 'Definiert den automatischen Ausführungszeitplan',\n  forMoreInformationAboutCronSeeThe: 'Mehr über Cron erfahren:',\n  cronExpressionFormatReference: 'Referenz für das Cron-Ausdrucksformat',\n  startVersion: 'Startversion',\n  example000: 'Beispiel: 0.0.0',\n  buildTemplate: 'Build-Vorlage',\n  autorun: 'Auto-Run',\n  playbookFilename: 'Pfad zur Playbook-Datei *',\n  exampleSiteyml: 'Beispiel: deploy/site.yml',\n  inventory2: 'Inventory *',\n  repository: 'Repository',\n  environment3: 'Variablengruppe *',\n  vaultPassword: 'Vault-Passwort',\n  vaultPassword2: 'Vault-Passwort',\n  view: 'Ansicht',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ich möchte einen Task per Cron nur für neue Commits eines Repositories ausführen',\n  repository2: 'Repository',\n  cronChecksNewCommitBeforeRun: 'Cron prüft neue Commits vor der Ausführung',\n  readThe: 'Lesen Sie die',\n  toLearnMoreAboutCron: 'um mehr über Cron zu erfahren.',\n  suppressSuccessAlerts: 'Erfolgsbenachrichtigungen unterdrücken',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2:\n    'CLI-Argumente (JSON Array). Beispiel: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI-Argumente',\n  docs: 'Dokumentation',\n  editViews: 'Ansichten bearbeiten',\n  newTemplate: 'Neue Vorlage',\n  taskTemplates2: 'Task-Vorlagen',\n  all: 'Alle',\n  notLaunched: 'Nicht gestartet',\n  by: 'von {user_name}',\n  editTemplate: 'Vorlage bearbeiten',\n  newTemplate2: 'Neue Vorlage',\n  deleteTemplate: 'Vorlage löschen',\n  playbook: 'Playbook',\n  email: 'E-Mail',\n  adminUser: 'Admin-Benutzer',\n  sendAlerts: 'Benachrichtigungen senden',\n  deleteUser: 'Benutzer löschen',\n  newUser: 'Neuer Benutzer',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Teammitglied',\n  taskId: 'Task-ID',\n  version: 'Version',\n  status: 'Status',\n  start: 'Start',\n  actions: 'Aktionen',\n  alert: 'Benachrichtigungen',\n  admin: 'Admin',\n  role: 'Rolle',\n  external: 'Extern',\n  time: 'Zeit',\n  path: 'Pfad',\n  gitUrl: 'Git-URL',\n  sshKey: 'SSH-Schlüssel',\n  lastTask: 'Letzter Task',\n  task2: 'Task',\n  build: 'Build',\n  deploy: 'Deployment',\n  run: 'Ausführen',\n  add: 'Hinzufügen',\n  password_required: 'Passwort ist erforderlich',\n  name_required: 'Name ist erforderlich',\n  user_credentials_required: 'Benutzer-Credentials erforderlich',\n  type_required: 'Typ ist erforderlich',\n  path_required: 'Pfad zur Inventory-Datei ist erforderlich',\n  private_key_required: 'Privater Schlüssel ist erforderlich',\n  project_name_required: 'Projektname ist erforderlich',\n  repository_required: 'Repository ist erforderlich',\n  branch_required: 'Branch ist erforderlich',\n  key_required: 'Schlüssel ist erforderlich',\n  user_required: 'Benutzer ist erforderlich',\n  build_version_required: 'Build-Version ist erforderlich',\n  title_required: 'Titel ist erforderlich',\n  isRequired: 'ist erforderlich',\n  mustBeInteger: 'Muss eine ganze Zahl sein',\n  mustBe0OrGreater: 'Muss >= 0 sein',\n  start_version_required: 'Startversion ist erforderlich',\n  playbook_filename_required: 'Playbook-Dateiname ist erforderlich',\n  inventory_required: 'Inventory ist erforderlich',\n  environment_required: 'Variablengruppe ist erforderlich',\n  email_required: 'E-Mail ist erforderlich',\n  build_template_required: 'Build-Vorlage ist erforderlich',\n  Task: 'Task',\n  Build: 'Build',\n  Deploy: 'Deployment',\n  Run: 'Ausführen',\n  ReBuild: 'Neu Builden',\n  ReDeploy: 'Neu Deployen',\n  ReRun: 'Erneut Ausführen',\n  CreateDemoProject: 'Demo-Projekt erstellen',\n  LeaveProject: 'Projekt verlassen',\n  integration: 'Integration',\n  integrations: 'Integrationen',\n  NewIntegration: 'Neue Integration',\n  EditIntegration: 'Integration bearbeiten',\n  DeleteIntegration: 'Integration löschen',\n  DeleteIntegrationMsg: 'Möchten Sie diese Integration wirklich löschen?',\n  AddAlias: 'Alias hinzufügen',\n  LoadAlias: 'Lade Aliase...',\n  globalAlias: 'Projektalias verwenden',\n  matcher: 'Matcher',\n  matchType: 'Vergleichstyp',\n  newMatcher: 'Neuer Matcher',\n  matchMethod: 'Vergleichsmethode',\n  matchBodyDataType: 'Body-Datentyp',\n  extractValue: 'Wert extrahieren',\n  newExtractedValue: 'Neuer extrahierter Wert',\n  extractedValueSource: 'Wertquelle',\n  matchKey: 'Schlüssel',\n  matchValue: 'Wert',\n  matchOn: 'Vergleichen mit',\n  runners: 'Runner',\n  newRunner: 'Neuer Runner',\n  enabled: 'Aktiviert',\n  scheduleNextRun: 'Nächster Lauf',\n  maxNumberOfParallelTasks: 'Max. parallele Tasks',\n  runnerUsage: 'Benutzung:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Runner bearbeiten',\n  deleteRunner: 'Runner löschen',\n  newRunnerToken: 'Neuer Runner',\n  askDeleteRunner: 'Möchten Sie Runner {runner} wirklich löschen?',\n  roles_only_enterprise: 'Rollen sind nur in der <b>Enterprise</b>-Edition verfügbar.',\n  project_runners_only_pro: 'Projektbezogene Runner sind nur für <b>PRO</b>-Benutzer verfügbar.',\n  secret_storage_only_pro: 'Secret-Speicher sind nur für <b>PRO</b>-Benutzer verfügbar.',\n  foss_runners_limited: 'Die Open-Source-Version ist eingeschränkt. Volle Funktionen in der <b>PRO</b>-Version.',\n  learn_more_about_pro: 'Mehr erfahren',\n  upgrade_to_pro: 'Upgrade',\n  contact_admin_to_upgrade: 'Wenden Sie sich an Ihren Admin, um PRO-Funktionen zu aktivieren.',\n  contact_admin_to_upgrade_enterprise: 'Wenden Sie sich an Ihren Admin, um Enterprise-Funktionen zu aktivieren.',\n\n  projectRestoreResult: 'Ergebnis der Projekt-Wiederherstellung',\n  projectWithNameRestored: 'Projekt {projectName} erfolgreich wiederhergestellt.',\n  pleaseUpdateAccessKeys: 'Bitte aktualisieren Sie diese vor dem Ausführen von Tasks.',\n  emptyKeysRestored: '{emptyKeys} leere Schlüssel hinzugefügt.',\n  template: 'Vorlage',\n  aliasUrlCopied: 'Alias-URL wurde in die Zwischenablage kopiert.',\n  yes: 'Ja',\n  activeTasks: 'Aktive Tasks',\n  taskLocation: 'Ort',\n  empty: 'Leer',\n  noValues: 'Keine Werte',\n  addArg: 'Argument hinzufügen',\n\n  status_success: 'Erfolgreich',\n  status_failed: 'Fehlgeschlagen',\n  status_stopped: 'Gestoppt',\n\n  api_tokens: 'API-Tokens',\n\n  // Terraform/OpenTofu/Terragrunt\n  auto_approve: 'Auto-Akzeptieren',\n  auto_destroy: 'Löschen erlauben',\n  terraform_override_backend: 'Backend-Einstellungen überschreiben',\n  terraform_backend_filename: 'Backend-Dateiname (Standard: backend.tf)',\n  terraform_invalid_backend_filename: 'Ungültiger Backend-Dateiname',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag ist erforderlich',\n  allowInventoryInTask: 'Inventory',\n  allowLimitInTask: 'Limit',\n  addLimit: 'Limit hinzufügen',\n  allowDebug: 'Debug erlauben',\n  addTag: 'Tag hinzufügen',\n  skipTags: 'Tags überspringen',\n  addSkippedTag: 'Übersprungenen Tag hinzufügen',\n  tags: 'Tags',\n  limit: 'Limit',\n\n  runner_tag: 'Runner-Tag',\n  allow_parallel_tasks: 'Parallele Tasks erlauben',\n  task_prompts: 'Prompts',\n  template_advanced: 'Erweiterte Optionen',\n  template_app_options: '{app}-Optionen',\n  template_app_prompts: '{app}-Prompts',\n  general_settings: 'Allgemein',\n  danger_zone_settings: 'Gefahrenzone',\n  project_stats: 'Statistiken',\n  allow_override_branch: 'Branch überschreiben',\n  template_common_options: 'Allgemeine Optionen',\n\n  template_tasks: 'Tasks',\n  template_details: 'Details',\n  template_tf_workspaces: 'Workspaces',\n\n  // Rollen\n  slug: 'Slug',\n  slug_required: 'Slug ist erforderlich',\n  slugHint: 'Eindeutige ID (kleinbuchstaben, alphanumerisch, Unterstrich/Bindestrich erlaubt)',\n  invalidSlugFormat:\n    'Slug muss kleingeschrieben, alphanumerisch und mit Unterstrichen/Bindestrichen sein',\n  permissions: 'Berechtigungen',\n  canRunProjectTasks: 'Kann Projekt-Tasks ausführen',\n  canUpdateProject: 'Kann Projekt aktualisieren',\n  canManageProjectResources: 'Kann Ressourcen verwalten',\n  canManageProjectUsers: 'Kann Benutzer verwalten',\n  newRole: 'Neue Rolle',\n  editRole: 'Rolle bearbeiten',\n  deleteRole: 'Rolle löschen',\n  askDeleteRole: 'Möchten Sie diese Rolle wirklich löschen?',\n  Roles: 'Rollen',\n  role_required: 'Rolle ist erforderlich',\n\n  templatePermission: 'Vorlagenrechte',\n};\n"
  },
  {
    "path": "web/src/lang/en.js",
    "content": "export default {\n  checkInterval: 'checkInterval',\n  newCommitCheckInterval: 'New commit check interval',\n  schedule: 'Schedule',\n  newSchedule: 'New Schedule',\n  deleteSchedule: 'Delete Schedule',\n  editSchedule: 'Edit Schedule',\n  backup: 'Backup Project',\n  downloadTheProjectBackupFile: 'Download the project backup file.',\n  restoreProject: 'Restore Project...',\n  incorrectUsrPwd: 'Incorrect login or password',\n  askDeleteUser: 'Do you really want to delete this user?',\n  askDeleteTemp: 'Do you really want to delete this template?',\n  askDeleteEnv: 'Do you really want to delete this environment?',\n  askDeleteInv: 'Do you really want to delete this inventor?',\n  askDeleteKey: 'Do you really want to delete this key?',\n  askDeleteRepo: 'Do you really want to delete this repository?',\n  askDeleteProj: 'Do you really want to delete this project?',\n  askDeleteTMem: 'Do you really want to delete this team member?',\n  askDeleteSchedule: 'Do you really want to delete this schedule?',\n  edit: 'Edit',\n  nnew: 'New',\n  keyFormSshKey: 'SSH Key',\n  keyFormLoginPassword: 'Login with password',\n  keyFormNone: 'None',\n  incorrectUrl: 'Incorrect URL',\n  username: 'Username',\n  username_required: 'Username is required',\n  dashboard: 'Dashboard',\n  history: 'History',\n  activity: 'Activity',\n  settings: 'Settings',\n  signIn: 'Sign In',\n  password: 'Password',\n  changePassword: 'Change password',\n  editUser: 'Edit User',\n  newProject: 'New Project',\n  close: 'Close',\n  newProject2: 'New Project...',\n  demoMode: 'DEMO MODE',\n  task: 'Task #{expr}',\n  youCanRunAnyTasks: 'You can run any tasks',\n  youHaveReadonlyAccess: 'You have read-only access',\n  taskTemplates: 'Task Templates',\n  inventory: 'Inventory',\n  environment: 'Variable Groups',\n  keyStore: 'Key Store',\n  repositories: 'Repositories',\n  darkMode: 'Dark Mode',\n  team: 'Team',\n  users: 'Users',\n  editAccount: 'Edit Account',\n  signOut: 'Sign Out',\n  error: 'Error',\n  refreshPage: 'Refresh Page',\n  relogin: 'Relogin',\n  howToFixSigninIssues: 'How to fix sign-in issues',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Firstly, you need access to the server where Semaphore running.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute the following command on the server to see existing users:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'You can change password of existing user:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Or create new admin user:',\n  close2: 'Close',\n  semaphore: 'SEMAPHORE',\n  dontHaveAccountOrCantSignIn: 'Don\\'t have account or can\\'t sign in?',\n  password2: 'Password',\n  cancel: 'Cancel',\n  noViews: 'No views',\n  addView: 'Add view',\n  editEnvironment: 'Edit Variable Group',\n  deleteEnvironment: 'Delete variable group',\n  newEnvironment: 'New Group',\n  environmentName: 'Group Name',\n  dockerImage: 'Runner Docker Image (optional)',\n  extraVariables: 'Extra variables',\n  enterExtraVariablesJson: 'Enter extra variables JSON...',\n  environmentVariables: 'Environment variables',\n  enterEnvJson: 'Enter env JSON...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Environment and extra variables must be valid JSON. Example:',\n  dashboard2: 'Dashboard',\n  ansibleSemaphore: 'Semaphore UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'We\\'re sorry but <%= htmlWebpackPlugin.options.title %> doesn\\'t work properly without JavaScript enabled. Please enable it to continue.',\n  deleteInventory: 'Delete inventory',\n  newInventory: 'New Inventory',\n  name: 'Name',\n  userCredentials: 'User Credentials',\n  sudoCredentialsOptional: 'Sudo Credentials (Optional)',\n  type: 'Type',\n  pathToInventoryFile: 'Path to Inventory file',\n  enterInventory: 'Enter inventory...',\n  staticInventoryExample: 'Static inventory example:',\n  staticYamlInventoryExample: 'Static YAML inventory example:',\n  keyName: 'Key Name',\n  loginOptional: 'Login (Optional)',\n  usernameOptional: 'Username (Optional)',\n  privateKey: 'Private Key',\n  override: 'Override',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use this type of key for HTTPS repositories and for playbooks which use non-SSH connections.',\n  deleteKey: 'Delete key',\n  newKey: 'New Key',\n  create: 'Create',\n  newTask: 'New Task',\n  cantDeleteThe: 'Can\\'t delete the {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'The {objectTitle} can\\'t be deleted because it used by the resources below',\n  projectName: 'Project Name',\n  allowAlertsForThisProject: 'Allow alerts for this project',\n  telegramChatIdOptional: 'Telegram Chat ID (Optional)',\n  maxNumberOfParallelTasksOptional: 'Max number of parallel tasks (Optional)',\n  deleteRepository: 'Delete repository',\n  newRepository: 'New Repository',\n  urlOrPath: 'URL or path',\n  absPath: 'abs. path',\n  branch: 'Branch',\n  accessKey: 'Access Key',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Credentials to access to the Git repository. It should be:',\n  ifYouUseGitOrSshUrl: 'if you use Git or SSH URL.',\n  ifYouUseHttpsOrFileUrl: 'if you use HTTPS or file URL.',\n  none: 'None',\n  ssh: 'SSH',\n  deleteProject: 'Delete project',\n  save: 'Save',\n  deleteProject2: 'Delete Project',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Once you delete a project, there is no going back. Please be certain.',\n\n  clear_cache: 'Clear cache',\n  clear_cache_message: 'Delete all cache files related to this project. This action is irreversible.',\n\n  name2: 'Name *',\n  title: 'Title *',\n  description: 'Description',\n  required: 'Required',\n  key: '{expr}',\n  surveyVariables: 'Survey Variables',\n  addVariable: 'Add variable',\n  vaultName: 'Vault ID (optional)',\n  vaultNameDefault: 'Only one `default` (empty) name may exist',\n  default_value: 'Default value',\n  vaultNameUnique: 'Must be unique',\n  vaultTypePassword: 'Password',\n  vaultTypeScript: 'Client Script',\n  vaultScript: 'Script Path',\n  vaultScriptRequired: 'Script Path is required',\n  vaultScriptClientRequired: 'Script path must end with \\'-client\\' and extension',\n  vaults: 'Vaults',\n  vaultAdd: 'Add Vault',\n  vaultRequired: 'Vault Password is required',\n  columns: 'Columns',\n  buildVersion: 'Build Version',\n  messageOptional: 'Message (Optional)',\n  debug: 'Debug',\n  dryRun: 'Dry Run',\n  diff: 'Diff',\n  advanced: 'Advanced',\n  hide: 'Hide',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'To allow overriding CLI argument in Task Template settings',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI Args (JSON array). Example: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Started',\n  author: 'Author',\n  duration: 'Duration',\n  stop: 'Stop',\n  forceStop: 'Force Stop',\n  stopAll: 'Stop All',\n  stopAllTasks: 'Stop All Tasks',\n  askStopAllTasks: 'Are you sure you want to stop all tasks?',\n  forceStopAllTasks: 'Force Stop All Tasks',\n  askForceStopAllTasks: 'Are you sure you want to force stop all tasks?',\n  raw_log: 'Raw log',\n\n  confirmTask: 'Confirm',\n  deleteTeamMember: 'Delete team member',\n  team2: 'Team',\n  newTeamMember: 'New Team Member',\n  user: 'User',\n  administrator: 'Administrator',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Defines start version of your artifact. Each run increments the artifact version.',\n  forMoreInformationAboutBuildingSeeThe: 'For more information about building, see the',\n  taskTemplateReference: 'Task Template reference',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Defines what artifact should be deployed when the task run.',\n  forMoreInformationAboutDeployingSeeThe: 'For more information about deploying, see the',\n  taskTemplateReference2: 'Task Template reference',\n  definesAutorunSchedule: 'Defines autorun schedule.',\n  forMoreInformationAboutCronSeeThe: 'For more information about cron, see the',\n  cronExpressionFormatReference: 'Cron expression format reference',\n  startVersion: 'Start Version',\n  example000: 'Example: 0.0.0',\n  buildTemplate: 'Build Template',\n  autorun: 'Autorun',\n  playbookFilename: 'Path to playbook file *',\n  exampleSiteyml: 'Example: deploy/site.yml',\n  inventory2: 'Inventory *',\n  repository: 'Repository',\n  environment3: 'Variable Group *',\n  vaultPassword: 'Vault Password',\n  vaultPassword2: 'Vault Password',\n  view: 'View',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Auto-run task if new git commit have been found',\n  repository2: 'Repository',\n  cronChecksNewCommitBeforeRun: 'Cron checks new commit before run',\n  readThe: 'Read the',\n  toLearnMoreAboutCron: 'to learn more about Cron.',\n  suppressSuccessAlerts: 'Suppress success notifications',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI Args (JSON array). Example: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI args',\n  docs: 'docs',\n  editViews: 'Edit Views',\n  newTemplate: 'New template',\n  taskTemplates2: 'Task Templates',\n  all: 'All',\n  notLaunched: 'Not launched',\n  by: 'by {user_name}',\n  editTemplate: 'Edit Template',\n  newTemplate2: 'New Template',\n  deleteTemplate: 'Delete template',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Admin user',\n  sendAlerts: 'Send alerts',\n  deleteUser: 'Delete user',\n  newUser: 'New User',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Team Member',\n  taskId: 'Task ID',\n  version: 'Version',\n  status: 'Status',\n  start: 'Start',\n  actions: 'Actions',\n  alert: 'Alert',\n  admin: 'Admin',\n  role: 'Role',\n  external: 'External',\n  time: 'Time',\n  path: 'Path',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH Key',\n  lastTask: 'Last Task',\n  task2: 'Task',\n  build: 'Build',\n  deploy: 'Deploy',\n  run: 'Run',\n  add: 'Add',\n  password_required: 'Password is required',\n  name_required: 'Name is required',\n  user_credentials_required: 'User credentials are required',\n  type_required: 'Type is required',\n  path_required: 'Path to Inventory file is required',\n  private_key_required: 'Private key is required',\n  project_name_required: 'Project name is required',\n  repository_required: 'Repository is required',\n  branch_required: 'Branch is required',\n  key_required: 'Key is required',\n  user_required: 'User is required',\n  build_version_required: 'Build version is required',\n  title_required: 'Title is required',\n  isRequired: 'is required',\n  mustBeInteger: 'Must be integer',\n  mustBe0OrGreater: 'Must be 0 or greater',\n  start_version_required: 'Start version is required',\n  playbook_filename_required: 'Playbook filename is required',\n  inventory_required: 'Inventory is required',\n  environment_required: 'Environment is required',\n  email_required: 'Email is required',\n  build_template_required: 'Build template is required',\n  Task: 'Task',\n  Build: 'Build',\n  Deploy: 'Deploy',\n  Run: 'Run',\n  ReBuild: 'Rebuild',\n  ReDeploy: 'Redeploy',\n  ReRun: 'Rerun',\n  CreateDemoProject: 'Create Demo Project',\n  LeaveProject: 'Leave Project',\n  integration: 'Integration',\n  integrations: 'Integrations',\n  NewIntegration: 'New Integration',\n  EditIntegration: 'Edit Integration',\n  DeleteIntegration: 'Delete Integration',\n  DeleteIntegrationMsg: 'Are you sure you want to delete this Integration?',\n  AddAlias: 'Add Alias',\n  LoadAlias: 'Loading aliases...',\n  globalAlias: 'Use project alias',\n  matcher: 'Matcher',\n  matchType: 'Match Type',\n  newMatcher: 'New Matcher',\n  matchMethod: 'Comparison Method',\n  matchBodyDataType: 'Body Data Type',\n  extractValue: 'Extract Value',\n  newExtractedValue: 'New Extracted Value',\n  extractedValueSource: 'Value Source',\n  matchKey: 'Key',\n  matchValue: 'Value',\n  matchOn: 'Match on',\n  runners: 'Runners',\n  newRunner: 'New Runner',\n  enabled: 'Enabled',\n  scheduleNextRun: 'Next run',\n  maxNumberOfParallelTasks: 'Maximum parallel tasks',\n  runnerUsage: 'Usage:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Edit Runner',\n  deleteRunner: 'Delete Runner',\n  newRunnerToken: 'New Runner',\n  askDeleteRunner: 'Do you really want to delete runner {runner}?',\n  roles_only_enterprise: 'Roles are only available in <b>Enterprise</b> edition.',\n  project_runners_only_pro: 'Project-level runners are only available for <b>PRO</b> users.',\n  secret_storage_only_pro: 'Secret storages are only available for <b>PRO</b> users.',\n  foss_runners_limited: 'The open-source version has limited functionality; full functionality is in the <b>PRO</b> version.',\n  learn_more_about_pro: 'Learn more',\n  upgrade_to_pro: 'Upgrade',\n  contact_admin_to_upgrade: 'Contact your admin to activate PRO features.',\n  contact_admin_to_upgrade_enterprise: 'Contact your admin to activate Enterprise features.',\n\n  projectRestoreResult: 'Project restore results',\n  projectWithNameRestored: 'Project {projectName} successfully restored.',\n  pleaseUpdateAccessKeys: 'Please update them before running tasks.',\n  emptyKeysRestored: '{emptyKeys} empty keys added.',\n  template: 'Template',\n  aliasUrlCopied: 'The alias URL has been copied to the clipboard.',\n  yes: 'Yes',\n  activeTasks: 'Active Tasks',\n  taskLocation: 'Location',\n  empty: 'Empty',\n  noValues: 'No values',\n  addArg: 'Add arg',\n\n  status_success: 'Success',\n  status_failed: 'Failed',\n  status_stopped: 'Stopped',\n\n  api_tokens: 'API Tokens',\n\n  // Terraform/OpenTofu/Terragrunt\n  auto_approve: 'Auto approve',\n  auto_destroy: 'Allow destroy',\n  terraform_override_backend: 'Override backend settings',\n  terraform_backend_filename: 'Backend filename (default: backend.tf)',\n  terraform_invalid_backend_filename: 'Invalid backend filename',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag is required',\n  allowInventoryInTask: 'Inventory',\n  allowLimitInTask: 'Limit',\n  addLimit: 'Add limit',\n  allowDebug: 'Debug',\n  addTag: 'Add tag',\n  skipTags: 'Skip tags',\n  addSkippedTag: 'Add skipped tag',\n  tags: 'Tags',\n  limit: 'Limit',\n\n  runner_tag: 'Runner tag',\n  allow_parallel_tasks: 'Allow parallel tasks',\n  task_prompts: 'Prompts',\n  template_advanced: 'Advanced options',\n  template_app_options: '{app} options',\n  template_app_prompts: '{app} prompts',\n  general_settings: 'General',\n  danger_zone_settings: 'Danger Zone',\n  project_stats: 'Stats',\n  allow_override_branch: 'Branch',\n  template_common_options: 'Common options',\n\n  template_tasks: 'Tasks',\n  template_details: 'Details',\n  template_tf_workspaces: 'Workspaces',\n\n  // Role-related translations\n  slug: 'Slug',\n  slug_required: 'Slug is required',\n  slugHint: 'Unique identifier (lowercase, alphanumeric, underscores and hyphens only)',\n  invalidSlugFormat: 'Slug must be lowercase, alphanumeric with underscores/hyphens only',\n  permissions: 'Permissions',\n  canRunProjectTasks: 'Can run project tasks',\n  canUpdateProject: 'Can update project',\n  canManageProjectResources: 'Can manage project resources',\n  canManageProjectUsers: 'Can manage project users',\n  newRole: 'New Role',\n  editRole: 'Edit Role',\n  deleteRole: 'Delete Role',\n  askDeleteRole: 'Do you really want to delete this role?',\n  Roles: 'Roles',\n  role_required: 'Role is required',\n\n  templatePermission: 'Template permissions',\n};\n"
  },
  {
    "path": "web/src/lang/es.js",
    "content": "export default {\n  checkInterval: 'intervaloDeVerificación',\n  newCommitCheckInterval: 'Nuevo intervalo de verificación de commits',\n  schedule: 'Horario',\n  newSchedule: 'Nuevo Horario',\n  deleteSchedule: 'Eliminar Horario',\n  editSchedule: 'Editar Horario',\n  backup: 'Respaldo del Proyecto',\n  downloadTheProjectBackupFile: 'Descargar el archivo de respaldo del proyecto.',\n  restoreProject: 'Restaurar Proyecto...',\n  incorrectUsrPwd: 'Usuario o contraseña incorrectos',\n  askDeleteUser: '¿Realmente quieres eliminar a este usuario?',\n  askDeleteTemp: '¿Realmente quieres eliminar esta plantilla?',\n  askDeleteEnv: '¿Realmente quieres eliminar este entorno?',\n  askDeleteInv: '¿Realmente quieres eliminar este inventario?',\n  askDeleteKey: '¿Realmente quieres eliminar esta clave?',\n  askDeleteRepo: '¿Realmente quieres eliminar este repositorio?',\n  askDeleteProj: '¿Realmente quieres eliminar este proyecto?',\n  askDeleteTMem: '¿Realmente quieres eliminar a este miembro del equipo?',\n  askDeleteSchedule: '¿Realmente quieres eliminar este horario?',\n  edit: 'Editar',\n  nnew: 'Nuevo',\n  keyFormSshKey: 'Clave SSH',\n  keyFormLoginPassword: 'Iniciar sesión con contraseña',\n  keyFormNone: 'Ninguno',\n  incorrectUrl: 'URL incorrecta',\n  username: 'Nombre de usuario',\n  username_required: 'Se requiere nombre de usuario',\n  dashboard: 'Tablero',\n  history: 'Historia',\n  activity: 'Actividad',\n  settings: 'Configuraciones',\n  signIn: 'Iniciar Sesión',\n  password: 'Contraseña',\n  changePassword: 'Cambiar contraseña',\n  editUser: 'Editar Usuario',\n  newProject: 'Nuevo Proyecto',\n  close: 'Cerrar',\n  newProject2: 'Nuevo Proyecto...',\n  demoMode: 'MODO DEMO',\n  task: 'Tarea #{expr}',\n  youCanRunAnyTasks: 'Puedes ejecutar cualquier tarea',\n  youHaveReadonlyAccess: 'Tienes acceso de solo lectura',\n  taskTemplates: 'Plantillas de Tareas',\n  inventory: 'Inventario',\n  environment: 'Grupos de Variables',\n  keyStore: 'Almacén de Claves',\n  repositories: 'Repositorios',\n  darkMode: 'Modo Oscuro',\n  team: 'Equipo',\n  users: 'Usuarios',\n  editAccount: 'Editar Cuenta',\n  signOut: 'Cerrar Sesión',\n  error: 'Error',\n  refreshPage: 'Actualizar Página',\n  relogin: 'Reiniciar sesión',\n  howToFixSigninIssues: 'Cómo solucionar problemas de inicio de sesión',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primero, necesitas acceso al servidor donde se ejecuta Semaphore.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Ejecuta el siguiente comando en el servidor para ver los usuarios existentes:',\n  semaphoreUserList: 'lista de usuarios de semaphore',\n  youCanChangePasswordOfExistingUser: 'Puedes cambiar la contraseña de un usuario existente:',\n  semaphoreUserChangebyloginLoginUser123Password: 'cambio de usuario de semaphore --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'O crea un nuevo usuario administrador:',\n  close2: 'Cerrar',\n  semaphore: 'SEMÁFORO',\n  dontHaveAccountOrCantSignIn: '¿No tienes cuenta o no puedes iniciar sesión?',\n  password2: 'Contraseña',\n  cancel: 'Cancelar',\n  noViews: 'Sin vistas',\n  addView: 'Agregar vista',\n  editEnvironment: 'Editar Grupo de Variables',\n  deleteEnvironment: 'Eliminar grupo de variables',\n  newEnvironment: 'Nuevo Grupo',\n  environmentName: 'Nombre del Grupo',\n  extraVariables: 'Variables adicionales',\n  enterExtraVariablesJson: 'Ingresa variables adicionales en JSON...',\n  environmentVariables: 'Variables de entorno',\n  enterEnvJson: 'Ingresa JSON de entorno...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'El entorno y las variables adicionales deben ser JSON válidos. Ejemplo:',\n  dashboard2: 'Tablero',\n  ansibleSemaphore: 'Interfaz de Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lo sentimos, pero <%= htmlWebpackPlugin.options.title %> no funciona correctamente sin JavaScript habilitado. Por favor, habilítalo para continuar.',\n  deleteInventory: 'Eliminar inventario',\n  newInventory: 'Nuevo Inventario',\n  name: 'Nombre',\n  userCredentials: 'Credenciales de Usuario',\n  sudoCredentialsOptional: 'Credenciales de Sudo (Opcional)',\n  type: 'Tipo',\n  pathToInventoryFile: 'Ruta al archivo de Inventario',\n  enterInventory: 'Ingresa inventario...',\n  staticInventoryExample: 'Ejemplo de inventario estático:',\n  staticYamlInventoryExample: 'Ejemplo de inventario YAML estático:',\n  keyName: 'Nombre de la Clave',\n  loginOptional: 'Inicio de sesión (Opcional)',\n  usernameOptional: 'Nombre de usuario (Opcional)',\n  privateKey: 'Clave Privada',\n  override: 'Sobrescribir',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Usa este tipo de clave para repositorios HTTPS y para playbooks que utilizan conexiones no SSH.',\n  deleteKey: 'Eliminar clave',\n  newKey: 'Nueva Clave',\n  create: 'Crear',\n  newTask: 'Nueva Tarea',\n  cantDeleteThe: 'No se puede eliminar el {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'El {objectTitle} no se puede eliminar porque está siendo utilizado por los recursos a continuación',\n  projectName: 'Nombre del Proyecto',\n  allowAlertsForThisProject: 'Permitir alertas para este proyecto',\n  telegramChatIdOptional: 'ID de Chat de Telegram (Opcional)',\n  maxNumberOfParallelTasksOptional: 'Número máximo de tareas paralelas (Opcional)',\n  deleteRepository: 'Eliminar repositorio',\n  newRepository: 'Nuevo Repositorio',\n  urlOrPath: 'URL o ruta',\n  absPath: 'ruta abs.',\n  branch: 'Rama',\n  accessKey: 'Clave de Acceso',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciales para acceder al repositorio de Git. Debe ser:',\n  ifYouUseGitOrSshUrl: 'si usas URL de Git o SSH.',\n  ifYouUseHttpsOrFileUrl: 'si usas URL de HTTPS o archivo.',\n  none: 'Ninguno',\n  ssh: 'SSH',\n  deleteProject: 'Eliminar proyecto',\n  save: 'Guardar',\n  deleteProject2: 'Eliminar Proyecto',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una vez que eliminas un proyecto, no hay vuelta atrás. Por favor, asegúrate.',\n\n  clear_cache: 'Limpiar caché',\n  clear_cache_message: 'Eliminar todos los archivos de caché relacionados con este proyecto. Esta acción es irreversible.',\n\n  name2: 'Nombre *',\n  title: 'Título *',\n  description: 'Descripción',\n  required: 'Requerido',\n  key: '{expr}',\n  surveyVariables: 'Variables de Encuesta',\n  addVariable: 'Agregar variable',\n  vaultName: 'ID de Bóveda (opcional)',\n  vaultNameDefault: 'Solo puede existir un nombre `default` (vacío)',\n  vaultNameUnique: 'Debe ser único',\n  vaultTypePassword: 'Contraseña',\n  vaultTypeScript: 'Script del Cliente',\n  vaultScript: 'Ruta del Script',\n  vaultScriptRequired: 'La ruta del script es requerida',\n  vaultScriptClientRequired: 'La ruta del script debe terminar con \\'-client\\' y extensión',\n  vaults: 'Bóvedas',\n  vaultAdd: 'Agregar Bóveda',\n  vaultRequired: 'Se requiere la Contraseña de la Bóveda',\n  columns: 'Columnas',\n  buildVersion: 'Versión de Construcción',\n  messageOptional: 'Mensaje (Opcional)',\n  debug: 'Depurar',\n  dryRun: 'Ejecución en Seco',\n  diff: 'Diferencia',\n  advanced: 'Avanzado',\n  hide: 'Ocultar',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir sobrescribir el argumento CLI en la configuración de la Plantilla de Tarea',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Ejemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Iniciado',\n  author: 'Autor',\n  duration: 'Duración',\n  stop: 'Detener',\n  forceStop: 'Detener Forzosamente',\n  stopAll: 'Detener todo',\n  stopAllTasks: 'Detener todas las tareas',\n  askStopAllTasks: '¿Está seguro de que desea detener todas las tareas?',\n  forceStopAllTasks: 'Detener forzosamente todas las tareas',\n  askForceStopAllTasks: '¿Está seguro de que desea detener forzosamente todas las tareas?',\n  raw_log: 'Registro en bruto',\n\n  confirmTask: 'Confirmar',\n  deleteTeamMember: 'Eliminar miembro del equipo',\n  team2: 'Equipo',\n  newTeamMember: 'Nuevo Miembro del Equipo',\n  user: 'Usuario',\n  administrator: 'Administrador',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Define la versión inicial de tu artefacto. Cada ejecución incrementa la versión del artefacto.',\n  forMoreInformationAboutBuildingSeeThe: 'Para más información sobre la construcción, consulta el',\n  taskTemplateReference: 'Referencia de Plantilla de Tarea',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qué artefacto debe ser desplegado cuando se ejecute la tarea.',\n  forMoreInformationAboutDeployingSeeThe: 'Para más información sobre el despliegue, consulta el',\n  taskTemplateReference2: 'Referencia de Plantilla de Tarea',\n  definesAutorunSchedule: 'Define el horario de autorun.',\n  forMoreInformationAboutCronSeeThe: 'Para más información sobre cron, consulta el',\n  cronExpressionFormatReference: 'Referencia de formato de expresión cron',\n  startVersion: 'Versión Inicial',\n  example000: 'Ejemplo: 0.0.0',\n  buildTemplate: 'Plantilla de Construcción',\n  autorun: 'Autorun',\n  playbookFilename: 'Ruta al archivo de playbook *',\n  exampleSiteyml: 'Ejemplo: deploy/site.yml',\n  inventory2: 'Inventario *',\n  repository: 'Repositorio',\n  environment3: 'Grupo de Variables *',\n  vaultPassword: 'Contraseña de la Bóveda',\n  vaultPassword2: 'Contraseña de la Bóveda',\n  view: 'Vista',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quiero ejecutar una tarea por cron solo para nuevos commits de algún repositorio',\n  repository2: 'Repositorio',\n  cronChecksNewCommitBeforeRun: 'Cron verifica nuevos commits antes de ejecutar',\n  readThe: 'Lee el',\n  toLearnMoreAboutCron: 'para aprender más sobre Cron.',\n  suppressSuccessAlerts: 'Suprimir alertas de éxito',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Ejemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Argumentos CLI',\n  docs: 'documentos',\n  editViews: 'Editar Vistas',\n  newTemplate: 'Nueva plantilla',\n  taskTemplates2: 'Plantillas de Tareas',\n  all: 'Todo',\n  notLaunched: 'No lanzado',\n  by: 'por {user_name}',\n  editTemplate: 'Editar Plantilla',\n  newTemplate2: 'Nueva Plantilla',\n  deleteTemplate: 'Eliminar plantilla',\n  playbook: 'Playbook',\n  email: 'Correo Electrónico',\n  adminUser: 'Usuario Administrador',\n  sendAlerts: 'Enviar alertas',\n  deleteUser: 'Eliminar usuario',\n  newUser: 'Nuevo Usuario',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Miembro del Equipo',\n  taskId: 'ID de Tarea',\n  version: 'Versión',\n  status: 'Estado',\n  start: 'Iniciar',\n  actions: 'Acciones',\n  alert: 'Alerta',\n  admin: 'Admin',\n  role: 'Rol',\n  external: 'Externo',\n  time: 'Tiempo',\n  path: 'Ruta',\n  gitUrl: 'URL de Git',\n  sshKey: 'Clave SSH',\n  lastTask: 'Última Tarea',\n  task2: 'Tarea',\n  build: 'Construir',\n  deploy: 'Desplegar',\n  run: 'Ejecutar',\n  add: 'Agregar',\n  password_required: 'Se requiere contraseña',\n  name_required: 'Se requiere nombre',\n  user_credentials_required: 'Se requieren credenciales de usuario',\n  type_required: 'Se requiere tipo',\n  path_required: 'Se requiere ruta al archivo de Inventario',\n  private_key_required: 'Se requiere clave privada',\n  project_name_required: 'Se requiere nombre del proyecto',\n  repository_required: 'Se requiere repositorio',\n  branch_required: 'Se requiere rama',\n  key_required: 'Se requiere clave',\n  user_required: 'Se requiere usuario',\n  build_version_required: 'Se requiere versión de construcción',\n  title_required: 'Se requiere título',\n  isRequired: 'es requerido',\n  mustBeInteger: 'Debe ser un número entero',\n  mustBe0OrGreater: 'Debe ser 0 o mayor',\n  start_version_required: 'Se requiere versión inicial',\n  playbook_filename_required: 'Se requiere nombre de archivo de playbook',\n  inventory_required: 'Se requiere inventario',\n  environment_required: 'Se requiere entorno',\n  email_required: 'Se requiere correo electrónico',\n  build_template_required: 'Se requiere plantilla de construcción',\n  Task: 'Tarea',\n  Build: 'Construir',\n  Deploy: 'Desplegar',\n  Run: 'Ejecutar',\n  ReBuild: 'Reconstruir',\n  ReDeploy: 'Re-desplegar',\n  ReRun: 'Re-ejecutar',\n  CreateDemoProject: 'Crear Proyecto Demo',\n  LeaveProject: 'Salir del Proyecto',\n  integration: 'Integración',\n  integrations: 'Integraciones',\n  NewIntegration: 'Nueva Integración',\n  EditIntegration: 'Editar Integración',\n  DeleteIntegration: 'Eliminar Integración',\n  DeleteIntegrationMsg: '¿Estás seguro de que deseas eliminar esta Integración?',\n  AddAlias: 'Agregar Alias',\n  LoadAlias: 'Cargando alias...',\n  globalAlias: 'Usar alias del proyecto',\n  matcher: 'Comparador',\n  matchType: 'Tipo de Comparación',\n  newMatcher: 'Nuevo Comparador',\n  matchMethod: 'Método de Comparación',\n  matchBodyDataType: 'Tipo de Datos del Cuerpo',\n  extractValue: 'Extraer Valor',\n  newExtractedValue: 'Nuevo Valor Extraído',\n  extractedValueSource: 'Fuente del Valor',\n  matchKey: 'Clave',\n  matchValue: 'Valor',\n  matchOn: 'Comparar en',\n  runners: 'Ejecutores',\n  newRunner: 'Nuevo Ejecutor',\n  enabled: 'Habilitado',\n  scheduleNextRun: 'Próxima ejecución',\n  maxNumberOfParallelTasks: 'Número máximo de tareas paralelas',\n  runnerUsage: 'Uso:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Editar Ejecutor',\n  deleteRunner: 'Eliminar Ejecutor',\n  newRunnerToken: 'Nuevo Ejecutor',\n  askDeleteRunner: '¿Realmente quieres eliminar el ejecutor {runner}?',\n  project_runners_only_pro: 'Los ejecutores a nivel de proyecto solo están disponibles en la versión <b>PRO</b>.',\n  foss_runners_limited: 'La versión de código abierto tiene funcionalidad limitada; la funcionalidad completa está en la versión <b>PRO</b>.',\n  learn_more_about_pro: 'Aprende más',\n\n  projectRestoreResult: 'Resultados de la restauración del proyecto',\n  projectWithNameRestored: 'Proyecto {projectName} restaurado con éxito.',\n  pleaseUpdateAccessKeys: 'Por favor, actualiza las claves de acceso antes de ejecutar tareas.',\n  emptyKeysRestored: '{emptyKeys} claves vacías añadidas.',\n  template: 'Plantilla',\n  aliasUrlCopied: 'La URL del alias ha sido copiada al portapapeles.',\n  yes: 'Sí',\n  activeTasks: 'Tareas Activas',\n  taskLocation: 'Ubicación',\n  empty: 'Vacío',\n  noValues: 'Sin valores',\n  addArg: 'Agregar argumento',\n\n  status_success: 'Éxito',\n  status_failed: 'Fallido',\n  status_stopped: 'Detenido',\n\n  api_tokens: 'Tokens de API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Aprobación automática',\n\n  // Ansible\n  tag: 'Etiqueta',\n  tag_required: 'Se requiere etiqueta',\n  allowInventoryInTask: 'Inventario',\n  allowLimitInTask: 'Límite',\n  addLimit: 'Agregar límite',\n  allowDebug: 'Depurar',\n  addTag: 'Agregar etiqueta',\n  skipTags: 'Omitir etiquetas',\n  addSkippedTag: 'Agregar etiqueta omitida',\n  tags: 'Etiquetas',\n  limit: 'Límite',\n\n  runner_tag: 'Etiqueta del ejecutor',\n  task_prompts: 'Solicitudes',\n  template_advanced: 'Opciones avanzadas',\n  template_app_options: 'Opciones de {app}',\n  template_app_prompts: 'Solicitudes de {app}',\n  general_settings: 'General',\n  danger_zone_settings: 'Zona de Peligro',\n  project_stats: 'Estadísticas',\n  allow_override_branch: 'Rama',\n  template_common_options: 'Opciones comunes',\n};\n"
  },
  {
    "path": "web/src/lang/fr.js",
    "content": "export default {\n  checkInterval: 'intervalleDeVérification',\n  newCommitCheckInterval: 'Nouvel intervalle de vérification des commits',\n  schedule: 'Calendrier',\n  newSchedule: 'Nouveau calendrier',\n  deleteSchedule: 'Supprimer le calendrier',\n  editSchedule: 'Modifier le calendrier',\n  backup: 'Sauvegarde du projet',\n  downloadTheProjectBackupFile: 'Télécharger le fichier de sauvegarde du projet.',\n  restoreProject: 'Restaurer le projet...',\n  incorrectUsrPwd: 'Identifiant ou mot de passe incorrect',\n  askDeleteUser: 'Voulez-vous vraiment supprimer cet utilisateur ?',\n  askDeleteTemp: 'Voulez-vous vraiment supprimer ce modèle ?',\n  askDeleteEnv: 'Voulez-vous vraiment supprimer cet environnement ?',\n  askDeleteInv: 'Voulez-vous vraiment supprimer cet inventaire ?',\n  askDeleteKey: 'Voulez-vous vraiment supprimer cette clé ?',\n  askDeleteRepo: 'Voulez-vous vraiment supprimer ce dépôt ?',\n  askDeleteProj: 'Voulez-vous vraiment supprimer ce projet ?',\n  askDeleteTMem: 'Voulez-vous vraiment supprimer ce membre de l\\'équipe ?',\n  askDeleteSchedule: 'Voulez-vous vraiment supprimer ce calendrier ?',\n  edit: 'Modifier',\n  nnew: 'Nouveau',\n  keyFormSshKey: 'Clé SSH',\n  keyFormLoginPassword: 'Connexion avec mot de passe',\n  keyFormNone: 'Aucun',\n  incorrectUrl: 'URL incorrecte',\n  username: 'Nom d\\'utilisateur',\n  username_required: 'Le nom d\\'utilisateur est requis',\n  dashboard: 'Tableau de bord',\n  history: 'Historique',\n  activity: 'Activité',\n  settings: 'Paramètres',\n  signIn: 'Se connecter',\n  password: 'Mot de passe',\n  changePassword: 'Changer le mot de passe',\n  editUser: 'Modifier l\\'utilisateur',\n  newProject: 'Nouveau projet',\n  close: 'Fermer',\n  newProject2: 'Nouveau projet...',\n  demoMode: 'MODE DÉMO',\n  task: 'Tâche #{expr}',\n  youCanRunAnyTasks: 'Vous pouvez exécuter toutes les tâches',\n  youHaveReadonlyAccess: 'Vous avez un accès en lecture seule',\n  taskTemplates: 'Modèles de tâches',\n  inventory: 'Inventaire',\n  environment: 'Groupes de variables',\n  keyStore: 'Magasin de clés',\n  repositories: 'Dépôts',\n  darkMode: 'Mode sombre',\n  team: 'Équipe',\n  users: 'Utilisateurs',\n  editAccount: 'Modifier le compte',\n  signOut: 'Se déconnecter',\n  error: 'Erreur',\n  refreshPage: 'Rafraîchir la page',\n  relogin: 'Reconnectez-vous',\n  howToFixSigninIssues: 'Comment résoudre les problèmes de connexion',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Tout d\\'abord, vous devez avoir accès au serveur où Semaphore fonctionne.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Exécutez la commande suivante sur le serveur pour voir les utilisateurs existants :',\n  semaphoreUserList: 'liste des utilisateurs semaphore',\n  youCanChangePasswordOfExistingUser: 'Vous pouvez changer le mot de passe de l\\'utilisateur existant :',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Ou créez un nouvel utilisateur administrateur :',\n  close2: 'Fermer',\n  semaphore: 'SEMAPHORE',\n  dontHaveAccountOrCantSignIn: 'Vous n\\'avez pas de compte ou vous ne pouvez pas vous connecter ?',\n  password2: 'Mot de passe',\n  cancel: 'Annuler',\n  noViews: 'Aucune vue',\n  addView: 'Ajouter une vue',\n  editEnvironment: 'Modifier le groupe de variables',\n  deleteEnvironment: 'Supprimer le groupe de variables',\n  newEnvironment: 'Nouveau groupe',\n  environmentName: 'Nom du groupe',\n  extraVariables: 'Variables supplémentaires',\n  enterExtraVariablesJson: 'Entrez les variables supplémentaires JSON...',\n  environmentVariables: 'Variables d\\'environnement',\n  enterEnvJson: 'Entrez le JSON d\\'environnement...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'L\\'environnement et les variables supplémentaires doivent être un JSON valide. Exemple :',\n  dashboard2: 'Tableau de bord',\n  ansibleSemaphore: 'Interface Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Nous sommes désolés, mais <%= htmlWebpackPlugin.options.title %> ne fonctionne pas correctement sans JavaScript activé. Veuillez l\\'activer pour continuer.',\n  deleteInventory: 'Supprimer l\\'inventaire',\n  newInventory: 'Nouvel inventaire',\n  name: 'Nom',\n  userCredentials: 'Identifiants de l\\'utilisateur',\n  sudoCredentialsOptional: 'Identifiants sudo (optionnel)',\n  type: 'Type',\n  pathToInventoryFile: 'Chemin vers le fichier d\\'inventaire',\n  enterInventory: 'Entrez l\\'inventaire...',\n  staticInventoryExample: 'Exemple d\\'inventaire statique :',\n  staticYamlInventoryExample: 'Exemple d\\'inventaire YAML statique :',\n  keyName: 'Nom de la clé',\n  loginOptional: 'Connexion (optionnel)',\n  usernameOptional: 'Nom d\\'utilisateur (optionnel)',\n  privateKey: 'Clé privée',\n  override: 'Remplacer',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Utilisez ce type de clé pour les dépôts HTTPS et pour les playbooks qui utilisent des connexions non-SSH.',\n  deleteKey: 'Supprimer la clé',\n  newKey: 'Nouvelle clé',\n  create: 'Créer',\n  newTask: 'Nouvelle tâche',\n  cantDeleteThe: 'Impossible de supprimer le {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'Le {objectTitle} ne peut pas être supprimé car il est utilisé par les ressources ci-dessous',\n  projectName: 'Nom du projet',\n  allowAlertsForThisProject: 'Autoriser les alertes pour ce projet',\n  telegramChatIdOptional: 'ID de chat Telegram (optionnel)',\n  maxNumberOfParallelTasksOptional: 'Nombre maximum de tâches parallèles (optionnel)',\n  deleteRepository: 'Supprimer le dépôt',\n  newRepository: 'Nouveau dépôt',\n  urlOrPath: 'URL ou chemin',\n  absPath: 'chemin absolu',\n  branch: 'Branche',\n  accessKey: 'Clé d\\'accès',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Identifiants pour accéder au dépôt Git. Cela devrait être :',\n  ifYouUseGitOrSshUrl: 'si vous utilisez l\\'URL Git ou SSH.',\n  ifYouUseHttpsOrFileUrl: 'si vous utilisez l\\'URL HTTPS ou de fichier.',\n  none: 'Aucun',\n  ssh: 'SSH',\n  deleteProject: 'Supprimer le projet',\n  save: 'Enregistrer',\n  deleteProject2: 'Supprimer le projet',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Une fois que vous avez supprimé un projet, il n\\'y a pas de retour en arrière. Veuillez en être certain.',\n\n  clear_cache: 'Effacer le cache',\n  clear_cache_message: 'Supprimer tous les fichiers de cache liés à ce projet. Cette action est irréversible.',\n\n  name2: 'Nom *',\n  title: 'Titre *',\n  description: 'Description',\n  required: 'Requis',\n  key: '{expr}',\n  surveyVariables: 'Variables d\\'enquête',\n  addVariable: 'Ajouter une variable',\n  vaultName: 'ID de coffre (optionnel)',\n  vaultNameDefault: 'Un seul nom `default` (vide) peut exister',\n  vaultNameUnique: 'Doit être unique',\n  vaultTypePassword: 'Mot de passe',\n  vaultTypeScript: 'Script client',\n  vaultScript: 'Chemin du script',\n  vaultScriptRequired: 'Le chemin du script est requis',\n  vaultScriptClientRequired: 'Le chemin du script doit se terminer par \\'-client\\' et une extension',\n  vaults: 'Coffres',\n  vaultAdd: 'Ajouter un coffre',\n  vaultRequired: 'Le mot de passe du coffre est requis',\n  columns: 'Colonnes',\n  buildVersion: 'Version de construction',\n  messageOptional: 'Message (optionnel)',\n  debug: 'Déboguer',\n  dryRun: 'Exécution à blanc',\n  diff: 'Diff',\n  advanced: 'Avancé',\n  hide: 'Cacher',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Pour autoriser le remplacement de l\\'argument CLI dans les paramètres du modèle de tâche',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Arguments CLI (tableau JSON). Exemple : [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Démarré',\n  author: 'Auteur',\n  duration: 'Durée',\n  stop: 'Arrêter',\n  forceStop: 'Arrêt forcé',\n  stopAll: 'Tout arrêter',\n  stopAllTasks: 'Arrêter toutes les tâches',\n  askStopAllTasks: 'Êtes-vous sûr de vouloir arrêter toutes les tâches ?',\n  forceStopAllTasks: 'Forcer l\\'arrêt de toutes les tâches',\n  askForceStopAllTasks: 'Êtes-vous sûr de vouloir forcer l\\'arrêt de toutes les tâches ?',\n  raw_log: 'Journal brut',\n\n  confirmTask: 'Confirmer',\n  deleteTeamMember: 'Supprimer le membre de l\\'équipe',\n  team2: 'Équipe',\n  newTeamMember: 'Nouveau membre de l\\'équipe',\n  user: 'Utilisateur',\n  administrator: 'Administrateur',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Définit la version de départ de votre artefact. Chaque exécution incrémente la version de l\\'artefact.',\n  forMoreInformationAboutBuildingSeeThe: 'Pour plus d\\'informations sur la construction, voir le',\n  taskTemplateReference: 'Référence du modèle de tâche',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Définit quel artefact doit être déployé lorsque la tâche s\\'exécute.',\n  forMoreInformationAboutDeployingSeeThe: 'Pour plus d\\'informations sur le déploiement, voir le',\n  taskTemplateReference2: 'Référence du modèle de tâche',\n  definesAutorunSchedule: 'Définit le calendrier d\\'exécution automatique.',\n  forMoreInformationAboutCronSeeThe: 'Pour plus d\\'informations sur cron, voir le',\n  cronExpressionFormatReference: 'Référence du format d\\'expression cron',\n  startVersion: 'Version de départ',\n  example000: 'Exemple : 0.0.0',\n  buildTemplate: 'Modèle de construction',\n  autorun: 'Exécution automatique',\n  playbookFilename: 'Chemin vers le fichier playbook *',\n  exampleSiteyml: 'Exemple : deploy/site.yml',\n  inventory2: 'Inventaire *',\n  repository: 'Dépôt',\n  environment3: 'Groupe de variables *',\n  vaultPassword: 'Mot de passe du coffre',\n  vaultPassword2: 'Mot de passe du coffre',\n  view: 'Vue',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Je veux exécuter une tâche par cron uniquement pour les nouveaux commits d\\'un dépôt',\n  repository2: 'Dépôt',\n  cronChecksNewCommitBeforeRun: 'Cron vérifie les nouveaux commits avant d\\'exécuter',\n  readThe: 'Lisez le',\n  toLearnMoreAboutCron: 'pour en savoir plus sur Cron.',\n  suppressSuccessAlerts: 'Supprimer les alertes de succès',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Arguments CLI (tableau JSON). Exemple : [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Arguments CLI',\n  docs: 'docs',\n  editViews: 'Modifier les vues',\n  newTemplate: 'Nouveau modèle',\n  taskTemplates2: 'Modèles de tâches',\n  all: 'Tous',\n  notLaunched: 'Non lancé',\n  by: 'par {user_name}',\n  editTemplate: 'Modifier le modèle',\n  newTemplate2: 'Nouveau modèle',\n  deleteTemplate: 'Supprimer le modèle',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Utilisateur administrateur',\n  sendAlerts: 'Envoyer des alertes',\n  deleteUser: 'Supprimer l\\'utilisateur',\n  newUser: 'Nouvel utilisateur',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} membre de l\\'équipe',\n  taskId: 'ID de tâche',\n  version: 'Version',\n  status: 'Statut',\n  start: 'Démarrer',\n  actions: 'Actions',\n  alert: 'Alerte',\n  admin: 'Admin',\n  role: 'Rôle',\n  external: 'Externe',\n  time: 'Temps',\n  path: 'Chemin',\n  gitUrl: 'URL Git',\n  sshKey: 'Clé SSH',\n  lastTask: 'Dernière tâche',\n  task2: 'Tâche',\n  build: 'Construire',\n  deploy: 'Déployer',\n  run: 'Exécuter',\n  add: 'Ajouter',\n  password_required: 'Le mot de passe est requis',\n  name_required: 'Le nom est requis',\n  user_credentials_required: 'Les identifiants de l\\'utilisateur sont requis',\n  type_required: 'Le type est requis',\n  path_required: 'Le chemin vers le fichier d\\'inventaire est requis',\n  private_key_required: 'La clé privée est requise',\n  project_name_required: 'Le nom du projet est requis',\n  repository_required: 'Le dépôt est requis',\n  branch_required: 'La branche est requise',\n  key_required: 'La clé est requise',\n  user_required: 'L\\'utilisateur est requis',\n  build_version_required: 'La version de construction est requise',\n  title_required: 'Le titre est requis',\n  isRequired: 'est requis',\n  mustBeInteger: 'Doit être un entier',\n  mustBe0OrGreater: 'Doit être 0 ou plus',\n  start_version_required: 'La version de départ est requise',\n  playbook_filename_required: 'Le nom du fichier playbook est requis',\n  inventory_required: 'L\\'inventaire est requis',\n  environment_required: 'L\\'environnement est requis',\n  email_required: 'L\\'email est requis',\n  build_template_required: 'Le modèle de construction est requis',\n  Task: 'Tâche',\n  Build: 'Construire',\n  Deploy: 'Déployer',\n  Run: 'Exécuter',\n  ReBuild: 'Reconstruire',\n  ReDeploy: 'Redéployer',\n  ReRun: 'Relancer',\n  CreateDemoProject: 'Créer un projet de démonstration',\n  LeaveProject: 'Quitter le projet',\n  integration: 'Intégration',\n  integrations: 'Intégrations',\n  NewIntegration: 'Nouvelle intégration',\n  EditIntegration: 'Modifier l\\'intégration',\n  DeleteIntegration: 'Supprimer l\\'intégration',\n  DeleteIntegrationMsg: 'Êtes-vous sûr de vouloir supprimer cette intégration ?',\n  AddAlias: 'Ajouter un alias',\n  LoadAlias: 'Chargement des alias...',\n  globalAlias: 'Utiliser l\\'alias du projet',\n  matcher: 'Correspondant',\n  matchType: 'Type de correspondance',\n  newMatcher: 'Nouveau correspondant',\n  matchMethod: 'Méthode de comparaison',\n  matchBodyDataType: 'Type de données du corps',\n  extractValue: 'Extraire la valeur',\n  newExtractedValue: 'Nouvelle valeur extraite',\n  extractedValueSource: 'Source de valeur',\n  matchKey: 'Clé',\n  matchValue: 'Valeur',\n  matchOn: 'Correspondre sur',\n  runners: 'Exécuteurs',\n  newRunner: 'Nouvel exécuteur',\n  enabled: 'Activé',\n  scheduleNextRun: 'Prochaine exécution',\n  maxNumberOfParallelTasks: 'Nombre maximum de tâches parallèles',\n  runnerUsage: 'Utilisation :',\n  runnerDockerCommand: 'Docker :',\n  runnerToken: 'Jeton :',\n  editRunner: 'Modifier l\\'exécuteur',\n  deleteRunner: 'Supprimer l\\'exécuteur',\n  newRunnerToken: 'Nouvel exécuteur',\n  askDeleteRunner: 'Voulez-vous vraiment supprimer l\\'exécuteur {runner} ?',\n  project_runners_only_pro: 'Les exécuteurs au niveau du projet ne sont disponibles que dans la version <b>PRO</b>.',\n  foss_runners_limited: 'La version open-source a des fonctionnalités limitées ; la fonctionnalité complète est dans la version <b>PRO</b>.',\n  learn_more_about_pro: 'En savoir plus',\n\n  projectRestoreResult: 'Résultats de la restauration du projet',\n  projectWithNameRestored: 'Projet {projectName} restauré avec succès.',\n  pleaseUpdateAccessKeys: 'Veuillez les mettre à jour avant d\\'exécuter des tâches.',\n  emptyKeysRestored: '{emptyKeys} clés vides ajoutées.',\n  template: 'Modèle',\n  aliasUrlCopied: 'L\\'URL de l\\'alias a été copiée dans le presse-papiers.',\n  yes: 'Oui',\n  activeTasks: 'Tâches actives',\n  taskLocation: 'Emplacement',\n  empty: 'Vide',\n  noValues: 'Aucune valeur',\n  addArg: 'Ajouter un argument',\n\n  status_success: 'Succès',\n  status_failed: 'Échoué',\n  status_stopped: 'Arrêté',\n\n  api_tokens: 'Jetons API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Approbation automatique',\n\n  // Ansible\n  tag: 'Étiquette',\n  tag_required: 'L\\'étiquette est requise',\n  allowInventoryInTask: 'Inventaire',\n  allowLimitInTask: 'Limite',\n  addLimit: 'Ajouter une limite',\n  allowDebug: 'Déboguer',\n  addTag: 'Ajouter une étiquette',\n  skipTags: 'Ignorer les étiquettes',\n  addSkippedTag: 'Ajouter une étiquette ignorée',\n  tags: 'Étiquettes',\n  limit: 'Limite',\n\n  runner_tag: 'Étiquette de l\\'exécuteur',\n  task_prompts: 'Invites',\n  template_advanced: 'Options avancées',\n  template_app_options: 'Options {app}',\n  template_app_prompts: 'Invites {app}',\n  general_settings: 'Général',\n  danger_zone_settings: 'Zone de danger',\n  project_stats: 'Statistiques',\n  allow_override_branch: 'Branche',\n  template_common_options: 'Options communes',\n};\n"
  },
  {
    "path": "web/src/lang/index.js",
    "content": "const files = require.context('.', false, /\\.js$/);\nconst messages = {};\nfiles.keys().forEach((key) => {\n  if (key === './index.js') return;\n  messages[key.replace(/(\\.\\/|\\.js)/g, '')] = files(key).default;\n});\nconst languages = Object.keys(messages);\nexport { messages, languages };\n"
  },
  {
    "path": "web/src/lang/it.js",
    "content": "export default {\n  checkInterval: 'intervalloDiControllo',\n  newCommitCheckInterval: 'Nuovo intervallo di controllo dei commit',\n  schedule: 'Programma',\n  newSchedule: 'Nuovo programma',\n  deleteSchedule: 'Elimina programma',\n  editSchedule: 'Modifica programma',\n  backup: 'Backup progetto',\n  downloadTheProjectBackupFile: 'Scarica il file di backup del progetto.',\n  restoreProject: 'Ripristina progetto...',\n  incorrectUsrPwd: 'Login o password errati',\n  askDeleteUser: 'Vuoi davvero eliminare questo utente?',\n  askDeleteTemp: 'Vuoi davvero eliminare questo modello?',\n  askDeleteEnv: 'Vuoi davvero eliminare questo ambiente?',\n  askDeleteInv: 'Vuoi davvero eliminare questo inventario?',\n  askDeleteKey: 'Vuoi davvero eliminare questa chiave?',\n  askDeleteRepo: 'Vuoi davvero eliminare questo repository?',\n  askDeleteProj: 'Vuoi davvero eliminare questo progetto?',\n  askDeleteTMem: 'Vuoi davvero eliminare questo membro del team?',\n  askDeleteSchedule: 'Vuoi davvero eliminare questo programma?',\n  edit: 'Modifica',\n  nnew: 'Nuovo',\n  keyFormSshKey: 'Chiave SSH',\n  keyFormLoginPassword: 'Accesso con password',\n  keyFormNone: 'Nessuno',\n  incorrectUrl: 'URL errato',\n  username: 'Nome utente',\n  username_required: 'Il nome utente è obbligatorio',\n  dashboard: 'Cruscotto',\n  history: 'Storia',\n  activity: 'Attività',\n  settings: 'Impostazioni',\n  signIn: 'Accedi',\n  password: 'Password',\n  changePassword: 'Cambia password',\n  editUser: 'Modifica utente',\n  newProject: 'Nuovo progetto',\n  close: 'Chiudi',\n  newProject2: 'Nuovo progetto...',\n  demoMode: 'MODALITÀ DEMO',\n  task: 'Compito #{expr}',\n  youCanRunAnyTasks: 'Puoi eseguire qualsiasi compito',\n  youHaveReadonlyAccess: 'Hai accesso in sola lettura',\n  taskTemplates: 'Modelli di compito',\n  inventory: 'Inventario',\n  environment: 'Gruppi di variabili',\n  keyStore: 'Negozio chiavi',\n  repositories: 'Repository',\n  darkMode: 'Modalità scura',\n  team: 'Team',\n  users: 'Utenti',\n  editAccount: 'Modifica account',\n  signOut: 'Disconnetti',\n  error: 'Errore',\n  refreshPage: 'Aggiorna pagina',\n  relogin: 'Riconnetti',\n  howToFixSigninIssues: 'Come risolvere i problemi di accesso',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'In primo luogo, è necessario avere accesso al server in cui è in esecuzione Semaphore.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Esegui il seguente comando sul server per vedere gli utenti esistenti:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Puoi cambiare la password dell\\'utente esistente:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'O crea un nuovo utente admin:',\n  close2: 'Chiudi',\n  semaphore: 'SEMAFORO',\n  dontHaveAccountOrCantSignIn: 'Non hai un account o non riesci ad accedere?',\n  password2: 'Password',\n  cancel: 'Annulla',\n  noViews: 'Nessuna vista',\n  addView: 'Aggiungi vista',\n  editEnvironment: 'Modifica gruppo di variabili',\n  deleteEnvironment: 'Elimina gruppo di variabili',\n  newEnvironment: 'Nuovo gruppo',\n  environmentName: 'Nome gruppo',\n  extraVariables: 'Variabili extra',\n  enterExtraVariablesJson: 'Inserisci variabili extra JSON...',\n  environmentVariables: 'Variabili di ambiente',\n  enterEnvJson: 'Inserisci JSON ambiente...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Le variabili di ambiente e le variabili extra devono essere JSON validi. Esempio:',\n  dashboard2: 'Cruscotto',\n  ansibleSemaphore: 'Interfaccia utente Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Ci dispiace, ma <%= htmlWebpackPlugin.options.title %> non funziona correttamente senza JavaScript abilitato. Abilitalo per continuare.',\n  deleteInventory: 'Elimina inventario',\n  newInventory: 'Nuovo inventario',\n  name: 'Nome',\n  userCredentials: 'Credenziali utente',\n  sudoCredentialsOptional: 'Credenziali Sudo (Opzionale)',\n  type: 'Tipo',\n  pathToInventoryFile: 'Percorso del file di inventario',\n  enterInventory: 'Inserisci inventario...',\n  staticInventoryExample: 'Esempio di inventario statico:',\n  staticYamlInventoryExample: 'Esempio di inventario YAML statico:',\n  keyName: 'Nome chiave',\n  loginOptional: 'Accesso (Opzionale)',\n  usernameOptional: 'Nome utente (Opzionale)',\n  privateKey: 'Chiave privata',\n  override: 'Sovrascrivi',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Usa questo tipo di chiave per i repository HTTPS e per i playbook che utilizzano connessioni non SSH.',\n  deleteKey: 'Elimina chiave',\n  newKey: 'Nuova chiave',\n  create: 'Crea',\n  newTask: 'Nuovo compito',\n  cantDeleteThe: 'Impossibile eliminare {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} non può essere eliminato perché è utilizzato dalle risorse sottostanti',\n  projectName: 'Nome progetto',\n  allowAlertsForThisProject: 'Consenti avvisi per questo progetto',\n  telegramChatIdOptional: 'ID chat Telegram (Opzionale)',\n  maxNumberOfParallelTasksOptional: 'Numero massimo di compiti paralleli (Opzionale)',\n  deleteRepository: 'Elimina repository',\n  newRepository: 'Nuovo repository',\n  urlOrPath: 'URL o percorso',\n  absPath: 'percorso ass.',\n  branch: 'Ramo',\n  accessKey: 'Chiave di accesso',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenziali per accedere al repository Git. Dovrebbe essere:',\n  ifYouUseGitOrSshUrl: 'se utilizzi l\\'URL Git o SSH.',\n  ifYouUseHttpsOrFileUrl: 'se utilizzi l\\'URL HTTPS o file.',\n  none: 'Nessuno',\n  ssh: 'SSH',\n  deleteProject: 'Elimina progetto',\n  save: 'Salva',\n  deleteProject2: 'Elimina progetto',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Una volta eliminato un progetto, non c\\'è modo di tornare indietro. Per favore, sii certo.',\n\n  clear_cache: 'Pulisci cache',\n  clear_cache_message: 'Elimina tutti i file di cache relativi a questo progetto. Questa azione è irreversibile.',\n\n  name2: 'Nome *',\n  title: 'Titolo *',\n  description: 'Descrizione',\n  required: 'Obbligatorio',\n  key: '{expr}',\n  surveyVariables: 'Variabili del sondaggio',\n  addVariable: 'Aggiungi variabile',\n  vaultName: 'ID Vault (opzionale)',\n  vaultNameDefault: 'Può esistere solo un nome `default` (vuoto)',\n  vaultNameUnique: 'Deve essere unico',\n  vaultTypePassword: 'Password',\n  vaultTypeScript: 'Script client',\n  vaultScript: 'Percorso script',\n  vaultScriptRequired: 'Il percorso dello script è obbligatorio',\n  vaultScriptClientRequired: 'Il percorso dello script deve terminare con \\'-client\\' e un\\'estensione',\n  vaults: 'Vaults',\n  vaultAdd: 'Aggiungi Vault',\n  vaultRequired: 'La password del Vault è obbligatoria',\n  columns: 'Colonne',\n  buildVersion: 'Versione di build',\n  messageOptional: 'Messaggio (Opzionale)',\n  debug: 'Debug',\n  dryRun: 'Esecuzione simulata',\n  diff: 'Differenza',\n  advanced: 'Avanzato',\n  hide: 'Nascondi',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Per consentire la sovrascrittura dell\\'argomento CLI nelle impostazioni del modello di compito',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argomenti CLI (array JSON). Esempio: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Iniziato',\n  author: 'Autore',\n  duration: 'Durata',\n  stop: 'Ferma',\n  forceStop: 'Ferma forzatamente',\n  stopAll: 'Ferma tutto',\n  stopAllTasks: 'Ferma tutte le attività',\n  askStopAllTasks: 'Sei sicuro di voler fermare tutte le attività?',\n  forceStopAllTasks: 'Ferma forzatamente tutte le attività',\n  askForceStopAllTasks: 'Sei sicuro di voler fermare forzatamente tutte le attività?',\n  raw_log: 'Log grezzo',\n\n  confirmTask: 'Conferma',\n  deleteTeamMember: 'Elimina membro del team',\n  team2: 'Team',\n  newTeamMember: 'Nuovo membro del team',\n  user: 'Utente',\n  administrator: 'Amministratore',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Definisce la versione di partenza del tuo artefatto. Ogni esecuzione incrementa la versione dell\\'artefatto.',\n  forMoreInformationAboutBuildingSeeThe: 'Per ulteriori informazioni sulla costruzione, vedere il',\n  taskTemplateReference: 'Riferimento modello di compito',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definisce quale artefatto deve essere distribuito quando il compito viene eseguito.',\n  forMoreInformationAboutDeployingSeeThe: 'Per ulteriori informazioni sulla distribuzione, vedere il',\n  taskTemplateReference2: 'Riferimento modello di compito',\n  definesAutorunSchedule: 'Definisce il programma di esecuzione automatica.',\n  forMoreInformationAboutCronSeeThe: 'Per ulteriori informazioni su cron, vedere il',\n  cronExpressionFormatReference: 'Riferimento formato espressione cron',\n  startVersion: 'Versione di partenza',\n  example000: 'Esempio: 0.0.0',\n  buildTemplate: 'Modello di build',\n  autorun: 'Esecuzione automatica',\n  playbookFilename: 'Percorso del file playbook *',\n  exampleSiteyml: 'Esempio: deploy/site.yml',\n  inventory2: 'Inventario *',\n  repository: 'Repository',\n  environment3: 'Gruppo di variabili *',\n  vaultPassword: 'Password del Vault',\n  vaultPassword2: 'Password del Vault',\n  view: 'Vista',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Voglio eseguire un compito tramite cron solo per nuovi commit di un repository',\n  repository2: 'Repository',\n  cronChecksNewCommitBeforeRun: 'Cron controlla nuovi commit prima di eseguire',\n  readThe: 'Leggi il',\n  toLearnMoreAboutCron: 'per saperne di più su Cron.',\n  suppressSuccessAlerts: 'Sopprimi avvisi di successo',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argomenti CLI (array JSON). Esempio: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Argomenti CLI',\n  docs: 'documenti',\n  editViews: 'Modifica viste',\n  newTemplate: 'Nuovo modello',\n  taskTemplates2: 'Modelli di compito',\n  all: 'Tutti',\n  notLaunched: 'Non avviato',\n  by: 'da {user_name}',\n  editTemplate: 'Modifica modello',\n  newTemplate2: 'Nuovo modello',\n  deleteTemplate: 'Elimina modello',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Utente admin',\n  sendAlerts: 'Invia avvisi',\n  deleteUser: 'Elimina utente',\n  newUser: 'Nuovo utente',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Membro del team',\n  taskId: 'ID compito',\n  version: 'Versione',\n  status: 'Stato',\n  start: 'Inizio',\n  actions: 'Azioni',\n  alert: 'Avviso',\n  admin: 'Admin',\n  role: 'Ruolo',\n  external: 'Esterno',\n  time: 'Tempo',\n  path: 'Percorso',\n  gitUrl: 'URL Git',\n  sshKey: 'Chiave SSH',\n  lastTask: 'Ultimo compito',\n  task2: 'Compito',\n  build: 'Costruisci',\n  deploy: 'Distribuisci',\n  run: 'Esegui',\n  add: 'Aggiungi',\n  password_required: 'La password è obbligatoria',\n  name_required: 'Il nome è obbligatorio',\n  user_credentials_required: 'Le credenziali dell\\'utente sono obbligatorie',\n  type_required: 'Il tipo è obbligatorio',\n  path_required: 'Il percorso del file di inventario è obbligatorio',\n  private_key_required: 'La chiave privata è obbligatoria',\n  project_name_required: 'Il nome del progetto è obbligatorio',\n  repository_required: 'Il repository è obbligatorio',\n  branch_required: 'Il ramo è obbligatorio',\n  key_required: 'La chiave è obbligatoria',\n  user_required: 'L\\'utente è obbligatorio',\n  build_version_required: 'La versione di build è obbligatoria',\n  title_required: 'Il titolo è obbligatorio',\n  isRequired: 'è obbligatorio',\n  mustBeInteger: 'Deve essere un intero',\n  mustBe0OrGreater: 'Deve essere 0 o maggiore',\n  start_version_required: 'La versione di partenza è obbligatoria',\n  playbook_filename_required: 'Il nome del file playbook è obbligatorio',\n  inventory_required: 'L\\'inventario è obbligatorio',\n  environment_required: 'L\\'ambiente è obbligatorio',\n  email_required: 'L\\'email è obbligatoria',\n  build_template_required: 'Il modello di build è obbligatorio',\n  Task: 'Compito',\n  Build: 'Costruisci',\n  Deploy: 'Distribuisci',\n  Run: 'Esegui',\n  ReBuild: 'Ricostruisci',\n  ReDeploy: 'Ridispiega',\n  ReRun: 'Riesegui',\n  CreateDemoProject: 'Crea progetto demo',\n  LeaveProject: 'Lascia progetto',\n  integration: 'Integrazione',\n  integrations: 'Integrazioni',\n  NewIntegration: 'Nuova integrazione',\n  EditIntegration: 'Modifica integrazione',\n  DeleteIntegration: 'Elimina integrazione',\n  DeleteIntegrationMsg: 'Sei sicuro di voler eliminare questa integrazione?',\n  AddAlias: 'Aggiungi alias',\n  LoadAlias: 'Caricamento alias...',\n  globalAlias: 'Usa alias progetto',\n  matcher: 'Corrispondente',\n  matchType: 'Tipo di corrispondenza',\n  newMatcher: 'Nuovo corrispondente',\n  matchMethod: 'Metodo di confronto',\n  matchBodyDataType: 'Tipo di dati del corpo',\n  extractValue: 'Estrai valore',\n  newExtractedValue: 'Nuovo valore estratto',\n  extractedValueSource: 'Fonte valore',\n  matchKey: 'Chiave',\n  matchValue: 'Valore',\n  matchOn: 'Corrispondenza su',\n  runners: 'Esecutori',\n  newRunner: 'Nuovo esecutore',\n  enabled: 'Abilitato',\n  scheduleNextRun: 'Prossima esecuzione',\n  maxNumberOfParallelTasks: 'Numero massimo di compiti paralleli',\n  runnerUsage: 'Utilizzo:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Modifica esecutore',\n  deleteRunner: 'Elimina esecutore',\n  newRunnerToken: 'Nuovo esecutore',\n  askDeleteRunner: 'Vuoi davvero eliminare l\\'esecutore {runner}?',\n  project_runners_only_pro: 'Gli esecutori a livello di progetto sono disponibili solo nella versione <b>PRO</b>.',\n  foss_runners_limited: 'La versione open-source ha funzionalità limitate; la funzionalità completa è nella versione <b>PRO</b>.',\n  learn_more_about_pro: 'Scopri di più',\n\n  projectRestoreResult: 'Risultati del ripristino del progetto',\n  projectWithNameRestored: 'Progetto {projectName} ripristinato con successo.',\n  pleaseUpdateAccessKeys: 'Si prega di aggiornarli prima di eseguire i compiti.',\n  emptyKeysRestored: '{emptyKeys} chiavi vuote aggiunte.',\n  template: 'Modello',\n  aliasUrlCopied: 'L\\'URL dell\\'alias è stato copiato negli appunti.',\n  yes: 'Sì',\n  activeTasks: 'Compiti attivi',\n  taskLocation: 'Posizione',\n  empty: 'Vuoto',\n  noValues: 'Nessun valore',\n  addArg: 'Aggiungi argomento',\n\n  status_success: 'Successo',\n  status_failed: 'Fallito',\n  status_stopped: 'Fermato',\n\n  api_tokens: 'Token API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Approvazione automatica',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Il tag è obbligatorio',\n  allowInventoryInTask: 'Inventario',\n  allowLimitInTask: 'Limite',\n  addLimit: 'Aggiungi limite',\n  allowDebug: 'Debug',\n  addTag: 'Aggiungi tag',\n  skipTags: 'Salta tag',\n  addSkippedTag: 'Aggiungi tag saltato',\n  tags: 'Tag',\n  limit: 'Limite',\n\n  runner_tag: 'Tag esecutore',\n  task_prompts: 'Richieste',\n  template_advanced: 'Opzioni avanzate',\n  template_app_options: 'Opzioni {app}',\n  template_app_prompts: 'Richieste {app}',\n  general_settings: 'Generale',\n  danger_zone_settings: 'Zona pericolosa',\n  project_stats: 'Statistiche',\n  allow_override_branch: 'Ramo',\n  template_common_options: 'Opzioni comuni',\n};\n"
  },
  {
    "path": "web/src/lang/ja.js",
    "content": "export default {\n  checkInterval: 'チェック間隔',\n  newCommitCheckInterval: '新しいコミットのチェック間隔',\n  schedule: 'スケジュール',\n  newSchedule: '新しいスケジュール',\n  deleteSchedule: 'スケジュールを削除',\n  editSchedule: 'スケジュールを編集',\n  backup: 'プロジェクトのバックアップ',\n  downloadTheProjectBackupFile: 'プロジェクトのバックアップファイルをダウンロードします。',\n  restoreProject: 'プロジェクトを復元...',\n  incorrectUsrPwd: 'ログインまたはパスワードが正しくありません',\n  askDeleteUser: '本当にこのユーザーを削除しますか？',\n  askDeleteTemp: '本当にこのテンプレートを削除しますか？',\n  askDeleteEnv: '本当にこの環境を削除しますか？',\n  askDeleteInv: '本当にこのインベントリを削除しますか？',\n  askDeleteKey: '本当にこのキーを削除しますか？',\n  askDeleteRepo: '本当にこのリポジトリを削除しますか？',\n  askDeleteProj: '本当にこのプロジェクトを削除しますか？',\n  askDeleteTMem: '本当にこのチームメンバーを削除しますか？',\n  askDeleteSchedule: '本当にこのスケジュールを削除しますか？',\n  edit: '編集',\n  nnew: '新しい',\n  keyFormSshKey: 'SSHキー',\n  keyFormLoginPassword: 'パスワードでログイン',\n  keyFormNone: 'なし',\n  incorrectUrl: '不正なURL',\n  username: 'ユーザー名',\n  username_required: 'ユーザー名は必須です',\n  dashboard: 'ダッシュボード',\n  history: '履歴',\n  activity: 'アクティビティ',\n  settings: '設定',\n  signIn: 'サインイン',\n  password: 'パスワード',\n  changePassword: 'パスワードを変更',\n  editUser: 'ユーザーを編集',\n  newProject: '新しいプロジェクト',\n  close: '閉じる',\n  newProject2: '新しいプロジェクト...',\n  demoMode: 'デモモード',\n  task: 'タスク #{expr}',\n  youCanRunAnyTasks: '任意のタスクを実行できます',\n  youHaveReadonlyAccess: '読み取り専用アクセスがあります',\n  taskTemplates: 'タスクテンプレート',\n  inventory: 'インベントリ',\n  environment: '変数グループ',\n  keyStore: 'キーのストア',\n  repositories: 'リポジトリ',\n  darkMode: 'ダークモード',\n  team: 'チーム',\n  users: 'ユーザー',\n  editAccount: 'アカウントを編集',\n  signOut: 'サインアウト',\n  error: 'エラー',\n  refreshPage: 'ページを更新',\n  relogin: '再ログイン',\n  howToFixSigninIssues: 'サインインの問題を修正する方法',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'まず、Semaphoreが実行されているサーバーにアクセスする必要があります。',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'サーバーで次のコマンドを実行して、既存のユーザーを確認します:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: '既存のユーザーのパスワードを変更できます:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'または新しい管理者ユーザーを作成します:',\n  close2: '閉じる',\n  semaphore: 'セマフォ',\n  dontHaveAccountOrCantSignIn: 'アカウントがないか、サインインできませんか？',\n  password2: 'パスワード',\n  cancel: 'キャンセル',\n  noViews: 'ビューがありません',\n  addView: 'ビューを追加',\n  editEnvironment: '変数グループを編集',\n  deleteEnvironment: '変数グループを削除',\n  newEnvironment: '新しいグループ',\n  environmentName: 'グループ名',\n  extraVariables: '追加の変数',\n  enterExtraVariablesJson: '追加の変数JSONを入力...',\n  environmentVariables: '環境変数',\n  enterEnvJson: 'env JSONを入力...',\n  environmentAndExtraVariablesMustBeValidJsonExample: '環境変数と追加の変数は有効なJSONでなければなりません。例:',\n  dashboard2: 'ダッシュボード',\n  ansibleSemaphore: 'セマフォUI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '申し訳ありませんが、<%= htmlWebpackPlugin.options.title %>はJavaScriptが有効でないと正しく動作しません。続行するには有効にしてください。',\n  deleteInventory: 'インベントリを削除',\n  newInventory: '新しいインベントリ',\n  name: '名前',\n  userCredentials: 'ユーザー資格情報',\n  sudoCredentialsOptional: 'Sudo資格情報（オプション）',\n  type: 'タイプ',\n  pathToInventoryFile: 'インベントリファイルへのパス',\n  enterInventory: 'インベントリを入力...',\n  staticInventoryExample: '静的インベントリの例:',\n  staticYamlInventoryExample: '静的YAMLインベントリの例:',\n  keyName: 'キー名',\n  loginOptional: 'ログイン（オプション）',\n  usernameOptional: 'ユーザー名（オプション）',\n  privateKey: '秘密鍵',\n  override: '上書き',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'HTTPSリポジトリおよび非SSH接続を使用するプレイブックにこのタイプのキーを使用します。',\n  deleteKey: 'キーを削除',\n  newKey: '新しいキー',\n  create: '作成',\n  newTask: '新しいタスク',\n  cantDeleteThe: '{objectTitle}を削除できません',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle}は以下のリソースで使用されているため削除できません',\n  projectName: 'プロジェクト名',\n  allowAlertsForThisProject: 'このプロジェクトのアラートを許可',\n  telegramChatIdOptional: 'TelegramチャットID（オプション）',\n  maxNumberOfParallelTasksOptional: '最大並列タスク数（オプション）',\n  deleteRepository: 'リポジトリを削除',\n  newRepository: '新しいリポジトリ',\n  urlOrPath: 'URLまたはパス',\n  absPath: '絶対パス',\n  branch: 'ブランチ',\n  accessKey: 'アクセスキー',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Gitリポジトリにアクセスするための資格情報。次のようにする必要があります:',\n  ifYouUseGitOrSshUrl: 'GitまたはSSH URLを使用する場合。',\n  ifYouUseHttpsOrFileUrl: 'HTTPSまたはファイルURLを使用する場合。',\n  none: 'なし',\n  ssh: 'SSH',\n  deleteProject: 'プロジェクトを削除',\n  save: '保存',\n  deleteProject2: 'プロジェクトを削除',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'プロジェクトを削除すると、元に戻すことはできません。確信してください。',\n\n  clear_cache: 'キャッシュをクリア',\n  clear_cache_message: 'このプロジェクトに関連するすべてのキャッシュファイルを削除します。この操作は元に戻せません。',\n\n  name2: '名前 *',\n  title: 'タイトル *',\n  description: '説明',\n  required: '必須',\n  key: '{expr}',\n  surveyVariables: '調査変数',\n  addVariable: '変数を追加',\n  vaultName: 'ボールトID（オプション）',\n  vaultNameDefault: '唯一の`default`（空）名が存在することができます',\n  vaultNameUnique: '一意でなければなりません',\n  vaultTypePassword: 'パスワード',\n  vaultTypeScript: 'クライアントスクリプト',\n  vaultScript: 'スクリプトパス',\n  vaultScriptRequired: 'スクリプトパスは必須です',\n  vaultScriptClientRequired: 'スクリプトパスは\\'-client\\'で終わり、拡張子が必要です',\n  vaults: 'ボールト',\n  vaultAdd: 'ボールトを追加',\n  vaultRequired: 'ボールトパスワードは必須です',\n  columns: '列',\n  buildVersion: 'ビルドバージョン',\n  messageOptional: 'メッセージ（オプション）',\n  debug: 'デバッグ',\n  dryRun: 'ドライラン',\n  diff: '差分',\n  advanced: '高度な',\n  hide: '隠す',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'タスクテンプレート設定でCLI引数の上書きを許可するために',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI引数（JSON配列）。例: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: '開始',\n  author: '著者',\n  duration: '期間',\n  stop: '停止',\n  forceStop: '強制停止',\n  stopAll: 'すべて停止',\n  stopAllTasks: 'すべてのタスクを停止',\n  askStopAllTasks: 'すべてのタスクを停止してもよろしいですか？',\n  forceStopAllTasks: 'すべてのタスクを強制停止',\n  askForceStopAllTasks: 'すべてのタスクを強制停止してもよろしいですか？',\n  raw_log: '生ログ',\n\n  confirmTask: '確認',\n  deleteTeamMember: 'チームメンバーを削除',\n  team2: 'チーム',\n  newTeamMember: '新しいチームメンバー',\n  user: 'ユーザー',\n  administrator: '管理者',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'アーティファクトの開始バージョンを定義します。各実行でアーティファクトのバージョンが増加します。',\n  forMoreInformationAboutBuildingSeeThe: 'ビルドに関する詳細は、次を参照してください',\n  taskTemplateReference: 'タスクテンプレートのリファレンス',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'タスクが実行されるときにデプロイされるべきアーティファクトを定義します。',\n  forMoreInformationAboutDeployingSeeThe: 'デプロイに関する詳細は、次を参照してください',\n  taskTemplateReference2: 'タスクテンプレートのリファレンス',\n  definesAutorunSchedule: '自動実行スケジュールを定義します。',\n  forMoreInformationAboutCronSeeThe: 'Cronに関する詳細は、次を参照してください',\n  cronExpressionFormatReference: 'Cron式フォーマットリファレンス',\n  startVersion: '開始バージョン',\n  example000: '例: 0.0.0',\n  buildTemplate: 'ビルドテンプレート',\n  autorun: '自動実行',\n  playbookFilename: 'プレイブックファイルへのパス *',\n  exampleSiteyml: '例: deploy/site.yml',\n  inventory2: 'インベントリ *',\n  repository: 'リポジトリ',\n  environment3: '変数グループ *',\n  vaultPassword: 'ボールトパスワード',\n  vaultPassword2: 'ボールトパスワード',\n  view: 'ビュー',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '新しいコミットのためだけにCronでタスクを実行したい',\n  repository2: 'リポジトリ',\n  cronChecksNewCommitBeforeRun: 'Cronは実行前に新しいコミットをチェックします',\n  readThe: '読む',\n  toLearnMoreAboutCron: 'Cronについて詳しく学ぶために。',\n  suppressSuccessAlerts: '成功アラートを抑制',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI引数（JSON配列）。例: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI引数',\n  docs: 'ドキュメント',\n  editViews: 'ビューを編集',\n  newTemplate: '新しいテンプレート',\n  taskTemplates2: 'タスクテンプレート',\n  all: 'すべて',\n  notLaunched: '未起動',\n  by: '{user_name}による',\n  editTemplate: 'テンプレートを編集',\n  newTemplate2: '新しいテンプレート',\n  deleteTemplate: 'テンプレートを削除',\n  playbook: 'プレイブック',\n  email: 'メール',\n  adminUser: '管理者ユーザー',\n  sendAlerts: 'アラートを送信',\n  deleteUser: 'ユーザーを削除',\n  newUser: '新しいユーザー',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} チームメンバー',\n  taskId: 'タスクID',\n  version: 'バージョン',\n  status: 'ステータス',\n  start: '開始',\n  actions: 'アクション',\n  alert: 'アラート',\n  admin: '管理者',\n  role: '役割',\n  external: '外部',\n  time: '時間',\n  path: 'パス',\n  gitUrl: 'Git URL',\n  sshKey: 'SSHキー',\n  lastTask: '最後のタスク',\n  task2: 'タスク',\n  build: 'ビルド',\n  deploy: 'デプロイ',\n  run: '実行',\n  add: '追加',\n  password_required: 'パスワードは必須です',\n  name_required: '名前は必須です',\n  user_credentials_required: 'ユーザー資格情報は必須です',\n  type_required: 'タイプは必須です',\n  path_required: 'インベントリファイルへのパスは必須です',\n  private_key_required: '秘密鍵は必須です',\n  project_name_required: 'プロジェクト名は必須です',\n  repository_required: 'リポジトリは必須です',\n  branch_required: 'ブランチは必須です',\n  key_required: 'キーは必須です',\n  user_required: 'ユーザーは必須です',\n  build_version_required: 'ビルドバージョンは必須です',\n  title_required: 'タイトルは必須です',\n  isRequired: 'は必須です',\n  mustBeInteger: '整数でなければなりません',\n  mustBe0OrGreater: '0以上でなければなりません',\n  start_version_required: '開始バージョンは必須です',\n  playbook_filename_required: 'プレイブックファイル名は必須です',\n  inventory_required: 'インベントリは必須です',\n  environment_required: '環境は必須です',\n  email_required: 'メールは必須です',\n  build_template_required: 'ビルドテンプレートは必須です',\n  Task: 'タスク',\n  Build: 'ビルド',\n  Deploy: 'デプロイ',\n  Run: '実行',\n  ReBuild: '再ビルド',\n  ReDeploy: '再デプロイ',\n  ReRun: '再実行',\n  CreateDemoProject: 'デモプロジェクトを作成',\n  LeaveProject: 'プロジェクトを離れる',\n  integration: '統合',\n  integrations: '統合',\n  NewIntegration: '新しい統合',\n  EditIntegration: '統合を編集',\n  DeleteIntegration: '統合を削除',\n  DeleteIntegrationMsg: '本当にこの統合を削除しますか？',\n  AddAlias: 'エイリアスを追加',\n  LoadAlias: 'エイリアスを読み込み中...',\n  globalAlias: 'プロジェクトエイリアスを使用',\n  matcher: 'マッチャー',\n  matchType: 'マッチタイプ',\n  newMatcher: '新しいマッチャー',\n  matchMethod: '比較方法',\n  matchBodyDataType: 'ボディデータタイプ',\n  extractValue: '値を抽出',\n  newExtractedValue: '新しい抽出値',\n  extractedValueSource: '値のソース',\n  matchKey: 'キー',\n  matchValue: '値',\n  matchOn: 'マッチする',\n  runners: 'ランナー',\n  newRunner: '新しいランナー',\n  enabled: '有効',\n  scheduleNextRun: '次の実行',\n  maxNumberOfParallelTasks: '最大並列タスク数',\n  runnerUsage: '使用法:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'トークン:',\n  editRunner: 'ランナーを編集',\n  deleteRunner: 'ランナーを削除',\n  newRunnerToken: '新しいランナー',\n  askDeleteRunner: '本当にランナー {runner} を削除しますか？',\n  project_runners_only_pro: 'プロジェクトレベルのランナーは<b>PRO</b>バージョンでのみ利用可能です。',\n  foss_runners_limited: 'オープンソース版は機能が制限されています。完全な機能は<b>PRO</b>バージョンにあります。',\n  learn_more_about_pro: '詳細を学ぶ',\n\n  projectRestoreResult: 'プロジェクト復元結果',\n  projectWithNameRestored: 'プロジェクト {projectName} が正常に復元されました。',\n  pleaseUpdateAccessKeys: 'タスクを実行する前にそれらを更新してください。',\n  emptyKeysRestored: '{emptyKeys} の空のキーが追加されました。',\n  template: 'テンプレート',\n  aliasUrlCopied: 'エイリアスURLがクリップボードにコピーされました。',\n  yes: 'はい',\n  activeTasks: 'アクティブタスク',\n  taskLocation: '場所',\n  empty: '空',\n  noValues: '値がありません',\n  addArg: '引数を追加',\n\n  status_success: '成功',\n  status_failed: '失敗',\n  status_stopped: '停止',\n\n  api_tokens: 'APIトークン',\n\n  // Terraform/OpenTofu\n  auto_approve: '自動承認',\n\n  // Ansible\n  tag: 'タグ',\n  tag_required: 'タグは必須です',\n  allowInventoryInTask: 'インベントリ',\n  allowLimitInTask: '制限',\n  addLimit: '制限を追加',\n  allowDebug: 'デバッグ',\n  addTag: 'タグを追加',\n  skipTags: 'スキップタグ',\n  addSkippedTag: 'スキップされたタグを追加',\n  tags: 'タグ',\n  limit: '制限',\n\n  runner_tag: 'ランナータグ',\n  task_prompts: 'プロンプト',\n  template_advanced: '高度なオプション',\n  template_app_options: '{app}オプション',\n  template_app_prompts: '{app}プロンプト',\n  general_settings: '一般',\n  danger_zone_settings: '危険ゾーン',\n  project_stats: '統計',\n  allow_override_branch: 'ブランチ',\n  template_common_options: '共通オプション',\n};\n"
  },
  {
    "path": "web/src/lang/ko.js",
    "content": "export default {\n  checkInterval: '체크 간격',\n  newCommitCheckInterval: '새 커밋 체크 간격',\n  schedule: '일정',\n  newSchedule: '새 일정',\n  deleteSchedule: '일정 삭제',\n  editSchedule: '일정 수정',\n  backup: '프로젝트 백업',\n  downloadTheProjectBackupFile: '프로젝트 백업 파일을 다운로드합니다.',\n  restoreProject: '프로젝트 복원...',\n  incorrectUsrPwd: '잘못된 로그인 또는 비밀번호',\n  askDeleteUser: '정말로 이 사용자를 삭제하시겠습니까?',\n  askDeleteTemp: '정말로 이 템플릿을 삭제하시겠습니까?',\n  askDeleteEnv: '정말로 이 환경을 삭제하시겠습니까?',\n  askDeleteInv: '정말로 이 인벤토리를 삭제하시겠습니까?',\n  askDeleteKey: '정말로 이 키를 삭제하시겠습니까?',\n  askDeleteRepo: '정말로 이 리포지토리를 삭제하시겠습니까?',\n  askDeleteProj: '정말로 이 프로젝트를 삭제하시겠습니까?',\n  askDeleteTMem: '정말로 이 팀 멤버를 삭제하시겠습니까?',\n  askDeleteSchedule: '정말로 이 일정을 삭제하시겠습니까?',\n  edit: '수정',\n  nnew: '새로 만들기',\n  keyFormSshKey: 'SSH 키',\n  keyFormLoginPassword: '비밀번호로 로그인',\n  keyFormNone: '없음',\n  incorrectUrl: '잘못된 URL',\n  username: '사용자 이름',\n  username_required: '사용자 이름은 필수입니다',\n  dashboard: '대시보드',\n  history: '기록',\n  activity: '활동',\n  settings: '설정',\n  signIn: '로그인',\n  password: '비밀번호',\n  changePassword: '비밀번호 변경',\n  editUser: '사용자 수정',\n  newProject: '새 프로젝트',\n  close: '닫기',\n  newProject2: '새 프로젝트...',\n  demoMode: '데모 모드',\n  task: '작업 #{expr}',\n  youCanRunAnyTasks: '모든 작업을 실행할 수 있습니다',\n  youHaveReadonlyAccess: '읽기 전용 액세스 권한이 있습니다',\n  taskTemplates: '작업 템플릿',\n  inventory: '인벤토리',\n  environment: '변수 그룹',\n  keyStore: '키 저장소',\n  repositories: '리포지토리',\n  darkMode: '다크 모드',\n  team: '팀',\n  users: '사용자',\n  editAccount: '계정 수정',\n  signOut: '로그아웃',\n  error: '오류',\n  refreshPage: '페이지 새로 고침',\n  relogin: '다시 로그인',\n  howToFixSigninIssues: '로그인 문제를 해결하는 방법',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '먼저 Semaphore가 실행되는 서버에 대한 액세스가 필요합니다.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: '서버에서 다음 명령을 실행하여 기존 사용자를 확인하십시오:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: '기존 사용자의 비밀번호를 변경할 수 있습니다:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: '또는 새 관리자 사용자를 생성하십시오:',\n  close2: '닫기',\n  semaphore: '세마포어',\n  dontHaveAccountOrCantSignIn: '계정이 없거나 로그인할 수 없습니까?',\n  password2: '비밀번호',\n  cancel: '취소',\n  noViews: '보기 없음',\n  addView: '보기 추가',\n  editEnvironment: '변수 그룹 수정',\n  deleteEnvironment: '변수 그룹 삭제',\n  newEnvironment: '새 그룹',\n  environmentName: '그룹 이름',\n  extraVariables: '추가 변수',\n  enterExtraVariablesJson: '추가 변수 JSON 입력...',\n  environmentVariables: '환경 변수',\n  enterEnvJson: 'env JSON 입력...',\n  environmentAndExtraVariablesMustBeValidJsonExample: '환경 및 추가 변수는 유효한 JSON이어야 합니다. 예:',\n  dashboard2: '대시보드',\n  ansibleSemaphore: '세마포어 UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '죄송하지만 <%= htmlWebpackPlugin.options.title %>는 JavaScript가 활성화되지 않으면 제대로 작동하지 않습니다. 계속하려면 활성화하십시오.',\n  deleteInventory: '인벤토리 삭제',\n  newInventory: '새 인벤토리',\n  name: '이름',\n  userCredentials: '사용자 자격 증명',\n  sudoCredentialsOptional: 'Sudo 자격 증명 (선택 사항)',\n  type: '유형',\n  pathToInventoryFile: '인벤토리 파일 경로',\n  enterInventory: '인벤토리 입력...',\n  staticInventoryExample: '정적 인벤토리 예:',\n  staticYamlInventoryExample: '정적 YAML 인벤토리 예:',\n  keyName: '키 이름',\n  loginOptional: '로그인 (선택 사항)',\n  usernameOptional: '사용자 이름 (선택 사항)',\n  privateKey: '개인 키',\n  override: '재정의',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'HTTPS 리포지토리 및 비 SSH 연결을 사용하는 플레이북에 이 유형의 키를 사용하십시오.',\n  deleteKey: '키 삭제',\n  newKey: '새 키',\n  create: '생성',\n  newTask: '새 작업',\n  cantDeleteThe: '{objectTitle}을(를) 삭제할 수 없습니다',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle}은(는) 아래 리소스에서 사용되므로 삭제할 수 없습니다',\n  projectName: '프로젝트 이름',\n  allowAlertsForThisProject: '이 프로젝트에 대한 알림 허용',\n  telegramChatIdOptional: '텔레그램 채팅 ID (선택 사항)',\n  maxNumberOfParallelTasksOptional: '최대 병렬 작업 수 (선택 사항)',\n  deleteRepository: '리포지토리 삭제',\n  newRepository: '새 리포지토리',\n  urlOrPath: 'URL 또는 경로',\n  absPath: '절대 경로',\n  branch: '브랜치',\n  accessKey: '액세스 키',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Git 리포지토리에 액세스하기 위한 자격 증명. 다음과 같아야 합니다:',\n  ifYouUseGitOrSshUrl: 'Git 또는 SSH URL을 사용하는 경우.',\n  ifYouUseHttpsOrFileUrl: 'HTTPS 또는 파일 URL을 사용하는 경우.',\n  none: '없음',\n  ssh: 'SSH',\n  deleteProject: '프로젝트 삭제',\n  save: '저장',\n  deleteProject2: '프로젝트 삭제',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '프로젝트를 삭제하면 되돌릴 수 없습니다. 확실히 하십시오.',\n\n  clear_cache: '캐시 지우기',\n  clear_cache_message: '이 프로젝트와 관련된 모든 캐시 파일을 삭제합니다. 이 작업은 되돌릴 수 없습니다.',\n\n  name2: '이름 *',\n  title: '제목 *',\n  description: '설명',\n  required: '필수',\n  key: '{expr}',\n  surveyVariables: '설문 변수',\n  addVariable: '변수 추가',\n  vaultName: '금고 ID (선택 사항)',\n  vaultNameDefault: '하나의 `default` (빈) 이름만 존재할 수 있습니다',\n  vaultNameUnique: '고유해야 합니다',\n  vaultTypePassword: '비밀번호',\n  vaultTypeScript: '클라이언트 스크립트',\n  vaultScript: '스크립트 경로',\n  vaultScriptRequired: '스크립트 경로는 필수입니다',\n  vaultScriptClientRequired: '스크립트 경로는 \\'-client\\'로 끝나야 하며 확장자가 필요합니다',\n  vaults: '금고',\n  vaultAdd: '금고 추가',\n  vaultRequired: '금고 비밀번호는 필수입니다',\n  columns: '열',\n  buildVersion: '빌드 버전',\n  messageOptional: '메시지 (선택 사항)',\n  debug: '디버그',\n  dryRun: '드라이 런',\n  diff: '차이',\n  advanced: '고급',\n  hide: '숨기기',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: '작업 템플릿 설정에서 CLI 인수를 재정의할 수 있도록 허용하십시오',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 인수 (JSON 배열). 예: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: '시작됨',\n  author: '작성자',\n  duration: '지속 시간',\n  stop: '중지',\n  forceStop: '강제 중지',\n  stopAll: '모두 중지',\n  stopAllTasks: '모든 작업 중지',\n  askStopAllTasks: '모든 작업을 중지하시겠습니까?',\n  forceStopAllTasks: '모든 작업 강제 중지',\n  askForceStopAllTasks: '모든 작업을 강제 중지하시겠습니까?',\n  raw_log: '원시 로그',\n\n  confirmTask: '확인',\n  deleteTeamMember: '팀 멤버 삭제',\n  team2: '팀',\n  newTeamMember: '새 팀 멤버',\n  user: '사용자',\n  administrator: '관리자',\n  definesStartVersionOfYourArtifactEachRunIncrements: '아티팩트의 시작 버전을 정의합니다. 각 실행은 아티팩트 버전을 증가시킵니다.',\n  forMoreInformationAboutBuildingSeeThe: '빌드에 대한 자세한 정보는 다음을 참조하십시오',\n  taskTemplateReference: '작업 템플릿 참조',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '작업 실행 시 배포해야 할 아티팩트를 정의합니다.',\n  forMoreInformationAboutDeployingSeeThe: '배포에 대한 자세한 정보는 다음을 참조하십시오',\n  taskTemplateReference2: '작업 템플릿 참조',\n  definesAutorunSchedule: '자동 실행 일정을 정의합니다.',\n  forMoreInformationAboutCronSeeThe: '크론에 대한 자세한 정보는 다음을 참조하십시오',\n  cronExpressionFormatReference: '크론 표현식 형식 참조',\n  startVersion: '시작 버전',\n  example000: '예: 0.0.0',\n  buildTemplate: '빌드 템플릿',\n  autorun: '자동 실행',\n  playbookFilename: '플레이북 파일 경로 *',\n  exampleSiteyml: '예: deploy/site.yml',\n  inventory2: '인벤토리 *',\n  repository: '리포지토리',\n  environment3: '변수 그룹 *',\n  vaultPassword: '금고 비밀번호',\n  vaultPassword2: '금고 비밀번호',\n  view: '보기',\n  cron: '크론',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '저는 특정 리포지토리의 새로운 커밋에 대해서만 크론으로 작업을 실행하고 싶습니다',\n  repository2: '리포지토리',\n  cronChecksNewCommitBeforeRun: '크론은 실행 전에 새로운 커밋을 확인합니다',\n  readThe: '읽기',\n  toLearnMoreAboutCron: '크론에 대해 더 알아보려면.',\n  suppressSuccessAlerts: '성공 알림 억제',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 인수 (JSON 배열). 예: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI 인수',\n  docs: '문서',\n  editViews: '보기 수정',\n  newTemplate: '새 템플릿',\n  taskTemplates2: '작업 템플릿',\n  all: '모두',\n  notLaunched: '시작되지 않음',\n  by: '{user_name}에 의해',\n  editTemplate: '템플릿 수정',\n  newTemplate2: '새 템플릿',\n  deleteTemplate: '템플릿 삭제',\n  playbook: '플레이북',\n  email: '이메일',\n  adminUser: '관리자 사용자',\n  sendAlerts: '알림 전송',\n  deleteUser: '사용자 삭제',\n  newUser: '새 사용자',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} 팀 멤버',\n  taskId: '작업 ID',\n  version: '버전',\n  status: '상태',\n  start: '시작',\n  actions: '작업',\n  alert: '알림',\n  admin: '관리자',\n  role: '역할',\n  external: '외부',\n  time: '시간',\n  path: '경로',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH 키',\n  lastTask: '마지막 작업',\n  task2: '작업',\n  build: '빌드',\n  deploy: '배포',\n  run: '실행',\n  add: '추가',\n  password_required: '비밀번호는 필수입니다',\n  name_required: '이름은 필수입니다',\n  user_credentials_required: '사용자 자격 증명은 필수입니다',\n  type_required: '유형은 필수입니다',\n  path_required: '인벤토리 파일 경로는 필수입니다',\n  private_key_required: '개인 키는 필수입니다',\n  project_name_required: '프로젝트 이름은 필수입니다',\n  repository_required: '리포지토리는 필수입니다',\n  branch_required: '브랜치는 필수입니다',\n  key_required: '키는 필수입니다',\n  user_required: '사용자는 필수입니다',\n  build_version_required: '빌드 버전은 필수입니다',\n  title_required: '제목은 필수입니다',\n  isRequired: '필수입니다',\n  mustBeInteger: '정수여야 합니다',\n  mustBe0OrGreater: '0 이상이어야 합니다',\n  start_version_required: '시작 버전은 필수입니다',\n  playbook_filename_required: '플레이북 파일 이름은 필수입니다',\n  inventory_required: '인벤토리는 필수입니다',\n  environment_required: '환경은 필수입니다',\n  email_required: '이메일은 필수입니다',\n  build_template_required: '빌드 템플릿은 필수입니다',\n  Task: '작업',\n  Build: '빌드',\n  Deploy: '배포',\n  Run: '실행',\n  ReBuild: '재빌드',\n  ReDeploy: '재배포',\n  ReRun: '재실행',\n  CreateDemoProject: '데모 프로젝트 생성',\n  LeaveProject: '프로젝트 나가기',\n  integration: '통합',\n  integrations: '통합',\n  NewIntegration: '새 통합',\n  EditIntegration: '통합 수정',\n  DeleteIntegration: '통합 삭제',\n  DeleteIntegrationMsg: '정말로 이 통합을 삭제하시겠습니까?',\n  AddAlias: '별칭 추가',\n  LoadAlias: '별칭 로딩 중...',\n  globalAlias: '프로젝트 별칭 사용',\n  matcher: '매처',\n  matchType: '일치 유형',\n  newMatcher: '새 매처',\n  matchMethod: '비교 방법',\n  matchBodyDataType: '본문 데이터 유형',\n  extractValue: '값 추출',\n  newExtractedValue: '새로 추출된 값',\n  extractedValueSource: '값 출처',\n  matchKey: '키',\n  matchValue: '값',\n  matchOn: '일치 기준',\n  runners: '러너',\n  newRunner: '새 러너',\n  enabled: '활성화됨',\n  scheduleNextRun: '다음 실행',\n  maxNumberOfParallelTasks: '최대 병렬 작업 수',\n  runnerUsage: '사용:',\n  runnerDockerCommand: '도커:',\n  runnerToken: '토큰:',\n  editRunner: '러너 수정',\n  deleteRunner: '러너 삭제',\n  newRunnerToken: '새 러너',\n  askDeleteRunner: '정말로 러너 {runner}를 삭제하시겠습니까?',\n  project_runners_only_pro: '프로젝트 수준의 러너는 <b>PRO</b> 버전에서만 사용할 수 있습니다.',\n  foss_runners_limited: '오픈 소스 버전은 기능이 제한되어 있으며, 전체 기능은 <b>PRO</b> 버전에서 사용할 수 있습니다.',\n  learn_more_about_pro: '자세히 알아보기',\n\n  projectRestoreResult: '프로젝트 복원 결과',\n  projectWithNameRestored: '프로젝트 {projectName}가 성공적으로 복원되었습니다.',\n  pleaseUpdateAccessKeys: '작업을 실행하기 전에 액세스 키를 업데이트하십시오.',\n  emptyKeysRestored: '{emptyKeys} 개의 빈 키가 추가되었습니다.',\n  template: '템플릿',\n  aliasUrlCopied: '별칭 URL이 클립보드에 복사되었습니다.',\n  yes: '예',\n  activeTasks: '활성 작업',\n  taskLocation: '위치',\n  empty: '비어 있음',\n  noValues: '값 없음',\n  addArg: '인수 추가',\n\n  status_success: '성공',\n  status_failed: '실패',\n  status_stopped: '중지됨',\n\n  api_tokens: 'API 토큰',\n\n  // Terraform/OpenTofu\n  auto_approve: '자동 승인',\n\n  // Ansible\n  tag: '태그',\n  tag_required: '태그는 필수입니다',\n  allowInventoryInTask: '인벤토리',\n  allowLimitInTask: '제한',\n  addLimit: '제한 추가',\n  allowDebug: '디버그',\n  addTag: '태그 추가',\n  skipTags: '태그 건너뛰기',\n  addSkippedTag: '건너뛴 태그 추가',\n  tags: '태그',\n  limit: '제한',\n\n  runner_tag: '러너 태그',\n  task_prompts: '프롬프트',\n  template_advanced: '고급 옵션',\n  template_app_options: '{app} 옵션',\n  template_app_prompts: '{app} 프롬프트',\n  general_settings: '일반',\n  danger_zone_settings: '위험 구역',\n  project_stats: '통계',\n  allow_override_branch: '브랜치',\n  template_common_options: '공통 옵션',\n};\n"
  },
  {
    "path": "web/src/lang/nl.js",
    "content": "export default {\n  checkInterval: 'controleerInterval',\n  newCommitCheckInterval: 'Nieuwe commit controle interval',\n  schedule: 'Schema',\n  newSchedule: 'Nieuw Schema',\n  deleteSchedule: 'Schema Verwijderen',\n  editSchedule: 'Schema Bewerken',\n  backup: 'Project Back-up',\n  downloadTheProjectBackupFile: 'Download het project back-up bestand.',\n  restoreProject: 'Project Herstellen...',\n  incorrectUsrPwd: 'Onjuiste inlog of wachtwoord',\n  askDeleteUser: 'Wilt u deze gebruiker echt verwijderen?',\n  askDeleteTemp: 'Wilt u deze sjabloon echt verwijderen?',\n  askDeleteEnv: 'Wilt u deze omgeving echt verwijderen?',\n  askDeleteInv: 'Wilt u deze inventaris echt verwijderen?',\n  askDeleteKey: 'Wilt u deze sleutel echt verwijderen?',\n  askDeleteRepo: 'Wilt u dit repository echt verwijderen?',\n  askDeleteProj: 'Wilt u dit project echt verwijderen?',\n  askDeleteTMem: 'Wilt u dit teamlid echt verwijderen?',\n  askDeleteSchedule: 'Wilt u dit schema echt verwijderen?',\n  edit: 'Bewerken',\n  nnew: 'Nieuw',\n  keyFormSshKey: 'SSH Sleutel',\n  keyFormLoginPassword: 'Inloggen met wachtwoord',\n  keyFormNone: 'Geen',\n  incorrectUrl: 'Onjuiste URL',\n  username: 'Gebruikersnaam',\n  username_required: 'Gebruikersnaam is vereist',\n  dashboard: 'Dashboard',\n  history: 'Geschiedenis',\n  activity: 'Activiteit',\n  settings: 'Instellingen',\n  signIn: 'Inloggen',\n  password: 'Wachtwoord',\n  changePassword: 'Wachtwoord Wijzigen',\n  editUser: 'Gebruiker Bewerken',\n  newProject: 'Nieuw Project',\n  close: 'Sluiten',\n  newProject2: 'Nieuw Project...',\n  demoMode: 'DEMO MODUS',\n  task: 'Taak #{expr}',\n  youCanRunAnyTasks: 'U kunt elke taak uitvoeren',\n  youHaveReadonlyAccess: 'U heeft alleen-lezen toegang',\n  taskTemplates: 'Taak Sjablonen',\n  inventory: 'Inventaris',\n  environment: 'Variabele Groepen',\n  keyStore: 'Sleutel Opslag',\n  repositories: 'Repositories',\n  darkMode: 'Donkere Modus',\n  team: 'Team',\n  users: 'Gebruikers',\n  editAccount: 'Account Bewerken',\n  signOut: 'Uitloggen',\n  error: 'Fout',\n  refreshPage: 'Vernieuw Pagina',\n  relogin: 'Opnieuw Inloggen',\n  howToFixSigninIssues: 'Hoe inlogproblemen op te lossen',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Ten eerste heeft u toegang nodig tot de server waar Semaphore draait.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Voer de volgende opdracht op de server uit om bestaande gebruikers te zien:',\n  semaphoreUserList: 'semaphore gebruikerslijst',\n  youCanChangePasswordOfExistingUser: 'U kunt het wachtwoord van een bestaande gebruiker wijzigen:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore gebruiker wijzig-per-inlog --login gebruiker123 --wachtwoord {maakWachtwoordVoorbeeld}',\n  orCreateNewAdminUser: 'Of maak een nieuwe admin gebruiker:',\n  close2: 'Sluiten',\n  semaphore: 'SEMAPHORE',\n  dontHaveAccountOrCantSignIn: 'Heeft u geen account of kunt u niet inloggen?',\n  password2: 'Wachtwoord',\n  cancel: 'Annuleren',\n  noViews: 'Geen weergaven',\n  addView: 'Weergave Toevoegen',\n  editEnvironment: 'Variabele Groep Bewerken',\n  deleteEnvironment: 'Variabele Groep Verwijderen',\n  newEnvironment: 'Nieuwe Groep',\n  environmentName: 'Groepsnaam',\n  extraVariables: 'Extra variabelen',\n  enterExtraVariablesJson: 'Voer extra variabelen JSON in...',\n  environmentVariables: 'Omgevingsvariabelen',\n  enterEnvJson: 'Voer env JSON in...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Omgevings- en extra variabelen moeten geldige JSON zijn. Voorbeeld:',\n  dashboard2: 'Dashboard',\n  ansibleSemaphore: 'Semaphore UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Het spijt ons, maar <%= htmlWebpackPlugin.options.title %> werkt niet goed zonder ingeschakelde JavaScript. Schakel het in om door te gaan.',\n  deleteInventory: 'Verwijder inventaris',\n  newInventory: 'Nieuwe Inventaris',\n  name: 'Naam',\n  userCredentials: 'Gebruikersreferenties',\n  sudoCredentialsOptional: 'Sudo Referenties (Optioneel)',\n  type: 'Type',\n  pathToInventoryFile: 'Pad naar Inventarisbestand',\n  enterInventory: 'Voer inventaris in...',\n  staticInventoryExample: 'Statische inventarisvoorbeeld:',\n  staticYamlInventoryExample: 'Statisch YAML inventarisvoorbeeld:',\n  keyName: 'Sleutelnaam',\n  loginOptional: 'Inloggen (Optioneel)',\n  usernameOptional: 'Gebruikersnaam (Optioneel)',\n  privateKey: 'Privésleutel',\n  override: 'Overschrijven',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Gebruik dit type sleutel voor HTTPS repositories en voor playbooks die geen SSH-verbindingen gebruiken.',\n  deleteKey: 'Sleutel Verwijderen',\n  newKey: 'Nieuwe Sleutel',\n  create: 'Aanmaken',\n  newTask: 'Nieuwe Taak',\n  cantDeleteThe: 'Kan de {objectTitle} niet verwijderen',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'De {objectTitle} kan niet worden verwijderd omdat deze wordt gebruikt door de onderstaande bronnen',\n  projectName: 'Projectnaam',\n  allowAlertsForThisProject: 'Sta waarschuwingen voor dit project toe',\n  telegramChatIdOptional: 'Telegram Chat ID (Optioneel)',\n  maxNumberOfParallelTasksOptional: 'Maximaal aantal parallelle taken (Optioneel)',\n  deleteRepository: 'Repository Verwijderen',\n  newRepository: 'Nieuwe Repository',\n  urlOrPath: 'URL of pad',\n  absPath: 'absoluut pad',\n  branch: 'Tak',\n  accessKey: 'Toegangssleutel',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Referenties om toegang te krijgen tot het Git-repository. Het moet zijn:',\n  ifYouUseGitOrSshUrl: 'als u Git of SSH URL gebruikt.',\n  ifYouUseHttpsOrFileUrl: 'als u HTTPS of bestand URL gebruikt.',\n  none: 'Geen',\n  ssh: 'SSH',\n  deleteProject: 'Project Verwijderen',\n  save: 'Opslaan',\n  deleteProject2: 'Project Verwijderen',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Zodra u een project verwijdert, is er geen weg terug. Wees alstublieft zeker.',\n\n  clear_cache: 'Cache wissen',\n  clear_cache_message: 'Verwijder alle cachebestanden die aan dit project zijn gerelateerd. Deze actie is onomkeerbaar.',\n\n  name2: 'Naam *',\n  title: 'Titel *',\n  description: 'Beschrijving',\n  required: 'Vereist',\n  key: '{expr}',\n  surveyVariables: 'Enquête Variabelen',\n  addVariable: 'Variabele Toevoegen',\n  vaultName: 'Kluis ID (optioneel)',\n  vaultNameDefault: 'Er mag slechts één `default` (leeg) naam bestaan',\n  vaultNameUnique: 'Moet uniek zijn',\n  vaultTypePassword: 'Wachtwoord',\n  vaultTypeScript: 'Client Script',\n  vaultScript: 'Script Pad',\n  vaultScriptRequired: 'Script Pad is vereist',\n  vaultScriptClientRequired: 'Script pad moet eindigen met \\'-client\\' en extensie',\n  vaults: 'Kluis',\n  vaultAdd: 'Voeg Kluis Toe',\n  vaultRequired: 'Kluis Wachtwoord is vereist',\n  columns: 'Kolommen',\n  buildVersion: 'Bouw Versie',\n  messageOptional: 'Bericht (Optioneel)',\n  debug: 'Debug',\n  dryRun: 'Droge Run',\n  diff: 'Verschil',\n  advanced: 'Geavanceerd',\n  hide: 'Verbergen',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Om het overschrijven van CLI-argumenten in Taak Sjablooninstellingen toe te staan',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI Args (JSON-array). Voorbeeld: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Gestart',\n  author: 'Auteur',\n  duration: 'Duur',\n  stop: 'Stop',\n  forceStop: 'Force Stop',\n  stopAll: 'Alles stoppen',\n  stopAllTasks: 'Alle taken stoppen',\n  askStopAllTasks: 'Weet u zeker dat u alle taken wilt stoppen?',\n  forceStopAllTasks: 'Alle taken geforceerd stoppen',\n  askForceStopAllTasks: 'Weet u zeker dat u alle taken geforceerd wilt stoppen?',\n  raw_log: 'Ruwe log',\n\n  confirmTask: 'Bevestigen',\n  deleteTeamMember: 'Teamlid Verwijderen',\n  team2: 'Team',\n  newTeamMember: 'Nieuw Teamlid',\n  user: 'Gebruiker',\n  administrator: 'Administrator',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Definieert de startversie van uw artifact. Elke run verhoogt de artifactversie.',\n  forMoreInformationAboutBuildingSeeThe: 'Voor meer informatie over bouwen, zie de',\n  taskTemplateReference: 'Taak Sjabloon referentie',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Definieert welk artifact moet worden gedeployed wanneer de taak draait.',\n  forMoreInformationAboutDeployingSeeThe: 'Voor meer informatie over deployen, zie de',\n  taskTemplateReference2: 'Taak Sjabloon referentie',\n  definesAutorunSchedule: 'Definieert autorun schema.',\n  forMoreInformationAboutCronSeeThe: 'Voor meer informatie over cron, zie de',\n  cronExpressionFormatReference: 'Cron expressie formaat referentie',\n  startVersion: 'Start Versie',\n  example000: 'Voorbeeld: 0.0.0',\n  buildTemplate: 'Bouw Sjabloon',\n  autorun: 'Autorun',\n  playbookFilename: 'Pad naar playbook bestand *',\n  exampleSiteyml: 'Voorbeeld: deploy/site.yml',\n  inventory2: 'Inventaris *',\n  repository: 'Repository',\n  environment3: 'Variabele Groep *',\n  vaultPassword: 'Kluis Wachtwoord',\n  vaultPassword2: 'Kluis Wachtwoord',\n  view: 'Weergave',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Ik wil een taak via cron alleen uitvoeren voor nieuwe commits van een bepaalde repository',\n  repository2: 'Repository',\n  cronChecksNewCommitBeforeRun: 'Cron controleert nieuwe commit voor run',\n  readThe: 'Lees de',\n  toLearnMoreAboutCron: 'om meer te leren over Cron.',\n  suppressSuccessAlerts: 'Suppress success alerts',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI Args (JSON-array). Voorbeeld: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI-argumenten',\n  docs: 'documentatie',\n  editViews: 'Weergaven Bewerken',\n  newTemplate: 'Nieuw sjabloon',\n  taskTemplates2: 'Taak Sjablonen',\n  all: 'Alle',\n  notLaunched: 'Niet gelanceerd',\n  by: 'door {user_name}',\n  editTemplate: 'Sjabloon Bewerken',\n  newTemplate2: 'Nieuw Sjabloon',\n  deleteTemplate: 'Sjabloon Verwijderen',\n  playbook: 'Playbook',\n  email: 'E-mail',\n  adminUser: 'Admin gebruiker',\n  sendAlerts: 'Stuur waarschuwingen',\n  deleteUser: 'Verwijder gebruiker',\n  newUser: 'Nieuwe Gebruiker',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Teamlid',\n  taskId: 'Taak ID',\n  version: 'Versie',\n  status: 'Status',\n  start: 'Start',\n  actions: 'Acties',\n  alert: 'Waarschuwing',\n  admin: 'Admin',\n  role: 'Rol',\n  external: 'Extern',\n  time: 'Tijd',\n  path: 'Pad',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH Sleutel',\n  lastTask: 'Laatste Taak',\n  task2: 'Taak',\n  build: 'Bouwen',\n  deploy: 'Deployen',\n  run: 'Uitvoeren',\n  add: 'Toevoegen',\n  password_required: 'Wachtwoord is vereist',\n  name_required: 'Naam is vereist',\n  user_credentials_required: 'Gebruikersreferenties zijn vereist',\n  type_required: 'Type is vereist',\n  path_required: 'Pad naar Inventarisbestand is vereist',\n  private_key_required: 'Privésleutel is vereist',\n  project_name_required: 'Projectnaam is vereist',\n  repository_required: 'Repository is vereist',\n  branch_required: 'Tak is vereist',\n  key_required: 'Sleutel is vereist',\n  user_required: 'Gebruiker is vereist',\n  build_version_required: 'Bouwversie is vereist',\n  title_required: 'Titel is vereist',\n  isRequired: 'is vereist',\n  mustBeInteger: 'Moet een geheel getal zijn',\n  mustBe0OrGreater: 'Moet 0 of groter zijn',\n  start_version_required: 'Startversie is vereist',\n  playbook_filename_required: 'Playbook-bestandsnaam is vereist',\n  inventory_required: 'Inventaris is vereist',\n  environment_required: 'Omgeving is vereist',\n  email_required: 'E-mail is vereist',\n  build_template_required: 'Bouwsjabloon is vereist',\n  Task: 'Taak',\n  Build: 'Bouwen',\n  Deploy: 'Deployen',\n  Run: 'Uitvoeren',\n  ReBuild: 'Herbouwen',\n  ReDeploy: 'Herdeployen',\n  ReRun: 'Heruitvoeren',\n  CreateDemoProject: 'Maak Demo Project',\n  LeaveProject: 'Verlaat Project',\n  integration: 'Integratie',\n  integrations: 'Integraties',\n  NewIntegration: 'Nieuwe Integratie',\n  EditIntegration: 'Integratie Bewerken',\n  DeleteIntegration: 'Integratie Verwijderen',\n  DeleteIntegrationMsg: 'Weet u zeker dat u deze integratie wilt verwijderen?',\n  AddAlias: 'Voeg Alias Toe',\n  LoadAlias: 'Aliassen laden...',\n  globalAlias: 'Gebruik projectalias',\n  matcher: 'Matcher',\n  matchType: 'Vergelijkings Type',\n  newMatcher: 'Nieuwe Matcher',\n  matchMethod: 'Vergelijkings Methode',\n  matchBodyDataType: 'Body Gegevens Type',\n  extractValue: 'Waarde Extraheren',\n  newExtractedValue: 'Nieuwe Geëxtraheerde Waarde',\n  extractedValueSource: 'Waarde Bron',\n  matchKey: 'Sleutel',\n  matchValue: 'Waarde',\n  matchOn: 'Vergelijk op',\n  runners: 'Runners',\n  newRunner: 'Nieuwe Runner',\n  enabled: 'Ingeschakeld',\n  scheduleNextRun: 'Volgende run',\n  maxNumberOfParallelTasks: 'Maximaal aantal parallelle taken',\n  runnerUsage: 'Gebruik:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Runner Bewerken',\n  deleteRunner: 'Runner Verwijderen',\n  newRunnerToken: 'Nieuwe Runner',\n  askDeleteRunner: 'Wilt u runner {runner} echt verwijderen?',\n  project_runners_only_pro: 'Projectniveau runners zijn alleen beschikbaar in de <b>PRO</b> versie.',\n  foss_runners_limited: 'De open-source versie heeft beperkte functionaliteit; volledige functionaliteit is in de <b>PRO</b> versie.',\n  learn_more_about_pro: 'Leer meer',\n\n  projectRestoreResult: 'Project herstelresultaten',\n  projectWithNameRestored: 'Project {projectName} succesvol hersteld.',\n  pleaseUpdateAccessKeys: 'Werk ze alstublieft bij voordat u taken uitvoert.',\n  emptyKeysRestored: '{emptyKeys} lege sleutels toegevoegd.',\n  template: 'Sjabloon',\n  aliasUrlCopied: 'De alias-URL is naar het klembord gekopieerd.',\n  yes: 'Ja',\n  activeTasks: 'Actieve Taken',\n  taskLocation: 'Locatie',\n  empty: 'Leeg',\n  noValues: 'Geen waarden',\n  addArg: 'Voeg arg toe',\n\n  status_success: 'Succes',\n  status_failed: 'Mislukt',\n  status_stopped: 'Gestopt',\n\n  api_tokens: 'API Tokens',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Automatisch goedkeuren',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag is vereist',\n  allowInventoryInTask: 'Inventaris',\n  allowLimitInTask: 'Limiet',\n  addLimit: 'Voeg limiet toe',\n  allowDebug: 'Debug',\n  addTag: 'Voeg tag toe',\n  skipTags: 'Sla tags over',\n  addSkippedTag: 'Voeg overgeslagen tag toe',\n  tags: 'Tags',\n  limit: 'Limiet',\n\n  runner_tag: 'Runner tag',\n  task_prompts: 'Vragen',\n  template_advanced: 'Geavanceerde opties',\n  template_app_options: '{app} opties',\n  template_app_prompts: '{app} vragen',\n  general_settings: 'Algemeen',\n  danger_zone_settings: 'Gevarenzone',\n  project_stats: 'Statistieken',\n  allow_override_branch: 'Tak',\n  template_common_options: 'Gemeenschappelijke opties',\n};\n"
  },
  {
    "path": "web/src/lang/pl.js",
    "content": "export default {\n  checkInterval: 'interwałSprawdzania',\n  newCommitCheckInterval: 'Interwał sprawdzania nowych commitów',\n  schedule: 'Harmonogram',\n  newSchedule: 'Nowy harmonogram',\n  deleteSchedule: 'Usuń harmonogram',\n  editSchedule: 'Edytuj harmonogram',\n  backup: 'Kopia zapasowa projektu',\n  downloadTheProjectBackupFile: 'Pobierz plik kopii zapasowej projektu.',\n  restoreProject: 'Przywróć projekt...',\n  incorrectUsrPwd: 'Niepoprawny login lub hasło',\n  askDeleteUser: 'Czy na pewno chcesz usunąć tego użytkownika?',\n  askDeleteTemp: 'Czy na pewno chcesz usunąć ten szablon?',\n  askDeleteEnv: 'Czy na pewno chcesz usunąć to środowisko?',\n  askDeleteInv: 'Czy na pewno chcesz usunąć ten inwentarz?',\n  askDeleteKey: 'Czy na pewno chcesz usunąć ten klucz?',\n  askDeleteRepo: 'Czy na pewno chcesz usunąć to repozytorium?',\n  askDeleteProj: 'Czy na pewno chcesz usunąć ten projekt?',\n  askDeleteTMem: 'Czy na pewno chcesz usunąć tego członka zespołu?',\n  askDeleteSchedule: 'Czy na pewno chcesz usunąć ten harmonogram?',\n  edit: 'Edytuj',\n  nnew: 'Nowy',\n  keyFormSshKey: 'Klucz SSH',\n  keyFormLoginPassword: 'Logowanie z hasłem',\n  keyFormNone: 'Brak',\n  incorrectUrl: 'Niepoprawny URL',\n  username: 'Nazwa użytkownika',\n  username_required: 'Nazwa użytkownika jest wymagana',\n  dashboard: 'Panel',\n  history: 'Historia',\n  activity: 'Aktywność',\n  settings: 'Ustawienia',\n  signIn: 'Zaloguj się',\n  password: 'Hasło',\n  changePassword: 'Zmień hasło',\n  editUser: 'Edytuj użytkownika',\n  newProject: 'Nowy projekt',\n  close: 'Zamknij',\n  newProject2: 'Nowy projekt...',\n  demoMode: 'TRYB DEMO',\n  task: 'Zadanie #{expr}',\n  youCanRunAnyTasks: 'Możesz uruchomić dowolne zadania',\n  youHaveReadonlyAccess: 'Masz dostęp tylko do odczytu',\n  taskTemplates: 'Szablony zadań',\n  inventory: 'Inwentarz',\n  environment: 'Grupy zmiennych',\n  keyStore: 'Magazyn kluczy',\n  repositories: 'Repozytoria',\n  darkMode: 'Tryb ciemny',\n  team: 'Zespół',\n  users: 'Użytkownicy',\n  editAccount: 'Edytuj konto',\n  signOut: 'Wyloguj się',\n  error: 'Błąd',\n  refreshPage: 'Odśwież stronę',\n  relogin: 'Ponowne logowanie',\n  howToFixSigninIssues: 'Jak naprawić problemy z logowaniem',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Po pierwsze, musisz mieć dostęp do serwera, na którym działa Semaphore.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Wykonaj następujące polecenie na serwerze, aby zobaczyć istniejących użytkowników:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Możesz zmienić hasło istniejącego użytkownika:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Lub utwórz nowego użytkownika administratora:',\n  close2: 'Zamknij',\n  semaphore: 'SEMAFOR',\n  dontHaveAccountOrCantSignIn: 'Nie masz konta lub nie możesz się zalogować?',\n  password2: 'Hasło',\n  cancel: 'Anuluj',\n  noViews: 'Brak widoków',\n  addView: 'Dodaj widok',\n  editEnvironment: 'Edytuj grupę zmiennych',\n  deleteEnvironment: 'Usuń grupę zmiennych',\n  newEnvironment: 'Nowa grupa',\n  environmentName: 'Nazwa grupy',\n  extraVariables: 'Dodatkowe zmienne',\n  enterExtraVariablesJson: 'Wprowadź dodatkowe zmienne JSON...',\n  environmentVariables: 'Zmienne środowiskowe',\n  enterEnvJson: 'Wprowadź JSON środowiska...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Zmienne środowiskowe i dodatkowe muszą być poprawnym JSON. Przykład:',\n  dashboard2: 'Panel',\n  ansibleSemaphore: 'Interfejs użytkownika Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Przykro nam, ale <%= htmlWebpackPlugin.options.title %> nie działa poprawnie bez włączonego JavaScriptu. Proszę włączyć go, aby kontynuować.',\n  deleteInventory: 'Usuń inwentarz',\n  newInventory: 'Nowy inwentarz',\n  name: 'Nazwa',\n  userCredentials: 'Dane logowania użytkownika',\n  sudoCredentialsOptional: 'Dane logowania sudo (opcjonalnie)',\n  type: 'Typ',\n  pathToInventoryFile: 'Ścieżka do pliku inwentarza',\n  enterInventory: 'Wprowadź inwentarz...',\n  staticInventoryExample: 'Przykład statycznego inwentarza:',\n  staticYamlInventoryExample: 'Przykład statycznego inwentarza YAML:',\n  keyName: 'Nazwa klucza',\n  loginOptional: 'Login (opcjonalnie)',\n  usernameOptional: 'Nazwa użytkownika (opcjonalnie)',\n  privateKey: 'Klucz prywatny',\n  override: 'Nadpisz',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Użyj tego typu klucza dla repozytoriów HTTPS i dla playbooków, które używają połączeń nie-SSH.',\n  deleteKey: 'Usuń klucz',\n  newKey: 'Nowy klucz',\n  create: 'Utwórz',\n  newTask: 'Nowe zadanie',\n  cantDeleteThe: 'Nie można usunąć {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} nie może być usunięty, ponieważ jest używany przez poniższe zasoby',\n  projectName: 'Nazwa projektu',\n  allowAlertsForThisProject: 'Zezwól na alerty dla tego projektu',\n  telegramChatIdOptional: 'ID czatu Telegram (opcjonalnie)',\n  maxNumberOfParallelTasksOptional: 'Maksymalna liczba równoległych zadań (opcjonalnie)',\n  deleteRepository: 'Usuń repozytorium',\n  newRepository: 'Nowe repozytorium',\n  urlOrPath: 'URL lub ścieżka',\n  absPath: 'absolutna ścieżka',\n  branch: 'Gałąź',\n  accessKey: 'Klucz dostępu',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Dane logowania do dostępu do repozytorium Git. Powinny być:',\n  ifYouUseGitOrSshUrl: 'jeśli używasz URL Git lub SSH.',\n  ifYouUseHttpsOrFileUrl: 'jeśli używasz URL HTTPS lub pliku.',\n  none: 'Brak',\n  ssh: 'SSH',\n  deleteProject: 'Usuń projekt',\n  save: 'Zapisz',\n  deleteProject2: 'Usuń projekt',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Gdy usuniesz projekt, nie ma powrotu. Proszę być pewnym.',\n\n  clear_cache: 'Wyczyść pamięć podręczną',\n  clear_cache_message: 'Usuń wszystkie pliki pamięci podręcznej związane z tym projektem. Ta akcja jest nieodwracalna.',\n\n  name2: 'Nazwa *',\n  title: 'Tytuł *',\n  description: 'Opis',\n  required: 'Wymagane',\n  key: '{expr}',\n  surveyVariables: 'Zmienne ankiety',\n  addVariable: 'Dodaj zmienną',\n  vaultName: 'ID skarbca (opcjonalnie)',\n  vaultNameDefault: 'Może istnieć tylko jedna nazwa `default` (pusta)',\n  vaultNameUnique: 'Musi być unikalna',\n  vaultTypePassword: 'Hasło',\n  vaultTypeScript: 'Skrypt klienta',\n  vaultScript: 'Ścieżka do skryptu',\n  vaultScriptRequired: 'Ścieżka do skryptu jest wymagana',\n  vaultScriptClientRequired: 'Ścieżka do skryptu musi kończyć się na \\'-client\\' i mieć rozszerzenie',\n  vaults: 'Skarbce',\n  vaultAdd: 'Dodaj skarbiec',\n  vaultRequired: 'Hasło skarbca jest wymagane',\n  columns: 'Kolumny',\n  buildVersion: 'Wersja kompilacji',\n  messageOptional: 'Wiadomość (opcjonalnie)',\n  debug: 'Debug',\n  dryRun: 'Symulacja',\n  diff: 'Różnice',\n  advanced: 'Zaawansowane',\n  hide: 'Ukryj',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Aby zezwolić na nadpisanie argumentu CLI w ustawieniach szablonu zadania',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumenty CLI (tablica JSON). Przykład: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Rozpoczęto',\n  author: 'Autor',\n  duration: 'Czas trwania',\n  stop: 'Zatrzymaj',\n  forceStop: 'Wymuś zatrzymanie',\n  stopAll: 'Zatrzymaj wszystko',\n  stopAllTasks: 'Zatrzymaj wszystkie zadania',\n  askStopAllTasks: 'Czy na pewno chcesz zatrzymać wszystkie zadania?',\n  forceStopAllTasks: 'Wymuś zatrzymanie wszystkich zadań',\n  askForceStopAllTasks: 'Czy na pewno chcesz wymusić zatrzymanie wszystkich zadań?',\n  raw_log: 'Surowy dziennik',\n\n  confirmTask: 'Potwierdź',\n  deleteTeamMember: 'Usuń członka zespołu',\n  team2: 'Zespół',\n  newTeamMember: 'Nowy członek zespołu',\n  user: 'Użytkownik',\n  administrator: 'Administrator',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Określa początkową wersję twojego artefaktu. Każde uruchomienie zwiększa wersję artefaktu.',\n  forMoreInformationAboutBuildingSeeThe: 'Aby uzyskać więcej informacji na temat budowania, zobacz',\n  taskTemplateReference: 'Odwołanie do szablonu zadania',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Określa, jaki artefakt powinien być wdrożony, gdy zadanie jest uruchamiane.',\n  forMoreInformationAboutDeployingSeeThe: 'Aby uzyskać więcej informacji na temat wdrażania, zobacz',\n  taskTemplateReference2: 'Odwołanie do szablonu zadania',\n  definesAutorunSchedule: 'Określa harmonogram automatycznego uruchamiania.',\n  forMoreInformationAboutCronSeeThe: 'Aby uzyskać więcej informacji na temat cron, zobacz',\n  cronExpressionFormatReference: 'Odwołanie do formatu wyrażenia cron',\n  startVersion: 'Wersja początkowa',\n  example000: 'Przykład: 0.0.0',\n  buildTemplate: 'Szablon budowy',\n  autorun: 'Automatyczne uruchamianie',\n  playbookFilename: 'Ścieżka do pliku playbook *',\n  exampleSiteyml: 'Przykład: deploy/site.yml',\n  inventory2: 'Inwentarz *',\n  repository: 'Repozytorium',\n  environment3: 'Grupa zmiennych *',\n  vaultPassword: 'Hasło skarbca',\n  vaultPassword2: 'Hasło skarbca',\n  view: 'Widok',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Chcę uruchomić zadanie przez cron tylko dla nowych commitów z niektórego repozytorium',\n  repository2: 'Repozytorium',\n  cronChecksNewCommitBeforeRun: 'Cron sprawdza nowy commit przed uruchomieniem',\n  readThe: 'Przeczytaj',\n  toLearnMoreAboutCron: 'aby dowiedzieć się więcej o Cron.',\n  suppressSuccessAlerts: 'Tłumienie alertów o sukcesie',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumenty CLI (tablica JSON). Przykład: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Argumenty CLI',\n  docs: 'dokumentacja',\n  editViews: 'Edytuj widoki',\n  newTemplate: 'Nowy szablon',\n  taskTemplates2: 'Szablony zadań',\n  all: 'Wszystko',\n  notLaunched: 'Nie uruchomiono',\n  by: 'przez {user_name}',\n  editTemplate: 'Edytuj szablon',\n  newTemplate2: 'Nowy szablon',\n  deleteTemplate: 'Usuń szablon',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Użytkownik administratora',\n  sendAlerts: 'Wyślij alerty',\n  deleteUser: 'Usuń użytkownika',\n  newUser: 'Nowy użytkownik',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} członek zespołu',\n  taskId: 'ID zadania',\n  version: 'Wersja',\n  status: 'Status',\n  start: 'Rozpocznij',\n  actions: 'Akcje',\n  alert: 'Alert',\n  admin: 'Administrator',\n  role: 'Rola',\n  external: 'Zewnętrzny',\n  time: 'Czas',\n  path: 'Ścieżka',\n  gitUrl: 'URL Git',\n  sshKey: 'Klucz SSH',\n  lastTask: 'Ostatnie zadanie',\n  task2: 'Zadanie',\n  build: 'Buduj',\n  deploy: 'Wdrażaj',\n  run: 'Uruchom',\n  add: 'Dodaj',\n  password_required: 'Hasło jest wymagane',\n  name_required: 'Nazwa jest wymagana',\n  user_credentials_required: 'Dane logowania użytkownika są wymagane',\n  type_required: 'Typ jest wymagany',\n  path_required: 'Ścieżka do pliku inwentarza jest wymagana',\n  private_key_required: 'Klucz prywatny jest wymagany',\n  project_name_required: 'Nazwa projektu jest wymagana',\n  repository_required: 'Repozytorium jest wymagane',\n  branch_required: 'Gałąź jest wymagana',\n  key_required: 'Klucz jest wymagany',\n  user_required: 'Użytkownik jest wymagany',\n  build_version_required: 'Wersja budowy jest wymagana',\n  title_required: 'Tytuł jest wymagany',\n  isRequired: 'jest wymagane',\n  mustBeInteger: 'Musi być liczbą całkowitą',\n  mustBe0OrGreater: 'Musi być 0 lub większa',\n  start_version_required: 'Wersja początkowa jest wymagana',\n  playbook_filename_required: 'Nazwa pliku playbook jest wymagana',\n  inventory_required: 'Inwentarz jest wymagany',\n  environment_required: 'Środowisko jest wymagane',\n  email_required: 'Email jest wymagany',\n  build_template_required: 'Szablon budowy jest wymagany',\n  Task: 'Zadanie',\n  Build: 'Buduj',\n  Deploy: 'Wdrażaj',\n  Run: 'Uruchom',\n  ReBuild: 'Przebuduj',\n  ReDeploy: 'Ponownie wdroż',\n  ReRun: 'Uruchom ponownie',\n  CreateDemoProject: 'Utwórz projekt demo',\n  LeaveProject: 'Opuszczam projekt',\n  integration: 'Integracja',\n  integrations: 'Integracje',\n  NewIntegration: 'Nowa integracja',\n  EditIntegration: 'Edytuj integrację',\n  DeleteIntegration: 'Usuń integrację',\n  DeleteIntegrationMsg: 'Czy na pewno chcesz usunąć tę integrację?',\n  AddAlias: 'Dodaj alias',\n  LoadAlias: 'Ładowanie aliasów...',\n  globalAlias: 'Użyj aliasu projektu',\n  matcher: 'Dopasowacz',\n  matchType: 'Typ dopasowania',\n  newMatcher: 'Nowy dopasowacz',\n  matchMethod: 'Metoda porównania',\n  matchBodyDataType: 'Typ danych ciała',\n  extractValue: 'Wyodrębnij wartość',\n  newExtractedValue: 'Nowa wyodrębniona wartość',\n  extractedValueSource: 'Źródło wartości',\n  matchKey: 'Klucz',\n  matchValue: 'Wartość',\n  matchOn: 'Dopasuj na',\n  runners: 'Uruchamiacze',\n  newRunner: 'Nowy uruchamiacz',\n  enabled: 'Włączony',\n  scheduleNextRun: 'Następne uruchomienie',\n  maxNumberOfParallelTasks: 'Maksymalna liczba równoległych zadań',\n  runnerUsage: 'Użycie:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Edytuj uruchamiacz',\n  deleteRunner: 'Usuń uruchamiacz',\n  newRunnerToken: 'Nowy uruchamiacz',\n  askDeleteRunner: 'Czy na pewno chcesz usunąć uruchamiacz {runner}?',\n  project_runners_only_pro: 'Uruchamiacze na poziomie projektu są dostępne tylko w wersji <b>PRO</b>.',\n  foss_runners_limited: 'Wersja open-source ma ograniczoną funkcjonalność; pełna funkcjonalność jest w wersji <b>PRO</b>.',\n  learn_more_about_pro: 'Dowiedz się więcej',\n\n  projectRestoreResult: 'Wyniki przywracania projektu',\n  projectWithNameRestored: 'Projekt {projectName} został pomyślnie przywrócony.',\n  pleaseUpdateAccessKeys: 'Proszę zaktualizować je przed uruchomieniem zadań.',\n  emptyKeysRestored: '{emptyKeys} puste klucze dodane.',\n  template: 'Szablon',\n  aliasUrlCopied: 'URL aliasu został skopiowany do schowka.',\n  yes: 'Tak',\n  activeTasks: 'Aktywne zadania',\n  taskLocation: 'Lokalizacja',\n  empty: 'Pusty',\n  noValues: 'Brak wartości',\n  addArg: 'Dodaj argument',\n\n  status_success: 'Sukces',\n  status_failed: 'Niepowodzenie',\n  status_stopped: 'Zatrzymano',\n\n  api_tokens: 'Tokeny API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Automatyczne zatwierdzenie',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag jest wymagany',\n  allowInventoryInTask: 'Inwentarz',\n  allowLimitInTask: 'Limit',\n  addLimit: 'Dodaj limit',\n  allowDebug: 'Debug',\n  addTag: 'Dodaj tag',\n  skipTags: 'Pomiń tagi',\n  addSkippedTag: 'Dodaj pominięty tag',\n  tags: 'Tagi',\n  limit: 'Limit',\n\n  runner_tag: 'Tag uruchamiacza',\n  task_prompts: 'Podpowiedzi',\n  template_advanced: 'Opcje zaawansowane',\n  template_app_options: '{app} opcje',\n  template_app_prompts: '{app} podpowiedzi',\n  general_settings: 'Ogólne',\n  danger_zone_settings: 'Strefa zagrożenia',\n  project_stats: 'Statystyki',\n  allow_override_branch: 'Gałąź',\n  template_common_options: 'Wspólne opcje',\n};\n"
  },
  {
    "path": "web/src/lang/pt.js",
    "content": "export default {\n  checkInterval: 'intervaloDeVerificação',\n  newCommitCheckInterval: 'Intervalo de verificação de novos commits',\n  schedule: 'Agenda',\n  newSchedule: 'Nova Agenda',\n  deleteSchedule: 'Excluir Agenda',\n  editSchedule: 'Editar Agenda',\n  backup: 'Backup do Projeto',\n  downloadTheProjectBackupFile: 'Baixar o arquivo de backup do projeto.',\n  restoreProject: 'Restaurar Projeto...',\n  incorrectUsrPwd: 'Login ou senha incorretos',\n  askDeleteUser: 'Você realmente deseja excluir este usuário?',\n  askDeleteTemp: 'Você realmente deseja excluir este modelo?',\n  askDeleteEnv: 'Você realmente deseja excluir este ambiente?',\n  askDeleteInv: 'Você realmente deseja excluir este inventário?',\n  askDeleteKey: 'Você realmente deseja excluir esta chave?',\n  askDeleteRepo: 'Você realmente deseja excluir este repositório?',\n  askDeleteProj: 'Você realmente deseja excluir este projeto?',\n  askDeleteTMem: 'Você realmente deseja excluir este membro da equipe?',\n  askDeleteSchedule: 'Você realmente deseja excluir esta agenda?',\n  edit: 'Editar',\n  nnew: 'Novo',\n  keyFormSshKey: 'Chave SSH',\n  keyFormLoginPassword: 'Login com senha',\n  keyFormNone: 'Nenhum',\n  incorrectUrl: 'URL incorreta',\n  username: 'Nome de usuário',\n  username_required: 'Nome de usuário é obrigatório',\n  dashboard: 'Painel',\n  history: 'Histórico',\n  activity: 'Atividade',\n  settings: 'Configurações',\n  signIn: 'Entrar',\n  password: 'Senha',\n  changePassword: 'Alterar senha',\n  editUser: 'Editar Usuário',\n  newProject: 'Novo Projeto',\n  close: 'Fechar',\n  newProject2: 'Novo Projeto...',\n  demoMode: 'MODO DEMONSTRAÇÃO',\n  task: 'Tarefa #{expr}',\n  youCanRunAnyTasks: 'Você pode executar quaisquer tarefas',\n  youHaveReadonlyAccess: 'Você tem acesso somente leitura',\n  taskTemplates: 'Modelos de Tarefa',\n  inventory: 'Inventário',\n  environment: 'Grupos de Variáveis',\n  keyStore: 'Armazenamento de Chaves',\n  repositories: 'Repositórios',\n  darkMode: 'Modo Escuro',\n  team: 'Equipe',\n  users: 'Usuários',\n  editAccount: 'Editar Conta',\n  signOut: 'Sair',\n  error: 'Erro',\n  refreshPage: 'Atualizar Página',\n  relogin: 'Reentrar',\n  howToFixSigninIssues: 'Como corrigir problemas de login',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiro, você precisa de acesso ao servidor onde o Semaphore está em execução.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute o seguinte comando no servidor para ver os usuários existentes:',\n  semaphoreUserList: 'lista de usuários semaphore',\n  youCanChangePasswordOfExistingUser: 'Você pode alterar a senha do usuário existente:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Ou crie um novo usuário administrador:',\n  close2: 'Fechar',\n  semaphore: 'SEMAFORO',\n  dontHaveAccountOrCantSignIn: 'Não tem conta ou não consegue entrar?',\n  password2: 'Senha',\n  cancel: 'Cancelar',\n  noViews: 'Sem visualizações',\n  addView: 'Adicionar visualização',\n  editEnvironment: 'Editar Grupo de Variáveis',\n  deleteEnvironment: 'Excluir grupo de variáveis',\n  newEnvironment: 'Novo Grupo',\n  environmentName: 'Nome do Grupo',\n  extraVariables: 'Variáveis Extras',\n  enterExtraVariablesJson: 'Insira variáveis extras em JSON...',\n  environmentVariables: 'Variáveis de Ambiente',\n  enterEnvJson: 'Insira JSON do ambiente...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'As variáveis de ambiente e extras devem ser JSON válidos. Exemplo:',\n  dashboard2: 'Painel',\n  ansibleSemaphore: 'Interface do Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lamentamos, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript habilitado. Por favor, habilite-o para continuar.',\n  deleteInventory: 'Excluir inventário',\n  newInventory: 'Novo Inventário',\n  name: 'Nome',\n  userCredentials: 'Credenciais do Usuário',\n  sudoCredentialsOptional: 'Credenciais Sudo (Opcional)',\n  type: 'Tipo',\n  pathToInventoryFile: 'Caminho para o arquivo de Inventário',\n  enterInventory: 'Insira inventário...',\n  staticInventoryExample: 'Exemplo de inventário estático:',\n  staticYamlInventoryExample: 'Exemplo de inventário YAML estático:',\n  keyName: 'Nome da Chave',\n  loginOptional: 'Login (Opcional)',\n  usernameOptional: 'Nome de usuário (Opcional)',\n  privateKey: 'Chave Privada',\n  override: 'Substituir',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de chave para repositórios HTTPS e para playbooks que usam conexões não-SSH.',\n  deleteKey: 'Excluir chave',\n  newKey: 'Nova Chave',\n  create: 'Criar',\n  newTask: 'Nova Tarefa',\n  cantDeleteThe: 'Não é possível excluir o {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser excluído porque está sendo usado pelos recursos abaixo',\n  projectName: 'Nome do Projeto',\n  allowAlertsForThisProject: 'Permitir alertas para este projeto',\n  telegramChatIdOptional: 'ID do Chat do Telegram (Opcional)',\n  maxNumberOfParallelTasksOptional: 'Número máximo de tarefas paralelas (Opcional)',\n  deleteRepository: 'Excluir repositório',\n  newRepository: 'Novo Repositório',\n  urlOrPath: 'URL ou caminho',\n  absPath: 'caminho absoluto',\n  branch: 'Ramo',\n  accessKey: 'Chave de Acesso',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciais para acessar o repositório Git. Deve ser:',\n  ifYouUseGitOrSshUrl: 'se você usar URL Git ou SSH.',\n  ifYouUseHttpsOrFileUrl: 'se você usar URL HTTPS ou de arquivo.',\n  none: 'Nenhum',\n  ssh: 'SSH',\n  deleteProject: 'Excluir projeto',\n  save: 'Salvar',\n  deleteProject2: 'Excluir Projeto',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Uma vez que você exclui um projeto, não há como voltar. Por favor, tenha certeza.',\n\n  clear_cache: 'Limpar cache',\n  clear_cache_message: 'Excluir todos os arquivos de cache relacionados a este projeto. Esta ação é irreversível.',\n\n  name2: 'Nome *',\n  title: 'Título *',\n  description: 'Descrição',\n  required: 'Obrigatório',\n  key: '{expr}',\n  surveyVariables: 'Variáveis de Pesquisa',\n  addVariable: 'Adicionar variável',\n  vaultName: 'ID do Cofre (opcional)',\n  vaultNameDefault: 'Apenas um nome `default` (vazio) pode existir',\n  vaultNameUnique: 'Deve ser único',\n  vaultTypePassword: 'Senha',\n  vaultTypeScript: 'Script do Cliente',\n  vaultScript: 'Caminho do Script',\n  vaultScriptRequired: 'Caminho do Script é obrigatório',\n  vaultScriptClientRequired: 'O caminho do script deve terminar com \\'-client\\' e extensão',\n  vaults: 'Cofres',\n  vaultAdd: 'Adicionar Cofre',\n  vaultRequired: 'Senha do Cofre é obrigatória',\n  columns: 'Colunas',\n  buildVersion: 'Versão de Construção',\n  messageOptional: 'Mensagem (Opcional)',\n  debug: 'Depurar',\n  dryRun: 'Execução Simulada',\n  diff: 'Diferença',\n  advanced: 'Avançado',\n  hide: 'Ocultar',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir a substituição de argumento CLI nas configurações do Modelo de Tarefa',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Exemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Iniciado',\n  author: 'Autor',\n  duration: 'Duração',\n  stop: 'Parar',\n  forceStop: 'Parar Forçadamente',\n  stopAll: 'Parar tudo',\n  stopAllTasks: 'Parar todas as tarefas',\n  askStopAllTasks: 'Tem certeza de que deseja parar todas as tarefas?',\n  forceStopAllTasks: 'Parar forçadamente todas as tarefas',\n  askForceStopAllTasks: 'Tem certeza de que deseja parar forçadamente todas as tarefas?',\n  raw_log: 'Log Bruto',\n\n  confirmTask: 'Confirmar',\n  deleteTeamMember: 'Excluir membro da equipe',\n  team2: 'Equipe',\n  newTeamMember: 'Novo Membro da Equipe',\n  user: 'Usuário',\n  administrator: 'Administrador',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão inicial do seu artefato. Cada execução incrementa a versão do artefato.',\n  forMoreInformationAboutBuildingSeeThe: 'Para mais informações sobre construção, veja o',\n  taskTemplateReference: 'Referência do Modelo de Tarefa',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefato deve ser implantado quando a tarefa for executada.',\n  forMoreInformationAboutDeployingSeeThe: 'Para mais informações sobre implantação, veja o',\n  taskTemplateReference2: 'Referência do Modelo de Tarefa',\n  definesAutorunSchedule: 'Define a programação de execução automática.',\n  forMoreInformationAboutCronSeeThe: 'Para mais informações sobre cron, veja o',\n  cronExpressionFormatReference: 'Referência do formato de expressão cron',\n  startVersion: 'Versão Inicial',\n  example000: 'Exemplo: 0.0.0',\n  buildTemplate: 'Modelo de Construção',\n  autorun: 'Execução Automática',\n  playbookFilename: 'Caminho para o arquivo do playbook *',\n  exampleSiteyml: 'Exemplo: deploy/site.yml',\n  inventory2: 'Inventário *',\n  repository: 'Repositório',\n  environment3: 'Grupo de Variáveis *',\n  vaultPassword: 'Senha do Cofre',\n  vaultPassword2: 'Senha do Cofre',\n  view: 'Visualizar',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quero executar uma tarefa pelo cron apenas para novos commits de algum repositório',\n  repository2: 'Repositório',\n  cronChecksNewCommitBeforeRun: 'O cron verifica novos commits antes de executar',\n  readThe: 'Leia o',\n  toLearnMoreAboutCron: 'para saber mais sobre Cron.',\n  suppressSuccessAlerts: 'Suprimir alertas de sucesso',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Exemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Argumentos CLI',\n  docs: 'documentos',\n  editViews: 'Editar Visualizações',\n  newTemplate: 'Novo modelo',\n  taskTemplates2: 'Modelos de Tarefa',\n  all: 'Todos',\n  notLaunched: 'Não lançado',\n  by: 'por {user_name}',\n  editTemplate: 'Editar Modelo',\n  newTemplate2: 'Novo Modelo',\n  deleteTemplate: 'Excluir modelo',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Usuário administrador',\n  sendAlerts: 'Enviar alertas',\n  deleteUser: 'Excluir usuário',\n  newUser: 'Novo Usuário',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Membro da Equipe',\n  taskId: 'ID da Tarefa',\n  version: 'Versão',\n  status: 'Status',\n  start: 'Iniciar',\n  actions: 'Ações',\n  alert: 'Alerta',\n  admin: 'Admin',\n  role: 'Função',\n  external: 'Externo',\n  time: 'Tempo',\n  path: 'Caminho',\n  gitUrl: 'URL do Git',\n  sshKey: 'Chave SSH',\n  lastTask: 'Última Tarefa',\n  task2: 'Tarefa',\n  build: 'Construir',\n  deploy: 'Implantar',\n  run: 'Executar',\n  add: 'Adicionar',\n  password_required: 'Senha é obrigatória',\n  name_required: 'Nome é obrigatório',\n  user_credentials_required: 'Credenciais do usuário são obrigatórias',\n  type_required: 'Tipo é obrigatório',\n  path_required: 'Caminho para o arquivo de Inventário é obrigatório',\n  private_key_required: 'Chave privada é obrigatória',\n  project_name_required: 'Nome do projeto é obrigatório',\n  repository_required: 'Repositório é obrigatório',\n  branch_required: 'Ramo é obrigatório',\n  key_required: 'Chave é obrigatória',\n  user_required: 'Usuário é obrigatório',\n  build_version_required: 'Versão de construção é obrigatória',\n  title_required: 'Título é obrigatório',\n  isRequired: 'é obrigatório',\n  mustBeInteger: 'Deve ser um número inteiro',\n  mustBe0OrGreater: 'Deve ser 0 ou maior',\n  start_version_required: 'Versão inicial é obrigatória',\n  playbook_filename_required: 'Nome do arquivo do playbook é obrigatório',\n  inventory_required: 'Inventário é obrigatório',\n  environment_required: 'Ambiente é obrigatório',\n  email_required: 'Email é obrigatório',\n  build_template_required: 'Modelo de construção é obrigatório',\n  Task: 'Tarefa',\n  Build: 'Construir',\n  Deploy: 'Implantar',\n  Run: 'Executar',\n  ReBuild: 'Reconstruir',\n  ReDeploy: 'Reimplantar',\n  ReRun: 'Reexecutar',\n  CreateDemoProject: 'Criar Projeto de Demonstração',\n  LeaveProject: 'Sair do Projeto',\n  integration: 'Integração',\n  integrations: 'Integrações',\n  NewIntegration: 'Nova Integração',\n  EditIntegration: 'Editar Integração',\n  DeleteIntegration: 'Excluir Integração',\n  DeleteIntegrationMsg: 'Você tem certeza de que deseja excluir esta Integração?',\n  AddAlias: 'Adicionar Alias',\n  LoadAlias: 'Carregando aliases...',\n  globalAlias: 'Usar alias do projeto',\n  matcher: 'Correspondente',\n  matchType: 'Tipo de Correspondência',\n  newMatcher: 'Novo Correspondente',\n  matchMethod: 'Método de Comparação',\n  matchBodyDataType: 'Tipo de Dados do Corpo',\n  extractValue: 'Extrair Valor',\n  newExtractedValue: 'Novo Valor Extraído',\n  extractedValueSource: 'Fonte do Valor',\n  matchKey: 'Chave',\n  matchValue: 'Valor',\n  matchOn: 'Correspondência em',\n  runners: 'Executores',\n  newRunner: 'Novo Executor',\n  enabled: 'Habilitado',\n  scheduleNextRun: 'Próxima execução',\n  maxNumberOfParallelTasks: 'Número máximo de tarefas paralelas',\n  runnerUsage: 'Uso:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Editar Executor',\n  deleteRunner: 'Excluir Executor',\n  newRunnerToken: 'Novo Executor',\n  askDeleteRunner: 'Você realmente deseja excluir o executor {runner}?',\n  project_runners_only_pro: 'Executores em nível de projeto estão disponíveis apenas na versão <b>PRO</b>.',\n  foss_runners_limited: 'A versão de código aberto tem funcionalidade limitada; a funcionalidade completa está na versão <b>PRO</b>.',\n  learn_more_about_pro: 'Saiba mais',\n\n  projectRestoreResult: 'Resultados da restauração do projeto',\n  projectWithNameRestored: 'Projeto {projectName} restaurado com sucesso.',\n  pleaseUpdateAccessKeys: 'Por favor, atualize-os antes de executar tarefas.',\n  emptyKeysRestored: '{emptyKeys} chaves vazias adicionadas.',\n  template: 'Modelo',\n  aliasUrlCopied: 'A URL do alias foi copiada para a área de transferência.',\n  yes: 'Sim',\n  activeTasks: 'Tarefas Ativas',\n  taskLocation: 'Localização',\n  empty: 'Vazio',\n  noValues: 'Sem valores',\n  addArg: 'Adicionar argumento',\n\n  status_success: 'Sucesso',\n  status_failed: 'Falhou',\n  status_stopped: 'Parado',\n\n  api_tokens: 'Tokens de API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Aprovação automática',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag é obrigatória',\n  allowInventoryInTask: 'Inventário',\n  allowLimitInTask: 'Limite',\n  addLimit: 'Adicionar limite',\n  allowDebug: 'Depurar',\n  addTag: 'Adicionar tag',\n  skipTags: 'Pular tags',\n  addSkippedTag: 'Adicionar tag pulada',\n  tags: 'Tags',\n  limit: 'Limite',\n\n  runner_tag: 'Tag do Executor',\n  task_prompts: 'Solicitações',\n  template_advanced: 'Opções avançadas',\n  template_app_options: 'Opções de {app}',\n  template_app_prompts: 'Solicitações de {app}',\n  general_settings: 'Geral',\n  danger_zone_settings: 'Zona de Perigo',\n  project_stats: 'Estatísticas',\n  allow_override_branch: 'Ramo',\n  template_common_options: 'Opções comuns',\n};\n"
  },
  {
    "path": "web/src/lang/pt_br.js",
    "content": "export default {\n  checkInterval: 'intervaloDeVerificação',\n  newCommitCheckInterval: 'Novo intervalo de verificação de commit',\n  schedule: 'Agenda',\n  newSchedule: 'Nova Agenda',\n  deleteSchedule: 'Excluir Agenda',\n  editSchedule: 'Editar Agenda',\n  backup: 'Backup do Projeto',\n  downloadTheProjectBackupFile: 'Baixar o arquivo de backup do projeto.',\n  restoreProject: 'Restaurar Projeto...',\n  incorrectUsrPwd: 'Login ou senha incorretos',\n  askDeleteUser: 'Você realmente deseja excluir este usuário?',\n  askDeleteTemp: 'Você realmente deseja excluir este modelo?',\n  askDeleteEnv: 'Você realmente deseja excluir este ambiente?',\n  askDeleteInv: 'Você realmente deseja excluir este inventário?',\n  askDeleteKey: 'Você realmente deseja excluir esta chave?',\n  askDeleteRepo: 'Você realmente deseja excluir este repositório?',\n  askDeleteProj: 'Você realmente deseja excluir este projeto?',\n  askDeleteTMem: 'Você realmente deseja excluir este membro da equipe?',\n  askDeleteSchedule: 'Você realmente deseja excluir esta agenda?',\n  edit: 'Editar',\n  nnew: 'Novo',\n  keyFormSshKey: 'Chave SSH',\n  keyFormLoginPassword: 'Login com senha',\n  keyFormNone: 'Nenhum',\n  incorrectUrl: 'URL incorreta',\n  username: 'Nome de usuário',\n  username_required: 'Nome de usuário é obrigatório',\n  dashboard: 'Painel',\n  history: 'Histórico',\n  activity: 'Atividade',\n  settings: 'Configurações',\n  signIn: 'Entrar',\n  password: 'Senha',\n  changePassword: 'Alterar senha',\n  editUser: 'Editar Usuário',\n  newProject: 'Novo Projeto',\n  close: 'Fechar',\n  newProject2: 'Novo Projeto...',\n  demoMode: 'MODO DEMO',\n  task: 'Tarefa #{expr}',\n  youCanRunAnyTasks: 'Você pode executar qualquer tarefa',\n  youHaveReadonlyAccess: 'Você tem acesso somente leitura',\n  taskTemplates: 'Modelos de Tarefa',\n  inventory: 'Inventário',\n  environment: 'Grupos de Variáveis',\n  keyStore: 'Armazenamento de Chaves',\n  repositories: 'Repositórios',\n  darkMode: 'Modo Escuro',\n  team: 'Equipe',\n  users: 'Usuários',\n  editAccount: 'Editar Conta',\n  signOut: 'Sair',\n  error: 'Erro',\n  refreshPage: 'Atualizar Página',\n  relogin: 'Reentrar',\n  howToFixSigninIssues: 'Como corrigir problemas de login',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Primeiro, você precisa de acesso ao servidor onde o Semaphore está em execução.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Execute o seguinte comando no servidor para ver os usuários existentes:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Você pode alterar a senha do usuário existente:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Ou crie um novo usuário administrador:',\n  close2: 'Fechar',\n  semaphore: 'SEMAFORO',\n  dontHaveAccountOrCantSignIn: 'Não tem conta ou não consegue entrar?',\n  password2: 'Senha',\n  cancel: 'Cancelar',\n  noViews: 'Sem visualizações',\n  addView: 'Adicionar visualização',\n  editEnvironment: 'Editar Grupo de Variáveis',\n  deleteEnvironment: 'Excluir grupo de variáveis',\n  newEnvironment: 'Novo Grupo',\n  environmentName: 'Nome do Grupo',\n  extraVariables: 'Variáveis extras',\n  enterExtraVariablesJson: 'Insira variáveis extras em JSON...',\n  environmentVariables: 'Variáveis de ambiente',\n  enterEnvJson: 'Insira JSON do ambiente...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'As variáveis de ambiente e extras devem ser JSON válidos. Exemplo:',\n  dashboard2: 'Painel',\n  ansibleSemaphore: 'Interface do Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Lamentamos, mas <%= htmlWebpackPlugin.options.title %> não funciona corretamente sem JavaScript habilitado. Por favor, habilite-o para continuar.',\n  deleteInventory: 'Excluir inventário',\n  newInventory: 'Novo Inventário',\n  name: 'Nome',\n  userCredentials: 'Credenciais do Usuário',\n  sudoCredentialsOptional: 'Credenciais Sudo (Opcional)',\n  type: 'Tipo',\n  pathToInventoryFile: 'Caminho para o arquivo de Inventário',\n  enterInventory: 'Insira inventário...',\n  staticInventoryExample: 'Exemplo de inventário estático:',\n  staticYamlInventoryExample: 'Exemplo de inventário YAML estático:',\n  keyName: 'Nome da Chave',\n  loginOptional: 'Login (Opcional)',\n  usernameOptional: 'Nome de usuário (Opcional)',\n  privateKey: 'Chave Privada',\n  override: 'Substituir',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Use este tipo de chave para repositórios HTTPS e para playbooks que usam conexões não-SSH.',\n  deleteKey: 'Excluir chave',\n  newKey: 'Nova Chave',\n  create: 'Criar',\n  newTask: 'Nova Tarefa',\n  cantDeleteThe: 'Não é possível excluir o {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: 'O {objectTitle} não pode ser excluído porque está sendo usado pelos recursos abaixo',\n  projectName: 'Nome do Projeto',\n  allowAlertsForThisProject: 'Permitir alertas para este projeto',\n  telegramChatIdOptional: 'ID do Chat do Telegram (Opcional)',\n  maxNumberOfParallelTasksOptional: 'Número máximo de tarefas paralelas (Opcional)',\n  deleteRepository: 'Excluir repositório',\n  newRepository: 'Novo Repositório',\n  urlOrPath: 'URL ou caminho',\n  absPath: 'caminho absoluto',\n  branch: 'Ramo',\n  accessKey: 'Chave de Acesso',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Credenciais para acessar o repositório Git. Deve ser:',\n  ifYouUseGitOrSshUrl: 'se você usar URL Git ou SSH.',\n  ifYouUseHttpsOrFileUrl: 'se você usar URL HTTPS ou de arquivo.',\n  none: 'Nenhum',\n  ssh: 'SSH',\n  deleteProject: 'Excluir projeto',\n  save: 'Salvar',\n  deleteProject2: 'Excluir Projeto',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Uma vez que você exclui um projeto, não há como voltar. Por favor, tenha certeza.',\n\n  clear_cache: 'Limpar cache',\n  clear_cache_message: 'Excluir todos os arquivos de cache relacionados a este projeto. Esta ação é irreversível.',\n\n  name2: 'Nome *',\n  title: 'Título *',\n  description: 'Descrição',\n  required: 'Obrigatório',\n  key: '{expr}',\n  surveyVariables: 'Variáveis de Pesquisa',\n  addVariable: 'Adicionar variável',\n  vaultName: 'ID do Cofre (opcional)',\n  vaultNameDefault: 'Apenas um nome `default` (vazio) pode existir',\n  vaultNameUnique: 'Deve ser único',\n  vaultTypePassword: 'Senha',\n  vaultTypeScript: 'Script do Cliente',\n  vaultScript: 'Caminho do Script',\n  vaultScriptRequired: 'Caminho do Script é obrigatório',\n  vaultScriptClientRequired: 'O caminho do script deve terminar com \\'-client\\' e extensão',\n  vaults: 'Cofres',\n  vaultAdd: 'Adicionar Cofre',\n  vaultRequired: 'Senha do Cofre é obrigatória',\n  columns: 'Colunas',\n  buildVersion: 'Versão de Construção',\n  messageOptional: 'Mensagem (Opcional)',\n  debug: 'Depurar',\n  dryRun: 'Execução Simulada',\n  diff: 'Diferença',\n  advanced: 'Avançado',\n  hide: 'Ocultar',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Para permitir a substituição de argumento CLI nas configurações do Modelo de Tarefa',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'Argumentos CLI (array JSON). Exemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Iniciado',\n  author: 'Autor',\n  duration: 'Duração',\n  stop: 'Parar',\n  forceStop: 'Parar Forçadamente',\n  stopAll: 'Parar tudo',\n  stopAllTasks: 'Parar todas as tarefas',\n  askStopAllTasks: 'Tem certeza de que deseja parar todas as tarefas?',\n  forceStopAllTasks: 'Parar forçadamente todas as tarefas',\n  askForceStopAllTasks: 'Tem certeza de que deseja parar forçadamente todas as tarefas?',\n  raw_log: 'Log Bruto',\n\n  confirmTask: 'Confirmar',\n  deleteTeamMember: 'Excluir membro da equipe',\n  team2: 'Equipe',\n  newTeamMember: 'Novo Membro da Equipe',\n  user: 'Usuário',\n  administrator: 'Administrador',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Define a versão inicial do seu artefato. Cada execução incrementa a versão do artefato.',\n  forMoreInformationAboutBuildingSeeThe: 'Para mais informações sobre construção, veja o',\n  taskTemplateReference: 'Referência do Modelo de Tarefa',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Define qual artefato deve ser implantado quando a tarefa for executada.',\n  forMoreInformationAboutDeployingSeeThe: 'Para mais informações sobre implantação, veja o',\n  taskTemplateReference2: 'Referência do Modelo de Tarefa',\n  definesAutorunSchedule: 'Define a programação de execução automática.',\n  forMoreInformationAboutCronSeeThe: 'Para mais informações sobre cron, veja o',\n  cronExpressionFormatReference: 'Referência do formato da expressão cron',\n  startVersion: 'Versão Inicial',\n  example000: 'Exemplo: 0.0.0',\n  buildTemplate: 'Modelo de Construção',\n  autorun: 'Execução Automática',\n  playbookFilename: 'Caminho para o arquivo playbook *',\n  exampleSiteyml: 'Exemplo: deploy/site.yml',\n  inventory2: 'Inventário *',\n  repository: 'Repositório',\n  environment3: 'Grupo de Variáveis *',\n  vaultPassword: 'Senha do Cofre',\n  vaultPassword2: 'Senha do Cofre',\n  view: 'Visualizar',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Quero executar uma tarefa pelo cron apenas para novos commits de algum repositório',\n  repository2: 'Repositório',\n  cronChecksNewCommitBeforeRun: 'O cron verifica novos commits antes de executar',\n  readThe: 'Leia o',\n  toLearnMoreAboutCron: 'para saber mais sobre Cron.',\n  suppressSuccessAlerts: 'Suprimir alertas de sucesso',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'Argumentos CLI (array JSON). Exemplo: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'Argumentos CLI',\n  docs: 'documentos',\n  editViews: 'Editar Visualizações',\n  newTemplate: 'Novo modelo',\n  taskTemplates2: 'Modelos de Tarefa',\n  all: 'Todos',\n  notLaunched: 'Não lançado',\n  by: 'por {user_name}',\n  editTemplate: 'Editar Modelo',\n  newTemplate2: 'Novo Modelo',\n  deleteTemplate: 'Excluir modelo',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Usuário administrador',\n  sendAlerts: 'Enviar alertas',\n  deleteUser: 'Excluir usuário',\n  newUser: 'Novo Usuário',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Membro da Equipe',\n  taskId: 'ID da Tarefa',\n  version: 'Versão',\n  status: 'Status',\n  start: 'Iniciar',\n  actions: 'Ações',\n  alert: 'Alerta',\n  admin: 'Admin',\n  role: 'Função',\n  external: 'Externo',\n  time: 'Tempo',\n  path: 'Caminho',\n  gitUrl: 'URL do Git',\n  sshKey: 'Chave SSH',\n  lastTask: 'Última Tarefa',\n  task2: 'Tarefa',\n  build: 'Construir',\n  deploy: 'Implantar',\n  run: 'Executar',\n  add: 'Adicionar',\n  password_required: 'Senha é obrigatória',\n  name_required: 'Nome é obrigatório',\n  user_credentials_required: 'Credenciais do usuário são obrigatórias',\n  type_required: 'Tipo é obrigatório',\n  path_required: 'Caminho para o arquivo de Inventário é obrigatório',\n  private_key_required: 'Chave privada é obrigatória',\n  project_name_required: 'Nome do projeto é obrigatório',\n  repository_required: 'Repositório é obrigatório',\n  branch_required: 'Ramo é obrigatório',\n  key_required: 'Chave é obrigatória',\n  user_required: 'Usuário é obrigatório',\n  build_version_required: 'Versão de construção é obrigatória',\n  title_required: 'Título é obrigatório',\n  isRequired: 'é obrigatório',\n  mustBeInteger: 'Deve ser um número inteiro',\n  mustBe0OrGreater: 'Deve ser 0 ou maior',\n  start_version_required: 'Versão inicial é obrigatória',\n  playbook_filename_required: 'Nome do arquivo playbook é obrigatório',\n  inventory_required: 'Inventário é obrigatório',\n  environment_required: 'Ambiente é obrigatório',\n  email_required: 'Email é obrigatório',\n  build_template_required: 'Modelo de construção é obrigatório',\n  Task: 'Tarefa',\n  Build: 'Construir',\n  Deploy: 'Implantar',\n  Run: 'Executar',\n  ReBuild: 'Reconstruir',\n  ReDeploy: 'Reimplantar',\n  ReRun: 'Reexecutar',\n  CreateDemoProject: 'Criar Projeto Demo',\n  LeaveProject: 'Sair do Projeto',\n  integration: 'Integração',\n  integrations: 'Integrações',\n  NewIntegration: 'Nova Integração',\n  EditIntegration: 'Editar Integração',\n  DeleteIntegration: 'Excluir Integração',\n  DeleteIntegrationMsg: 'Você tem certeza de que deseja excluir esta Integração?',\n  AddAlias: 'Adicionar Alias',\n  LoadAlias: 'Carregando aliases...',\n  globalAlias: 'Usar alias do projeto',\n  matcher: 'Correspondente',\n  matchType: 'Tipo de Correspondência',\n  newMatcher: 'Novo Correspondente',\n  matchMethod: 'Método de Comparação',\n  matchBodyDataType: 'Tipo de Dados do Corpo',\n  extractValue: 'Extrair Valor',\n  newExtractedValue: 'Novo Valor Extraído',\n  extractedValueSource: 'Fonte do Valor',\n  matchKey: 'Chave',\n  matchValue: 'Valor',\n  matchOn: 'Correspondência em',\n  runners: 'Executores',\n  newRunner: 'Novo Executor',\n  enabled: 'Habilitado',\n  scheduleNextRun: 'Próxima execução',\n  maxNumberOfParallelTasks: 'Número máximo de tarefas paralelas',\n  runnerUsage: 'Uso:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Token:',\n  editRunner: 'Editar Executor',\n  deleteRunner: 'Excluir Executor',\n  newRunnerToken: 'Novo Executor',\n  askDeleteRunner: 'Você realmente deseja excluir o executor {runner}?',\n  project_runners_only_pro: 'Executores em nível de projeto estão disponíveis apenas na versão <b>PRO</b>.',\n  foss_runners_limited: 'A versão de código aberto tem funcionalidade limitada; a funcionalidade completa está na versão <b>PRO</b>.',\n  learn_more_about_pro: 'Saiba mais',\n\n  projectRestoreResult: 'Resultados da restauração do projeto',\n  projectWithNameRestored: 'Projeto {projectName} restaurado com sucesso.',\n  pleaseUpdateAccessKeys: 'Por favor, atualize-as antes de executar tarefas.',\n  emptyKeysRestored: '{emptyKeys} chaves vazias adicionadas.',\n  template: 'Modelo',\n  aliasUrlCopied: 'A URL do alias foi copiada para a área de transferência.',\n  yes: 'Sim',\n  activeTasks: 'Tarefas Ativas',\n  taskLocation: 'Localização',\n  empty: 'Vazio',\n  noValues: 'Sem valores',\n  addArg: 'Adicionar argumento',\n\n  status_success: 'Sucesso',\n  status_failed: 'Falhou',\n  status_stopped: 'Parado',\n\n  api_tokens: 'Tokens de API',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Aprovação automática',\n\n  // Ansible\n  tag: 'Tag',\n  tag_required: 'Tag é obrigatória',\n  allowInventoryInTask: 'Inventário',\n  allowLimitInTask: 'Limite',\n  addLimit: 'Adicionar limite',\n  allowDebug: 'Depurar',\n  addTag: 'Adicionar tag',\n  skipTags: 'Pular tags',\n  addSkippedTag: 'Adicionar tag pulada',\n  tags: 'Tags',\n  limit: 'Limite',\n\n  runner_tag: 'Tag do Executor',\n  task_prompts: 'Solicitações',\n  template_advanced: 'Opções avançadas',\n  template_app_options: 'Opções de {app}',\n  template_app_prompts: 'Solicitações de {app}',\n  general_settings: 'Geral',\n  danger_zone_settings: 'Zona de Perigo',\n  project_stats: 'Estatísticas',\n  allow_override_branch: 'Ramo',\n  template_common_options: 'Opções comuns',\n};\n"
  },
  {
    "path": "web/src/lang/ru.js",
    "content": "export default {\n  checkInterval: 'интервалПроверки',\n  newCommitCheckInterval: 'Интервал проверки новых коммитов',\n  schedule: 'Расписание',\n  newSchedule: 'Новое расписание',\n  deleteSchedule: 'Удалить расписание',\n  editSchedule: 'Редактировать расписание',\n  backup: 'Резервное копирование проекта',\n  downloadTheProjectBackupFile: 'Скачать файл резервной копии проекта.',\n  restoreProject: 'Восстановить проект...',\n  incorrectUsrPwd: 'Неверный логин или пароль',\n  askDeleteUser: 'Вы действительно хотите удалить этого пользователя?',\n  askDeleteTemp: 'Вы действительно хотите удалить этот шаблон?',\n  askDeleteEnv: 'Вы действительно хотите удалить эту среду?',\n  askDeleteInv: 'Вы действительно хотите удалить этот инвентарь?',\n  askDeleteKey: 'Вы действительно хотите удалить этот ключ?',\n  askDeleteRepo: 'Вы действительно хотите удалить этот репозиторий?',\n  askDeleteProj: 'Вы действительно хотите удалить этот проект?',\n  askDeleteTMem: 'Вы действительно хотите удалить этого участника команды?',\n  askDeleteSchedule: 'Вы действительно хотите удалить это расписание?',\n  edit: 'Редактировать',\n  nnew: 'Новый',\n  keyFormSshKey: 'SSH ключ',\n  keyFormLoginPassword: 'Логин с паролем',\n  keyFormNone: 'Нет',\n  incorrectUrl: 'Неверный URL',\n  username: 'Имя пользователя',\n  username_required: 'Имя пользователя обязательно',\n  dashboard: 'Панель управления',\n  history: 'История',\n  activity: 'Активность',\n  settings: 'Настройки',\n  signIn: 'Войти',\n  password: 'Пароль',\n  changePassword: 'Сменить пароль',\n  editUser: 'Редактировать пользователя',\n  newProject: 'Новый проект',\n  close: 'Закрыть',\n  newProject2: 'Новый проект...',\n  demoMode: 'РЕЖИМ ДЕМО',\n  task: 'Задача #{expr}',\n  youCanRunAnyTasks: 'Вы можете запускать любые задачи',\n  youHaveReadonlyAccess: 'У вас доступ только для чтения',\n  taskTemplates: 'Шаблоны задач',\n  inventory: 'Инвентарь',\n  environment: 'Группы переменных',\n  keyStore: 'Хранилище ключей',\n  repositories: 'Репозитории',\n  darkMode: 'Темный режим',\n  team: 'Команда',\n  users: 'Пользователи',\n  editAccount: 'Редактировать аккаунт',\n  signOut: 'Выйти',\n  error: 'Ошибка',\n  refreshPage: 'Обновить страницу',\n  relogin: 'Повторный вход',\n  howToFixSigninIssues: 'Как исправить проблемы с входом',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Во-первых, вам нужен доступ к серверу, на котором работает Semaphore.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Выполните следующую команду на сервере, чтобы увидеть существующих пользователей:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Вы можете изменить пароль существующего пользователя:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Или создайте нового администратора:',\n  close2: 'Закрыть',\n  semaphore: 'СИГНАЛ',\n  dontHaveAccountOrCantSignIn: 'Нет аккаунта или не можете войти?',\n  password2: 'Пароль',\n  cancel: 'Отмена',\n  noViews: 'Нет представлений',\n  addView: 'Добавить представление',\n  editEnvironment: 'Редактировать группу переменных',\n  deleteEnvironment: 'Удалить группу переменных',\n  newEnvironment: 'Новая группа',\n  environmentName: 'Имя группы',\n  extraVariables: 'Дополнительные переменные',\n  enterExtraVariablesJson: 'Введите дополнительные переменные в формате JSON...',\n  environmentVariables: 'Переменные среды',\n  enterEnvJson: 'Введите env JSON...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Переменные среды и дополнительные переменные должны быть действительным JSON. Пример:',\n  dashboard2: 'Панель управления',\n  ansibleSemaphore: 'Интерфейс Semaphore',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Извините, но <%= htmlWebpackPlugin.options.title %> не работает должным образом без включенного JavaScript. Пожалуйста, включите его, чтобы продолжить.',\n  deleteInventory: 'Удалить инвентарь',\n  newInventory: 'Новый инвентарь',\n  name: 'Имя',\n  userCredentials: 'Учетные данные пользователя',\n  sudoCredentialsOptional: 'Учетные данные sudo (необязательно)',\n  type: 'Тип',\n  pathToInventoryFile: 'Путь к файлу инвентаря',\n  enterInventory: 'Введите инвентарь...',\n  staticInventoryExample: 'Пример статического инвентаря:',\n  staticYamlInventoryExample: 'Пример статического YAML инвентаря:',\n  keyName: 'Имя ключа',\n  loginOptional: 'Логин (необязательно)',\n  usernameOptional: 'Имя пользователя (необязательно)',\n  privateKey: 'Закрытый ключ',\n  override: 'Переопределить',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Используйте этот тип ключа для HTTPS репозиториев и для плейбуков, которые используют не SSH соединения.',\n  deleteKey: 'Удалить ключ',\n  newKey: 'Новый ключ',\n  create: 'Создать',\n  newTask: 'Новая задача',\n  cantDeleteThe: 'Невозможно удалить {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} не может быть удален, так как он используется ресурсами ниже',\n  projectName: 'Имя проекта',\n  allowAlertsForThisProject: 'Разрешить оповещения для этого проекта',\n  telegramChatIdOptional: 'Telegram Chat ID (необязательно)',\n  maxNumberOfParallelTasksOptional: 'Максимальное количество параллельных задач (необязательно)',\n  deleteRepository: 'Удалить репозиторий',\n  newRepository: 'Новый репозиторий',\n  urlOrPath: 'URL или путь',\n  absPath: 'абс. путь',\n  branch: 'Ветка',\n  accessKey: 'Ключ доступа',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Учетные данные для доступа к Git репозиторию. Это должно быть:',\n  ifYouUseGitOrSshUrl: 'если вы используете Git или SSH URL.',\n  ifYouUseHttpsOrFileUrl: 'если вы используете HTTPS или file URL.',\n  none: 'Нет',\n  ssh: 'SSH',\n  deleteProject: 'Удалить проект',\n  save: 'Сохранить',\n  deleteProject2: 'Удалить проект',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'После удаления проекта нет возврата. Пожалуйста, будьте уверены.',\n\n  clear_cache: 'Очистить кэш',\n  clear_cache_message: 'Удалить все файлы кэша, связанные с этим проектом. Это действие необратимо.',\n\n  name2: 'Имя *',\n  title: 'Название *',\n  description: 'Описание',\n  required: 'Обязательно',\n  key: '{expr}',\n  surveyVariables: 'Переменные опроса',\n  addVariable: 'Добавить переменную',\n  vaultName: 'ID хранилища (необязательно)',\n  vaultNameDefault: 'Может существовать только одно имя `default` (пустое)',\n  vaultNameUnique: 'Должно быть уникальным',\n  vaultTypePassword: 'Пароль',\n  vaultTypeScript: 'Клиентский скрипт',\n  vaultScript: 'Путь к скрипту',\n  vaultScriptRequired: 'Путь к скрипту обязателен',\n  vaultScriptClientRequired: 'Путь к скрипту должен заканчиваться на \\'-client\\' и иметь расширение',\n  vaults: 'Хранилища',\n  vaultAdd: 'Добавить хранилище',\n  vaultRequired: 'Пароль хранилища обязателен',\n  columns: 'Столбцы',\n  buildVersion: 'Версия сборки',\n  messageOptional: 'Сообщение (необязательно)',\n  debug: 'Отладка',\n  dryRun: 'Пробный запуск',\n  diff: 'Различия',\n  advanced: 'Расширенные',\n  hide: 'Скрыть',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Чтобы разрешить переопределение аргумента CLI в настройках шаблона задачи',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI аргументы (JSON массив). Пример: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Запущено',\n  author: 'Автор',\n  duration: 'Продолжительность',\n  stop: 'Остановить',\n  forceStop: 'Принудительная остановка',\n  stopAll: 'Остановить все',\n  stopAllTasks: 'Остановить все задачи',\n  askStopAllTasks: 'Вы уверены, что хотите остановить все задачи?',\n  forceStopAllTasks: 'Принудительно остановить все задачи',\n  askForceStopAllTasks: 'Вы уверены, что хотите принудительно остановить все задачи?',\n  raw_log: 'Сырой лог',\n\n  confirmTask: 'Подтвердить',\n  deleteTeamMember: 'Удалить участника команды',\n  team2: 'Команда',\n  newTeamMember: 'Новый участник команды',\n  user: 'Пользователь',\n  administrator: 'Администратор',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Определяет начальную версию вашего артефакта. Каждое выполнение увеличивает версию артефакта.',\n  forMoreInformationAboutBuildingSeeThe: 'Для получения дополнительной информации о сборке смотрите',\n  taskTemplateReference: 'Справка по шаблону задачи',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Определяет, какой артефакт должен быть развернут при выполнении задачи.',\n  forMoreInformationAboutDeployingSeeThe: 'Для получения дополнительной информации о развертывании смотрите',\n  taskTemplateReference2: 'Справка по шаблону задачи',\n  definesAutorunSchedule: 'Определяет расписание автозапуска.',\n  forMoreInformationAboutCronSeeThe: 'Для получения дополнительной информации о cron смотрите',\n  cronExpressionFormatReference: 'Справка по формату выражений cron',\n  startVersion: 'Начальная версия',\n  example000: 'Пример: 0.0.0',\n  buildTemplate: 'Шаблон сборки',\n  autorun: 'Автозапуск',\n  playbookFilename: 'Путь к файлу плейбука *',\n  exampleSiteyml: 'Пример: deploy/site.yml',\n  inventory2: 'Инвентарь *',\n  repository: 'Репозиторий',\n  environment3: 'Группа переменных *',\n  vaultPassword: 'Пароль хранилища',\n  vaultPassword2: 'Пароль хранилища',\n  view: 'Представление',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Я хочу запускать задачу по cron только для новых коммитов некоторого репозитория',\n  repository2: 'Репозиторий',\n  cronChecksNewCommitBeforeRun: 'Cron проверяет новый коммит перед запуском',\n  readThe: 'Читать',\n  toLearnMoreAboutCron: 'чтобы узнать больше о Cron.',\n  suppressSuccessAlerts: 'Подавить успешные оповещения',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI аргументы (JSON массив). Пример: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI аргументы',\n  docs: 'документация',\n  editViews: 'Редактировать представления',\n  newTemplate: 'Новый шаблон',\n  taskTemplates2: 'Шаблоны задач',\n  all: 'Все',\n  notLaunched: 'Не запущено',\n  by: 'от {user_name}',\n  editTemplate: 'Редактировать шаблон',\n  newTemplate2: 'Новый шаблон',\n  deleteTemplate: 'Удалить шаблон',\n  playbook: 'Плейбук',\n  email: 'Электронная почта',\n  adminUser: 'Администратор',\n  sendAlerts: 'Отправить оповещения',\n  deleteUser: 'Удалить пользователя',\n  newUser: 'Новый пользователь',\n  re: 'Re{getActionButtonTitle}',\n  teamMember: '{expr} Участник команды',\n  taskId: 'ID задачи',\n  version: 'Версия',\n  status: 'Статус',\n  start: 'Начать',\n  actions: 'Действия',\n  alert: 'Оповещение',\n  admin: 'Админ',\n  role: 'Роль',\n  external: 'Внешний',\n  time: 'Время',\n  path: 'Путь',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH ключ',\n  lastTask: 'Последняя задача',\n  task2: 'Задача',\n  build: 'Сборка',\n  deploy: 'Развертывание',\n  run: 'Запуск',\n  add: 'Добавить',\n  password_required: 'Пароль обязателен',\n  name_required: 'Имя обязательно',\n  user_credentials_required: 'Учетные данные пользователя обязательны',\n  type_required: 'Тип обязателен',\n  path_required: 'Путь к файлу инвентаря обязателен',\n  private_key_required: 'Закрытый ключ обязателен',\n  project_name_required: 'Имя проекта обязательно',\n  repository_required: 'Репозиторий обязателен',\n  branch_required: 'Ветка обязательна',\n  key_required: 'Ключ обязателен',\n  user_required: 'Пользователь обязателен',\n  build_version_required: 'Версия сборки обязательна',\n  title_required: 'Название обязательно',\n  isRequired: 'обязательно',\n  mustBeInteger: 'Должно быть целым числом',\n  mustBe0OrGreater: 'Должно быть 0 или больше',\n  start_version_required: 'Начальная версия обязательна',\n  playbook_filename_required: 'Имя файла плейбука обязательно',\n  inventory_required: 'Инвентарь обязателен',\n  environment_required: 'Среда обязательна',\n  email_required: 'Электронная почта обязательна',\n  build_template_required: 'Шаблон сборки обязателен',\n  Task: 'Задача',\n  Build: 'Сборка',\n  Deploy: 'Развертывание',\n  Run: 'Запуск',\n  ReBuild: 'Пересобрать',\n  ReDeploy: 'Переразвернуть',\n  ReRun: 'Повторный запуск',\n  CreateDemoProject: 'Создать демонстрационный проект',\n  LeaveProject: 'Покинуть проект',\n  integration: 'Интеграция',\n  integrations: 'Интеграции',\n  NewIntegration: 'Новая интеграция',\n  EditIntegration: 'Редактировать интеграцию',\n  DeleteIntegration: 'Удалить интеграцию',\n  DeleteIntegrationMsg: 'Вы уверены, что хотите удалить эту интеграцию?',\n  AddAlias: 'Добавить псевдоним',\n  LoadAlias: 'Загрузка псевдонимов...',\n  globalAlias: 'Использовать псевдоним проекта',\n  matcher: 'Сравнитель',\n  matchType: 'Тип совпадения',\n  newMatcher: 'Новый сравнитель',\n  matchMethod: 'Метод сравнения',\n  matchBodyDataType: 'Тип данных тела',\n  extractValue: 'Извлечь значение',\n  newExtractedValue: 'Новое извлеченное значение',\n  extractedValueSource: 'Источник значения',\n  matchKey: 'Ключ',\n  matchValue: 'Значение',\n  matchOn: 'Совпадение по',\n  runners: 'Исполнители',\n  newRunner: 'Новый исполнитель',\n  enabled: 'Включено',\n  scheduleNextRun: 'Следующий запуск',\n  maxNumberOfParallelTasks: 'Максимальное количество параллельных задач',\n  runnerUsage: 'Использование:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Токен:',\n  editRunner: 'Редактировать исполнителя',\n  deleteRunner: 'Удалить исполнителя',\n  newRunnerToken: 'Новый токен исполнителя',\n  askDeleteRunner: 'Вы действительно хотите удалить исполнителя {runner}?',\n  project_runners_only_pro: 'Исполнители на уровне проекта доступны только в версии <b>PRO</b>.',\n  foss_runners_limited: 'Открытая версия имеет ограниченный функционал; полный функционал доступен в версии <b>PRO</b>.',\n  learn_more_about_pro: 'Узнать больше',\n\n  projectRestoreResult: 'Результаты восстановления проекта',\n  projectWithNameRestored: 'Проект {projectName} успешно восстановлен.',\n  pleaseUpdateAccessKeys: 'Пожалуйста, обновите их перед запуском задач.',\n  emptyKeysRestored: '{emptyKeys} пустых ключей добавлено.',\n  template: 'Шаблон',\n  aliasUrlCopied: 'URL псевдонима скопирован в буфер обмена.',\n  yes: 'Да',\n  activeTasks: 'Активные задачи',\n  taskLocation: 'Местоположение',\n  empty: 'Пусто',\n  noValues: 'Нет значений',\n  addArg: 'Добавить аргумент',\n\n  status_success: 'Успех',\n  status_failed: 'Неудача',\n  status_stopped: 'Остановлено',\n\n  api_tokens: 'API токены',\n\n  // Terraform/OpenTofu\n  auto_approve: 'Авто одобрение',\n\n  // Ansible\n  tag: 'Тег',\n  tag_required: 'Тег обязателен',\n  allowInventoryInTask: 'Инвентарь',\n  allowLimitInTask: 'Лимит',\n  addLimit: 'Добавить лимит',\n  allowDebug: 'Отладка',\n  addTag: 'Добавить тег',\n  skipTags: 'Пропустить теги',\n  addSkippedTag: 'Добавить пропущенный тег',\n  tags: 'Теги',\n  limit: 'Лимит',\n\n  runner_tag: 'Тег исполнителя',\n  task_prompts: 'Подсказки',\n  template_advanced: 'Расширенные параметры',\n  template_app_options: '{app} параметры',\n  template_app_prompts: '{app} подсказки',\n  general_settings: 'Общие',\n  danger_zone_settings: 'Опасная зона',\n  project_stats: 'Статистика',\n  allow_override_branch: 'Ветка',\n  template_common_options: 'Общие параметры',\n};\n"
  },
  {
    "path": "web/src/lang/uk.js",
    "content": "export default {\n  checkInterval: 'інтервал перевірки',\n  newCommitCheckInterval: 'інтервал перевірки нового коміта',\n  schedule: 'Розклад',\n  newSchedule: 'Новий розклад',\n  deleteSchedule: 'Видалити розклад',\n  editSchedule: 'Редагувати розклад',\n  backup: 'Резервна копія проєкту',\n  downloadTheProjectBackupFile: 'Завантажити файл резервної копії проєкту.',\n  restoreProject: 'Відновити проєкт...',\n  incorrectUsrPwd: 'Неправильний логін або пароль',\n  askDeleteUser: 'Ви дійсно бажаєте видалити цього користувача?',\n  askDeleteTemp: 'Ви дійсно бажаєте видалити цей шаблон?',\n  askDeleteEnv: 'Ви дійсно бажаєте видалити це середовище?',\n  askDeleteInv: 'Ви дійсно бажаєте видалити цей інвентар?',\n  askDeleteKey: 'Ви дійсно бажаєте видалити цей ключ?',\n  askDeleteRepo: 'Ви дійсно бажаєте видалити цей репозиторій?',\n  askDeleteProj: 'Ви дійсно бажаєте видалити цей проєкт?',\n  askDeleteTMem: 'Ви дійсно бажаєте видалити цього члена команди?',\n  askDeleteSchedule: 'Ви дійсно бажаєте видалити цей розклад?',\n  edit: 'Редагувати',\n  nnew: 'Новий',\n  keyFormSshKey: 'SSH-ключ',\n  keyFormLoginPassword: 'Логін з паролем',\n  keyFormNone: 'Немає',\n  incorrectUrl: 'Неправильний URL',\n  username: \"Ім'я користувача\",\n  username_required: \"Ім'я користувача обов'язкове\",\n  dashboard: 'Панель керування',\n  history: 'Історія',\n  activity: 'Активність',\n  settings: 'Налаштування',\n  signIn: 'Увійти',\n  password: 'Пароль',\n  changePassword: 'Змінити пароль',\n  editUser: 'Редагувати користувача',\n  newProject: 'Новий проєкт',\n  close: 'Закрити',\n  newProject2: 'Новий проєкт...',\n  demoMode: 'ДЕМО РЕЖИМ',\n  task: 'Завдання #{expr}',\n  youCanRunAnyTasks: 'Ви можете запускати будь-які завдання',\n  youHaveReadonlyAccess: 'Ви маєте доступ лише для перегляду',\n  taskTemplates: 'Шаблони завдань',\n  inventory: 'Інвентар',\n  environment: 'середовище',\n  keyStore: 'Сховище ключів',\n  repositories: 'Репозиторії',\n  darkMode: 'Темний режим',\n  team: 'Команда',\n  users: 'Користувачі',\n  editAccount: 'Редагувати обліковий запис',\n  signOut: 'Вийти',\n  error: 'Помилка',\n  refreshPage: 'Оновити сторінку',\n  relogin: 'Увійти ще раз',\n  howToFixSigninIssues: 'Як виправити проблеми з входом',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: 'Спочатку вам потрібно мати доступ до сервера, де запущено Semaphore.',\n  executeTheFollowingCommandOnTheServerToSeeExisting: 'Виконайте цю команду на сервері, щоб переглянути існуючих користувачів:',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: 'Ви можете змінити пароль існуючого користувача:',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: 'Або створіть нового адміністратора:',\n  close2: 'Закрити',\n  semaphore: 'SEMAPHORE',\n  dontHaveAccountOrCantSignIn: 'Немає облікового запису або не можете увійти?',\n  password2: 'Пароль',\n  cancel: 'Скасувати',\n  noViews: 'Немає переглядів',\n  addView: 'Додати перегляд',\n  editEnvironment: 'Редагувати середовище',\n  deleteEnvironment: 'Видалити середовище',\n  newEnvironment: 'Нове середовище',\n  environmentName: 'Назва середовища',\n  dockerImage: 'Runner Docker Image (необов’язково)',\n  extraVariables: 'Додаткові змінні',\n  enterExtraVariablesJson: 'Введіть додаткові змінні JSON...',\n  environmentVariables: 'Змінні середовища',\n  enterEnvJson: 'Введіть env JSON...',\n  environmentAndExtraVariablesMustBeValidJsonExample: 'Змінні середовища та додаткові змінні повинні бути валідним JSON. Приклад:',\n  dashboard2: 'Панель керування',\n  ansibleSemaphore: 'Semaphore UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: 'Вибачте, але <%= htmlWebpackPlugin.options.title %> не працює належним чином без JavaScript. Будь ласка, увімкніть його.',\n  deleteInventory: 'Видалити інвентар',\n  newInventory: 'Новий інвентар',\n  name: 'Назва',\n  userCredentials: 'Облікові дані користувача',\n  sudoCredentialsOptional: 'Облікові дані sudo (необов’язково)',\n  type: 'Тип',\n  pathToInventoryFile: 'Шлях до інвентарного файлу',\n  enterInventory: 'Введіть інвентар...',\n  staticInventoryExample: 'Приклад статичного інвентарю:',\n  staticYamlInventoryExample: 'Приклад статичного YAML-інвентарю:',\n  keyName: 'Ім’я ключа',\n  loginOptional: 'Логін (необов’язково)',\n  usernameOptional: \"Ім'я користувача (необов’язково)\",\n  privateKey: 'Приватний ключ',\n  override: 'Перезаписати',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: 'Використовуйте цей тип ключа для HTTPS-репозиторіїв та для плейбуків з не-SSH підключенням.',\n  deleteKey: 'Видалити ключ',\n  newKey: 'Новий ключ',\n  create: 'Створити',\n  newTask: 'Нове завдання',\n  cantDeleteThe: 'Не вдалося видалити {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} не може бути видалено, оскільки використовується такими ресурсами:',\n  projectName: 'Назва проєкту',\n  allowAlertsForThisProject: 'Дозволити сповіщення для цього проєкту',\n  telegramChatIdOptional: 'Telegram Chat ID (необов’язково)',\n  maxNumberOfParallelTasksOptional: 'Максимальна кількість паралельних завдань (необов’язково)',\n  deleteRepository: 'Видалити репозиторій',\n  newRepository: 'Новий репозиторій',\n  urlOrPath: 'URL або шлях',\n  absPath: 'абс. шлях',\n  branch: 'Гілка',\n  accessKey: 'Ключ доступу',\n  credentialsToAccessToTheGitRepositoryItShouldBe: 'Облікові дані для доступу до Git-репозиторію. Має бути:',\n  ifYouUseGitOrSshUrl: 'якщо ви використовуєте Git або SSH URL.',\n  ifYouUseHttpsOrFileUrl: 'якщо ви використовуєте HTTPS або file URL.',\n  none: 'Немає',\n  ssh: 'SSH',\n  deleteProject: 'Видалити проєкт',\n  save: 'Зберегти',\n  deleteProject2: 'Видалити проєкт',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: 'Після видалення проєкту повернення неможливе. Будьте впевнені.',\n\n  clear_cache: 'Очистити кеш',\n  clear_cache_message: 'Видалити всі кеш-файли, пов’язані з цим проєктом. Ця дія незворотна.',\n\n  name2: 'Ім’я *',\n  title: 'Заголовок *',\n  description: 'Опис',\n  required: 'Обов’язково',\n  key: '{expr}',\n  surveyVariables: 'Змінні опитування',\n  addVariable: 'Додати змінну',\n  vaultName: 'Vault ID (необов’язково)',\n  vaultNameDefault: 'Може бути лише один `default` (пусте) ім’я',\n  default_value: 'Значення за замовчуванням',\n  vaultNameUnique: 'Має бути унікальним',\n  vaultTypePassword: 'Пароль',\n  vaultTypeScript: 'Клієнтський скрипт',\n  vaultScript: 'Шлях до скрипта',\n  vaultScriptRequired: 'Вкажіть шлях до скрипта',\n  vaultScriptClientRequired: 'Шлях до скрипта має закінчуватись на \\'-client\\' і розширення',\n  vaults: 'Сховища',\n  vaultAdd: 'Додати сховище',\n  vaultRequired: 'Пароль сховища обов’язковий',\n  columns: 'Колонки',\n  buildVersion: 'Версія збірки',\n  messageOptional: 'Повідомлення (необов’язково)',\n  debug: 'Налагодження',\n  dryRun: 'Тестовий запуск',\n  diff: 'Порівняння',\n  advanced: 'Додатково',\n  hide: 'Сховати',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: 'Дозвольте перевизначення CLI аргументу в налаштуваннях шаблону завдання',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI-аргументи (JSON-масив). Приклад: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: 'Запущено',\n  author: 'Автор',\n  duration: 'Тривалість',\n  stop: 'Зупинити',\n  forceStop: 'Зупинити примусово',\n  stopAll: 'Зупинити все',\n  stopAllTasks: 'Зупинити всі задачі',\n  askStopAllTasks: 'Ви впевнені, що хочете зупинити всі задачі?',\n  forceStopAllTasks: 'Зупинити примусово всі задачі',\n  askForceStopAllTasks: 'Ви впевнені, що хочете примусово зупинити всі задачі?',\n  raw_log: 'Сире логи',\n  confirmTask: 'Підтвердити',\n  deleteTeamMember: 'Видалити члена команди',\n  team2: 'Команда',\n  newTeamMember: 'Новий член команди',\n  user: 'Користувач',\n  administrator: 'Адміністратор',\n  definesStartVersionOfYourArtifactEachRunIncrements: 'Визначає початкову версію артефакту. З кожним запуском версія збільшується.',\n  forMoreInformationAboutBuildingSeeThe: 'Детальніше про збірку дивіться',\n  taskTemplateReference: 'Довідник по шаблонах завдань',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: 'Визначає який артефакт буде розгорнуто при запуску завдання.',\n  forMoreInformationAboutDeployingSeeThe: 'Детальніше про розгортання дивіться',\n  taskTemplateReference2: 'Довідник по шаблонах завдань',\n  definesAutorunSchedule: 'Визначає розклад автозапуску.',\n  forMoreInformationAboutCronSeeThe: 'Детальніше про cron дивіться на',\n  cronExpressionFormatReference: 'Посилання на формат cron-виразів',\n  startVersion: 'Початкова версія',\n  example000: 'Приклад: 0.0.0',\n  buildTemplate: 'Шаблон збірки',\n  autorun: 'Автозапуск',\n  playbookFilename: 'Шлях до файлу playbook *',\n  exampleSiteyml: 'Приклад: deploy/site.yml',\n  inventory2: 'Інвентар *',\n  repository: 'Репозиторій',\n  environment3: 'середовище *',\n  vaultPassword: 'Пароль сховища',\n  vaultPassword2: 'Пароль сховища',\n  view: 'Перегляд',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: 'Я хочу запускати завдання по розкладу лише для нових комітів певного репозиторія',\n  repository2: 'Репозиторій',\n  cronChecksNewCommitBeforeRun: 'Cron перевіряє новий коміт перед запуском',\n  readThe: 'Читайте',\n  toLearnMoreAboutCron: 'щоб дізнатися більше про cron.',\n  suppressSuccessAlerts: 'Не показувати сповіщення про успіх',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI-аргументи (JSON-масив). Приклад: [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI-аргументи',\n  docs: 'документація',\n  editViews: 'Редагувати перегляди',\n  newTemplate: 'Новий шаблон',\n  taskTemplates2: 'Шаблони завдань',\n  all: 'Усі',\n  notLaunched: 'Не запущено',\n  by: 'від {user_name}',\n  editTemplate: 'Редагувати шаблон',\n  newTemplate2: 'Новий шаблон',\n  deleteTemplate: 'Видалити шаблон',\n  playbook: 'Playbook',\n  email: 'Email',\n  adminUser: 'Адміністратор',\n  sendAlerts: 'Відправляти сповіщення',\n  deleteUser: 'Видалити користувача',\n  newUser: 'Новий користувач',\n  re: 'Пере{getActionButtonTitle}',\n  teamMember: '{expr} член команди',\n  taskId: 'ID завдання',\n  version: 'Версія',\n  status: 'Статус',\n  start: 'Почати',\n  actions: 'Дії',\n  alert: 'Сповіщення',\n  admin: 'Адмін',\n  role: 'Роль',\n  external: 'Зовнішній',\n  time: 'Час',\n  path: 'Шлях',\n  gitUrl: 'Git-URL',\n  sshKey: 'SSH-ключ',\n  lastTask: 'Останнє завдання',\n  task2: 'Завдання',\n  build: 'Збірка',\n  deploy: 'Розгортання',\n  run: 'Запуск',\n  add: 'Додати',\n  password_required: 'Пароль обов’язковий',\n  name_required: 'Ім’я обов’язкове',\n  user_credentials_required: 'Облікові дані користувача обов’язкові',\n  type_required: 'Тип обов’язковий',\n  path_required: 'Шлях до інвентарного файлу обов’язковий',\n  private_key_required: 'Приватний ключ обов’язковий',\n  project_name_required: 'Назва проєкту обов’язкова',\n  repository_required: 'Репозиторій обов’язковий',\n  branch_required: 'Гілка обов’язкова',\n  key_required: 'Ключ обов’язковий',\n  user_required: 'Користувач обов’язковий',\n  build_version_required: 'Версія збірки обов’язкова',\n  title_required: 'Заголовок обов’язковий',\n  isRequired: 'обов’язково',\n  mustBeInteger: 'Має бути ціле число',\n  mustBe0OrGreater: 'Має бути 0 або більше',\n  start_version_required: 'Початкова версія обов’язкова',\n  playbook_filename_required: 'Потрібно вказати playbook',\n  inventory_required: 'Необхідно вказати інвентар',\n  environment_required: 'середовище обов’язкове',\n  email_required: 'Email обов’язковий',\n  build_template_required: 'Шаблон збірки обов’язковий',\n  Task: 'Завдання',\n  Build: 'Збірка',\n  Deploy: 'Розгортання',\n  Run: 'Запуск',\n  ReBuild: 'Перезібрати',\n  ReDeploy: 'Перерозгорнути',\n  ReRun: 'Перезапустити',\n  CreateDemoProject: 'Створити демо-проєкт',\n  LeaveProject: 'Вийти з проєкту',\n  integration: 'Інтеграція',\n  integrations: 'Інтеграції',\n  NewIntegration: 'Нова інтеграція',\n  EditIntegration: 'Редагувати інтеграцію',\n  DeleteIntegration: 'Видалити інтеграцію',\n  DeleteIntegrationMsg: 'Ви впевнені, що хочете видалити цю інтеграцію?',\n  AddAlias: 'Додати псевдонім',\n  LoadAlias: 'Завантаження псевдонімів...',\n  globalAlias: 'Використовувати псевдонім проєкту',\n  matcher: 'Аналізатор',\n  matchType: 'Тип співпадіння',\n  newMatcher: 'Новий аналізатор',\n  matchMethod: 'Спосіб порівняння',\n  matchBodyDataType: 'Тип даних у тілі',\n  extractValue: 'Витягнути значення',\n  newExtractedValue: 'Нове витягнуте значення',\n  extractedValueSource: 'Джерело значення',\n  matchKey: 'Ключ',\n  matchValue: 'Значення',\n  matchOn: 'Порівнювати за',\n  runners: 'Виконавці',\n  newRunner: 'Новий виконавець',\n  enabled: 'Увімкнено',\n  scheduleNextRun: 'Наступний запуск',\n  maxNumberOfParallelTasks: 'Максимум паралельних завдань',\n  runnerUsage: 'Використання:',\n  runnerDockerCommand: 'Docker:',\n  runnerToken: 'Токен:',\n  editRunner: 'Редагувати виконавця',\n  deleteRunner: 'Видалити виконавця',\n  newRunnerToken: 'Новий токен виконавця',\n  askDeleteRunner: 'Ви дійсно бажаєте видалити виконавця {runner}?',\n  roles_only_enterprise: 'Ролі доступні лише у <b>Enterprise</b> версії.',\n  project_runners_only_pro: 'Виконавці проєкту доступні лише для <b>PRO</b> користувачів.',\n  secret_storage_only_pro: 'Сховище секретів доступне лише у <b>PRO</b> версії.',\n  foss_runners_limited: 'Open-source версія має обмежені функції, повний функціонал доступний у <b>PRO</b> версії.',\n  learn_more_about_pro: 'Дізнатися більше',\n  upgrade_to_pro: 'Оновити',\n  contact_admin_to_upgrade: 'Зверніться до адміністратора для активації PRO-функцій.',\n  contact_admin_to_upgrade_enterprise: 'Зверніться до адміністратора для активації функцій Enterprise.',\n  projectRestoreResult: 'Результати відновлення проєкту',\n  projectWithNameRestored: 'Проєкт {projectName} успішно відновлено.',\n  pleaseUpdateAccessKeys: 'Оновіть їх перед запуском завдань.',\n  emptyKeysRestored: 'Додано {emptyKeys} пустих ключів.',\n  template: 'Шаблон',\n  aliasUrlCopied: 'URL псевдоніма скопійований до буфера.',\n  yes: 'Так',\n  activeTasks: 'Активні завдання',\n  taskLocation: 'Розташування',\n  empty: 'Порожньо',\n  noValues: 'Немає значень',\n  addArg: 'Додати аргумент',\n\n  status_success: 'Успішно',\n  status_failed: 'Помилка',\n  status_stopped: 'Зупинено',\n\n  api_tokens: 'API-токени',\n\n  auto_approve: 'Автоматичне підтвердження',\n  auto_destroy: 'Дозволити знищення',\n  terraform_override_backend: 'Перезапис параметрів бекенду',\n  terraform_backend_filename: 'Ім\\'я файлу бекенду (за замовчуванням: backend.tf)',\n  terraform_invalid_backend_filename: 'Некоректне ім\\'я файлу бекенду',\n\n  tag: 'Тег',\n  tag_required: 'Тег обов\\'язковий',\n  allowInventoryInTask: 'Інвентар',\n  allowLimitInTask: 'Обмеження',\n  addLimit: 'Додати обмеження',\n  allowDebug: 'Налагодження',\n  addTag: 'Додати тег',\n  skipTags: 'Пропустити теги',\n  addSkippedTag: 'Додати пропущений тег',\n  tags: 'Теги',\n  limit: 'Обмеження',\n\n  runner_tag: 'Тег виконавця',\n  allow_parallel_tasks: 'Дозволити паралельні завдання',\n  task_prompts: 'Підказки',\n  template_advanced: 'Додаткові опції',\n  template_app_options: 'Опції {app}',\n  template_app_prompts: 'Підказки для {app}',\n  general_settings: 'Загальні налаштування',\n  danger_zone_settings: 'Небезпечна зона',\n  project_stats: 'Статистика проєкту',\n  allow_override_branch: 'Гілка',\n  template_common_options: 'Загальні опції',\n\n  template_tasks: 'Завдання',\n  template_details: 'Деталі',\n  template_tf_workspaces: 'Workspaces',\n\n  slug: 'Слаг',\n  slug_required: 'Слаг обов’язковий',\n  slugHint: 'Унікальний ідентифікатор (лише малими літерами, латиницею, цифри, нижнє підкреслення і дефіс)',\n  invalidSlugFormat: 'Слаг має бути малими літерами, латиницею, цифри, нижнє підкреслення чи дефіс',\n  permissions: 'Права',\n  canRunProjectTasks: 'Може запускати завдання проєкту',\n  canUpdateProject: 'Може оновлювати проєкт',\n  canManageProjectResources: 'Може керувати ресурсами проєкту',\n  canManageProjectUsers: 'Може керувати користувачами проєкту',\n  newRole: 'Нова роль',\n  editRole: 'Редагувати роль',\n  deleteRole: 'Видалити роль',\n  askDeleteRole: 'Ви дійсно бажаєте видалити цю роль?',\n  Roles: 'Ролі',\n  role_required: 'Роль обов’язкова',\n\n  templatePermission: 'Права шаблону',\n};\n"
  },
  {
    "path": "web/src/lang/zh_cn.js",
    "content": "export default {\n  checkInterval: '检查间隔',\n  newCommitCheckInterval: '新提交检查间隔',\n  schedule: '计划',\n  newSchedule: '新计划',\n  deleteSchedule: '删除计划',\n  editSchedule: '编辑计划',\n  backup: '备份项目',\n  downloadTheProjectBackupFile: '下载项目备份文件。',\n  restoreProject: '恢复项目...',\n  incorrectUsrPwd: '登录或密码不正确',\n  askDeleteUser: '您真的想删除此用户吗？',\n  askDeleteTemp: '您真的想删除此模板吗？',\n  askDeleteEnv: '您真的想删除此环境吗？',\n  askDeleteInv: '您真的想删除此库存吗？',\n  askDeleteKey: '您真的想删除此密钥吗？',\n  askDeleteRepo: '您真的想删除此仓库吗？',\n  askDeleteProj: '您真的想删除此项目吗？',\n  askDeleteTMem: '您真的想删除此团队成员吗？',\n  askDeleteSchedule: '您真的想删除此计划吗？',\n  edit: '编辑',\n  nnew: '新建',\n  keyFormSshKey: 'SSH 密钥',\n  keyFormLoginPassword: '使用密码登录',\n  keyFormNone: '无',\n  incorrectUrl: '不正确的 URL',\n  username: '用户名',\n  username_required: '用户名是必需的',\n  dashboard: '仪表板',\n  history: '历史',\n  activity: '活动',\n  settings: '设置',\n  signIn: '登录',\n  password: '密码',\n  changePassword: '更改密码',\n  editUser: '编辑用户',\n  newProject: '新项目',\n  close: '关闭',\n  newProject2: '新项目...',\n  demoMode: '演示模式',\n  task: '任务 #{expr}',\n  youCanRunAnyTasks: '您可以运行任何任务',\n  youHaveReadonlyAccess: '您具有只读访问权限',\n  taskTemplates: '任务模板',\n  inventory: '库存',\n  environment: '变量组',\n  keyStore: '密钥存储',\n  repositories: '仓库',\n  darkMode: '黑暗模式',\n  team: '团队',\n  users: '用户',\n  editAccount: '编辑账户',\n  signOut: '登出',\n  error: '错误',\n  refreshPage: '刷新页面',\n  relogin: '重新登录',\n  howToFixSigninIssues: '如何解决登录问题',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先，您需要访问运行 Semaphore 的服务器。',\n  executeTheFollowingCommandOnTheServerToSeeExisting: '在服务器上执行以下命令以查看现有用户：',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: '您可以更改现有用户的密码：',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: '或创建新管理员用户：',\n  close2: '关闭',\n  semaphore: '信号灯',\n  dontHaveAccountOrCantSignIn: '没有账户或无法登录？',\n  password2: '密码',\n  cancel: '取消',\n  noViews: '没有视图',\n  addView: '添加视图',\n  editEnvironment: '编辑变量组',\n  deleteEnvironment: '删除变量组',\n  newEnvironment: '新组',\n  environmentName: '组名',\n  extraVariables: '额外变量',\n  enterExtraVariablesJson: '输入额外变量 JSON...',\n  environmentVariables: '环境变量',\n  enterEnvJson: '输入环境 JSON...',\n  environmentAndExtraVariablesMustBeValidJsonExample: '环境和额外变量必须是有效的 JSON。示例：',\n  dashboard2: '仪表板',\n  ansibleSemaphore: '信号灯 UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '我们很抱歉，但 <%= htmlWebpackPlugin.options.title %> 在没有启用 JavaScript 的情况下无法正常工作。请启用它以继续。',\n  deleteInventory: '删除库存',\n  newInventory: '新库存',\n  name: '名称',\n  userCredentials: '用户凭据',\n  sudoCredentialsOptional: 'Sudo 凭据（可选）',\n  type: '类型',\n  pathToInventoryFile: '库存文件路径',\n  enterInventory: '输入库存...',\n  staticInventoryExample: '静态库存示例：',\n  staticYamlInventoryExample: '静态 YAML 库存示例：',\n  keyName: '密钥名称',\n  loginOptional: '登录（可选）',\n  usernameOptional: '用户名（可选）',\n  privateKey: '私钥',\n  override: '覆盖',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '使用此类型的密钥用于 HTTPS 仓库和使用非 SSH 连接的剧本。',\n  deleteKey: '删除密钥',\n  newKey: '新密钥',\n  create: '创建',\n  newTask: '新任务',\n  cantDeleteThe: '无法删除 {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} 无法删除，因为它被以下资源使用',\n  projectName: '项目名称',\n  allowAlertsForThisProject: '允许此项目的警报',\n  telegramChatIdOptional: 'Telegram 聊天 ID（可选）',\n  maxNumberOfParallelTasksOptional: '最大并行任务数（可选）',\n  deleteRepository: '删除仓库',\n  newRepository: '新仓库',\n  urlOrPath: 'URL 或路径',\n  absPath: '绝对路径',\n  branch: '分支',\n  accessKey: '访问密钥',\n  credentialsToAccessToTheGitRepositoryItShouldBe: '访问 Git 仓库的凭据。它应该是：',\n  ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL。',\n  ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或文件 URL。',\n  none: '无',\n  ssh: 'SSH',\n  deleteProject: '删除项目',\n  save: '保存',\n  deleteProject2: '删除项目',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '一旦您删除项目，就无法恢复。请确认。',\n\n  clear_cache: '清除缓存',\n  clear_cache_message: '删除与此项目相关的所有缓存文件。此操作不可逆。',\n\n  name2: '名称 *',\n  title: '标题 *',\n  description: '描述',\n  required: '必需',\n  key: '{expr}',\n  surveyVariables: '调查变量',\n  addVariable: '添加变量',\n  vaultName: '保管库 ID（可选）',\n  vaultNameDefault: '只能存在一个 `default`（空）名称',\n  vaultNameUnique: '必须是唯一的',\n  vaultTypePassword: '密码',\n  vaultTypeScript: '客户端脚本',\n  vaultScript: '脚本路径',\n  vaultScriptRequired: '脚本路径是必需的',\n  vaultScriptClientRequired: '脚本路径必须以“-client”结尾并带有扩展名',\n  vaults: '保管库',\n  vaultAdd: '添加保管库',\n  vaultRequired: '保管库密码是必需的',\n  columns: '列',\n  buildVersion: '构建版本',\n  messageOptional: '消息（可选）',\n  debug: '调试',\n  dryRun: '干运行',\n  diff: '差异',\n  advanced: '高级',\n  hide: '隐藏',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: '允许在任务模板设置中覆盖 CLI 参数',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 参数（JSON 数组）。示例： [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: '已开始',\n  author: '作者',\n  duration: '持续时间',\n  stop: '停止',\n  forceStop: '强制停止',\n  stopAll: '停止全部',\n  stopAllTasks: '停止所有任务',\n  askStopAllTasks: '您确定要停止所有任务吗？',\n  forceStopAllTasks: '强制停止所有任务',\n  askForceStopAllTasks: '您确定要强制停止所有任务吗？',\n  raw_log: '原始日志',\n\n  confirmTask: '确认',\n  deleteTeamMember: '删除团队成员',\n  team2: '团队',\n  newTeamMember: '新团队成员',\n  user: '用户',\n  administrator: '管理员',\n  definesStartVersionOfYourArtifactEachRunIncrements: '定义您的工件的起始版本。每次运行都会增加工件版本。',\n  forMoreInformationAboutBuildingSeeThe: '有关构建的更多信息，请参见',\n  taskTemplateReference: '任务模板参考',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定义在任务运行时应部署的工件。',\n  forMoreInformationAboutDeployingSeeThe: '有关部署的更多信息，请参见',\n  taskTemplateReference2: '任务模板参考',\n  definesAutorunSchedule: '定义自动运行计划。',\n  forMoreInformationAboutCronSeeThe: '有关 cron 的更多信息，请参见',\n  cronExpressionFormatReference: 'Cron 表达式格式参考',\n  startVersion: '起始版本',\n  example000: '示例：0.0.0',\n  buildTemplate: '构建模板',\n  autorun: '自动运行',\n  playbookFilename: '剧本文件路径 *',\n  exampleSiteyml: '示例：deploy/site.yml',\n  inventory2: '库存 *',\n  repository: '仓库',\n  environment3: '变量组 *',\n  vaultPassword: '保管库密码',\n  vaultPassword2: '保管库密码',\n  view: '视图',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '我想通过 cron 仅为某个仓库的新提交运行任务',\n  repository2: '仓库',\n  cronChecksNewCommitBeforeRun: 'Cron 在运行之前检查新提交',\n  readThe: '阅读',\n  toLearnMoreAboutCron: '以了解有关 Cron 的更多信息。',\n  suppressSuccessAlerts: '抑制成功警报',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 参数（JSON 数组）。示例： [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI 参数',\n  docs: '文档',\n  editViews: '编辑视图',\n  newTemplate: '新模板',\n  taskTemplates2: '任务模板',\n  all: '所有',\n  notLaunched: '未启动',\n  by: '由 {user_name}',\n  editTemplate: '编辑模板',\n  newTemplate2: '新模板',\n  deleteTemplate: '删除模板',\n  playbook: '剧本',\n  email: '电子邮件',\n  adminUser: '管理员用户',\n  sendAlerts: '发送警报',\n  deleteUser: '删除用户',\n  newUser: '新用户',\n  re: '重新{getActionButtonTitle}',\n  teamMember: '{expr} 团队成员',\n  taskId: '任务 ID',\n  version: '版本',\n  status: '状态',\n  start: '开始',\n  actions: '操作',\n  alert: '警报',\n  admin: '管理员',\n  role: '角色',\n  external: '外部',\n  time: '时间',\n  path: '路径',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH 密钥',\n  lastTask: '最后任务',\n  task2: '任务',\n  build: '构建',\n  deploy: '部署',\n  run: '运行',\n  add: '添加',\n  password_required: '密码是必需的',\n  name_required: '名称是必需的',\n  user_credentials_required: '用户凭据是必需的',\n  type_required: '类型是必需的',\n  path_required: '库存文件路径是必需的',\n  private_key_required: '私钥是必需的',\n  project_name_required: '项目名称是必需的',\n  repository_required: '仓库是必需的',\n  branch_required: '分支是必需的',\n  key_required: '密钥是必需的',\n  user_required: '用户是必需的',\n  build_version_required: '构建版本是必需的',\n  title_required: '标题是必需的',\n  isRequired: '是必需的',\n  mustBeInteger: '必须是整数',\n  mustBe0OrGreater: '必须是 0 或更大',\n  start_version_required: '起始版本是必需的',\n  playbook_filename_required: '剧本文件名是必需的',\n  inventory_required: '库存是必需的',\n  environment_required: '环境是必需的',\n  email_required: '电子邮件是必需的',\n  build_template_required: '构建模板是必需的',\n  Task: '任务',\n  Build: '构建',\n  Deploy: '部署',\n  Run: '运行',\n  ReBuild: '重建',\n  ReDeploy: '重新部署',\n  ReRun: '重新运行',\n  CreateDemoProject: '创建演示项目',\n  LeaveProject: '离开项目',\n  integration: '集成',\n  integrations: '集成',\n  NewIntegration: '新集成',\n  EditIntegration: '编辑集成',\n  DeleteIntegration: '删除集成',\n  DeleteIntegrationMsg: '您确定要删除此集成吗？',\n  AddAlias: '添加别名',\n  LoadAlias: '加载别名...',\n  globalAlias: '使用项目别名',\n  matcher: '匹配器',\n  matchType: '匹配类型',\n  newMatcher: '新匹配器',\n  matchMethod: '比较方法',\n  matchBodyDataType: '主体数据类型',\n  extractValue: '提取值',\n  newExtractedValue: '新提取值',\n  extractedValueSource: '值来源',\n  matchKey: '键',\n  matchValue: '值',\n  matchOn: '匹配',\n  runners: '运行器',\n  newRunner: '新运行器',\n  enabled: '启用',\n  scheduleNextRun: '下次运行',\n  maxNumberOfParallelTasks: '最大并行任务数',\n  runnerUsage: '用法：',\n  runnerDockerCommand: 'Docker：',\n  runnerToken: '令牌：',\n  editRunner: '编辑运行器',\n  deleteRunner: '删除运行器',\n  newRunnerToken: '新运行器',\n  askDeleteRunner: '您真的想删除运行器 {runner} 吗？',\n  project_runners_only_pro: '项目级运行器仅在 <b>专业版</b> 中可用。',\n  foss_runners_limited: '开源版本功能有限；完整功能在 <b>专业版</b> 中。',\n  learn_more_about_pro: '了解更多',\n\n  projectRestoreResult: '项目恢复结果',\n  projectWithNameRestored: '项目 {projectName} 成功恢复。',\n  pleaseUpdateAccessKeys: '请在运行任务之前更新它们。',\n  emptyKeysRestored: '{emptyKeys} 个空密钥已添加。',\n  template: '模板',\n  aliasUrlCopied: '别名 URL 已复制到剪贴板。',\n  yes: '是',\n  activeTasks: '活动任务',\n  taskLocation: '位置',\n  empty: '空',\n  noValues: '没有值',\n  addArg: '添加参数',\n\n  status_success: '成功',\n  status_failed: '失败',\n  status_stopped: '已停止',\n\n  api_tokens: 'API 令牌',\n\n  // Terraform/OpenTofu\n  auto_approve: '自动批准',\n\n  // Ansible\n  tag: '标签',\n  tag_required: '标签是必需的',\n  allowInventoryInTask: '库存',\n  allowLimitInTask: '限制',\n  addLimit: '添加限制',\n  allowDebug: '调试',\n  addTag: '添加标签',\n  skipTags: '跳过标签',\n  addSkippedTag: '添加跳过的标签',\n  tags: '标签',\n  limit: '限制',\n\n  runner_tag: '运行器标签',\n  task_prompts: '提示',\n  template_advanced: '高级选项',\n  template_app_options: '{app} 选项',\n  template_app_prompts: '{app} 提示',\n  general_settings: '常规',\n  danger_zone_settings: '危险区域',\n  project_stats: '统计',\n  allow_override_branch: '分支',\n  template_common_options: '常见选项',\n};\n"
  },
  {
    "path": "web/src/lang/zh_tw.js",
    "content": "export default {\n  checkInterval: '檢查間隔',\n  newCommitCheckInterval: '檢查新提交的間隔',\n  schedule: '排程',\n  newSchedule: '新排程',\n  deleteSchedule: '刪除排程',\n  editSchedule: '編輯排程',\n  backup: '備份專案',\n  downloadTheProjectBackupFile: '下載專案備份檔案。',\n  restoreProject: '還原專案...',\n  incorrectUsrPwd: '帳號或密碼不正確',\n  askDeleteUser: '您確定要刪除這個使用者嗎？',\n  askDeleteTemp: '您確定要刪除這個範本嗎？',\n  askDeleteEnv: '您確定要刪除這個環境嗎？',\n  askDeleteInv: '您確定要刪除這個清單嗎？',\n  askDeleteKey: '您確定要刪除這個金鑰嗎？',\n  askDeleteRepo: '您確定要刪除這個儲存庫嗎？',\n  askDeleteProj: '您確定要刪除這個專案嗎？',\n  askDeleteTMem: '您確定要刪除這個團隊成員嗎？',\n  askDeleteSchedule: '您確定要刪除這個排程嗎？',\n  edit: '編輯',\n  nnew: '新增',\n  keyFormSshKey: 'SSH 金鑰',\n  keyFormLoginPassword: '使用密碼登入',\n  keyFormNone: '無',\n  incorrectUrl: '不正確的 URL',\n  username: '使用者名稱',\n  username_required: '使用者名稱是必填的',\n  dashboard: '儀表板',\n  history: '歷史',\n  activity: '活動',\n  settings: '設定',\n  signIn: '登入',\n  password: '密碼',\n  changePassword: '更改密碼',\n  editUser: '編輯使用者',\n  newProject: '新專案',\n  close: '關閉',\n  newProject2: '新專案...',\n  demoMode: '示範模式',\n  task: '任務 #{expr}',\n  youCanRunAnyTasks: '您可以執行任何任務',\n  youHaveReadonlyAccess: '您擁有唯讀存取權限',\n  taskTemplates: '任務範本',\n  inventory: '清單',\n  environment: '變數群組',\n  keyStore: '金鑰儲存',\n  repositories: '儲存庫',\n  darkMode: '深色模式',\n  team: '團隊',\n  users: '使用者',\n  editAccount: '編輯帳號',\n  signOut: '登出',\n  error: '錯誤',\n  refreshPage: '重新整理頁面',\n  relogin: '重新登入',\n  howToFixSigninIssues: '如何修復登入問題',\n  firstlyYouNeedAccessToTheServerWhereSemaphoreRunni: '首先，您需要存取 Semaphore 所在的伺服器。',\n  executeTheFollowingCommandOnTheServerToSeeExisting: '在伺服器上執行以下命令以查看現有使用者：',\n  semaphoreUserList: 'semaphore user list',\n  youCanChangePasswordOfExistingUser: '您可以更改現有使用者的密碼：',\n  semaphoreUserChangebyloginLoginUser123Password: 'semaphore user change-by-login --login user123 --password {makePasswordExample}',\n  orCreateNewAdminUser: '或建立新的管理員使用者：',\n  close2: '關閉',\n  semaphore: 'Semaphore',\n  dontHaveAccountOrCantSignIn: '沒有帳號或無法登入？',\n  password2: '密碼',\n  cancel: '取消',\n  noViews: '沒有檢視',\n  addView: '新增檢視',\n  editEnvironment: '編輯變數群組',\n  deleteEnvironment: '刪除變數群組',\n  newEnvironment: '新群組',\n  environmentName: '群組名稱',\n  dockerImage: '執行器 Docker 映像檔（可選）',\n  extraVariables: '額外變數',\n  enterExtraVariablesJson: '輸入額外變數 JSON...',\n  environmentVariables: '環境變數',\n  enterEnvJson: '輸入環境 JSON...',\n  environmentAndExtraVariablesMustBeValidJsonExample: '環境和額外變數必須是有效的 JSON。範例：',\n  dashboard2: '儀表板',\n  ansibleSemaphore: 'Semaphore UI',\n  wereSorryButHtmlwebpackpluginoptionstitleDoesntWor: '很抱歉，<%= htmlWebpackPlugin.options.title %> 需要啟用 JavaScript 才能正常運作。請啟用後再繼續。',\n  deleteInventory: '刪除清單',\n  newInventory: '新清單',\n  name: '名稱',\n  userCredentials: '使用者憑證',\n  sudoCredentialsOptional: 'Sudo 憑證（可選）',\n  type: '類型',\n  pathToInventoryFile: '清單檔案路徑',\n  enterInventory: '輸入清單...',\n  staticInventoryExample: '靜態清單範例：',\n  staticYamlInventoryExample: '靜態 YAML 清單範例：',\n  keyName: '金鑰名稱',\n  loginOptional: '登入（可選）',\n  usernameOptional: '使用者名稱（可選）',\n  privateKey: '私鑰',\n  override: '覆蓋',\n  useThisTypeOfKeyForHttpsRepositoriesAndForPlaybook: '適用於 HTTPS 儲存庫及使用非 SSH 連線的 Playbook。',\n  deleteKey: '刪除金鑰',\n  newKey: '新金鑰',\n  create: '建立',\n  newTask: '新任務',\n  cantDeleteThe: '無法刪除 {objectTitle}',\n  theCantBeDeletedBecauseItUsedByTheResourcesBelow: '{objectTitle} 無法刪除，因為以下資源正在使用它',\n  projectName: '專案名稱',\n  allowAlertsForThisProject: '啟用此專案的警報',\n  telegramChatIdOptional: 'Telegram 聊天 ID（可選）',\n  maxNumberOfParallelTasksOptional: '最大平行任務數（可選）',\n  deleteRepository: '刪除儲存庫',\n  newRepository: '新儲存庫',\n  urlOrPath: 'URL 或路徑',\n  absPath: '絕對路徑',\n  branch: '分支',\n  accessKey: '存取金鑰',\n  credentialsToAccessToTheGitRepositoryItShouldBe: '用於存取 Git 儲存庫的憑證，應為：',\n  ifYouUseGitOrSshUrl: '如果您使用 Git 或 SSH URL。',\n  ifYouUseHttpsOrFileUrl: '如果您使用 HTTPS 或檔案 URL。',\n  none: '無',\n  ssh: 'SSH',\n  deleteProject: '刪除專案',\n  save: '儲存',\n  deleteProject2: '刪除專案',\n  onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer: '刪除專案後將無法復原，請審慎操作。',\n\n  clear_cache: '清除快取',\n  clear_cache_message: '刪除與此專案相關的所有快取檔案。此操作不可逆。',\n\n  name2: '名稱 *',\n  title: '標題 *',\n  description: '描述',\n  required: '必填',\n  key: '{expr}',\n  surveyVariables: '調查變數',\n  addVariable: '新增變數',\n  vaultName: '保險庫 ID（可選）',\n  vaultNameDefault: '僅允許一個 `default`（空白）名稱',\n  default_value: '預設值',\n  vaultNameUnique: '必須是唯一的',\n  vaultTypePassword: '密碼',\n  vaultTypeScript: '客戶端腳本',\n  vaultScript: '腳本路徑',\n  vaultScriptRequired: '腳本路徑是必填的',\n  vaultScriptClientRequired: '腳本路徑必須以 \\' -client \\' 和副檔名結尾',\n  vaults: '保險庫',\n  vaultAdd: '新增保險庫',\n  vaultRequired: '保險庫密碼是必填的',\n  columns: '欄位',\n  buildVersion: '建置版本',\n  messageOptional: '訊息（可選）',\n  debug: '除錯',\n  dryRun: '模擬執行',\n  diff: '差異',\n  advanced: '進階',\n  hide: '隱藏',\n  pleaseAllowOverridingCliArgumentInTaskTemplateSett: '請在任務範本設定中允許覆寫 CLI 參數',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe: 'CLI 參數（JSON 陣列）。範例： [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  started: '已開始',\n  author: '作者',\n  duration: '持續時間',\n  stop: '停止',\n  forceStop: '強制停止',\n  stopAll: '停止全部',\n  stopAllTasks: '停止所有任務',\n  askStopAllTasks: '您確定要停止所有任務嗎？',\n  forceStopAllTasks: '強制停止所有任務',\n  askForceStopAllTasks: '您確定要強制停止所有任務嗎？',\n  raw_log: '原始日誌',\n\n  confirmTask: '確認',\n  deleteTeamMember: '刪除團隊成員',\n  team2: '團隊',\n  newTeamMember: '新團隊成員',\n  user: '使用者',\n  administrator: '管理員',\n  definesStartVersionOfYourArtifactEachRunIncrements: '定義產出物的起始版本。每次執行都會遞增產出物版本。',\n  forMoreInformationAboutBuildingSeeThe: '有關建置的更多資訊，請參見',\n  taskTemplateReference: '任務範本參考',\n  definesWhatArtifactShouldBeDeployedWhenTheTaskRun: '定義任務執行時要部署的產出物。',\n  forMoreInformationAboutDeployingSeeThe: '有關部署的更多資訊，請參見',\n  taskTemplateReference2: '任務範本參考',\n  definesAutorunSchedule: '定義自動執行排程。',\n  forMoreInformationAboutCronSeeThe: '有關 cron 的更多資訊，請參見',\n  cronExpressionFormatReference: 'Cron 表達式格式參考',\n  startVersion: '起始版本',\n  example000: '範例： 0.0.0',\n  buildTemplate: '建置範本',\n  autorun: '自動執行',\n  playbookFilename: '劇本檔案路徑 *',\n  exampleSiteyml: '範例： deploy/site.yml',\n  inventory2: '清單 *',\n  repository: '儲存庫',\n  environment3: '變數群組 *',\n  vaultPassword: '保險庫密碼',\n  vaultPassword2: '保險庫密碼',\n  view: '檢視',\n  cron: 'Cron',\n  iWantToRunATaskByTheCronOnlyForForNewCommitsOfSome: '偵測到新的 Git 提交時自動執行任務',\n  repository2: '儲存庫',\n  cronChecksNewCommitBeforeRun: 'Cron 會在執行前檢查新提交',\n  readThe: '閱讀',\n  toLearnMoreAboutCron: '以了解有關 Cron 的更多資訊。',\n  suppressSuccessAlerts: '隱藏成功通知',\n  cliArgsJsonArrayExampleIMyinventoryshPrivatekeythe2: 'CLI 參數（JSON 陣列）。範例： [ \"-i\", \"@myinventory.sh\", \"--private-key=/there/id_rsa\", \"-vvvv\" ]',\n  allowCliArgsInTask: 'CLI 參數',\n  docs: '文件',\n  editViews: '編輯檢視',\n  newTemplate: '新範本',\n  taskTemplates2: '任務範本',\n  all: '所有',\n  notLaunched: '未啟動',\n  by: '由 {user_name}',\n  editTemplate: '編輯範本',\n  newTemplate2: '新範本',\n  deleteTemplate: '刪除範本',\n  playbook: '劇本',\n  email: '電子郵件',\n  adminUser: '管理員使用者',\n  sendAlerts: '發送警報',\n  deleteUser: '刪除使用者',\n  newUser: '新使用者',\n  re: '重新 {getActionButtonTitle}',\n  teamMember: '{expr} 團隊成員',\n  taskId: '任務 ID',\n  version: '版本',\n  status: '狀態',\n  start: '開始',\n  actions: '操作',\n  alert: '警報',\n  admin: '管理員',\n  role: '角色',\n  external: '外部',\n  time: '時間',\n  path: '路徑',\n  gitUrl: 'Git URL',\n  sshKey: 'SSH 金鑰',\n  lastTask: '上次任務',\n  task2: '任務',\n  build: '建置',\n  deploy: '部署',\n  run: '執行',\n  add: '新增',\n  password_required: '密碼是必填的',\n  name_required: '名稱是必填的',\n  user_credentials_required: '使用者憑證是必填的',\n  type_required: '類型是必填的',\n  path_required: '清單檔案路徑是必填的',\n  private_key_required: '私鑰是必填的',\n  project_name_required: '專案名稱是必填的',\n  repository_required: '儲存庫是必填的',\n  branch_required: '分支是必填的',\n  key_required: '金鑰是必填的',\n  user_required: '使用者是必填的',\n  build_version_required: '建置版本是必填的',\n  title_required: '標題是必填的',\n  isRequired: '是必填的',\n  mustBeInteger: '必須是整數',\n  mustBe0OrGreater: '必須大於或等於 0',\n  start_version_required: '起始版本是必填的',\n  playbook_filename_required: '劇本檔案名稱是必填的',\n  inventory_required: '清單是必填的',\n  environment_required: '環境是必填的',\n  email_required: '電子郵件是必填的',\n  build_template_required: '建置範本是必填的',\n  Task: '任務',\n  Build: '建置',\n  Deploy: '部署',\n  Run: '執行',\n  ReBuild: '重建',\n  ReDeploy: '重新部署',\n  ReRun: '重新執行',\n  CreateDemoProject: '建立示範專案',\n  LeaveProject: '離開專案',\n  integration: '整合',\n  integrations: '整合',\n  NewIntegration: '新整合',\n  EditIntegration: '編輯整合',\n  DeleteIntegration: '刪除整合',\n  DeleteIntegrationMsg: '您確定要刪除這個整合嗎？',\n  AddAlias: '新增別名',\n  LoadAlias: '正在載入別名...',\n  globalAlias: '使用專案別名',\n  matcher: '比對器',\n  matchType: '比對類型',\n  newMatcher: '新比對器',\n  matchMethod: '比較方法',\n  matchBodyDataType: '主體資料類型',\n  extractValue: '擷取值',\n  newExtractedValue: '新擷取值',\n  extractedValueSource: '值來源',\n  matchKey: '鍵',\n  matchValue: '值',\n  matchOn: '比對於',\n  runners: '執行器',\n  newRunner: '新執行器',\n  enabled: '已啟用',\n  scheduleNextRun: '下一次執行',\n  maxNumberOfParallelTasks: '最大平行任務數',\n  runnerUsage: '使用：',\n  runnerDockerCommand: 'Docker：',\n  runnerToken: 'Token：',\n  editRunner: '編輯執行器',\n  deleteRunner: '刪除執行器',\n  newRunnerToken: '新執行器',\n  askDeleteRunner: '您確定要刪除執行器 {runner} 嗎？',\n  roles_only_enterprise: '角色功能僅在 <b>Enterprise</b> 版本中可用。',\n  project_runners_only_pro: '專案級執行器僅供 <b>PRO</b> 使用者使用。',\n  secret_storage_only_pro: '密鑰儲存區僅供 <b>PRO</b> 使用者使用。',\n  foss_runners_limited: '開源版本功能有限，完整功能請使用 <b>PRO</b> 版本。',\n  learn_more_about_pro: '了解更多',\n  upgrade_to_pro: '升級',\n  contact_admin_to_upgrade: '請聯絡管理員以啟用 PRO 功能。',\n  contact_admin_to_upgrade_enterprise: '請聯絡管理員以啟用 Enterprise 功能。',\n\n  projectRestoreResult: '專案還原結果',\n  projectWithNameRestored: '專案 {projectName} 已成功還原。',\n  pleaseUpdateAccessKeys: '請在執行任務前先更新。',\n  emptyKeysRestored: '已新增 {emptyKeys} 個空金鑰。',\n  template: '範本',\n  aliasUrlCopied: '別名 URL 已複製到剪貼簿。',\n  yes: '是',\n  activeTasks: '進行中的任務',\n  taskLocation: '位置',\n  empty: '空',\n  noValues: '沒有值',\n  addArg: '新增參數',\n\n  status_success: '成功',\n  status_failed: '失敗',\n  status_stopped: '已停止',\n\n  api_tokens: 'API Token',\n\n  // Terraform/OpenTofu/Terragrunt\n  auto_approve: '自動核准',\n  auto_destroy: '允許銷毀',\n  terraform_override_backend: '覆寫後端設定',\n  terraform_backend_filename: '後端檔案名稱（預設：backend.tf）',\n  terraform_invalid_backend_filename: '無效的後端檔案名稱',\n\n  // Ansible\n  tag: '標籤',\n  tag_required: '標籤是必填的',\n  allowInventoryInTask: '清單',\n  allowLimitInTask: '限制',\n  addLimit: '新增限制',\n  allowDebug: '除錯',\n  addTag: '新增標籤',\n  skipTags: '跳過標籤',\n  addSkippedTag: '新增跳過的標籤',\n  tags: '標籤',\n  limit: '限制',\n\n  runner_tag: '執行器標籤',\n  allow_parallel_tasks: '允許平行任務',\n  task_prompts: '提示',\n  template_advanced: '進階選項',\n  template_app_options: '{app} 選項',\n  template_app_prompts: '{app} 提示',\n  general_settings: '一般',\n  danger_zone_settings: '危險區域',\n  project_stats: '統計',\n  allow_override_branch: '分支',\n  template_common_options: '通用選項',\n\n  template_tasks: '任務',\n  template_details: '詳細資訊',\n  template_tf_workspaces: '工作區',\n\n  // Role-related translations\n  slug: 'Slug',\n  slug_required: 'Slug 是必填的',\n  slugHint: '唯一識別碼（僅限小寫英數字、底線及連字號）',\n  invalidSlugFormat: 'Slug 僅允許小寫英數字、底線及連字號',\n  permissions: '權限',\n  canRunProjectTasks: '可執行專案任務',\n  canUpdateProject: '可更新專案',\n  canManageProjectResources: '可管理專案資源',\n  canManageProjectUsers: '可管理專案使用者',\n  newRole: '新角色',\n  editRole: '編輯角色',\n  deleteRole: '刪除角色',\n  askDeleteRole: '您確定要刪除這個角色嗎？',\n  Roles: '角色',\n  role_required: '角色是必填的',\n\n  templatePermission: '範本權限',\n};\n"
  },
  {
    "path": "web/src/lib/FakeWebSocket.js",
    "content": "/**\n * A fake WebSocket that mimics the WebSocket interface but does nothing.\n * Used when there's no active user session to prevent console errors.\n */\nclass FakeWebSocket {\n  constructor() {\n    this.readyState = WebSocket.OPEN;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  close() {\n    // Do nothing\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  send() {\n    // Do nothing\n  }\n}\n\nexport default FakeWebSocket;\n"
  },
  {
    "path": "web/src/lib/Listenable.js",
    "content": "export default class Listenable {\n  constructor() {\n    this.listeners = {};\n  }\n\n  addListener(callback) {\n    // eslint-disable-next-line symbol-description\n    const id = Symbol();\n    this.listeners[id] = callback;\n    return id;\n  }\n\n  removeListener(id) {\n    if (this.listeners[id] == null) {\n      return false;\n    }\n    delete this.listeners[id];\n    return true;\n  }\n\n  callListeners(data) {\n    Object.getOwnPropertySymbols(this.listeners).forEach((id) => {\n      const listener = this.listeners[id];\n      listener(data);\n    });\n  }\n\n  hasListeners() {\n    return Object.keys(this.listeners).length > 0;\n  }\n}\n"
  },
  {
    "path": "web/src/lib/PubSub.js",
    "content": "import Listenable from '@/lib/Listenable';\n\nexport default class PubSub {\n  constructor() {\n    this.topics = {};\n  }\n\n  subscribe(topic, callback) {\n    if (this.topics[topic] == null) {\n      this.topics[topic] = new Listenable();\n    }\n    return this.topics[topic].addListener(callback);\n  }\n\n  unsubscribe(id) {\n    // eslint-disable-next-line no-restricted-syntax\n    for (const topic in this.topics) {\n      if (this.topics[topic].removeListener(id)) {\n        break;\n      }\n    }\n  }\n\n  publish(topic, data) {\n    if (!this.topics[topic]) {\n      return;\n    }\n    this.topics[topic].callListeners(data);\n  }\n}\n"
  },
  {
    "path": "web/src/lib/Socket.js",
    "content": "import Listenable from '@/lib/Listenable';\nimport FakeWebSocket from './FakeWebSocket';\n\nexport default class Socket extends Listenable {\n  constructor(websocketCreator) {\n    super();\n    this.websocketCreator = websocketCreator;\n    this.sessionActive = false;\n    this.wantStart = false;\n  }\n\n  /**\n   * Sets whether the user session is active.\n   * If session becomes active and start() was previously called, creates real WebSocket.\n   * If session becomes inactive, stops real WebSocket and switches to fake one.\n   * @param {boolean} isActive - Whether the user session is active\n   */\n  setSessionActive(isActive) {\n    const wasActive = this.sessionActive;\n    this.sessionActive = isActive;\n\n    if (isActive && !wasActive && this.wantStart) {\n      // Session became active and we wanted to start - create real socket\n      this.startRealSocket();\n    } else if (!isActive && wasActive && this.ws) {\n      // Session became inactive - stop real socket\n      this.stop();\n    }\n  }\n\n  /**\n   * Internal method to start a real WebSocket connection.\n   * Only called when session is active.\n   */\n  startRealSocket() {\n    if (this.ws != null) {\n      return;\n    }\n    this.ws = this.websocketCreator();\n    this.ws.onclose = () => {\n      if (!this.isRunning()) {\n        return;\n      }\n      this.ws = null;\n      setTimeout(() => {\n        if (this.sessionActive) {\n          this.startRealSocket();\n        }\n      }, 2000);\n    };\n    this.ws.onmessage = ({ data }) => {\n      this.callListeners(JSON.parse(data));\n    };\n  }\n\n  start() {\n    this.wantStart = true;\n\n    if (this.ws != null) {\n      return; // Already running (real or fake)\n    }\n\n    if (this.sessionActive) {\n      // Session is active, create real WebSocket\n      this.startRealSocket();\n    } else {\n      // No session, create fake WebSocket to avoid errors\n      this.ws = new FakeWebSocket();\n    }\n  }\n\n  isRunning() {\n    return this.ws != null;\n  }\n\n  stop() {\n    this.wantStart = false;\n    if (!this.ws) {\n      return;\n    }\n    this.ws.close();\n    delete this.ws;\n  }\n}\n"
  },
  {
    "path": "web/src/lib/api.js",
    "content": "import axios from 'axios';\n\nexport async function loadProjectResources(name) {\n  return (await axios({\n    method: 'get',\n    url: `/api/project/${this.projectId}/${name}`,\n    responseType: 'json',\n  })).data;\n}\n\nexport async function test() {\n  return null;\n}\n"
  },
  {
    "path": "web/src/lib/constants.js",
    "content": "export const TEMPLATE_TYPE_ICONS = {\n  '': 'mdi-cog',\n  build: 'mdi-wrench',\n  deploy: 'mdi-arrow-up-bold-box',\n};\n\nexport const TEMPLATE_TYPE_TITLES = {\n  undefined: 'Task',\n  '': 'Task',\n  build: 'Build',\n  deploy: 'Deploy',\n};\n\nexport const TEMPLATE_TYPE_ACTION_TITLES = {\n  undefined: 'Run',\n  '': 'Run',\n  build: 'Build',\n  deploy: 'Deploy',\n};\n\nexport const USER_PERMISSIONS = {\n  runProjectTasks: 1,\n  updateProject: 2,\n  manageProjectResources: 4,\n  manageProjectUsers: 8,\n};\n\nexport const USER_ROLES = [{\n  slug: 'owner',\n  name: 'Owner',\n}, {\n  slug: 'manager',\n  name: 'Manager',\n}, {\n  slug: 'task_runner',\n  name: 'Task Runner',\n}, {\n  slug: 'guest',\n  name: 'Guest',\n}];\n\nexport const MATCHER_TYPE_TITLES = {\n  '': 'Matcher',\n  body: 'Body',\n  header: 'Header',\n};\n\nexport const MATCHER_TYPE_ICONS = {\n  '': 'Matcher',\n  body: 'mdi-page-layout-body',\n  header: 'mdi-web',\n};\n\nexport const EXTRACT_VALUE_TYPE_TITLES = {\n  '': 'ExtractValue',\n  body: 'Body',\n  header: 'Header',\n};\n\nexport const EXTRACT_VALUE_TYPE_ICONS = {\n  '': 'ExtractValue',\n  body: 'mdi-page-layout-body',\n  header: 'mdi-web',\n};\n\nexport const EXTRACT_VALUE_BODY_DATA_TYPE_TITLES = {\n  '': 'BodyDataType',\n  json: 'JSON',\n  str: 'String',\n};\n\nexport const EXTRACT_VALUE_BODY_DATA_TYPE_ICONS = {\n  '': 'BodyDataType',\n  json: 'mdi-code-json',\n  str: 'mdi-text',\n};\n\nexport const APP_ICONS = {\n  ansible: {\n    icon: 'mdi-ansible',\n    color: 'black',\n    darkColor: 'white',\n  },\n  terraform: {\n    icon: 'mdi-terraform',\n    color: '#7b42bc',\n    darkColor: '#7b42bc',\n  },\n  tofu: {\n    icon: '$vuetify.icons.tofu',\n    color: 'black',\n    darkColor: 'white',\n  },\n  terragrunt: {\n    icon: '$vuetify.icons.terragrunt',\n    color: '#4b3b7a',\n    darkColor: '#4b3b7a',\n  },\n  pulumi: {\n    icon: '$vuetify.icons.pulumi',\n    color: 'black',\n    darkColor: 'white',\n  },\n  bash: {\n    icon: 'mdi-bash',\n    color: 'black',\n    darkColor: 'white',\n  },\n  python: {\n    icon: 'mdi-language-python',\n  },\n  powershell: {\n    icon: 'mdi-powershell',\n  },\n};\n\nexport const APP_SHORT_TITLE = {\n  ansible: 'Ansible',\n  terraform: 'Terraform',\n  tofu: 'OpenTofu',\n  terragrunt: 'Terragrunt',\n  bash: 'Bash',\n  pulumi: 'Pulumi',\n  python: 'Python',\n  powershell: 'PowerShell',\n};\n\nexport const APP_TITLE = {\n  ansible: 'Ansible Playbook',\n  terraform: 'Terraform Code',\n  tofu: 'OpenTofu Code',\n  terragrunt: 'Terragrunt Code',\n  bash: 'Bash Script',\n  pulumi: 'Pulumi Code',\n  python: 'Python Script',\n  powershell: 'PowerShell Script',\n};\n\nexport const APP_INVENTORY_TITLE = {\n  ansible: 'Ansible Inventory',\n  terraform: 'Terraform Workspace',\n  tofu: 'OpenTofu Workspace',\n  terragrunt: 'Terragrunt Workspace',\n};\n\nexport const APP_INVENTORY_TYPES = {\n  ansible: ['static', 'file', 'static-yaml'],\n  terraform: ['terraform-workspace'],\n  tofu: ['tofu-workspace'],\n  terragrunt: ['terragrunt-workspace'],\n};\n\nexport const DEFAULT_APPS = Object.keys(APP_ICONS);\n\nconst BASE_FIELDS = {\n  playbook: {\n    label: 'playbookFilename',\n  },\n  inventory: {\n    label: 'inventory2',\n  },\n  repository: {\n    label: 'repository',\n  },\n  environment: {\n    label: 'environment3',\n  },\n  git_branch: {\n    label: 'branch',\n  },\n  allow_override_branch: {\n    label: 'allow_override_branch',\n  },\n};\n\nexport const ANSIBLE_FIELDS = {\n  ...BASE_FIELDS,\n  vault: {\n    label: 'vaultPassword2',\n  },\n  limit: {\n    label: 'limit',\n  },\n  allow_override_limit: {\n    label: 'allowLimitInTask',\n  },\n  allow_debug: {\n    label: 'allowDebug',\n  },\n  tags: {\n    label: 'tags',\n  },\n  skip_tags: {\n    label: 'skipTags',\n  },\n  allow_override_tags: {\n    label: 'tags',\n  },\n  allow_override_skip_tags: {\n    label: 'skipTags',\n  },\n  allow_override_inventory: {\n    label: 'allowInventoryInTask',\n  },\n};\n\nexport const TERRAFORM_FIELDS = {\n  ...BASE_FIELDS,\n  playbook: {\n    label: 'Subdirectory path (Optional)',\n    optional: true,\n  },\n  inventory: {\n    label: 'Workspace (Optional)',\n  },\n  auto_approve: {\n    label: 'auto_approve',\n  },\n  allow_auto_approve: {\n    label: 'auto_approve',\n  },\n  allow_destroy: {\n    label: 'auto_destroy',\n  },\n  allow_override_inventory: {\n    label: 'allowInventoryInTask',\n  },\n  override_backend: {\n    label: 'terraform_override_backend',\n  },\n  backend_filename: {\n    label: 'terraform_backend_filename',\n  },\n};\n\nexport const UNKNOWN_APP_FIELDS = {\n  ...BASE_FIELDS,\n  playbook: {\n    label: 'Script Filename *',\n  },\n  inventory: undefined,\n};\n\nexport const APP_FIELDS = {\n  '': ANSIBLE_FIELDS,\n  ansible: ANSIBLE_FIELDS,\n  terraform: TERRAFORM_FIELDS,\n  tofu: TERRAFORM_FIELDS,\n  terragrunt: TERRAFORM_FIELDS,\n};\n\nexport const ROLE_PERMISSIONS = {\n  default: [{\n    permission: 1,\n    label: 'canRunProjectTasks',\n    color: 'blue',\n    textColor: 'white',\n  }, {\n    permission: 2,\n    label: 'canUpdateProject',\n    color: 'green',\n    textColor: 'white',\n  }, {\n    permission: 4,\n    label: 'canManageProjectResources',\n    color: 'orange',\n    textColor: 'white',\n  }, {\n    permission: 8,\n    label: 'canManageProjectUsers',\n    color: 'red',\n    textColor: 'white',\n  }],\n  template: [{\n    permission: 1,\n    label: 'Can run tasks',\n    color: 'blue',\n    textColor: 'white',\n  }, {\n    permission: 4,\n    label: 'Can update the template',\n    color: 'orange',\n    textColor: 'white',\n  }],\n};\n"
  },
  {
    "path": "web/src/lib/copyToClipboard.js",
    "content": "import EventBus from '@/event-bus';\n\nexport default async function copyToClipboard(content, message) {\n  try {\n    const el = document.createElement('textarea');\n    el.value = this.link_url;\n    el.setAttribute('readonly', '');\n    el.style.position = 'absolute';\n    el.style.left = '-9999px';\n    document.body.appendChild(el);\n    const selected = document.getSelection().rangeCount > 0\n      ? document.getSelection().getRangeAt(0) : false;\n    el.select();\n    document.execCommand('copy');\n    document.body.removeChild(el);\n    if (selected) {\n      document.getSelection().removeAllRanges();\n      document.getSelection().addRange(selected);\n    }\n\n    const successful = document.execCommand('copy');\n    // document.body.removeChild(textArea);\n\n    if (!successful) {\n      throw new Error('Fallback copy failed');\n    }\n\n    EventBus.$emit('i-snackbar', {\n      color: 'success',\n      text: message,\n    });\n  } catch (e) {\n    EventBus.$emit('i-snackbar', {\n      color: 'error',\n      text: `Can't copy to clipboard: ${e.message}`,\n    });\n  }\n}\n"
  },
  {
    "path": "web/src/lib/delay.js",
    "content": "export default function delay(milliseconds = 100) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, milliseconds);\n  });\n}\n"
  },
  {
    "path": "web/src/lib/error.js",
    "content": "// eslint-disable-next-line import/prefer-default-export\nexport function getErrorMessage(err) {\n  if (err.response) {\n    if (err.response.data && err.response.data.error) {\n      return err.response.data.error;\n    }\n\n    if (err.message && !err.message.startsWith('Request failed with status code ')) {\n      return err.message;\n    }\n\n    switch (err.response.status) {\n      case 401:\n        return `${err.response.status} ${err.response.statusText}`;\n      default:\n        return err.message;\n    }\n  }\n\n  return err.message;\n}\n"
  },
  {
    "path": "web/src/main.js",
    "content": "import Vue from 'vue';\nimport axios from 'axios';\nimport { AnsiUp } from 'ansi_up';\nimport { Line, Bar } from 'vue-chartjs/legacy';\n\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport durationPlugin from 'dayjs/plugin/duration';\n\nimport App from './App.vue';\nimport router from './router';\nimport vuetify from './plugins/vuetify';\nimport './assets/scss/main.scss';\nimport i18n from './plugins/i18';\n\nconst convert = new AnsiUp();\nconvert.ansi_colors = [\n  [\n    { rgb: [85, 85, 85], class_name: 'ansi-black' },\n    { rgb: [170, 0, 0], class_name: 'ansi-red' },\n    { rgb: [0, 170, 0], class_name: 'ansi-green' },\n    { rgb: [255, 204, 102], class_name: 'ansi-yellow' },\n    { rgb: [33, 150, 243], class_name: 'ansi-blue' },\n    { rgb: [170, 0, 170], class_name: 'ansi-magenta' },\n    { rgb: [0, 170, 170], class_name: 'ansi-cyan' },\n    { rgb: [170, 170, 170], class_name: 'ansi-white' },\n  ],\n  [\n    { rgb: [85, 85, 85], class_name: 'ansi-bright-black' },\n    { rgb: [255, 85, 85], class_name: 'ansi-bright-red' },\n    { rgb: [85, 255, 85], class_name: 'ansi-bright-green' },\n    { rgb: [255, 255, 85], class_name: 'ansi-bright-yellow' },\n    { rgb: [85, 85, 255], class_name: 'ansi-bright-blue' },\n    { rgb: [255, 85, 255], class_name: 'ansi-bright-magenta' },\n    { rgb: [85, 255, 255], class_name: 'ansi-bright-cyan' },\n    { rgb: [255, 255, 255], class_name: 'ansi-bright-white' },\n  ],\n];\n\naxios.defaults.baseURL = document.baseURI;\nVue.config.productionTip = false;\n\n//\n// Dates\n//\n\n// install needed plugins:\n// npm install dayjs dayjs-plugin-relativeTime dayjs-plugin-localizedFormat dayjs-plugin-duration\n\n// extend Day.js\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\ndayjs.extend(durationPlugin);\n\nVue.filter('formatDate2', (value) => (value\n  ? dayjs(String(value)).format('LL')\n  : '—'));\n\n// formatDate: “from now” if today, else localized date+time\nVue.filter('formatDate', (value) => {\n  if (!value) return '—';\n  const date = dayjs(value);\n  const now = dayjs();\n\n  if (now.isSame(date, 'day')) {\n    return `${date.fromNow()} (${date.format('HH:mm')})`;\n  }\n  return date.format('L HH:mm');\n});\n\n// formatTime: localized time with seconds\nVue.filter('formatTime', (value) => (value ? dayjs(String(value)).format('LTS') : '—'));\n\n// formatLog: unchanged (ANSI → HTML)\nVue.filter('formatLog', (value) => (value ? convert.ansi_to_html(String(value)) : value));\n\n// formatMilliseconds: humanize a duration or a start/end pair\nVue.filter('formatMilliseconds', (value) => {\n  if (value == null || value === '') return '—';\n\n  let ms;\n\n  if (typeof value === 'string') {\n    ms = parseInt(value, 10);\n  } else if (typeof value === 'number') {\n    ms = value;\n  } else if (Array.isArray(value)) {\n    if (value.length !== 2) {\n      throw new Error('formatMilliseconds: invalid value format');\n    }\n    const [startRaw, endRaw] = value;\n    if (startRaw == null || startRaw === '') return '—';\n    const start = dayjs(startRaw);\n    const end = endRaw == null || endRaw === '' ? dayjs() : dayjs(endRaw);\n    ms = end.valueOf() - start.valueOf();\n  } else {\n    throw new Error('formatMilliseconds: unsupported value type');\n  }\n\n  return dayjs.duration(ms).humanize();\n});\n\n//\n// -------------\n//\n\nVue.component('LineChartGenerator', Line);\nVue.component('BarChartGenerator', Bar);\n\nnew Vue({\n  router,\n  vuetify,\n  i18n,\n  render: (h) => h(App),\n}).$mount('#app');\n"
  },
  {
    "path": "web/src/plugins/i18.js",
    "content": "import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport { messages } from '../lang';\n\nVue.use(VueI18n);\n\nlet locale = localStorage.getItem('lang');\n\nif (!locale) {\n  locale = navigator.language.replace('-', '_').toLocaleLowerCase();\n}\n\nexport default new VueI18n({\n  fallbackLocale: 'en',\n  locale,\n  messages,\n  silentFallbackWarn: true,\n});\n"
  },
  {
    "path": "web/src/plugins/vuetify.js",
    "content": "import Vue from 'vue';\nimport Vuetify from 'vuetify/lib';\nimport OpenTofuIcon from '@/components/OpenTofuIcon.vue';\nimport PulumiIcon from '@/components/PulumiIcon.vue';\nimport TerragruntIcon from '@/components/TerragruntIcon.vue';\nimport HashicorpVaultIcon from '@/components/HashicorpVaultIcon.vue';\nimport DvlsIcon from '../components/DvlsIcon.vue';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n  icons: {\n    values: {\n      tofu: {\n        component: OpenTofuIcon,\n      },\n      pulumi: {\n        component: PulumiIcon,\n      },\n      terragrunt: {\n        component: TerragruntIcon,\n      },\n      hashicorp_vault: {\n        component: HashicorpVaultIcon,\n      },\n      dvls: {\n        component: DvlsIcon,\n      },\n    },\n  },\n});\n"
  },
  {
    "path": "web/src/router/index.js",
    "content": "import Vue from 'vue';\nimport VueRouter from 'vue-router';\nimport RestoreProject from '@/views/project/RestoreProject.vue';\nimport Tasks from '@/views/Tasks.vue';\nimport TaskList from '@/components/TaskList.vue';\nimport TemplateDetails from '@/views/project/template/TemplateDetails.vue';\nimport TemplateTerraformState from '@/views/project/template/TemplateTerraformState.vue';\nimport Invites from '@/views/project/Invites.vue';\nimport TemplatePerms from '@/views/project/template/TemplatePerms.vue';\nimport Roles from '@/views/Roles.vue';\nimport Schedule from '../views/project/Schedule.vue';\nimport History from '../views/project/History.vue';\nimport Activity from '../views/project/Activity.vue';\nimport Settings from '../views/project/Settings.vue';\nimport Templates from '../views/project/Templates.vue';\nimport TemplateView from '../views/project/TemplateView.vue';\nimport Environment from '../views/project/Environment.vue';\nimport Inventory from '../views/project/Inventory.vue';\nimport Keys from '../views/project/Keys.vue';\nimport Repositories from '../views/project/Repositories.vue';\nimport Team from '../views/project/Team.vue';\nimport Users from '../views/Users.vue';\nimport Auth from '../views/Auth.vue';\nimport New from '../views/project/New.vue';\nimport Integrations from '../views/project/Integrations.vue';\nimport IntegrationExtractor from '../views/project/IntegrationExtractor.vue';\nimport Apps from '../views/Apps.vue';\nimport Runners from '../views/Runners.vue';\nimport Stats from '../views/project/Stats.vue';\nimport Tokens from '../views/Tokens.vue';\nimport AcceptInvite from '../views/AcceptInvite.vue';\nimport SecretStorage from '../views/project/SecretStorages.vue';\n\nVue.use(VueRouter);\n\nconst routes = [\n  {\n    path: '/project/new',\n    component: New,\n  },\n  {\n    path: '/project/restore',\n    component: RestoreProject,\n  },\n  {\n    path: '/project/:projectId',\n    redirect: '/project/:projectId/history',\n  },\n  {\n    path: '/project/:projectId/secret_storages',\n    component: SecretStorage,\n  },\n  {\n    path: '/project/:projectId/history',\n    component: History,\n  },\n  {\n    path: '/project/:projectId/stats',\n    component: Stats,\n  },\n  {\n    path: '/project/:projectId/activity',\n    component: Activity,\n  },\n  {\n    path: '/project/:projectId/runners',\n    component: Runners,\n  },\n  {\n    path: '/project/:projectId/schedule',\n    component: Schedule,\n  },\n  {\n    path: '/project/:projectId/settings',\n    component: Settings,\n  },\n  {\n    path: '/project/:projectId/templates',\n    component: Templates,\n  },\n  {\n    path: '/project/:projectId/views/:viewId/templates',\n    component: Templates,\n  },\n  {\n    path: '/project/:projectId/templates/:templateId',\n    redirect: '/project/:projectId/templates/:templateId/tasks',\n    component: TemplateView,\n    children: [{\n      path: 'tasks',\n      component: TaskList,\n    }, {\n      path: 'details',\n      component: TemplateDetails,\n    }, {\n      path: 'perms',\n      component: TemplatePerms,\n    }, {\n      path: 'state',\n      component: TemplateTerraformState,\n    }],\n  },\n  {\n    path: '/project/:projectId/views/:viewId/templates/:templateId',\n    redirect: '/project/:projectId/views/:viewId/templates/:templateId/tasks',\n    component: TemplateView,\n    children: [{\n      path: 'tasks',\n      component: TaskList,\n    }, {\n      path: 'details',\n      component: TemplateDetails,\n    }, {\n      path: 'perms',\n      component: TemplatePerms,\n    }, {\n      path: 'state',\n      component: TemplateTerraformState,\n    }],\n  },\n  {\n    path: '/project/:projectId/environment',\n    component: Environment,\n  },\n  {\n    path: '/project/:projectId/inventory',\n    component: Inventory,\n  },\n  {\n    path: '/project/:projectId/integrations',\n    component: Integrations,\n  },\n  {\n    path: '/project/:projectId/integrations/:integrationId',\n    component: IntegrationExtractor,\n  },\n  {\n    path: '/project/:projectId/repositories',\n    component: Repositories,\n  },\n  {\n    path: '/project/:projectId/keys',\n    component: Keys,\n  },\n  {\n    path: '/project/:projectId/team',\n    component: Team,\n  },\n  {\n    path: '/project/:projectId/invites',\n    component: Invites,\n  },\n  {\n    path: '/project/:projectId/roles',\n    component: Roles,\n  },\n  {\n    path: '/auth/login',\n    component: Auth,\n  },\n  {\n    path: '/users',\n    component: Users,\n  },\n  {\n    path: '/roles',\n    component: Roles,\n  },\n  {\n    path: '/runners',\n    component: Runners,\n  },\n  {\n    path: '/tasks',\n    component: Tasks,\n  },\n  {\n    path: '/apps',\n    component: Apps,\n  },\n  {\n    path: '/tokens',\n    component: Tokens,\n  },\n  {\n    path: '/accept-invite/:token',\n    component: AcceptInvite,\n    props: true,\n  },\n];\n\nconst router = new VueRouter({\n  mode: 'history',\n  routes,\n});\n\nexport default router;\n"
  },
  {
    "path": "web/src/scss/variables.scss",
    "content": "$material-dark: (\n        'background': #1E1E1E,\n        'app-bar': transparent,\n        'toolbar': transparent,\n);\n\n$material-light: (\n        'app-bar': transparent,\n        'toolbar': transparent,\n);\n\n$tabs-bar-background-color: 'toolbar';\n\n:root {\n  --breakpoint-sm: 600px;\n  --breakpoint-md: 960px;\n  --breakpoint-lg: 1264px;\n  --breakpoint-xl: 1904px;\n  --nav-drawer-width: 260px;\n}"
  },
  {
    "path": "web/src/socket.js",
    "content": "import Socket from '@/lib/Socket';\n\nconst socket = new Socket(() => {\n  const baseURI = `ws${document.baseURI.substr(4)}`;\n  return new WebSocket(`${baseURI}api/ws`);\n});\n\nexport default socket;\n"
  },
  {
    "path": "web/src/views/AcceptInvite.vue",
    "content": "<template>\n  <v-container\n    fluid\n    fill-height\n    align-center\n    justify-center\n    class=\"pa-0\"\n  >\n    <v-card\n      class=\"pa-6\"\n      style=\"\n        max-width: 520px;\n        border-radius: 12px;\n        background-color: var(--highlighted-card-bg-color);\n      \"\n    >\n      <v-card-title>\n        Accept Invitation\n        <v-spacer />\n      </v-card-title>\n      <v-card-text class=\"pb-0\">\n        <div v-if=\"state === 'processing'\" class=\"text-center pt-6 pb-0\">\n          <v-progress-circular indeterminate color=\"primary\" />\n          <div class=\"mt-6\">Accepting invitation...</div>\n        </div>\n\n        <v-alert v-else-if=\"state === 'success'\" type=\"success\" text>\n          Invitation accepted. You now have access to the project.\n        </v-alert>\n\n        <v-alert v-else type=\"error\" text>\n          {{ errorMessage }}\n        </v-alert>\n      </v-card-text>\n\n      <v-card-actions>\n        <v-spacer />\n\n        <v-btn v-if=\"state === 'success'\" color=\"primary\" @click=\"goToProject\">\n          Go to project\n        </v-btn>\n\n        <div v-else-if=\"state === 'error'\" >\n          <v-btn text color=\"primary\" @click=\"goToDashboard\" :disabled=\"!token\">\n            Go to dashboard\n          </v-btn>\n          <v-btn text color=\"primary\" @click=\"retry\" :disabled=\"!token\">\n            Try again\n          </v-btn>\n        </div>\n      </v-card-actions>\n    </v-card>\n  </v-container>\n</template>\n\n<script>\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\nimport delay from '@/lib/delay';\n\nexport default {\n  name: 'AcceptInvite',\n  props: {\n    token: {\n      type: String,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      state: 'processing',\n      errorMessage: null,\n      projectId: null,\n    };\n  },\n  async created() {\n    await this.process();\n  },\n  methods: {\n\n    async process() {\n      this.state = 'processing';\n      this.errorMessage = null;\n\n      await delay(2000);\n\n      try {\n        const res = (await axios({\n          method: 'post',\n          url: '/api/invites/accept',\n          responseType: 'json',\n          data: { token: this.token },\n        })).data;\n        this.projectId = res.project_id;\n        this.state = 'success';\n      } catch (err) {\n        this.state = 'error';\n        this.errorMessage = getErrorMessage(err);\n      }\n    },\n\n    retry() {\n      this.process();\n    },\n\n    goToProject() {\n      // this.$router.push(`/project/${this.projectId}`);\n      let baseURI = document.baseURI;\n      if (baseURI.endsWith('/')) {\n        baseURI = baseURI.slice(0, -1);\n      }\n      document.location = `${baseURI}/project/${this.projectId}`;\n    },\n\n    goToDashboard() {\n      document.location = document.baseURI;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Apps.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null && isAppsLoaded\">\n    <EditDialog\n        v-model=\"editDialog\"\n        save-button-text=\"Save\"\n        :title=\"$t('Edit App')\"\n        @save=\"loadItems()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <AppForm\n            :project-id=\"projectId\"\n            :item-id=\"itemId\"\n            @save=\"onSave\"\n            @error=\"onError\"\n            :need-save=\"needSave\"\n            :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <YesNoDialog\n        :title=\"$t('Delete App')\"\n        :text=\"$t('Do you really want to delete this app?')\"\n        v-model=\"deleteItemDialog\"\n        @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat >\n      <v-btn\n          icon\n          class=\"mr-4\"\n          @click=\"returnToProjects()\"\n      >\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n      <v-toolbar-title>{{ $t('Applications') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n          :disabled=\"!isAdmin\"\n          color=\"primary\"\n          @click=\"editItem('')\"\n      >{{ $t('New App') }}</v-btn>\n    </v-toolbar>\n\n    <v-data-table\n        :headers=\"headers\"\n        :items=\"items\"\n        class=\"mt-4\"\n        :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n      <template v-slot:item.active=\"{ item }\">\n        <v-switch\n            :disabled=\"!isAdmin\"\n            v-model=\"item.active\"\n            inset\n            @change=\"setActive(item.id, item.active)\"\n        ></v-switch>\n      </template>\n\n      <template v-slot:item.title=\"{ item }\">\n        <v-icon\n            class=\"mr-2\"\n            small\n        >\n          {{ getAppIcon(item.id) }}\n        </v-icon>\n\n        {{ getAppTitle(item.id) }}\n      </template>\n\n      <template v-slot:item.id=\"{ item }\">\n        <code>{{ item.id }}</code>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn\n              v-if=\"!isDefaultApp(item.id)\"\n              icon\n              class=\"mr-1\"\n              @click=\"askDeleteItem(item.id)\"\n              :disabled=\"item.id === userId\"\n          >\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn\n              icon\n              class=\"mr-1\"\n              @click=\"editItem(item.id)\"\n          >\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport axios from 'axios';\nimport EventBus from '@/event-bus';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditDialog from '@/components/EditDialog.vue';\nimport PermissionsCheck from '@/components/PermissionsCheck';\nimport AppForm from '../components/AppForm.vue';\nimport { DEFAULT_APPS } from '../lib/constants';\nimport AppsMixin from '../components/AppsMixin';\nimport delay from '../lib/delay';\n\nexport default {\n  mixins: [ItemListPageBase, AppsMixin, PermissionsCheck],\n\n  components: {\n    AppForm,\n    YesNoDialog,\n    EditDialog,\n  },\n\n  methods: {\n    getHeaders() {\n      return [{\n        text: '',\n        value: 'active',\n      }, {\n        text: this.$i18n.t('name'),\n        value: 'title',\n      }, {\n        text: 'ID',\n        value: 'id',\n        width: '100%',\n      }, {\n        text: this.$i18n.t('actions'),\n        value: 'actions',\n        sortable: false,\n      }];\n    },\n\n    async loadAppsDataFromBackend() {\n      while (this.items == null) {\n        // eslint-disable-next-line no-await-in-loop\n        await delay(100);\n      }\n\n      return this.items;\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      return '/api/apps';\n    },\n\n    getSingleItemUrl() {\n      return `/api/apps/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-app';\n    },\n\n    async setActive(appId, active) {\n      await axios({\n        method: 'post',\n        url: `/api/apps/${appId}/active`,\n        responseType: 'json',\n        data: {\n          active,\n        },\n      });\n    },\n\n    isDefaultApp(appId) {\n      return DEFAULT_APPS.includes(appId);\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Auth.vue",
    "content": "<template>\n  <div class=\"auth\">\n    <v-dialog v-model=\"loginHelpDialog\" max-width=\"600\">\n      <v-card>\n        <v-card-title>\n          {{ $t('howToFixSigninIssues') }}\n          <v-spacer></v-spacer>\n          <v-btn icon @click=\"loginHelpDialog = false\">\n            <v-icon>mdi-close</v-icon>\n          </v-btn>\n        </v-card-title>\n        <v-card-text>\n          <p class=\"text-body-1\">\n            {{ $t('firstlyYouNeedAccessToTheServerWhereSemaphoreRunni') }}\n          </p>\n          <p class=\"text-body-1\">\n            {{ $t('executeTheFollowingCommandOnTheServerToSeeExisting') }}\n          </p>\n          <v-alert\n            dense\n            text\n            color=\"info\"\n            style=\"font-family: monospace;\"\n          >\n            {{ $t('semaphoreUserList') }}\n          </v-alert>\n          <p class=\"text-body-1\">\n            {{ $t('youCanChangePasswordOfExistingUser') }}\n          </p>\n          <v-alert\n            dense\n            text\n            color=\"info\"\n            style=\"font-family: monospace;\"\n          >\n            {{\n              $t('semaphoreUserChangebyloginLoginUser123Password', {\n                makePasswordExample:\n                  makePasswordExample()\n              })\n            }}\n          </v-alert>\n          <p class=\"text-body-1\">\n            {{ $t('orCreateNewAdminUser') }}\n          </p>\n          <v-alert\n            dense\n            text\n            color=\"info\"\n            style=\"font-family: monospace;\"\n          >\n            semaphore user add --admin --login user123 --name User123\n            --email user123@example.com --password {{ makePasswordExample() }}\n          </v-alert>\n        </v-card-text>\n        <v-card-actions>\n          <v-spacer/>\n          <v-btn\n            color=\"blue darken-1\"\n            text\n            @click=\"loginHelpDialog = false\"\n          >\n            {{ $t('close2') }}\n          </v-btn>\n        </v-card-actions>\n      </v-card>\n    </v-dialog>\n\n    <v-container\n      fluid\n      fill-height\n      align-center\n      justify-center\n      class=\"pa-0\"\n    >\n      <v-card class=\"px-5 py-5\" style=\"border-radius: 15px;\">\n        <v-card-text>\n          <v-form\n            @submit.prevent\n            ref=\"signInForm\"\n            lazy-validation\n            v-model=\"signInFormValid\"\n            style=\"width: 350px;\"\n          >\n            <v-img\n              width=\"80\"\n              height=\"80\"\n              transition=\"0\"\n              src=\"favicon.png\"\n              style=\"margin: auto;\"\n              class=\"mb-4\"\n            />\n\n            <h2 v-if=\"screen === 'verification'\" class=\"text-center pt-4 pb-6\">\n              Two-step verification\n            </h2>\n\n            <h2 v-else-if=\"screen === 'recovery'\" class=\"text-center pt-4 pb-6\">\n              Account recovery\n            </h2>\n\n            <h2 v-else class=\"text-center pt-4 pb-6\">\n              Enter to your account\n            </h2>\n\n            <v-alert\n              :value=\"signInError != null\"\n              color=\"error\"\n              style=\"margin-bottom: 20px;\"\n            >{{ signInError }}\n            </v-alert>\n\n            <div v-if=\"screen === 'verification'\">\n\n              <div  v-if=\"verificationMethod === 'totp'\" class=\"text-center mb-4\">\n                Open the two-step verification app on your mobile device to\n                get your verification code.\n              </div>\n\n              <div v-else-if=\"isPortal && verificationMethod === 'email'\" class=\"text-center mb-4\">\n                Check your email for the verification code we just sent you.\n              </div>\n\n              <v-otp-input\n                v-model=\"verificationCode\"\n                length=\"6\"\n                @finish=\"verify()\"\n              ></v-otp-input>\n\n              <v-divider class=\"my-6\" />\n\n              <div class=\"text-center\">\n                <a @click=\"signOut()\" class=\"mr-6\">{{ $t('Return to login') }}</a>\n                <a\n                  v-if=\"verificationMethod === 'totp'\n                    && authMethods.totp\n                    && authMethods.totp.allow_recovery\"\n                  @click=\"screen = 'recovery'\"\n                >\n                  {{ $t('Use recovery code') }}\n                </a>\n\n                <v-btn\n                  :width=\"200\"\n                  small\n                  :disabled=\"verificationEmailSending\"\n                  color=\"primary\"\n                  v-if=\"isPortal && verificationMethod === 'email'\"\n                  @click=\"resendEmailVerification()\"\n                >\n                  {{\n                    verificationEmailSending\n                      ? $t('Email sending...')\n                      : $t('Resend code to email')\n                  }}\n                </v-btn>\n              </div>\n            </div>\n\n            <div v-else-if=\"screen === 'recovery'\">\n              <div class=\"text-center mb-2\">\n                Use your recovery code to regain access to your account.\n              </div>\n\n              <v-text-field\n                class=\"mt-6\"\n                outlined\n                v-model=\"recoveryCode\"\n                @keyup.enter.native=\"signIn\"\n                :label=\"$t('Recovery code')\"\n                :rules=\"[v => !!v || $t('recoveryCode_required')]\"\n                required\n              />\n\n              <div>\n                <v-btn\n                  style=\"width: 100%;\"\n                  color=\"primary\"\n                  @click=\"recovery()\"\n                >\n                  Send\n                </v-btn>\n              </div>\n\n              <div class=\"text-center pt-6\">\n                <a @click=\"screen = 'verification'\">{{ $t('Return to verification') }}</a>\n              </div>\n\n            </div>\n\n            <div v-else>\n\n              <div v-if=\"loginWithPassword\">\n                <v-text-field\n                  v-model=\"username\"\n                  v-bind:label='$t(\"username\")'\n                  :rules=\"[v => !!v || $t('username_required')]\"\n                  required\n                  :disabled=\"signInProcess\"\n                  id=\"auth-username\"\n                  data-testid=\"auth-username\"\n                ></v-text-field>\n\n                <v-text-field\n                  v-model=\"password\"\n                  :label=\"$t('password')\"\n                  :rules=\"[v => !!v || $t('password_required')]\"\n                  type=\"password\"\n                  required\n                  :disabled=\"signInProcess\"\n                  @keyup.enter.native=\"signIn\"\n                  style=\"margin-bottom: 20px;\"\n                  id=\"auth-password\"\n                  data-testid=\"auth-password\"\n                ></v-text-field>\n\n                <v-btn\n                  large\n                  color=\"primary\"\n                  @click=\"signIn\"\n                  :disabled=\"signInProcess\"\n                  block\n                  rounded\n                  data-testid=\"auth-signin\"\n                >\n                  {{ $t('signIn') }}\n                </v-btn>\n\n              </div>\n\n              <div v-else-if=\"isPortal\">\n                <v-text-field\n                  v-model=\"email\"\n                  :label=\"$t('Email')\"\n                  :rules=\"[v => !!v || $t('email_required')]\"\n                  type=\"email\"\n                  required\n                  :disabled=\"signInProcess\"\n                  @keyup.enter.native=\"signInWithEmail\"\n                  style=\"margin-bottom: 20px;\"\n                  data-testid=\"auth-password\"\n                  outlined\n                  class=\"mb-0\"\n                ></v-text-field>\n\n                <v-btn\n                  large\n                  color=\"primary\"\n                  @click=\"signInWithEmail\"\n                  :disabled=\"signInProcess\"\n                  block\n                  rounded\n                  data-testid=\"auth-signin-with-eamil\"\n                >\n                  <v-icon\n                    left\n                    dark\n                  >\n                    mdi-email\n                  </v-icon>\n\n                  {{ $t('Continue with Email') }}\n                </v-btn>\n              </div>\n\n              <div\n                class=\"auth__divider\"\n                v-if=\"(loginWithPassword || isPortal) && oidcProviders.length > 0\"\n              >or</div>\n\n              <v-btn\n                large\n                v-for=\"provider in oidcProviders\"\n                :color=\"provider.color || 'secondary'\"\n                dark\n                class=\"mt-3\"\n                @click=\"oidcSignIn(provider.id)\"\n                block\n                :key=\"provider.id\"\n                rounded\n              >\n                <v-icon\n                  left\n                  dark\n                  v-if=\"provider.icon\"\n                >\n                  mdi-{{ provider.icon }}\n                </v-icon>\n\n                {{ provider.name }}\n              </v-btn>\n\n              <div class=\"text-center mt-6\" v-if=\"loginWithPassword && false\">\n                <a @click=\"loginHelpDialog = true\">{{ $t('dontHaveAccountOrCantSignIn') }}</a>\n              </div>\n\n            </div>\n          </v-form>\n        </v-card-text>\n      </v-card>\n    </v-container>\n  </div>\n</template>\n<style lang=\"scss\">\n.auth__divider {\n  margin-top: 15px;\n  margin-bottom: 5px;\n\n  display: flex;\n  &:before, &:after {\n    margin-top: 10px;\n    width: 100%;\n    content: \"\";\n    border-top: 1px solid rgba(128, 128, 128, 0.51);\n  }\n\n  &:before {\n    margin-right: 10px;\n  }\n\n  &:after {\n    margin-left: 10px;\n  }\n}\n.auth {\n  height: 100dvh;\n  background: #80808024;\n}\n.auth {\n  background-image: url(\"../assets/background.svg\");\n  background-color: #005057;\n  background-size: cover;\n}\n</style>\n<script>\nimport axios from 'axios';\nimport { getErrorMessage } from '@/lib/error';\nimport EventBus from '@/event-bus';\n\nexport default {\n  data() {\n    return {\n      signInFormValid: false,\n      signInError: null,\n      signInProcess: false,\n\n      password: null,\n      username: null,\n\n      email: null,\n\n      loginHelpDialog: null,\n\n      oidcProviders: [],\n      loginWithPassword: null,\n      authMethods: {},\n\n      screen: null,\n\n      verificationCode: null,\n      verificationMethod: null,\n      recoveryCode: null,\n      verificationEmailSending: false,\n\n    };\n  },\n\n  async created() {\n    const { status, verificationMethod } = await this.getAuthenticationStatus();\n\n    switch (status) {\n      case 'authenticated':\n        this.redirectAfterLogin();\n        break;\n      case 'unauthenticated':\n        await this.loadLoginData();\n        break;\n      case 'unverified':\n        this.screen = 'verification';\n        this.verificationMethod = verificationMethod;\n        await this.loadLoginData();\n        break;\n      default:\n        throw new Error(`Unknown authentication status: ${status}`);\n    }\n  },\n\n  computed: {\n    isPortal() {\n      return process.env.VUE_APP_BUILD_TYPE === 'pro_portal';\n    },\n  },\n\n  methods: {\n    async resendEmailVerification() {\n      if (this.verificationEmailSending) {\n        return;\n      }\n\n      this.verificationEmailSending = true;\n      try {\n        (await axios({\n          method: 'post',\n          url: '/api/auth/login/email/resend',\n          responseType: 'json',\n        }));\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'Verification email sent successfully.',\n        });\n      } catch (e) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(e),\n        });\n      } finally {\n        this.verificationEmailSending = false;\n      }\n    },\n\n    async loadLoginData() {\n      await axios({\n        method: 'get',\n        url: '/api/auth/login',\n        responseType: 'json',\n      }).then((resp) => {\n        this.oidcProviders = resp.data.oidc_providers;\n        this.loginWithPassword = resp.data.login_with_password;\n        this.authMethods = resp.data.auth_methods || {};\n      });\n    },\n\n    async recovery() {\n      this.signInProcess = true;\n\n      try {\n        await axios({\n          method: 'post',\n          url: '/api/auth/recovery',\n          responseType: 'json',\n          data: {\n            recovery_code: this.recoveryCode,\n          },\n        });\n\n        const { location } = document;\n        document.location = location;\n      } catch (e) {\n        this.signInError = getErrorMessage(e);\n      } finally {\n        this.signInProcess = false;\n      }\n    },\n\n    async signOut() {\n      try {\n        (await axios({\n          method: 'post',\n          url: '/api/auth/logout',\n          responseType: 'json',\n        }));\n\n        const { location } = document;\n        document.location = location;\n      } catch (e) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(e),\n        });\n      }\n    },\n\n    makePasswordExample() {\n      let pwd = '';\n      const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n      const charactersLength = characters.length;\n      for (let i = 0; i < 10; i += 1) {\n        pwd += characters.charAt(Math.floor(Math.random() * charactersLength));\n      }\n      return pwd;\n    },\n\n    async getAuthenticationStatus() {\n      try {\n        await axios({\n          method: 'get',\n          url: '/api/user',\n          responseType: 'json',\n        });\n      } catch (err) {\n        if (err.response.status === 401) {\n          switch (err.response.data.error) {\n            case 'TOTP_REQUIRED':\n              return {\n                status: 'unverified',\n                verificationMethod: 'totp',\n              };\n            case 'EMAIL_OTP_REQUIRED':\n              return {\n                status: 'unverified',\n                verificationMethod: 'email',\n              };\n            default:\n              return { status: 'unauthenticated' };\n          }\n        }\n        throw err;\n      }\n\n      return { status: 'authenticated' };\n    },\n\n    async verify() {\n      this.signInError = null;\n\n      if (!this.$refs.signInForm.validate()) {\n        return;\n      }\n\n      this.signInProcess = true;\n\n      try {\n        await axios({\n          method: 'post',\n          url: '/api/auth/verify',\n          responseType: 'json',\n          data: {\n            passcode: this.verificationCode,\n          },\n        });\n\n        this.redirectAfterLogin();\n      } catch (err) {\n        this.signInError = getErrorMessage(err);\n      } finally {\n        this.signInProcess = false;\n      }\n    },\n\n    async signInWithEmail() {\n      this.signInError = null;\n\n      if (!this.$refs.signInForm.validate()) {\n        return;\n      }\n\n      this.signInProcess = true;\n      try {\n        await axios({\n          method: 'post',\n          url: '/api/auth/login/email',\n          responseType: 'json',\n          data: {\n            email: this.email,\n          },\n        });\n\n        this.redirectAfterLogin();\n      } catch (err) {\n        if (err.response.status === 401) {\n          this.signInError = this.$t('incorrectEmail');\n        } else {\n          this.signInError = getErrorMessage(err);\n        }\n      } finally {\n        this.signInProcess = false;\n      }\n    },\n\n    async signIn() {\n      this.signInError = null;\n\n      if (!this.$refs.signInForm.validate()) {\n        return;\n      }\n\n      this.signInProcess = true;\n      try {\n        await axios({\n          method: 'post',\n          url: '/api/auth/login',\n          responseType: 'json',\n          data: {\n            auth: this.username,\n            password: this.password,\n          },\n        });\n\n        this.redirectAfterLogin();\n        // document.location = document.baseURI + window.location.search;\n      } catch (err) {\n        if (err.response.status === 401) {\n          this.signInError = this.$t('incorrectUsrPwd');\n        } else {\n          this.signInError = getErrorMessage(err);\n        }\n      } finally {\n        this.signInProcess = false;\n      }\n    },\n\n    async oidcSignIn(provider) {\n      const params = new URLSearchParams();\n      const returnTo = this.$route.query.return;\n      if (returnTo) {\n        params.set('return', returnTo);\n      } else if (this.$route.query.new_project === 'premium') {\n        params.set('return', '/project/premium');\n      }\n      const qs = params.toString();\n      const suffix = qs ? `?${qs}` : '';\n      document.location = `${document.baseURI}api/auth/oidc/${provider}/login${suffix}`;\n    },\n\n    redirectAfterLogin() {\n      const redirectTo = this.$route.query.return;\n      let baseURI = document.baseURI;\n\n      if (redirectTo) {\n        if (baseURI.endsWith('/')) {\n          baseURI = baseURI.substring(0, baseURI.length - 1);\n        }\n\n        document.location = baseURI + redirectTo;\n\n        return;\n      }\n\n      document.location = document.baseURI + window.location.search;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Options.vue",
    "content": ""
  },
  {
    "path": "web/src/views/Roles.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      save-button-text=\"Save\"\n      :title=\"$t('editRole')\"\n      @save=\"loadItems()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <RoleForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :is-admin=\"true\"\n        />\n      </template>\n    </EditDialog>\n\n    <YesNoDialog\n      :title=\"$t('deleteRole')\"\n      :text=\"$t('askDeleteRole')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-btn icon class=\"mr-4\" @click=\"returnToProjects()\">\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n      <v-toolbar-title>{{ $t('Roles') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        :disabled=\"!premiumFeatures.custom_roles_management\"\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        >{{ $t('newRole') }}</v-btn\n      >\n    </v-toolbar>\n\n    <TeamMenu v-if=\"projectId\" :project-id=\"projectId\" :system-info=\"systemInfo\" />\n\n    <v-divider style=\"margin-top: -1px\" />\n\n    <v-alert\n      v-if=\"!premiumFeatures.custom_roles_management\"\n      text\n      color=\"amber darken-3\"\n      class=\"PageAlert\"\n    >\n      <span class=\"mr-1\" v-html=\"$t('roles_only_enterprise')\"></span>\n\n      <v-btn\n        dark\n        depressed\n        v-if=\"isAdmin\"\n        color=\"amber darken-3\"\n        href=\"https://semaphoreui.com/enterprise\"\n        target=\"_blank\"\n      >\n        {{ $t('upgrade_to_pro') }}\n      </v-btn>\n\n      <span v-else style=\"font-weight: bold\">\n        {{ $t('contact_admin_to_upgrade_enterprise') }}\n      </span>\n    </v-alert>\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n      <template v-slot:item.permissions=\"{ item }\">\n        <TemplatePermissionsChips class=\"py-1\" :permissions=\"item.permissions\" />\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn icon class=\"mr-1\" @click=\"askDeleteItem(item.slug)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn icon class=\"mr-1\" @click=\"editItem(item.slug)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport EventBus from '@/event-bus';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditDialog from '@/components/EditDialog.vue';\nimport RoleForm from '@/components/EditRoleForm.vue';\nimport TeamMenu from '@/components/TeamMenu.vue';\nimport TemplatePermissionsChips from '@/components/TemplatePermissionsChips.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n\n  props: {\n    premiumFeatures: Object,\n    projectId: Number,\n    systemInfo: Object,\n  },\n\n  components: {\n    TeamMenu,\n    YesNoDialog,\n    RoleForm,\n    EditDialog,\n    TemplatePermissionsChips,\n  },\n\n  data() {\n    return {};\n  },\n\n  computed: {\n    IDFieldName() {\n      return 'slug';\n    },\n  },\n\n  watch: {\n    async projectId() {\n      await this.loadItems();\n    },\n  },\n\n  methods: {\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '50%',\n        },\n        {\n          text: this.$i18n.t('permissions'),\n          value: 'permissions',\n        },\n        {\n          text: this.$i18n.t('actions'),\n          value: 'actions',\n          sortable: false,\n        },\n      ];\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      return this.projectId ? `/api/project/${this.projectId}/roles` : '/api/roles';\n    },\n\n    getSingleItemUrl() {\n      return this.projectId\n        ? `/api/project/${this.projectId}/roles/${this.itemId}`\n        : `/api/roles/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-role';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Runners.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <v-toolbar flat v-if=\"projectId\">\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>\n        {{ $t('dashboard2') }}\n      </v-toolbar-title>\n    </v-toolbar>\n\n    <DashboardMenu\n      v-if=\"projectId\"\n      :project-id=\"projectId\"\n      project-type=\"\"\n      :can-update-project=\"can(USER_PERMISSIONS.updateProject)\"\n    />\n\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :title=\"itemId === 'new' ? $t('newRunner') : $t('editRunner')\"\n      @save=\"loadItemsAndShowRunnerDetails($event)\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <RunnerForm\n          :project-id=\"projectId || itemProjectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :is-admin=\"true\"\n        />\n      </template>\n    </EditDialog>\n\n    <EditDialog\n      :max-width=\"600\"\n      v-model=\"newRunnerTokenDialog\"\n      :save-button-text=\"null\"\n      :title=\"$t('newRunnerToken')\"\n      hide-buttons\n    >\n      <template v-slot:form=\"{}\">\n        <div>\n          <div class=\"mb-4\">\n            <div>{{ $t('runnerToken') }}</div>\n            <div style=\"position: relative\">\n              <code\n                class=\"pa-2 mt-2\"\n                style=\"background: gray; color: white; display: block; font-size: 14px\"\n                >{{ (newRunner || {}).token }}</code\n              >\n\n              <CopyClipboardButton\n                style=\"position: absolute; right: 10px; top: 2px\"\n                :text=\"(newRunner || {}).token\"\n              />\n            </div>\n          </div>\n\n          <div class=\"mb-4\">\n            <div>{{ $t('Private Key') }}</div>\n            <div style=\"position: relative\">\n              <code\n                class=\"px-2 py-3 mt-2\"\n                style=\"background: gray; color: white; display: block; font-size: 14px\"\n                >{{ (newRunner || { private_key: '' }).private_key.substring(0, 90) + '...' }}</code\n              >\n\n              <v-btn style=\"position: absolute; right: 10px; top: 2px\" icon color=\"white\">\n                <v-icon\n                  @click=\"downloadFile(newRunner.private_key, 'text/plain', 'config.runner.key')\"\n                >\n                  mdi-download\n                </v-icon>\n              </v-btn>\n\n              <CopyClipboardButton\n                style=\"position: absolute; right: 50px; top: 2px\"\n                :text=\"(newRunner || {}).private_key\"\n              />\n            </div>\n          </div>\n\n          <h2 class=\"mt-11 mb-4\">Variants of usage</h2>\n\n          <v-tabs v-model=\"usageTab\" :show-arrows=\"false\">\n            <v-tab key=\"config\">Config file</v-tab>\n            <v-tab key=\"setup\">Setup</v-tab>\n            <v-tab key=\"env\">Env Vars</v-tab>\n            <v-tab key=\"docker\">Docker</v-tab>\n          </v-tabs>\n\n          <v-divider style=\"margin-top: -1px\" />\n\n          <v-tabs-items v-model=\"usageTab\">\n            <v-tab-item key=\"config\">\n              <div class=\"mt-3\">Config file content:</div>\n              <div style=\"position: relative\">\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                  >{{ runnerConfigCommand }}</pre\n                >\n\n                <CopyClipboardButton\n                  style=\"position: absolute; right: 10px; top: 10px\"\n                  :text=\"runnerConfigCommand\"\n                />\n              </div>\n\n              <div class=\"mt-3\">Launching the runner:</div>\n              <div>\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                >\nsemaphore runner start --config /path/to/config/file</pre\n                >\n              </div>\n            </v-tab-item>\n            <v-tab-item key=\"setup\">\n              <div class=\"mt-3\">Config file creation:</div>\n              <div style=\"position: relative\">\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                  >{{ runnerSetupCommand }}</pre\n                >\n\n                <CopyClipboardButton\n                  style=\"position: absolute; right: 10px; top: 10px\"\n                  :text=\"runnerSetupCommand\"\n                />\n              </div>\n\n              <div class=\"mt-3\">\n                <div>Launching the runner:</div>\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                >\nsemaphore runner start --config ./config.runner.json</pre\n                >\n              </div>\n            </v-tab-item>\n            <v-tab-item key=\"env\">\n              <div class=\"mt-3\">Launching the runner:</div>\n              <div style=\"position: relative\">\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                  >{{ runnerEnvCommand }}</pre\n                >\n\n                <CopyClipboardButton\n                  style=\"position: absolute; right: 10px; top: 10px\"\n                  :text=\"runnerEnvCommand\"\n                />\n              </div>\n            </v-tab-item>\n\n            <v-tab-item key=\"docker\">\n              <div class=\"mt-3\">Launching the runner:</div>\n              <div style=\"position: relative\">\n                <pre\n                  style=\"\n                    overflow: auto;\n                    background: gray;\n                    color: white;\n                    border-radius: 10px;\n                    margin-top: 5px;\n                  \"\n                  class=\"pa-2\"\n                  >{{ runnerDockerCommand }}</pre\n                >\n\n                <CopyClipboardButton\n                  style=\"position: absolute; right: 10px; top: 10px\"\n                  :text=\"runnerDockerCommand\"\n                />\n              </div>\n            </v-tab-item>\n          </v-tabs-items>\n        </div>\n      </template>\n    </EditDialog>\n\n    <YesNoDialog\n      :title=\"$t('deleteRunner')\"\n      :text=\"$t('askDeleteRunner', { runner: itemId })\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat v-if=\"!projectId\">\n      <v-btn icon class=\"mr-4\" @click=\"returnToProjects()\">\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n\n      <v-toolbar-title>{{ $t('runners') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn color=\"primary\" @click=\"editItem('new')\">{{ $t('newRunner') }} </v-btn>\n    </v-toolbar>\n\n    <v-btn\n      :disabled=\"!premiumFeatures.project_runners\"\n      style=\"position: absolute; right: 15px; top: 15px\"\n      color=\"primary\"\n      @click=\"editItem('new')\"\n      >{{ $t('newRunner') }}\n    </v-btn>\n\n    <v-divider v-if=\"!projectId\" />\n\n    <v-alert\n      v-if=\"projectId && !premiumFeatures.project_runners\"\n      text\n      color=\"hsl(348deg, 86%, 61%)\"\n      class=\"PageAlert\"\n    >\n      <span v-html=\"$t('project_runners_only_pro')\"></span>\n      <v-btn dark v-if=\"isAdmin\" class=\"ml-2\" color=\"hsl(348deg, 86%, 61%)\" @click=\"upgradeToPro()\">\n        {{ $t('upgrade_to_pro') }}\n      </v-btn>\n      <span v-else style=\"font-weight: bold\">\n        {{ $t('contact_admin_to_upgrade') }}\n      </span>\n    </v-alert>\n\n    <v-alert\n      style=\"border-radius: 0\"\n      type=\"info\"\n      text\n      v-if=\"!systemInfo.use_remote_runner && projectId == null\"\n    >\n      Global runners\n      <a\n        target=\"_blank\"\n        href=\"https://docs.semaphoreui.com/administration-guide/runners/#set-up-a-server\"\n        >disabled</a\n      >.\n    </v-alert>\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n      <template v-slot:item.active=\"{ item }\">\n        <v-switch v-model=\"item.active\" inset @change=\"setActive(item.id, item.active)\"></v-switch>\n      </template>\n\n      <template v-slot:item.name=\"{ item }\">{{ item.name || '&mdash;' }}</template>\n\n      <template v-slot:item.webhook=\"{ item }\">{{ item.webhook || '&mdash;' }}</template>\n\n      <template v-slot:item.max_parallel_tasks=\"{ item }\">\n        {{ item.max_parallel_tasks || '∞' }}\n      </template>\n\n      <template v-slot:item.touched=\"{ item }\">\n        <v-chip v-if=\"item.touched\" :color=\"getStatusColor(item)\" style=\"font-weight: bold\">\n          <span v-if=\"item.touched\">{{ item.touched | formatDate }}</span>\n          <span v-else>{{ $t('never') }}</span>\n        </v-chip>\n      </template>\n\n      <template v-slot:item.project_id=\"{ item }\">\n        {{ item.project_id ? `#${item.project_id}` : '&mdash;' }}\n      </template>\n\n      <template v-slot:item.tag=\"{ item }\">\n        <code v-if=\"item.tag\">{{ item.tag }}</code>\n        <span v-else>&mdash;</span>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn icon class=\"mr-1\" @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn icon class=\"mr-1\" @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n\n          <v-tooltip bottom :max-width=\"150\">\n            <template v-slot:activator=\"{ on, attrs }\">\n              <v-btn v-bind=\"attrs\" v-on=\"on\" icon class=\"mr-1\" @click=\"clearCache(item)\">\n                <v-icon>mdi-broom</v-icon>\n              </v-btn>\n            </template>\n            <div style=\"font-weight: bold\">\n              {{ $t('clear_cache') }}\n            </div>\n\n            <div v-if=\"item.cleaning_requested\" style=\"font-size: 12px; line-height: 1.2\">\n              <span v-if=\"item.touched < item.cleaning_requested\">\n                Already requested {{ item.cleaning_requested | formatDate }}.\n              </span>\n              <span v-else> Last cleaned {{ item.cleaning_requested | formatDate }}. </span>\n            </div>\n          </v-tooltip>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport EventBus from '@/event-bus';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditDialog from '@/components/EditDialog.vue';\nimport RunnerForm from '@/components/RunnerForm.vue';\nimport axios from 'axios';\nimport DashboardMenu from '@/components/DashboardMenu.vue';\nimport delay from '@/lib/delay';\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\nimport PageMixin from '@/components/PageMixin';\n\nexport default {\n  mixins: [ItemListPageBase, PageMixin],\n\n  components: {\n    CopyClipboardButton,\n    DashboardMenu,\n    RunnerForm,\n    YesNoDialog,\n    EditDialog,\n  },\n\n  props: {\n    projectId: Number,\n  },\n\n  computed: {\n    webHost() {\n      return this.systemInfo?.web_host || window.location.origin;\n    },\n\n    version() {\n      return (this.systemInfo?.version || '').split('-')[0];\n    },\n\n    itemProjectId() {\n      return this.getProjectIdOfItem(this.itemId);\n    },\n\n    runnerConfigCommand() {\n      return `{\n  \"web_host\": \"${this.webHost || window.location.origin}\",\n  \"runner\": {\n    \"token\": \"${(this.newRunner || {}).token}\",\n    \"private_key_file\": \"/path/to/private/key\"\n  }\n}`;\n    },\n\n    runnerSetupCommand() {\n      return `cat << EOF > /tmp/config.runner.stdin\n${this.webHost}\nno\nyes\n${(this.newRunner || {}).token}\nyes\n/path/to/private/key\n./\nEOF\n\nsemaphore runner setup --config ./config.runner.json < /tmp/config.runner.stdin`;\n    },\n\n    runnerEnvCommand() {\n      return `SEMAPHORE_WEB_ROOT=${this.webHost} \\\\\nSEMAPHORE_RUNNER_TOKEN=${(this.newRunner || {}).token} \\\\\nSEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/path/to/private/key \\\\\nsemaphore runner start --no-config`;\n    },\n\n    runnerDockerCommand() {\n      return `docker run \\\\\n-e SEMAPHORE_WEB_ROOT=${this.webHost} \\\\\n-e SEMAPHORE_RUNNER_TOKEN=${(this.newRunner || {}).token} \\\\\n-e SEMAPHORE_RUNNER_PRIVATE_KEY_FILE=/config.runner.key \\\\\n-v \"/path/to/private/key:/config.runner.key\" \\\\\n-d semaphoreui/runner:${this.version}`;\n    },\n  },\n\n  data() {\n    return {\n      newRunnerTokenDialog: null,\n      newRunner: null,\n      usageTab: null,\n    };\n  },\n\n  methods: {\n\n    upgradeToPro() {\n      EventBus.$emit('i-subscription', {});\n    },\n\n    async clearCache(runner) {\n      const projectId = this.projectId || this.getProjectIdOfItem(runner.id);\n\n      const url = projectId\n        ? `/api/project/${projectId}/runners/${runner.id}/cache`\n        : `/api/runners/${runner.id}/cache`;\n\n      try {\n        await axios({\n          method: 'delete',\n          url,\n          responseType: 'json',\n        });\n        await this.loadItems();\n      } catch (e) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: `Cannot clear cache: ${e.message}`,\n        });\n      }\n    },\n\n    getStatusColor(runner) {\n      if (!runner.touched) {\n        return 'grey';\n      }\n\n      const d = Date.now() - new Date(runner.touched);\n\n      if (d < 1000 * 60 * 5) {\n        return 'success';\n      }\n\n      if (d < 1000 * 60 * 60) {\n        return 'warning';\n      }\n\n      return 'grey';\n    },\n\n    getProjectIdOfItem(itemId) {\n      if (!itemId || itemId === 'new') {\n        return null;\n      }\n\n      const item = this.items.find((x) => x.id === itemId);\n      if (item) {\n        return item.project_id;\n      }\n\n      return null;\n    },\n\n    async downloadFile(content, type, name) {\n      const a = document.createElement('a');\n      const blob = new Blob([content], { type });\n      a.download = name;\n      a.href = URL.createObjectURL(blob);\n      a.click();\n\n      await delay(1000);\n    },\n\n    async loadItemsAndShowRunnerDetails(e) {\n      if (e.item.token) {\n        this.newRunnerTokenDialog = true;\n        this.newRunner = e.item;\n      }\n      return this.loadItems();\n    },\n\n    async setActive(runnerId, active) {\n      const projectId = this.projectId || this.getProjectIdOfItem(runnerId);\n\n      const url = projectId\n        ? `/api/project/${projectId}/runners/${runnerId}/active`\n        : `/api/runners/${runnerId}/active`;\n\n      await axios({\n        method: 'post',\n        url,\n        responseType: 'json',\n        data: {\n          active,\n        },\n      });\n    },\n\n    getHeaders() {\n      return [\n        {\n          value: 'active',\n        }, {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '50%',\n        },\n        ...(this.projectId ? [] : [{\n          text: this.$i18n.t('project'),\n          value: 'project_id',\n        }]),\n        {\n          text: this.$i18n.t('webhook'),\n          value: 'webhook',\n        }, {\n          text: this.$i18n.t('tag'),\n          value: 'tag',\n        }, {\n          text: this.$i18n.t('activity'),\n          value: 'touched',\n        }, {\n          text: this.$i18n.t('actions'),\n          value: 'actions',\n          sortable: false,\n        }];\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/runners`;\n      }\n\n      return '/api/runners';\n    },\n\n    getSingleItemUrl() {\n      if (this.projectId) {\n        return `/api/project/${this.projectId}/runners/${this.itemId}`;\n      }\n\n      return `/api/runners/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-runner';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Tasks.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <v-toolbar flat>\n      <v-btn\n        icon\n        class=\"mr-4\"\n        @click=\"returnToProjects()\"\n      >\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n      <v-toolbar-title>{{ $t('activeTasks') }}</v-toolbar-title>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n      <template v-slot:item.task_id=\"{ item }\">\n        <router-link\n          :to=\"'/project/' + item.project_id + '?t=' + item.task_id\"\n        >\n          #{{ item.task_id }}\n        </router-link>\n      </template>\n\n      <template v-slot:item.project_id=\"{ item }\">\n        <router-link\n          :to=\"'/project/' + item.project_id\"\n        >\n          #{{ item.project_id }}\n        </router-link>\n      </template>\n\n      <template v-slot:item.status=\"{item}\">\n        <div class=\"pr-4\">\n          <TaskStatus :status=\"item.status\"/>\n        </div>\n      </template>\n\n      <template v-slot:item.location=\"{item}\">\n        <div v-if=\"item.location === 'queue'\">Queue</div>\n        <div v-else-if=\"item.runner_id\">\n          Runner #{{ item.runner_id }}\n        </div>\n        <div v-else>Local Running</div>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn\n            icon\n            class=\"mr-1\"\n            @click=\"deleteItem(item.task_id)\"\n          >\n            <v-icon>mdi-stop</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport EventBus from '@/event-bus';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport TaskStatus from '@/components/TaskStatus.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n\n  components: {\n    TaskStatus,\n  },\n\n  props: {\n  },\n\n  computed: {\n  },\n\n  data() {\n    return {\n      newRunnerTokenDialog: null,\n      newRunner: null,\n      updateTimer: null,\n    };\n  },\n\n  created() {\n    this.updateTimer = setInterval(() => {\n      this.loadItems();\n    }, 10000);\n  },\n\n  destroyed() {\n    clearInterval(this.updateTimer);\n  },\n\n  methods: {\n\n    stopTask(taskId) {\n      console.log(taskId);\n    },\n\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('task', {}),\n        value: 'task_id',\n      }, {\n        text: this.$i18n.t('project'),\n        value: 'project_id',\n      }, {\n        text: this.$i18n.t('username'),\n        value: 'username',\n      }, {\n        text: this.$i18n.t('status'),\n        value: 'status',\n      }, {\n        text: this.$i18n.t('location'),\n        value: 'location',\n      }, {\n        text: this.$i18n.t('actions'),\n        value: 'actions',\n        sortable: false,\n        width: 70,\n      }];\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      return '/api/tasks';\n    },\n\n    getSingleItemUrl() {\n      return `/api/tasks/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-task';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Tokens.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <v-toolbar flat>\n      <v-btn\n        icon\n        class=\"mr-4\"\n        @click=\"returnToProjects()\"\n      >\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n      <v-toolbar-title>{{ $t('api_tokens') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n\n      <a\n        :href=\"`${this.systemInfo?.web_host || ''}/swagger/index.html`\"\n        class=\"mr-6\"\n        target=\"_blank\"\n      >\n        {{ $t('API Reference') }}\n      </a>\n\n      <v-btn\n        color=\"primary\"\n        @click=\"newToken()\"\n      >{{ $t('New Token') }}</v-btn>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n\n      <template v-slot:item.id=\"{ item }\">\n\n        <code v-if=\"item.token_id && item.show_token_id\" class=\"mr-2\">{{ item.token_id }}</code>\n        <code v-else class=\"mr-2\">{{ item.id }}***</code>\n\n        <v-btn\n          icon\n          v-if=\"item.token_id && !item.show_token_id\"\n          @click=\"showToken(item.id)\"\n        >\n          <v-icon>mdi-eye</v-icon>\n        </v-btn>\n\n        <CopyClipboardButton\n          v-if=\"item.token_id\"\n          :text=\"item.token_id\"\n          success-message=\"The token has been copied to the clipboard.\"\n        />\n\n      </template>\n\n      <template v-slot:item.created=\"{ item }\">\n        {{ item.created | formatDate}}\n      </template>\n\n      <template v-slot:item.expired=\"{ item }\">\n        <div class=\"pr-4\">\n          <v-chip v-if=\"item.expired\" style=\"font-weight: bold;\" color=\"error\">\n            Expired\n          </v-chip>\n          <v-chip v-else style=\"font-weight: bold;\" color=\"success\">\n            Active\n          </v-chip>\n        </div>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn\n            icon\n            class=\"mr-1\"\n            @click=\"deleteItem(item.id)\"\n          >\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport EventBus from '@/event-bus';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport axios from 'axios';\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n\n  components: {\n    CopyClipboardButton,\n  },\n\n  props: {\n    systemInfo: Object,\n  },\n\n  computed: {\n  },\n\n  data() {\n    return {\n      newRunnerTokenDialog: null,\n    };\n  },\n\n  methods: {\n\n    async showToken(token) {\n      const i = this.items.findIndex((item) => item.id === token);\n      if (i === -1) {\n        return;\n      }\n\n      this.items.splice(i, 1, {\n        ...this.items[i],\n        show_token_id: true,\n      });\n    },\n\n    async newToken() {\n      const res = (await axios({\n        method: 'post',\n        url: '/api/user/tokens',\n        responseType: 'json',\n        data: {},\n      })).data;\n      await this.loadItems();\n\n      const i = this.items.findIndex((item) => res.id.startsWith(item.id));\n      if (i === -1) {\n        return;\n      }\n\n      this.items.splice(i, 1, {\n        ...this.items[i],\n        token_id: res.id,\n      });\n    },\n\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('token'),\n        value: 'id',\n      }, {\n        text: this.$i18n.t('created'),\n        value: 'created',\n      }, {\n        text: this.$i18n.t('status'),\n        value: 'expired',\n      }, {\n        text: '',\n        value: 'actions',\n        sortable: false,\n        width: 70,\n      }];\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      return '/api/user/tokens';\n    },\n\n    getSingleItemUrl() {\n      return `/api/user/tokens/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-token';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/Users.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      save-button-text=\"Save\"\n      :title=\"$t('editUser')\"\n      @save=\"loadItems()\"\n      :hide-buttons=\"hideEditDialogButtons\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <UserForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :is-admin=\"true\"\n          @hide-action-buttons=\"hideEditDialogButtons = true\"\n          @show-action-buttons=\"hideEditDialogButtons = false\"\n          :auth-methods=\"authMethods\"\n        />\n      </template>\n    </EditDialog>\n\n    <YesNoDialog\n      :title=\"$t('deleteUser')\"\n      :text=\"$t('askDeleteUser')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat >\n      <v-btn\n        icon\n        class=\"mr-4\"\n        @click=\"returnToProjects()\"\n      >\n        <v-icon>mdi-arrow-left</v-icon>\n      </v-btn>\n      <v-toolbar-title>{{ $t('users') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n      >{{ $t('newUser') }}</v-btn>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n    >\n      <template v-slot:item.external=\"{ item }\">\n        <v-icon v-if=\"item.external\">mdi-checkbox-marked</v-icon>\n        <v-icon v-else>mdi-checkbox-blank-outline</v-icon>\n      </template>\n\n      <template v-slot:item.alert=\"{ item }\">\n        <v-icon v-if=\"item.alert\">mdi-checkbox-marked</v-icon>\n        <v-icon v-else>mdi-checkbox-blank-outline</v-icon>\n      </template>\n\n      <template v-slot:item.admin=\"{ item }\">\n        <v-icon v-if=\"item.admin\">mdi-checkbox-marked</v-icon>\n        <v-icon v-else>mdi-checkbox-blank-outline</v-icon>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn\n            icon\n            class=\"mr-1\"\n            @click=\"askDeleteItem(item.id)\"\n          >\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn\n            icon\n            class=\"mr-1\"\n            @click=\"editItem(item.id)\"\n          >\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport EventBus from '@/event-bus';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditDialog from '@/components/EditDialog.vue';\nimport UserForm from '@/components/UserForm.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n\n  props: {\n    authMethods: Object,\n  },\n\n  components: {\n    YesNoDialog,\n    UserForm,\n    EditDialog,\n  },\n\n  data() {\n    return {\n      hideEditDialogButtons: false,\n    };\n  },\n\n  methods: {\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('name'),\n        value: 'name',\n        width: '50%',\n      },\n      {\n        text: this.$i18n.t('username'),\n        value: 'username',\n      },\n      {\n        text: this.$i18n.t('email'),\n        value: 'email',\n      },\n      {\n        text: this.$i18n.t('alert'),\n        value: 'alert',\n      },\n      {\n        text: this.$i18n.t('admin'),\n        value: 'admin',\n      },\n      {\n        text: this.$i18n.t('external'),\n        value: 'external',\n        width: '50%',\n      },\n      {\n        text: this.$i18n.t('actions'),\n        value: 'actions',\n        sortable: false,\n      }];\n    },\n\n    async returnToProjects() {\n      EventBus.$emit('i-open-last-project');\n    },\n\n    getItemsUrl() {\n      return '/api/users';\n    },\n\n    getSingleItemUrl() {\n      return `/api/users/${this.itemId}`;\n    },\n\n    getEventName() {\n      return 'i-user';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Activity.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items\">\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('dashboard') }}</v-toolbar-title>\n    </v-toolbar>\n\n    <DashboardMenu\n      :project-id=\"projectId\"\n      :project-type=\"projectType\"\n      :can-update-project=\"can(USER_PERMISSIONS.updateProject)\"\n    />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4 CenterToScreen\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n      style=\"max-width: calc(var(--breakpoint-lg) - var(--nav-drawer-width)); margin: auto;\"\n    >\n      <template v-slot:item.created=\"{ item }\">\n        {{ item.created | formatDate }}\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport DashboardMenu from '@/components/DashboardMenu.vue';\n\nexport default {\n  components: { DashboardMenu },\n\n  mixins: [ItemListPageBase],\n\n  methods: {\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('time'),\n          value: 'created',\n          sortable: false,\n          width: '20%',\n        },\n        {\n          text: this.$i18n.t('user'),\n          value: 'username',\n          sortable: false,\n          width: '10%',\n        },\n        {\n          text: this.$i18n.t('description'),\n          value: 'description',\n          sortable: false,\n          width: '70%',\n        },\n      ];\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/events/last`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Environment.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"$t('save')\"\n      :title=\"$t('editEnvironment')\"\n      :max-width=\"700\"\n      @save=\"loadItems\"\n      :help-button=\"true\"\n      :no-escape=\"editNoEscape\"\n      test-id=\"varGroupDialog\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset, needHelp }\">\n        <EnvironmentForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :need-help=\"needHelp\"\n          :support-storages=\"premiumFeatures.secret_storages\"\n          @maximize=\"editNoEscape = $event.maximized\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"environment\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteEnvironment')\"\n      :text=\"$t('askDeleteEnv')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat >\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('environment') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n      >{{ $t('newEnvironment') }}\n      </v-btn>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4 CenterToScreen\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-lg) - var(--nav-drawer-width) - 200px); margin: auto;\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        <a @click=\"editItem(item.id)\">{{ item.name }}</a>\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EnvironmentForm from '@/components/EnvironmentForm.vue';\nimport PageMixin from '@/components/PageMixin';\n\nexport default {\n  components: { EnvironmentForm },\n  mixins: [ItemListPageBase, PageMixin],\n  data() {\n    return {\n      editNoEscape: false,\n    };\n  },\n  methods: {\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('name'),\n        value: 'name',\n        width: '100%',\n      },\n      {\n        value: 'actions',\n        sortable: false,\n      }];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/environment`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/environment/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-environment';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/History.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>\n        {{ $t('dashboard2') }}\n      </v-toolbar-title>\n    </v-toolbar>\n\n    <DashboardMenu\n      :project-id=\"projectId\"\n      :project-type=\"projectType\"\n      :can-update-project=\"can(USER_PERMISSIONS.updateProject)\"\n    />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      :footer-props=\"{ itemsPerPageOptions: [20] }\"\n      class=\"mt-4 HistoryTable\"\n    >\n      <template v-slot:item.tpl_alias=\"{ item }\">\n        <div class=\"d-flex align-center\">\n          <v-icon\n            class=\"mr-3\"\n            small\n          >\n            {{ getAppIcon(item.tpl_app) }}\n          </v-icon>\n\n          <!--          <v-icon class=\"mr-3\" small>-->\n          <!--            {{ TEMPLATE_TYPE_ICONS[item.tpl_type] }}-->\n          <!--          </v-icon>-->\n\n          <TaskLink\n            :task-id=\"item.id\"\n            :label=\"'#' + item.id\"\n          />\n\n          <v-icon small class=\"ml-1 mr-1\">mdi-arrow-left</v-icon>\n\n          <router-link :to=\"\n            '/project/' + item.project_id +\n            '/templates/' + item.template_id\"\n          >{{ item.tpl_alias }}\n          </router-link>\n        </div>\n\n        <div style=\"font-size: 14px;\" class=\"ml-7\">\n            <span v-if=\"item.message\">\n              <v-icon x-small>mdi-message-outline</v-icon> {{ item.message }}\n            </span>\n          <span v-else-if=\"item.commit_hash\">\n              <v-icon x-small>mdi-source-fork</v-icon> {{ item.commit_message }}\n            </span>\n        </div>\n      </template>\n\n      <template v-slot:item.version=\"{ item }\">\n        <TaskLink\n          :disabled=\"item.tpl_type === 'build'\"\n          class=\"ml-2\"\n          v-if=\"item.tpl_type !== ''\"\n          :status=\"item.status\"\n\n          :task-id=\"item.tpl_type === 'build'\n              ? item.id\n              : (item.build_task || {}).id\"\n\n          :label=\"item.tpl_type === 'build'\n              ? item.version\n              : (item.build_task || {}).version\"\n\n          :tooltip=\"item.tpl_type === 'build'\n              ? item.message\n              : (item.build_task || {}).message\"\n        />\n        <div class=\"ml-2\" v-else>&mdash;</div>\n      </template>\n\n      <template v-slot:item.status=\"{ item }\">\n        <TaskStatus :status=\"item.status\"/>\n      </template>\n\n      <template v-slot:item.start=\"{ item }\">\n        {{ item.start | formatDate }}\n      </template>\n\n      <template v-slot:item.end=\"{ item }\">\n        {{ [item.start, item.end] | formatMilliseconds }}\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<style lang=\"scss\">\n.HistoryTable td {\n  height: 60px !important;\n}\n</style>\n\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EventBus from '@/event-bus';\nimport TaskStatus from '@/components/TaskStatus.vue';\nimport TaskLink from '@/components/TaskLink.vue';\nimport socket from '@/socket';\nimport { TEMPLATE_TYPE_ICONS } from '@/lib/constants';\nimport AppsMixin from '@/components/AppsMixin';\nimport DashboardMenu from '@/components/DashboardMenu.vue';\n\nexport default {\n  mixins: [ItemListPageBase, AppsMixin],\n\n  data() {\n    return { TEMPLATE_TYPE_ICONS };\n  },\n\n  components: { DashboardMenu, TaskStatus, TaskLink },\n\n  watch: {\n    async projectId() {\n      await this.loadItems();\n    },\n  },\n\n  created() {\n    socket.addListener((data) => this.onWebsocketDataReceived(data));\n  },\n\n  methods: {\n    showTaskLog(taskId) {\n      EventBus.$emit('i-show-task', {\n        taskId,\n      });\n    },\n\n    async onWebsocketDataReceived(data) {\n      if (data.project_id !== this.projectId || data.type !== 'update') {\n        return;\n      }\n\n      if (!this.items.some((item) => item.id === data.task_id)) {\n        await this.loadItems();\n      }\n\n      const task = this.items.find((item) => item.id === data.task_id);\n\n      if (task) {\n        Object.assign(task, {\n          ...data,\n          type: undefined,\n        });\n      }\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('task2'),\n          value: 'tpl_alias',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('version'),\n          value: 'version',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('status'),\n          value: 'status',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('user'),\n          value: 'user_name',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('start'),\n          value: 'start',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('duration'),\n          value: 'end',\n          sortable: false,\n        },\n      ];\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/tasks/last`;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/IntegrationExtractValue.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? 'Create' : 'Save'\"\n      :title=\"`${itemId === 'new' ? 'New' : 'Edit'} Extract Value`\"\n      :max-width=\"450\"\n      :transition=\"false\"\n      @save=\"loadItems\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <IntegrationExtractValueForm\n          :projectId=\"projectId\"\n          :integration-id=\"integrationId\"\n          :item-id=\"itemId\"\n          :project-id=\"projectId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"extractvalue\"\n      :object-refs=\"itemRefs\"\n      :integration-id=\"integrationId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      title=\"Delete Integration ExtractValue\"\n      text=\"Are you sure you want to delete this Integration ExtractValue?\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>ExtractValue</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        >New Extracted Value</v-btn\n      >\n    </v-toolbar>\n    <v-data-table :headers=\"headers\" :items=\"items\" class=\"mt-4\" :items-per-page=\"Number.MAX_VALUE\">\n      <template v-slot:item.name=\"{ item }\"> {{ item.name }} {{ item.extractorId }} </template>\n      <template v-slot:item.value_source=\"{ item }\">\n        <code>{{ item.value_source }}</code>\n      </template>\n      <template v-slot:item.body_data_type=\"{ item }\">\n        <code>{{ item.body_data_type }}</code>\n      </template>\n      <template v-slot:item.key=\"{ item }\">\n        <code>{{ item.key }}</code>\n      </template>\n      <template v-slot:item.variable=\"{ item }\">\n        <code>{{ item.variable }}</code>\n      </template>\n      <template v-slot:item.variable_type=\"{ item }\">\n        <code>{{ item.variable_type }}</code>\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn icon class=\"mr-1\" @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn icon class=\"mr-1\" @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\n\nimport IntegrationExtractValueForm from '@/components/IntegrationExtractValueForm.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n  components: { IntegrationExtractValueForm },\n\n  computed: {\n    integrationId() {\n      if (/^-?\\d+$/.test(this.$route.params.integrationId)) {\n        return parseInt(this.$route.params.integrationId, 10);\n      }\n      return this.$route.params.integrationId;\n    },\n  },\n\n  methods: {\n    allowActions() {\n      return true;\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: 'Name',\n          value: 'name',\n          sortable: true,\n        },\n        {\n          text: 'Value Source',\n          value: 'value_source',\n          sortable: false,\n        },\n        // {\n        //   text: 'Body Data Type',\n        //   value: 'body_data_type',\n        //   sortable: false,\n        // },\n        {\n          text: 'Key',\n          value: 'key',\n          sortable: false,\n        },\n        {\n          text: 'Variable',\n          value: 'variable',\n          sortable: false,\n        },\n        {\n          text: 'Variable Type',\n          value: 'variable_type',\n          sortable: false,\n        },\n        {\n          text: 'Actions',\n          value: 'actions',\n          sortable: false,\n        },\n      ];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/values`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/values/${this.itemId}`;\n    },\n    getEventName() {\n      return 'w-integration-extract-value';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/IntegrationExtractor.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"integration != null\">\n    <IntegrationExtractorCrumb\n      :integration=\"integration\"\n      :integration-id=\"integrationId\"\n      :project-id=\"projectId\"\n    />\n\n    <div class=\"px-4 pt-3 pb-2\">\n      <v-switch\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        class=\"mt-0\"\n        v-model=\"integration.searchable\"\n        :label=\"$t('globalAlias')\"\n        @change=\"updateIntegration()\"\n      />\n    </div>\n\n    <div v-if=\"integration.searchable\" class=\"px-4\">\n      <v-alert type=\"info\" text class=\"d-inline-block\">\n        Matchers allow the integration to be found by a project alias.\n      </v-alert>\n    </div>\n\n    <div v-else class=\"px-4 pb-6\">\n      <div class=\"mb-3 pl-1\" v-if=\"(aliases || []).length === 0\">There is no aliases.</div>\n\n      <div v-else v-for=\"alias of aliases || []\" :key=\"alias.id\">\n        <code class=\"mr-2\">{{ alias.url }}</code>\n\n        <CopyClipboardButton\n          :text=\"alias.url\"\n          success-message=\"The alias URL  has been copied to the clipboard.\"\n        />\n\n        <v-btn\n          icon\n          @click=\"deleteAlias(alias.id)\"\n          v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        >\n          <v-icon>mdi-delete</v-icon>\n        </v-btn>\n      </div>\n\n      <v-btn\n        color=\"primary\"\n        @click=\"addAlias()\"\n        :disabled=\"aliases == null\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n      >\n        {{ aliases == null ? $t('LoadAlias') : $t('AddAlias') }}\n      </v-btn>\n    </div>\n\n    <v-divider />\n\n    <IntegrationMatcher\n      class=\"mb-6\"\n      v-if=\"integration.searchable\"\n      :is-admin=\"isAdmin\"\n      :userPermissions=\"userPermissions\"\n      :project-id=\"projectId\"\n    />\n\n    <IntegrationExtractValue\n      :is-admin=\"isAdmin\"\n      :userPermissions=\"userPermissions\"\n      :project-id=\"projectId\"\n    />\n  </div>\n</template>\n<script>\nimport IntegrationsBase from '@/views/project/IntegrationsBase';\nimport axios from 'axios';\n\nimport { USER_PERMISSIONS } from '@/lib/constants';\n\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\nimport PermissionsCheck from '@/components/PermissionsCheck';\nimport IntegrationExtractValue from './IntegrationExtractValue.vue';\nimport IntegrationMatcher from './IntegrationMatcher.vue';\nimport IntegrationExtractorCrumb from './IntegrationExtractorCrumb.vue';\n\nexport default {\n  mixins: [IntegrationsBase, PermissionsCheck],\n  components: {\n    CopyClipboardButton,\n    IntegrationMatcher,\n    IntegrationExtractValue,\n    IntegrationExtractorCrumb,\n  },\n  props: {\n    projectId: Number,\n  },\n\n  data() {\n    return {\n      integration: null,\n      USER_PERMISSIONS,\n    };\n  },\n\n  async created() {\n    this.integration = (\n      await axios({\n        method: 'get',\n        url: `/api/project/${this.projectId}/integrations/${this.integrationId}`,\n        responseType: 'json',\n      })\n    ).data;\n  },\n\n  methods: {\n    allowActions() {\n      return true;\n    },\n    async updateIntegration() {\n      await axios({\n        method: 'put',\n        url: `/api/project/${this.projectId}/integrations/${this.integrationId}`,\n        responseType: 'json',\n        data: this.integration,\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/IntegrationExtractorCrumb.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"integration != null\">\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n\n      <v-toolbar-title class=\"breadcrumbs\">\n        <router-link\n          class=\"breadcrumbs__item breadcrumbs__item--link\"\n          :to=\"`/project/${projectId}/integrations/`\"\n        >\n          Integrations\n        </router-link>\n        <v-icon>mdi-chevron-right</v-icon>\n        <span class=\"breadcrumbs__item\">{{ integration.name }}</span>\n      </v-toolbar-title>\n\n      <v-spacer></v-spacer>\n    </v-toolbar>\n  </div>\n</template>\n<script>\n\nimport ItemListPageBase from '@/components/ItemListPageBase';\n\nexport default {\n  mixins: [ItemListPageBase],\n  components: { },\n  props: {\n    integration: Object,\n    integrationId: Number,\n  },\n  data() {\n    return {\n      extractor: null,\n    };\n  },\n\n  methods: {\n    allowActions() {\n      return true;\n    },\n    getHeaders() {\n      return [];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}`;\n    },\n    getEventName() {\n      return 'w-integration-matcher';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/IntegrationMatcher.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? 'Create' : 'Save'\"\n      :title=\"`${itemId === 'new' ? 'New' : 'Edit'} Matcher`\"\n      :max-width=\"450\"\n      :transition=\"false\"\n      @save=\"loadItems\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <IntegrationMatcherForm\n          :project-id=\"projectId\"\n          :integration-id=\"integrationId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"matcher\"\n      :object-refs=\"itemRefs\"\n      :integration-id=\"integrationId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      title=\"Delete Integration Matcher\"\n      text=\"Are you sure you want to delete this Integration Matcher?\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>Matcher</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        >New Matcher</v-btn\n      >\n    </v-toolbar>\n\n    <v-data-table :headers=\"headers\" :items=\"items\" class=\"mt-4\" :items-per-page=\"Number.MAX_VALUE\">\n      <template v-slot:item.name=\"{ item }\">\n        {{ item.name }}\n      </template>\n      <template v-slot:item.match_type=\"{ item }\">\n        <code>{{ item.match_type }}</code>\n      </template>\n      <template v-slot:item.method=\"{ item }\">\n        <code>{{ item.method }}</code>\n      </template>\n      <template v-slot:item.body_data_type=\"{ item }\">\n        {{ item.body_data_type || 'N/A' }}\n      </template>\n      <template v-slot:item.key=\"{ item }\">\n        <code>{{ item.key }}</code>\n      </template>\n      <template v-slot:item.value=\"{ item }\">\n        <code>{{ item.value }}</code>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <div style=\"white-space: nowrap\">\n          <v-btn icon class=\"mr-1\" @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n\n          <v-btn icon class=\"mr-1\" @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </div>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\n\nimport IntegrationMatcherForm from '@/components/IntegrationMatcherForm.vue';\n\nexport default {\n  mixins: [ItemListPageBase],\n  components: { IntegrationMatcherForm },\n  computed: {\n    // projectId() {\n    //   if (/^-?\\d+$/.test(this.$route.params.projectId)) {\n    //     return parseInt(this.$route.params.projectId, 10);\n    //   }\n    //   return this.$route.params.projectId;\n    // },\n    integrationId() {\n      if (/^-?\\d+$/.test(this.$route.params.integrationId)) {\n        return parseInt(this.$route.params.integrationId, 10);\n      }\n      return this.$route.params.integrationId;\n    },\n  },\n  methods: {\n    allowActions() {\n      return true;\n    },\n    getHeaders() {\n      return [\n        {\n          text: 'Name',\n          value: 'name',\n          sortable: true,\n        },\n        {\n          text: 'Match Type',\n          value: 'match_type',\n          sortable: true,\n        },\n        {\n          text: 'Body Data Type',\n          value: 'body_data_type',\n          sortable: false,\n        },\n        {\n          text: 'Key',\n          value: 'key',\n          sortable: true,\n        },\n        {\n          text: 'Method',\n          value: 'method',\n          sortable: true,\n        },\n        {\n          text: 'Value',\n          value: 'value',\n          sortable: true,\n        },\n        {\n          text: '',\n          value: 'actions',\n          sortable: false,\n        },\n      ];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/matchers`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/matchers/${this.itemId}`;\n    },\n    getEventName() {\n      return 'w-integration-matcher';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Integrations.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null && templates != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :title=\"itemId === 'new' ? $t('NewIntegration') : $t('EditIntegration')\"\n      :max-width=\"450\"\n      :transition=\"false\"\n      @save=\"loadItems()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <IntegrationForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"integration\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('DeleteIntegration')\"\n      :text=\"$t('DeleteIntegrationMsg')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('integrations') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        color=\"primary\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        @click=\"editItem('new')\"\n        >{{ $t('NewIntegration') }}\n      </v-btn>\n    </v-toolbar>\n\n    <div class=\"px-4 py-3\">\n      <div class=\"mb-3 pl-1\" v-if=\"(aliases || []).length === 0\">There are no aliases.</div>\n\n      <div v-else v-for=\"alias of aliases || []\" :key=\"alias.id\">\n        <code class=\"mr-2\">{{ alias.url }}</code>\n\n        <CopyClipboardButton :text=\"alias.url\" :success-message=\"$t('aliasUrlCopied')\" />\n\n        <v-btn\n          v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n          icon\n          @click=\"deleteAlias(alias.id)\"\n        >\n          <v-icon>mdi-delete</v-icon>\n        </v-btn>\n      </div>\n      <v-btn\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n        color=\"primary\"\n        @click=\"addAlias()\"\n        :disabled=\"aliases == null\"\n      >\n        {{ aliases == null ? $t('LoadAlias') : $t('AddAlias') }}\n      </v-btn>\n    </div>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px); margin: auto\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        <router-link :to=\"`/project/${projectId}/integrations/${item.id}`\"\n          >{{ item.name }}\n        </router-link>\n      </template>\n      <template v-slot:item.template_id=\"{ item }\">\n        <router-link :to=\"`/project/${projectId}/templates/${item.template_id}`\">\n          {{ (templates.find((t) => t.id === item.template_id) || { name: '—' }).name }}\n        </router-link>\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport axios from 'axios';\n\nimport { USER_PERMISSIONS } from '@/lib/constants';\n\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport IntegrationForm from '@/components/IntegrationForm.vue';\nimport IntegrationsBase from '@/views/project/IntegrationsBase';\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\n\nexport default {\n  mixins: [ItemListPageBase, IntegrationsBase],\n  components: { IntegrationForm, CopyClipboardButton },\n  data() {\n    return {\n      templates: null,\n    };\n  },\n\n  async created() {\n    this.templates = (\n      await axios({\n        method: 'get',\n        url: `/api/project/${this.projectId}/templates`,\n        responseType: 'json',\n      })\n    ).data;\n  },\n\n  methods: {\n    allowActions() {\n      return this.can(USER_PERMISSIONS.updateProject);\n    },\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '40%',\n          sortable: true,\n        },\n        {\n          text: this.$i18n.t('template'),\n          value: 'template_id',\n          width: '60%',\n          sortable: true,\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n      ];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/integrations`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/integrations/${this.itemId}`;\n    },\n    getEventName() {\n      return 'w-integration';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/IntegrationsBase.js",
    "content": "import axios from 'axios';\n\nexport default {\n\n  data() {\n    return {\n      aliases: null,\n    };\n  },\n\n  async created() {\n    await this.loadAliases();\n  },\n\n  computed: {\n    integrationId() {\n      if (/^-?\\d+$/.test(this.$route.params.integrationId)) {\n        return parseInt(this.$route.params.integrationId, 10);\n      }\n      return this.$route.params.integrationId;\n    },\n\n    aliasPath() {\n      if (!this.integrationId) {\n        return `/api/project/${this.projectId}/integrations/aliases`;\n      }\n      return `/api/project/${this.projectId}/integrations/${this.integrationId}/aliases`;\n    },\n  },\n\n  methods: {\n\n    async loadAliases() {\n      this.aliases = (await axios({\n        method: 'get',\n        url: this.aliasPath,\n        responseType: 'json',\n      })).data;\n    },\n\n    async deleteAlias(id) {\n      await axios({\n        method: 'delete',\n        url: `${this.aliasPath}/${id}`,\n      });\n      await this.loadAliases();\n    },\n\n    async addAlias() {\n      await axios({\n        method: 'post',\n        url: this.aliasPath,\n        responseType: 'json',\n      });\n      await this.loadAliases();\n    },\n  },\n};\n"
  },
  {
    "path": "web/src/views/project/Inventory.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n\n    <EditDialog\n      v-model=\"attachInventoryDialog\"\n      :save-button-text=\"$t('Attach')\"\n      :icon=\"getAppIcon(itemApp)\"\n      :icon-color=\"getAppColor(itemApp)\"\n      :max-width=\"450\"\n      title=\"Choose workspace to attach\"\n      @save=\"attachInventory($event.itemId)\"\n    >\n      <template v-slot:form=\"{ onSave, needSave, needReset }\">\n        <TemplateSelectForm\n          :app=\"itemApp\"\n          :project-id=\"projectId\"\n          @save=\"onSave\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :icon=\"getAppIcon(itemApp)\"\n      :icon-color=\"getAppColor(itemApp)\"\n      :title=\"`${itemId === 'new' ? $t('nnew') : $t('edit')} ${APP_INVENTORY_TITLE[itemApp]}`\"\n      :max-width=\"450\"\n      @save=\"loadItems\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <InventoryForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :premium-features=\"premiumFeatures\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"inventory\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteInventory')\"\n      :text=\"$t('askDeleteInv')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('inventory') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n\n      <v-menu\n        offset-y\n      >\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n            class=\"pr-2\"\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            color=\"primary\"\n            v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n          >{{ $t('newInventory') }}\n            <v-icon>mdi-chevron-down</v-icon>\n          </v-btn>\n        </template>\n        <v-list>\n          <v-list-item\n            v-for=\"item in apps\"\n            :key=\"item\"\n            link\n            @click=\"itemApp = item; editItem('new');\"\n          >\n            <v-list-item-icon>\n              <v-icon\n                :color=\"getAppColor(item)\"\n              >{{ getAppIcon(item) }}\n              </v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>{{ APP_INVENTORY_TITLE[item] }}</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px); margin: auto;\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        <v-icon class=\"mr-3\" small>\n          {{ getAppIcon(getAppByType(item.type)) }}\n        </v-icon>\n\n        {{ item.name }}\n      </template>\n\n      <template v-slot:item.type=\"{ item }\">\n        <code>{{ item.type }}</code>\n      </template>\n      <template v-slot:item.inventory=\"{ item }\">\n        {{ ['file', 'terraform-workspace'].includes(item.type) ? item.inventory : '&mdash;' }}\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn\n            @click=\"itemApp = getAppByType(item.type); editItem(item.id)\"\n            v-if=\"!['tofu', 'terraform'].includes(getAppByType(item.type))\"\n          >\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n          <v-btn\n            v-else\n            @click=\"\n              itemId = item.id;\n              itemApp = getAppByType(item.type);\n              attachInventoryDialog = true;\n            \"\n          >\n            <v-icon>mdi-connection</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport InventoryForm from '@/components/InventoryForm.vue';\nimport { APP_INVENTORY_TITLE } from '@/lib/constants';\nimport AppsMixin from '@/components/AppsMixin';\nimport axios from 'axios';\nimport TemplateSelectForm from '@/components/TemplateSelectForm.vue';\n\nexport default {\n  computed: {\n    APP_INVENTORY_TITLE() {\n      return APP_INVENTORY_TITLE;\n    },\n  },\n  mixins: [ItemListPageBase, AppsMixin],\n  components: { TemplateSelectForm, InventoryForm },\n\n  props: {\n    premiumFeatures: Object,\n  },\n\n  data() {\n    return {\n      apps: ['ansible'],\n      itemApp: '',\n      attachInventoryDialog: null,\n    };\n  },\n\n  methods: {\n    async attachInventory(templateId) {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.projectId}/templates/${templateId}/inventory/${this.itemId}/attach`,\n      });\n      await this.loadItems();\n    },\n\n    getAppByType(type) {\n      switch (type) {\n        case 'tofu-workspace':\n          return 'tofu';\n        case 'terraform-workspace':\n          return 'terraform';\n        case '':\n        case 'ansible':\n          return 'ansible';\n        default:\n          return 'ansible';\n      }\n    },\n\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('name'),\n        value: 'name',\n        width: '30%',\n      },\n      {\n        text: this.$i18n.t('type'),\n        value: 'type',\n        width: '20%',\n      },\n      {\n        text: this.$i18n.t('path'),\n        value: 'inventory',\n        width: '50%',\n      },\n      {\n        value: 'actions',\n        sortable: false,\n        width: '0%',\n      },\n      ];\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/inventory`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/inventory/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-inventory';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Invites.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditTeamMemberDialog\n      v-model=\"editDialog\"\n      :project-id=\"projectId\"\n      :item-id=\"itemId\"\n      :invites-enabled=\"systemInfo.teams.invites_enabled\"\n      :invite-type=\"systemInfo.teams.invite_type\"\n      @save=\"loadItems()\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteTeamMember')\"\n      :text=\"$t('askDeleteTMem')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('Invites') }}</v-toolbar-title>\n\n      <v-spacer></v-spacer>\n\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectUsers)\"\n      >{{ $t('newTeamMember') }}\n      </v-btn>\n    </v-toolbar>\n\n    <TeamMenu :project-id=\"projectId\" :system-info=\"systemInfo\" />\n\n    <v-divider style=\"margin-top: -1px;\"/>\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px); margin: auto;\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        {{ item.user ? item.user.name : item.email }}\n      </template>\n\n      <template v-slot:item.role=\"{ item }\">\n        {{ USER_ROLES.find(r => r.slug === item.role).name }}\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\" v-if=\"can(USER_PERMISSIONS.manageProjectUsers)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport axios from 'axios';\nimport { USER_PERMISSIONS, USER_ROLES } from '@/lib/constants';\nimport EditTeamMemberDialog from '@/components/EditTeamMemberDialog.vue';\nimport TeamMenu from '@/components/TeamMenu.vue';\n\nexport default {\n  components: { TeamMenu, EditTeamMemberDialog },\n  mixins: [ItemListPageBase],\n\n  props: {\n    systemInfo: Object,\n  },\n\n  data() {\n    return {\n      USER_ROLES,\n    };\n  },\n\n  methods: {\n    async updateProjectInvite(invite) {\n      await axios({\n        method: 'put',\n        url: `/api/project/${this.projectId}/invites/${invite.id}`,\n        responseType: 'json',\n        data: invite,\n      });\n      await this.loadItems();\n    },\n\n    allowActions() {\n      return this.can(USER_PERMISSIONS.manageProjectUsers);\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '40%',\n        },\n        {\n          text: this.$i18n.t('username'),\n          value: 'username',\n          width: '30%',\n        },\n        {\n          text: this.$i18n.t('role'),\n          value: 'role',\n          width: '30%',\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        }];\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/invites/${this.itemId}`;\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/invites`;\n    },\n    getEventName() {\n      return 'i-repositories';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Keys.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :title=\"`${itemId === 'new' ? $t('nnew') : $t('edit')} Key`\"\n      :max-width=\"450\"\n      @save=\"loadItems()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <KeyForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :support-storages=\"premiumFeatures.secret_storages\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"access key\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteKey')\"\n      :text=\"$t('askDeleteKey')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat >\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('keyStore') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n      >{{ $t('newKey') }}</v-btn>\n    </v-toolbar>\n\n    <KeyStoreMenu v-if=\"isPro\" :project-id=\"projectId\" />\n    <v-divider v-else />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px); margin: auto;\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        {{ item.name }}\n        <v-chip\n          color=\"error\"\n          v-if=\"item.empty && item.type !== 'none'\"\n          small\n          style=\"font-weight: bold;\"\n          class=\"ml-2\"\n        >{{ $t('empty') }}</v-chip>\n      </template>\n      <template v-slot:item.type=\"{ item }\">\n        <code>{{ item.type }}</code>\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport KeyForm from '@/components/KeyForm.vue';\nimport PageMixin from '@/components/PageMixin';\nimport KeyStoreMenu from '@/components/KeyStoreMenu.vue';\n\nexport default {\n  components: { KeyStoreMenu, KeyForm },\n\n  mixins: [ItemListPageBase, PageMixin],\n\n  props: {\n    systemInfo: Object,\n  },\n\n  computed: {\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n  },\n\n  methods: {\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('name'),\n        value: 'name',\n        width: '60%',\n      },\n      {\n        text: this.$i18n.t('type'),\n        value: 'type',\n        width: '40%',\n      },\n      {\n        value: 'actions',\n        sortable: false,\n        width: '0%',\n      },\n      ];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/keys`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/keys/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-keys';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/New.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div>\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('newProject') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n    </v-toolbar>\n\n    <v-divider/>\n\n    <div\n      style=\"margin: auto; max-width: 600px; padding: 0 16px;\"\n      class=\"CenterToScreen\"\n    >\n      <div class=\"project-settings-form\">\n        <div style=\"height: 300px;\">\n          <ProjectForm\n            item-id=\"new\"\n            ref=\"editForm\"\n            @save=\"onSave\"\n            :system-info=\"systemInfo\"\n          />\n        </div>\n\n        <div class=\"text-right\">\n          <v-btn\n            color=\"success\" class=\"mr-3\" @click=\"createDemoProject()\"\n          >{{ $t('CreateDemoProject') }}\n          </v-btn>\n\n          <v-btn color=\"primary\" @click=\"createProject()\">{{ $t('create') }}</v-btn>\n        </div>\n      </div>\n    </div>\n\n  </div>\n</template>\n<style lang=\"scss\">\n\n</style>\n<script>\nimport EventBus from '@/event-bus';\nimport ProjectForm from '@/components/ProjectForm.vue';\n\nexport default {\n  components: { ProjectForm },\n  data() {\n    return {};\n  },\n  props: {\n    systemInfo: Object,\n  },\n  methods: {\n    onSave(e) {\n      EventBus.$emit('i-project', {\n        action: 'new',\n        item: e.item,\n      });\n    },\n\n    showDrawer() {\n      EventBus.$emit('i-show-drawer');\n    },\n\n    async createProject() {\n      await this.$refs.editForm.save();\n    },\n\n    async createDemoProject() {\n      await this.$refs.editForm.save({\n        demo: true,\n      });\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Repositories.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null && keys != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :title=\"`${itemId === 'new' ? $t('nnew') : $t('edit')} Repository`\"\n      @save=\"loadItems()\"\n      :max-width=\"450\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <RepositoryForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"repository\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteRepository')\"\n      :text=\"$t('askDeleteRepo')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat >\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('repositories') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n      >{{ $t('newRepository') }}</v-btn>\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 100px); margin: auto;\"\n    >\n      <template v-slot:item.git_url=\"{ item }\">\n        {{ item.git_url }}\n        <code v-if=\"!item.git_url.startsWith('/')\">{{ item.git_branch }}</code>\n      </template>\n\n      <template v-slot:item.ssh_key_id=\"{ item }\">\n        {{ keys.find((k) => k.id === item.ssh_key_id).name }}\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport RepositoryForm from '@/components/RepositoryForm.vue';\nimport axios from 'axios';\n\nexport default {\n  mixins: [ItemListPageBase],\n  components: { RepositoryForm },\n  data() {\n    return {\n      keys: null,\n    };\n  },\n\n  async created() {\n    this.keys = (await axios({\n      method: 'get',\n      url: `/api/project/${this.projectId}/keys`,\n      responseType: 'json',\n    })).data;\n  },\n\n  methods: {\n    getHeaders() {\n      return [{\n        text: this.$i18n.t('name'),\n        value: 'name',\n        width: '25%',\n      },\n      {\n        text: this.$i18n.t('gitUrl'),\n        value: 'git_url',\n        width: '50%',\n      },\n      {\n        text: this.$i18n.t('sshKey'),\n        value: 'ssh_key_id',\n        width: '25%',\n      },\n      {\n        text: this.$i18n.t('actions'),\n        value: 'actions',\n        sortable: false,\n      }];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/repositories`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/repositories/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-repositories';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/RestoreProject.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div>\n    <v-toolbar flat >\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('restoreProject') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n    </v-toolbar>\n\n    <v-divider />\n\n    <div\n      style=\"margin: auto; max-width: 600px; padding: 0 16px;\"\n      class=\"CenterToScreen\"\n    >\n        <div class=\"project-settings-form\">\n        <div style=\"height: 300px;\">\n            <RestoreProjectForm item-id=\"new\" ref=\"editForm\" @save=\"onSave\" />\n        </div>\n\n        <div class=\"text-right\">\n            <v-btn color=\"primary\" @click=\"restoreProject()\">{{ $t('restore') }}</v-btn>\n        </div>\n        </div>\n    </div>\n\n  </div>\n</template>\n<style lang=\"scss\">\n\n</style>\n<script>\nimport EventBus from '@/event-bus';\nimport RestoreProjectForm from '@/components/RestoreProjectForm.vue';\n\nexport default {\n  components: { RestoreProjectForm },\n  data() {\n    return {\n    };\n  },\n\n  methods: {\n    onSave(e) {\n      EventBus.$emit('i-project', {\n        action: 'restore',\n        item: e.item,\n      });\n    },\n\n    showDrawer() {\n      EventBus.$emit('i-show-drawer');\n    },\n\n    async restoreProject() {\n      await this.$refs.editForm.save();\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Schedule.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null\">\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"$t('save')\"\n      :title=\"$t('editSchedule')\"\n      :max-width=\"500\"\n      @save=\"loadItems\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <ScheduleForm\n          :project-id=\"projectId\"\n          :item-id=\"itemId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n          :timezone=\"systemInfo.schedule_timezone\"\n          :type=\"scheduleType\"\n        />\n      </template>\n    </EditDialog>\n\n    <ObjectRefsDialog\n      object-title=\"schedule\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteSchedule')\"\n      :text=\"$t('askDeleteSchedule')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('schedule') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-menu\n        offset-y\n      >\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n            class=\"pr-2\"\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            color=\"primary\"\n            v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n          >{{ $t('newSchedule') }}\n            <v-icon>mdi-chevron-down</v-icon>\n          </v-btn>\n        </template>\n\n        <v-list>\n          <v-list-item\n            link\n            @click=\"editSchedule('new', '');\"\n          >\n            <v-list-item-icon>\n              <v-icon>mdi-calendar-sync</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Cron</v-list-item-title>\n          </v-list-item>\n          <v-list-item\n            link\n            @click=\"editSchedule('new', 'run_at');\"\n          >\n            <v-list-item-icon>\n              <v-icon>mdi-clock-time-eight-outline</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Run once</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n\n    </v-toolbar>\n\n    <v-divider />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"\n          max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px);\n          margin: auto;\n        \"\n    >\n      <template v-slot:item.active=\"{ item }\">\n        <v-switch\n          :disabled=\"!can(USER_PERMISSIONS.manageProjectResources)\"\n          v-model=\"item.active\"\n          inset\n          @change=\"setActive(item.id, item.active)\"\n        ></v-switch>\n      </template>\n\n      <template v-slot:item.name=\"{ item }\">\n        <div>{{ item.name || '&mdash;' }}</div>\n      </template>\n\n      <template v-slot:item.tpl_name=\"{ item }\">\n        <div class=\"d-flex\">\n          <router-link :to=\"\n            '/project/' + item.project_id +\n            '/templates/' + item.template_id\"\n          >{{ item.tpl_name }}\n          </router-link>\n        </div>\n      </template>\n      <template v-slot:item.cron_format=\"{ item }\">\n        <div v-if=\"item.type === 'run_at'\">\n          {{ formatRunAt(item) }}\n        </div>\n        <code v-else>{{ item.cron_format }}</code>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editSchedule(item.id, item.type)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n\n      <template v-slot:expanded-item=\"{ headers, item }\">\n        <td\n          :colspan=\"headers.length\"\n          v-if=\"openedItems.some((template) => template.id === item.id)\"\n        >\n          <TaskList\n            style=\"border: 1px solid lightgray; border-radius: 6px; margin: 10px 0;\"\n            :template=\"item\"\n            :limit=\"5\"\n            :hide-footer=\"true\"\n          />\n        </td>\n      </template>\n    </v-data-table>\n  </div>\n\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport ScheduleForm from '@/components/ScheduleForm.vue';\nimport TaskList from '@/components/TaskList.vue';\nimport axios from 'axios';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezonePlugin from 'dayjs/plugin/timezone';\n\ndayjs.extend(utc);\ndayjs.extend(timezonePlugin);\n\nexport default {\n  components: { TaskList, ScheduleForm },\n  mixins: [ItemListPageBase],\n  props: {\n    systemInfo: Object,\n  },\n  data() {\n    return {\n      openedItems: [],\n      scheduleType: null,\n    };\n  },\n  methods: {\n    editSchedule(id, type) {\n      this.scheduleType = type;\n      this.editItem(id);\n    },\n\n    formatRunAt(item) {\n      if (!item.run_at) {\n        return '—';\n      }\n\n      const tz = this.systemInfo?.schedule_timezone || 'UTC';\n      const parsed = dayjs(item.run_at).tz(tz);\n\n      if (!parsed.isValid()) {\n        return '—';\n      }\n\n      return `${parsed.format('YYYY-MM-DD HH:mm')} (${tz})`;\n    },\n\n    async setActive(scheduleId, active) {\n      await axios({\n        method: 'put',\n        url: `/api/project/${this.projectId}/schedules/${scheduleId}/active`,\n        responseType: 'json',\n        data: {\n          active,\n        },\n      });\n    },\n\n    getHeaders() {\n      return [{\n        text: '',\n        value: 'active',\n        sortable: false,\n      }, {\n        text: this.$i18n.t('name'),\n        value: 'name',\n      }, {\n        text: this.$i18n.t('schedule'),\n        value: 'cron_format',\n      }, {\n        text: this.$i18n.t('template'),\n        value: 'tpl_name',\n        width: '100%',\n      }, {\n        text: this.$i18n.t('actions'),\n        value: 'actions',\n        sortable: false,\n      }];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/schedules`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/schedules/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-schedule';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/SecretStorages.vue",
    "content": "<template>\n  <div v-if=\"items != null\">\n    <ObjectRefsDialog\n        object-title=\"storage\"\n        :object-refs=\"itemRefs\"\n        :project-id=\"projectId\"\n        v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n        :title=\"$t('deleteStorage')\"\n        :text=\"$t('askDeleteStorage')\"\n        v-model=\"deleteItemDialog\"\n        @yes=\"deleteItem(itemId)\"\n    />\n\n    <EditDialog\n        v-model=\"editDialog\"\n        :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n        :title=\"`${itemId === 'new' ? $t('nnew') : $t('edit')} ${itemType} Storage`\"\n        :max-width=\"450\"\n        @save=\"loadItems()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <SecretStorageForm\n            :project-id=\"projectId\"\n            :item-id=\"itemId\"\n            :item-type=\"itemType\"\n            @save=\"onSave\"\n            @error=\"onError\"\n            :need-save=\"needSave\"\n            :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('keyStore') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n\n      <v-menu offset-y>\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n              class=\"pr-2\"\n              v-bind=\"attrs\"\n              v-on=\"on\"\n              color=\"primary\"\n              v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n          >\n            New Storage\n            <v-icon>mdi-chevron-down</v-icon>\n          </v-btn>\n        </template>\n        <v-list>\n          <v-list-item\n              link\n              @click=\"\n              editItem('new');\n              itemType = 'vault';\n            \"\n              :disabled=\"!premiumFeatures.secret_storage_management\"\n          >\n            <v-list-item-icon>\n              <v-icon>$vuetify.icons.hashicorp_vault</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Hashicorp Vault</v-list-item-title>\n          </v-list-item>\n\n          <v-list-item\n              link\n              @click=\"\n              editItem('new');\n              itemType = 'dvls';\n            \"\n              :disabled=\"!premiumFeatures.secret_storage_management\"\n          >\n            <v-list-item-icon>\n              <v-icon>$vuetify.icons.dvls</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Devolutions Server</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n    </v-toolbar>\n\n    <v-tabs class=\"pl-4\">\n      <v-tab key=\"keys\" :to=\"`/project/${projectId}/keys`\" data-testid=\"keystore-keys\">\n        Keys\n      </v-tab>\n\n      <v-tab\n          key=\"storages\"\n          :to=\"`/project/${projectId}/secret_storages`\"\n          data-testid=\"keystore-storages\"\n      >\n        Storages\n      </v-tab>\n    </v-tabs>\n\n    <v-divider style=\"margin-top: -1px\"/>\n\n    <v-alert\n        v-if=\"!premiumFeatures.secret_storage_management\"\n        text\n        color=\"hsl(348deg, 86%, 61%)\"\n        class=\"PageAlert\"\n    >\n      <span class=\"mr-1\" v-html=\"$t('secret_storage_only_pro')\"></span>\n\n      <v-btn dark v-if=\"isAdmin\" color=\"hsl(348deg, 86%, 61%)\" @click=\"upgradeToPro()\">\n        {{ $t('upgrade_to_pro') }}\n      </v-btn>\n\n      <span v-else style=\"font-weight: bold\">\n        {{ $t('contact_admin_to_upgrade') }}\n      </span>\n    </v-alert>\n\n    <v-data-table\n        :headers=\"headers\"\n        :items=\"items\"\n        hide-default-footer\n        class=\"mt-4\"\n        :items-per-page=\"Number.MAX_VALUE\"\n        style=\"\n          max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px);\n          margin: auto\n        \"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        <v-icon class=\"mr-3\" small>\n          {{ getIcon(item) }}\n        </v-icon>\n\n        <span class=\"mr-2\">{{ item.name }}</span>\n\n        <v-chip v-if=\"item.readonly\" style=\"transform: translateY(-1px)\" color=\"info\" small>\n          Read only\n        </v-chip>\n      </template>\n\n      <template v-slot:item.type=\"{ item }\">\n        <code>{{ item.type }}</code>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\" style=\"\">\n          <v-btn\n            @click=\"syncItem(item.id)\"\n            :disabled=\"item.type !== 'dvls' ||\n              !(item.params.sync_paths && item.params.sync_paths.length > 0)\"\n          >\n            <v-icon>mdi-sync</v-icon>\n          </v-btn>\n          <v-btn @click=\"askDeleteItem(item.id)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n          <v-btn @click=\"editItem(item.id)\">\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<style scoped lang=\"scss\"></style>\n\n<script>\nimport axios from 'axios';\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport SecretStorageForm from '@/components/SecretStorageForm.vue';\nimport EventBus from '@/event-bus';\nimport { getErrorMessage } from '@/lib/error';\n\nexport default {\n  components: { SecretStorageForm },\n  mixins: [ItemListPageBase],\n  data() {\n    return {\n      itemType: 'vault',\n    };\n  },\n\n  props: {\n    systemInfo: Object,\n  },\n\n  computed: {\n    premiumFeatures() {\n      return this.systemInfo?.premium_features || {};\n    },\n  },\n\n  methods: {\n    async syncItem(itemId) {\n      try {\n        const item = this.items.find((x) => x.id === itemId);\n        await axios({\n          method: 'post',\n          url: `/api/project/${this.projectId}/secret_storages/${itemId}/sync`,\n          data: item,\n          responseType: 'json',\n        });\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'Secrets synced successfully',\n        });\n        await this.loadItems();\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      }\n    },\n\n    getIcon(item) {\n      switch (item.type) {\n        case 'vault':\n          return '$vuetify.icons.hashicorp_vault';\n        case 'dvls':\n          return '$vuetify.icons.dvls';\n        default:\n          return '';\n      }\n    },\n\n    upgradeToPro() {\n      EventBus.$emit('i-subscription', {});\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '60%',\n        },\n        {\n          text: this.$i18n.t('type'),\n          value: 'type',\n          width: '40%',\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n      ];\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/secret_storages`;\n    },\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/secret_storages/${this.itemId}`;\n    },\n    getEventName() {\n      return 'i-secret-storage';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Settings.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div>\n    <YesNoDialog\n      v-model=\"deleteProjectDialog\"\n      :title=\"$t('deleteProject')\"\n      :text=\"$t('askDeleteProj')\"\n      @yes=\"deleteProject()\"\n    />\n\n    <v-toolbar flat >\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('dashboard') }}</v-toolbar-title>\n    </v-toolbar>\n\n    <DashboardMenu\n      :project-id=\"projectId\"\n      :project-type=\"projectType\"\n      :can-update-project=\"true\"\n    />\n\n    <div\n      style=\"margin: auto; max-width: 600px; padding: 0 16px;\"\n      class=\"CenterToScreen\"\n    >\n      <h2 class=\"mt-8 mb-1\">{{ $t('general_settings') }}</h2>\n\n      <v-divider class=\"mb-8\" />\n\n      <div class=\"project-settings-form\">\n        <div>\n          <ProjectForm\n            :item-id=\"projectId\"\n            ref=\"form\"\n            @error=\"onError\"\n            @save=\"onSave\"\n            :system-info=\"systemInfo\"\n          />\n        </div>\n\n        <div class=\"d-flex justify-space-between mt-4\">\n          <v-btn\n            color=\"blue-grey\"\n            @click=\"sendTestNotification()\"\n            width=\"170\"\n            :disabled=\"testNotificationProgress\"\n            data-testid=\"settings-testAlerts\"\n          >Test Alerts</v-btn>\n          <v-btn color=\"primary\" @click=\"saveProject()\">{{ $t('save') }}</v-btn>\n        </div>\n\n        <v-progress-linear\n          v-if=\"testNotificationProgress\"\n          color=\"blue-grey darken-1\"\n          indeterminate\n          rounded\n          width=\"170\"\n          height=\"36\"\n          style=\"margin-top: -36px; width: 170px;\"\n        ></v-progress-linear>\n      </div>\n\n      <h2 class=\"mt-8 mb-1\">{{ $t('danger_zone_settings') }}</h2>\n\n      <v-divider class=\"mb-8\" />\n\n      <div class=\"project-backup project-settings-button\" v-if=\"projectType === ''\">\n        <v-row align=\"center\">\n          <v-col class=\"shrink\">\n\n            <v-btn\n              color=\"primary\"\n              @click=\"backupProject\"\n              :disabled=\"backupProgress\"\n              min-width=\"170\"\n              data-testid=\"settings-exportProject\"\n            >{{ $t('backup') }}\n            </v-btn>\n\n            <v-progress-linear\n              v-if=\"backupProgress\"\n              color=\"primary accent-4\"\n              indeterminate\n              rounded\n              height=\"36\"\n              style=\"margin-top: -36px\"\n            ></v-progress-linear>\n\n          </v-col>\n          <v-col class=\"grow\">\n            <div style=\"font-size: 14px;\">\n              {{ $t('downloadTheProjectBackupFile') }}\n            </div>\n          </v-col>\n        </v-row>\n      </div>\n\n      <div class=\"project-backup project-settings-button\" v-if=\"projectType === ''\">\n        <v-row align=\"center\">\n          <v-col class=\"shrink\">\n\n            <v-btn\n              color=\"blue-grey\"\n              @click=\"clearCache\"\n              :disabled=\"clearCacheProgress\"\n              min-width=\"170\"\n              data-testid=\"settings-clearCache\"\n            >{{ $t('clear_cache') }}</v-btn>\n\n            <v-progress-linear\n              v-if=\"clearCacheProgress\"\n              color=\"blue-grey darken-1\"\n              indeterminate\n              rounded\n              height=\"36\"\n              style=\"margin-top: -36px\"\n            ></v-progress-linear>\n\n          </v-col>\n          <v-col class=\"grow\">\n            <div style=\"font-size: 14px\">\n              {{ $t('clear_cache_message') }}\n            </div>\n          </v-col>\n        </v-row>\n      </div>\n\n      <div class=\"project-delete-form project-settings-button\">\n        <v-row align=\"center\">\n          <v-col class=\"shrink\">\n            <v-btn\n              color=\"error\"\n              min-width=\"170\"\n              @click=\"deleteProjectDialog = true\"\n              data-testid=\"settings-deleteProject\"\n            >{{ $t('deleteProject2') }}\n            </v-btn>\n          </v-col>\n          <v-col class=\"grow\">\n            <div style=\"font-size: 14px; color: #ff5252\">\n              {{ $t('onceYouDeleteAProjectThereIsNoGoingBackPleaseBeCer') }}\n            </div>\n          </v-col>\n        </v-row>\n      </div>\n    </div>\n  </div>\n</template>\n<style lang=\"scss\">\n  @import '~vuetify/src/styles/styles.sass';\n\n  .project-settings-form {\n    //max-width: 600px;\n    margin: 30px 0;\n  }\n\n  .project-settings-button {\n    //max-width: 400px;\n    margin: 30px 0;\n\n    @media #{map-get($display-breakpoints, 'sm-and-down')} {\n      padding: 0 6px;\n    }\n  }\n</style>\n<script>\nimport EventBus from '@/event-bus';\nimport ProjectForm from '@/components/ProjectForm.vue';\nimport { getErrorMessage } from '@/lib/error';\nimport axios from 'axios';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport delay from '@/lib/delay';\nimport DashboardMenu from '@/components/DashboardMenu.vue';\n\nexport default {\n  components: { DashboardMenu, YesNoDialog, ProjectForm },\n  props: {\n    projectId: Number,\n    projectType: String,\n    systemInfo: Object,\n  },\n\n  data() {\n    return {\n      deleteProjectDialog: null,\n      backupProgress: false,\n      clearCacheProgress: false,\n      testNotificationProgress: false,\n    };\n  },\n\n  methods: {\n    async sendTestNotification() {\n      this.testNotificationProgress = true;\n      try {\n        await axios({\n          method: 'post',\n          url: `/api/project/${this.projectId}/notifications/test`,\n          responseType: 'json',\n        });\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'Test notification sent.',\n        });\n      } catch (err) {\n        let msg;\n        if (err.response.status === 409) {\n          msg = 'Please allow alerts for the project and save it.';\n        } else {\n          msg = getErrorMessage(err);\n        }\n\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: msg,\n        });\n      } finally {\n        this.testNotificationProgress = false;\n      }\n    },\n\n    showDrawer() {\n      EventBus.$emit('i-show-drawer');\n    },\n\n    onError(e) {\n      EventBus.$emit('i-snackbar', {\n        color: 'error',\n        text: e.message,\n      });\n    },\n\n    onSave(e) {\n      EventBus.$emit('i-project', {\n        action: 'edit',\n        item: e.item,\n      });\n    },\n\n    async saveProject() {\n      await this.$refs.form.save();\n    },\n\n    async clearCache() {\n      this.clearCacheProgress = true;\n      await delay(1000);\n\n      try {\n        await axios({\n          method: 'delete',\n          url: `/api/project/${this.projectId}/cache`,\n          transformResponse: (res) => res, // Necessary to not parse json\n          responseType: 'json',\n        });\n\n        await delay(1000);\n\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'Project cache cleaned.',\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      } finally {\n        this.clearCacheProgress = false;\n      }\n    },\n\n    async backupProject() {\n      this.backupProgress = true;\n      await delay(1000);\n\n      try {\n        const backup = await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/backup`,\n          transformResponse: (res) => res, // Necessary to not parse json\n          responseType: 'json',\n        });\n\n        const a = document.createElement('a');\n        const blob = new Blob([backup.data], { type: 'application/json' });\n        a.download = `backup_${this.projectId}_${Date.now()}.json`;\n        a.href = URL.createObjectURL(blob);\n        a.click();\n\n        await delay(1000);\n\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'Project exported.',\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      } finally {\n        this.backupProgress = false;\n      }\n    },\n\n    async deleteProject() {\n      try {\n        await axios({\n          method: 'delete',\n          url: `/api/project/${this.projectId}`,\n          responseType: 'json',\n        });\n        EventBus.$emit('i-project', {\n          action: 'delete',\n          item: {\n            id: this.projectId,\n          },\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      }\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Stats.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div>\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('dashboard') }}</v-toolbar-title>\n    </v-toolbar>\n\n    <DashboardMenu\n      :project-id=\"projectId\"\n      :project-type=\"projectType\"\n      :can-update-project=\"can(USER_PERMISSIONS.updateProject)\"\n    />\n\n    <TaskStats class=\"mt-4\" :project-id=\"projectId\"  />\n\n  </div>\n</template>\n<script>\nimport DashboardMenu from '@/components/DashboardMenu.vue';\nimport {\n  TEMPLATE_TYPE_ACTION_TITLES,\n  TEMPLATE_TYPE_ICONS,\n  TEMPLATE_TYPE_TITLES,\n  USER_PERMISSIONS,\n} from '@/lib/constants';\nimport TaskStats from '@/components/TaskStats.vue';\nimport PermissionsCheck from '@/components/PermissionsCheck';\n\nexport default {\n  computed: {\n    USER_PERMISSIONS() {\n      return USER_PERMISSIONS;\n    },\n  },\n\n  components: { TaskStats, DashboardMenu },\n\n  mixins: [PermissionsCheck],\n\n  props: {\n    projectId: Number,\n    projectType: String,\n    userId: Number,\n    userRole: String,\n    user: Object,\n  },\n\n  data() {\n    return {\n      dateRanges: [{\n        text: 'Past week',\n        value: 'last_week',\n      }, {\n        text: 'Past month',\n        value: 'last_month',\n      }, {\n        text: 'Past year',\n        value: 'last_year',\n      }],\n      users: [{\n        text: 'All users',\n        value: null,\n      }],\n\n      TEMPLATE_TYPE_ICONS,\n      TEMPLATE_TYPE_TITLES,\n      TEMPLATE_TYPE_ACTION_TITLES,\n      stats: null,\n      dateRange: 'last_week',\n    };\n  },\n\n  methods: {\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Team.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"items != null && roles != null\">\n    <EditTeamMemberDialog\n      v-model=\"editDialog\"\n      :project-id=\"projectId\"\n      :item-id=\"itemId\"\n      :invites-enabled=\"systemInfo.teams.invites_enabled\"\n      :invite-type=\"systemInfo.teams.invite_type\"\n      :roles=\"userRoles\"\n      @save=\"openInvites()\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteTeamMember')\"\n      :text=\"$t('askDeleteTMem')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>{{ $t('team2') }}</v-toolbar-title>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"systemInfo.teams.memebers_can_leave\"\n        color=\"error\"\n        @click=\"leftProject()\"\n        class=\"mr-2\"\n        :disabled=\"userRole === 'owner'\"\n        >{{ $t('LeaveProject') }}\n      </v-btn>\n      <v-btn\n        color=\"primary\"\n        @click=\"editItem('new')\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectUsers)\"\n        >{{ $t('newTeamMember') }}\n      </v-btn>\n    </v-toolbar>\n\n    <TeamMenu v-if=\"isPro\" :project-id=\"projectId\" :system-info=\"systemInfo\" />\n\n    <v-divider style=\"margin-top: -1px\" />\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      style=\"max-width: calc(var(--breakpoint-xl) - var(--nav-drawer-width) - 200px); margin: auto\"\n    >\n      <template v-slot:item.role=\"{ item }\">\n        <v-select\n          hide-details\n          v-model=\"item.role\"\n          :items=\"userRoles\"\n          item-value=\"slug\"\n          item-text=\"name\"\n          :style=\"{ width: '200px' }\"\n          @change=\"updateProjectUser(item)\"\n          v-if=\"can(USER_PERMISSIONS.manageProjectUsers)\"\n          class=\"pt-0 mt-0\"\n        />\n        <div v-else>{{ userRoles.find((r) => r.slug === item.role).name }}</div>\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn @click=\"askDeleteItem(item.id)\" v-if=\"can(USER_PERMISSIONS.manageProjectUsers)\">\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditTeamMemberDialog from '@/components/EditTeamMemberDialog.vue';\nimport axios from 'axios';\nimport { USER_PERMISSIONS, USER_ROLES } from '@/lib/constants';\nimport TeamMenu from '@/components/TeamMenu.vue';\n\nexport default {\n  components: { TeamMenu, EditTeamMemberDialog },\n  mixins: [ItemListPageBase],\n\n  props: {\n    systemInfo: Object,\n  },\n\n  data() {\n    return {\n      roles: null,\n    };\n  },\n\n  computed: {\n    userRoles() {\n      return [...USER_ROLES, ...this.roles];\n    },\n\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n  },\n\n  async created() {\n    this.roles = (\n      await axios({\n        method: 'get',\n        url: `/api/project/${this.projectId}/roles/all`,\n        responseType: 'json',\n      })\n    ).data;\n  },\n\n  methods: {\n    openInvites() {\n      if (this.systemInfo.teams.invites_enabled) {\n        this.$router.push(`/project/${this.projectId}/invites`);\n        return;\n      }\n      this.loadItems();\n    },\n\n    async leftProject() {\n      await axios({\n        method: 'delete',\n        url: `/api/project/${this.projectId}/me`,\n        responseType: 'json',\n      });\n      window.location.reload();\n    },\n\n    async updateProjectUser(user) {\n      await axios({\n        method: 'put',\n        url: `/api/project/${this.projectId}/users/${user.id}`,\n        responseType: 'json',\n        data: user,\n      });\n      await this.loadItems();\n    },\n\n    allowActions() {\n      return this.can(USER_PERMISSIONS.manageProjectUsers);\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n          width: '40%',\n        },\n        {\n          text: this.$i18n.t('username'),\n          value: 'username',\n          width: '30%',\n        },\n        {\n          text: this.$i18n.t('role'),\n          value: 'role',\n          width: '30%',\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n      ];\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/users/${this.itemId}`;\n    },\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/users?sort=name&order=asc`;\n    },\n    getEventName() {\n      return 'i-repositories';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/TemplateView.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"!isLoaded\">\n    <v-progress-linear indeterminate color=\"primary darken-2\"></v-progress-linear>\n  </div>\n  <div v-else>\n    <NewTaskDialog\n      v-model=\"newTaskDialog\"\n      :project-id=\"projectId\"\n      :template=\"item\"\n    />\n\n    <EditTemplateDialog\n      v-model=\"editDialog\"\n      :project-id=\"projectId\"\n      :item-app=\"item.app\"\n      :item-id=\"itemId\"\n      @save=\"loadData()\"\n      :premium-features=\"premiumFeatures\"\n      :task-type=\"item.type\"\n    ></EditTemplateDialog>\n\n    <EditTemplateDialog\n      v-model=\"copyDialog\"\n      :project-id=\"projectId\"\n      :item-app=\"item.app\"\n      item-id=\"new\"\n      :source-item-id=\"itemId\"\n      @save=\"onTemplateCopied\"\n      :premium-features=\"premiumFeatures\"\n      :task-type=\"item.type\"\n    ></EditTemplateDialog>\n\n    <ObjectRefsDialog\n      object-title=\"template\"\n      :object-refs=\"itemRefs\"\n      :project-id=\"projectId\"\n      v-model=\"itemRefsDialog\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteTemplate')\"\n      :text=\"$t('askDeleteTemp')\"\n      v-model=\"deleteDialog\"\n      @yes=\"remove()\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('stopAllTasks')\"\n      :text=\"$t('askStopAllTasks')\"\n      v-model=\"stopAllDialog\"\n      @yes=\"stopAllTasks(false)\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('forceStopAllTasks')\"\n      :text=\"$t('askForceStopAllTasks')\"\n      v-model=\"forceStopAllDialog\"\n      @yes=\"stopAllTasks(true)\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title class=\"breadcrumbs\">\n        <router-link\n          class=\"breadcrumbs__item breadcrumbs__item--link\"\n          :to=\"\n            viewId\n              ? `/project/${projectId}/views/${viewId}/templates/`\n              : `/project/${projectId}/templates/`\n          \"\n        >\n          {{ $t('taskTemplates2') }}\n        </router-link>\n        <v-icon>mdi-chevron-right</v-icon>\n        <span class=\"breadcrumbs__item\">{{ item.name }}</span>\n      </v-toolbar-title>\n\n      <v-spacer></v-spacer>\n\n      <v-menu offset-y v-if=\"canStop\">\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            color=\"grey\"\n            class=\"mr-3 pr-2\"\n          >\n            {{ $t('stopAll') }}\n            <v-icon>mdi-chevron-down</v-icon>\n          </v-btn>\n        </template>\n        <v-list>\n          <v-list-item @click=\"stopAllDialog = true\">\n            <v-list-item-icon>\n              <v-icon>mdi-stop</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>{{ $t('stop') }}</v-list-item-title>\n          </v-list-item>\n          <v-list-item @click=\"forceStopAllDialog = true\">\n            <v-list-item-icon>\n              <v-icon>mdi-alert-octagon</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>{{ $t('forceStop') }}</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n\n      <v-btn\n        v-if=\"canRun\"\n        color=\"primary\"\n        depressed\n        class=\"mr-3\"\n        @click=\"newTaskDialog = true\"\n        data-testid=\"template-run\"\n      >\n        {{ $t(TEMPLATE_TYPE_ACTION_TITLES[item.type]) }}\n      </v-btn>\n\n      <v-btn icon color=\"error\" @click=\"askDelete()\" v-if=\"canUpdate\">\n        <v-icon>mdi-delete</v-icon>\n      </v-btn>\n\n      <v-btn icon @click=\"copyDialog = true\" v-if=\"canUpdate\">\n        <v-icon>mdi-content-copy</v-icon>\n      </v-btn>\n\n      <v-btn icon @click=\"editDialog = true\" v-if=\"canUpdate\">\n        <v-icon>mdi-pencil</v-icon>\n      </v-btn>\n    </v-toolbar>\n\n    <SingleLineEditable\n      class=\"mx-4 TemplateView__description\"\n      v-model=\"item.description\"\n      @save=\"updateDescription()\"\n      v-if=\"item.description || can(USER_PERMISSIONS.manageProjectResources)\"\n      :can-edit=\"can(USER_PERMISSIONS.manageProjectResources)\"\n    />\n\n    <v-tabs>\n      <v-tab\n        :to=\"`/project/${item.project_id}${\n          $route.params.viewId ? `/views/${$route.params.viewId}` : ''\n        }/templates/${item.id}/tasks`\">{{ $t('template_tasks') }}\n      </v-tab>\n      <v-tab\n        :to=\"`/project/${item.project_id}${\n          $route.params.viewId ? `/views/${$route.params.viewId}` : ''\n        }/templates/${item.id}/details`\">{{ $t('template_details') }}\n      </v-tab>\n      <v-tab\n        v-if=\"isPro && can(USER_PERMISSIONS.manageProjectResources)\"\n        :to=\"`/project/${item.project_id}${\n          $route.params.viewId ? `/views/${$route.params.viewId}` : ''\n        }/templates/${item.id}/perms`\">{{ $t('Permissions') }}\n      </v-tab>\n      <v-tab\n        v-if=\"['terraform', 'tofu'].includes(item.app)\"\n        :to=\"`/project/${item.project_id}${\n          $route.params.viewId ? `/views/${$route.params.viewId}` : ''\n        }/templates/${item.id}/state`\"\n      >\n        {{ $t('template_tf_workspaces') }}\n      </v-tab>\n    </v-tabs>\n\n    <v-divider style=\"margin-top: -1px;\" />\n\n    <router-view\n      :project-id=\"projectId\"\n      :template=\"item\"\n      :inventory=\"inventory\"\n      :environment=\"environment\"\n      :repositories=\"repositories\"\n      :premium-features=\"premiumFeatures\"\n      :is-admin=\"isAdmin\"\n      @update-template=\"loadData\"\n    ></router-view>\n  </div>\n</template>\n\n<style lang=\"scss\">\n\n@import '~vuetify/src/styles/settings/_variables';\n\n.TemplateView__description {\n  font-size: 14px;\n  margin-bottom: 12px;\n}\n\n@media #{map-get($display-breakpoints, 'md-and-up')} {\n  .TemplateView__description {\n    transform: translateY(-12px);\n    margin-bottom: 0;\n  }\n}\n\n</style>\n\n<script>\nimport axios from 'axios';\nimport EventBus from '@/event-bus';\nimport { getErrorMessage } from '@/lib/error';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport {\n  TEMPLATE_TYPE_ACTION_TITLES,\n  TEMPLATE_TYPE_ICONS,\n  TEMPLATE_TYPE_TITLES,\n  USER_PERMISSIONS,\n} from '@/lib/constants';\nimport ObjectRefsDialog from '@/components/ObjectRefsDialog.vue';\nimport NewTaskDialog from '@/components/NewTaskDialog.vue';\nimport EditTemplateDialog from '@/components/EditTemplateDialog.vue';\nimport PermissionsCheck from '@/components/PermissionsCheck';\nimport SingleLineEditable from '@/components/SingleLineEditable.vue';\nimport ProjectMixin from '@/components/ProjectMixin';\n\nexport default {\n  components: {\n    SingleLineEditable,\n    YesNoDialog,\n    ObjectRefsDialog,\n    NewTaskDialog,\n    EditTemplateDialog,\n  },\n\n  props: {\n    projectId: Number,\n    userPermissions: Number,\n    premiumFeatures: Object,\n  },\n\n  mixins: [PermissionsCheck, ProjectMixin],\n\n  data() {\n    return {\n      item: null,\n      inventory: null,\n      environment: null,\n      repositories: null,\n      deleteDialog: null,\n      editDialog: null,\n      copyDialog: null,\n      TEMPLATE_TYPE_ICONS,\n      TEMPLATE_TYPE_TITLES,\n      TEMPLATE_TYPE_ACTION_TITLES,\n      itemRefs: null,\n      itemRefsDialog: null,\n      newTaskDialog: null,\n      stopAllDialog: null,\n      forceStopAllDialog: null,\n      USER_PERMISSIONS,\n    };\n  },\n\n  computed: {\n    canRun() {\n      return this.can(USER_PERMISSIONS.runProjectTasks);\n    },\n\n    canStop() {\n      return this.can(USER_PERMISSIONS.runProjectTasks);\n    },\n\n    canUpdate() {\n      return this.can(USER_PERMISSIONS.manageProjectResources);\n    },\n\n    viewId() {\n      if (/^-?\\d+$/.test(this.$route.params.viewId)) {\n        return parseInt(this.$route.params.viewId, 10);\n      }\n      return this.$route.params.viewId;\n    },\n\n    itemId() {\n      if (/^-?\\d+$/.test(this.$route.params.templateId)) {\n        return parseInt(this.$route.params.templateId, 10);\n      }\n      return this.$route.params.templateId;\n    },\n    isNew() {\n      return this.itemId === 'new';\n    },\n    isLoaded() {\n      return this.item && this.inventory && this.environment && this.repositories;\n    },\n\n    isPro() {\n      return (process.env.VUE_APP_BUILD_TYPE || '').startsWith('pro_');\n    },\n  },\n\n  watch: {\n    async itemId() {\n      await this.loadData();\n    },\n  },\n\n  async created() {\n    if (this.isNew) {\n      await this.$router.replace({\n        path: `/project/${this.projectId}/templates/new/edit`,\n      });\n    } else {\n      await this.loadData();\n    }\n  },\n\n  methods: {\n    showDrawer() {\n      EventBus.$emit('i-show-drawer');\n    },\n\n    async stopAllTasks(force) {\n      try {\n        await axios({\n          method: 'post',\n          url: `/api/project/${this.projectId}/templates/${this.itemId}/stop_all_tasks`,\n          data: {\n            force,\n          },\n          responseType: 'json',\n        });\n\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: 'All running tasks have been requested to stop',\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      } finally {\n        this.stopAllDialog = false;\n        this.forceStopAllDialog = false;\n      }\n    },\n\n    async askDelete() {\n      this.itemRefs = (\n        await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/templates/${this.itemId}/refs`,\n          responseType: 'json',\n        })\n      ).data;\n\n      if (this.itemRefs.integrations.length > 0) {\n        this.itemRefsDialog = true;\n        return;\n      }\n\n      this.deleteDialog = true;\n    },\n\n    async remove() {\n      try {\n        await axios({\n          method: 'delete',\n          url: `/api/project/${this.projectId}/templates/${this.itemId}`,\n          responseType: 'json',\n        });\n\n        EventBus.$emit('i-snackbar', {\n          color: 'success',\n          text: `Template \"${this.item.name}\" deleted`,\n        });\n\n        await this.$router.push({\n          path: `/project/${this.projectId}/templates`,\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      } finally {\n        this.deleteDialog = false;\n      }\n    },\n\n    async onTemplateCopied(e) {\n      await this.$router.push({\n        path: `/project/${this.projectId}/templates/${e.item.id}`,\n      });\n    },\n\n    async loadData() {\n      [\n        this.item,\n        this.inventory,\n        this.environment,\n        this.repositories,\n      ] = await Promise.all([\n        this.loadProjectResource('templates', this.itemId),\n        this.loadProjectResources('inventory'),\n        this.loadProjectResources('environment'),\n        this.loadProjectResources('repositories'),\n      ]);\n    },\n\n    async updateDescription() {\n      try {\n        await axios({\n          method: 'put',\n          url: `/api/project/${this.projectId}/templates/${this.itemId}/description`,\n          responseType: 'json',\n          data: {\n            description: this.item.description,\n          },\n        });\n      } catch (err) {\n        EventBus.$emit('i-snackbar', {\n          color: 'error',\n          text: getErrorMessage(err),\n        });\n      }\n    },\n\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/Templates.vue",
    "content": "<template xmlns:v-slot=\"http://www.w3.org/1999/XSL/Transform\">\n  <div v-if=\"!isLoaded\">\n    <v-progress-linear\n      indeterminate\n      color=\"primary darken-2\"\n    ></v-progress-linear>\n  </div>\n  <div v-else>\n    <v-dialog\n      v-model=\"editViewsDialog\"\n      :max-width=\"400\"\n      persistent\n      :transition=\"false\"\n    >\n      <v-card>\n        <v-card-title>\n          {{ $t('editViews') }}\n          <v-spacer></v-spacer>\n          <v-btn icon @click=\"closeEditViewDialog()\">\n            <v-icon>mdi-close</v-icon>\n          </v-btn>\n        </v-card-title>\n        <v-card-text>\n          <EditViewsForm :project-id=\"projectId\"/>\n        </v-card-text>\n      </v-card>\n    </v-dialog>\n\n    <EditTemplateDialog\n      v-model=\"editDialog\"\n      :project-id=\"projectId\"\n      :item-app=\"itemApp\"\n      item-id=\"new\"\n      @save=\"loadItems()\"\n      :premium-features=\"premiumFeatures\"\n    ></EditTemplateDialog>\n\n    <NewTaskDialog\n      v-model=\"newTaskDialog\"\n      @save=\"itemId = null\"\n      @close=\"itemId = null\"\n      :project-id=\"projectId\"\n      :template=\"template\"\n      :template-id=\"itemId\"\n    />\n\n    <v-toolbar flat>\n      <v-app-bar-nav-icon @click=\"showDrawer()\"></v-app-bar-nav-icon>\n      <v-toolbar-title>\n        {{ $t('taskTemplates2') }}\n      </v-toolbar-title>\n      <v-spacer></v-spacer>\n\n      <v-menu\n        offset-y\n      >\n        <template v-slot:activator=\"{ on, attrs }\">\n          <v-btn\n            v-bind=\"attrs\"\n            v-on=\"on\"\n            color=\"primary\"\n            class=\"mr-1 pr-2\"\n            v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n            :disabled=\"!isAdmin && appsMixin.activeAppIds.length === 0\"\n          >\n            {{ $t('newTemplate') }}\n            <v-icon>mdi-chevron-down</v-icon>\n          </v-btn>\n        </template>\n        <v-list>\n          <v-list-item\n            v-for=\"appID in appsMixin.activeAppIds\"\n            :key=\"appID\"\n            link\n            @click=\"editItem('new'); itemApp = appID;\"\n          >\n            <v-list-item-icon>\n              <v-icon\n                :color=\"getAppColor(appID)\"\n              >\n                {{ getAppIcon(appID) }}\n              </v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>{{ getAppTitle(appID) }}</v-list-item-title>\n          </v-list-item>\n\n          <v-divider v-if=\"isAdmin && appsMixin.activeAppIds.length > 0\"/>\n\n          <v-list-item\n            v-if=\"isAdmin\"\n            key=\"other\"\n            link\n            to=\"/apps\"\n          >\n            <v-list-item-icon>\n              <v-icon>mdi-cogs</v-icon>\n            </v-list-item-icon>\n            <v-list-item-title>Applications</v-list-item-title>\n          </v-list-item>\n        </v-list>\n      </v-menu>\n\n      <v-btn icon @click=\"settingsSheet = true\">\n        <v-icon>mdi-cog</v-icon>\n      </v-btn>\n    </v-toolbar>\n\n    <v-tabs show-arrows class=\"pl-4\" v-model=\"viewTab\">\n\n      <v-tab\n        v-for=\"(view) in views\"\n        :key=\"view.id\"\n        :to=\"getViewUrl(view.id)\"\n        :disabled=\"viewItemsLoading\"\n        :style=\"{\n          'text-decoration': view.hidden ? 'line-through' : 'none',\n        }\"\n      >{{ view.title }}\n      </v-tab>\n\n      <v-btn\n        icon\n        class=\"mt-2 ml-4\"\n        @click=\"editViewsDialog = true\"\n        v-if=\"can(USER_PERMISSIONS.manageProjectResources)\"\n      >\n        <v-icon>mdi-pencil</v-icon>\n      </v-btn>\n    </v-tabs>\n\n    <v-divider style=\"margin-top: -1px;\"/>\n\n    <v-data-table\n      hide-default-footer\n      class=\"mt-4 templates-table\"\n      single-expand\n      show-expand\n      :headers=\"filteredHeaders\"\n      :items=\"items\"\n      :items-per-page=\"Number.MAX_VALUE\"\n      :expanded.sync=\"openedItems\"\n      :style=\"{\n        opacity: viewItemsLoading ? 0.3 : 1,\n      }\"\n    >\n      <template v-slot:item.name=\"{ item }\">\n        <v-icon\n          class=\"mr-3\"\n          small\n        >\n          {{ getAppIcon(item.app) }}\n        </v-icon>\n\n        <!--        <v-icon class=\"mr-3\" small>-->\n        <!--          {{ TEMPLATE_TYPE_ICONS[item.type] }}-->\n        <!--        </v-icon>-->\n\n        <router-link\n          :to=\"viewId\n              ? `/project/${projectId}/views/${viewId}/templates/${item.id}`\n              : `/project/${projectId}/templates/${item.id}`\"\n        >{{ item.name }}\n        </router-link>\n      </template>\n\n      <template v-slot:item.version=\"{ item }\">\n        <TaskLink\n          v-if=\"item.last_task && item.last_task.tpl_type !== ''\"\n          :disabled=\"true\"\n          :status=\"item.last_task.status\"\n\n          :task-id=\"item.last_task.tpl_type === 'build'\n              ? item.last_task.id\n              : (item.last_task.build_task || {}).id\"\n\n          :label=\"item.last_task.tpl_type === 'build'\n              ? item.last_task.version\n              : (item.last_task.build_task || {}).version\"\n\n          :tooltip=\"item.last_task.tpl_type === 'build'\n              ? item.last_task.message\n              : (item.last_task.build_task || {}).message\"\n        />\n        <div v-else>&mdash;</div>\n      </template>\n\n      <template v-slot:item.status=\"{ item }\">\n        <div class=\"mt-2 mb-2 d-flex\" v-if=\"item.last_task != null\">\n          <TaskStatus :status=\"item.last_task.status\"/>\n        </div>\n        <div v-else class=\"mt-3 mb-2 d-flex\" style=\"color: gray;\">{{ $t('notLaunched') }}</div>\n      </template>\n\n      <template v-slot:item.last_task=\"{ item }\">\n        <div class=\"mt-2 mb-2\" v-if=\"item.last_task != null\" style=\"line-height: 1\">\n          <TaskLink\n            :task-id=\"item.last_task.id\"\n            :label=\"'#' + item.last_task.id\"\n            :tooltip=\"item.last_task.message\"\n          />\n          <div style=\"color: gray; font-size: 14px;\">\n            {{ $t('by', {user_name: item.last_task.user_name}) }}\n          </div>\n        </div>\n      </template>\n\n      <template v-slot:item.inventory_id=\"{ item }\">\n        {{ (inventory.find((x) => x.id === item.inventory_id) || {name: '—'}).name }}\n      </template>\n\n      <template v-slot:item.environment_id=\"{ item }\">\n        {{ (environment.find((x) => x.id === item.environment_id) || {name: '—'}).name }}\n      </template>\n\n      <template v-slot:item.repository_id=\"{ item }\">\n        {{ repositories.find((x) => x.id === item.repository_id).name }}\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn\n            v-if=\"canRun(item)\"\n            @click=\"createTask(item.id)\"\n          >\n            <v-icon>mdi-play</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n\n      <template v-slot:expanded-item=\"{ headers, item }\">\n        <td\n          :colspan=\"headers.length\"\n          v-if=\"openedItems.some((template) => template.id === item.id)\"\n        >\n          <TaskList\n            style=\"border: 1px solid lightgray; border-radius: 6px; margin: 10px 0;\"\n            :template=\"item\"\n            :limit=\"5\"\n            :hide-footer=\"true\"\n          />\n        </td>\n      </template>\n    </v-data-table>\n\n    <TableSettingsSheet\n      v-model=\"settingsSheet\"\n      table-name=\"project__template\"\n      :headers=\"headers\"\n      @change=\"onTableSettingsChange\"\n    />\n  </div>\n</template>\n<style lang=\"scss\">\n@import '~vuetify/src/styles/settings/variables';\n\n.templates-table .text-start:first-child {\n  padding-right: 0 !important;\n}\n\n@media #{map-get($display-breakpoints, 'sm-and-down')} {\n  .templates-table .v-data-table__mobile-row:first-child {\n    display: none !important;\n  }\n}\n</style>\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport TaskLink from '@/components/TaskLink.vue';\nimport axios from 'axios';\nimport EditViewsForm from '@/components/EditViewsForm.vue';\nimport TableSettingsSheet from '@/components/TableSettingsSheet.vue';\nimport TaskList from '@/components/TaskList.vue';\nimport EventBus from '@/event-bus';\nimport TaskStatus from '@/components/TaskStatus.vue';\nimport socket from '@/socket';\nimport NewTaskDialog from '@/components/NewTaskDialog.vue';\n\nimport { TEMPLATE_TYPE_ACTION_TITLES, TEMPLATE_TYPE_ICONS } from '@/lib/constants';\nimport EditTemplateDialog from '@/components/EditTemplateDialog.vue';\nimport AppsMixin from '@/components/AppsMixin';\n\nexport default {\n  components: {\n    EditTemplateDialog,\n    TableSettingsSheet,\n    TaskStatus,\n    TaskLink,\n    TaskList,\n    EditViewsForm,\n    NewTaskDialog,\n  },\n  props: {\n    premiumFeatures: Object,\n  },\n  mixins: [ItemListPageBase, AppsMixin],\n\n  data() {\n    return {\n      TEMPLATE_TYPE_ICONS,\n      TEMPLATE_TYPE_ACTION_TITLES,\n      inventory: null,\n      environment: null,\n      repositories: null,\n      newTaskDialog: null,\n      settingsSheet: null,\n      filteredHeaders: [],\n      openedItems: [],\n      views: null,\n      editViewsDialog: null,\n      viewItemsLoading: null,\n      viewTab: null,\n      apps: null,\n      itemApp: '',\n    };\n  },\n\n  computed: {\n\n    viewId() {\n      if (/^-?\\d+$/.test(this.$route.params.viewId)) {\n        return parseInt(this.$route.params.viewId, 10);\n      }\n      return this.$route.params.viewId;\n    },\n\n    template() {\n      if (this.itemId == null || this.itemId === 'new') {\n        return null;\n      }\n      return this.items.find((x) => x.id === this.itemId);\n    },\n\n    isLoaded() {\n      return this.items\n        && this.inventory\n        && this.environment\n        && this.repositories\n        && this.views\n        && this.isAppsLoaded;\n    },\n  },\n  watch: {\n    async viewId() {\n      try {\n        this.viewItemsLoading = true;\n        await this.loadItems();\n        if (this.viewId) {\n          localStorage.setItem(`project${this.projectId}__lastVisitedViewId`, this.viewId);\n        } else {\n          localStorage.removeItem(`project${this.projectId}__lastVisitedViewId`);\n        }\n      } finally {\n        this.viewItemsLoading = false;\n      }\n    },\n  },\n\n  async created() {\n    socket.addListener((data) => this.onWebsocketDataReceived(data));\n    await this.loadData();\n  },\n\n  methods: {\n    async beforeLoadItems() {\n      await this.loadViews();\n      if (this.viewId == null) {\n        let viewId = localStorage.getItem(`project${this.projectId}__lastVisitedViewId`);\n\n        if (viewId == null) {\n          viewId = this.views[0]?.id;\n        }\n\n        if (viewId != null\n          && this.views.some((v) => v.id === parseInt(viewId, 10))) {\n          await this.$router.push({ path: `/project/${this.projectId}/views/${viewId}/templates` });\n        }\n      }\n    },\n\n    allowActions() {\n      return true;\n    },\n\n    getViewUrl(viewId) {\n      if (viewId == null) {\n        return `/project/${this.projectId}/templates`;\n      }\n      return `/project/${this.projectId}/views/${viewId}/templates`;\n    },\n\n    async loadViews() {\n      this.views = (await axios({\n        method: 'get',\n        url: `/api/project/${this.projectId}/views`,\n        responseType: 'json',\n      })).data.filter((v) => !v.hidden || this.can(this.USER_PERMISSIONS.manageProjectResources));\n      this.views.sort((v1, v2) => v1.position - v2.position);\n\n      if (this.viewId != null && !this.views.some((v) => v.id === this.viewId)) {\n        await this.$router.push({ path: `/project/${this.projectId}/templates` });\n      }\n    },\n\n    async closeEditViewDialog() {\n      this.editViewsDialog = false;\n      await this.loadViews();\n    },\n\n    async onWebsocketDataReceived(data) {\n      if (data.project_id !== this.projectId || data.type !== 'update') {\n        return;\n      }\n\n      const template = (this.items || []).find((item) => item.id === data.template_id);\n\n      if (template == null) {\n        return;\n      }\n\n      if (data.task_id !== template.last_task_id) {\n        const lastTask = (await axios({\n          method: 'get',\n          url: `/api/project/${this.projectId}/tasks/${data.task_id}`,\n          responseType: 'json',\n        })).data;\n\n        if (template.last_task) {\n          Object.assign(template.last_task, lastTask);\n        } else {\n          template.last_task = lastTask;\n        }\n\n        template.last_task_id = data.task_id;\n      }\n\n      Object.assign(template.last_task, {\n        ...data,\n        type: undefined,\n      });\n    },\n\n    showTaskLog(taskId) {\n      EventBus.$emit('i-show-task', {\n        taskId,\n      });\n    },\n\n    canRun(item) {\n      if (this.isAdmin) {\n        return true;\n      }\n\n      const perm = this.USER_PERMISSIONS.runProjectTasks;\n\n      if (item.permissions != null) {\n        // eslint-disable-next-line no-bitwise\n        return (item.permissions & perm) === perm;\n      }\n\n      // eslint-disable-next-line no-bitwise\n      return (this.userPermissions & perm) === perm;\n    },\n\n    createTask(itemId) {\n      this.itemId = itemId;\n      this.newTaskDialog = true;\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('name'),\n          value: 'name',\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n        {\n          text: this.$i18n.t('version'),\n          value: 'version',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('status'),\n          value: 'status',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('lastTask'),\n          value: 'last_task',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('playbook'),\n          value: 'playbook',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('inventory'),\n          value: 'inventory_id',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('environment'),\n          value: 'environment_id',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('repository2'),\n          value: 'repository_id',\n          sortable: false,\n        },\n      ];\n    },\n\n    getItemsUrl() {\n      return this.viewId == null\n        ? `/api/project/${this.projectId}/templates`\n        : `/api/project/${this.projectId}/views/${this.viewId}/templates`;\n    },\n\n    async loadData() {\n      [\n        this.inventory,\n        this.environment,\n        this.repositories,\n      ] = await Promise.all([\n        this.loadProjectResources('inventory'),\n        this.loadProjectResources('environment'),\n        this.loadProjectResources('repositories'),\n      ]);\n    },\n\n    onTableSettingsChange({ headers }) {\n      this.filteredHeaders = headers;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/template/TemplateDetails.vue",
    "content": "<template>\n  <v-container fluid class=\"pb-0 mt-8\">\n    <v-row class=\"mb-2\">\n      <v-col>\n        <v-list subheader>\n          <v-list-item>\n            <v-list-item-icon>\n              <v-icon>mdi-book-play</v-icon>\n            </v-list-item-icon>\n\n            <v-list-item-content>\n              <v-list-item-title>{{ $t('playbook') }}</v-list-item-title>\n              <v-list-item-subtitle>{{ template.playbook }}</v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-col>\n      <v-col>\n        <v-list subheader>\n          <v-list-item>\n            <v-list-item-icon>\n              <v-icon>{{ TEMPLATE_TYPE_ICONS[template.type] }}</v-icon>\n            </v-list-item-icon>\n\n            <v-list-item-content>\n              <v-list-item-title>{{ $t('type') }}</v-list-item-title>\n              <v-list-item-subtitle>{{ $t(TEMPLATE_TYPE_TITLES[template.type]) }}\n              </v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-col>\n      <v-col>\n        <v-list subheader>\n          <v-list-item>\n            <v-list-item-icon>\n              <v-icon>mdi-monitor</v-icon>\n            </v-list-item-icon>\n\n            <v-list-item-content>\n              <v-list-item-title>{{ $t('inventory') }}</v-list-item-title>\n              <v-list-item-subtitle>\n                {{ (inventory.find((x) => x.id === template.inventory_id) || {name: '—'}).name }}\n              </v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-col>\n      <v-col>\n        <v-list subheader>\n          <v-list-item>\n            <v-list-item-icon>\n              <v-icon>mdi-code-braces</v-icon>\n            </v-list-item-icon>\n            <v-list-item-content>\n              <v-list-item-title>{{ $t('environment') }}</v-list-item-title>\n              <v-list-item-subtitle>\n                {{ environment.find((x) => x.id === template.environment_id).name }}\n              </v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-col>\n      <v-col>\n        <v-list subheader>\n          <v-list-item>\n            <v-list-item-icon>\n              <v-icon>mdi-git</v-icon>\n            </v-list-item-icon>\n            <v-list-item-content>\n              <v-list-item-title>{{ $t('repository2') }}</v-list-item-title>\n              <v-list-item-subtitle>\n                {{ repositories.find((x) => x.id === template.repository_id).name }}\n              </v-list-item-subtitle>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </v-col>\n    </v-row>\n\n    <TaskStats :project-id=\"template.project_id\" :template-id=\"template.id\" />\n\n  </v-container>\n\n</template>\n<script>\nimport {\n  TEMPLATE_TYPE_ACTION_TITLES,\n  TEMPLATE_TYPE_ICONS,\n  TEMPLATE_TYPE_TITLES,\n} from '@/lib/constants';\nimport TaskStats from '@/components/TaskStats.vue';\n\nexport default {\n  components: { TaskStats },\n\n  props: {\n    template: Object,\n    repositories: Array,\n    inventory: Array,\n    environment: Array,\n  },\n\n  data() {\n    return {\n      dateRanges: [{\n        text: 'Past week',\n        value: 'last_week',\n      }, {\n        text: 'Past month',\n        value: 'last_month',\n      }, {\n        text: 'Past year',\n        value: 'last_year',\n      }],\n      users: [{\n        text: 'All users',\n        value: null,\n      }],\n      TEMPLATE_TYPE_ICONS,\n      TEMPLATE_TYPE_TITLES,\n      TEMPLATE_TYPE_ACTION_TITLES,\n    };\n  },\n\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/template/TemplatePerms.vue",
    "content": "<template>\n  <div v-if=\"items != null\">\n    <EditTemplatePermissionDialog\n      v-model=\"editDialog\"\n      :project-id=\"projectId\"\n      :template-id=\"templateId\"\n      :item-id=\"itemId\"\n      @save=\"loadItems()\"\n    />\n\n    <YesNoDialog\n      :title=\"$t('deleteTemplatePermission')\"\n      :text=\"$t('askDeleteTemplatePermission')\"\n      v-model=\"deleteItemDialog\"\n      @yes=\"deleteItem(itemId)\"\n    />\n\n    <v-alert\n      v-if=\"!premiumFeatures.custom_roles_management\"\n      text\n      color=\"amber darken-3\"\n      class=\"PageAlert\"\n    >\n      <span class=\"mr-1\" v-html=\"$t('roles_only_enterprise')\"></span>\n\n      <v-btn\n        dark\n        depressed\n        v-if=\"isAdmin\"\n        color=\"amber darken-3\"\n        href=\"https://semaphoreui.com/enterprise\"\n        target=\"_blank\"\n      >\n        {{ $t('upgrade_to_pro') }}\n      </v-btn>\n\n      <span v-else style=\"font-weight: bold;\">\n        {{ $t('contact_admin_to_upgrade_enterprise') }}\n      </span>\n    </v-alert>\n\n    <v-btn\n      :disabled=\"!premiumFeatures.custom_roles_management\"\n      color=\"primary\"\n      @click=\"editItem('new')\"\n      style=\"position: absolute; right: 16px;\"\n    >{{ $t('Add Role') }}\n    </v-btn>\n\n    <v-data-table\n      :headers=\"headers\"\n      :items=\"items\"\n      hide-default-footer\n      class=\"mt-4\"\n      :items-per-page=\"Number.MAX_VALUE\"\n    >\n      <template v-slot:item.role=\"{ item }\">\n        {{ getRoleName(item.role_slug) }}\n      </template>\n\n      <template v-slot:item.permissions=\"{ item }\">\n        <TemplatePermissionsChips\n          :permissions=\"item.permissions\"\n          scope=\"template\"\n        />\n      </template>\n\n      <template v-slot:item.actions=\"{ item }\">\n        <v-btn-toggle dense :value-comparator=\"() => false\">\n          <v-btn\n            @click=\"editItem(item.id)\"\n          >\n            <v-icon>mdi-pencil</v-icon>\n          </v-btn>\n          <v-btn\n            @click=\"askDeleteItem(item.id)\"\n          >\n            <v-icon>mdi-delete</v-icon>\n          </v-btn>\n        </v-btn-toggle>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<script>\nimport ItemListPageBase from '@/components/ItemListPageBase';\nimport EditTemplatePermissionDialog from '@/components/EditTemplatePermissionDialog.vue';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport TemplatePermissionsChips from '@/components/TemplatePermissionsChips.vue';\nimport axios from 'axios';\nimport { USER_PERMISSIONS } from '@/lib/constants';\n\nexport default {\n  components: {\n    EditTemplatePermissionDialog,\n    YesNoDialog,\n    TemplatePermissionsChips,\n  },\n  mixins: [ItemListPageBase],\n\n  props: {\n    projectId: Number,\n    template: Object,\n    repositories: Array,\n    inventory: Array,\n    environment: Array,\n    premiumFeatures: Object,\n    isAdmin: Boolean,\n  },\n\n  data() {\n    return {\n      USER_PERMISSIONS,\n      availableRoles: [],\n    };\n  },\n\n  computed: {\n    templateId() {\n      return this.template.id;\n    },\n  },\n\n  async created() {\n    await this.loadRoles();\n  },\n\n  methods: {\n    async loadRoles() {\n      try {\n        const response = await axios.get(`/api/project/${this.template.project_id}/roles?mode=merge`);\n        this.availableRoles = response.data;\n      } catch (error) {\n        // eslint-disable-next-line no-console\n        console.error('Failed to load roles:', error);\n      }\n    },\n\n    getRoleName(roleId) {\n      const role = this.availableRoles.find((r) => r.slug === roleId);\n      return role ? role.name : `Role ${roleId}`;\n    },\n\n    getRoleColor(roleId) {\n      const role = this.availableRoles.find((r) => r.slug === roleId);\n      if (!role) return 'gray';\n\n      // Color based on role slug or default colors\n      const colorMap = {\n        owner: 'red',\n        manager: 'orange',\n        task_runner: 'blue',\n        guest: 'gray',\n      };\n\n      return colorMap[role.slug] || 'primary';\n    },\n\n    allowActions() {\n      return true;\n    },\n\n    getHeaders() {\n      return [\n        {\n          text: this.$i18n.t('role'),\n          value: 'role',\n          width: '25%',\n        },\n        {\n          text: this.$i18n.t('permissions'),\n          value: 'permissions',\n          width: '65%',\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '10%',\n        }];\n    },\n\n    getSingleItemUrl() {\n      return `/api/project/${this.projectId}/templates/${this.templateId}/perms/${this.itemId}`;\n    },\n\n    getItemsUrl() {\n      return `/api/project/${this.projectId}/templates/${this.templateId}/perms`;\n    },\n\n    getEventName() {\n      return 'i-template-perms';\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/src/views/project/template/TemplateTerraformState.vue",
    "content": "<template>\n  <div v-if=\"inventories != null && states != null\" class=\"mt-8\">\n\n    <EditDialog\n      v-model=\"editDialog\"\n      :save-button-text=\"aliasId === 'new' ? $t('create') : $t('save')\"\n      :title=\"`${aliasId === 'new' ? $t('nnew') : $t('edit')} Key`\"\n      :max-width=\"450\"\n      @save=\"loadAliases()\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <TerraformAliasForm\n          :project-id=\"template.project_id\"\n          :item-id=\"aliasId\"\n          :inventory-id=\"inventoryId\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <YesNoDialog\n      :title=\"$t('deleteInventory')\"\n      :text=\"$t('askDeleteInv')\"\n      v-model=\"deleteInventoryDialog\"\n      @yes=\"deleteInventory()\"\n    />\n\n    <EditDialog\n      v-model=\"inventoryDialog\"\n      :save-button-text=\"itemId === 'new' ? $t('create') : $t('save')\"\n      :icon=\"getAppIcon(template.app)\"\n      :icon-color=\"getAppColor(template.app)\"\n      :title=\"`${$t('nnew')} ${APP_INVENTORY_TITLE[template.app]}`\"\n      :max-width=\"450\"\n      @save=\"onNewInventory\"\n    >\n      <template v-slot:form=\"{ onSave, onError, needSave, needReset }\">\n        <TerraformInventoryForm\n          :template-id=\"template.id\"\n          :project-id=\"template.project_id\"\n          :name-prefix=\"`${template.name} - `\"\n          :item-id=\"itemId\"\n          :type=\"`${template.app}-workspace`\"\n          @save=\"onSave\"\n          @error=\"onError\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <EditDialog\n      v-model=\"attachInventoryDialog\"\n      :save-button-text=\"$t('Attach')\"\n      :icon=\"getAppIcon(template.app)\"\n      :icon-color=\"getAppColor(template.app)\"\n      :max-width=\"450\"\n      title=\"Choose workspace to attach\"\n      @save=\"attachInventory($event.itemId)\"\n    >\n      <template v-slot:form=\"{ onSave, needSave, needReset }\">\n        <InventorySelectForm\n          :app=\"template.app\"\n          :project-id=\"template.project_id\"\n          @save=\"onSave\"\n          :need-save=\"needSave\"\n          :need-reset=\"needReset\"\n        />\n      </template>\n    </EditDialog>\n\n    <div\n      class=\"px-4 py-3 CenterToScreen\"\n      style=\"max-width: 1000px; margin: auto;\"\n    >\n      <div class=\"mb-6\">\n        <v-btn-toggle\n          dense\n          v-model=\"inventoryId\"\n          v-if=\"inventories.length > 0\"\n          mandatory\n          style=\"overflow: auto\"\n          class=\"mb-2\"\n        >\n          <v-btn\n            v-for=\"inv in inventories\"\n            :key=\"inv.id\"\n            :value=\"inv.id\"\n            style=\"border-radius: 0\"\n          >\n            {{ inv.inventory }}\n            <v-icon\n              dark\n              v-if=\"inv.id === template.inventory_id\"\n              class=\"ml-1\"\n              color=\"success\"\n            >mdi-check\n            </v-icon>\n          </v-btn>\n        </v-btn-toggle>\n\n        <span v-else>No workspaces.</span>\n\n        <v-menu offset-y>\n          <template v-slot:activator=\"{ on, attrs }\">\n            <v-btn\n              color=\"primary\"\n              dark\n              fab\n              small\n              class=\"ml-3\"\n              v-bind=\"attrs\"\n              v-on=\"on\"\n            >\n              <v-icon dark>mdi-plus</v-icon>\n            </v-btn>\n          </template>\n          <v-list>\n            <v-list-item @click=\"itemId = 'new'; inventoryDialog = true\">\n              <v-list-item-icon>\n                <v-icon>mdi-pencil</v-icon>\n              </v-list-item-icon>\n              <v-list-item-title>New workspace</v-list-item-title>\n            </v-list-item>\n            <v-list-item @click=\"attachInventoryDialog = true\">\n              <v-list-item-icon>\n                <v-icon>mdi-connection</v-icon>\n              </v-list-item-icon>\n              <v-list-item-title>Attach existing workspace</v-list-item-title>\n            </v-list-item>\n          </v-list>\n        </v-menu>\n      </div>\n\n      <v-card\n        style=\"background-color: var(--highlighted-card-bg-color);\"\n        v-if=\"inventories.length > 0\"\n      >\n\n        <v-card-title\n          class=\"d-flex justify-space-between align-center\"\n          style=\"font-weight: normal;\"\n        >\n\n          <span>Workspace: <strong>{{ inventory.inventory }}</strong></span>\n\n          <div>\n\n            <v-btn\n              class=\"mr-4\"\n              :disabled=\"inventoryId === template.inventory_id\"\n              color=\"success\"\n              @click=\"setDefaultInventory()\"\n            >\n              Make default\n            </v-btn>\n\n            <v-btn\n              class=\"mr-4\"\n              color=\"primary\"\n              :disabled=\"inventoryId === template.inventory_id\"\n              @click=\"detachInventory()\"\n            >\n              Detach\n            </v-btn>\n\n            <v-btn\n              icon\n              class=\"mr-2\"\n              color=\"error\"\n              :disabled=\"inventoryId === template.inventory_id\"\n              @click=\"deleteInventoryDialog = true;\"\n            >\n              <v-icon>mdi-delete</v-icon>\n            </v-btn>\n\n            <v-btn\n              icon\n              @click=\"itemId = inventoryId; inventoryDialog = true;\"\n            >\n              <v-icon>mdi-pencil</v-icon>\n            </v-btn>\n          </div>\n\n        </v-card-title>\n\n        <v-divider />\n\n        <v-alert\n          type=\"info\"\n          text\n          color=\"hsl(348deg, 86%, 61%)\"\n          style=\"border-radius: 0;\"\n          v-if=\"!premiumFeatures.terraform_backend\"\n        >\n            <span class=\"mr-2\">\n              Terraform/OpenTofu HTTP backend available only in <b>PRO</b> version.\n            </span>\n          <v-btn\n            color=\"hsl(348deg, 86%, 61%)\"\n            href=\"https://semaphoreui.com/pro#runners\"\n          >\n            Learn more\n            <v-icon>mdi-chevron-right</v-icon>\n          </v-btn>\n        </v-alert>\n        <v-card-text>\n\n          <h3>Aliases</h3>\n          <div class=\"mb-6\">Unique endpoints (aliases) to access your Terraform HTTP backend.</div>\n\n          <div v-for=\"alias of (aliases || [])\" :key=\"alias.id\">\n            <code class=\"mr-2\">{{ alias.url }}</code>\n            <CopyClipboardButton\n              :text=\"alias.url\"\n              :success-message=\"$t('aliasUrlCopied')\"\n            />\n            <v-btn icon @click=\"editAlias(alias.id)\">\n              <v-icon>mdi-pencil</v-icon>\n            </v-btn>\n            <v-btn icon @click=\"deleteAlias(alias.id)\">\n              <v-icon>mdi-delete</v-icon>\n            </v-btn>\n          </div>\n\n          <v-btn\n            color=\"primary\"\n            @click=\"addAlias()\"\n            :disabled=\"!premiumFeatures.terraform_backend\"\n            class=\"mb-8\"\n          >\n            {{ aliases == null ? $t('LoadAlias') : $t('AddAlias') }}\n          </v-btn>\n\n          <v-divider class=\"mb-4\" />\n\n          <h3>State history</h3>\n          <div class=\"mb-6\">Chronological history of the workspace state changes.</div>\n\n          <v-data-table\n            style=\"\n              background: transparent;\n            \"\n            v-if=\"premiumFeatures.terraform_backend\"\n            :headers=\"headers\"\n            :items=\"states\"\n            :footer-props=\"{ itemsPerPageOptions: [20] }\"\n            single-expand\n            show-expand\n            class=\"mt-4 TaskListTable TaskListTable TerraformStateTable\"\n          >\n            <template v-slot:item.id=\"{ item }\">\n              #{{ item.id }}\n            </template>\n\n            <template v-slot:item.task_id=\"{ item }\">\n              <TaskLink\n                v-if=\"item.task_id\"\n                :task-id=\"item.task_id\"\n                :label=\"'#' + item.task_id\"\n              />\n              <div v-else>&mdash;</div>\n            </template>\n\n            <template v-slot:item.status=\"{ item }\">\n              <TaskStatus :status=\"item.status\" />\n            </template>\n\n            <template v-slot:item.created=\"{ item }\">\n              {{ item.created | formatDate }}\n            </template>\n\n            <template v-slot:expanded-item=\"{ headers, item }\">\n              <td\n                :colspan=\"headers.length\"\n                style=\"max-width: 400px\"\n              >\n                <TerraformStateView\n                  class=\"mb-1\"\n                  :project-id=\"template.project_id\"\n                  :inventory-id=\"inventoryId\"\n                  :state-id=\"item.id\"\n                />\n              </td>\n            </template>\n          </v-data-table>\n\n          <v-container v-else>\n            <div style=\"text-align: center; color: grey;\">No state available.</div>\n          </v-container>\n\n        </v-card-text>\n      </v-card>\n\n    </div>\n\n  </div>\n</template>\n<style lang=\"scss\">\n.TerraformStateTable {\n\n  .v-data-table__wrapper {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .v-data-footer {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n}\n</style>\n<script>\n\nimport axios from 'axios';\nimport TerraformInventoryForm from '@/components/TerraformInventoryForm.vue';\nimport EditDialog from '@/components/EditDialog.vue';\nimport { APP_INVENTORY_TITLE } from '@/lib/constants';\nimport AppsMixin from '@/components/AppsMixin';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\nimport InventorySelectForm from '@/components/InventorySelectForm.vue';\nimport TerraformAliasForm from '@/components/TerraformAliasForm.vue';\nimport TaskStatus from '@/components/TaskStatus.vue';\nimport TaskLink from '@/components/TaskLink.vue';\nimport TerraformStateView from '@/components/TerraformStateView.vue';\nimport CopyClipboardButton from '@/components/CopyClipboardButton.vue';\n\nexport default {\n  mixins: [AppsMixin],\n  computed: {\n    APP_INVENTORY_TITLE() {\n      return APP_INVENTORY_TITLE;\n    },\n  },\n\n  components: {\n    CopyClipboardButton,\n    TerraformStateView,\n    TaskLink,\n    TaskStatus,\n    TerraformAliasForm,\n    InventorySelectForm,\n    YesNoDialog,\n    EditDialog,\n    TerraformInventoryForm,\n  },\n\n  props: {\n    template: Object,\n    premiumFeatures: Object,\n  },\n\n  watch: {\n    async inventoryId() {\n      this.inventory = (this.inventories || []).find((inv) => inv.id === this.inventoryId);\n      await this.loadAliases();\n      await this.loadStates();\n    },\n  },\n\n  data() {\n    return {\n      aliases: [],\n      states: null,\n      inventory: null,\n      inventories: null,\n      inventoryDialog: null,\n      inventoryId: null,\n      deleteInventoryDialog: null,\n      attachInventoryDialog: null,\n      aliasId: null,\n      editDialog: null,\n      headers: [\n        {\n          text: 'ID',\n          value: 'id',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('taskId'),\n          value: 'task_id',\n          sortable: false,\n        },\n        {\n          text: this.$i18n.t('created'),\n          value: 'created',\n          sortable: false,\n        },\n        {\n          value: 'actions',\n          sortable: false,\n          width: '0%',\n        },\n      ],\n      itemId: null,\n    };\n  },\n\n  async created() {\n    this.inventoryId = this.template.inventory_id;\n    await this.loadInventories();\n    this.inventory = this.inventories.find((inv) => inv.id === this.inventoryId);\n    await this.loadAliases();\n    await this.loadStates();\n  },\n\n  methods: {\n\n    async setDefaultInventory() {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.template.project_id}/templates/${this.template.id}/inventory/${this.inventoryId}/set_default`,\n      });\n      this.$emit('update-template', {});\n    },\n\n    async detachInventory() {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.template.project_id}/templates/${this.template.id}/inventory/${this.inventoryId}/detach`,\n      });\n      await this.loadInventories();\n    },\n\n    async deleteInventory() {\n      await axios({\n        method: 'delete',\n        url: `/api/project/${this.template.project_id}/inventory/${this.inventoryId}`,\n      });\n      await this.loadInventories();\n    },\n\n    async onNewInventory(e) {\n      await this.loadInventories();\n      this.inventoryId = e.item.id;\n    },\n\n    async attachInventory(inventoryId) {\n      await axios({\n        method: 'post',\n        url: `/api/project/${this.template.project_id}/templates/${this.template.id}/inventory/${inventoryId}/attach`,\n      });\n      await this.loadInventories();\n      this.inventoryId = inventoryId;\n    },\n\n    async loadStates() {\n      if (!this.inventoryId) {\n        this.states = [];\n        return;\n      }\n      this.states = (await axios.get(`/api/project/${this.template.project_id}/inventory/${this.inventoryId}/terraform/states`)).data;\n    },\n\n    async loadInventories() {\n      this.inventories = (await axios({\n        url: `/api/project/${this.template.project_id}/inventory?template_id=${this.template.id}`,\n        responseType: 'json',\n      })).data;\n\n      if (\n        (this.inventoryId == null\n          || !this.inventories.some((inv) => inv.id === this.inventoryId))\n        && this.inventories.length > 0) {\n        this.inventoryId = this.inventories[0].id;\n      }\n    },\n\n    async loadAliases() {\n      if (!this.inventoryId) {\n        this.aliases = [];\n        return;\n      }\n      try {\n        this.aliases = (await axios({\n          url: `/api/project/${this.template.project_id}/inventory/${this.inventoryId}/terraform/aliases`,\n          responseType: 'json',\n        })).data;\n      } catch {\n        this.aliases = null;\n      }\n    },\n\n    async deleteAlias(alias) {\n      await axios({\n        method: 'delete',\n        url: `/api/project/${this.template.project_id}/inventory/${this.inventoryId}/terraform/aliases/${alias}`,\n      });\n      await this.loadAliases();\n    },\n\n    editAlias(alias) {\n      this.aliasId = alias;\n      this.editDialog = true;\n    },\n\n    async addAlias() {\n      this.aliasId = 'new';\n      this.editDialog = true;\n    },\n  },\n};\n</script>\n"
  },
  {
    "path": "web/tests/unit/example.spec.js",
    "content": "import { expect } from 'chai';\nimport { shallowMount } from '@vue/test-utils';\nimport YesNoDialog from '@/components/YesNoDialog.vue';\n\ndescribe('YesNoDialog.vue', () => {\n  it('renders props.msg when passed', () => {\n    const wrapper = shallowMount(YesNoDialog);\n    expect(wrapper.text()).to.include('Cancel  Yes');\n  });\n});\n"
  },
  {
    "path": "web/tests/unit/lib/Listenable.spec.js",
    "content": "/* eslint-disable symbol-description */\n/* eslint-disable no-unused-expressions */\nimport { expect } from 'chai';\nimport Listenable from '@/lib/Listenable';\n\ndescribe('Listenable', () => {\n  it('Should add listener', () => {\n    const listenable = new Listenable();\n    const listenerId = listenable.addListener(() => {});\n    expect(listenable.listeners[listenerId]).to.be.ok;\n  });\n\n  it('Should remove listener', () => {\n    const listenable = new Listenable();\n    const listenerId = Symbol();\n    listenable.listeners[listenerId] = () => {};\n    listenable.removeListener(listenerId);\n    expect(listenable.listeners[listenerId]).to.be.undefined;\n  });\n\n  it('Should call listener', () => {\n    const listenable = new Listenable();\n    let d;\n    listenable.addListener((data) => {\n      d = data;\n    });\n    listenable.callListeners({\n      ok: true,\n    });\n    expect(d).to.eql({\n      ok: true,\n    });\n  });\n});\n"
  },
  {
    "path": "web/tests/unit/lib/Socket.spec.js",
    "content": "/* eslint-disable symbol-description */\n/* eslint-disable no-unused-expressions */\nimport { expect } from 'chai';\nimport Socket from '@/lib/Socket';\n\ndescribe('Socket', () => {\n  it('Should add listener', () => {\n    const socket = new Socket(() => ({\n      close: () => {},\n    }));\n    expect(socket.ws).to.be.ok;\n  });\n});\n"
  },
  {
    "path": "web/tests/unit/lib/error.spec.js",
    "content": ""
  },
  {
    "path": "web/vue.config.js",
    "content": "const webpack = require('webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      new webpack.DefinePlugin({\n        'process.env.VUE_APP_BUILD_TYPE': JSON.stringify(process.env.VUE_APP_BUILD_TYPE),\n      }),\n    ],\n    devServer: {\n      historyApiFallback: true,\n      proxy: {\n        '^/api': {\n          target: 'http://localhost:3000',\n        },\n      },\n    },\n  },\n  chainWebpack: (config) => {\n    config.plugin('html')\n      .tap((args) => {\n        // eslint-disable-next-line no-param-reassign\n        args[0].minify = false;\n        return args;\n      });\n  },\n  transpileDependencies: [\n    'vuetify',\n  ],\n  publicPath: './',\n  outputDir: '../api/public',\n};\n"
  }
]